From 4848987a1fb23612371093816c30d91f88dceb3a Mon Sep 17 00:00:00 2001 From: Michael Heyvaert Date: Thu, 28 Mar 2019 15:19:28 +0100 Subject: [PATCH] fix configmap/secret name references for cronjobs with projected volumes --- .../config/defaultconfig/namereference.go | 4 + pkg/transformers/namereference_test.go | 74 +++++++++++++++++++ 2 files changed, 78 insertions(+) diff --git a/pkg/transformers/config/defaultconfig/namereference.go b/pkg/transformers/config/defaultconfig/namereference.go index 669fc2407..6704f0063 100644 --- a/pkg/transformers/config/defaultconfig/namereference.go +++ b/pkg/transformers/config/defaultconfig/namereference.go @@ -108,6 +108,8 @@ nameReference: kind: Job - path: spec/jobTemplate/spec/template/spec/volumes/configMap/name kind: CronJob + - path: spec/jobTemplate/spec/template/spec/volumes/projected/sources/configMap/name + kind: CronJob - path: spec/jobTemplate/spec/template/spec/containers/env/valueFrom/configMapKeyRef/name kind: CronJob - path: spec/jobTemplate/spec/template/spec/initContainers/env/valueFrom/configMapKeyRef/name @@ -204,6 +206,8 @@ nameReference: kind: Job - path: spec/jobTemplate/spec/template/spec/volumes/secret/secretName kind: CronJob + - path: spec/jobTemplate/spec/template/spec/volumes/projected/sources/secret/name + kind: CronJob - path: spec/jobTemplate/spec/template/spec/containers/env/valueFrom/secretKeyRef/name kind: CronJob - path: spec/jobTemplate/spec/template/spec/initContainers/env/valueFrom/secretKeyRef/name diff --git a/pkg/transformers/namereference_test.go b/pkg/transformers/namereference_test.go index 4cdeab011..dd16c8980 100644 --- a/pkg/transformers/namereference_test.go +++ b/pkg/transformers/namereference_test.go @@ -241,6 +241,43 @@ func TestNameReferenceHappyRun(t *testing.T) { }, }, }), + resid.NewResId(cronjob, "cronjob1"): rf.FromMap( + map[string]interface{}{ + "apiVersion": "batch/v1beta1", + "kind": "CronJob", + "metadata": map[string]interface{}{ + "name": "cronjob1", + }, + "spec": map[string]interface{}{ + "schedule": "0 14 * * *", + "jobTemplate": map[string]interface{}{ + "spec": map[string]interface{}{ + "template": map[string]interface{}{ + "spec": map[string]interface{}{ + "containers": []interface{}{ + map[string]interface{}{ + "name": "main", + "image": "myimage", + }, + }, + "volumes": map[string]interface{}{ + "projected": map[string]interface{}{ + "sources": map[string]interface{}{ + "configMap": map[string]interface{}{ + "name": "cm2", + }, + "secret": map[string]interface{}{ + "name": "secret1", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }), } expected := resmap.ResMap{} @@ -417,6 +454,43 @@ func TestNameReferenceHappyRun(t *testing.T) { }, }, }) + expected[resid.NewResId(cronjob, "cronjob1")] = rf.FromMap( + map[string]interface{}{ + "apiVersion": "batch/v1beta1", + "kind": "CronJob", + "metadata": map[string]interface{}{ + "name": "cronjob1", + }, + "spec": map[string]interface{}{ + "schedule": "0 14 * * *", + "jobTemplate": map[string]interface{}{ + "spec": map[string]interface{}{ + "template": map[string]interface{}{ + "spec": map[string]interface{}{ + "containers": []interface{}{ + map[string]interface{}{ + "name": "main", + "image": "myimage", + }, + }, + "volumes": map[string]interface{}{ + "projected": map[string]interface{}{ + "sources": map[string]interface{}{ + "configMap": map[string]interface{}{ + "name": "someprefix-cm2-somehash", + }, + "secret": map[string]interface{}{ + "name": "someprefix-secret1-somehash", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }) nrt := NewNameReferenceTransformer(defaultTransformerConfig.NameReference) err := nrt.Transform(m) if err != nil {