func()

in agent/config/agent_config.go [432:537]


func (config *AgentConfig) SetDefaults() {

	config.CommandPath = "/usr/bin/envoy"

	dumpAllEnvVariables()

	// Ensure port value is > 1024 if uid != 0.  Ensure port is less than 65535
	config.AgentHttpPort = getEnvValueAsInt("APPNET_AGENT_HTTP_PORT", AGENT_PORT_DEFAULT)
	if config.AgentHttpPort > 65535 || (os.Geteuid() != 0 && config.AgentHttpPort < 1024) {
		log.Warnf("Invalid value [%d] for the Agent Management port value. Using the default [%d]",
			config.AgentHttpPort,
			AGENT_PORT_DEFAULT)
		config.AgentHttpPort = AGENT_PORT_DEFAULT
	}

	// xDS Relay
	config.EnableRelayModeForXds = getEnvValueAsBool("APPNET_ENABLE_RELAY_MODE_FOR_XDS", ENABLE_RELAY_MODE_FOR_XDS_DEFAULT)
	if config.EnableRelayModeForXds {
		config.AppNetRelayListenerUdsPath = getEnvValueAsString("APPNET_RELAY_LISTENER_UDS_PATH", APPNET_RELAY_LISTENER_UDS_PATH_DEFAULT)
		config.AppNetManagementPort = getEnvValueAsInt("APPNET_MANAGEMENT_PORT", APPNET_MANAGEMENT_PORT_DEFAULT)
		config.RelayStreamIdleTimeout = getEnvValueAsString("RELAY_STREAM_IDLE_TIMEOUT", RELAY_STREAM_IDLE_TIMEOUT_DEFAULT)
		config.RelayBufferLimitBytes = getEnvValueAsInt("RELAY_BUFFER_LIMIT_BYTES", RELAY_BUFFER_LIMIT_BYTES_DEFAULT)

		xdsDomain := getEnvValueAsString("APPMESH_XDS_ENDPOINT", "")
		if strings.HasPrefix(xdsDomain, URL_HTTP_SCHEME) {
			config.AppNetManagementDomainName = strings.Replace(xdsDomain, URL_HTTP_SCHEME, "", 1)
		} else if strings.HasPrefix(xdsDomain, URL_HTTPS_SCHEME) {
			config.AppNetManagementDomainName = strings.Replace(xdsDomain, URL_HTTPS_SCHEME, "", 1)
		} else {
			config.AppNetManagementDomainName = xdsDomain
		}
	}

	// Libcurl deprecation Envoy reloadable feature flag
	config.EnvoyUseHttpClientToFetchAwsCredentials = getEnvValueAsBool("ENVOY_USE_HTTP_CLIENT_TO_FETCH_AWS_CREDENTIALS", ENVOY_USE_HTTP_CLIENT_TO_FETCH_AWS_CREDENTIALS_DEFAULT)

	config.AgentAdminMode = getAdminModeFromEnv("APPNET_AGENT_ADMIN_MODE", AGENT_ADMIN_MODE_DEFAULT)
	if config.AgentAdminMode == UDS {
		config.AgentAdminUdsPath = getEnvValueAsString("APPNET_AGENT_ADMIN_UDS_PATH", AGENT_ADMIN_UDS_PATH_DEFAULT)
	}
	config.EnvoyAdminMode = getAdminModeFromEnv("ENVOY_ADMIN_MODE", ENVOY_ADMIN_MODE_DEFAULT)

	config.AgentPollEnvoyReadinessInterval = getEnvValueAsInt("APPNET_AGENT_POLL_ENVOY_READINESS_INTERVAL_S", AGENT_POLL_ENVOY_READINESS_INTERVAL_S_DEFAULT)
	config.AgentPollEnvoyReadinessTimeout = getEnvValueAsInt("APPNET_AGENT_POLL_ENVOY_READINESS_TIMEOUT_S", AGENT_POLL_ENVOY_READINESS_TIMEOUT_S_DEFAULT)

	// TODO: Ensure that configured address exists on hosts if it is not "0.0.0.0" or "127.0.0.1"
	config.AgentHttpAddress = getEnvValueAsString("APPNET_AGENT_HTTP_BIND_ADDRESS", AGENT_ADDRESS_DEFAULT)

	config.EnvoyRestartCount = getEnvValueAsInt("APPNET_ENVOY_RESTART_COUNT", ENVOY_RESTART_COUNT_DEFAULT)

	config.AgentLoglevelReset = time.Duration(
		getEnvValueAsInt("APPNET_AGENT_LOGGING_RESET_TIMEOUT", AGENT_LOGGING_RESET_TIMEOUT_S_DEFAULT)) * time.Second

	config.EnvoyServerScheme = ENVOY_SERVER_SCHEME
	config.EnvoyServerHostName = ENVOY_SERVER_HOSTNAME

	config.EnvoyServerAdminPort = getEnvValueAsInt("ENVOY_ADMIN_ACCESS_PORT", ENVOY_ADMIN_PORT_DEFAULT)
	config.EnvoyReadyUrl = ENVOY_READY_ENDPOINT_URL
	config.EnvoyServerStatsUrl = ENVOY_STATS_ENDPOINT_URL
	config.EnvoyLoggingUrl = ENVOY_LOGGING_ENDPOINT_URL
	config.EnvoyListenerDrainUrl = ENVOY_LISTENER_DRAINING_ENDPOINT_URL
	if config.EnvoyAdminMode == UDS {
		config.EnvoyServerAdminUdsPath = ENVOY_ADMIN_UDS_PATH
	}

	config.EnableStatsSnapshot = getEnvValueAsBool("ENABLE_STATS_SNAPSHOT", ENABLE_STATS_SNAPSHOT_DEFAULT)

	xdsEndpoint := getEnvValueAsString("APPMESH_XDS_ENDPOINT", "")
	if strings.HasPrefix(xdsEndpoint, URI_UNIX_PREFIX) {
		config.XdsEndpointUdsPath = xdsEndpoint
		// verify that the uds path specified exists
		xdsUnixPath := strings.Replace(xdsEndpoint, URI_UNIX_PREFIX, "", -1)
		if _, err := os.Stat(xdsUnixPath); err != nil {
			log.Warnf("xDS endpoint UDS path does not exist: %v", err)
		}
	}

	// Logging
	config.EnvoyLoggingDestination = getEnvValueAsString("APPNET_ENVOY_LOG_DESTINATION", ENVOY_LOG_DESTINATION_DEFAULT)
	config.EnvoyLogFileName = getEnvValueAsString("APPNET_ENVOY_LOG_NAME", ENVOY_LOG_FILE_NAME_DEFAULT)

	config.MaxLogFileSizeMB = getEnvValueAsFloat("APPNET_AGENT_MAX_LOG_FILE_SIZE", AGENT_MAX_LOG_FILE_SIZE_DEFAULT)
	config.MaxLogCount = getEnvValueAsInt("APPNET_AGENT_MAX_RETENTION_COUNT", AGENT_MAX_LOG_RETENTION_DEFAULT)
	if config.EnvoyConfigPath == "" {
		config.EnvoyConfigPath = getEnvValueAsString("ENVOY_CONFIG_FILE", getDefaultBootstrapFilePath())
	}

	config.EnvoyConcurrency = getEnvValueAsInt("ENVOY_CONCURRENCY", ENVOY_CONCURRENCY_DEFAULT)
	config.DisableHotRestart = getEnvValueAsBool("DISABLE_HOT_RESTART", DISABLE_HOT_RESTART_DEFAULT)

	validateEnvoyLogLevel(&config.EnvoyLogLevel)

	// We expect this to be populated with a json string
	config.ClusterIPMapping = getEnvValueAsString("APPNET_CONTAINER_IP_MAPPING", "")
	config.ListenerPortMapping = getEnvValueAsString("APPNET_LISTENER_PORT_MAPPING", "")

	// Timers
	config.PidPollInterval = time.Duration(
		getEnvValueAsInt("PID_POLL_INTERVAL_MS", PID_POLL_INTERVAL_MS_DEFAULT)) * time.Millisecond
	config.HcPollInterval = getHcPollInterval()
	config.ListenerDrainWaitTime = time.Duration(
		getEnvValueAsInt("LISTENER_DRAIN_WAIT_TIME_S", LISTENER_DRAIN_WAIT_TIME_SEC_DEFAULT)) * time.Second
	config.HcDisconnectedTimeout = time.Duration(
		getEnvValueAsInt("HC_DISCONNECTED_TIMEOUT_S", HC_DISCONNECTED_TIMEOUT_S_DEFAULT)) * time.Second
	validateTimers(config)
}