1
0
mirror of synced 2026-06-13 09:10:48 +00:00

fix: preserve invalid label type

Signed-off-by: Raffael Sahli <raffael.sahli@doodle.com>
This commit is contained in:
Raffael Sahli
2026-06-05 08:46:15 +02:00
parent 04b23241e1
commit e0803ee689
5 changed files with 55 additions and 9 deletions
+2 -9
View File
@@ -659,17 +659,10 @@ func kustomizationsEqual(k1 *kustomizev1.Kustomization, k2 *kustomizev1.Kustomiz
}
func (b *Builder) setOwnerLabels(res *resource.Resource) error {
labels := res.GetLabels()
labels[controllerGroup+"/name"] = b.kustomization.GetName()
labels[controllerGroup+"/namespace"] = b.kustomization.GetNamespace()
err := res.SetLabels(labels)
if err != nil {
if err := res.PipeE(yaml.SetLabel(controllerGroup+"/name", b.kustomization.GetName())); err != nil {
return err
}
return nil
return res.PipeE(yaml.SetLabel(controllerGroup+"/namespace", b.kustomization.GetNamespace()))
}
func maskSopsData(res *resource.Resource) error {
+35
View File
@@ -840,3 +840,38 @@ resources:
t.Fatal("expected error when referencing resource outside cwd, got nil")
}
}
func Test_Build_preserveAllLabels(t *testing.T) {
b, err := NewBuilder("test-ks", "testdata/invalid-labels/resources",
WithDryRun(true),
WithNamespace("flux-system"),
WithKustomizationFile("testdata/invalid-labels/kustomization.yaml"),
)
if err != nil {
t.Fatalf("unable to create builder: %v", err)
}
objects, err := b.Build()
if err != nil {
t.Fatalf("build failed: %v", err)
}
if len(objects) == 0 {
t.Fatal("expected at least one object, got none")
}
rawLabels, _, _ := unstructured.NestedMap(objects[0].Object, "metadata", "labels")
if got, ok := rawLabels["invalid"]; !ok || got != int64(0) {
t.Errorf("expected label invalid=0, got %#v", got)
}
if got, ok := rawLabels["valid"]; !ok || got != "yes" {
t.Errorf("expected label valid=\"yes\", got %v", got)
}
if got := rawLabels[controllerGroup+"/name"]; got != "test-ks" {
t.Errorf("expected owner name label \"test-ks\", got %v", got)
}
if got := rawLabels[controllerGroup+"/namespace"]; got != "flux-system" {
t.Errorf("expected owner namespace label \"flux-system\", got %v", got)
}
}
@@ -0,0 +1,7 @@
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: test-ks
namespace: flux-system
spec:
path: "./resources"
@@ -0,0 +1,7 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: invalid-resource
labels:
invalid: 0
valid: yes
@@ -0,0 +1,4 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- invalid-resource.yaml