func()

in translator/translate/otel/exporter/awsemf/translator.go [78:157]


func (t *translator) Translate(c *confmap.Conf) (component.Config, error) {
	cfg := t.factory.CreateDefaultConfig().(*awsemfexporter.Config)
	cfg.MiddlewareID = &agenthealth.LogsID

	defaultConfig := defaultGenericConfig
	if t.isAppSignals(c) {
		defaultConfig = appSignalsConfigGeneric
	} else if t.isCiJMX(c) {
		defaultConfig = defaultJmxConfig
	} else if isEcs(c) {
		defaultConfig = defaultEcsConfig
	} else if isKubernetesKueue(c, t.name) {
		defaultConfig = defaultKubernetesKueueConfig
	} else if isKubernetes(c) {
		defaultConfig = defaultKubernetesConfig
	} else if isPrometheus(c) {
		defaultConfig = defaultPrometheusConfig
	}

	if isOTLP(c) {
		cfg.AddEntity = true
	}

	if defaultConfig != "" {
		var rawConf map[string]interface{}
		if err := yaml.Unmarshal([]byte(defaultConfig), &rawConf); err != nil {
			return nil, fmt.Errorf("unable to read default config: %w", err)
		}
		conf := confmap.NewFromStringMap(rawConf)
		if err := conf.Unmarshal(&cfg); err != nil {
			return nil, fmt.Errorf("unable to unmarshal config: %w", err)
		}
	}
	cfg.AWSSessionSettings.CertificateFilePath = os.Getenv(envconfig.AWS_CA_BUNDLE)
	if c.IsSet(endpointOverrideKey) {
		cfg.AWSSessionSettings.Endpoint, _ = common.GetString(c, endpointOverrideKey)
	}
	cfg.AWSSessionSettings.IMDSRetries = retryer.GetDefaultRetryNumber()
	if profileKey, ok := agent.Global_Config.Credentials[agent.Profile_Key]; ok {
		cfg.AWSSessionSettings.Profile = fmt.Sprintf("%v", profileKey)
	}
	cfg.AWSSessionSettings.Region = agent.Global_Config.Region
	cfg.AWSSessionSettings.RoleARN = agent.Global_Config.Role_arn
	if c.IsSet(roleARNPathKey) {
		cfg.AWSSessionSettings.RoleARN, _ = common.GetString(c, roleARNPathKey)
	}
	if credentialsFileKey, ok := agent.Global_Config.Credentials[agent.CredentialsFile_Key]; ok {
		cfg.AWSSessionSettings.SharedCredentialsFile = []string{fmt.Sprintf("%v", credentialsFileKey)}
	}
	if context.CurrentContext().Mode() == config.ModeOnPrem || context.CurrentContext().Mode() == config.ModeOnPremise {
		cfg.AWSSessionSettings.LocalMode = true
	}

	if t.isAppSignals(c) {
		if err := setAppSignalsFields(c, cfg); err != nil {
			return nil, err
		}
	} else if t.isCiJMX(c) {
		if err := setCiJmxFields(); err != nil {
			return nil, err
		}
	} else if isEcs(c) {
		if err := setEcsFields(c, cfg); err != nil {
			return nil, err
		}
	} else if isKubernetesKueue(c, t.name) {
		if err := setKubernetesKueueFields(c, cfg); err != nil {
			return nil, err
		}
	} else if isKubernetes(c) {
		if err := setKubernetesFields(c, cfg); err != nil {
			return nil, err
		}
	} else if isPrometheus(c) {
		if err := setPrometheusFields(c, cfg); err != nil {
			return nil, err
		}
	}
	return cfg, nil
}