From 4ed8c51bf7342f33ceabc273a2916fcf277f55d5 Mon Sep 17 00:00:00 2001 From: yxxhero Date: Mon, 6 May 2024 08:09:11 +0800 Subject: [PATCH] match all k8s list resources Signed-off-by: yxxhero --- manifest/parse.go | 2 +- manifest/parse_test.go | 26 +++++++++++++++++++++++++ manifest/testdata/configmaplist_v1.yaml | 15 ++++++++++++++ manifest/testdata/secretlist_v1.yaml | 18 +++++++++++++++++ 4 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 manifest/testdata/configmaplist_v1.yaml create mode 100644 manifest/testdata/secretlist_v1.yaml diff --git a/manifest/parse.go b/manifest/parse.go index 0fec1506..821a6e1c 100644 --- a/manifest/parse.go +++ b/manifest/parse.go @@ -113,7 +113,7 @@ func parseContent(content string, defaultNamespace string, normalizeManifests bo return nil, nil } - if parsedMetadata.Kind == "List" { + if strings.HasSuffix(parsedMetadata.Kind, "List") { type ListV1 struct { Items []yaml.MapSlice `yaml:"items"` } diff --git a/manifest/parse_test.go b/manifest/parse_test.go index 1ae65f28..9b0be8b3 100644 --- a/manifest/parse_test.go +++ b/manifest/parse_test.go @@ -92,6 +92,32 @@ func TestList(t *testing.T) { ) } +func TestConfigMapList(t *testing.T) { + spec, err := os.ReadFile("testdata/configmaplist_v1.yaml") + require.NoError(t, err) + + require.Equal(t, + []string{ + "default, configmap-2-1, ConfigMap (v1)", + "default, configmap-2-2, ConfigMap (v1)", + }, + foundObjects(Parse(string(spec), "default", false)), + ) +} + +func TestSecretList(t *testing.T) { + spec, err := os.ReadFile("testdata/secretlist_v1.yaml") + require.NoError(t, err) + + require.Equal(t, + []string{ + "default, my-secret-1, Secret (v1)", + "default, my-secret-2, Secret (v1)", + }, + foundObjects(Parse(string(spec), "default", false)), + ) +} + func TestEmpty(t *testing.T) { spec, err := os.ReadFile("testdata/empty.yaml") require.NoError(t, err) diff --git a/manifest/testdata/configmaplist_v1.yaml b/manifest/testdata/configmaplist_v1.yaml new file mode 100644 index 00000000..d12959fc --- /dev/null +++ b/manifest/testdata/configmaplist_v1.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: ConfigMapList +items: +- apiVersion: v1 + kind: ConfigMap + metadata: + name: configmap-2-1 + data: + key1: data1 +- apiVersion: v1 + kind: ConfigMap + metadata: + name: configmap-2-2 + data: + key2: data2 \ No newline at end of file diff --git a/manifest/testdata/secretlist_v1.yaml b/manifest/testdata/secretlist_v1.yaml new file mode 100644 index 00000000..5b586498 --- /dev/null +++ b/manifest/testdata/secretlist_v1.yaml @@ -0,0 +1,18 @@ +apiVersion: v1 +kind: SecretList +items: +- apiVersion: v1 + kind: Secret + metadata: + name: my-secret-1 + type: Opaque + data: + username: YWRtaW4= + password: MWYyZDFlMmU2N2Rm +- apiVersion: v1 + kind: Secret + metadata: + name: my-secret-2 + type: Opaque + data: + token: ZXlKaGJHY2lPaUpTVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SjFhV1FpT2pFc0luUnBiV1VpT2pFMU56RXlPRGd3TmpFeE1qQXdNVGN5TWpFeE1qQXdNVEE0TWpVMUxDSmhiR2NpT2lKSVV6STFOaUo5LmV5SjFhV1FpT2pFc0luUnBiV1VpT2pFMU56RXlPRGd3TmpFeE1qQXdNVGN5TWpFeE1qQXdNVEE0TWpVMUxDSmhiR2NpT2lKSVV6STFOaUo=