From ccd255f323f888aac4a2f7e55a10a7715395aa9f Mon Sep 17 00:00:00 2001 From: jregan Date: Sat, 9 Jun 2018 08:04:03 -0700 Subject: [PATCH] Reduce unstruct notation noise in Resource construction. --- pkg/app/application_test.go | 173 +++-- pkg/resmap/configmap_test.go | 71 +- pkg/resmap/resmap.go | 4 +- pkg/resmap/resmap_test.go | 139 ++-- pkg/resmap/secret_test.go | 27 +- pkg/resource/resource.go | 14 +- pkg/resource/resource_test.go | 2 +- pkg/transformers/labelsandannotations_test.go | 455 +++++-------- pkg/transformers/namehash_test.go | 189 +++--- pkg/transformers/namereference_test.go | 245 ++++--- pkg/transformers/namespace_test.go | 63 +- pkg/transformers/overlay_test.go | 615 ++++++++---------- pkg/transformers/prefixname_test.go | 57 +- 13 files changed, 908 insertions(+), 1146 deletions(-) diff --git a/pkg/app/application_test.go b/pkg/app/application_test.go index 6ad41b36d..c03841771 100644 --- a/pkg/app/application_test.go +++ b/pkg/app/application_test.go @@ -27,7 +27,6 @@ import ( "github.com/kubernetes-sigs/kustomize/pkg/resmap" "github.com/kubernetes-sigs/kustomize/pkg/resource" corev1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime/schema" ) @@ -88,99 +87,91 @@ var ns = schema.GroupVersionKind{Version: "v1", Kind: "Namespace"} func TestResources(t *testing.T) { expected := resmap.ResMap{ - resource.NewResId(deploy, "dply1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "apps/v1", - "kind": "Deployment", - "metadata": map[string]interface{}{ - "name": "foo-dply1", - "namespace": "ns1", - "labels": map[string]interface{}{ + resource.NewResId(deploy, "dply1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": map[string]interface{}{ + "name": "foo-dply1", + "namespace": "ns1", + "labels": map[string]interface{}{ + "app": "nginx", + }, + "annotations": map[string]interface{}{ + "note": "This is a test annotation", + }, + }, + "spec": map[string]interface{}{ + "selector": map[string]interface{}{ + "matchLabels": map[string]interface{}{ "app": "nginx", }, - "annotations": map[string]interface{}{ - "note": "This is a test annotation", - }, }, - "spec": map[string]interface{}{ - "selector": map[string]interface{}{ - "matchLabels": map[string]interface{}{ + "template": map[string]interface{}{ + "metadata": map[string]interface{}{ + "annotations": map[string]interface{}{ + "note": "This is a test annotation", + }, + "labels": map[string]interface{}{ "app": "nginx", }, }, - "template": map[string]interface{}{ - "metadata": map[string]interface{}{ - "annotations": map[string]interface{}{ - "note": "This is a test annotation", - }, - "labels": map[string]interface{}{ - "app": "nginx", - }, - }, - }, }, }, }), - resource.NewResId(cmap, "literalConfigMap"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "ConfigMap", - "metadata": map[string]interface{}{ - "name": "foo-literalConfigMap-mc92bgcbh5", - "namespace": "ns1", - "labels": map[string]interface{}{ - "app": "nginx", - }, - "annotations": map[string]interface{}{ - "note": "This is a test annotation", - }, - "creationTimestamp": nil, + resource.NewResId(cmap, "literalConfigMap"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": map[string]interface{}{ + "name": "foo-literalConfigMap-mc92bgcbh5", + "namespace": "ns1", + "labels": map[string]interface{}{ + "app": "nginx", }, - "data": map[string]interface{}{ - "DB_USERNAME": "admin", - "DB_PASSWORD": "somepw", + "annotations": map[string]interface{}{ + "note": "This is a test annotation", }, + "creationTimestamp": nil, + }, + "data": map[string]interface{}{ + "DB_USERNAME": "admin", + "DB_PASSWORD": "somepw", }, }), - resource.NewResId(secret, "secret"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "Secret", - "metadata": map[string]interface{}{ - "name": "foo-secret-877fcfhgt5", - "namespace": "ns1", - "labels": map[string]interface{}{ - "app": "nginx", - }, - "annotations": map[string]interface{}{ - "note": "This is a test annotation", - }, - "creationTimestamp": nil, + resource.NewResId(secret, "secret"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "Secret", + "metadata": map[string]interface{}{ + "name": "foo-secret-877fcfhgt5", + "namespace": "ns1", + "labels": map[string]interface{}{ + "app": "nginx", }, - "type": string(corev1.SecretTypeOpaque), - "data": map[string]interface{}{ - "DB_USERNAME": base64.StdEncoding.EncodeToString([]byte("admin")), - "DB_PASSWORD": base64.StdEncoding.EncodeToString([]byte("somepw")), + "annotations": map[string]interface{}{ + "note": "This is a test annotation", }, + "creationTimestamp": nil, + }, + "type": string(corev1.SecretTypeOpaque), + "data": map[string]interface{}{ + "DB_USERNAME": base64.StdEncoding.EncodeToString([]byte("admin")), + "DB_PASSWORD": base64.StdEncoding.EncodeToString([]byte("somepw")), }, }), - resource.NewResId(ns, "ns1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "Namespace", - "metadata": map[string]interface{}{ - "name": "foo-ns1", - "namespace": "ns1", - "labels": map[string]interface{}{ - "app": "nginx", - }, - "annotations": map[string]interface{}{ - "note": "This is a test annotation", - }, + resource.NewResId(ns, "ns1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "Namespace", + "metadata": map[string]interface{}{ + "name": "foo-ns1", + "namespace": "ns1", + "labels": map[string]interface{}{ + "app": "nginx", + }, + "annotations": map[string]interface{}{ + "note": "This is a test annotation", }, }, }), @@ -203,24 +194,20 @@ func TestResources(t *testing.T) { func TestRawResources(t *testing.T) { expected := resmap.ResMap{ - resource.NewResId(deploy, "dply1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "apps/v1", - "kind": "Deployment", - "metadata": map[string]interface{}{ - "name": "dply1", - }, + resource.NewResId(deploy, "dply1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": map[string]interface{}{ + "name": "dply1", }, }), - resource.NewResId(ns, "ns1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "Namespace", - "metadata": map[string]interface{}{ - "name": "ns1", - }, + resource.NewResId(ns, "ns1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "Namespace", + "metadata": map[string]interface{}{ + "name": "ns1", }, }), } diff --git a/pkg/resmap/configmap_test.go b/pkg/resmap/configmap_test.go index e5e0aef3a..535caac72 100644 --- a/pkg/resmap/configmap_test.go +++ b/pkg/resmap/configmap_test.go @@ -23,7 +23,6 @@ import ( "github.com/kubernetes-sigs/kustomize/pkg/internal/loadertest" "github.com/kubernetes-sigs/kustomize/pkg/resource" "github.com/kubernetes-sigs/kustomize/pkg/types" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime/schema" ) @@ -53,19 +52,17 @@ func TestNewFromConfigMaps(t *testing.T) { filepath: "/home/seans/project/app.env", content: "DB_USERNAME=admin\nDB_PASSWORD=somepw", expected: ResMap{ - resource.NewResId(cmap, "envConfigMap"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "ConfigMap", - "metadata": map[string]interface{}{ - "name": "envConfigMap", - "creationTimestamp": nil, - }, - "data": map[string]interface{}{ - "DB_USERNAME": "admin", - "DB_PASSWORD": "somepw", - }, + resource.NewResId(cmap, "envConfigMap"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": map[string]interface{}{ + "name": "envConfigMap", + "creationTimestamp": nil, + }, + "data": map[string]interface{}{ + "DB_USERNAME": "admin", + "DB_PASSWORD": "somepw", }, }), }, @@ -82,20 +79,18 @@ func TestNewFromConfigMaps(t *testing.T) { filepath: "/home/seans/project/app-init.ini", content: "FOO=bar\nBAR=baz\n", expected: ResMap{ - resource.NewResId(cmap, "fileConfigMap"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "ConfigMap", - "metadata": map[string]interface{}{ - "name": "fileConfigMap", - "creationTimestamp": nil, - }, - "data": map[string]interface{}{ - "app-init.ini": `FOO=bar + resource.NewResId(cmap, "fileConfigMap"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": map[string]interface{}{ + "name": "fileConfigMap", + "creationTimestamp": nil, + }, + "data": map[string]interface{}{ + "app-init.ini": `FOO=bar BAR=baz `, - }, }, }), }, @@ -111,19 +106,17 @@ BAR=baz }, }, expected: ResMap{ - resource.NewResId(cmap, "literalConfigMap"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "ConfigMap", - "metadata": map[string]interface{}{ - "name": "literalConfigMap", - "creationTimestamp": nil, - }, - "data": map[string]interface{}{ - "a": "x", - "b": "y", - }, + resource.NewResId(cmap, "literalConfigMap"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": map[string]interface{}{ + "name": "literalConfigMap", + "creationTimestamp": nil, + }, + "data": map[string]interface{}{ + "a": "x", + "b": "y", }, }), }, diff --git a/pkg/resmap/resmap.go b/pkg/resmap/resmap.go index b39efe40e..b1d9784f5 100644 --- a/pkg/resmap/resmap.go +++ b/pkg/resmap/resmap.go @@ -101,7 +101,7 @@ func (m ResMap) insert(newName string, obj *unstructured.Unstructured) error { return fmt.Errorf("The already exists in the map", oldName, gvk) } obj.SetName(newName) - m[id] = resource.NewBehaviorlessResource(obj) + m[id] = resource.NewResourceFromUnstruct(*obj) return nil } @@ -183,7 +183,7 @@ func newResourceSliceFromBytes(in []byte) ([]*resource.Resource, error) { if err != nil { break } - result = append(result, resource.NewBehaviorlessResource(&out)) + result = append(result, resource.NewResourceFromUnstruct(out)) } if err != io.EOF { return nil, err diff --git a/pkg/resmap/resmap_test.go b/pkg/resmap/resmap_test.go index bd2741d46..4d7041df7 100644 --- a/pkg/resmap/resmap_test.go +++ b/pkg/resmap/resmap_test.go @@ -23,7 +23,6 @@ import ( "github.com/kubernetes-sigs/kustomize/pkg/internal/loadertest" "github.com/kubernetes-sigs/kustomize/pkg/resource" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime/schema" ) @@ -42,24 +41,20 @@ metadata: name: cm2 `) input := ResMap{ - resource.NewResId(cmap, "cm1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "ConfigMap", - "metadata": map[string]interface{}{ - "name": "cm1", - }, + resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": map[string]interface{}{ + "name": "cm1", }, }), - resource.NewResId(cmap, "cm2"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "ConfigMap", - "metadata": map[string]interface{}{ - "name": "cm2", - }, + resource.NewResId(cmap, "cm2"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": map[string]interface{}{ + "name": "cm2", }, }), } @@ -89,24 +84,20 @@ metadata: if ferr := l.AddFile("/home/seans/project/deployment.yaml", []byte(resourceStr)); ferr != nil { t.Fatalf("Error adding fake file: %v\n", ferr) } - expected := ResMap{resource.NewResId(deploy, "dply1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ + expected := ResMap{resource.NewResId(deploy, "dply1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": map[string]interface{}{ + "name": "dply1", + }, + }), + resource.NewResId(deploy, "dply2"): resource.NewResourceFromMap( + map[string]interface{}{ "apiVersion": "apps/v1", "kind": "Deployment", "metadata": map[string]interface{}{ - "name": "dply1", - }, - }, - }), - resource.NewResId(deploy, "dply2"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "apps/v1", - "kind": "Deployment", - "metadata": map[string]interface{}{ - "name": "dply2", - }, + "name": "dply2", }, }), } @@ -133,24 +124,20 @@ metadata: name: cm2 `) expected := ResMap{ - resource.NewResId(cmap, "cm1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "ConfigMap", - "metadata": map[string]interface{}{ - "name": "cm1", - }, + resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": map[string]interface{}{ + "name": "cm1", }, }), - resource.NewResId(cmap, "cm2"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "ConfigMap", - "metadata": map[string]interface{}{ - "name": "cm2", - }, + resource.NewResId(cmap, "cm2"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": map[string]interface{}{ + "name": "cm2", }, }), } @@ -166,49 +153,41 @@ metadata: func TestMerge(t *testing.T) { input1 := ResMap{ - resource.NewResId(deploy, "deploy1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "apps/v1", - "kind": "Deployment", - "metadata": map[string]interface{}{ - "name": "foo-deploy1", - }, + resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": map[string]interface{}{ + "name": "foo-deploy1", }, }), } input2 := ResMap{ - resource.NewResId(statefulset, "stateful1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "apps/v1", - "kind": "StatefulSet", - "metadata": map[string]interface{}{ - "name": "bar-stateful", - }, + resource.NewResId(statefulset, "stateful1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "apps/v1", + "kind": "StatefulSet", + "metadata": map[string]interface{}{ + "name": "bar-stateful", }, }), } input := []ResMap{input1, input2} expected := ResMap{ - resource.NewResId(deploy, "deploy1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "apps/v1", - "kind": "Deployment", - "metadata": map[string]interface{}{ - "name": "foo-deploy1", - }, + resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": map[string]interface{}{ + "name": "foo-deploy1", }, }), - resource.NewResId(statefulset, "stateful1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "apps/v1", - "kind": "StatefulSet", - "metadata": map[string]interface{}{ - "name": "bar-stateful", - }, + resource.NewResId(statefulset, "stateful1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "apps/v1", + "kind": "StatefulSet", + "metadata": map[string]interface{}{ + "name": "bar-stateful", }, }), } diff --git a/pkg/resmap/secret_test.go b/pkg/resmap/secret_test.go index d36037e17..f9ad38296 100644 --- a/pkg/resmap/secret_test.go +++ b/pkg/resmap/secret_test.go @@ -24,7 +24,6 @@ import ( "github.com/kubernetes-sigs/kustomize/pkg/resource" "github.com/kubernetes-sigs/kustomize/pkg/types" corev1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime/schema" ) @@ -48,20 +47,18 @@ func TestNewResMapFromSecretArgs(t *testing.T) { } expected := ResMap{ - resource.NewResId(secret, "apple"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "Secret", - "metadata": map[string]interface{}{ - "name": "apple", - "creationTimestamp": nil, - }, - "type": string(corev1.SecretTypeOpaque), - "data": map[string]interface{}{ - "DB_USERNAME": base64.StdEncoding.EncodeToString([]byte("admin")), - "DB_PASSWORD": base64.StdEncoding.EncodeToString([]byte("somepw")), - }, + resource.NewResId(secret, "apple"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "Secret", + "metadata": map[string]interface{}{ + "name": "apple", + "creationTimestamp": nil, + }, + "type": string(corev1.SecretTypeOpaque), + "data": map[string]interface{}{ + "DB_USERNAME": base64.StdEncoding.EncodeToString([]byte("admin")), + "DB_PASSWORD": base64.StdEncoding.EncodeToString([]byte("somepw")), }, }), } diff --git a/pkg/resource/resource.go b/pkg/resource/resource.go index e10b1432f..ddb1a389b 100644 --- a/pkg/resource/resource.go +++ b/pkg/resource/resource.go @@ -46,16 +46,14 @@ func NewResourceWithBehavior(obj runtime.Object, b GenerationBehavior) (*Resourc return &Resource{Unstructured: u, b: b}, nil } -// NewBehaviorlessResource returns a new instance of Resource. -func NewBehaviorlessResource(u *unstructured.Unstructured) *Resource { - return &Resource{Unstructured: *u, b: BehaviorUnspecified} +// NewResourceFromMap returns a new instance of Resource. +func NewResourceFromMap(m map[string]interface{}) *Resource { + return NewResourceFromUnstruct(unstructured.Unstructured{Object: m}) } -// NewResource returns a new instance of Resource. -func NewResource(m map[string]interface{}) *Resource { - return &Resource{ - Unstructured: unstructured.Unstructured{Object: m}, - b: BehaviorUnspecified} +// NewResourceFromUnstruct returns a new instance of Resource. +func NewResourceFromUnstruct(u unstructured.Unstructured) *Resource { + return &Resource{Unstructured: u, b: BehaviorUnspecified} } // Behavior returns the behavior for the resource. diff --git a/pkg/resource/resource_test.go b/pkg/resource/resource_test.go index a76bee20a..04d6be554 100644 --- a/pkg/resource/resource_test.go +++ b/pkg/resource/resource_test.go @@ -21,7 +21,7 @@ import ( ) func TestGetFieldValue(t *testing.T) { - res := NewResource(map[string]interface{}{ + res := NewResourceFromMap(map[string]interface{}{ "Kind": "Service", "metadata": map[string]interface{}{ "labels": map[string]string{ diff --git a/pkg/transformers/labelsandannotations_test.go b/pkg/transformers/labelsandannotations_test.go index 43b676d97..f0609d3f9 100644 --- a/pkg/transformers/labelsandannotations_test.go +++ b/pkg/transformers/labelsandannotations_test.go @@ -22,7 +22,6 @@ import ( "github.com/kubernetes-sigs/kustomize/pkg/resmap" "github.com/kubernetes-sigs/kustomize/pkg/resource" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime/schema" ) @@ -35,141 +34,129 @@ var foo = schema.GroupVersionKind{Group: "example.com", Version: "v1", Kind: "Fo func TestLabelsRun(t *testing.T) { m := resmap.ResMap{ - resource.NewResId(cmap, "cm1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "ConfigMap", - "metadata": map[string]interface{}{ - "name": "cm1", - }, + resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": map[string]interface{}{ + "name": "cm1", }, }), - resource.NewResId(deploy, "deploy1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "group": "apps", - "apiVersion": "v1", - "kind": "Deployment", - "metadata": map[string]interface{}{ - "name": "deploy1", - }, - "spec": map[string]interface{}{ - "template": map[string]interface{}{ - "metadata": map[string]interface{}{ - "labels": map[string]interface{}{ - "old-label": "old-value", - }, + resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap( + map[string]interface{}{ + "group": "apps", + "apiVersion": "v1", + "kind": "Deployment", + "metadata": map[string]interface{}{ + "name": "deploy1", + }, + "spec": map[string]interface{}{ + "template": map[string]interface{}{ + "metadata": map[string]interface{}{ + "labels": map[string]interface{}{ + "old-label": "old-value", }, - "spec": map[string]interface{}{ - "containers": []interface{}{ - map[string]interface{}{ - "name": "nginx", - "image": "nginx:1.7.9", - }, + }, + "spec": map[string]interface{}{ + "containers": []interface{}{ + map[string]interface{}{ + "name": "nginx", + "image": "nginx:1.7.9", }, }, }, }, }, }), - resource.NewResId(service, "svc1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "Service", - "metadata": map[string]interface{}{ - "name": "svc1", - }, - "spec": map[string]interface{}{ - "ports": []interface{}{ - map[string]interface{}{ - "name": "port1", - "port": "12345", - }, + resource.NewResId(service, "svc1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "Service", + "metadata": map[string]interface{}{ + "name": "svc1", + }, + "spec": map[string]interface{}{ + "ports": []interface{}{ + map[string]interface{}{ + "name": "port1", + "port": "12345", }, }, }, }), } expected := resmap.ResMap{ - resource.NewResId(cmap, "cm1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "ConfigMap", - "metadata": map[string]interface{}{ - "name": "cm1", - "labels": map[string]interface{}{ - "label-key1": "label-value1", - "label-key2": "label-value2", - }, + resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": map[string]interface{}{ + "name": "cm1", + "labels": map[string]interface{}{ + "label-key1": "label-value1", + "label-key2": "label-value2", }, }, }), - resource.NewResId(deploy, "deploy1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "group": "apps", - "apiVersion": "v1", - "kind": "Deployment", - "metadata": map[string]interface{}{ - "name": "deploy1", - "labels": map[string]interface{}{ + resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap( + map[string]interface{}{ + "group": "apps", + "apiVersion": "v1", + "kind": "Deployment", + "metadata": map[string]interface{}{ + "name": "deploy1", + "labels": map[string]interface{}{ + "label-key1": "label-value1", + "label-key2": "label-value2", + }, + }, + "spec": map[string]interface{}{ + "selector": map[string]interface{}{ + "matchLabels": map[string]interface{}{ "label-key1": "label-value1", "label-key2": "label-value2", }, }, - "spec": map[string]interface{}{ - "selector": map[string]interface{}{ - "matchLabels": map[string]interface{}{ + "template": map[string]interface{}{ + "metadata": map[string]interface{}{ + "labels": map[string]interface{}{ + "old-label": "old-value", "label-key1": "label-value1", "label-key2": "label-value2", }, }, - "template": map[string]interface{}{ - "metadata": map[string]interface{}{ - "labels": map[string]interface{}{ - "old-label": "old-value", - "label-key1": "label-value1", - "label-key2": "label-value2", - }, - }, - "spec": map[string]interface{}{ - "containers": []interface{}{ - map[string]interface{}{ - "name": "nginx", - "image": "nginx:1.7.9", - }, + "spec": map[string]interface{}{ + "containers": []interface{}{ + map[string]interface{}{ + "name": "nginx", + "image": "nginx:1.7.9", }, }, }, }, }, }), - resource.NewResId(service, "svc1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "Service", - "metadata": map[string]interface{}{ - "name": "svc1", - "labels": map[string]interface{}{ - "label-key1": "label-value1", - "label-key2": "label-value2", + resource.NewResId(service, "svc1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "Service", + "metadata": map[string]interface{}{ + "name": "svc1", + "labels": map[string]interface{}{ + "label-key1": "label-value1", + "label-key2": "label-value2", + }, + }, + "spec": map[string]interface{}{ + "ports": []interface{}{ + map[string]interface{}{ + "name": "port1", + "port": "12345", }, }, - "spec": map[string]interface{}{ - "ports": []interface{}{ - map[string]interface{}{ - "name": "port1", - "port": "12345", - }, - }, - "selector": map[string]interface{}{ - "label-key1": "label-value1", - "label-key2": "label-value2", - }, + "selector": map[string]interface{}{ + "label-key1": "label-value1", + "label-key2": "label-value2", }, }, }), @@ -189,212 +176,122 @@ func TestLabelsRun(t *testing.T) { } } -func makeAnnotatededConfigMap() *unstructured.Unstructured { - return &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "ConfigMap", - "metadata": map[string]interface{}{ - "name": "cm1", - "annotations": map[string]interface{}{ - "anno-key1": "anno-value1", - "anno-key2": "anno-value2", - }, - }, - }, - } -} - -func makeAnnotatededDeployment() *unstructured.Unstructured { - return &unstructured.Unstructured{ - Object: map[string]interface{}{ - "group": "apps", - "apiVersion": "v1", - "kind": "Deployment", - "metadata": map[string]interface{}{ - "name": "deploy1", - "annotations": map[string]interface{}{ - "anno-key1": "anno-value1", - "anno-key2": "anno-value2", - }, - }, - "spec": map[string]interface{}{ - "template": map[string]interface{}{ - "metadata": map[string]interface{}{ - "annotations": map[string]interface{}{ - "anno-key1": "anno-value1", - "anno-key2": "anno-value2", - }, - "labels": map[string]interface{}{ - "old-label": "old-value", - }, - }, - "spec": map[string]interface{}{ - "containers": []interface{}{ - map[string]interface{}{ - "name": "nginx", - "image": "nginx:1.7.9", - }, - }, - }, - }, - }, - }, - } -} - -func makeAnnotatededService() *unstructured.Unstructured { - return &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "Service", - "metadata": map[string]interface{}{ - "name": "svc1", - "annotations": map[string]interface{}{ - "anno-key1": "anno-value1", - "anno-key2": "anno-value2", - }, - }, - "spec": map[string]interface{}{ - "ports": []interface{}{ - map[string]interface{}{ - "name": "port1", - "port": "12345", - }, - }, - }, - }, - } -} - func TestAnnotationsRun(t *testing.T) { m := resmap.ResMap{ - resource.NewResId(cmap, "cm1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "ConfigMap", - "metadata": map[string]interface{}{ - "name": "cm1", - }, + resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": map[string]interface{}{ + "name": "cm1", }, }), - resource.NewResId(deploy, "deploy1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "group": "apps", - "apiVersion": "v1", - "kind": "Deployment", - "metadata": map[string]interface{}{ - "name": "deploy1", - }, - "spec": map[string]interface{}{ - "template": map[string]interface{}{ - "metadata": map[string]interface{}{ - "labels": map[string]interface{}{ - "old-label": "old-value", - }, + resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap( + map[string]interface{}{ + "group": "apps", + "apiVersion": "v1", + "kind": "Deployment", + "metadata": map[string]interface{}{ + "name": "deploy1", + }, + "spec": map[string]interface{}{ + "template": map[string]interface{}{ + "metadata": map[string]interface{}{ + "labels": map[string]interface{}{ + "old-label": "old-value", }, - "spec": map[string]interface{}{ - "containers": []interface{}{ - map[string]interface{}{ - "name": "nginx", - "image": "nginx:1.7.9", - }, + }, + "spec": map[string]interface{}{ + "containers": []interface{}{ + map[string]interface{}{ + "name": "nginx", + "image": "nginx:1.7.9", }, }, }, }, }, }), - resource.NewResId(service, "svc1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "Service", - "metadata": map[string]interface{}{ - "name": "svc1", - }, - "spec": map[string]interface{}{ - "ports": []interface{}{ - map[string]interface{}{ - "name": "port1", - "port": "12345", - }, + resource.NewResId(service, "svc1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "Service", + "metadata": map[string]interface{}{ + "name": "svc1", + }, + "spec": map[string]interface{}{ + "ports": []interface{}{ + map[string]interface{}{ + "name": "port1", + "port": "12345", }, }, }, }), } expected := resmap.ResMap{ - resource.NewResId(cmap, "cm1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "ConfigMap", - "metadata": map[string]interface{}{ - "name": "cm1", - "annotations": map[string]interface{}{ - "anno-key1": "anno-value1", - "anno-key2": "anno-value2", - }, + resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": map[string]interface{}{ + "name": "cm1", + "annotations": map[string]interface{}{ + "anno-key1": "anno-value1", + "anno-key2": "anno-value2", }, }, }), - resource.NewResId(deploy, "deploy1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "group": "apps", - "apiVersion": "v1", - "kind": "Deployment", - "metadata": map[string]interface{}{ - "name": "deploy1", - "annotations": map[string]interface{}{ - "anno-key1": "anno-value1", - "anno-key2": "anno-value2", - }, + resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap( + map[string]interface{}{ + "group": "apps", + "apiVersion": "v1", + "kind": "Deployment", + "metadata": map[string]interface{}{ + "name": "deploy1", + "annotations": map[string]interface{}{ + "anno-key1": "anno-value1", + "anno-key2": "anno-value2", }, - "spec": map[string]interface{}{ - "template": map[string]interface{}{ - "metadata": map[string]interface{}{ - "annotations": map[string]interface{}{ - "anno-key1": "anno-value1", - "anno-key2": "anno-value2", - }, - "labels": map[string]interface{}{ - "old-label": "old-value", - }, + }, + "spec": map[string]interface{}{ + "template": map[string]interface{}{ + "metadata": map[string]interface{}{ + "annotations": map[string]interface{}{ + "anno-key1": "anno-value1", + "anno-key2": "anno-value2", }, - "spec": map[string]interface{}{ - "containers": []interface{}{ - map[string]interface{}{ - "name": "nginx", - "image": "nginx:1.7.9", - }, + "labels": map[string]interface{}{ + "old-label": "old-value", + }, + }, + "spec": map[string]interface{}{ + "containers": []interface{}{ + map[string]interface{}{ + "name": "nginx", + "image": "nginx:1.7.9", }, }, }, }, }, }), - resource.NewResId(service, "svc1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "Service", - "metadata": map[string]interface{}{ - "name": "svc1", - "annotations": map[string]interface{}{ - "anno-key1": "anno-value1", - "anno-key2": "anno-value2", - }, + resource.NewResId(service, "svc1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "Service", + "metadata": map[string]interface{}{ + "name": "svc1", + "annotations": map[string]interface{}{ + "anno-key1": "anno-value1", + "anno-key2": "anno-value2", }, - "spec": map[string]interface{}{ - "ports": []interface{}{ - map[string]interface{}{ - "name": "port1", - "port": "12345", - }, + }, + "spec": map[string]interface{}{ + "ports": []interface{}{ + map[string]interface{}{ + "name": "port1", + "port": "12345", }, }, }, diff --git a/pkg/transformers/namehash_test.go b/pkg/transformers/namehash_test.go index c9112d367..706aaac44 100644 --- a/pkg/transformers/namehash_test.go +++ b/pkg/transformers/namehash_test.go @@ -22,144 +22,127 @@ import ( "github.com/kubernetes-sigs/kustomize/pkg/resmap" "github.com/kubernetes-sigs/kustomize/pkg/resource" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" ) func TestNameHashTransformer(t *testing.T) { objs := resmap.ResMap{ - resource.NewResId(cmap, "cm1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "ConfigMap", - "metadata": map[string]interface{}{ - "name": "cm1", - }, + resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": map[string]interface{}{ + "name": "cm1", }, }), - resource.NewResId(deploy, "deploy1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "group": "apps", - "apiVersion": "v1", - "kind": "Deployment", - "metadata": map[string]interface{}{ - "name": "deploy1", - }, - "spec": map[string]interface{}{ - "template": map[string]interface{}{ - "metadata": map[string]interface{}{ - "labels": map[string]interface{}{ - "old-label": "old-value", - }, + resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap( + map[string]interface{}{ + "group": "apps", + "apiVersion": "v1", + "kind": "Deployment", + "metadata": map[string]interface{}{ + "name": "deploy1", + }, + "spec": map[string]interface{}{ + "template": map[string]interface{}{ + "metadata": map[string]interface{}{ + "labels": map[string]interface{}{ + "old-label": "old-value", }, - "spec": map[string]interface{}{ - "containers": []interface{}{ - map[string]interface{}{ - "name": "nginx", - "image": "nginx:1.7.9", - }, + }, + "spec": map[string]interface{}{ + "containers": []interface{}{ + map[string]interface{}{ + "name": "nginx", + "image": "nginx:1.7.9", }, }, }, }, }, }), - resource.NewResId(service, "svc1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "Service", - "metadata": map[string]interface{}{ - "name": "svc1", - }, - "spec": map[string]interface{}{ - "ports": []interface{}{ - map[string]interface{}{ - "name": "port1", - "port": "12345", - }, + resource.NewResId(service, "svc1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "Service", + "metadata": map[string]interface{}{ + "name": "svc1", + }, + "spec": map[string]interface{}{ + "ports": []interface{}{ + map[string]interface{}{ + "name": "port1", + "port": "12345", }, }, }, }), - resource.NewResId(secret, "secret1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "Secret", - "metadata": map[string]interface{}{ - "name": "secret1", - }, + resource.NewResId(secret, "secret1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "Secret", + "metadata": map[string]interface{}{ + "name": "secret1", }, }), } expected := resmap.ResMap{ - resource.NewResId(cmap, "cm1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "ConfigMap", - "metadata": map[string]interface{}{ - "name": "cm1-m462kdfb68", - }, + resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": map[string]interface{}{ + "name": "cm1-m462kdfb68", }, }), - resource.NewResId(deploy, "deploy1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "group": "apps", - "apiVersion": "v1", - "kind": "Deployment", - "metadata": map[string]interface{}{ - "name": "deploy1", - }, - "spec": map[string]interface{}{ - "template": map[string]interface{}{ - "metadata": map[string]interface{}{ - "labels": map[string]interface{}{ - "old-label": "old-value", - }, + resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap( + map[string]interface{}{ + "group": "apps", + "apiVersion": "v1", + "kind": "Deployment", + "metadata": map[string]interface{}{ + "name": "deploy1", + }, + "spec": map[string]interface{}{ + "template": map[string]interface{}{ + "metadata": map[string]interface{}{ + "labels": map[string]interface{}{ + "old-label": "old-value", }, - "spec": map[string]interface{}{ - "containers": []interface{}{ - map[string]interface{}{ - "name": "nginx", - "image": "nginx:1.7.9", - }, + }, + "spec": map[string]interface{}{ + "containers": []interface{}{ + map[string]interface{}{ + "name": "nginx", + "image": "nginx:1.7.9", }, }, }, }, }, }), - resource.NewResId(service, "svc1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "Service", - "metadata": map[string]interface{}{ - "name": "svc1", - }, - "spec": map[string]interface{}{ - "ports": []interface{}{ - map[string]interface{}{ - "name": "port1", - "port": "12345", - }, + resource.NewResId(service, "svc1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "Service", + "metadata": map[string]interface{}{ + "name": "svc1", + }, + "spec": map[string]interface{}{ + "ports": []interface{}{ + map[string]interface{}{ + "name": "port1", + "port": "12345", }, }, }, }), - resource.NewResId(secret, "secret1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "Secret", - "metadata": map[string]interface{}{ - "name": "secret1-7kc45hd5f7", - }, + resource.NewResId(secret, "secret1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "Secret", + "metadata": map[string]interface{}{ + "name": "secret1-7kc45hd5f7", }, }), } diff --git a/pkg/transformers/namereference_test.go b/pkg/transformers/namereference_test.go index 41a181f7e..f7ce0edca 100644 --- a/pkg/transformers/namereference_test.go +++ b/pkg/transformers/namereference_test.go @@ -22,90 +22,83 @@ import ( "github.com/kubernetes-sigs/kustomize/pkg/resmap" "github.com/kubernetes-sigs/kustomize/pkg/resource" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" ) func TestNameReferenceRun(t *testing.T) { m := resmap.ResMap{ - resource.NewResId(cmap, "cm1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "ConfigMap", - "metadata": map[string]interface{}{ - "name": "someprefix-cm1-somehash", - }, + resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": map[string]interface{}{ + "name": "someprefix-cm1-somehash", }, }), - resource.NewResId(secret, "secret1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "Secret", - "metadata": map[string]interface{}{ - "name": "someprefix-secret1-somehash", - }, + resource.NewResId(secret, "secret1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "Secret", + "metadata": map[string]interface{}{ + "name": "someprefix-secret1-somehash", }, }), - resource.NewResId(deploy, "deploy1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "group": "apps", - "apiVersion": "v1", - "kind": "Deployment", - "metadata": map[string]interface{}{ - "name": "deploy1", - }, - "spec": map[string]interface{}{ - "template": map[string]interface{}{ - "spec": map[string]interface{}{ - "containers": []interface{}{ - map[string]interface{}{ - "name": "nginx", - "image": "nginx:1.7.9", - "env": []interface{}{ - map[string]interface{}{ - "name": "CM_FOO", - "valueFrom": map[string]interface{}{ - "configMapKeyRef": map[string]interface{}{ - "name": "cm1", - "key": "somekey", - }, - }, - }, - map[string]interface{}{ - "name": "SECRET_FOO", - "valueFrom": map[string]interface{}{ - "secretKeyRef": map[string]interface{}{ - "name": "secret1", - "key": "somekey", - }, - }, - }, - }, - "envFrom": []interface{}{ - map[string]interface{}{ - "configMapRef": map[string]interface{}{ + resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap( + map[string]interface{}{ + "group": "apps", + "apiVersion": "v1", + "kind": "Deployment", + "metadata": map[string]interface{}{ + "name": "deploy1", + }, + "spec": map[string]interface{}{ + "template": map[string]interface{}{ + "spec": map[string]interface{}{ + "containers": []interface{}{ + map[string]interface{}{ + "name": "nginx", + "image": "nginx:1.7.9", + "env": []interface{}{ + map[string]interface{}{ + "name": "CM_FOO", + "valueFrom": map[string]interface{}{ + "configMapKeyRef": map[string]interface{}{ "name": "cm1", "key": "somekey", }, }, - map[string]interface{}{ - "secretRef": map[string]interface{}{ + }, + map[string]interface{}{ + "name": "SECRET_FOO", + "valueFrom": map[string]interface{}{ + "secretKeyRef": map[string]interface{}{ "name": "secret1", "key": "somekey", }, }, }, }, + "envFrom": []interface{}{ + map[string]interface{}{ + "configMapRef": map[string]interface{}{ + "name": "cm1", + "key": "somekey", + }, + }, + map[string]interface{}{ + "secretRef": map[string]interface{}{ + "name": "secret1", + "key": "somekey", + }, + }, + }, }, - "volumes": map[string]interface{}{ - "configMap": map[string]interface{}{ - "name": "cm1", - }, - "secret": map[string]interface{}{ - "secretName": "secret1", - }, + }, + "volumes": map[string]interface{}{ + "configMap": map[string]interface{}{ + "name": "cm1", + }, + "secret": map[string]interface{}{ + "secretName": "secret1", }, }, }, @@ -115,85 +108,79 @@ func TestNameReferenceRun(t *testing.T) { } expected := resmap.ResMap{ - resource.NewResId(cmap, "cm1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "ConfigMap", - "metadata": map[string]interface{}{ - "name": "someprefix-cm1-somehash", - }, + resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": map[string]interface{}{ + "name": "someprefix-cm1-somehash", }, }), - resource.NewResId(secret, "secret1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "Secret", - "metadata": map[string]interface{}{ - "name": "someprefix-secret1-somehash", - }, + resource.NewResId(secret, "secret1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "Secret", + "metadata": map[string]interface{}{ + "name": "someprefix-secret1-somehash", }, }), - resource.NewResId(deploy, "deploy1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "group": "apps", - "apiVersion": "v1", - "kind": "Deployment", - "metadata": map[string]interface{}{ - "name": "deploy1", - }, - "spec": map[string]interface{}{ - "template": map[string]interface{}{ - "spec": map[string]interface{}{ - "containers": []interface{}{ - map[string]interface{}{ - "name": "nginx", - "image": "nginx:1.7.9", - "env": []interface{}{ - map[string]interface{}{ - "name": "CM_FOO", - "valueFrom": map[string]interface{}{ - "configMapKeyRef": map[string]interface{}{ - "name": "someprefix-cm1-somehash", - "key": "somekey", - }, - }, - }, - map[string]interface{}{ - "name": "SECRET_FOO", - "valueFrom": map[string]interface{}{ - "secretKeyRef": map[string]interface{}{ - "name": "someprefix-secret1-somehash", - "key": "somekey", - }, - }, - }, - }, - "envFrom": []interface{}{ - map[string]interface{}{ - "configMapRef": map[string]interface{}{ + resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap( + map[string]interface{}{ + "group": "apps", + "apiVersion": "v1", + "kind": "Deployment", + "metadata": map[string]interface{}{ + "name": "deploy1", + }, + "spec": map[string]interface{}{ + "template": map[string]interface{}{ + "spec": map[string]interface{}{ + "containers": []interface{}{ + map[string]interface{}{ + "name": "nginx", + "image": "nginx:1.7.9", + "env": []interface{}{ + map[string]interface{}{ + "name": "CM_FOO", + "valueFrom": map[string]interface{}{ + "configMapKeyRef": map[string]interface{}{ "name": "someprefix-cm1-somehash", "key": "somekey", }, }, - map[string]interface{}{ - "secretRef": map[string]interface{}{ + }, + map[string]interface{}{ + "name": "SECRET_FOO", + "valueFrom": map[string]interface{}{ + "secretKeyRef": map[string]interface{}{ "name": "someprefix-secret1-somehash", "key": "somekey", }, }, }, }, + "envFrom": []interface{}{ + map[string]interface{}{ + "configMapRef": map[string]interface{}{ + "name": "someprefix-cm1-somehash", + "key": "somekey", + }, + }, + map[string]interface{}{ + "secretRef": map[string]interface{}{ + "name": "someprefix-secret1-somehash", + "key": "somekey", + }, + }, + }, }, - "volumes": map[string]interface{}{ - "configMap": map[string]interface{}{ - "name": "someprefix-cm1-somehash", - }, - "secret": map[string]interface{}{ - "secretName": "someprefix-secret1-somehash", - }, + }, + "volumes": map[string]interface{}{ + "configMap": map[string]interface{}{ + "name": "someprefix-cm1-somehash", + }, + "secret": map[string]interface{}{ + "secretName": "someprefix-secret1-somehash", }, }, }, diff --git a/pkg/transformers/namespace_test.go b/pkg/transformers/namespace_test.go index cb70474e3..7d429774f 100644 --- a/pkg/transformers/namespace_test.go +++ b/pkg/transformers/namespace_test.go @@ -22,54 +22,45 @@ import ( "github.com/kubernetes-sigs/kustomize/pkg/resmap" "github.com/kubernetes-sigs/kustomize/pkg/resource" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" ) func TestNamespaceRun(t *testing.T) { m := resmap.ResMap{ - resource.NewResId(cmap, "cm1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "ConfigMap", - "metadata": map[string]interface{}{ - "name": "cm1", - }, + resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": map[string]interface{}{ + "name": "cm1", }, }), - resource.NewResId(cmap, "cm2"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "ConfigMap", - "metadata": map[string]interface{}{ - "name": "cm2", - "namespace": "foo", - }, + resource.NewResId(cmap, "cm2"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": map[string]interface{}{ + "name": "cm2", + "namespace": "foo", }, }), } expected := resmap.ResMap{ - resource.NewResId(cmap, "cm1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "ConfigMap", - "metadata": map[string]interface{}{ - "name": "cm1", - "namespace": "test", - }, + resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": map[string]interface{}{ + "name": "cm1", + "namespace": "test", }, }), - resource.NewResId(cmap, "cm2"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "ConfigMap", - "metadata": map[string]interface{}{ - "name": "cm2", - "namespace": "test", - }, + resource.NewResId(cmap, "cm2"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": map[string]interface{}{ + "name": "cm2", + "namespace": "test", }, }), } diff --git a/pkg/transformers/overlay_test.go b/pkg/transformers/overlay_test.go index 13bd16d2d..7d71dad5a 100644 --- a/pkg/transformers/overlay_test.go +++ b/pkg/transformers/overlay_test.go @@ -23,42 +23,12 @@ import ( "github.com/kubernetes-sigs/kustomize/pkg/resmap" "github.com/kubernetes-sigs/kustomize/pkg/resource" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" ) func TestOverlayRun(t *testing.T) { base := resmap.ResMap{ - resource.NewResId(deploy, "deploy1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "apps/v1", - "kind": "Deployment", - "metadata": map[string]interface{}{ - "name": "deploy1", - }, - "spec": map[string]interface{}{ - "template": map[string]interface{}{ - "metadata": map[string]interface{}{ - "labels": map[string]interface{}{ - "old-label": "old-value", - }, - }, - "spec": map[string]interface{}{ - "containers": []interface{}{ - map[string]interface{}{ - "name": "nginx", - "image": "nginx", - }, - }, - }, - }, - }, - }, - }), - } - overlay := []*resource.Resource{ - resource.NewBehaviorlessResource(&unstructured.Unstructured{ - Object: map[string]interface{}{ + resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap( + map[string]interface{}{ "apiVersion": "apps/v1", "kind": "Deployment", "metadata": map[string]interface{}{ @@ -68,6 +38,67 @@ func TestOverlayRun(t *testing.T) { "template": map[string]interface{}{ "metadata": map[string]interface{}{ "labels": map[string]interface{}{ + "old-label": "old-value", + }, + }, + "spec": map[string]interface{}{ + "containers": []interface{}{ + map[string]interface{}{ + "name": "nginx", + "image": "nginx", + }, + }, + }, + }, + }, + }), + } + overlay := []*resource.Resource{ + resource.NewResourceFromMap(map[string]interface{}{ + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": map[string]interface{}{ + "name": "deploy1", + }, + "spec": map[string]interface{}{ + "template": map[string]interface{}{ + "metadata": map[string]interface{}{ + "labels": map[string]interface{}{ + "another-label": "foo", + }, + }, + "spec": map[string]interface{}{ + "containers": []interface{}{ + map[string]interface{}{ + "name": "nginx", + "image": "nginx:latest", + "env": []interface{}{ + map[string]interface{}{ + "name": "SOMEENV", + "value": "BAR", + }, + }, + }, + }, + }, + }, + }, + }, + ), + } + expected := resmap.ResMap{ + resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": map[string]interface{}{ + "name": "deploy1", + }, + "spec": map[string]interface{}{ + "template": map[string]interface{}{ + "metadata": map[string]interface{}{ + "labels": map[string]interface{}{ + "old-label": "old-value", "another-label": "foo", }, }, @@ -87,44 +118,6 @@ func TestOverlayRun(t *testing.T) { }, }, }, - }, - }, - ), - } - expected := resmap.ResMap{ - resource.NewResId(deploy, "deploy1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "apps/v1", - "kind": "Deployment", - "metadata": map[string]interface{}{ - "name": "deploy1", - }, - "spec": map[string]interface{}{ - "template": map[string]interface{}{ - "metadata": map[string]interface{}{ - "labels": map[string]interface{}{ - "old-label": "old-value", - "another-label": "foo", - }, - }, - "spec": map[string]interface{}{ - "containers": []interface{}{ - map[string]interface{}{ - "name": "nginx", - "image": "nginx:latest", - "env": []interface{}{ - map[string]interface{}{ - "name": "SOMEENV", - "value": "BAR", - }, - }, - }, - }, - }, - }, - }, - }, }), } lt, err := NewOverlayTransformer(overlay) @@ -143,22 +136,20 @@ func TestOverlayRun(t *testing.T) { func TestMultiplePatches(t *testing.T) { base := resmap.ResMap{ - resource.NewResId(deploy, "deploy1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "apps/v1", - "kind": "Deployment", - "metadata": map[string]interface{}{ - "name": "deploy1", - }, - "spec": map[string]interface{}{ - "template": map[string]interface{}{ - "spec": map[string]interface{}{ - "containers": []interface{}{ - map[string]interface{}{ - "name": "nginx", - "image": "nginx", - }, + resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": map[string]interface{}{ + "name": "deploy1", + }, + "spec": map[string]interface{}{ + "template": map[string]interface{}{ + "spec": map[string]interface{}{ + "containers": []interface{}{ + map[string]interface{}{ + "name": "nginx", + "image": "nginx", }, }, }, @@ -167,8 +158,65 @@ func TestMultiplePatches(t *testing.T) { }), } overlay := []*resource.Resource{ - resource.NewBehaviorlessResource(&unstructured.Unstructured{ - Object: map[string]interface{}{ + resource.NewResourceFromMap(map[string]interface{}{ + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": map[string]interface{}{ + "name": "deploy1", + }, + "spec": map[string]interface{}{ + "template": map[string]interface{}{ + "spec": map[string]interface{}{ + "containers": []interface{}{ + map[string]interface{}{ + "name": "nginx", + "image": "nginx:latest", + "env": []interface{}{ + map[string]interface{}{ + "name": "SOMEENV", + "value": "BAR", + }, + }, + }, + }, + }, + }, + }, + }, + ), + resource.NewResourceFromMap(map[string]interface{}{ + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": map[string]interface{}{ + "name": "deploy1", + }, + "spec": map[string]interface{}{ + "template": map[string]interface{}{ + "spec": map[string]interface{}{ + "containers": []interface{}{ + map[string]interface{}{ + "name": "nginx", + "env": []interface{}{ + map[string]interface{}{ + "name": "ANOTHERENV", + "value": "HELLO", + }, + }, + }, + map[string]interface{}{ + "name": "busybox", + "image": "busybox", + }, + }, + }, + }, + }, + }, + ), + } + expected := resmap.ResMap{ + resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap( + map[string]interface{}{ "apiVersion": "apps/v1", "kind": "Deployment", "metadata": map[string]interface{}{ @@ -181,38 +229,15 @@ func TestMultiplePatches(t *testing.T) { map[string]interface{}{ "name": "nginx", "image": "nginx:latest", - "env": []interface{}{ - map[string]interface{}{ - "name": "SOMEENV", - "value": "BAR", - }, - }, - }, - }, - }, - }, - }, - }, - }, - ), - resource.NewBehaviorlessResource(&unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "apps/v1", - "kind": "Deployment", - "metadata": map[string]interface{}{ - "name": "deploy1", - }, - "spec": map[string]interface{}{ - "template": map[string]interface{}{ - "spec": map[string]interface{}{ - "containers": []interface{}{ - map[string]interface{}{ - "name": "nginx", "env": []interface{}{ map[string]interface{}{ "name": "ANOTHERENV", "value": "HELLO", }, + map[string]interface{}{ + "name": "SOMEENV", + "value": "BAR", + }, }, }, map[string]interface{}{ @@ -223,46 +248,6 @@ func TestMultiplePatches(t *testing.T) { }, }, }, - }, - }, - ), - } - expected := resmap.ResMap{ - resource.NewResId(deploy, "deploy1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "apps/v1", - "kind": "Deployment", - "metadata": map[string]interface{}{ - "name": "deploy1", - }, - "spec": map[string]interface{}{ - "template": map[string]interface{}{ - "spec": map[string]interface{}{ - "containers": []interface{}{ - map[string]interface{}{ - "name": "nginx", - "image": "nginx:latest", - "env": []interface{}{ - map[string]interface{}{ - "name": "ANOTHERENV", - "value": "HELLO", - }, - map[string]interface{}{ - "name": "SOMEENV", - "value": "BAR", - }, - }, - }, - map[string]interface{}{ - "name": "busybox", - "image": "busybox", - }, - }, - }, - }, - }, - }, }), } lt, err := NewOverlayTransformer(overlay) @@ -281,32 +266,8 @@ func TestMultiplePatches(t *testing.T) { func TestMultiplePatchesWithConflict(t *testing.T) { base := resmap.ResMap{ - resource.NewResId(deploy, "deploy1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "apps/v1", - "kind": "Deployment", - "metadata": map[string]interface{}{ - "name": "deploy1", - }, - "spec": map[string]interface{}{ - "template": map[string]interface{}{ - "spec": map[string]interface{}{ - "containers": []interface{}{ - map[string]interface{}{ - "name": "nginx", - "image": "nginx", - }, - }, - }, - }, - }, - }, - }), - } - overlay := []*resource.Resource{ - resource.NewBehaviorlessResource(&unstructured.Unstructured{ - Object: map[string]interface{}{ + resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap( + map[string]interface{}{ "apiVersion": "apps/v1", "kind": "Deployment", "metadata": map[string]interface{}{ @@ -318,12 +279,32 @@ func TestMultiplePatchesWithConflict(t *testing.T) { "containers": []interface{}{ map[string]interface{}{ "name": "nginx", - "image": "nginx:latest", - "env": []interface{}{ - map[string]interface{}{ - "name": "SOMEENV", - "value": "BAR", - }, + "image": "nginx", + }, + }, + }, + }, + }, + }), + } + overlay := []*resource.Resource{ + resource.NewResourceFromMap(map[string]interface{}{ + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": map[string]interface{}{ + "name": "deploy1", + }, + "spec": map[string]interface{}{ + "template": map[string]interface{}{ + "spec": map[string]interface{}{ + "containers": []interface{}{ + map[string]interface{}{ + "name": "nginx", + "image": "nginx:latest", + "env": []interface{}{ + map[string]interface{}{ + "name": "SOMEENV", + "value": "BAR", }, }, }, @@ -333,21 +314,19 @@ func TestMultiplePatchesWithConflict(t *testing.T) { }, }, ), - resource.NewBehaviorlessResource(&unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "apps/v1", - "kind": "Deployment", - "metadata": map[string]interface{}{ - "name": "deploy1", - }, - "spec": map[string]interface{}{ - "template": map[string]interface{}{ - "spec": map[string]interface{}{ - "containers": []interface{}{ - map[string]interface{}{ - "name": "nginx", - "image": "nginx:1.7.9", - }, + resource.NewResourceFromMap(map[string]interface{}{ + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": map[string]interface{}{ + "name": "deploy1", + }, + "spec": map[string]interface{}{ + "template": map[string]interface{}{ + "spec": map[string]interface{}{ + "containers": []interface{}{ + map[string]interface{}{ + "name": "nginx", + "image": "nginx:1.7.9", }, }, }, @@ -372,26 +351,8 @@ func TestMultiplePatchesWithConflict(t *testing.T) { func TestNoSchemaOverlayRun(t *testing.T) { base := resmap.ResMap{ - resource.NewResId(foo, "my-foo"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "example.com/v1", - "kind": "Foo", - "metadata": map[string]interface{}{ - "name": "my-foo", - }, - "spec": map[string]interface{}{ - "bar": map[string]interface{}{ - "A": "X", - "B": "Y", - }, - }, - }, - }), - } - overlay := []*resource.Resource{ - resource.NewBehaviorlessResource(&unstructured.Unstructured{ - Object: map[string]interface{}{ + resource.NewResId(foo, "my-foo"): resource.NewResourceFromMap( + map[string]interface{}{ "apiVersion": "example.com/v1", "kind": "Foo", "metadata": map[string]interface{}{ @@ -399,28 +360,40 @@ func TestNoSchemaOverlayRun(t *testing.T) { }, "spec": map[string]interface{}{ "bar": map[string]interface{}{ - "B": nil, - "C": "Z", + "A": "X", + "B": "Y", }, }, + }), + } + overlay := []*resource.Resource{ + resource.NewResourceFromMap(map[string]interface{}{ + "apiVersion": "example.com/v1", + "kind": "Foo", + "metadata": map[string]interface{}{ + "name": "my-foo", + }, + "spec": map[string]interface{}{ + "bar": map[string]interface{}{ + "B": nil, + "C": "Z", + }, }, }, ), } expected := resmap.ResMap{ - resource.NewResId(foo, "my-foo"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "example.com/v1", - "kind": "Foo", - "metadata": map[string]interface{}{ - "name": "my-foo", - }, - "spec": map[string]interface{}{ - "bar": map[string]interface{}{ - "A": "X", - "C": "Z", - }, + resource.NewResId(foo, "my-foo"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "example.com/v1", + "kind": "Foo", + "metadata": map[string]interface{}{ + "name": "my-foo", + }, + "spec": map[string]interface{}{ + "bar": map[string]interface{}{ + "A": "X", + "C": "Z", }, }, }), @@ -441,78 +414,70 @@ func TestNoSchemaOverlayRun(t *testing.T) { func TestNoSchemaMultiplePatches(t *testing.T) { base := resmap.ResMap{ - resource.NewResId(foo, "my-foo"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "example.com/v1", - "kind": "Foo", - "metadata": map[string]interface{}{ - "name": "my-foo", - }, - "spec": map[string]interface{}{ - "bar": map[string]interface{}{ - "A": "X", - "B": "Y", - }, + resource.NewResId(foo, "my-foo"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "example.com/v1", + "kind": "Foo", + "metadata": map[string]interface{}{ + "name": "my-foo", + }, + "spec": map[string]interface{}{ + "bar": map[string]interface{}{ + "A": "X", + "B": "Y", }, }, }), } overlay := []*resource.Resource{ - resource.NewBehaviorlessResource(&unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "example.com/v1", - "kind": "Foo", - "metadata": map[string]interface{}{ - "name": "my-foo", - }, - "spec": map[string]interface{}{ - "bar": map[string]interface{}{ - "B": nil, - "C": "Z", - }, + resource.NewResourceFromMap(map[string]interface{}{ + "apiVersion": "example.com/v1", + "kind": "Foo", + "metadata": map[string]interface{}{ + "name": "my-foo", + }, + "spec": map[string]interface{}{ + "bar": map[string]interface{}{ + "B": nil, + "C": "Z", }, }, }, ), - resource.NewBehaviorlessResource(&unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "example.com/v1", - "kind": "Foo", - "metadata": map[string]interface{}{ - "name": "my-foo", + resource.NewResourceFromMap(map[string]interface{}{ + "apiVersion": "example.com/v1", + "kind": "Foo", + "metadata": map[string]interface{}{ + "name": "my-foo", + }, + "spec": map[string]interface{}{ + "bar": map[string]interface{}{ + "C": "Z", + "D": "W", }, - "spec": map[string]interface{}{ - "bar": map[string]interface{}{ - "C": "Z", - "D": "W", - }, - "baz": map[string]interface{}{ - "hello": "world", - }, + "baz": map[string]interface{}{ + "hello": "world", }, }, }, ), } expected := resmap.ResMap{ - resource.NewResId(foo, "my-foo"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "example.com/v1", - "kind": "Foo", - "metadata": map[string]interface{}{ - "name": "my-foo", + resource.NewResId(foo, "my-foo"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "example.com/v1", + "kind": "Foo", + "metadata": map[string]interface{}{ + "name": "my-foo", + }, + "spec": map[string]interface{}{ + "bar": map[string]interface{}{ + "A": "X", + "C": "Z", + "D": "W", }, - "spec": map[string]interface{}{ - "bar": map[string]interface{}{ - "A": "X", - "C": "Z", - "D": "W", - }, - "baz": map[string]interface{}{ - "hello": "world", - }, + "baz": map[string]interface{}{ + "hello": "world", }, }, }), @@ -533,50 +498,44 @@ func TestNoSchemaMultiplePatches(t *testing.T) { func TestNoSchemaMultiplePatchesWithConflict(t *testing.T) { base := resmap.ResMap{ - resource.NewResId(foo, "my-foo"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "example.com/v1", - "kind": "Foo", - "metadata": map[string]interface{}{ - "name": "my-foo", - }, - "spec": map[string]interface{}{ - "bar": map[string]interface{}{ - "A": "X", - "B": "Y", - }, + resource.NewResId(foo, "my-foo"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "example.com/v1", + "kind": "Foo", + "metadata": map[string]interface{}{ + "name": "my-foo", + }, + "spec": map[string]interface{}{ + "bar": map[string]interface{}{ + "A": "X", + "B": "Y", }, }, }), } overlay := []*resource.Resource{ - resource.NewBehaviorlessResource(&unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "example.com/v1", - "kind": "Foo", - "metadata": map[string]interface{}{ - "name": "my-foo", - }, - "spec": map[string]interface{}{ - "bar": map[string]interface{}{ - "B": nil, - "C": "Z", - }, + resource.NewResourceFromMap(map[string]interface{}{ + "apiVersion": "example.com/v1", + "kind": "Foo", + "metadata": map[string]interface{}{ + "name": "my-foo", + }, + "spec": map[string]interface{}{ + "bar": map[string]interface{}{ + "B": nil, + "C": "Z", }, }, }), - resource.NewBehaviorlessResource(&unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "example.com/v1", - "kind": "Foo", - "metadata": map[string]interface{}{ - "name": "my-foo", - }, - "spec": map[string]interface{}{ - "bar": map[string]interface{}{ - "C": "NOT_Z", - }, + resource.NewResourceFromMap(map[string]interface{}{ + "apiVersion": "example.com/v1", + "kind": "Foo", + "metadata": map[string]interface{}{ + "name": "my-foo", + }, + "spec": map[string]interface{}{ + "bar": map[string]interface{}{ + "C": "NOT_Z", }, }, }), diff --git a/pkg/transformers/prefixname_test.go b/pkg/transformers/prefixname_test.go index 09eaffa23..a9f3fa175 100644 --- a/pkg/transformers/prefixname_test.go +++ b/pkg/transformers/prefixname_test.go @@ -22,51 +22,42 @@ import ( "github.com/kubernetes-sigs/kustomize/pkg/resmap" "github.com/kubernetes-sigs/kustomize/pkg/resource" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" ) func TestPrefixNameRun(t *testing.T) { m := resmap.ResMap{ - resource.NewResId(cmap, "cm1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "ConfigMap", - "metadata": map[string]interface{}{ - "name": "cm1", - }, + resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": map[string]interface{}{ + "name": "cm1", }, }), - resource.NewResId(cmap, "cm2"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "ConfigMap", - "metadata": map[string]interface{}{ - "name": "cm2", - }, + resource.NewResId(cmap, "cm2"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": map[string]interface{}{ + "name": "cm2", }, }), } expected := resmap.ResMap{ - resource.NewResId(cmap, "cm1"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "ConfigMap", - "metadata": map[string]interface{}{ - "name": "someprefix-cm1", - }, + resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": map[string]interface{}{ + "name": "someprefix-cm1", }, }), - resource.NewResId(cmap, "cm2"): resource.NewBehaviorlessResource( - &unstructured.Unstructured{ - Object: map[string]interface{}{ - "apiVersion": "v1", - "kind": "ConfigMap", - "metadata": map[string]interface{}{ - "name": "someprefix-cm2", - }, + resource.NewResId(cmap, "cm2"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": map[string]interface{}{ + "name": "someprefix-cm2", }, }), }