Skip to content

Commit cc74c19

Browse files
authored
Make converter optional (#28536)
1 parent 9a6dfe8 commit cc74c19

File tree

3 files changed

+88
-2
lines changed

3 files changed

+88
-2
lines changed

comp/otelcol/collector/impl/collector.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"go.opentelemetry.io/collector/confmap/provider/yamlprovider"
2222
"go.opentelemetry.io/collector/otelcol"
2323

24+
"github.com/DataDog/datadog-agent/comp/core/config"
2425
log "github.com/DataDog/datadog-agent/comp/core/log/def"
2526
"github.com/DataDog/datadog-agent/comp/core/tagger"
2627
compdef "github.com/DataDog/datadog-agent/comp/def"
@@ -59,6 +60,7 @@ type Requires struct {
5960
Log log.Component
6061
Provider confmap.Converter
6162
ConfigStore configstore.Component
63+
Config config.Component
6264
CollectorContrib collectorcontrib.Component
6365
Serializer serializer.MetricSerializer
6466
TraceAgent traceagent.Component
@@ -127,7 +129,8 @@ func NewComponent(reqs Requires) (Provides, error) {
127129
}
128130
addFactories(reqs, factories)
129131

130-
err = reqs.ConfigStore.AddConfigs(newConfigProviderSettings(reqs, false), newConfigProviderSettings(reqs, true), factories)
132+
converterEnabled := reqs.Config.GetBool("otelcollector.converter.enabled")
133+
err = reqs.ConfigStore.AddConfigs(newConfigProviderSettings(reqs, false), newConfigProviderSettings(reqs, converterEnabled), factories)
131134
if err != nil {
132135
return Provides{}, err
133136
}
@@ -148,7 +151,7 @@ func NewComponent(reqs Requires) (Provides, error) {
148151
Factories: func() (otelcol.Factories, error) {
149152
return factories, nil
150153
},
151-
ConfigProviderSettings: newConfigProviderSettings(reqs, true),
154+
ConfigProviderSettings: newConfigProviderSettings(reqs, converterEnabled),
152155
}
153156
col, err := otelcol.NewCollector(set)
154157
if err != nil {

comp/otelcol/collector/impl/collector_test.go

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
collectorcontribimpl "github.com/DataDog/datadog-agent/comp/otelcol/collector-contrib/impl"
1818
configstore "github.com/DataDog/datadog-agent/comp/otelcol/configstore/impl"
1919
converter "github.com/DataDog/datadog-agent/comp/otelcol/converter/impl"
20+
"github.com/DataDog/datadog-agent/pkg/config/setup"
2021
"github.com/stretchr/testify/assert"
2122
"go.opentelemetry.io/collector/confmap/confmaptest"
2223
"gopkg.in/yaml.v3"
@@ -46,8 +47,11 @@ func TestGetConfDump(t *testing.T) {
4647
provider, err := converter.NewConverter()
4748
assert.NoError(t, err)
4849

50+
conf := setup.Datadog()
51+
4952
reqs := Requires{
5053
CollectorContrib: collectorcontribimpl.NewComponent(),
54+
Config: conf,
5155
URIs: uriFromFile("simple-dd/config.yaml"),
5256
ConfigStore: configstore,
5357
Lc: &lifecycle{},
@@ -112,3 +116,81 @@ func TestGetConfDump(t *testing.T) {
112116
assert.Equal(t, expectedStringMap, actualStringMap)
113117
})
114118
}
119+
120+
func TestGetConfDumpConverterDisabled(t *testing.T) {
121+
configstore, err := configstore.NewConfigStore()
122+
assert.NoError(t, err)
123+
124+
provider, err := converter.NewConverter()
125+
assert.NoError(t, err)
126+
127+
conf := setup.Datadog()
128+
conf.SetWithoutSource("otelcollector.converter.enabled", false)
129+
130+
reqs := Requires{
131+
CollectorContrib: collectorcontribimpl.NewComponent(),
132+
Config: conf,
133+
URIs: uriFromFile("simple-dd/config.yaml"),
134+
ConfigStore: configstore,
135+
Lc: &lifecycle{},
136+
Provider: provider,
137+
}
138+
_, err = NewComponent(reqs)
139+
assert.NoError(t, err)
140+
141+
t.Run("provided-string", func(t *testing.T) {
142+
actualString, _ := configstore.GetProvidedConfAsString()
143+
actualStringMap, err := yamlBytesToMap([]byte(actualString))
144+
assert.NoError(t, err)
145+
146+
expectedBytes, err := os.ReadFile(filepath.Join("testdata", "simple-dd", "config-provided-result.yaml"))
147+
assert.NoError(t, err)
148+
expectedMap, err := yamlBytesToMap(expectedBytes)
149+
assert.NoError(t, err)
150+
151+
assert.Equal(t, expectedMap, actualStringMap)
152+
})
153+
154+
t.Run("provided-confmap", func(t *testing.T) {
155+
actualConfmap, _ := configstore.GetProvidedConf()
156+
// marshal to yaml and then to map to drop the types for comparison
157+
bytesConf, err := yaml.Marshal(actualConfmap.ToStringMap())
158+
assert.NoError(t, err)
159+
actualStringMap, err := yamlBytesToMap(bytesConf)
160+
assert.NoError(t, err)
161+
162+
expectedMap, err := confmaptest.LoadConf("testdata/simple-dd/config-provided-result.yaml")
163+
expectedStringMap := expectedMap.ToStringMap()
164+
assert.NoError(t, err)
165+
166+
assert.Equal(t, expectedStringMap, actualStringMap)
167+
})
168+
169+
t.Run("enhanced-string", func(t *testing.T) {
170+
actualString, _ := configstore.GetEnhancedConfAsString()
171+
actualStringMap, err := yamlBytesToMap([]byte(actualString))
172+
assert.NoError(t, err)
173+
174+
expectedBytes, err := os.ReadFile(filepath.Join("testdata", "simple-dd", "config-provided-result.yaml"))
175+
assert.NoError(t, err)
176+
expectedMap, err := yamlBytesToMap(expectedBytes)
177+
assert.NoError(t, err)
178+
179+
assert.Equal(t, expectedMap, actualStringMap)
180+
})
181+
182+
t.Run("enhance-confmap", func(t *testing.T) {
183+
actualConfmap, _ := configstore.GetEnhancedConf()
184+
// marshal to yaml and then to map to drop the types for comparison
185+
bytesConf, err := yaml.Marshal(actualConfmap.ToStringMap())
186+
assert.NoError(t, err)
187+
actualStringMap, err := yamlBytesToMap(bytesConf)
188+
assert.NoError(t, err)
189+
190+
expectedMap, err := confmaptest.LoadConf("testdata/simple-dd/config-provided-result.yaml")
191+
expectedStringMap := expectedMap.ToStringMap()
192+
assert.NoError(t, err)
193+
194+
assert.Equal(t, expectedStringMap, actualStringMap)
195+
})
196+
}

pkg/config/setup/config.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -855,6 +855,7 @@ func InitConfig(config pkgconfigmodel.Config) {
855855
config.BindEnvAndSetDefault("otelcollector.extension_url", "https://localhost:7777")
856856
config.BindEnvAndSetDefault("otelcollector.extension_timeout", 0) // in seconds, 0 for default value
857857
config.BindEnvAndSetDefault("otelcollector.submit_dummy_metadata", false) // dev flag - to be removed
858+
config.BindEnvAndSetDefault("otelcollector.converter.enabled", true)
858859

859860
// inventories
860861
config.BindEnvAndSetDefault("inventories_enabled", true)

0 commit comments

Comments
 (0)