From e898c5221b27c4f650dd26d7ff91b27795a6cd91 Mon Sep 17 00:00:00 2001 From: Joost Cassee Date: Tue, 10 Sep 2019 23:57:15 +0200 Subject: [PATCH 1/2] Add test for name conflict with base reuse --- pkg/target/basereusenameprefix_test.go | 199 +++++++++++++++++++++++++ 1 file changed, 199 insertions(+) create mode 100644 pkg/target/basereusenameprefix_test.go diff --git a/pkg/target/basereusenameprefix_test.go b/pkg/target/basereusenameprefix_test.go new file mode 100644 index 000000000..61b53f2eb --- /dev/null +++ b/pkg/target/basereusenameprefix_test.go @@ -0,0 +1,199 @@ +// Copyright 2019 The Kubernetes Authors. +// SPDX-License-Identifier: Apache-2.0 + +package target_test + +import ( + "testing" + + "sigs.k8s.io/kustomize/v3/pkg/kusttest" +) + +// Here is a structure of a kustomization of two components, component1 +// and component2, that both use a shared postgres definition, which +// they would individually adjust. This test case checks that the name +// prefix does not cause a name reference conflict. +// +// root +// / \ +// component1/overlay component2/overlay +// | | +// component1/base component2/base +// \ / +// base +// +// This is the directory layout: +// +// ├── component1 +// │ ├── base +// │ │ └── kustomization.yaml +// │ └── overlay +// │ └── kustomization.yaml +// ├── component2 +// │ ├── base +// │ │ └── kustomization.yaml +// │ └── overlay +// │ └── kustomization.yaml +// ├── shared +// │ ├── kustomization.yaml +// │ └── resources.yaml +// ├── kustomization.yaml + +func TestBaseReuseNameConflict(t *testing.T) { + th := kusttest_test.NewKustTestHarness(t, "/app") + th.WriteK("/app/component1/base", ` +bases: + - ../../shared + +namePrefix: component1- +`) + th.WriteK("/app/component1/overlay", ` +bases: + - ../base + +namePrefix: overlay- +`) + + th.WriteK("/app/component2/base", ` +bases: + - ../../shared + +namePrefix: component2- +`) + th.WriteK("/app/component2/overlay", ` +bases: + - ../base + +namePrefix: overlay- +`) + + th.WriteK("/app/shared", ` +resources: + - resources.yaml +`) + th.WriteF("/app/shared/resources.yaml", ` +--- +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: postgres +spec: + resources: + requests: + storage: 1Gi + accessModes: + - ReadWriteOnce +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: postgres +spec: + selector: + matchLabels: {} + strategy: + type: Recreate + template: + spec: + containers: + - name: postgres + image: postgres + imagePullPolicy: IfNotPresent + volumeMounts: + - mountPath: /var/lib/postgresql + name: data + ports: + - name: postgres + containerPort: 5432 + volumes: + - name: data + persistentVolumeClaim: + claimName: postgres +`) + + th.WriteK("/app", ` +bases: + - component1/overlay + - component2/overlay +`) + + m, err := th.MakeKustTarget().MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + th.AssertActualEqualsExpected(m, ` +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: overlay-component1-postgres +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: overlay-component1-postgres +spec: + selector: + matchLabels: {} + strategy: + type: Recreate + template: + spec: + containers: + - image: postgres + imagePullPolicy: IfNotPresent + name: postgres + ports: + - containerPort: 5432 + name: postgres + volumeMounts: + - mountPath: /var/lib/postgresql + name: data + volumes: + - name: data + persistentVolumeClaim: + claimName: overlay-component1-postgres +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: overlay-component2-postgres +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: overlay-component2-postgres +spec: + selector: + matchLabels: {} + strategy: + type: Recreate + template: + spec: + containers: + - image: postgres + imagePullPolicy: IfNotPresent + name: postgres + ports: + - containerPort: 5432 + name: postgres + volumeMounts: + - mountPath: /var/lib/postgresql + name: data + volumes: + - name: data + persistentVolumeClaim: + claimName: overlay-component2-postgres +`) +} From e011f3be4f13232e1cd683f177bc20ff2e6d6da0 Mon Sep 17 00:00:00 2001 From: Jeff Regan Date: Fri, 13 Sep 2019 10:47:35 -0700 Subject: [PATCH 2/2] change "bases:" to "resources:" per https://github.com/monopole/kustomize/blob/master/docs/fields.md#bases no big deal --- pkg/target/basereusenameprefix_test.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/target/basereusenameprefix_test.go b/pkg/target/basereusenameprefix_test.go index 61b53f2eb..6b20662a7 100644 --- a/pkg/target/basereusenameprefix_test.go +++ b/pkg/target/basereusenameprefix_test.go @@ -42,26 +42,26 @@ import ( func TestBaseReuseNameConflict(t *testing.T) { th := kusttest_test.NewKustTestHarness(t, "/app") th.WriteK("/app/component1/base", ` -bases: +resources: - ../../shared namePrefix: component1- `) th.WriteK("/app/component1/overlay", ` -bases: +resources: - ../base namePrefix: overlay- `) th.WriteK("/app/component2/base", ` -bases: +resources: - ../../shared namePrefix: component2- `) th.WriteK("/app/component2/overlay", ` -bases: +resources: - ../base namePrefix: overlay- @@ -112,7 +112,7 @@ spec: `) th.WriteK("/app", ` -bases: +resources: - component1/overlay - component2/overlay `)