diff --git a/CHANGELOG.md b/CHANGELOG.md index 651f5e1192e..b39ac2e272e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - Remove deprecated structs/funcs from previous versions (#5131) - Do not set TraceProvider to global otel (#5138) - Remove deprecated funcs from otlpgrpc (#5144) +- Add Scheme to MapProvider interface (#5068) ### 🚩 Deprecations 🚩 diff --git a/config/mapprovider.go b/config/mapprovider.go index f473dc69584..035eb42922c 100644 --- a/config/mapprovider.go +++ b/config/mapprovider.go @@ -54,6 +54,9 @@ type MapProvider interface { // Should never be called concurrently with itself or with Shutdown. Retrieve(ctx context.Context, uri string, watcher WatcherFunc) (Retrieved, error) + // Scheme returns the location scheme used by Retrieve. + Scheme() string + // Shutdown signals that the configuration for which this Provider was used to // retrieve values is no longer in use and the Provider should close and release // any resources that it may have created. diff --git a/config/mapprovider/envmapprovider/mapprovider.go b/config/mapprovider/envmapprovider/mapprovider.go index 0d6b1c6742a..3c6bd47fc78 100644 --- a/config/mapprovider/envmapprovider/mapprovider.go +++ b/config/mapprovider/envmapprovider/mapprovider.go @@ -51,6 +51,10 @@ func (emp *mapProvider) Retrieve(_ context.Context, uri string, _ config.Watcher return config.Retrieved{Map: config.NewMapFromStringMap(data)}, nil } +func (*mapProvider) Scheme() string { + return schemeName +} + func (*mapProvider) Shutdown(context.Context) error { return nil } diff --git a/config/mapprovider/filemapprovider/mapprovider.go b/config/mapprovider/filemapprovider/mapprovider.go index 62372d0d279..0c22e6eea25 100644 --- a/config/mapprovider/filemapprovider/mapprovider.go +++ b/config/mapprovider/filemapprovider/mapprovider.go @@ -66,6 +66,10 @@ func (fmp *mapProvider) Retrieve(_ context.Context, uri string, _ config.Watcher return config.Retrieved{Map: config.NewMapFromStringMap(data)}, nil } +func (*mapProvider) Scheme() string { + return schemeName +} + func (*mapProvider) Shutdown(context.Context) error { return nil } diff --git a/config/mapprovider/yamlmapprovider/mapprovider.go b/config/mapprovider/yamlmapprovider/mapprovider.go index f28763d0bbf..915d6344b32 100644 --- a/config/mapprovider/yamlmapprovider/mapprovider.go +++ b/config/mapprovider/yamlmapprovider/mapprovider.go @@ -53,6 +53,10 @@ func (s *mapProvider) Retrieve(_ context.Context, uri string, _ config.WatcherFu return config.Retrieved{Map: config.NewMapFromStringMap(data)}, nil } +func (*mapProvider) Scheme() string { + return schemeName +} + func (s *mapProvider) Shutdown(context.Context) error { return nil } diff --git a/service/config_provider.go b/service/config_provider.go index de4348c45cc..02e9bbd3fb2 100644 --- a/service/config_provider.go +++ b/service/config_provider.go @@ -106,11 +106,7 @@ func MustNewConfigProvider( func MustNewDefaultConfigProvider(configLocations []string, properties []string) ConfigProvider { return MustNewConfigProvider( configLocations, - map[string]config.MapProvider{ - "file": filemapprovider.New(), - "env": envmapprovider.New(), - "yaml": yamlmapprovider.New(), - }, + makeConfigMapProviderMap(filemapprovider.New(), envmapprovider.New(), yamlmapprovider.New()), []config.MapConverterFunc{ configmapprovider.NewOverwritePropertiesConverter(properties), configmapprovider.NewExpandConverter(), @@ -222,3 +218,11 @@ func (cm *configProvider) mergeRetrieve(ctx context.Context) (*config.Retrieved, }, }, nil } + +func makeConfigMapProviderMap(providers ...config.MapProvider) map[string]config.MapProvider { + ret := make(map[string]config.MapProvider, len(providers)) + for _, provider := range providers { + ret[provider.Scheme()] = provider + } + return ret +}