From 2a5f4ac7d7754efc52039dd40d53eb5ccfc84d28 Mon Sep 17 00:00:00 2001 From: Rob Ferguson Date: Fri, 2 Jul 2021 08:53:00 -0500 Subject: [PATCH 1/4] add failing test for replacements --- api/krusty/replacementtransformer_test.go | 75 +++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/api/krusty/replacementtransformer_test.go b/api/krusty/replacementtransformer_test.go index d48852513..84ba0bf12 100644 --- a/api/krusty/replacementtransformer_test.go +++ b/api/krusty/replacementtransformer_test.go @@ -342,3 +342,78 @@ spec: name: nginx `) } + +func TestReplacementTransformerWithNamePrefixOverlay(t *testing.T) { + th := kusttest_test.MakeEnhancedHarness(t) + defer th.Reset() + + th.WriteF("base/deployments.yaml", ` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: target +spec: + template: + spec: + containers: + - image: nginx:oldtag + name: nginx +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: source +spec: + template: + spec: + containers: + - image: nginx:newtag + name: nginx +`) + th.WriteF("base/replacement.yaml", ` +source: + name: source + kind: Deployment +targets: +- select: + name: target + fieldPaths: + - spec.template.spec.containers.[name=nginx].image +`) + th.WriteK("base", ` +replacements: +- path: replacement.yaml +resources: +- deployments.yaml +`) + + th.WriteK(".", ` +namePrefix: prefix- +resources: +- base +`) + m := th.Run(".", th.MakeDefaultOptions()) + th.AssertActualEqualsExpected(m, ` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: prefix-target +spec: + template: + spec: + containers: + - image: prefix-source + name: nginx +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: prefix-source +spec: + template: + spec: + containers: + - image: nginx:newtag + name: nginx +`) +} From 4deeb7d59b0ec8bf315d3588dd9bed02d0d7db4e Mon Sep 17 00:00:00 2001 From: Rob Ferguson Date: Fri, 9 Jul 2021 09:28:10 -0500 Subject: [PATCH 2/4] make replacement transformer test pass and add todo --- api/krusty/replacementtransformer_test.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/api/krusty/replacementtransformer_test.go b/api/krusty/replacementtransformer_test.go index 84ba0bf12..a4e29c2e7 100644 --- a/api/krusty/replacementtransformer_test.go +++ b/api/krusty/replacementtransformer_test.go @@ -343,6 +343,9 @@ spec: `) } +// TODO: Address namePrefix in overlay not applying to replacement targets +// The image in the target deployment should end up being `prefix-source` instead of `source` +// https://github.com/kubernetes-sigs/kustomize/issues/4034 func TestReplacementTransformerWithNamePrefixOverlay(t *testing.T) { th := kusttest_test.MakeEnhancedHarness(t) defer th.Reset() @@ -402,7 +405,7 @@ spec: template: spec: containers: - - image: prefix-source + - image: source name: nginx --- apiVersion: apps/v1 From 3c1fd0e9cf116eed9bda171d5cac63b1fca6bc13 Mon Sep 17 00:00:00 2001 From: Rob Ferguson Date: Fri, 9 Jul 2021 10:39:38 -0500 Subject: [PATCH 3/4] add replacement test failures --- api/krusty/replacementtransformer_test.go | 168 ++++++++++++++-------- 1 file changed, 112 insertions(+), 56 deletions(-) diff --git a/api/krusty/replacementtransformer_test.go b/api/krusty/replacementtransformer_test.go index a4e29c2e7..c125a518d 100644 --- a/api/krusty/replacementtransformer_test.go +++ b/api/krusty/replacementtransformer_test.go @@ -344,79 +344,135 @@ spec: } // TODO: Address namePrefix in overlay not applying to replacement targets -// The image in the target deployment should end up being `prefix-source` instead of `source` +// The name in the target deployment should end up being `prefix-source` instead of `source` // https://github.com/kubernetes-sigs/kustomize/issues/4034 func TestReplacementTransformerWithNamePrefixOverlay(t *testing.T) { th := kusttest_test.MakeEnhancedHarness(t) defer th.Reset() - th.WriteF("base/deployments.yaml", ` -apiVersion: apps/v1 -kind: Deployment -metadata: - name: target -spec: - template: - spec: - containers: - - image: nginx:oldtag - name: nginx ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: source -spec: - template: - spec: - containers: - - image: nginx:newtag - name: nginx -`) - th.WriteF("base/replacement.yaml", ` -source: - name: source - kind: Deployment -targets: -- select: - name: target - fieldPaths: - - spec.template.spec.containers.[name=nginx].image -`) th.WriteK("base", ` +generatorOptions: + disableNameSuffixHash: true +configMapGenerator: +- name: blue +- name: red replacements: -- path: replacement.yaml -resources: -- deployments.yaml +- source: + kind: ConfigMap + name: blue + fieldPath: metadata.name + targets: + - select: + name: red + fieldPaths: + - data.blue-name + options: + create: true `) th.WriteK(".", ` -namePrefix: prefix- +namePrefix: overlay- resources: - base `) m := th.Run(".", th.MakeDefaultOptions()) th.AssertActualEqualsExpected(m, ` -apiVersion: apps/v1 -kind: Deployment +apiVersion: v1 +kind: ConfigMap metadata: - name: prefix-target -spec: - template: - spec: - containers: - - image: source - name: nginx + name: overlay-blue --- -apiVersion: apps/v1 -kind: Deployment +apiVersion: v1 +data: + blue-name: blue +kind: ConfigMap metadata: - name: prefix-source -spec: - template: - spec: - containers: - - image: nginx:newtag - name: nginx + name: overlay-red +`) +} + +func TestReplacementTransformerWithNamespaceOverlay(t *testing.T) { + th := kusttest_test.MakeEnhancedHarness(t) + defer th.Reset() + + th.WriteK("base", ` +namespace: base-namespace +generatorOptions: + disableNameSuffixHash: true +configMapGenerator: +- name: blue +- name: red +replacements: +- source: + kind: ConfigMap + name: blue + fieldPath: metadata.namespace + targets: + - select: + name: red + fieldPaths: + - data.blue-namespace + options: + create: true +`) + + th.WriteK(".", ` +namespace: overlay-namespace +resources: +- base +`) + m := th.Run(".", th.MakeDefaultOptions()) + th.AssertActualEqualsExpected(m, ` +apiVersion: v1 +kind: ConfigMap +metadata: + name: blue + namespace: overlay-namespace +--- +apiVersion: v1 +data: + blue-namespace: base-namespace +kind: ConfigMap +metadata: + name: red + namespace: overlay-namespace +`) +} + +func TestReplacementTransformerWithConfigMapGenerator(t *testing.T) { + th := kusttest_test.MakeEnhancedHarness(t) + defer th.Reset() + + th.WriteK(".", ` +configMapGenerator: +- name: blue +- name: red +replacements: +- source: + kind: ConfigMap + name: blue + fieldPath: metadata.name + targets: + - select: + name: red + fieldPaths: + - data.blue-name + options: + create: true +`) + + m := th.Run(".", th.MakeDefaultOptions()) + th.AssertActualEqualsExpected(m, ` +apiVersion: v1 +kind: ConfigMap +metadata: + name: blue-6ct58987ht +--- +apiVersion: v1 +data: + blue-name: blue +kind: ConfigMap +metadata: + name: red-dc6gc5btkc `) } From 91dc6d2a0fa906e82f7d6d41a86c60ec4f3b7772 Mon Sep 17 00:00:00 2001 From: Rob Ferguson Date: Fri, 9 Jul 2021 12:45:47 -0500 Subject: [PATCH 4/4] add additional replacement transformer test with todos for failures --- api/krusty/replacementtransformer_test.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/api/krusty/replacementtransformer_test.go b/api/krusty/replacementtransformer_test.go index c125a518d..15c088818 100644 --- a/api/krusty/replacementtransformer_test.go +++ b/api/krusty/replacementtransformer_test.go @@ -344,7 +344,7 @@ spec: } // TODO: Address namePrefix in overlay not applying to replacement targets -// The name in the target deployment should end up being `prefix-source` instead of `source` +// The property `data.blue-name` should end up being `overlay-blue` instead of `blue` // https://github.com/kubernetes-sigs/kustomize/issues/4034 func TestReplacementTransformerWithNamePrefixOverlay(t *testing.T) { th := kusttest_test.MakeEnhancedHarness(t) @@ -391,6 +391,9 @@ metadata: `) } +// TODO: Address namespace in overlay not applying to replacement targets +// The property `data.blue-namespace` should end up being `overlay-namespace` instead of `base-namespace` +// https://github.com/kubernetes-sigs/kustomize/issues/4034 func TestReplacementTransformerWithNamespaceOverlay(t *testing.T) { th := kusttest_test.MakeEnhancedHarness(t) defer th.Reset() @@ -439,6 +442,9 @@ metadata: `) } +// TODO: Address configMapGenerator suffix not applying to replacement targets +// The property `data.blue-name` should end up being `blue-6ct58987ht` instead of `blue` +// https://github.com/kubernetes-sigs/kustomize/issues/4034 func TestReplacementTransformerWithConfigMapGenerator(t *testing.T) { th := kusttest_test.MakeEnhancedHarness(t) defer th.Reset()