diff --git a/pkg/kinflate/app/application.go b/pkg/kinflate/app/application.go index 083ae2fe8..99cdc1091 100644 --- a/pkg/kinflate/app/application.go +++ b/pkg/kinflate/app/application.go @@ -83,6 +83,16 @@ func (a *applicationImpl) Resources() (types.ResourceCollection, error) { } else { resources = append(resources, secrets...) } + res, err := resourceCollectionFromResources(resources) + if err != nil { + return nil, err + } + // Only append hash for generated configmaps and secrets. + nht := transformers.NewNameHashTransformer() + err = nht.Transform(types.KObject(res)) + if err != nil { + return nil, err + } ps, err := resource.NewFromPaths(a.loader, a.manifest.Patches) if err != nil { @@ -98,11 +108,7 @@ func (a *applicationImpl) Resources() (types.ResourceCollection, error) { return nil, errs } - allResources, err := resourceCollectionFromResources(resources) - if err != nil { - return nil, err - } - err = types.Merge(allResources, raw) + err = types.Merge(res, raw) if err != nil { return nil, err } @@ -111,11 +117,11 @@ func (a *applicationImpl) Resources() (types.ResourceCollection, error) { if err != nil { return nil, err } - err = t.Transform(types.KObject(allResources)) + err = t.Transform(types.KObject(res)) if err != nil { return nil, err } - return allResources, nil + return res, nil } // RawResources computes and returns the raw resources from the manifest. @@ -164,18 +170,14 @@ func (a *applicationImpl) subAppResources() (types.ResourceCollection, *interror } // getTransformer generates the following transformers: -// 1) append hash for configmaps ans secrets -// 2) apply overlay -// 3) name prefix -// 4) apply labels -// 5) apply annotations -// 6) update name reference +// 1) apply overlay +// 2) name prefix +// 3) apply labels +// 4) apply annotations +// 5) update name reference func (a *applicationImpl) getTransformer(patches types.ResourceCollection) (transformers.Transformer, error) { ts := []transformers.Transformer{} - nht := transformers.NewNameHashTransformer() - ts = append(ts, nht) - ot, err := transformers.NewOverlayTransformer(types.KObject(patches)) if err != nil { return nil, err diff --git a/pkg/kinflate/commands/testdata/testcase-single-overlay/expected.diff b/pkg/kinflate/commands/testdata/testcase-single-overlay/expected.diff index 9b5b81f27..c5715182d 100644 --- a/pkg/kinflate/commands/testdata/testcase-single-overlay/expected.diff +++ b/pkg/kinflate/commands/testdata/testcase-single-overlay/expected.diff @@ -26,7 +26,7 @@ diff -u -N /tmp/noop/apps_v1beta2_Deployment_nginx.yaml /tmp/transformed/apps_v1 org: example.com team: foo spec: -@@ -30,5 +33,6 @@ +@@ -30,8 +33,12 @@ - mountPath: /tmp/ps name: nginx-persistent-storage volumes: @@ -34,6 +34,37 @@ diff -u -N /tmp/noop/apps_v1beta2_Deployment_nginx.yaml /tmp/transformed/apps_v1 + - gcePersistentDisk: + pdName: nginx-persistent-storage name: nginx-persistent-storage + - configMap: ++ name: staging-configmap-in-overlay-h4hbb8fckf ++ name: configmap-in-overlay ++ - configMap: + name: team-foo-configmap-in-base-72t84tc949 + name: configmap-in-base +diff -u -N /tmp/noop/v1_ConfigMap_configmap-in-base.yaml /tmp/transformed/v1_ConfigMap_configmap-in-base.yaml +--- /tmp/noop/v1_ConfigMap_configmap-in-base.yaml YYYY-MM-DD HH:MM:SS ++++ /tmp/transformed/v1_ConfigMap_configmap-in-base.yaml YYYY-MM-DD HH:MM:SS +@@ -8,6 +8,7 @@ + creationTimestamp: null + labels: + app: mynginx ++ env: staging + org: example.com + team: foo +- name: team-foo-configmap-in-base-72t84tc949 ++ name: staging-team-foo-configmap-in-base-72t84tc949 +diff -u -N /tmp/noop/v1_ConfigMap_configmap-in-overlay.yaml /tmp/transformed/v1_ConfigMap_configmap-in-overlay.yaml +--- /tmp/noop/v1_ConfigMap_configmap-in-overlay.yaml YYYY-MM-DD HH:MM:SS ++++ /tmp/transformed/v1_ConfigMap_configmap-in-overlay.yaml YYYY-MM-DD HH:MM:SS +@@ -0,0 +1,9 @@ ++apiVersion: v1 ++data: ++ hello: world ++kind: ConfigMap ++metadata: ++ creationTimestamp: null ++ labels: ++ env: staging ++ name: staging-configmap-in-overlay-h4hbb8fckf diff -u -N /tmp/noop/v1_Service_nginx.yaml /tmp/transformed/v1_Service_nginx.yaml --- /tmp/noop/v1_Service_nginx.yaml YYYY-MM-DD HH:MM:SS +++ /tmp/transformed/v1_Service_nginx.yaml YYYY-MM-DD HH:MM:SS diff --git a/pkg/kinflate/commands/testdata/testcase-single-overlay/expected.yaml b/pkg/kinflate/commands/testdata/testcase-single-overlay/expected.yaml index d32210902..145a05a66 100644 --- a/pkg/kinflate/commands/testdata/testcase-single-overlay/expected.yaml +++ b/pkg/kinflate/commands/testdata/testcase-single-overlay/expected.yaml @@ -1,4 +1,29 @@ apiVersion: v1 +data: + foo: bar +kind: ConfigMap +metadata: + annotations: + note: This is a test annotation + creationTimestamp: null + labels: + app: mynginx + env: staging + org: example.com + team: foo + name: staging-team-foo-configmap-in-base-72t84tc949 +--- +apiVersion: v1 +data: + hello: world +kind: ConfigMap +metadata: + creationTimestamp: null + labels: + env: staging + name: staging-configmap-in-overlay-h4hbb8fckf +--- +apiVersion: v1 kind: Service metadata: annotations: @@ -56,3 +81,9 @@ spec: - gcePersistentDisk: pdName: nginx-persistent-storage name: nginx-persistent-storage + - configMap: + name: staging-configmap-in-overlay-h4hbb8fckf + name: configmap-in-overlay + - configMap: + name: team-foo-configmap-in-base-72t84tc949 + name: configmap-in-base diff --git a/pkg/kinflate/commands/testdata/testcase-single-overlay/in/overlay/Kube-manifest.yaml b/pkg/kinflate/commands/testdata/testcase-single-overlay/in/overlay/Kube-manifest.yaml index fcaebd1c7..2ec6d0a6a 100644 --- a/pkg/kinflate/commands/testdata/testcase-single-overlay/in/overlay/Kube-manifest.yaml +++ b/pkg/kinflate/commands/testdata/testcase-single-overlay/in/overlay/Kube-manifest.yaml @@ -10,3 +10,7 @@ patches: - deployment.yaml packages: - ../package/ +configmaps: + - name: configmap-in-overlay + literals: + - hello=world diff --git a/pkg/kinflate/commands/testdata/testcase-single-overlay/in/overlay/deployment.yaml b/pkg/kinflate/commands/testdata/testcase-single-overlay/in/overlay/deployment.yaml index 71316f174..ae8bc1280 100644 --- a/pkg/kinflate/commands/testdata/testcase-single-overlay/in/overlay/deployment.yaml +++ b/pkg/kinflate/commands/testdata/testcase-single-overlay/in/overlay/deployment.yaml @@ -10,3 +10,6 @@ spec: emptyDir: null gcePersistentDisk: pdName: nginx-persistent-storage + - configMap: + name: configmap-in-overlay + name: configmap-in-overlay diff --git a/pkg/kinflate/commands/testdata/testcase-single-overlay/in/package/Kube-manifest.yaml b/pkg/kinflate/commands/testdata/testcase-single-overlay/in/package/Kube-manifest.yaml index 9f35bbacd..60ea5ec0a 100644 --- a/pkg/kinflate/commands/testdata/testcase-single-overlay/in/package/Kube-manifest.yaml +++ b/pkg/kinflate/commands/testdata/testcase-single-overlay/in/package/Kube-manifest.yaml @@ -13,3 +13,7 @@ objectAnnotations: resources: - deployment.yaml - service.yaml +configmaps: + - name: configmap-in-base + literals: + - foo=bar diff --git a/pkg/kinflate/commands/testdata/testcase-single-overlay/in/package/deployment.yaml b/pkg/kinflate/commands/testdata/testcase-single-overlay/in/package/deployment.yaml index c998249c3..9f7d3cbb6 100644 --- a/pkg/kinflate/commands/testdata/testcase-single-overlay/in/package/deployment.yaml +++ b/pkg/kinflate/commands/testdata/testcase-single-overlay/in/package/deployment.yaml @@ -18,4 +18,7 @@ spec: mountPath: /tmp/ps volumes: - name: nginx-persistent-storage - emptyDir: {} \ No newline at end of file + emptyDir: {} + - configMap: + name: configmap-in-base + name: configmap-in-base