extension/k8smetadata/factory.go (40 lines of code) (raw):
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: MIT
package k8smetadata
import (
"context"
"sync"
"go.opentelemetry.io/collector/component"
"go.opentelemetry.io/collector/extension"
)
var (
TypeStr, _ = component.NewType("k8smetadata")
kubernetesMetadata *KubernetesMetadata
mutex sync.RWMutex
)
func GetKubernetesMetadata() *KubernetesMetadata {
mutex.RLock()
defer mutex.RUnlock()
if kubernetesMetadata != nil && kubernetesMetadata.ready.Load() {
return kubernetesMetadata
}
return nil
}
func NewFactory() extension.Factory {
return extension.NewFactory(
TypeStr,
createDefaultConfig,
createExtension,
component.StabilityLevelAlpha,
)
}
func createDefaultConfig() component.Config {
return &Config{}
}
func createExtension(_ context.Context, settings extension.Settings, cfg component.Config) (extension.Extension, error) {
mutex.Lock()
defer mutex.Unlock()
kubernetesMetadata = &KubernetesMetadata{
logger: settings.Logger,
config: cfg.(*Config),
}
return kubernetesMetadata, nil
}