backport of commit e7dbd4de05

pull/12369/head
Lucas Bajolet 3 years ago
parent 16f2205ec7
commit e1d445ba44

@ -117,9 +117,11 @@ func (m *Meta) GetConfig(cla *MetaArgs) (packer.Handler, int) {
switch cfgType {
case ConfigTypeHCL2:
packer.CheckpointReporter.SetTemplateType(packer.HCL2Template)
// TODO(azr): allow to pass a slice of files here.
return m.GetConfigFromHCL(cla)
default:
packer.CheckpointReporter.SetTemplateType(packer.JSONTemplate)
// TODO: uncomment once we've polished HCL a bit more.
// c.Ui.Say(`Legacy JSON Configuration Will Be Used.
// The template will be parsed in the legacy configuration style. This style

@ -15,22 +15,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 {
@ -54,6 +64,7 @@ func NewCheckpointReporter(disableSignature bool) *CheckpointTelemetry {
return &CheckpointTelemetry{
signatureFile: signatureFile,
startTime: time.Now().UTC(),
templateType: UnknownTemplate,
}
}
@ -105,6 +116,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
@ -121,6 +141,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))

Loading…
Cancel
Save