From 53359dde78e47698b04b7ab5332bcdf44a5299c0 Mon Sep 17 00:00:00 2001 From: khewonc <39867936+khewonc@users.noreply.github.com> Date: Tue, 3 Jan 2023 18:06:19 -0500 Subject: [PATCH] Fix admission controller panic (#677) --- .../v2alpha1/datadogagent_default.go | 3 +- .../v2alpha1/datadogagent_default_test.go | 56 +++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/apis/datadoghq/v2alpha1/datadogagent_default.go b/apis/datadoghq/v2alpha1/datadogagent_default.go index 5b61bec5c..a3cd5d8df 100644 --- a/apis/datadoghq/v2alpha1/datadogagent_default.go +++ b/apis/datadoghq/v2alpha1/datadogagent_default.go @@ -257,7 +257,8 @@ func defaultFeaturesConfig(ddaSpec *DatadogAgentSpec) { } } - if *ddaSpec.Features.AdmissionController.Enabled { + if ddaSpec.Features.AdmissionController.Enabled == nil || *ddaSpec.Features.AdmissionController.Enabled { + apiutils.DefaultBooleanIfUnset(&ddaSpec.Features.AdmissionController.Enabled, defaultAdmissionControllerEnabled) apiutils.DefaultBooleanIfUnset(&ddaSpec.Features.AdmissionController.MutateUnlabelled, defaultAdmissionControllerMutateUnlabelled) apiutils.DefaultStringIfUnset(&ddaSpec.Features.AdmissionController.ServiceName, defaultAdmissionServiceName) } diff --git a/apis/datadoghq/v2alpha1/datadogagent_default_test.go b/apis/datadoghq/v2alpha1/datadogagent_default_test.go index 00258dad0..0c5d9c1dd 100644 --- a/apis/datadoghq/v2alpha1/datadogagent_default_test.go +++ b/apis/datadoghq/v2alpha1/datadogagent_default_test.go @@ -665,6 +665,62 @@ func Test_defaultFeatures(t *testing.T) { }, }, }, + { + name: "Admission controller enabled unset, other fields set", + ddaSpec: &DatadogAgentSpec{ + Features: &DatadogFeatures{ + AdmissionController: &AdmissionControllerFeatureConfig{ + MutateUnlabelled: apiutils.NewBoolPointer(true), + AgentCommunicationMode: apiutils.NewStringPointer("socket"), + }, + }, + }, + want: &DatadogAgentSpec{ + Features: &DatadogFeatures{ + LiveContainerCollection: &LiveContainerCollectionFeatureConfig{ + Enabled: apiutils.NewBoolPointer(defaultLiveContainerCollectionEnabled), + }, + Dogstatsd: &DogstatsdFeatureConfig{ + OriginDetectionEnabled: apiutils.NewBoolPointer(defaultDogstatsdOriginDetectionEnabled), + HostPortConfig: &HostPortConfig{Enabled: apiutils.NewBoolPointer(defaultDogstatsdHostPortEnabled)}, + UnixDomainSocketConfig: &UnixDomainSocketConfig{ + Enabled: apiutils.NewBoolPointer(defaultDogstatsdSocketEnabled), + Path: apiutils.NewStringPointer(defaultDogstatsdSocketPath), + }, + }, + OTLP: &OTLPFeatureConfig{Receiver: OTLPReceiverConfig{Protocols: OTLPProtocolsConfig{ + GRPC: &OTLPGRPCConfig{ + Enabled: apiutils.NewBoolPointer(defaultOTLPGRPCEnabled), + Endpoint: apiutils.NewStringPointer(defaultOTLPGRPCEndpoint), + }, + HTTP: &OTLPHTTPConfig{ + Enabled: apiutils.NewBoolPointer(defaultOTLPHTTPEnabled), + Endpoint: apiutils.NewStringPointer(defaultOTLPHTTPEndpoint), + }, + }}}, + EventCollection: &EventCollectionFeatureConfig{ + CollectKubernetesEvents: apiutils.NewBoolPointer(defaultCollectKubernetesEvents), + }, + OrchestratorExplorer: &OrchestratorExplorerFeatureConfig{ + Enabled: apiutils.NewBoolPointer(defaultOrchestratorExplorerEnabled), + ScrubContainers: apiutils.NewBoolPointer(defaultOrchestratorExplorerScrubContainers), + }, + KubeStateMetricsCore: &KubeStateMetricsCoreFeatureConfig{ + Enabled: apiutils.NewBoolPointer(defaultKubeStateMetricsCoreEnabled), + }, + ClusterChecks: &ClusterChecksFeatureConfig{ + Enabled: apiutils.NewBoolPointer(defaultClusterChecksEnabled), + UseClusterChecksRunners: apiutils.NewBoolPointer(false), + }, + AdmissionController: &AdmissionControllerFeatureConfig{ + Enabled: apiutils.NewBoolPointer(true), + MutateUnlabelled: apiutils.NewBoolPointer(true), + ServiceName: apiutils.NewStringPointer(defaultAdmissionServiceName), + AgentCommunicationMode: apiutils.NewStringPointer("socket"), + }, + }, + }, + }, } for _, tt := range tests {