From 1ec66725807f869e7f57c92a348898138d4f4455 Mon Sep 17 00:00:00 2001 From: soggiest Date: Tue, 27 Nov 2018 14:31:32 -0800 Subject: [PATCH 1/3] Added similar functionality for init containers as standard containers in PodPreset admission controller --- plugin/pkg/admission/podpreset/admission.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/plugin/pkg/admission/podpreset/admission.go b/plugin/pkg/admission/podpreset/admission.go index e86f4511c4d..40b8e3f513d 100644 --- a/plugin/pkg/admission/podpreset/admission.go +++ b/plugin/pkg/admission/podpreset/admission.go @@ -184,6 +184,12 @@ func safeToApplyPodPresetsOnPod(pod *api.Pod, podPresets []*settingsv1alpha1.Pod errs = append(errs, err) } } + for _, iCtr := range pod.Spec.InitContainers { + if err := safeToApplyPodPresetsOnContainer(&iCtr, podPresets); err != nil { + errs = append(errs, err) + } + } + return utilerrors.NewAggregate(errs) } @@ -381,6 +387,10 @@ func applyPodPresetsOnPod(pod *api.Pod, podPresets []*settingsv1alpha1.PodPreset applyPodPresetsOnContainer(&ctr, podPresets) pod.Spec.Containers[i] = ctr } + for i, iCtr := range pod.Spec.InitContainers { + applyPodPresetsOnContainer(&iCtr, podPresets) + pod.Spec.InitContainers[i] = iCtr + } // add annotation if pod.ObjectMeta.Annotations == nil { From d80bbb9d57ae9d08d5c3ee5fd627496b8fcc77f1 Mon Sep 17 00:00:00 2001 From: soggiest Date: Wed, 28 Nov 2018 15:09:37 -0800 Subject: [PATCH 2/3] PodPreset: Added tests to verify initcontainers modified as expected --- test/e2e/servicecatalog/podpreset.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/test/e2e/servicecatalog/podpreset.go b/test/e2e/servicecatalog/podpreset.go index 260c1790a2a..e16d5ce9669 100644 --- a/test/e2e/servicecatalog/podpreset.go +++ b/test/e2e/servicecatalog/podpreset.go @@ -99,6 +99,13 @@ var _ = SIGDescribe("[Feature:PodPreset] PodPreset", func() { Image: imageutils.GetE2EImage(imageutils.Nginx), }, }, + InitContainers: []v1.Container{ + { + Name: "init1", + Image: imageutils.GetE2EImage(imageutils.BusyBox), + Command: []string{"/bin/true"}, + }, + }, }, } @@ -153,6 +160,9 @@ var _ = SIGDescribe("[Feature:PodPreset] PodPreset", func() { if !reflect.DeepEqual(pip.Spec.Env, pod.Spec.Containers[0].Env) { framework.Failf("env of pod container does not match the env of the pip: expected %#v, got: %#v", pip.Spec.Env, pod.Spec.Containers[0].Env) } + if !reflect.DeepEqual(pip.Spec.Env, pod.Spec.InitContainers[0].Env) { + framework.Failf("env of pod init container does not match the env of the pip: expected %#v, got: %#v", pip.Spec.Env, pod.Spec.InitContainers[0].Env) + } }) It("should not modify the pod on conflict", func() { @@ -208,6 +218,14 @@ var _ = SIGDescribe("[Feature:PodPreset] PodPreset", func() { Env: []v1.EnvVar{{Name: "abc", Value: "value2"}, {Name: "ABC", Value: "value"}}, }, }, + InitContainers: []v1.Container{ + { + Name: "init1", + Image: imageutils.GetE2EImage(imageutils.BusyBox), + Env: []v1.EnvVar{{Name: "abc", Value: "value2"}, {Name: "ABC", Value: " value"}}, + Command: []string{"/bin/true"}, + }, + }, }, } @@ -262,6 +280,10 @@ var _ = SIGDescribe("[Feature:PodPreset] PodPreset", func() { if !reflect.DeepEqual(originalPod.Spec.Containers[0].Env, pod.Spec.Containers[0].Env) { framework.Failf("env of pod container does not match the env of the original pod: expected %#v, got: %#v", originalPod.Spec.Containers[0].Env, pod.Spec.Containers[0].Env) } + if !reflect.DeepEqual(originalPod.Spec.InitContainers[0].Env, pod.Spec.InitContainers[0].Env) { + framework.Failf("env of pod init container does not match the env of the original pod: expected %#v, g ot: %#v", originalPod.Spec.InitContainers[0].Env, pod.Spec.InitContainers[0].Env) + } + }) }) From c7c119752c1e72ffed03964a6874f96d27493183 Mon Sep 17 00:00:00 2001 From: soggiest Date: Tue, 4 Dec 2018 10:55:46 -0800 Subject: [PATCH 3/3] Removed erroneous spaces in PodPreset E2E tests --- test/e2e/servicecatalog/podpreset.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/e2e/servicecatalog/podpreset.go b/test/e2e/servicecatalog/podpreset.go index e16d5ce9669..bc384484084 100644 --- a/test/e2e/servicecatalog/podpreset.go +++ b/test/e2e/servicecatalog/podpreset.go @@ -222,7 +222,7 @@ var _ = SIGDescribe("[Feature:PodPreset] PodPreset", func() { { Name: "init1", Image: imageutils.GetE2EImage(imageutils.BusyBox), - Env: []v1.EnvVar{{Name: "abc", Value: "value2"}, {Name: "ABC", Value: " value"}}, + Env: []v1.EnvVar{{Name: "abc", Value: "value2"}, {Name: "ABC", Value: "value"}}, Command: []string{"/bin/true"}, }, }, @@ -281,7 +281,7 @@ var _ = SIGDescribe("[Feature:PodPreset] PodPreset", func() { framework.Failf("env of pod container does not match the env of the original pod: expected %#v, got: %#v", originalPod.Spec.Containers[0].Env, pod.Spec.Containers[0].Env) } if !reflect.DeepEqual(originalPod.Spec.InitContainers[0].Env, pod.Spec.InitContainers[0].Env) { - framework.Failf("env of pod init container does not match the env of the original pod: expected %#v, g ot: %#v", originalPod.Spec.InitContainers[0].Env, pod.Spec.InitContainers[0].Env) + framework.Failf("env of pod init container does not match the env of the original pod: expected %#v, got: %#v", originalPod.Spec.InitContainers[0].Env, pod.Spec.InitContainers[0].Env) } })