func parser()

in agent/appconfig/appconfig_parser.go [24:161]


func parser(config *SsmagentConfig) {
	log.Printf("processing appconfig overrides")

	booleanStringOptions := []string{
		"true",
		"false",
	}

	// Agent creds profile
	config.Profile.KeyAutoRotateDays = getNumericValue(
		config.Profile.KeyAutoRotateDays,
		defaultProfileKeyAutoRotateDaysMin,
		defaultProfileKeyAutoRotateDaysMax,
		defaultProfileKeyAutoRotateDays)

	// Agent config
	config.Agent.Name = getStringValue(config.Agent.Name, DefaultAgentName)
	config.Agent.OrchestrationRootDir = getStringValue(config.Agent.OrchestrationRootDir, defaultOrchestrationRootDirName)
	config.Agent.Region = getStringValue(config.Agent.Region, "")
	config.Agent.ServiceDomain = getStringValue(config.Agent.ServiceDomain, "")
	config.Agent.TelemetryMetricsNamespace = getStringValue(config.Agent.TelemetryMetricsNamespace, DefaultTelemetryNamespace)
	config.Agent.LongRunningWorkerMonitorIntervalSeconds = getNumericValue(
		config.Agent.LongRunningWorkerMonitorIntervalSeconds,
		defaultLongRunningWorkerMonitorIntervalSecondsMin,
		defaultLongRunningWorkerMonitorIntervalSecondsMax,
		defaultLongRunningWorkerMonitorIntervalSeconds)
	config.Agent.SelfUpdateScheduleDay = getNumericValue(
		config.Agent.SelfUpdateScheduleDay,
		DefaultSsmSelfUpdateFrequencyDaysMin,
		DefaultSsmSelfUpdateFrequencyDaysMax,
		DefaultSsmSelfUpdateFrequencyDays)
	config.Agent.GoMaxProcForAgentWorker = getNumericValue(config.Agent.GoMaxProcForAgentWorker,
		1,
		runtime.NumCPU(),
		0)

	config.Agent.AuditExpirationDay = getNumericValue(
		config.Agent.AuditExpirationDay,
		DefaultAuditExpirationDayMin,
		DefaultAuditExpirationDayMax,
		DefaultAuditExpirationDay)

	// MDS config
	config.Mds.CommandWorkersLimit = getNumericValue(
		config.Mds.CommandWorkersLimit,
		DefaultCommandWorkersLimitMin,
		config.Mds.CommandWorkersLimit, // we do not restrict max number of worker limit here
		DefaultCommandWorkersLimit)
	config.Mds.CommandWorkerBufferLimit = getNumericValue(
		config.Mds.CommandWorkerBufferLimit,
		DefaultCommandWorkersBufferLimitMin,
		config.Mds.CommandWorkerBufferLimit, // we do not restrict max number of worker buffer limit here
		DefaultCommandWorkerBufferLimit)

	// MGS config
	config.Mgs.SessionWorkerBufferLimit = getNumericValue(
		config.Mgs.SessionWorkerBufferLimit,
		DefaultSessionWorkersBufferLimitMin,
		config.Mgs.SessionWorkerBufferLimit, // we do not restrict max number of worker buffer limit here
		DefaultSessionWorkerBufferLimit)

	config.Mds.CommandRetryLimit = getNumericValue(
		config.Mds.CommandRetryLimit,
		DefaultCommandRetryLimitMin,
		DefaultCommandRetryLimitMax,
		DefaultCommandRetryLimit)
	config.Mds.StopTimeoutMillis = getNumeric64Value(
		config.Mds.StopTimeoutMillis,
		DefaultStopTimeoutMillisMin,
		DefaultStopTimeoutMillisMax,
		DefaultStopTimeoutMillis)
	config.Mds.Endpoint = getStringValue(config.Mds.Endpoint, "")

	// SSM config
	config.Ssm.Endpoint = getStringValue(config.Ssm.Endpoint, "")
	config.Ssm.HealthFrequencyMinutes = getNumericValue(
		config.Ssm.HealthFrequencyMinutes,
		DefaultSsmHealthFrequencyMinutesMin,
		DefaultSsmHealthFrequencyMinutesMax,
		DefaultSsmHealthFrequencyMinutes)
	config.Ssm.AssociationFrequencyMinutes = getNumericValue(
		config.Ssm.AssociationFrequencyMinutes,
		DefaultSsmAssociationFrequencyMinutesMin,
		DefaultSsmAssociationFrequencyMinutesMax,
		DefaultSsmAssociationFrequencyMinutes)
	config.Ssm.HibernationMaxBackoffIntervalMinutes = getNumericValue(
		config.Ssm.HibernationMaxBackoffIntervalMinutes,
		DefaultHibernationMaxBackoffIntervalMinutesMin,
		DefaultHibernationMaxBackoffIntervalMinutesMax,
		DefaultHibernationMaxBackoffIntervalMinutes)
	config.Ssm.AssociationLogsRetentionDurationHours = getNumericValueAboveMin(
		config.Ssm.AssociationLogsRetentionDurationHours,
		DefaultStateOrchestrationLogsRetentionDurationHoursMin,
		DefaultAssociationLogsRetentionDurationHours)
	config.Ssm.RunCommandLogsRetentionDurationHours = getNumericValueAboveMin(
		config.Ssm.RunCommandLogsRetentionDurationHours,
		DefaultStateOrchestrationLogsRetentionDurationHoursMin,
		DefaultRunCommandLogsRetentionDurationHours)
	sessionLogsDestinationOptions := []string{SessionLogsDestinationDisk, SessionLogsDestinationNone}
	config.Ssm.SessionLogsDestination = getStringEnum(config.Ssm.SessionLogsDestination,
		sessionLogsDestinationOptions,
		SessionLogsDestinationNone)
	pluginLocalOutputCleanupOptions := []string{
		PluginLocalOutputCleanupAfterExecution,
		PluginLocalOutputCleanupAfterUpload,
		DefaultPluginOutputRetention,
	}
	config.Ssm.PluginLocalOutputCleanup = getStringEnum(config.Ssm.PluginLocalOutputCleanup,
		pluginLocalOutputCleanupOptions,
		DefaultPluginOutputRetention)

	OrchestartionDirCleanupOtions := []string{
		DefaultOrchestrationDirCleanup,
		OrchestrationDirCleanupForSuccessFailedCommand,
		OrchestrationDirCleanupForSuccessCommand,
	}
	config.Ssm.OrchestrationDirectoryCleanup = getStringEnum(config.Ssm.OrchestrationDirectoryCleanup,
		OrchestartionDirCleanupOtions,
		DefaultOrchestrationDirCleanup)

	config.Identity.Ec2SystemInfoDetectionResponse = getStringEnum(config.Identity.Ec2SystemInfoDetectionResponse, booleanStringOptions, "")
	IdentityConsumptionOrderOptions := map[string]bool{
		"OnPrem":         true,
		"ECS":            true,
		"EC2":            true,
		"CustomIdentity": true,
	}
	config.Identity.ConsumptionOrder = getStringListEnum(
		config.Identity.ConsumptionOrder,
		IdentityConsumptionOrderOptions,
		DefaultIdentityConsumptionOrder)
	CredentialsProviderOptions := map[string]bool{
		DefaultCustomIdentityCredentialsProvider: true,
	}
	for _, customIdentity := range config.Identity.CustomIdentities {
		customIdentity.CredentialsProvider = getStringEnumMap(customIdentity.CredentialsProvider, CredentialsProviderOptions, DefaultCustomIdentityCredentialsProvider)
	}
}