diff --git a/.chloggen/overwritepropertiesconverter.yaml b/.chloggen/overwritepropertiesconverter.yaml new file mode 100755 index 00000000000..e9becda8287 --- /dev/null +++ b/.chloggen/overwritepropertiesconverter.yaml @@ -0,0 +1,11 @@ +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: breaking + +# The name of the component, or a single word describing the area of concern, (e.g. otlpreceiver) +component: overwritepropertiesconverter + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Remove deprecated package `overwritepropertiesconverter` + +# One or more tracking issues or pull requests related to the change +issues: [6656] diff --git a/confmap/converter/overwritepropertiesconverter/properties.go b/confmap/converter/overwritepropertiesconverter/properties.go deleted file mode 100644 index 9de5dbd3b05..00000000000 --- a/confmap/converter/overwritepropertiesconverter/properties.go +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package overwritepropertiesconverter // import "go.opentelemetry.io/collector/confmap/converter/overwritepropertiesconverter" - -import ( - "bytes" - "context" - "strings" - - "github.com/knadh/koanf/maps" - "github.com/magiconair/properties" - - "go.opentelemetry.io/collector/confmap" -) - -type converter struct { - properties []string -} - -// Deprecated: [v0.63.0] this converter will not be supported anymore because of dot separation limitation. -// See https://github.com/open-telemetry/opentelemetry-collector/issues/6294 for more details. -func New(properties []string) confmap.Converter { - return &converter{properties: properties} -} - -func (c *converter) Convert(_ context.Context, conf *confmap.Conf) error { - if len(c.properties) == 0 { - return nil - } - - b := &bytes.Buffer{} - for _, property := range c.properties { - property = strings.TrimSpace(property) - b.WriteString(property) - b.WriteString("\n") - } - - var props *properties.Properties - var err error - if props, err = properties.Load(b.Bytes(), properties.UTF8); err != nil { - return err - } - - // Create a map manually instead of using properties.Map() to not expand the env vars. - parsed := make(map[string]interface{}, props.Len()) - for _, key := range props.Keys() { - value, _ := props.Get(key) - parsed[key] = value - } - prop := maps.Unflatten(parsed, ".") - - return conf.Merge(confmap.NewFromStringMap(prop)) -} diff --git a/confmap/converter/overwritepropertiesconverter/properties_test.go b/confmap/converter/overwritepropertiesconverter/properties_test.go deleted file mode 100644 index 363868c833b..00000000000 --- a/confmap/converter/overwritepropertiesconverter/properties_test.go +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package overwritepropertiesconverter - -import ( - "context" - "testing" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - - "go.opentelemetry.io/collector/confmap" -) - -func TestOverwritePropertiesConverter_Empty(t *testing.T) { - pmp := New(nil) - conf := confmap.NewFromStringMap(map[string]interface{}{"foo": "bar"}) - assert.NoError(t, pmp.Convert(context.Background(), conf)) - assert.Equal(t, map[string]interface{}{"foo": "bar"}, conf.ToStringMap()) -} - -func TestOverwritePropertiesConverter(t *testing.T) { - props := []string{ - "processors.batch.timeout=2s", - "processors.batch/foo.timeout=3s", - "receivers.otlp.protocols.grpc.endpoint=localhost:1818", - "exporters.kafka.brokers=foo:9200,foo2:9200", - } - - pmp := New(props) - conf := confmap.New() - require.NoError(t, pmp.Convert(context.Background(), conf)) - keys := conf.AllKeys() - assert.Len(t, keys, 4) - assert.Equal(t, "2s", conf.Get("processors::batch::timeout")) - assert.Equal(t, "3s", conf.Get("processors::batch/foo::timeout")) - assert.Equal(t, "foo:9200,foo2:9200", conf.Get("exporters::kafka::brokers")) - assert.Equal(t, "localhost:1818", conf.Get("receivers::otlp::protocols::grpc::endpoint")) -} - -func TestOverwritePropertiesConverter_InvalidProperty(t *testing.T) { - pmp := New([]string{"=2s"}) - conf := confmap.New() - assert.Error(t, pmp.Convert(context.Background(), conf)) -}