mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-11 17:12:51 +00:00
Merge pull request #76 from monopole/reduceUnstructNoise
Reduce unstruct notation noise in Resource construction.
This commit is contained in:
@@ -27,7 +27,6 @@ import (
|
|||||||
"github.com/kubernetes-sigs/kustomize/pkg/resmap"
|
"github.com/kubernetes-sigs/kustomize/pkg/resmap"
|
||||||
"github.com/kubernetes-sigs/kustomize/pkg/resource"
|
"github.com/kubernetes-sigs/kustomize/pkg/resource"
|
||||||
corev1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -88,99 +87,91 @@ var ns = schema.GroupVersionKind{Version: "v1", Kind: "Namespace"}
|
|||||||
|
|
||||||
func TestResources(t *testing.T) {
|
func TestResources(t *testing.T) {
|
||||||
expected := resmap.ResMap{
|
expected := resmap.ResMap{
|
||||||
resource.NewResId(deploy, "dply1"): resource.NewBehaviorlessResource(
|
resource.NewResId(deploy, "dply1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "apps/v1",
|
||||||
"apiVersion": "apps/v1",
|
"kind": "Deployment",
|
||||||
"kind": "Deployment",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "foo-dply1",
|
||||||
"name": "foo-dply1",
|
"namespace": "ns1",
|
||||||
"namespace": "ns1",
|
"labels": map[string]interface{}{
|
||||||
"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",
|
"app": "nginx",
|
||||||
},
|
},
|
||||||
"annotations": map[string]interface{}{
|
|
||||||
"note": "This is a test annotation",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
"spec": map[string]interface{}{
|
"template": map[string]interface{}{
|
||||||
"selector": map[string]interface{}{
|
"metadata": map[string]interface{}{
|
||||||
"matchLabels": map[string]interface{}{
|
"annotations": map[string]interface{}{
|
||||||
|
"note": "This is a test annotation",
|
||||||
|
},
|
||||||
|
"labels": map[string]interface{}{
|
||||||
"app": "nginx",
|
"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(
|
resource.NewResId(cmap, "literalConfigMap"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "ConfigMap",
|
||||||
"kind": "ConfigMap",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "foo-literalConfigMap-mc92bgcbh5",
|
||||||
"name": "foo-literalConfigMap-mc92bgcbh5",
|
"namespace": "ns1",
|
||||||
"namespace": "ns1",
|
"labels": map[string]interface{}{
|
||||||
"labels": map[string]interface{}{
|
"app": "nginx",
|
||||||
"app": "nginx",
|
|
||||||
},
|
|
||||||
"annotations": map[string]interface{}{
|
|
||||||
"note": "This is a test annotation",
|
|
||||||
},
|
|
||||||
"creationTimestamp": nil,
|
|
||||||
},
|
},
|
||||||
"data": map[string]interface{}{
|
"annotations": map[string]interface{}{
|
||||||
"DB_USERNAME": "admin",
|
"note": "This is a test annotation",
|
||||||
"DB_PASSWORD": "somepw",
|
|
||||||
},
|
},
|
||||||
|
"creationTimestamp": nil,
|
||||||
|
},
|
||||||
|
"data": map[string]interface{}{
|
||||||
|
"DB_USERNAME": "admin",
|
||||||
|
"DB_PASSWORD": "somepw",
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
resource.NewResId(secret, "secret"): resource.NewBehaviorlessResource(
|
resource.NewResId(secret, "secret"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "Secret",
|
||||||
"kind": "Secret",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "foo-secret-877fcfhgt5",
|
||||||
"name": "foo-secret-877fcfhgt5",
|
"namespace": "ns1",
|
||||||
"namespace": "ns1",
|
"labels": map[string]interface{}{
|
||||||
"labels": map[string]interface{}{
|
"app": "nginx",
|
||||||
"app": "nginx",
|
|
||||||
},
|
|
||||||
"annotations": map[string]interface{}{
|
|
||||||
"note": "This is a test annotation",
|
|
||||||
},
|
|
||||||
"creationTimestamp": nil,
|
|
||||||
},
|
},
|
||||||
"type": string(corev1.SecretTypeOpaque),
|
"annotations": map[string]interface{}{
|
||||||
"data": map[string]interface{}{
|
"note": "This is a test annotation",
|
||||||
"DB_USERNAME": base64.StdEncoding.EncodeToString([]byte("admin")),
|
|
||||||
"DB_PASSWORD": base64.StdEncoding.EncodeToString([]byte("somepw")),
|
|
||||||
},
|
},
|
||||||
|
"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(
|
resource.NewResId(ns, "ns1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "Namespace",
|
||||||
"kind": "Namespace",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "foo-ns1",
|
||||||
"name": "foo-ns1",
|
"namespace": "ns1",
|
||||||
"namespace": "ns1",
|
"labels": map[string]interface{}{
|
||||||
"labels": map[string]interface{}{
|
"app": "nginx",
|
||||||
"app": "nginx",
|
},
|
||||||
},
|
"annotations": map[string]interface{}{
|
||||||
"annotations": map[string]interface{}{
|
"note": "This is a test annotation",
|
||||||
"note": "This is a test annotation",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
@@ -203,24 +194,20 @@ func TestResources(t *testing.T) {
|
|||||||
|
|
||||||
func TestRawResources(t *testing.T) {
|
func TestRawResources(t *testing.T) {
|
||||||
expected := resmap.ResMap{
|
expected := resmap.ResMap{
|
||||||
resource.NewResId(deploy, "dply1"): resource.NewBehaviorlessResource(
|
resource.NewResId(deploy, "dply1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "apps/v1",
|
||||||
"apiVersion": "apps/v1",
|
"kind": "Deployment",
|
||||||
"kind": "Deployment",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "dply1",
|
||||||
"name": "dply1",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
resource.NewResId(ns, "ns1"): resource.NewBehaviorlessResource(
|
resource.NewResId(ns, "ns1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "Namespace",
|
||||||
"kind": "Namespace",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "ns1",
|
||||||
"name": "ns1",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ import (
|
|||||||
"github.com/kubernetes-sigs/kustomize/pkg/internal/loadertest"
|
"github.com/kubernetes-sigs/kustomize/pkg/internal/loadertest"
|
||||||
"github.com/kubernetes-sigs/kustomize/pkg/resource"
|
"github.com/kubernetes-sigs/kustomize/pkg/resource"
|
||||||
"github.com/kubernetes-sigs/kustomize/pkg/types"
|
"github.com/kubernetes-sigs/kustomize/pkg/types"
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -53,19 +52,17 @@ func TestNewFromConfigMaps(t *testing.T) {
|
|||||||
filepath: "/home/seans/project/app.env",
|
filepath: "/home/seans/project/app.env",
|
||||||
content: "DB_USERNAME=admin\nDB_PASSWORD=somepw",
|
content: "DB_USERNAME=admin\nDB_PASSWORD=somepw",
|
||||||
expected: ResMap{
|
expected: ResMap{
|
||||||
resource.NewResId(cmap, "envConfigMap"): resource.NewBehaviorlessResource(
|
resource.NewResId(cmap, "envConfigMap"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "ConfigMap",
|
||||||
"kind": "ConfigMap",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "envConfigMap",
|
||||||
"name": "envConfigMap",
|
"creationTimestamp": nil,
|
||||||
"creationTimestamp": nil,
|
},
|
||||||
},
|
"data": map[string]interface{}{
|
||||||
"data": map[string]interface{}{
|
"DB_USERNAME": "admin",
|
||||||
"DB_USERNAME": "admin",
|
"DB_PASSWORD": "somepw",
|
||||||
"DB_PASSWORD": "somepw",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
@@ -82,20 +79,18 @@ func TestNewFromConfigMaps(t *testing.T) {
|
|||||||
filepath: "/home/seans/project/app-init.ini",
|
filepath: "/home/seans/project/app-init.ini",
|
||||||
content: "FOO=bar\nBAR=baz\n",
|
content: "FOO=bar\nBAR=baz\n",
|
||||||
expected: ResMap{
|
expected: ResMap{
|
||||||
resource.NewResId(cmap, "fileConfigMap"): resource.NewBehaviorlessResource(
|
resource.NewResId(cmap, "fileConfigMap"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "ConfigMap",
|
||||||
"kind": "ConfigMap",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "fileConfigMap",
|
||||||
"name": "fileConfigMap",
|
"creationTimestamp": nil,
|
||||||
"creationTimestamp": nil,
|
},
|
||||||
},
|
"data": map[string]interface{}{
|
||||||
"data": map[string]interface{}{
|
"app-init.ini": `FOO=bar
|
||||||
"app-init.ini": `FOO=bar
|
|
||||||
BAR=baz
|
BAR=baz
|
||||||
`,
|
`,
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
@@ -111,19 +106,17 @@ BAR=baz
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
expected: ResMap{
|
expected: ResMap{
|
||||||
resource.NewResId(cmap, "literalConfigMap"): resource.NewBehaviorlessResource(
|
resource.NewResId(cmap, "literalConfigMap"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "ConfigMap",
|
||||||
"kind": "ConfigMap",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "literalConfigMap",
|
||||||
"name": "literalConfigMap",
|
"creationTimestamp": nil,
|
||||||
"creationTimestamp": nil,
|
},
|
||||||
},
|
"data": map[string]interface{}{
|
||||||
"data": map[string]interface{}{
|
"a": "x",
|
||||||
"a": "x",
|
"b": "y",
|
||||||
"b": "y",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ func (m ResMap) insert(newName string, obj *unstructured.Unstructured) error {
|
|||||||
return fmt.Errorf("The <name: %q, GroupVersionKind: %v> already exists in the map", oldName, gvk)
|
return fmt.Errorf("The <name: %q, GroupVersionKind: %v> already exists in the map", oldName, gvk)
|
||||||
}
|
}
|
||||||
obj.SetName(newName)
|
obj.SetName(newName)
|
||||||
m[id] = resource.NewBehaviorlessResource(obj)
|
m[id] = resource.NewResourceFromUnstruct(*obj)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -183,7 +183,7 @@ func newResourceSliceFromBytes(in []byte) ([]*resource.Resource, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
result = append(result, resource.NewBehaviorlessResource(&out))
|
result = append(result, resource.NewResourceFromUnstruct(out))
|
||||||
}
|
}
|
||||||
if err != io.EOF {
|
if err != io.EOF {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ import (
|
|||||||
|
|
||||||
"github.com/kubernetes-sigs/kustomize/pkg/internal/loadertest"
|
"github.com/kubernetes-sigs/kustomize/pkg/internal/loadertest"
|
||||||
"github.com/kubernetes-sigs/kustomize/pkg/resource"
|
"github.com/kubernetes-sigs/kustomize/pkg/resource"
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -42,24 +41,20 @@ metadata:
|
|||||||
name: cm2
|
name: cm2
|
||||||
`)
|
`)
|
||||||
input := ResMap{
|
input := ResMap{
|
||||||
resource.NewResId(cmap, "cm1"): resource.NewBehaviorlessResource(
|
resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "ConfigMap",
|
||||||
"kind": "ConfigMap",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "cm1",
|
||||||
"name": "cm1",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
resource.NewResId(cmap, "cm2"): resource.NewBehaviorlessResource(
|
resource.NewResId(cmap, "cm2"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "ConfigMap",
|
||||||
"kind": "ConfigMap",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "cm2",
|
||||||
"name": "cm2",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
@@ -89,24 +84,20 @@ metadata:
|
|||||||
if ferr := l.AddFile("/home/seans/project/deployment.yaml", []byte(resourceStr)); ferr != nil {
|
if ferr := l.AddFile("/home/seans/project/deployment.yaml", []byte(resourceStr)); ferr != nil {
|
||||||
t.Fatalf("Error adding fake file: %v\n", ferr)
|
t.Fatalf("Error adding fake file: %v\n", ferr)
|
||||||
}
|
}
|
||||||
expected := ResMap{resource.NewResId(deploy, "dply1"): resource.NewBehaviorlessResource(
|
expected := ResMap{resource.NewResId(deploy, "dply1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: 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",
|
"apiVersion": "apps/v1",
|
||||||
"kind": "Deployment",
|
"kind": "Deployment",
|
||||||
"metadata": map[string]interface{}{
|
"metadata": map[string]interface{}{
|
||||||
"name": "dply1",
|
"name": "dply2",
|
||||||
},
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
resource.NewResId(deploy, "dply2"): resource.NewBehaviorlessResource(
|
|
||||||
&unstructured.Unstructured{
|
|
||||||
Object: map[string]interface{}{
|
|
||||||
"apiVersion": "apps/v1",
|
|
||||||
"kind": "Deployment",
|
|
||||||
"metadata": map[string]interface{}{
|
|
||||||
"name": "dply2",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
@@ -133,24 +124,20 @@ metadata:
|
|||||||
name: cm2
|
name: cm2
|
||||||
`)
|
`)
|
||||||
expected := ResMap{
|
expected := ResMap{
|
||||||
resource.NewResId(cmap, "cm1"): resource.NewBehaviorlessResource(
|
resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "ConfigMap",
|
||||||
"kind": "ConfigMap",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "cm1",
|
||||||
"name": "cm1",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
resource.NewResId(cmap, "cm2"): resource.NewBehaviorlessResource(
|
resource.NewResId(cmap, "cm2"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "ConfigMap",
|
||||||
"kind": "ConfigMap",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "cm2",
|
||||||
"name": "cm2",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
@@ -166,49 +153,41 @@ metadata:
|
|||||||
|
|
||||||
func TestMerge(t *testing.T) {
|
func TestMerge(t *testing.T) {
|
||||||
input1 := ResMap{
|
input1 := ResMap{
|
||||||
resource.NewResId(deploy, "deploy1"): resource.NewBehaviorlessResource(
|
resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "apps/v1",
|
||||||
"apiVersion": "apps/v1",
|
"kind": "Deployment",
|
||||||
"kind": "Deployment",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "foo-deploy1",
|
||||||
"name": "foo-deploy1",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
input2 := ResMap{
|
input2 := ResMap{
|
||||||
resource.NewResId(statefulset, "stateful1"): resource.NewBehaviorlessResource(
|
resource.NewResId(statefulset, "stateful1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "apps/v1",
|
||||||
"apiVersion": "apps/v1",
|
"kind": "StatefulSet",
|
||||||
"kind": "StatefulSet",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "bar-stateful",
|
||||||
"name": "bar-stateful",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
input := []ResMap{input1, input2}
|
input := []ResMap{input1, input2}
|
||||||
expected := ResMap{
|
expected := ResMap{
|
||||||
resource.NewResId(deploy, "deploy1"): resource.NewBehaviorlessResource(
|
resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "apps/v1",
|
||||||
"apiVersion": "apps/v1",
|
"kind": "Deployment",
|
||||||
"kind": "Deployment",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "foo-deploy1",
|
||||||
"name": "foo-deploy1",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
resource.NewResId(statefulset, "stateful1"): resource.NewBehaviorlessResource(
|
resource.NewResId(statefulset, "stateful1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "apps/v1",
|
||||||
"apiVersion": "apps/v1",
|
"kind": "StatefulSet",
|
||||||
"kind": "StatefulSet",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "bar-stateful",
|
||||||
"name": "bar-stateful",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ import (
|
|||||||
"github.com/kubernetes-sigs/kustomize/pkg/resource"
|
"github.com/kubernetes-sigs/kustomize/pkg/resource"
|
||||||
"github.com/kubernetes-sigs/kustomize/pkg/types"
|
"github.com/kubernetes-sigs/kustomize/pkg/types"
|
||||||
corev1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -48,20 +47,18 @@ func TestNewResMapFromSecretArgs(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
expected := ResMap{
|
expected := ResMap{
|
||||||
resource.NewResId(secret, "apple"): resource.NewBehaviorlessResource(
|
resource.NewResId(secret, "apple"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "Secret",
|
||||||
"kind": "Secret",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "apple",
|
||||||
"name": "apple",
|
"creationTimestamp": nil,
|
||||||
"creationTimestamp": nil,
|
},
|
||||||
},
|
"type": string(corev1.SecretTypeOpaque),
|
||||||
"type": string(corev1.SecretTypeOpaque),
|
"data": map[string]interface{}{
|
||||||
"data": map[string]interface{}{
|
"DB_USERNAME": base64.StdEncoding.EncodeToString([]byte("admin")),
|
||||||
"DB_USERNAME": base64.StdEncoding.EncodeToString([]byte("admin")),
|
"DB_PASSWORD": base64.StdEncoding.EncodeToString([]byte("somepw")),
|
||||||
"DB_PASSWORD": base64.StdEncoding.EncodeToString([]byte("somepw")),
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,16 +46,14 @@ func NewResourceWithBehavior(obj runtime.Object, b GenerationBehavior) (*Resourc
|
|||||||
return &Resource{Unstructured: u, b: b}, nil
|
return &Resource{Unstructured: u, b: b}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewBehaviorlessResource returns a new instance of Resource.
|
// NewResourceFromMap returns a new instance of Resource.
|
||||||
func NewBehaviorlessResource(u *unstructured.Unstructured) *Resource {
|
func NewResourceFromMap(m map[string]interface{}) *Resource {
|
||||||
return &Resource{Unstructured: *u, b: BehaviorUnspecified}
|
return NewResourceFromUnstruct(unstructured.Unstructured{Object: m})
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewResource returns a new instance of Resource.
|
// NewResourceFromUnstruct returns a new instance of Resource.
|
||||||
func NewResource(m map[string]interface{}) *Resource {
|
func NewResourceFromUnstruct(u unstructured.Unstructured) *Resource {
|
||||||
return &Resource{
|
return &Resource{Unstructured: u, b: BehaviorUnspecified}
|
||||||
Unstructured: unstructured.Unstructured{Object: m},
|
|
||||||
b: BehaviorUnspecified}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Behavior returns the behavior for the resource.
|
// Behavior returns the behavior for the resource.
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestGetFieldValue(t *testing.T) {
|
func TestGetFieldValue(t *testing.T) {
|
||||||
res := NewResource(map[string]interface{}{
|
res := NewResourceFromMap(map[string]interface{}{
|
||||||
"Kind": "Service",
|
"Kind": "Service",
|
||||||
"metadata": map[string]interface{}{
|
"metadata": map[string]interface{}{
|
||||||
"labels": map[string]string{
|
"labels": map[string]string{
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ import (
|
|||||||
|
|
||||||
"github.com/kubernetes-sigs/kustomize/pkg/resmap"
|
"github.com/kubernetes-sigs/kustomize/pkg/resmap"
|
||||||
"github.com/kubernetes-sigs/kustomize/pkg/resource"
|
"github.com/kubernetes-sigs/kustomize/pkg/resource"
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"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) {
|
func TestLabelsRun(t *testing.T) {
|
||||||
m := resmap.ResMap{
|
m := resmap.ResMap{
|
||||||
resource.NewResId(cmap, "cm1"): resource.NewBehaviorlessResource(
|
resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "ConfigMap",
|
||||||
"kind": "ConfigMap",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "cm1",
|
||||||
"name": "cm1",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
resource.NewResId(deploy, "deploy1"): resource.NewBehaviorlessResource(
|
resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"group": "apps",
|
||||||
"group": "apps",
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "Deployment",
|
||||||
"kind": "Deployment",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "deploy1",
|
||||||
"name": "deploy1",
|
},
|
||||||
},
|
"spec": map[string]interface{}{
|
||||||
"spec": map[string]interface{}{
|
"template": map[string]interface{}{
|
||||||
"template": map[string]interface{}{
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"labels": map[string]interface{}{
|
||||||
"labels": map[string]interface{}{
|
"old-label": "old-value",
|
||||||
"old-label": "old-value",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
"spec": map[string]interface{}{
|
},
|
||||||
"containers": []interface{}{
|
"spec": map[string]interface{}{
|
||||||
map[string]interface{}{
|
"containers": []interface{}{
|
||||||
"name": "nginx",
|
map[string]interface{}{
|
||||||
"image": "nginx:1.7.9",
|
"name": "nginx",
|
||||||
},
|
"image": "nginx:1.7.9",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
resource.NewResId(service, "svc1"): resource.NewBehaviorlessResource(
|
resource.NewResId(service, "svc1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "Service",
|
||||||
"kind": "Service",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "svc1",
|
||||||
"name": "svc1",
|
},
|
||||||
},
|
"spec": map[string]interface{}{
|
||||||
"spec": map[string]interface{}{
|
"ports": []interface{}{
|
||||||
"ports": []interface{}{
|
map[string]interface{}{
|
||||||
map[string]interface{}{
|
"name": "port1",
|
||||||
"name": "port1",
|
"port": "12345",
|
||||||
"port": "12345",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
expected := resmap.ResMap{
|
expected := resmap.ResMap{
|
||||||
resource.NewResId(cmap, "cm1"): resource.NewBehaviorlessResource(
|
resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "ConfigMap",
|
||||||
"kind": "ConfigMap",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "cm1",
|
||||||
"name": "cm1",
|
"labels": map[string]interface{}{
|
||||||
"labels": map[string]interface{}{
|
"label-key1": "label-value1",
|
||||||
"label-key1": "label-value1",
|
"label-key2": "label-value2",
|
||||||
"label-key2": "label-value2",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
resource.NewResId(deploy, "deploy1"): resource.NewBehaviorlessResource(
|
resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"group": "apps",
|
||||||
"group": "apps",
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "Deployment",
|
||||||
"kind": "Deployment",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "deploy1",
|
||||||
"name": "deploy1",
|
"labels": map[string]interface{}{
|
||||||
"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-key1": "label-value1",
|
||||||
"label-key2": "label-value2",
|
"label-key2": "label-value2",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"spec": map[string]interface{}{
|
"template": map[string]interface{}{
|
||||||
"selector": map[string]interface{}{
|
"metadata": map[string]interface{}{
|
||||||
"matchLabels": map[string]interface{}{
|
"labels": map[string]interface{}{
|
||||||
|
"old-label": "old-value",
|
||||||
"label-key1": "label-value1",
|
"label-key1": "label-value1",
|
||||||
"label-key2": "label-value2",
|
"label-key2": "label-value2",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"template": map[string]interface{}{
|
"spec": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"containers": []interface{}{
|
||||||
"labels": map[string]interface{}{
|
map[string]interface{}{
|
||||||
"old-label": "old-value",
|
"name": "nginx",
|
||||||
"label-key1": "label-value1",
|
"image": "nginx:1.7.9",
|
||||||
"label-key2": "label-value2",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"spec": map[string]interface{}{
|
|
||||||
"containers": []interface{}{
|
|
||||||
map[string]interface{}{
|
|
||||||
"name": "nginx",
|
|
||||||
"image": "nginx:1.7.9",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
resource.NewResId(service, "svc1"): resource.NewBehaviorlessResource(
|
resource.NewResId(service, "svc1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "Service",
|
||||||
"kind": "Service",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "svc1",
|
||||||
"name": "svc1",
|
"labels": map[string]interface{}{
|
||||||
"labels": map[string]interface{}{
|
"label-key1": "label-value1",
|
||||||
"label-key1": "label-value1",
|
"label-key2": "label-value2",
|
||||||
"label-key2": "label-value2",
|
},
|
||||||
|
},
|
||||||
|
"spec": map[string]interface{}{
|
||||||
|
"ports": []interface{}{
|
||||||
|
map[string]interface{}{
|
||||||
|
"name": "port1",
|
||||||
|
"port": "12345",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"spec": map[string]interface{}{
|
"selector": map[string]interface{}{
|
||||||
"ports": []interface{}{
|
"label-key1": "label-value1",
|
||||||
map[string]interface{}{
|
"label-key2": "label-value2",
|
||||||
"name": "port1",
|
|
||||||
"port": "12345",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"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) {
|
func TestAnnotationsRun(t *testing.T) {
|
||||||
m := resmap.ResMap{
|
m := resmap.ResMap{
|
||||||
resource.NewResId(cmap, "cm1"): resource.NewBehaviorlessResource(
|
resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "ConfigMap",
|
||||||
"kind": "ConfigMap",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "cm1",
|
||||||
"name": "cm1",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
resource.NewResId(deploy, "deploy1"): resource.NewBehaviorlessResource(
|
resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"group": "apps",
|
||||||
"group": "apps",
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "Deployment",
|
||||||
"kind": "Deployment",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "deploy1",
|
||||||
"name": "deploy1",
|
},
|
||||||
},
|
"spec": map[string]interface{}{
|
||||||
"spec": map[string]interface{}{
|
"template": map[string]interface{}{
|
||||||
"template": map[string]interface{}{
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"labels": map[string]interface{}{
|
||||||
"labels": map[string]interface{}{
|
"old-label": "old-value",
|
||||||
"old-label": "old-value",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
"spec": map[string]interface{}{
|
},
|
||||||
"containers": []interface{}{
|
"spec": map[string]interface{}{
|
||||||
map[string]interface{}{
|
"containers": []interface{}{
|
||||||
"name": "nginx",
|
map[string]interface{}{
|
||||||
"image": "nginx:1.7.9",
|
"name": "nginx",
|
||||||
},
|
"image": "nginx:1.7.9",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
resource.NewResId(service, "svc1"): resource.NewBehaviorlessResource(
|
resource.NewResId(service, "svc1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "Service",
|
||||||
"kind": "Service",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "svc1",
|
||||||
"name": "svc1",
|
},
|
||||||
},
|
"spec": map[string]interface{}{
|
||||||
"spec": map[string]interface{}{
|
"ports": []interface{}{
|
||||||
"ports": []interface{}{
|
map[string]interface{}{
|
||||||
map[string]interface{}{
|
"name": "port1",
|
||||||
"name": "port1",
|
"port": "12345",
|
||||||
"port": "12345",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
expected := resmap.ResMap{
|
expected := resmap.ResMap{
|
||||||
resource.NewResId(cmap, "cm1"): resource.NewBehaviorlessResource(
|
resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "ConfigMap",
|
||||||
"kind": "ConfigMap",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "cm1",
|
||||||
"name": "cm1",
|
"annotations": map[string]interface{}{
|
||||||
"annotations": map[string]interface{}{
|
"anno-key1": "anno-value1",
|
||||||
"anno-key1": "anno-value1",
|
"anno-key2": "anno-value2",
|
||||||
"anno-key2": "anno-value2",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
resource.NewResId(deploy, "deploy1"): resource.NewBehaviorlessResource(
|
resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"group": "apps",
|
||||||
"group": "apps",
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "Deployment",
|
||||||
"kind": "Deployment",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "deploy1",
|
||||||
"name": "deploy1",
|
"annotations": map[string]interface{}{
|
||||||
"annotations": map[string]interface{}{
|
"anno-key1": "anno-value1",
|
||||||
"anno-key1": "anno-value1",
|
"anno-key2": "anno-value2",
|
||||||
"anno-key2": "anno-value2",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
"spec": map[string]interface{}{
|
},
|
||||||
"template": map[string]interface{}{
|
"spec": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"template": map[string]interface{}{
|
||||||
"annotations": map[string]interface{}{
|
"metadata": map[string]interface{}{
|
||||||
"anno-key1": "anno-value1",
|
"annotations": map[string]interface{}{
|
||||||
"anno-key2": "anno-value2",
|
"anno-key1": "anno-value1",
|
||||||
},
|
"anno-key2": "anno-value2",
|
||||||
"labels": map[string]interface{}{
|
|
||||||
"old-label": "old-value",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
"spec": map[string]interface{}{
|
"labels": map[string]interface{}{
|
||||||
"containers": []interface{}{
|
"old-label": "old-value",
|
||||||
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(
|
resource.NewResId(service, "svc1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "Service",
|
||||||
"kind": "Service",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "svc1",
|
||||||
"name": "svc1",
|
"annotations": map[string]interface{}{
|
||||||
"annotations": map[string]interface{}{
|
"anno-key1": "anno-value1",
|
||||||
"anno-key1": "anno-value1",
|
"anno-key2": "anno-value2",
|
||||||
"anno-key2": "anno-value2",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
"spec": map[string]interface{}{
|
},
|
||||||
"ports": []interface{}{
|
"spec": map[string]interface{}{
|
||||||
map[string]interface{}{
|
"ports": []interface{}{
|
||||||
"name": "port1",
|
map[string]interface{}{
|
||||||
"port": "12345",
|
"name": "port1",
|
||||||
},
|
"port": "12345",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -22,144 +22,127 @@ import (
|
|||||||
|
|
||||||
"github.com/kubernetes-sigs/kustomize/pkg/resmap"
|
"github.com/kubernetes-sigs/kustomize/pkg/resmap"
|
||||||
"github.com/kubernetes-sigs/kustomize/pkg/resource"
|
"github.com/kubernetes-sigs/kustomize/pkg/resource"
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestNameHashTransformer(t *testing.T) {
|
func TestNameHashTransformer(t *testing.T) {
|
||||||
objs := resmap.ResMap{
|
objs := resmap.ResMap{
|
||||||
resource.NewResId(cmap, "cm1"): resource.NewBehaviorlessResource(
|
resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "ConfigMap",
|
||||||
"kind": "ConfigMap",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "cm1",
|
||||||
"name": "cm1",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
resource.NewResId(deploy, "deploy1"): resource.NewBehaviorlessResource(
|
resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"group": "apps",
|
||||||
"group": "apps",
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "Deployment",
|
||||||
"kind": "Deployment",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "deploy1",
|
||||||
"name": "deploy1",
|
},
|
||||||
},
|
"spec": map[string]interface{}{
|
||||||
"spec": map[string]interface{}{
|
"template": map[string]interface{}{
|
||||||
"template": map[string]interface{}{
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"labels": map[string]interface{}{
|
||||||
"labels": map[string]interface{}{
|
"old-label": "old-value",
|
||||||
"old-label": "old-value",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
"spec": map[string]interface{}{
|
},
|
||||||
"containers": []interface{}{
|
"spec": map[string]interface{}{
|
||||||
map[string]interface{}{
|
"containers": []interface{}{
|
||||||
"name": "nginx",
|
map[string]interface{}{
|
||||||
"image": "nginx:1.7.9",
|
"name": "nginx",
|
||||||
},
|
"image": "nginx:1.7.9",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
resource.NewResId(service, "svc1"): resource.NewBehaviorlessResource(
|
resource.NewResId(service, "svc1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "Service",
|
||||||
"kind": "Service",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "svc1",
|
||||||
"name": "svc1",
|
},
|
||||||
},
|
"spec": map[string]interface{}{
|
||||||
"spec": map[string]interface{}{
|
"ports": []interface{}{
|
||||||
"ports": []interface{}{
|
map[string]interface{}{
|
||||||
map[string]interface{}{
|
"name": "port1",
|
||||||
"name": "port1",
|
"port": "12345",
|
||||||
"port": "12345",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
resource.NewResId(secret, "secret1"): resource.NewBehaviorlessResource(
|
resource.NewResId(secret, "secret1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "Secret",
|
||||||
"kind": "Secret",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "secret1",
|
||||||
"name": "secret1",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
|
|
||||||
expected := resmap.ResMap{
|
expected := resmap.ResMap{
|
||||||
resource.NewResId(cmap, "cm1"): resource.NewBehaviorlessResource(
|
resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "ConfigMap",
|
||||||
"kind": "ConfigMap",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "cm1-m462kdfb68",
|
||||||
"name": "cm1-m462kdfb68",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
resource.NewResId(deploy, "deploy1"): resource.NewBehaviorlessResource(
|
resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"group": "apps",
|
||||||
"group": "apps",
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "Deployment",
|
||||||
"kind": "Deployment",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "deploy1",
|
||||||
"name": "deploy1",
|
},
|
||||||
},
|
"spec": map[string]interface{}{
|
||||||
"spec": map[string]interface{}{
|
"template": map[string]interface{}{
|
||||||
"template": map[string]interface{}{
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"labels": map[string]interface{}{
|
||||||
"labels": map[string]interface{}{
|
"old-label": "old-value",
|
||||||
"old-label": "old-value",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
"spec": map[string]interface{}{
|
},
|
||||||
"containers": []interface{}{
|
"spec": map[string]interface{}{
|
||||||
map[string]interface{}{
|
"containers": []interface{}{
|
||||||
"name": "nginx",
|
map[string]interface{}{
|
||||||
"image": "nginx:1.7.9",
|
"name": "nginx",
|
||||||
},
|
"image": "nginx:1.7.9",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
resource.NewResId(service, "svc1"): resource.NewBehaviorlessResource(
|
resource.NewResId(service, "svc1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "Service",
|
||||||
"kind": "Service",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "svc1",
|
||||||
"name": "svc1",
|
},
|
||||||
},
|
"spec": map[string]interface{}{
|
||||||
"spec": map[string]interface{}{
|
"ports": []interface{}{
|
||||||
"ports": []interface{}{
|
map[string]interface{}{
|
||||||
map[string]interface{}{
|
"name": "port1",
|
||||||
"name": "port1",
|
"port": "12345",
|
||||||
"port": "12345",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
resource.NewResId(secret, "secret1"): resource.NewBehaviorlessResource(
|
resource.NewResId(secret, "secret1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "Secret",
|
||||||
"kind": "Secret",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "secret1-7kc45hd5f7",
|
||||||
"name": "secret1-7kc45hd5f7",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,90 +22,83 @@ import (
|
|||||||
|
|
||||||
"github.com/kubernetes-sigs/kustomize/pkg/resmap"
|
"github.com/kubernetes-sigs/kustomize/pkg/resmap"
|
||||||
"github.com/kubernetes-sigs/kustomize/pkg/resource"
|
"github.com/kubernetes-sigs/kustomize/pkg/resource"
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestNameReferenceRun(t *testing.T) {
|
func TestNameReferenceRun(t *testing.T) {
|
||||||
m := resmap.ResMap{
|
m := resmap.ResMap{
|
||||||
resource.NewResId(cmap, "cm1"): resource.NewBehaviorlessResource(
|
resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "ConfigMap",
|
||||||
"kind": "ConfigMap",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "someprefix-cm1-somehash",
|
||||||
"name": "someprefix-cm1-somehash",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
resource.NewResId(secret, "secret1"): resource.NewBehaviorlessResource(
|
resource.NewResId(secret, "secret1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "Secret",
|
||||||
"kind": "Secret",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "someprefix-secret1-somehash",
|
||||||
"name": "someprefix-secret1-somehash",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
resource.NewResId(deploy, "deploy1"): resource.NewBehaviorlessResource(
|
resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"group": "apps",
|
||||||
"group": "apps",
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "Deployment",
|
||||||
"kind": "Deployment",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "deploy1",
|
||||||
"name": "deploy1",
|
},
|
||||||
},
|
"spec": map[string]interface{}{
|
||||||
"spec": map[string]interface{}{
|
"template": map[string]interface{}{
|
||||||
"template": map[string]interface{}{
|
"spec": map[string]interface{}{
|
||||||
"spec": map[string]interface{}{
|
"containers": []interface{}{
|
||||||
"containers": []interface{}{
|
map[string]interface{}{
|
||||||
map[string]interface{}{
|
"name": "nginx",
|
||||||
"name": "nginx",
|
"image": "nginx:1.7.9",
|
||||||
"image": "nginx:1.7.9",
|
"env": []interface{}{
|
||||||
"env": []interface{}{
|
map[string]interface{}{
|
||||||
map[string]interface{}{
|
"name": "CM_FOO",
|
||||||
"name": "CM_FOO",
|
"valueFrom": map[string]interface{}{
|
||||||
"valueFrom": map[string]interface{}{
|
"configMapKeyRef": 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{}{
|
|
||||||
"name": "cm1",
|
"name": "cm1",
|
||||||
"key": "somekey",
|
"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",
|
"name": "secret1",
|
||||||
"key": "somekey",
|
"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{}{
|
"volumes": map[string]interface{}{
|
||||||
"name": "cm1",
|
"configMap": map[string]interface{}{
|
||||||
},
|
"name": "cm1",
|
||||||
"secret": map[string]interface{}{
|
},
|
||||||
"secretName": "secret1",
|
"secret": map[string]interface{}{
|
||||||
},
|
"secretName": "secret1",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -115,85 +108,79 @@ func TestNameReferenceRun(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
expected := resmap.ResMap{
|
expected := resmap.ResMap{
|
||||||
resource.NewResId(cmap, "cm1"): resource.NewBehaviorlessResource(
|
resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "ConfigMap",
|
||||||
"kind": "ConfigMap",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "someprefix-cm1-somehash",
|
||||||
"name": "someprefix-cm1-somehash",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
resource.NewResId(secret, "secret1"): resource.NewBehaviorlessResource(
|
resource.NewResId(secret, "secret1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "Secret",
|
||||||
"kind": "Secret",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "someprefix-secret1-somehash",
|
||||||
"name": "someprefix-secret1-somehash",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
resource.NewResId(deploy, "deploy1"): resource.NewBehaviorlessResource(
|
resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"group": "apps",
|
||||||
"group": "apps",
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "Deployment",
|
||||||
"kind": "Deployment",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "deploy1",
|
||||||
"name": "deploy1",
|
},
|
||||||
},
|
"spec": map[string]interface{}{
|
||||||
"spec": map[string]interface{}{
|
"template": map[string]interface{}{
|
||||||
"template": map[string]interface{}{
|
"spec": map[string]interface{}{
|
||||||
"spec": map[string]interface{}{
|
"containers": []interface{}{
|
||||||
"containers": []interface{}{
|
map[string]interface{}{
|
||||||
map[string]interface{}{
|
"name": "nginx",
|
||||||
"name": "nginx",
|
"image": "nginx:1.7.9",
|
||||||
"image": "nginx:1.7.9",
|
"env": []interface{}{
|
||||||
"env": []interface{}{
|
map[string]interface{}{
|
||||||
map[string]interface{}{
|
"name": "CM_FOO",
|
||||||
"name": "CM_FOO",
|
"valueFrom": map[string]interface{}{
|
||||||
"valueFrom": map[string]interface{}{
|
"configMapKeyRef": 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{}{
|
|
||||||
"name": "someprefix-cm1-somehash",
|
"name": "someprefix-cm1-somehash",
|
||||||
"key": "somekey",
|
"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",
|
"name": "someprefix-secret1-somehash",
|
||||||
"key": "somekey",
|
"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{}{
|
"volumes": map[string]interface{}{
|
||||||
"name": "someprefix-cm1-somehash",
|
"configMap": map[string]interface{}{
|
||||||
},
|
"name": "someprefix-cm1-somehash",
|
||||||
"secret": map[string]interface{}{
|
},
|
||||||
"secretName": "someprefix-secret1-somehash",
|
"secret": map[string]interface{}{
|
||||||
},
|
"secretName": "someprefix-secret1-somehash",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -22,54 +22,45 @@ import (
|
|||||||
|
|
||||||
"github.com/kubernetes-sigs/kustomize/pkg/resmap"
|
"github.com/kubernetes-sigs/kustomize/pkg/resmap"
|
||||||
"github.com/kubernetes-sigs/kustomize/pkg/resource"
|
"github.com/kubernetes-sigs/kustomize/pkg/resource"
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestNamespaceRun(t *testing.T) {
|
func TestNamespaceRun(t *testing.T) {
|
||||||
m := resmap.ResMap{
|
m := resmap.ResMap{
|
||||||
resource.NewResId(cmap, "cm1"): resource.NewBehaviorlessResource(
|
resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "ConfigMap",
|
||||||
"kind": "ConfigMap",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "cm1",
|
||||||
"name": "cm1",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
resource.NewResId(cmap, "cm2"): resource.NewBehaviorlessResource(
|
resource.NewResId(cmap, "cm2"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "ConfigMap",
|
||||||
"kind": "ConfigMap",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "cm2",
|
||||||
"name": "cm2",
|
"namespace": "foo",
|
||||||
"namespace": "foo",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
expected := resmap.ResMap{
|
expected := resmap.ResMap{
|
||||||
resource.NewResId(cmap, "cm1"): resource.NewBehaviorlessResource(
|
resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "ConfigMap",
|
||||||
"kind": "ConfigMap",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "cm1",
|
||||||
"name": "cm1",
|
"namespace": "test",
|
||||||
"namespace": "test",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
resource.NewResId(cmap, "cm2"): resource.NewBehaviorlessResource(
|
resource.NewResId(cmap, "cm2"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "ConfigMap",
|
||||||
"kind": "ConfigMap",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "cm2",
|
||||||
"name": "cm2",
|
"namespace": "test",
|
||||||
"namespace": "test",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,42 +23,12 @@ import (
|
|||||||
|
|
||||||
"github.com/kubernetes-sigs/kustomize/pkg/resmap"
|
"github.com/kubernetes-sigs/kustomize/pkg/resmap"
|
||||||
"github.com/kubernetes-sigs/kustomize/pkg/resource"
|
"github.com/kubernetes-sigs/kustomize/pkg/resource"
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestOverlayRun(t *testing.T) {
|
func TestOverlayRun(t *testing.T) {
|
||||||
base := resmap.ResMap{
|
base := resmap.ResMap{
|
||||||
resource.NewResId(deploy, "deploy1"): resource.NewBehaviorlessResource(
|
resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
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{}{
|
|
||||||
"apiVersion": "apps/v1",
|
"apiVersion": "apps/v1",
|
||||||
"kind": "Deployment",
|
"kind": "Deployment",
|
||||||
"metadata": map[string]interface{}{
|
"metadata": map[string]interface{}{
|
||||||
@@ -68,6 +38,67 @@ func TestOverlayRun(t *testing.T) {
|
|||||||
"template": map[string]interface{}{
|
"template": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"metadata": map[string]interface{}{
|
||||||
"labels": 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",
|
"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)
|
lt, err := NewOverlayTransformer(overlay)
|
||||||
@@ -143,22 +136,20 @@ func TestOverlayRun(t *testing.T) {
|
|||||||
|
|
||||||
func TestMultiplePatches(t *testing.T) {
|
func TestMultiplePatches(t *testing.T) {
|
||||||
base := resmap.ResMap{
|
base := resmap.ResMap{
|
||||||
resource.NewResId(deploy, "deploy1"): resource.NewBehaviorlessResource(
|
resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "apps/v1",
|
||||||
"apiVersion": "apps/v1",
|
"kind": "Deployment",
|
||||||
"kind": "Deployment",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "deploy1",
|
||||||
"name": "deploy1",
|
},
|
||||||
},
|
"spec": map[string]interface{}{
|
||||||
"spec": map[string]interface{}{
|
"template": map[string]interface{}{
|
||||||
"template": map[string]interface{}{
|
"spec": map[string]interface{}{
|
||||||
"spec": map[string]interface{}{
|
"containers": []interface{}{
|
||||||
"containers": []interface{}{
|
map[string]interface{}{
|
||||||
map[string]interface{}{
|
"name": "nginx",
|
||||||
"name": "nginx",
|
"image": "nginx",
|
||||||
"image": "nginx",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -167,8 +158,65 @@ func TestMultiplePatches(t *testing.T) {
|
|||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
overlay := []*resource.Resource{
|
overlay := []*resource.Resource{
|
||||||
resource.NewBehaviorlessResource(&unstructured.Unstructured{
|
resource.NewResourceFromMap(map[string]interface{}{
|
||||||
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": "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",
|
"apiVersion": "apps/v1",
|
||||||
"kind": "Deployment",
|
"kind": "Deployment",
|
||||||
"metadata": map[string]interface{}{
|
"metadata": map[string]interface{}{
|
||||||
@@ -181,38 +229,15 @@ func TestMultiplePatches(t *testing.T) {
|
|||||||
map[string]interface{}{
|
map[string]interface{}{
|
||||||
"name": "nginx",
|
"name": "nginx",
|
||||||
"image": "nginx:latest",
|
"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{}{
|
"env": []interface{}{
|
||||||
map[string]interface{}{
|
map[string]interface{}{
|
||||||
"name": "ANOTHERENV",
|
"name": "ANOTHERENV",
|
||||||
"value": "HELLO",
|
"value": "HELLO",
|
||||||
},
|
},
|
||||||
|
map[string]interface{}{
|
||||||
|
"name": "SOMEENV",
|
||||||
|
"value": "BAR",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
map[string]interface{}{
|
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)
|
lt, err := NewOverlayTransformer(overlay)
|
||||||
@@ -281,32 +266,8 @@ func TestMultiplePatches(t *testing.T) {
|
|||||||
|
|
||||||
func TestMultiplePatchesWithConflict(t *testing.T) {
|
func TestMultiplePatchesWithConflict(t *testing.T) {
|
||||||
base := resmap.ResMap{
|
base := resmap.ResMap{
|
||||||
resource.NewResId(deploy, "deploy1"): resource.NewBehaviorlessResource(
|
resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
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{}{
|
|
||||||
"apiVersion": "apps/v1",
|
"apiVersion": "apps/v1",
|
||||||
"kind": "Deployment",
|
"kind": "Deployment",
|
||||||
"metadata": map[string]interface{}{
|
"metadata": map[string]interface{}{
|
||||||
@@ -318,12 +279,32 @@ func TestMultiplePatchesWithConflict(t *testing.T) {
|
|||||||
"containers": []interface{}{
|
"containers": []interface{}{
|
||||||
map[string]interface{}{
|
map[string]interface{}{
|
||||||
"name": "nginx",
|
"name": "nginx",
|
||||||
"image": "nginx:latest",
|
"image": "nginx",
|
||||||
"env": []interface{}{
|
},
|
||||||
map[string]interface{}{
|
},
|
||||||
"name": "SOMEENV",
|
},
|
||||||
"value": "BAR",
|
},
|
||||||
},
|
},
|
||||||
|
}),
|
||||||
|
}
|
||||||
|
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{
|
resource.NewResourceFromMap(map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "apps/v1",
|
||||||
"apiVersion": "apps/v1",
|
"kind": "Deployment",
|
||||||
"kind": "Deployment",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "deploy1",
|
||||||
"name": "deploy1",
|
},
|
||||||
},
|
"spec": map[string]interface{}{
|
||||||
"spec": map[string]interface{}{
|
"template": map[string]interface{}{
|
||||||
"template": map[string]interface{}{
|
"spec": map[string]interface{}{
|
||||||
"spec": map[string]interface{}{
|
"containers": []interface{}{
|
||||||
"containers": []interface{}{
|
map[string]interface{}{
|
||||||
map[string]interface{}{
|
"name": "nginx",
|
||||||
"name": "nginx",
|
"image": "nginx:1.7.9",
|
||||||
"image": "nginx:1.7.9",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -372,26 +351,8 @@ func TestMultiplePatchesWithConflict(t *testing.T) {
|
|||||||
|
|
||||||
func TestNoSchemaOverlayRun(t *testing.T) {
|
func TestNoSchemaOverlayRun(t *testing.T) {
|
||||||
base := resmap.ResMap{
|
base := resmap.ResMap{
|
||||||
resource.NewResId(foo, "my-foo"): resource.NewBehaviorlessResource(
|
resource.NewResId(foo, "my-foo"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
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{}{
|
|
||||||
"apiVersion": "example.com/v1",
|
"apiVersion": "example.com/v1",
|
||||||
"kind": "Foo",
|
"kind": "Foo",
|
||||||
"metadata": map[string]interface{}{
|
"metadata": map[string]interface{}{
|
||||||
@@ -399,28 +360,40 @@ func TestNoSchemaOverlayRun(t *testing.T) {
|
|||||||
},
|
},
|
||||||
"spec": map[string]interface{}{
|
"spec": map[string]interface{}{
|
||||||
"bar": map[string]interface{}{
|
"bar": map[string]interface{}{
|
||||||
"B": nil,
|
"A": "X",
|
||||||
"C": "Z",
|
"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{
|
expected := resmap.ResMap{
|
||||||
resource.NewResId(foo, "my-foo"): resource.NewBehaviorlessResource(
|
resource.NewResId(foo, "my-foo"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "example.com/v1",
|
||||||
"apiVersion": "example.com/v1",
|
"kind": "Foo",
|
||||||
"kind": "Foo",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "my-foo",
|
||||||
"name": "my-foo",
|
},
|
||||||
},
|
"spec": map[string]interface{}{
|
||||||
"spec": map[string]interface{}{
|
"bar": map[string]interface{}{
|
||||||
"bar": map[string]interface{}{
|
"A": "X",
|
||||||
"A": "X",
|
"C": "Z",
|
||||||
"C": "Z",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
@@ -441,78 +414,70 @@ func TestNoSchemaOverlayRun(t *testing.T) {
|
|||||||
|
|
||||||
func TestNoSchemaMultiplePatches(t *testing.T) {
|
func TestNoSchemaMultiplePatches(t *testing.T) {
|
||||||
base := resmap.ResMap{
|
base := resmap.ResMap{
|
||||||
resource.NewResId(foo, "my-foo"): resource.NewBehaviorlessResource(
|
resource.NewResId(foo, "my-foo"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "example.com/v1",
|
||||||
"apiVersion": "example.com/v1",
|
"kind": "Foo",
|
||||||
"kind": "Foo",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "my-foo",
|
||||||
"name": "my-foo",
|
},
|
||||||
},
|
"spec": map[string]interface{}{
|
||||||
"spec": map[string]interface{}{
|
"bar": map[string]interface{}{
|
||||||
"bar": map[string]interface{}{
|
"A": "X",
|
||||||
"A": "X",
|
"B": "Y",
|
||||||
"B": "Y",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
overlay := []*resource.Resource{
|
overlay := []*resource.Resource{
|
||||||
resource.NewBehaviorlessResource(&unstructured.Unstructured{
|
resource.NewResourceFromMap(map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "example.com/v1",
|
||||||
"apiVersion": "example.com/v1",
|
"kind": "Foo",
|
||||||
"kind": "Foo",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "my-foo",
|
||||||
"name": "my-foo",
|
},
|
||||||
},
|
"spec": map[string]interface{}{
|
||||||
"spec": map[string]interface{}{
|
"bar": map[string]interface{}{
|
||||||
"bar": map[string]interface{}{
|
"B": nil,
|
||||||
"B": nil,
|
"C": "Z",
|
||||||
"C": "Z",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
resource.NewBehaviorlessResource(&unstructured.Unstructured{
|
resource.NewResourceFromMap(map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "example.com/v1",
|
||||||
"apiVersion": "example.com/v1",
|
"kind": "Foo",
|
||||||
"kind": "Foo",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "my-foo",
|
||||||
"name": "my-foo",
|
},
|
||||||
|
"spec": map[string]interface{}{
|
||||||
|
"bar": map[string]interface{}{
|
||||||
|
"C": "Z",
|
||||||
|
"D": "W",
|
||||||
},
|
},
|
||||||
"spec": map[string]interface{}{
|
"baz": map[string]interface{}{
|
||||||
"bar": map[string]interface{}{
|
"hello": "world",
|
||||||
"C": "Z",
|
|
||||||
"D": "W",
|
|
||||||
},
|
|
||||||
"baz": map[string]interface{}{
|
|
||||||
"hello": "world",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
expected := resmap.ResMap{
|
expected := resmap.ResMap{
|
||||||
resource.NewResId(foo, "my-foo"): resource.NewBehaviorlessResource(
|
resource.NewResId(foo, "my-foo"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "example.com/v1",
|
||||||
"apiVersion": "example.com/v1",
|
"kind": "Foo",
|
||||||
"kind": "Foo",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "my-foo",
|
||||||
"name": "my-foo",
|
},
|
||||||
|
"spec": map[string]interface{}{
|
||||||
|
"bar": map[string]interface{}{
|
||||||
|
"A": "X",
|
||||||
|
"C": "Z",
|
||||||
|
"D": "W",
|
||||||
},
|
},
|
||||||
"spec": map[string]interface{}{
|
"baz": map[string]interface{}{
|
||||||
"bar": map[string]interface{}{
|
"hello": "world",
|
||||||
"A": "X",
|
|
||||||
"C": "Z",
|
|
||||||
"D": "W",
|
|
||||||
},
|
|
||||||
"baz": map[string]interface{}{
|
|
||||||
"hello": "world",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
@@ -533,50 +498,44 @@ func TestNoSchemaMultiplePatches(t *testing.T) {
|
|||||||
|
|
||||||
func TestNoSchemaMultiplePatchesWithConflict(t *testing.T) {
|
func TestNoSchemaMultiplePatchesWithConflict(t *testing.T) {
|
||||||
base := resmap.ResMap{
|
base := resmap.ResMap{
|
||||||
resource.NewResId(foo, "my-foo"): resource.NewBehaviorlessResource(
|
resource.NewResId(foo, "my-foo"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "example.com/v1",
|
||||||
"apiVersion": "example.com/v1",
|
"kind": "Foo",
|
||||||
"kind": "Foo",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "my-foo",
|
||||||
"name": "my-foo",
|
},
|
||||||
},
|
"spec": map[string]interface{}{
|
||||||
"spec": map[string]interface{}{
|
"bar": map[string]interface{}{
|
||||||
"bar": map[string]interface{}{
|
"A": "X",
|
||||||
"A": "X",
|
"B": "Y",
|
||||||
"B": "Y",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
overlay := []*resource.Resource{
|
overlay := []*resource.Resource{
|
||||||
resource.NewBehaviorlessResource(&unstructured.Unstructured{
|
resource.NewResourceFromMap(map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "example.com/v1",
|
||||||
"apiVersion": "example.com/v1",
|
"kind": "Foo",
|
||||||
"kind": "Foo",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "my-foo",
|
||||||
"name": "my-foo",
|
},
|
||||||
},
|
"spec": map[string]interface{}{
|
||||||
"spec": map[string]interface{}{
|
"bar": map[string]interface{}{
|
||||||
"bar": map[string]interface{}{
|
"B": nil,
|
||||||
"B": nil,
|
"C": "Z",
|
||||||
"C": "Z",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
resource.NewBehaviorlessResource(&unstructured.Unstructured{
|
resource.NewResourceFromMap(map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "example.com/v1",
|
||||||
"apiVersion": "example.com/v1",
|
"kind": "Foo",
|
||||||
"kind": "Foo",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "my-foo",
|
||||||
"name": "my-foo",
|
},
|
||||||
},
|
"spec": map[string]interface{}{
|
||||||
"spec": map[string]interface{}{
|
"bar": map[string]interface{}{
|
||||||
"bar": map[string]interface{}{
|
"C": "NOT_Z",
|
||||||
"C": "NOT_Z",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -22,51 +22,42 @@ import (
|
|||||||
|
|
||||||
"github.com/kubernetes-sigs/kustomize/pkg/resmap"
|
"github.com/kubernetes-sigs/kustomize/pkg/resmap"
|
||||||
"github.com/kubernetes-sigs/kustomize/pkg/resource"
|
"github.com/kubernetes-sigs/kustomize/pkg/resource"
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestPrefixNameRun(t *testing.T) {
|
func TestPrefixNameRun(t *testing.T) {
|
||||||
m := resmap.ResMap{
|
m := resmap.ResMap{
|
||||||
resource.NewResId(cmap, "cm1"): resource.NewBehaviorlessResource(
|
resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "ConfigMap",
|
||||||
"kind": "ConfigMap",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "cm1",
|
||||||
"name": "cm1",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
resource.NewResId(cmap, "cm2"): resource.NewBehaviorlessResource(
|
resource.NewResId(cmap, "cm2"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "ConfigMap",
|
||||||
"kind": "ConfigMap",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "cm2",
|
||||||
"name": "cm2",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
expected := resmap.ResMap{
|
expected := resmap.ResMap{
|
||||||
resource.NewResId(cmap, "cm1"): resource.NewBehaviorlessResource(
|
resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "ConfigMap",
|
||||||
"kind": "ConfigMap",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "someprefix-cm1",
|
||||||
"name": "someprefix-cm1",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
resource.NewResId(cmap, "cm2"): resource.NewBehaviorlessResource(
|
resource.NewResId(cmap, "cm2"): resource.NewResourceFromMap(
|
||||||
&unstructured.Unstructured{
|
map[string]interface{}{
|
||||||
Object: map[string]interface{}{
|
"apiVersion": "v1",
|
||||||
"apiVersion": "v1",
|
"kind": "ConfigMap",
|
||||||
"kind": "ConfigMap",
|
"metadata": map[string]interface{}{
|
||||||
"metadata": map[string]interface{}{
|
"name": "someprefix-cm2",
|
||||||
"name": "someprefix-cm2",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user