diff --git a/cmd/builder/internal/builder/config.go b/cmd/builder/internal/builder/config.go index 3c5bec0635a..01a824e108e 100644 --- a/cmd/builder/internal/builder/config.go +++ b/cmd/builder/internal/builder/config.go @@ -23,8 +23,8 @@ var ErrInvalidGoMod = errors.New("invalid gomod specification for module") // Config holds the builder's configuration type Config struct { - Logger *zap.Logger - SupportsConfigProviderSettings bool + Logger *zap.Logger + SupportsConfmapFactories bool SkipGenerate bool `mapstructure:"-"` SkipCompilation bool `mapstructure:"-"` diff --git a/cmd/builder/internal/builder/main.go b/cmd/builder/internal/builder/main.go index cd9b85acbbc..dcf3b1f6d0d 100644 --- a/cmd/builder/internal/builder/main.go +++ b/cmd/builder/internal/builder/main.go @@ -80,7 +80,7 @@ func Generate(cfg Config) error { } cfg.Logger.Info("You're building a distribution with non-aligned version of the builder. Compilation may fail due to API changes. Please upgrade your builder or API", zap.String("builder-version", defaultOtelColVersion)) } - cfg.SupportsConfigProviderSettings = supportsConfigProviderSettings(cfg) + cfg.SupportsConfmapFactories = supportsConfmapFactories(cfg) // if the file does not exist, try to create it if _, err := os.Stat(cfg.Distribution.OutputPath); os.IsNotExist(err) { if err = os.Mkdir(cfg.Distribution.OutputPath, 0750); err != nil { @@ -265,7 +265,7 @@ func (c *Config) readGoModFile() (string, map[string]string, error) { return modPath, dependencies, nil } -func supportsConfigProviderSettings(cfg Config) bool { +func supportsConfmapFactories(cfg Config) bool { splitVersion := strings.Split(cfg.Distribution.OtelColVersion, ".") if len(splitVersion) != 3 { @@ -288,7 +288,8 @@ func supportsConfigProviderSettings(cfg Config) bool { return true } - if majorVer == 0 && minorVer >= 95 { + // confmap factories were introduced in v0.99.0. + if majorVer == 0 && minorVer >= 99 { return true } diff --git a/cmd/builder/internal/builder/main_test.go b/cmd/builder/internal/builder/main_test.go index 74f4328dac6..e711fed825f 100644 --- a/cmd/builder/internal/builder/main_test.go +++ b/cmd/builder/internal/builder/main_test.go @@ -322,7 +322,7 @@ func TestGenerateAndCompile(t *testing.T) { } } -func TestConfigProviderVersions(t *testing.T) { +func TestConfmapFactoryVersions(t *testing.T) { testCases := []struct { version string supported bool @@ -352,19 +352,19 @@ func TestConfigProviderVersions(t *testing.T) { supported: false, }, { - version: "0.95.0", + version: "0.99.0", supported: true, }, { - version: "0.95.7", + version: "0.99.7", supported: true, }, { - version: "0.96.0", + version: "0.100.0", supported: true, }, { - version: "0.100.0", + version: "0.100.1", supported: true, }, { @@ -380,7 +380,7 @@ func TestConfigProviderVersions(t *testing.T) { }, } - shouldSupport := supportsConfigProviderSettings(cfg) + shouldSupport := supportsConfmapFactories(cfg) require.Equal(t, tt.supported, shouldSupport) } } diff --git a/cmd/builder/internal/builder/templates/go.mod.tmpl b/cmd/builder/internal/builder/templates/go.mod.tmpl index a12f64fd7d8..0b453f5514a 100644 --- a/cmd/builder/internal/builder/templates/go.mod.tmpl +++ b/cmd/builder/internal/builder/templates/go.mod.tmpl @@ -5,7 +5,7 @@ module {{.Distribution.Module}} go 1.21 require ( - {{if .SupportsConfigProviderSettings -}} + {{if .SupportsConfmapFactories -}} go.opentelemetry.io/collector/confmap/converter/expandconverter v{{.Distribution.OtelColVersion}} {{- range .Providers}} {{if .GoMod}}{{.GoMod}}{{end}} diff --git a/cmd/builder/internal/builder/templates/main.go.tmpl b/cmd/builder/internal/builder/templates/main.go.tmpl index 2c7894635dd..0d0d1efa2bd 100644 --- a/cmd/builder/internal/builder/templates/main.go.tmpl +++ b/cmd/builder/internal/builder/templates/main.go.tmpl @@ -7,7 +7,7 @@ import ( "log" "go.opentelemetry.io/collector/component" - {{- if .SupportsConfigProviderSettings}} + {{- if .SupportsConfmapFactories}} "go.opentelemetry.io/collector/confmap" "go.opentelemetry.io/collector/confmap/converter/expandconverter" {{- range .Providers}} @@ -23,22 +23,20 @@ func main() { Description: "{{ .Distribution.Description }}", Version: "{{ .Distribution.Version }}", } - {{- if .SupportsConfigProviderSettings}} - providers := []confmap.Provider{ - {{- range .Providers}} - {{.Name}}.NewWithSettings(confmap.ProviderSettings{}), - {{- end}} - } - {{- end}} + set := otelcol.CollectorSettings{ BuildInfo: info, Factories: components, - {{- if .SupportsConfigProviderSettings}} + {{- if .SupportsConfmapFactories}} ConfigProviderSettings: otelcol.ConfigProviderSettings{ ResolverSettings: confmap.ResolverSettings{ - Providers: makeMapProvidersMap(providers...), - Converters: []confmap.Converter{ - expandconverter.New(confmap.ConverterSettings{}), + ProviderFactories: []confmap.ProviderFactory{ + {{- range .Providers}} + {{.Name}}.NewFactory(), + {{- end}} + }, + ConverterFactories: []confmap.ConverterFactory{ + expandconverter.NewFactory(), }, }, }, @@ -58,13 +56,3 @@ func runInteractive(params otelcol.CollectorSettings) error { return nil } - -{{if .SupportsConfigProviderSettings}} -func makeMapProvidersMap(providers ...confmap.Provider) map[string]confmap.Provider { - ret := make(map[string]confmap.Provider, len(providers)) - for _, provider := range providers { - ret[provider.Scheme()] = provider - } - return ret -} -{{- end}} diff --git a/cmd/otelcorecol/go.mod b/cmd/otelcorecol/go.mod index c8761006346..ccc0a9ad887 100644 --- a/cmd/otelcorecol/go.mod +++ b/cmd/otelcorecol/go.mod @@ -6,6 +6,13 @@ go 1.21 require ( go.opentelemetry.io/collector/component v0.98.0 + go.opentelemetry.io/collector/confmap v0.98.0 + go.opentelemetry.io/collector/confmap/converter/expandconverter v0.98.0 + go.opentelemetry.io/collector/confmap/provider/envprovider v0.98.0 + go.opentelemetry.io/collector/confmap/provider/fileprovider v0.98.0 + go.opentelemetry.io/collector/confmap/provider/httpprovider v0.98.0 + go.opentelemetry.io/collector/confmap/provider/httpsprovider v0.98.0 + go.opentelemetry.io/collector/confmap/provider/yamlprovider v0.98.0 go.opentelemetry.io/collector/connector v0.98.0 go.opentelemetry.io/collector/connector/forwardconnector v0.98.0 go.opentelemetry.io/collector/exporter v0.98.0 @@ -82,13 +89,6 @@ require ( go.opentelemetry.io/collector/config/configtelemetry v0.98.0 // indirect go.opentelemetry.io/collector/config/configtls v0.98.0 // indirect go.opentelemetry.io/collector/config/internal v0.98.0 // indirect - go.opentelemetry.io/collector/confmap v0.98.0 // indirect - go.opentelemetry.io/collector/confmap/converter/expandconverter v0.98.0 // indirect - go.opentelemetry.io/collector/confmap/provider/envprovider v0.98.0 // indirect - go.opentelemetry.io/collector/confmap/provider/fileprovider v0.98.0 // indirect - go.opentelemetry.io/collector/confmap/provider/httpprovider v0.98.0 // indirect - go.opentelemetry.io/collector/confmap/provider/httpsprovider v0.98.0 // indirect - go.opentelemetry.io/collector/confmap/provider/yamlprovider v0.98.0 // indirect go.opentelemetry.io/collector/consumer v0.98.0 // indirect go.opentelemetry.io/collector/extension/auth v0.98.0 // indirect go.opentelemetry.io/collector/featuregate v1.5.0 // indirect diff --git a/cmd/otelcorecol/main.go b/cmd/otelcorecol/main.go index 3f36c0fc3df..9dcf000667e 100644 --- a/cmd/otelcorecol/main.go +++ b/cmd/otelcorecol/main.go @@ -23,21 +23,21 @@ func main() { Description: "Local OpenTelemetry Collector binary, testing only.", Version: "0.98.0-dev", } - providers := []confmap.Provider{ - envprovider.NewWithSettings(confmap.ProviderSettings{}), - fileprovider.NewWithSettings(confmap.ProviderSettings{}), - httpprovider.NewWithSettings(confmap.ProviderSettings{}), - httpsprovider.NewWithSettings(confmap.ProviderSettings{}), - yamlprovider.NewWithSettings(confmap.ProviderSettings{}), - } + set := otelcol.CollectorSettings{ BuildInfo: info, Factories: components, ConfigProviderSettings: otelcol.ConfigProviderSettings{ ResolverSettings: confmap.ResolverSettings{ - Providers: makeMapProvidersMap(providers...), - Converters: []confmap.Converter{ - expandconverter.New(confmap.ConverterSettings{}), + ProviderFactories: []confmap.ProviderFactory{ + envprovider.NewFactory(), + fileprovider.NewFactory(), + httpprovider.NewFactory(), + httpsprovider.NewFactory(), + yamlprovider.NewFactory(), + }, + ConverterFactories: []confmap.ConverterFactory{ + expandconverter.NewFactory(), }, }, }, @@ -56,11 +56,3 @@ func runInteractive(params otelcol.CollectorSettings) error { return nil } - -func makeMapProvidersMap(providers ...confmap.Provider) map[string]confmap.Provider { - ret := make(map[string]confmap.Provider, len(providers)) - for _, provider := range providers { - ret[provider.Scheme()] = provider - } - return ret -}