diff --git a/api/krusty/diamondpatchref_test.go b/api/krusty/diamondpatchref_test.go new file mode 100644 index 000000000..3d20a4b85 --- /dev/null +++ b/api/krusty/diamondpatchref_test.go @@ -0,0 +1,228 @@ +// Copyright 2019 The Kubernetes Authors. +// SPDX-License-Identifier: Apache-2.0 + +package krusty_test + +// In the following structure `top` patches `left-deploy` and `right-deploy` to reference the +// configMap in `bottom`. This test verifies `configMapRef.name` in `left-deploy` and +// `right-deploy` is modified correctly. +// +// top +// / \ +// left right +// / \ / \ +// left-service bottom bottom right-service +// | \ / | +// left-deploy bottom right-deploy +// | +// configMap + +import ( + "testing" + + kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest" +) + +func TestConfMapNameResolutionInDiamondWithPatches(t *testing.T) { + th := kusttest_test.MakeHarness(t) + + th.WriteK("bottom", ` +configMapGenerator: +- name: bottom + literals: + - KEY=value +`) + + th.WriteK("left-service", ` +resources: +- deployment.yaml +`) + + th.WriteF("left-service/deployment.yaml", ` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: left-deploy + labels: + app.kubernetes.io/name: left-deploy +spec: + selector: + matchLabels: + app.kubernetes.io/name: left-pod + template: + metadata: + labels: + app.kubernetes.io/name: left-pod + spec: + containers: + - image: left-image:v1.0 + name: service +`) + + th.WriteK("right-service", ` +resources: +- deployment.yaml +`) + + th.WriteF("right-service/deployment.yaml", ` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: right-deploy + labels: + app.kubernetes.io/name: right-deploy +spec: + selector: + matchLabels: + app.kubernetes.io/name: right-pod + template: + metadata: + labels: + app.kubernetes.io/name: right-pod + spec: + containers: + - image: right-image:v1.0 + name: service +`) + + th.WriteK("top", ` +resources: +- ./left +- ./right +`) + + th.WriteK("top/left", ` +resources: +- ../../left-service +- ./bottom + +patches: +- target: + kind: Deployment + name: left-deploy + patch: |- + apiVersion: apps/v1 + kind: Deployment + metadata: + name: ignored-by-kustomize + spec: + template: + spec: + containers: + - name: service + env: + - name: MAPPED_CONFIG_ITEM + valueFrom: + configMapKeyRef: + name: left-bottom + key: KEY +`) + + th.WriteK("top/left/bottom", ` +namePrefix: left- + +resources: +- ../../../bottom +`) + + th.WriteK("top/right", ` +resources: +- ../../right-service +- ./bottom + +patches: +- target: + kind: Deployment + name: right-deploy + patch: |- + apiVersion: apps/v1 + kind: Deployment + metadata: + name: ignored-by-kustomize + spec: + template: + spec: + containers: + - name: service + env: + - name: MAPPED_CONFIG_ITEM + valueFrom: + configMapKeyRef: + name: right-bottom + key: KEY +`) + + th.WriteK("top/right/bottom", ` +namePrefix: right- + +resources: +- ../../../bottom +`) + + m := th.Run("top", th.MakeDefaultOptions()) + // Desired behaviour: configMapKeyRef should reference ConfigMap names. + th.AssertActualEqualsExpected(m, `apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/name: left-deploy + name: left-deploy +spec: + selector: + matchLabels: + app.kubernetes.io/name: left-pod + template: + metadata: + labels: + app.kubernetes.io/name: left-pod + spec: + containers: + - env: + - name: MAPPED_CONFIG_ITEM + valueFrom: + configMapKeyRef: + key: KEY + name: left-bottom + image: left-image:v1.0 + name: service +--- +apiVersion: v1 +data: + KEY: value +kind: ConfigMap +metadata: + name: left-bottom-9f2t6f5h6d +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/name: right-deploy + name: right-deploy +spec: + selector: + matchLabels: + app.kubernetes.io/name: right-pod + template: + metadata: + labels: + app.kubernetes.io/name: right-pod + spec: + containers: + - env: + - name: MAPPED_CONFIG_ITEM + valueFrom: + configMapKeyRef: + key: KEY + name: right-bottom + image: right-image:v1.0 + name: service +--- +apiVersion: v1 +data: + KEY: value +kind: ConfigMap +metadata: + name: right-bottom-9f2t6f5h6d +`) +}