diff --git a/CHANGELOG.md b/CHANGELOG.md index 97f86fea6eb..598ed236e91 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,10 +8,18 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm ## [Unreleased] +### Added + +- Configuration file can now be set via `OTEL_CONFIG_FILE` in `go.opentelemetry.io/contrib/otelconf`. (#8639) + ### Fixed - Limit the request body size at 1MB in `go.opentelemetry.io/contrib/zpages`. (#8656) +### Deprecated + +- `OTEL_EXPERIMENTAL_CONFIG_FILE` has been deprecated in favour of `OTEL_CONFIG_FILE` in `go.opentelemetry.io/contrib/otelconf`. (#8639) + diff --git a/otelconf/config.go b/otelconf/config.go index 503fae1e430..b04218b5741 100644 --- a/otelconf/config.go +++ b/otelconf/config.go @@ -24,7 +24,10 @@ import ( "go.opentelemetry.io/contrib/otelconf/internal/provider" ) -const envVarConfigFile = "OTEL_EXPERIMENTAL_CONFIG_FILE" +const ( + envVarConfigFileDeprecated = "OTEL_EXPERIMENTAL_CONFIG_FILE" + envVarConfigFile = "OTEL_CONFIG_FILE" +) // SDK is a struct that contains all the providers // configured via the configuration model. @@ -61,13 +64,16 @@ func (s *SDK) Shutdown(ctx context.Context) error { return s.shutdown(ctx) } -var noopSDK = SDK{ - loggerProvider: nooplog.LoggerProvider{}, - meterProvider: noopmetric.MeterProvider{}, - tracerProvider: nooptrace.TracerProvider{}, - propagator: propagation.NewCompositeTextMapPropagator(), - shutdown: func(context.Context) error { return nil }, -} +var ( + noopSDK = SDK{ + loggerProvider: nooplog.LoggerProvider{}, + meterProvider: noopmetric.MeterProvider{}, + tracerProvider: nooptrace.TracerProvider{}, + propagator: propagation.NewCompositeTextMapPropagator(), + shutdown: func(context.Context) error { return nil }, + } + errDeprecatedEnvVarUsed = errors.New("OTEL_EXPERIMENTAL_CONFIG_FILE is no longer supported, use OTEL_CONFIG_FILE instead") +) func parseConfigFileFromEnvironment(filename string) (ConfigurationOption, error) { b, err := os.ReadFile(filename) @@ -86,10 +92,14 @@ func parseConfigFileFromEnvironment(filename string) (ConfigurationOption, error } // NewSDK creates SDK providers based on the configuration model. It checks the local environment and -// uses the file set in the variable `OTEL_EXPERIMENTAL_CONFIG_FILE` to configure the SDK automatically. -// Any file defined by `OTEL_EXPERIMENTAL_CONFIG_FILE` will supersede all files passed with +// uses the file set in the variable `OTEL_CONFIG_FILE` to configure the SDK automatically. +// Any file defined by `OTEL_CONFIG_FILE` will supersede all files passed with // [WithOpenTelemetryConfiguration]. func NewSDK(opts ...ConfigurationOption) (SDK, error) { + _, ok := os.LookupEnv(envVarConfigFileDeprecated) + if ok { + return noopSDK, errDeprecatedEnvVarUsed + } filename, ok := os.LookupEnv(envVarConfigFile) if ok { opt, err := parseConfigFileFromEnvironment(filename) diff --git a/otelconf/config_test.go b/otelconf/config_test.go index 0b0471de780..1cce680c483 100644 --- a/otelconf/config_test.go +++ b/otelconf/config_test.go @@ -428,6 +428,10 @@ func TestNewSDKWithEnvVar(t *testing.T) { t.Setenv(envVarConfigFile, filepath.Join("testdata", "v1.0.0.yaml")) _, err = NewSDK(cfg...) require.ErrorIs(t, err, newErrInvalid("otlp_file/development")) + // validate that use of deprecated env var returns an error + t.Setenv(envVarConfigFileDeprecated, filepath.Join("testdata", "v1.0.0.yaml")) + _, err = NewSDK(cfg...) + require.ErrorIs(t, err, errDeprecatedEnvVarUsed) } var v10OpenTelemetryConfig = OpenTelemetryConfiguration{