diff --git a/CHANGELOG.md b/CHANGELOG.md index ae2cd2dd6fd..70525bc7d8d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ - `configauth`: remove interceptor functions from the ServerAuthenticator interface (#4583) - Replace ConfigMapProvider and ConfigUnmarshaler in collector settings by one simpler ConfigProvider (#4590) - Remove deprecated consumererror.Combine (#4597) +- Remove `configmapprovider.NewDefault`, `configmapprovider.NewExpand`, `configmapprovider.NewMerge` (#4600) ## 💡 Enhancements 💡 diff --git a/config/configtest/configtest.go b/config/configtest/configtest.go index c0f4181dccc..ed5a02f1242 100644 --- a/config/configtest/configtest.go +++ b/config/configtest/configtest.go @@ -27,6 +27,7 @@ import ( "go.opentelemetry.io/collector/config" "go.opentelemetry.io/collector/config/configmapprovider" "go.opentelemetry.io/collector/config/configunmarshaler" + "go.opentelemetry.io/collector/internal/configprovider" ) // The regular expression for valid config field tag. @@ -35,7 +36,7 @@ var configFieldTagRegExp = regexp.MustCompile("^[a-z0-9][a-z0-9_]*$") // LoadConfig loads a config.Config from file, and does NOT validate the configuration. func LoadConfig(fileName string, factories component.Factories) (*config.Config, error) { // Read yaml config from file - cp, err := configmapprovider.NewExpand(configmapprovider.NewFile(fileName)).Retrieve(context.Background(), nil) + cp, err := configprovider.NewExpand(configmapprovider.NewFile(fileName)).Retrieve(context.Background(), nil) if err != nil { return nil, err } diff --git a/service/internal/configprovider/default.go b/internal/configprovider/default.go similarity index 84% rename from service/internal/configprovider/default.go rename to internal/configprovider/default.go index ff1e4e3683c..fe0dbc7dfee 100644 --- a/service/internal/configprovider/default.go +++ b/internal/configprovider/default.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package configprovider // import "go.opentelemetry.io/collector/service/internal/configprovider" +package configprovider // import "go.opentelemetry.io/collector/internal/configprovider" import ( "go.opentelemetry.io/collector/config/configmapprovider" @@ -21,8 +21,5 @@ import ( // NewDefaultMapProvider returns the default configmapprovider.Provider, and it creates configuration from a file // defined by the given configFile and overwrites fields using properties. func NewDefaultMapProvider(configFileName string, properties []string) configmapprovider.Provider { - return configmapprovider.NewExpand( - configmapprovider.NewMerge( - configmapprovider.NewFile(configFileName), - configmapprovider.NewProperties(properties))) + return NewExpand(NewMerge(configmapprovider.NewFile(configFileName), configmapprovider.NewProperties(properties))) } diff --git a/service/internal/configprovider/default_test.go b/internal/configprovider/default_test.go similarity index 100% rename from service/internal/configprovider/default_test.go rename to internal/configprovider/default_test.go diff --git a/config/configmapprovider/expand.go b/internal/configprovider/expand.go similarity index 83% rename from config/configmapprovider/expand.go rename to internal/configprovider/expand.go index 2fcbb1e7fe4..ea37abb80fb 100644 --- a/config/configmapprovider/expand.go +++ b/internal/configprovider/expand.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package configmapprovider // import "go.opentelemetry.io/collector/config/configmapprovider" +package configprovider // import "go.opentelemetry.io/collector/internal/configprovider" import ( "context" @@ -20,21 +20,22 @@ import ( "os" "go.opentelemetry.io/collector/config" + "go.opentelemetry.io/collector/config/configmapprovider" ) type expandMapProvider struct { - base Provider + base configmapprovider.Provider } // NewExpand returns a Provider, that expands all environment variables for a // config.Map provided by the given Provider. -func NewExpand(base Provider) Provider { +func NewExpand(base configmapprovider.Provider) configmapprovider.Provider { return &expandMapProvider{ base: base, } } -func (emp *expandMapProvider) Retrieve(ctx context.Context, onChange func(*ChangeEvent)) (Retrieved, error) { +func (emp *expandMapProvider) Retrieve(ctx context.Context, onChange func(*configmapprovider.ChangeEvent)) (configmapprovider.Retrieved, error) { retr, err := emp.base.Retrieve(ctx, onChange) if err != nil { return nil, fmt.Errorf("failed to retrieve from base provider: %w", err) @@ -46,9 +47,9 @@ func (emp *expandMapProvider) Retrieve(ctx context.Context, onChange func(*Chang for _, k := range cfgMap.AllKeys() { cfgMap.Set(k, expandStringValues(cfgMap.Get(k))) } - return NewRetrieved(func(ctx context.Context) (*config.Map, error) { + return configmapprovider.NewRetrieved(func(ctx context.Context) (*config.Map, error) { return cfgMap, nil - }, WithClose(retr.Close)) + }, configmapprovider.WithClose(retr.Close)) } func (emp *expandMapProvider) Shutdown(ctx context.Context) error { diff --git a/config/configmapprovider/expand_test.go b/internal/configprovider/expand_test.go similarity index 92% rename from config/configmapprovider/expand_test.go rename to internal/configprovider/expand_test.go index 982770ec63b..24a5e6cf6ec 100644 --- a/config/configmapprovider/expand_test.go +++ b/internal/configprovider/expand_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package configmapprovider +package configprovider import ( "context" @@ -23,6 +23,8 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + + "go.opentelemetry.io/collector/config/configmapprovider" ) func TestBaseRetrieveFailsOnRetrieve(t *testing.T) { @@ -87,7 +89,7 @@ func TestExpand(t *testing.T) { }() // Cannot use configtest.LoadConfigMap because of circular deps. - ret, errRet := NewFile(path.Join("testdata", "expand-with-no-env.yaml")).Retrieve(context.Background(), nil) + ret, errRet := configmapprovider.NewFile(path.Join("testdata", "expand-with-no-env.yaml")).Retrieve(context.Background(), nil) require.NoError(t, errRet, "Unable to get expected config") expectedCfgMap, errExpected := ret.Get(context.Background()) require.NoError(t, errExpected, "Unable to get expected config") @@ -95,7 +97,7 @@ func TestExpand(t *testing.T) { for _, test := range testCases { t.Run(test.name, func(t *testing.T) { // Retrieve the config - emp := NewExpand(NewFile(path.Join("testdata", test.name))) + emp := NewExpand(configmapprovider.NewFile(path.Join("testdata", test.name))) cp, err := emp.Retrieve(context.Background(), nil) require.NoError(t, err, "Unable to get config") @@ -115,7 +117,7 @@ func TestExpand_EscapedEnvVars(t *testing.T) { }() // Retrieve the config - emp := NewExpand(NewFile(path.Join("testdata", "expand-escaped-env.yaml"))) + emp := NewExpand(configmapprovider.NewFile(path.Join("testdata", "expand-escaped-env.yaml"))) cp, err := emp.Retrieve(context.Background(), nil) require.NoError(t, err, "Unable to get config") diff --git a/config/configmapprovider/merge.go b/internal/configprovider/merge.go similarity index 77% rename from config/configmapprovider/merge.go rename to internal/configprovider/merge.go index 34e9e0a08c5..66ebeab920d 100644 --- a/config/configmapprovider/merge.go +++ b/internal/configprovider/merge.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package configmapprovider // import "go.opentelemetry.io/collector/config/configmapprovider" +package configprovider // import "go.opentelemetry.io/collector/internal/configprovider" import ( "context" @@ -20,21 +20,22 @@ import ( "go.uber.org/multierr" "go.opentelemetry.io/collector/config" + "go.opentelemetry.io/collector/config/configmapprovider" ) type mergeMapProvider struct { - providers []Provider + providers []configmapprovider.Provider } // NewMerge returns a Provider, that merges the result from multiple Provider. // // The ConfigMaps are merged in the given order, by merging all of them in order into an initial empty map. -func NewMerge(ps ...Provider) Provider { +func NewMerge(ps ...configmapprovider.Provider) configmapprovider.Provider { return &mergeMapProvider{providers: ps} } -func (mp *mergeMapProvider) Retrieve(ctx context.Context, onChange func(*ChangeEvent)) (Retrieved, error) { - var retrs []Retrieved +func (mp *mergeMapProvider) Retrieve(ctx context.Context, onChange func(*configmapprovider.ChangeEvent)) (configmapprovider.Retrieved, error) { + var retrs []configmapprovider.Retrieved retCfgMap := config.NewMap() for _, p := range mp.providers { retr, err := p.Retrieve(ctx, onChange) @@ -50,11 +51,11 @@ func (mp *mergeMapProvider) Retrieve(ctx context.Context, onChange func(*ChangeE } retrs = append(retrs, retr) } - return NewRetrieved( + return configmapprovider.NewRetrieved( func(ctx context.Context) (*config.Map, error) { return retCfgMap, nil }, - WithClose(func(ctxF context.Context) error { + configmapprovider.WithClose(func(ctxF context.Context) error { var err error for _, ret := range retrs { err = multierr.Append(err, ret.Close(ctxF)) diff --git a/config/configmapprovider/merge_test.go b/internal/configprovider/merge_test.go similarity index 98% rename from config/configmapprovider/merge_test.go rename to internal/configprovider/merge_test.go index 9c702691d86..a0db8e7f3cb 100644 --- a/config/configmapprovider/merge_test.go +++ b/internal/configprovider/merge_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package configmapprovider +package configprovider import ( "context" diff --git a/config/configmapprovider/mock_test.go b/internal/configprovider/mock_test.go similarity index 58% rename from config/configmapprovider/mock_test.go rename to internal/configprovider/mock_test.go index fc5628796a5..94d930133f7 100644 --- a/config/configmapprovider/mock_test.go +++ b/internal/configprovider/mock_test.go @@ -12,29 +12,30 @@ // See the License for the specific language governing permissions and // limitations under the License. -package configmapprovider +package configprovider import ( "context" "go.opentelemetry.io/collector/config" + "go.opentelemetry.io/collector/config/configmapprovider" ) // mockProvider is a mock implementation of Provider, useful for testing. type mockProvider struct { - retrieved Retrieved + retrieved configmapprovider.Retrieved retrieveErr error shutdownErr error } -var _ Provider = &mockProvider{} +var _ configmapprovider.Provider = &mockProvider{} -func (m *mockProvider) Retrieve(context.Context, func(*ChangeEvent)) (Retrieved, error) { +func (m *mockProvider) Retrieve(context.Context, func(*configmapprovider.ChangeEvent)) (configmapprovider.Retrieved, error) { if m.retrieveErr != nil { return nil, m.retrieveErr } if m.retrieved == nil { - return NewRetrieved(func(ctx context.Context) (*config.Map, error) { return config.NewMap(), nil }) + return configmapprovider.NewRetrieved(func(ctx context.Context) (*config.Map, error) { return config.NewMap(), nil }) } return m.retrieved, nil } @@ -43,14 +44,14 @@ func (m *mockProvider) Shutdown(context.Context) error { return m.shutdownErr } -func newErrGetRetrieved(getErr error) Retrieved { - ret, _ := NewRetrieved(func(ctx context.Context) (*config.Map, error) { return nil, getErr }) +func newErrGetRetrieved(getErr error) configmapprovider.Retrieved { + ret, _ := configmapprovider.NewRetrieved(func(ctx context.Context) (*config.Map, error) { return nil, getErr }) return ret } -func newErrCloseRetrieved(closeErr error) Retrieved { - ret, _ := NewRetrieved( +func newErrCloseRetrieved(closeErr error) configmapprovider.Retrieved { + ret, _ := configmapprovider.NewRetrieved( func(ctx context.Context) (*config.Map, error) { return config.NewMap(), nil }, - WithClose(func(ctx context.Context) error { return closeErr })) + configmapprovider.WithClose(func(ctx context.Context) error { return closeErr })) return ret } diff --git a/service/internal/configprovider/testdata/default-config.yaml b/internal/configprovider/testdata/default-config.yaml similarity index 100% rename from service/internal/configprovider/testdata/default-config.yaml rename to internal/configprovider/testdata/default-config.yaml diff --git a/config/configmapprovider/testdata/expand-escaped-env.yaml b/internal/configprovider/testdata/expand-escaped-env.yaml similarity index 100% rename from config/configmapprovider/testdata/expand-escaped-env.yaml rename to internal/configprovider/testdata/expand-escaped-env.yaml diff --git a/config/configmapprovider/testdata/expand-with-all-env.yaml b/internal/configprovider/testdata/expand-with-all-env.yaml similarity index 100% rename from config/configmapprovider/testdata/expand-with-all-env.yaml rename to internal/configprovider/testdata/expand-with-all-env.yaml diff --git a/config/configmapprovider/testdata/expand-with-no-env.yaml b/internal/configprovider/testdata/expand-with-no-env.yaml similarity index 100% rename from config/configmapprovider/testdata/expand-with-no-env.yaml rename to internal/configprovider/testdata/expand-with-no-env.yaml diff --git a/config/configmapprovider/testdata/expand-with-partial-env.yaml b/internal/configprovider/testdata/expand-with-partial-env.yaml similarity index 100% rename from config/configmapprovider/testdata/expand-with-partial-env.yaml rename to internal/configprovider/testdata/expand-with-partial-env.yaml diff --git a/service/config_provider.go b/service/config_provider.go index d48a0b34b32..74ea3f8a838 100644 --- a/service/config_provider.go +++ b/service/config_provider.go @@ -26,7 +26,7 @@ import ( "go.opentelemetry.io/collector/config/configmapprovider" "go.opentelemetry.io/collector/config/configunmarshaler" "go.opentelemetry.io/collector/config/experimental/configsource" - "go.opentelemetry.io/collector/service/internal/configprovider" + "go.opentelemetry.io/collector/internal/configprovider" ) // ConfigProvider provides the service configuration.