mirror of
https://github.com/hanzoai/telemetry.git
synced 2026-10-30 20:01:49 +00:00
<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue. Ex. Adding a feature - Explain what this achieves.--> #### Description The `xconfmap.Validator` interface has existed in some form for a very long time now and is ready to be stabilized. Similarly, the `xconfmap.Validate` method has existed in it's current state for over a year and doesn't have any open issues I'm aware of. It should also be ready for stabilization. Many modules depend on `xconfmap` merely for the validation facilities (as can be seen by the go.mod diffs), so this will allow them to depend on only stable modules. --------- Co-authored-by: Alex Boten <[email protected]>
51 lines
1.6 KiB
Go
51 lines
1.6 KiB
Go
// Copyright The OpenTelemetry Authors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package otelcoltest // import "go.opentelemetry.io/collector/otelcol/otelcoltest"
|
|
|
|
import (
|
|
"context"
|
|
|
|
"go.opentelemetry.io/collector/confmap"
|
|
"go.opentelemetry.io/collector/confmap/provider/envprovider"
|
|
"go.opentelemetry.io/collector/confmap/provider/fileprovider"
|
|
"go.opentelemetry.io/collector/confmap/provider/httpprovider"
|
|
"go.opentelemetry.io/collector/confmap/provider/yamlprovider"
|
|
"go.opentelemetry.io/collector/otelcol"
|
|
)
|
|
|
|
// LoadConfig loads a config.Config from file, and does NOT validate the configuration.
|
|
//
|
|
// If factories.Telemetry is nil, a no-op telemetry factory will be used. This
|
|
// factory does not support any telemetry configuration.
|
|
func LoadConfig(fileName string, factories otelcol.Factories) (*otelcol.Config, error) {
|
|
if factories.Telemetry == nil {
|
|
factories.Telemetry = nopTelemetryFactory()
|
|
}
|
|
provider, err := otelcol.NewConfigProvider(otelcol.ConfigProviderSettings{
|
|
ResolverSettings: confmap.ResolverSettings{
|
|
URIs: []string{fileName},
|
|
ProviderFactories: []confmap.ProviderFactory{
|
|
fileprovider.NewFactory(),
|
|
envprovider.NewFactory(),
|
|
yamlprovider.NewFactory(),
|
|
httpprovider.NewFactory(),
|
|
},
|
|
DefaultScheme: "env",
|
|
},
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return provider.Get(context.Background(), factories)
|
|
}
|
|
|
|
// LoadConfigAndValidate loads a config from the file, and validates the configuration.
|
|
func LoadConfigAndValidate(fileName string, factories otelcol.Factories) (*otelcol.Config, error) {
|
|
cfg, err := LoadConfig(fileName, factories)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return cfg, confmap.Validate(cfg)
|
|
}
|