From 9645f397ef7f07f28aa6d99752a4e569c2cc31eb Mon Sep 17 00:00:00 2001 From: Jingfang Liu Date: Wed, 18 Jul 2018 10:37:02 -0700 Subject: [PATCH 1/2] remove adding hash for configmap/secret read from resource yaml files --- pkg/app/application_test.go | 4 ++-- .../testdata/testcase-crds/expected.diff | 8 +++---- .../testdata/testcase-crds/expected.yaml | 4 ++-- pkg/resmap/configmap_test.go | 6 ++--- pkg/resmap/secret_test.go | 2 +- pkg/resource/generationbehavior.go | 3 ++- pkg/resource/resource.go | 8 ++++++- pkg/transformers/namehash.go | 22 ++++++++++--------- pkg/transformers/namehash_test.go | 6 ++--- 9 files changed, 36 insertions(+), 27 deletions(-) diff --git a/pkg/app/application_test.go b/pkg/app/application_test.go index cb925930a..39a8d9f9a 100644 --- a/pkg/app/application_test.go +++ b/pkg/app/application_test.go @@ -142,7 +142,7 @@ func TestResources1(t *testing.T) { "DB_USERNAME": "admin", "DB_PASSWORD": "somepw", }, - }), + }).SetBehavior(resource.BehaviorCreate), resource.NewResId(secret, "secret"): resource.NewResourceFromMap( map[string]interface{}{ "apiVersion": "v1", @@ -163,7 +163,7 @@ func TestResources1(t *testing.T) { "DB_USERNAME": base64.StdEncoding.EncodeToString([]byte("admin")), "DB_PASSWORD": base64.StdEncoding.EncodeToString([]byte("somepw")), }, - }), + }).SetBehavior(resource.BehaviorCreate), resource.NewResId(ns, "ns1"): resource.NewResourceFromMap( map[string]interface{}{ "apiVersion": "v1", diff --git a/pkg/commands/testdata/testcase-crds/expected.diff b/pkg/commands/testdata/testcase-crds/expected.diff index d9b86c274..ed2cf5559 100644 --- a/pkg/commands/testdata/testcase-crds/expected.diff +++ b/pkg/commands/testdata/testcase-crds/expected.diff @@ -12,8 +12,8 @@ diff -u -N /tmp/noop/jingfang.example.com_v1beta1_MyKind_mykind.yaml /tmp/transf - name: bee + name: test-bee secretRef: -- name: crdsecret-m5ht5thcb4 -+ name: test-crdsecret-m48btmkck5 +- name: crdsecret ++ name: test-crdsecret diff -u -N /tmp/noop/v1beta1_Bee_bee.yaml /tmp/transformed/v1beta1_Bee_bee.yaml --- /tmp/noop/v1beta1_Bee_bee.yaml YYYY-MM-DD HH:MM:SS +++ /tmp/transformed/v1beta1_Bee_bee.yaml YYYY-MM-DD HH:MM:SS @@ -32,5 +32,5 @@ diff -u -N /tmp/noop/v1_Secret_crdsecret.yaml /tmp/transformed/v1_Secret_crdsecr PATH: YmJiYmJiYmIK kind: Secret metadata: -- name: crdsecret-m5ht5thcb4 -+ name: test-crdsecret-m48btmkck5 +- name: crdsecret ++ name: test-crdsecret diff --git a/pkg/commands/testdata/testcase-crds/expected.yaml b/pkg/commands/testdata/testcase-crds/expected.yaml index 57d48cc85..3485e6556 100644 --- a/pkg/commands/testdata/testcase-crds/expected.yaml +++ b/pkg/commands/testdata/testcase-crds/expected.yaml @@ -3,7 +3,7 @@ data: PATH: YmJiYmJiYmIK kind: Secret metadata: - name: test-crdsecret-m48btmkck5 + name: test-crdsecret --- apiVersion: v1beta1 kind: Bee @@ -20,4 +20,4 @@ spec: beeRef: name: test-bee secretRef: - name: test-crdsecret-m48btmkck5 + name: test-crdsecret diff --git a/pkg/resmap/configmap_test.go b/pkg/resmap/configmap_test.go index 535caac72..6e574409c 100644 --- a/pkg/resmap/configmap_test.go +++ b/pkg/resmap/configmap_test.go @@ -64,7 +64,7 @@ func TestNewFromConfigMaps(t *testing.T) { "DB_USERNAME": "admin", "DB_PASSWORD": "somepw", }, - }), + }).SetBehavior(resource.BehaviorCreate), }, }, { @@ -92,7 +92,7 @@ func TestNewFromConfigMaps(t *testing.T) { BAR=baz `, }, - }), + }).SetBehavior(resource.BehaviorCreate), }, }, { @@ -118,7 +118,7 @@ BAR=baz "a": "x", "b": "y", }, - }), + }).SetBehavior(resource.BehaviorCreate), }, }, // TODO: add testcase for data coming from multiple sources like diff --git a/pkg/resmap/secret_test.go b/pkg/resmap/secret_test.go index f9ad38296..38322a291 100644 --- a/pkg/resmap/secret_test.go +++ b/pkg/resmap/secret_test.go @@ -60,7 +60,7 @@ func TestNewResMapFromSecretArgs(t *testing.T) { "DB_USERNAME": base64.StdEncoding.EncodeToString([]byte("admin")), "DB_PASSWORD": base64.StdEncoding.EncodeToString([]byte("somepw")), }, - }), + }).SetBehavior(resource.BehaviorCreate), } if !reflect.DeepEqual(actual, expected) { t.Fatalf("%#v\ndoesn't match expected:\n%#v", actual, expected) diff --git a/pkg/resource/generationbehavior.go b/pkg/resource/generationbehavior.go index 943537a51..993cde82c 100644 --- a/pkg/resource/generationbehavior.go +++ b/pkg/resource/generationbehavior.go @@ -54,6 +54,7 @@ func NewGenerationBehavior(s string) GenerationBehavior { case "create": return BehaviorCreate default: - return BehaviorUnspecified + //return BehaviorUnspecified + return BehaviorCreate } } diff --git a/pkg/resource/resource.go b/pkg/resource/resource.go index cdd8ec622..389fb6658 100644 --- a/pkg/resource/resource.go +++ b/pkg/resource/resource.go @@ -62,8 +62,14 @@ func (r *Resource) Behavior() GenerationBehavior { } // SetBehavior changes the resource to the new behavior -func (r *Resource) SetBehavior(b GenerationBehavior) { +func (r *Resource) SetBehavior(b GenerationBehavior) *Resource { r.b = b + return r +} + +// IsGenerated checks if the resource is generated from a generator +func (r *Resource) IsGenerated() bool { + return r.b != BehaviorUnspecified } // Id returns the ResId for the resource. diff --git a/pkg/transformers/namehash.go b/pkg/transformers/namehash.go index 732ebae14..584b83ef9 100644 --- a/pkg/transformers/namehash.go +++ b/pkg/transformers/namehash.go @@ -41,17 +41,19 @@ func NewNameHashTransformer() Transformer { // Transform appends hash to configmaps and secrets. func (o *nameHashTransformer) Transform(m resmap.ResMap) error { for id, res := range m { - switch { - case selectByGVK(id.Gvk(), &schema.GroupVersionKind{Version: "v1", Kind: "ConfigMap"}): - err := appendHashForConfigMap(res) - if err != nil { - return err - } + if res.IsGenerated() { + switch { + case selectByGVK(id.Gvk(), &schema.GroupVersionKind{Version: "v1", Kind: "ConfigMap"}): + err := appendHashForConfigMap(res) + if err != nil { + return err + } - case selectByGVK(id.Gvk(), &schema.GroupVersionKind{Version: "v1", Kind: "Secret"}): - err := appendHashForSecret(res) - if err != nil { - return err + case selectByGVK(id.Gvk(), &schema.GroupVersionKind{Version: "v1", Kind: "Secret"}): + err := appendHashForSecret(res) + if err != nil { + return err + } } } } diff --git a/pkg/transformers/namehash_test.go b/pkg/transformers/namehash_test.go index 706aaac44..087869c32 100644 --- a/pkg/transformers/namehash_test.go +++ b/pkg/transformers/namehash_test.go @@ -83,7 +83,7 @@ func TestNameHashTransformer(t *testing.T) { "metadata": map[string]interface{}{ "name": "secret1", }, - }), + }).SetBehavior(resource.BehaviorCreate), } expected := resmap.ResMap{ @@ -92,7 +92,7 @@ func TestNameHashTransformer(t *testing.T) { "apiVersion": "v1", "kind": "ConfigMap", "metadata": map[string]interface{}{ - "name": "cm1-m462kdfb68", + "name": "cm1", }, }), resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap( @@ -144,7 +144,7 @@ func TestNameHashTransformer(t *testing.T) { "metadata": map[string]interface{}{ "name": "secret1-7kc45hd5f7", }, - }), + }).SetBehavior(resource.BehaviorCreate), } tran := NewNameHashTransformer() From 08bc8637c8219c0b144c7a3124916764acc625b4 Mon Sep 17 00:00:00 2001 From: Jingfang Liu Date: Wed, 18 Jul 2018 10:59:38 -0700 Subject: [PATCH 2/2] set the default behavior for SecretGenerator and ConfigMapGenerator as create --- pkg/resmap/configmap.go | 3 +++ pkg/resmap/secret.go | 3 +++ pkg/resource/generationbehavior.go | 3 +-- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/pkg/resmap/configmap.go b/pkg/resmap/configmap.go index f95d475b7..3954d4d6a 100644 --- a/pkg/resmap/configmap.go +++ b/pkg/resmap/configmap.go @@ -33,6 +33,9 @@ func newResourceFromConfigMap(l loader.Loader, cmArgs types.ConfigMapArgs) (*res if err != nil { return nil, err } + if cmArgs.Behavior == "" { + cmArgs.Behavior = "create" + } return resource.NewResourceWithBehavior(cm, resource.NewGenerationBehavior(cmArgs.Behavior)) } diff --git a/pkg/resmap/secret.go b/pkg/resmap/secret.go index aa64234e7..d693d7b12 100644 --- a/pkg/resmap/secret.go +++ b/pkg/resmap/secret.go @@ -34,6 +34,9 @@ func newResourceFromSecretGenerator(p string, sArgs types.SecretArgs) (*resource if err != nil { return nil, errors.Wrap(err, "makeSecret") } + if sArgs.Behavior == "" { + sArgs.Behavior = "create" + } return resource.NewResourceWithBehavior( s, resource.NewGenerationBehavior(sArgs.Behavior)) } diff --git a/pkg/resource/generationbehavior.go b/pkg/resource/generationbehavior.go index 993cde82c..943537a51 100644 --- a/pkg/resource/generationbehavior.go +++ b/pkg/resource/generationbehavior.go @@ -54,7 +54,6 @@ func NewGenerationBehavior(s string) GenerationBehavior { case "create": return BehaviorCreate default: - //return BehaviorUnspecified - return BehaviorCreate + return BehaviorUnspecified } }