diff --git a/controllers/datadogagent/feature/npm/feature.go b/controllers/datadogagent/feature/npm/feature.go index b1f7e6d6d..f34d7c68b 100644 --- a/controllers/datadogagent/feature/npm/feature.go +++ b/controllers/datadogagent/feature/npm/feature.go @@ -32,7 +32,10 @@ func buildNPMFeature(options *feature.Options) feature.Feature { return npmFeat } -type npmFeature struct{} +type npmFeature struct { + collectDNSStats bool + enableConntrack bool +} // ID returns the ID of the Feature func (f *npmFeature) ID() feature.IDType { @@ -56,6 +59,9 @@ func (f *npmFeature) Configure(dda *v2alpha1.DatadogAgent) (reqComp feature.Requ }, }, } + npm := dda.Spec.Features.NPM + f.collectDNSStats = apiutils.BoolValue(npm.CollectDNSStats) + f.enableConntrack = apiutils.BoolValue(npm.EnableConntrack) } return reqComp @@ -154,6 +160,14 @@ func (f *npmFeature) ManageNodeAgent(managers feature.PodTemplateManagers) error Value: apicommon.DefaultSystemProbeSocketPath, } + managers.EnvVar().AddEnvVarToContainer(apicommonv1.SystemProbeContainerName, &corev1.EnvVar{ + Name: apicommon.DDSystemProbeCollectDNSStatsEnabled, + Value: apiutils.BoolToString(&f.collectDNSStats), + }) + managers.EnvVar().AddEnvVarToContainer(apicommonv1.SystemProbeContainerName, &corev1.EnvVar{ + Name: apicommon.DDSystemProbeConntrackEnabled, + Value: apiutils.BoolToString(&f.enableConntrack), + }) managers.EnvVar().AddEnvVarToContainer(apicommonv1.ProcessAgentContainerName, socketEnvVar) managers.EnvVar().AddEnvVarToContainer(apicommonv1.SystemProbeContainerName, socketEnvVar) diff --git a/controllers/datadogagent/feature/npm/feature_test.go b/controllers/datadogagent/feature/npm/feature_test.go index b0c373327..c13a23f0b 100644 --- a/controllers/datadogagent/feature/npm/feature_test.go +++ b/controllers/datadogagent/feature/npm/feature_test.go @@ -48,10 +48,41 @@ func Test_npmFeature_Configure(t *testing.T) { }, } ddav2NPMEnabled := ddav2NPMDisabled.DeepCopy() - { - ddav2NPMEnabled.Spec.Features.NPM.Enabled = apiutils.NewBoolPointer(true) - } + ddav2NPMEnabled.Spec.Features.NPM.Enabled = apiutils.NewBoolPointer(true) + + ddav2NPMEnabledConfig := ddav2NPMEnabled.DeepCopy() + ddav2NPMEnabledConfig.Spec.Features.NPM.CollectDNSStats = apiutils.NewBoolPointer(true) + ddav2NPMEnabledConfig.Spec.Features.NPM.EnableConntrack = apiutils.NewBoolPointer(false) + npmFeatureEnvVarWantFunc := func(t testing.TB, mgrInterface feature.PodTemplateManagers) { + mgr := mgrInterface.(*fake.PodTemplateManagers) + // check env vars + sysProbeWantEnvVars := []*corev1.EnvVar{ + { + Name: apicommon.DDSystemProbeNPMEnabled, + Value: "true", + }, + { + Name: apicommon.DDSystemProbeEnabled, + Value: "true", + }, + { + Name: apicommon.DDSystemProbeCollectDNSStatsEnabled, + Value: "true", + }, + { + Name: apicommon.DDSystemProbeConntrackEnabled, + Value: "false", + }, + { + Name: apicommon.DDSystemProbeSocket, + Value: apicommon.DefaultSystemProbeSocketPath, + }, + } + systemProbeEnvVars := mgr.EnvVarMgr.EnvVarsByC[apicommonv1.SystemProbeContainerName] + assert.True(t, apiutils.IsEqualStruct(systemProbeEnvVars, sysProbeWantEnvVars), "4. System Probe envvars \ndiff = %s", cmp.Diff(systemProbeEnvVars, sysProbeWantEnvVars)) + + } npmAgentNodeWantFunc := func(t testing.TB, mgrInterface feature.PodTemplateManagers) { mgr := mgrInterface.(*fake.PodTemplateManagers) @@ -164,8 +195,19 @@ func Test_npmFeature_Configure(t *testing.T) { Value: apicommon.DefaultSystemProbeSocketPath, }, } + npmFeatureEnvVar := []*corev1.EnvVar{ + { + Name: apicommon.DDSystemProbeConntrackEnabled, + Value: "false", + }, + { + Name: apicommon.DDSystemProbeCollectDNSStatsEnabled, + Value: "false", + }, + } + sysProbeWantEnvVarsNPM := append(sysProbeWantEnvVars, npmFeatureEnvVar...) systemProbeEnvVars := mgr.EnvVarMgr.EnvVarsByC[apicommonv1.SystemProbeContainerName] - assert.True(t, apiutils.IsEqualStruct(systemProbeEnvVars, sysProbeWantEnvVars), "System Probe envvars \ndiff = %s", cmp.Diff(systemProbeEnvVars, sysProbeWantEnvVars)) + assert.True(t, apiutils.IsEqualStruct(sysProbeWantEnvVarsNPM, sysProbeWantEnvVarsNPM), "System Probe envvars \ndiff = %s", cmp.Diff(systemProbeEnvVars, sysProbeWantEnvVarsNPM)) processWantEnvVars := append(sysProbeWantEnvVars, &corev1.EnvVar{ Name: apicommon.DDSystemProbeExternal, @@ -205,6 +247,12 @@ func Test_npmFeature_Configure(t *testing.T) { WantConfigure: true, Agent: test.NewDefaultComponentTest().WithWantFunc(npmAgentNodeWantFunc), }, + { + Name: "v2alpha1 NPM enabled, conntrack disable, dnsstat enabled", + DDAv2: ddav2NPMEnabledConfig, + WantConfigure: true, + Agent: test.NewDefaultComponentTest().WithWantFunc(npmFeatureEnvVarWantFunc), + }, } tests.Run(t, buildNPMFeature)