From 0244f0919ecc6ec9de851602a443e0fc7f140281 Mon Sep 17 00:00:00 2001 From: Natasha Sarkar Date: Thu, 2 Sep 2021 12:10:01 -0700 Subject: [PATCH] update name references after kind change --- api/filters/nameref/nameref.go | 1 + api/krusty/gvknpatch_test.go | 164 +++++++++++++++++++++++++++++++++ 2 files changed, 165 insertions(+) diff --git a/api/filters/nameref/nameref.go b/api/filters/nameref/nameref.go index 850059fb2..15a8515d3 100644 --- a/api/filters/nameref/nameref.go +++ b/api/filters/nameref/nameref.go @@ -56,6 +56,7 @@ func (f Filter) run(node *yaml.RNode) (*yaml.RNode, error) { // sanity check. return nil, err } + f.NameFieldToUpdate.Gvk = f.Referrer.GetGvk() if err := node.PipeE(fieldspec.Filter{ FieldSpec: f.NameFieldToUpdate, SetValue: f.set, diff --git a/api/krusty/gvknpatch_test.go b/api/krusty/gvknpatch_test.go index 763d88586..6f782d8df 100644 --- a/api/krusty/gvknpatch_test.go +++ b/api/krusty/gvknpatch_test.go @@ -685,3 +685,167 @@ spec: name: new-name `) } + +func TestNameReferenceAfterJsonPatch(t *testing.T) { + th := kusttest_test.MakeHarness(t) + th.WriteF("resources.yaml", ` +apiVersion: v1 +data: + bar: bar +kind: ConfigMap +metadata: + name: cm +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: foo +spec: + selector: + matchLabels: + foo: foo + template: + metadata: + labels: + foo: foo + spec: + containers: + - name: foo + image: example + volumeMounts: + - mountPath: /path + name: myvol + volumes: + - configMap: + name: cm + name: myvol +`) + th.WriteK(".", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namePrefix: foo- +resources: +- resources.yaml +patches: +- target: + group: apps + version: v1 + name: foo + patch: | + - op: replace + path: /kind + value: Deployment +`) + m := th.Run(".", th.MakeDefaultOptions()) + th.AssertActualEqualsExpected(m, `apiVersion: v1 +data: + bar: bar +kind: ConfigMap +metadata: + name: foo-cm +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: foo-foo +spec: + selector: + matchLabels: + foo: foo + template: + metadata: + labels: + foo: foo + spec: + containers: + - image: example + name: foo + volumeMounts: + - mountPath: /path + name: myvol + volumes: + - configMap: + name: foo-cm + name: myvol +`) +} + +func TestNameReferenceAfterJsonPatchConfigMapGenerator(t *testing.T) { + th := kusttest_test.MakeHarness(t) + th.WriteF("statefulset.yaml", ` +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: foo +spec: + selector: + matchLabels: + foo: foo + template: + metadata: + labels: + foo: foo + spec: + containers: + - name: foo + image: example + volumeMounts: + - mountPath: /path + name: myvol + volumes: + - configMap: + name: cm + name: myvol +`) + th.WriteK(".", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +- statefulset.yaml +patches: +- target: + group: apps + version: v1 + name: foo + patch: | + - op: replace + path: /kind + value: Deployment +configMapGenerator: +- name: cm + literals: + - bar=bar +`) + m := th.Run(".", th.MakeDefaultOptions()) + th.AssertActualEqualsExpected(m, `apiVersion: apps/v1 +kind: Deployment +metadata: + name: foo +spec: + selector: + matchLabels: + foo: foo + template: + metadata: + labels: + foo: foo + spec: + containers: + - image: example + name: foo + volumeMounts: + - mountPath: /path + name: myvol + volumes: + - configMap: + name: cm-8hm8224gfd + name: myvol +--- +apiVersion: v1 +data: + bar: bar +kind: ConfigMap +metadata: + name: cm-8hm8224gfd +`) +}