in agentconfig/agentconfig.go [224:355]
func createConfigFromMetadata(md metadataJSON) *config {
old := getAgentConfig()
c := &config{
osInventoryEnabled: osInventoryEnabledDefault,
guestPoliciesEnabled: guestPoliciesEnabledDefault,
taskNotificationEnabled: taskNotificationEnabledDefault,
debugEnabled: debugEnabledDefault,
svcEndpoint: prodEndpoint,
osConfigPollInterval: osConfigPollIntervalDefault,
googetRepoFilePath: googetRepoFilePath,
zypperRepoFilePath: zypperRepoFilePath,
yumRepoFilePath: yumRepoFilePath,
aptRepoFilePath: aptRepoFilePath,
projectID: old.projectID,
numericProjectID: old.numericProjectID,
instanceZone: old.instanceZone,
instanceName: old.instanceName,
instanceID: old.instanceID,
}
if md.Project.ProjectID != "" {
c.projectID = md.Project.ProjectID
}
if md.Project.NumericProjectID != 0 {
c.numericProjectID = md.Project.NumericProjectID
}
if md.Instance.Zone != "" {
c.instanceZone = md.Instance.Zone
}
if md.Instance.Name != "" {
c.instanceName = md.Instance.Name
}
if md.Instance.ID != nil {
c.instanceID = md.Instance.ID.String()
}
// Check project first then instance as instance metadata overrides project.
switch {
case md.Project.Attributes.InventoryEnabled != "":
c.osInventoryEnabled = parseBool(md.Project.Attributes.InventoryEnabled)
case md.Project.Attributes.InventoryEnabledOld != "":
c.osInventoryEnabled = parseBool(md.Project.Attributes.InventoryEnabledOld)
}
c.parseFeatures(md.Project.Attributes.PreReleaseFeaturesOld, true)
c.parseFeatures(md.Project.Attributes.PreReleaseFeatures, true)
if md.Project.Attributes.OSConfigEnabled != "" {
e := parseBool(md.Project.Attributes.OSConfigEnabled)
c.taskNotificationEnabled = e
c.guestPoliciesEnabled = e
c.osInventoryEnabled = e
}
c.parseFeatures(md.Project.Attributes.DisabledFeatures, false)
switch {
case md.Instance.Attributes.InventoryEnabled != "":
c.osInventoryEnabled = parseBool(md.Instance.Attributes.InventoryEnabled)
case md.Instance.Attributes.InventoryEnabledOld != "":
c.osInventoryEnabled = parseBool(md.Instance.Attributes.InventoryEnabledOld)
}
c.parseFeatures(md.Instance.Attributes.PreReleaseFeaturesOld, true)
c.parseFeatures(md.Instance.Attributes.PreReleaseFeatures, true)
if md.Instance.Attributes.OSConfigEnabled != "" {
e := parseBool(md.Instance.Attributes.OSConfigEnabled)
c.taskNotificationEnabled = e
c.guestPoliciesEnabled = e
c.osInventoryEnabled = e
}
c.parseFeatures(md.Instance.Attributes.DisabledFeatures, false)
switch {
case md.Project.Attributes.PollInterval != nil:
if val, err := md.Project.Attributes.PollInterval.Int64(); err == nil {
c.osConfigPollInterval = int(val)
}
case md.Project.Attributes.PollIntervalOld != nil:
if val, err := md.Project.Attributes.PollIntervalOld.Int64(); err == nil {
c.osConfigPollInterval = int(val)
}
}
switch {
case md.Instance.Attributes.PollInterval != nil:
if val, err := md.Instance.Attributes.PollInterval.Int64(); err == nil {
c.osConfigPollInterval = int(val)
}
case md.Instance.Attributes.PollIntervalOld != nil:
if val, err := md.Instance.Attributes.PollInterval.Int64(); err == nil {
c.osConfigPollInterval = int(val)
}
}
switch {
case md.Project.Attributes.DebugEnabledOld != "":
c.debugEnabled = parseBool(md.Project.Attributes.DebugEnabledOld)
case md.Instance.Attributes.DebugEnabledOld != "":
c.debugEnabled = parseBool(md.Instance.Attributes.DebugEnabledOld)
}
switch strings.ToLower(md.Project.Attributes.LogLevel) {
case "debug":
c.debugEnabled = true
case "info":
c.debugEnabled = false
}
switch strings.ToLower(md.Instance.Attributes.LogLevel) {
case "debug":
c.debugEnabled = true
case "info":
c.debugEnabled = false
}
if md.Project.Attributes.EnableGuestAttributes != "" {
c.guestAttributesEnabled = parseBool(md.Project.Attributes.EnableGuestAttributes)
}
if md.Instance.Attributes.EnableGuestAttributes != "" {
c.guestAttributesEnabled = parseBool(md.Instance.Attributes.EnableGuestAttributes)
}
// Flags take precedence over metadata.
if *debug {
c.debugEnabled = true
}
setSVCEndpoint(md, c)
return c
}