From 5851f96524176af40c8ae136df2b891021d232b4 Mon Sep 17 00:00:00 2001 From: Jingfang Liu Date: Fri, 20 Jul 2018 11:30:06 -0700 Subject: [PATCH 1/2] Add initContainers in imageTagTransformer --- pkg/transformers/imagetag.go | 22 ++++++++++++++++------ pkg/transformers/imagetag_test.go | 20 ++++++++++++-------- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/pkg/transformers/imagetag.go b/pkg/transformers/imagetag.go index fcea93a95..5764bfd43 100644 --- a/pkg/transformers/imagetag.go +++ b/pkg/transformers/imagetag.go @@ -55,15 +55,25 @@ func (pt *imageTagTransformer) Transform(resources resmap.ResMap) error { then loops though all images inside containers session, finds matched ones and update the tag name */ func (pt *imageTagTransformer) findAndReplaceTag(obj map[string]interface{}) error { - _, found := obj["containers"] - if found { - return pt.updateContainers(obj) + paths := []string{"containers", "initContainers"} + found := false + for _, path := range paths { + _, found = obj[path] + if found { + err := pt.updateContainers(obj, path) + if err != nil { + return err + } + } } - return pt.findContainers(obj) + if !found { + return pt.findContainers(obj) + } + return nil } -func (pt *imageTagTransformer) updateContainers(obj map[string]interface{}) error { - containers := obj["containers"].([]interface{}) +func (pt *imageTagTransformer) updateContainers(obj map[string]interface{}, path string) error { + containers := obj[path].([]interface{}) for i := range containers { container := containers[i].(map[string]interface{}) image, found := container["image"] diff --git a/pkg/transformers/imagetag_test.go b/pkg/transformers/imagetag_test.go index f9723839a..4f5960772 100644 --- a/pkg/transformers/imagetag_test.go +++ b/pkg/transformers/imagetag_test.go @@ -39,15 +39,17 @@ func TestImageTagTransformer(t *testing.T) { "spec": map[string]interface{}{ "template": map[string]interface{}{ "spec": map[string]interface{}{ + "initContainers": []interface{}{ + map[string]interface{}{ + "name": "nginx2", + "image": "my-nginx:1.8.0", + }, + }, "containers": []interface{}{ map[string]interface{}{ "name": "nginx", "image": "nginx:1.7.9", }, - map[string]interface{}{ - "name": "nginx2", - "image": "my-nginx:1.8.0", - }, }, }, }, @@ -101,15 +103,17 @@ func TestImageTagTransformer(t *testing.T) { "spec": map[string]interface{}{ "template": map[string]interface{}{ "spec": map[string]interface{}{ + "initContainers": []interface{}{ + map[string]interface{}{ + "name": "nginx2", + "image": "my-nginx:previous", + }, + }, "containers": []interface{}{ map[string]interface{}{ "name": "nginx", "image": "nginx:v2", }, - map[string]interface{}{ - "name": "nginx2", - "image": "my-nginx:previous", - }, }, }, }, From 59b98727ecba003becfc27c6505000471cf33493 Mon Sep 17 00:00:00 2001 From: Jingfang Liu Date: Fri, 20 Jul 2018 11:30:34 -0700 Subject: [PATCH 2/2] enable imageTagTransformer in application --- pkg/app/application.go | 11 ++++++++++- pkg/commands/testdata/testcase-simple/expected.diff | 2 +- pkg/commands/testdata/testcase-simple/expected.yaml | 2 +- .../instances/exampleinstance/kustomization.yaml | 3 +++ 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/pkg/app/application.go b/pkg/app/application.go index 3f69383d2..7e77f21cb 100644 --- a/pkg/app/application.go +++ b/pkg/app/application.go @@ -168,11 +168,20 @@ func (a *Application) loadCustomizedResMap() (resmap.ResMap, error) { if len(errs.Get()) > 0 { return nil, errs } + + var r []transformers.Transformer t, err := a.newTransformer(patches) if err != nil { return nil, err } - err = t.Transform(result) + r = append(r, t) + t, err = transformers.NewImageTagTransformer(a.kustomization.ImageTags) + if err != nil { + return nil, err + } + r = append(r, t) + + err = transformers.NewMultiTransformer(r).Transform(result) if err != nil { return nil, err } diff --git a/pkg/commands/testdata/testcase-simple/expected.diff b/pkg/commands/testdata/testcase-simple/expected.diff index e3dc73552..fcd7ce640 100644 --- a/pkg/commands/testdata/testcase-simple/expected.diff +++ b/pkg/commands/testdata/testcase-simple/expected.diff @@ -48,7 +48,7 @@ diff -u -N /tmp/noop/extensions_v1beta1_Deployment_mungebot.yaml /tmp/transforme - name: foo value: bar - image: nginx -+ image: nginx:1.7.9 ++ image: nginx:1.8.0 name: nginx ports: - containerPort: 80 diff --git a/pkg/commands/testdata/testcase-simple/expected.yaml b/pkg/commands/testdata/testcase-simple/expected.yaml index 8b21a680e..af067bfd0 100644 --- a/pkg/commands/testdata/testcase-simple/expected.yaml +++ b/pkg/commands/testdata/testcase-simple/expected.yaml @@ -111,7 +111,7 @@ spec: name: test-infra-app-tls-6hkmhf2224 - name: foo value: bar - image: nginx:1.7.9 + image: nginx:1.8.0 name: nginx ports: - containerPort: 80 diff --git a/pkg/examplelayout/simple/instances/exampleinstance/kustomization.yaml b/pkg/examplelayout/simple/instances/exampleinstance/kustomization.yaml index 3a184178d..4426f5a9c 100644 --- a/pkg/examplelayout/simple/instances/exampleinstance/kustomization.yaml +++ b/pkg/examplelayout/simple/instances/exampleinstance/kustomization.yaml @@ -21,3 +21,6 @@ secretGenerator: tls.crt: "cat secret/tls.cert" tls.key: "cat secret/tls.key" type: "kubernetes.io/tls" +imageTags: +- name: nginx + newTag: 1.8.0