diff --git a/pkg/transformers/labelsandannotations_test.go b/pkg/transformers/labelsandannotations_test.go index d50a721fa..25e364ecf 100644 --- a/pkg/transformers/labelsandannotations_test.go +++ b/pkg/transformers/labelsandannotations_test.go @@ -30,6 +30,7 @@ var secret = schema.GroupVersionKind{Version: "v1", Kind: "Secret"} var cmap = schema.GroupVersionKind{Version: "v1", Kind: "ConfigMap"} var ns = schema.GroupVersionKind{Version: "v1", Kind: "Namespace"} var deploy = schema.GroupVersionKind{Group: "apps", Version: "v1", Kind: "Deployment"} +var statefulset = schema.GroupVersionKind{Group: "apps", Version: "v1", Kind: "StatefulSet"} var foo = schema.GroupVersionKind{Group: "example.com", Version: "v1", Kind: "Foo"} var crd = schema.GroupVersionKind{Group: "apiwctensions.k8s.io", Version: "v1beta1", Kind: "CustomResourceDefinition"} var job = schema.GroupVersionKind{Group: "batch", Version: "v1", Kind: "Job"} diff --git a/pkg/transformers/namereference_test.go b/pkg/transformers/namereference_test.go index 572d8c49c..eef6b8ead 100644 --- a/pkg/transformers/namereference_test.go +++ b/pkg/transformers/namereference_test.go @@ -35,6 +35,14 @@ func TestNameReferenceRun(t *testing.T) { "name": "someprefix-cm1-somehash", }, }), + resource.NewResId(cmap, "cm2"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": map[string]interface{}{ + "name": "someprefix-cm2-somehash", + }, + }), resource.NewResId(secret, "secret1"): resource.NewResourceFromMap( map[string]interface{}{ "apiVersion": "v1", @@ -111,6 +119,13 @@ func TestNameReferenceRun(t *testing.T) { "configMap": map[string]interface{}{ "name": "cm1", }, + "projected": map[string]interface{}{ + "sources": map[string]interface{}{ + "configMap": map[string]interface{}{ + "name": "cm2", + }, + }, + }, "secret": map[string]interface{}{ "secretName": "secret1", }, @@ -122,40 +137,13 @@ func TestNameReferenceRun(t *testing.T) { }, }, }), - } - - expected := resmap.ResMap{ - 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.NewResourceFromMap( - map[string]interface{}{ - "apiVersion": "v1", - "kind": "Secret", - "metadata": map[string]interface{}{ - "name": "someprefix-secret1-somehash", - }, - }), - resource.NewResId(pvc, "claim1"): resource.NewResourceFromMap( - map[string]interface{}{ - "apiVersion": "v1", - "kind": "PersistentVolumeClaim", - "metadata": map[string]interface{}{ - "name": "someprefix-claim1", - }, - }), - resource.NewResId(deploy, "deploy1"): resource.NewResourceFromMap( + resource.NewResId(statefulset, "statefulset1"): resource.NewResourceFromMap( map[string]interface{}{ "group": "apps", "apiVersion": "v1", - "kind": "Deployment", + "kind": "StatefulSet", "metadata": map[string]interface{}{ - "name": "deploy1", + "name": "statefulset1", }, "spec": map[string]interface{}{ "template": map[string]interface{}{ @@ -164,56 +152,15 @@ func TestNameReferenceRun(t *testing.T) { 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{}{ - "name": "someprefix-cm1-somehash", - "key": "somekey", - }, - }, - map[string]interface{}{ - "secretRef": map[string]interface{}{ - "name": "someprefix-secret1-somehash", - "key": "somekey", - }, - }, - }, - }, - }, - "imagePullSecrets": []interface{}{ - map[string]interface{}{ - "name": "someprefix-secret1-somehash", }, }, "volumes": map[string]interface{}{ - "configMap": map[string]interface{}{ - "name": "someprefix-cm1-somehash", - }, - "secret": map[string]interface{}{ - "secretName": "someprefix-secret1-somehash", - }, - "persistentVolumeClaim": map[string]interface{}{ - "claimName": "someprefix-claim1", + "projected": map[string]interface{}{ + "sources": map[string]interface{}{ + "configMap": map[string]interface{}{ + "name": "cm2", + }, + }, }, }, }, @@ -222,6 +169,120 @@ func TestNameReferenceRun(t *testing.T) { }), } + expected := resmap.ResMap{} + for k, v := range m { + expected[k] = v + } + + expected[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{}{ + "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", + }, + }, + }, + }, + }, + "imagePullSecrets": []interface{}{ + map[string]interface{}{ + "name": "someprefix-secret1-somehash", + }, + }, + "volumes": map[string]interface{}{ + "configMap": map[string]interface{}{ + "name": "someprefix-cm1-somehash", + }, + "projected": map[string]interface{}{ + "sources": map[string]interface{}{ + "configMap": map[string]interface{}{ + "name": "someprefix-cm2-somehash", + }, + }, + }, + "secret": map[string]interface{}{ + "secretName": "someprefix-secret1-somehash", + }, + "persistentVolumeClaim": map[string]interface{}{ + "claimName": "someprefix-claim1", + }, + }, + }, + }, + }, + }) + expected[resource.NewResId(statefulset, "statefulset1")] = resource.NewResourceFromMap( + map[string]interface{}{ + "group": "apps", + "apiVersion": "v1", + "kind": "StatefulSet", + "metadata": map[string]interface{}{ + "name": "statefulset1", + }, + "spec": map[string]interface{}{ + "template": map[string]interface{}{ + "spec": map[string]interface{}{ + "containers": []interface{}{ + map[string]interface{}{ + "name": "nginx", + "image": "nginx:1.7.9", + }, + }, + "volumes": map[string]interface{}{ + "projected": map[string]interface{}{ + "sources": map[string]interface{}{ + "configMap": map[string]interface{}{ + "name": "someprefix-cm2-somehash", + }, + }, + }, + }, + }, + }, + }, + }) + nrt, err := NewDefaultingNameReferenceTransformer() if err != nil { t.Fatalf("unexpected error: %v", err) diff --git a/pkg/transformers/namereferenceconfig.go b/pkg/transformers/namereferenceconfig.go index 1101b1262..18cf9300c 100644 --- a/pkg/transformers/namereferenceconfig.go +++ b/pkg/transformers/namereferenceconfig.go @@ -146,6 +146,13 @@ var defaultNameReferencePathConfigs = []ReferencePathConfig{ Path: []string{"spec", "template", "spec", "initContainers", "envFrom", "configMapRef", "name"}, CreateIfNotPresent: false, }, + { + GroupVersionKind: &schema.GroupVersionKind{ + Kind: "Deployment", + }, + Path: []string{"spec", "template", "spec", "volumes", "projected", "sources", "configMap", "name"}, + CreateIfNotPresent: false, + }, { GroupVersionKind: &schema.GroupVersionKind{ Kind: "ReplicaSet", @@ -251,6 +258,13 @@ var defaultNameReferencePathConfigs = []ReferencePathConfig{ Path: []string{"spec", "template", "spec", "initContainers", "envFrom", "configMapRef", "name"}, CreateIfNotPresent: false, }, + { + GroupVersionKind: &schema.GroupVersionKind{ + Kind: "StatefulSet", + }, + Path: []string{"spec", "template", "spec", "volumes", "projected", "sources", "configMap", "name"}, + CreateIfNotPresent: false, + }, { GroupVersionKind: &schema.GroupVersionKind{ Kind: "Job",