@ -18,22 +18,32 @@ import (
"github.com/zclconf/go-cty/cty"
)
const TelemetryVersion string = "beta/packer/5"
type PackerTemplateType string
const (
UnknownTemplate PackerTemplateType = "Unknown"
HCL2Template PackerTemplateType = "HCL2"
JSONTemplate PackerTemplateType = "JSON"
)
const TelemetryVersion string = "beta/packer/6"
const TelemetryPanicVersion string = "beta/packer_panic/4"
var CheckpointReporter * CheckpointTelemetry
type PackerReport struct {
Spans [ ] * TelemetrySpan ` json:"spans" `
ExitCode int ` json:"exit_code" `
Error string ` json:"error" `
Command string ` json:"command" `
Spans [ ] * TelemetrySpan ` json:"spans" `
ExitCode int ` json:"exit_code" `
Error string ` json:"error" `
Command string ` json:"command" `
TemplateType PackerTemplateType ` json:"template_type" `
}
type CheckpointTelemetry struct {
spans [ ] * TelemetrySpan
signatureFile string
startTime time . Time
templateType PackerTemplateType
}
func NewCheckpointReporter ( disableSignature bool ) * CheckpointTelemetry {
@ -57,6 +67,7 @@ func NewCheckpointReporter(disableSignature bool) *CheckpointTelemetry {
return & CheckpointTelemetry {
signatureFile : signatureFile ,
startTime : time . Now ( ) . UTC ( ) ,
templateType : UnknownTemplate ,
}
}
@ -108,6 +119,15 @@ func (c *CheckpointTelemetry) AddSpan(name, pluginType string, options interface
return ts
}
// SetTemplateType registers the template type being processed for a Packer command
func ( c * CheckpointTelemetry ) SetTemplateType ( t PackerTemplateType ) {
if c == nil {
return
}
c . templateType = t
}
func ( c * CheckpointTelemetry ) Finalize ( command string , errCode int , err error ) error {
if c == nil {
return nil
@ -124,6 +144,8 @@ func (c *CheckpointTelemetry) Finalize(command string, errCode int, err error) e
if err != nil {
extra . Error = err . Error ( )
}
extra . TemplateType = c . templateType
params . Payload = extra
// b, _ := json.MarshalIndent(params, "", " ")
// log.Println(string(b))