translator/translate/otel/receiver/awscontainerinsightskueue/translator.go (48 lines of code) (raw):

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: MIT package awscontainerinsightskueue import ( "errors" "time" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightskueuereceiver" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/confmap" "go.opentelemetry.io/collector/receiver" "github.com/aws/amazon-cloudwatch-agent/translator/translate/otel/common" ) const ( defaultMetricsCollectionInterval = time.Minute ) type translator struct { name string factory receiver.Factory } var _ common.ComponentTranslator = (*translator)(nil) // NewTranslator creates a new aws container insight receiver translator. func NewTranslator() common.ComponentTranslator { return NewTranslatorWithName("") } func NewTranslatorWithName(name string) common.ComponentTranslator { return &translator{ name: name, factory: awscontainerinsightskueuereceiver.NewFactory(), } } func (t *translator) ID() component.ID { return component.NewIDWithName(t.factory.Type(), t.name) } // Translate creates an aws container insights receiver config if either // of the sections defined in the services exist. func (t *translator) Translate(conf *confmap.Conf) (component.Config, error) { cfg := t.factory.CreateDefaultConfig().(*awscontainerinsightskueuereceiver.Config) intervalKeyChain := []string{ common.ConfigKey(common.AgentKey, common.MetricsCollectionIntervalKey), } cfg.CollectionInterval = common.GetOrDefaultDuration(conf, intervalKeyChain, defaultMetricsCollectionInterval) if err := t.setClusterName(conf, cfg); err != nil { return nil, err } return cfg, nil } func (t *translator) setClusterName(conf *confmap.Conf, cfg *awscontainerinsightskueuereceiver.Config) error { cfg.ClusterName = common.GetClusterName(conf) if cfg.ClusterName == "" { return errors.New("cluster name is not provided and was not auto-detected from EC2 tags") } return nil }