Skip to content

Commit d72fe63

Browse files
committed
Add dynamic key filtering to datadog chart baseline tests
1 parent 36b2670 commit d72fe63

11 files changed

+98
-187
lines changed

test/common/common.go

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package common
22

33
import (
4-
appsv1 "k8s.io/api/apps/v1"
4+
"bytes"
5+
"fmt"
6+
"io"
57
"os"
68
"path/filepath"
79
"strings"
@@ -11,6 +13,9 @@ import (
1113
"github.com/gruntwork-io/terratest/modules/k8s"
1214
"github.com/gruntwork-io/terratest/modules/random"
1315
"github.com/stretchr/testify/require"
16+
yaml "gopkg.in/yaml.v3"
17+
appsv1 "k8s.io/api/apps/v1"
18+
yaml2 "k8s.io/apimachinery/pkg/util/yaml"
1419
)
1520

1621
type HelmCommand struct {
@@ -117,3 +122,48 @@ func Contains(str string, list []string) bool {
117122
}
118123
return false
119124
}
125+
126+
func FilterYamlKeysMultiManifest(manifest string, filterKeys map[string]interface{}) (string, error) {
127+
reader := strings.NewReader(manifest)
128+
decoder := yaml2.NewYAMLOrJSONDecoder(reader, 4096)
129+
builder := strings.Builder{}
130+
for {
131+
var obj map[string]interface{}
132+
// We read the next YAML document from the input stream until we reach EOF.
133+
// This is needed if Helm rendering contains multiple resource manifests.
134+
err := decoder.Decode(&obj)
135+
if err == io.EOF {
136+
break
137+
}
138+
if err != nil {
139+
return "", fmt.Errorf("couldn't decode manifest for filtering dynamic keys: %s", err)
140+
}
141+
142+
filterKeysRecursive(&obj, filterKeys)
143+
144+
var buf bytes.Buffer
145+
enc := yaml.NewEncoder(&buf)
146+
enc.SetIndent(2) // Adjust indentation (default is 4)
147+
enc.Encode(obj)
148+
enc.Close()
149+
output := buf.String()
150+
151+
if err != nil {
152+
return "", fmt.Errorf("couldn't marshal manifest after filtering: %s", err)
153+
}
154+
builder.WriteString(output)
155+
builder.WriteString("---\n")
156+
}
157+
return builder.String(), nil
158+
}
159+
160+
func filterKeysRecursive(yamlMap *map[string]interface{}, keys map[string]interface{}) {
161+
for yamlKey := range *yamlMap {
162+
if _, found := keys[yamlKey]; found {
163+
// fmt.Println("deleting key", yamlKey)
164+
delete(*yamlMap, yamlKey)
165+
} else if nested, ok := (*yamlMap)[yamlKey].(map[string]interface{}); ok {
166+
filterKeysRecursive(&nested, keys)
167+
}
168+
}
169+
}

test/datadog/baseline/agent-clusterchecks-deployment_default.yaml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ metadata:
77
app.kubernetes.io/managed-by: Helm
88
app.kubernetes.io/name: datadog
99
app.kubernetes.io/version: "7"
10-
helm.sh/chart: datadog-3.98.1
1110
name: datadog-clusterchecks
1211
namespace: datadog-agent
1312
spec:
@@ -23,9 +22,7 @@ spec:
2322
type: RollingUpdate
2423
template:
2524
metadata:
26-
annotations:
27-
checksum/clusteragent_token: 46c57eb56ed9b06c80f95be1db78e7ada68e05d60e70cd05adbe44dce4d458ad
28-
checksum/install_info: 294ab445dd224b5cc1663ee0737da0a03d9e2d995bc77fd2d21fb358fe1b2eed
25+
annotations: {}
2926
labels:
3027
admission.datadoghq.com/enabled: "false"
3128
app: datadog-clusterchecks

test/datadog/baseline/cluster-agent-deployment_default.yaml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ metadata:
77
app.kubernetes.io/managed-by: Helm
88
app.kubernetes.io/name: datadog
99
app.kubernetes.io/version: "7"
10-
helm.sh/chart: datadog-3.98.1
1110
name: datadog-cluster-agent
1211
namespace: datadog-agent
1312
spec:
@@ -23,12 +22,7 @@ spec:
2322
type: RollingUpdate
2423
template:
2524
metadata:
26-
annotations:
27-
checksum/api_key: b9ca61ea0157739747185859ecd177e8bd37d7614c90db55d68a3eeb7a23061e
28-
checksum/application_key: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b
29-
checksum/clusteragent-configmap: 78ab32266531527cc470ed026dbb918f2d545a1744a8e0c78b63cedd3fab3d46
30-
checksum/clusteragent_token: ba677e8b323af8e8a1bf50dd0aa672fbb7ea7bfcd8b5a6017f36a3a92efc1b93
31-
checksum/install_info: 294ab445dd224b5cc1663ee0737da0a03d9e2d995bc77fd2d21fb358fe1b2eed
25+
annotations: {}
3226
labels:
3327
admission.datadoghq.com/enabled: "false"
3428
app: datadog-cluster-agent

test/datadog/baseline/cluster-agent-deployment_default_advanced_AC_injection.yaml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ metadata:
77
app.kubernetes.io/managed-by: Helm
88
app.kubernetes.io/name: datadog
99
app.kubernetes.io/version: "7"
10-
helm.sh/chart: datadog-3.98.1
1110
name: datadog-cluster-agent
1211
namespace: datadog-agent
1312
spec:
@@ -23,12 +22,7 @@ spec:
2322
type: RollingUpdate
2423
template:
2524
metadata:
26-
annotations:
27-
checksum/api_key: b9ca61ea0157739747185859ecd177e8bd37d7614c90db55d68a3eeb7a23061e
28-
checksum/application_key: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b
29-
checksum/clusteragent-configmap: 78ab32266531527cc470ed026dbb918f2d545a1744a8e0c78b63cedd3fab3d46
30-
checksum/clusteragent_token: 22226c9c062bb4932462ccc9488667d2d2eaa50025fcd567eb1f4184110e2556
31-
checksum/install_info: 294ab445dd224b5cc1663ee0737da0a03d9e2d995bc77fd2d21fb358fe1b2eed
25+
annotations: {}
3226
labels:
3327
admission.datadoghq.com/enabled: "false"
3428
app: datadog-cluster-agent

test/datadog/baseline/cluster-agent-deployment_default_minimal_AC_injection.yaml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ metadata:
77
app.kubernetes.io/managed-by: Helm
88
app.kubernetes.io/name: datadog
99
app.kubernetes.io/version: "7"
10-
helm.sh/chart: datadog-3.98.1
1110
name: datadog-cluster-agent
1211
namespace: datadog-agent
1312
spec:
@@ -23,12 +22,7 @@ spec:
2322
type: RollingUpdate
2423
template:
2524
metadata:
26-
annotations:
27-
checksum/api_key: b9ca61ea0157739747185859ecd177e8bd37d7614c90db55d68a3eeb7a23061e
28-
checksum/application_key: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b
29-
checksum/clusteragent-configmap: 78ab32266531527cc470ed026dbb918f2d545a1744a8e0c78b63cedd3fab3d46
30-
checksum/clusteragent_token: 96e9e09ad2f5522df113058aa00bcce374e9676aab9eb164fb3cf1d9b4d65a14
31-
checksum/install_info: 294ab445dd224b5cc1663ee0737da0a03d9e2d995bc77fd2d21fb358fe1b2eed
25+
annotations: {}
3226
labels:
3327
admission.datadoghq.com/enabled: "false"
3428
app: datadog-cluster-agent

test/datadog/baseline/daemonset_default.yaml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ metadata:
77
app.kubernetes.io/managed-by: Helm
88
app.kubernetes.io/name: datadog
99
app.kubernetes.io/version: "7"
10-
helm.sh/chart: datadog-3.98.1
1110
name: datadog
1211
namespace: datadog-agent
1312
spec:
@@ -17,12 +16,7 @@ spec:
1716
app: datadog
1817
template:
1918
metadata:
20-
annotations:
21-
checksum/autoconf-config: 74234e98afe7498fb5daf1f36ac2d78acc339464f950703b8c019892f982b90b
22-
checksum/checksd-config: 44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a
23-
checksum/clusteragent_token: 0b52485673a4bc26ed99a829df0e4aa4aaad46740afa7f8875464f0c4714ebc6
24-
checksum/confd-config: 44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a
25-
checksum/install_info: 294ab445dd224b5cc1663ee0737da0a03d9e2d995bc77fd2d21fb358fe1b2eed
19+
annotations: {}
2620
labels:
2721
admission.datadoghq.com/enabled: "false"
2822
app: datadog

0 commit comments

Comments
 (0)