From bd5f4117e5d68405d742d16af374d0996b0a1354 Mon Sep 17 00:00:00 2001 From: Lee Verberne Date: Tue, 25 Jun 2019 18:11:51 +0000 Subject: [PATCH 1/2] Return all errors in alwayspullimages.Validate() --- plugin/pkg/admission/alwayspullimages/admission.go | 4 ++-- plugin/pkg/admission/alwayspullimages/admission_test.go | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/plugin/pkg/admission/alwayspullimages/admission.go b/plugin/pkg/admission/alwayspullimages/admission.go index ebb5cb7bfdc..40c1181f73b 100644 --- a/plugin/pkg/admission/alwayspullimages/admission.go +++ b/plugin/pkg/admission/alwayspullimages/admission.go @@ -28,6 +28,7 @@ import ( "io" apierrors "k8s.io/apimachinery/pkg/api/errors" + utilerrors "k8s.io/apimachinery/pkg/util/errors" "k8s.io/apimachinery/pkg/util/validation/field" "k8s.io/apiserver/pkg/admission" api "k8s.io/kubernetes/pkg/apis/core" @@ -91,8 +92,7 @@ func (*AlwaysPullImages) Validate(attributes admission.Attributes, o admission.O } }) if len(allErrs) > 0 { - // TODO: consider using utilerrors.NewAggregate(allErrs) - return allErrs[0] + return utilerrors.NewAggregate(allErrs) } return nil diff --git a/plugin/pkg/admission/alwayspullimages/admission_test.go b/plugin/pkg/admission/alwayspullimages/admission_test.go index 98eba50c976..fb348bbfa2b 100644 --- a/plugin/pkg/admission/alwayspullimages/admission_test.go +++ b/plugin/pkg/admission/alwayspullimages/admission_test.go @@ -84,7 +84,13 @@ func TestValidate(t *testing.T) { }, }, } - expectedError := `pods "123" is forbidden: spec.initContainers[0].imagePullPolicy: Unsupported value: "": supported values: "Always"` + expectedError := `[` + + `pods "123" is forbidden: spec.initContainers[0].imagePullPolicy: Unsupported value: "": supported values: "Always", ` + + `pods "123" is forbidden: spec.initContainers[1].imagePullPolicy: Unsupported value: "Never": supported values: "Always", ` + + `pods "123" is forbidden: spec.initContainers[2].imagePullPolicy: Unsupported value: "IfNotPresent": supported values: "Always", ` + + `pods "123" is forbidden: spec.containers[0].imagePullPolicy: Unsupported value: "": supported values: "Always", ` + + `pods "123" is forbidden: spec.containers[1].imagePullPolicy: Unsupported value: "Never": supported values: "Always", ` + + `pods "123" is forbidden: spec.containers[2].imagePullPolicy: Unsupported value: "IfNotPresent": supported values: "Always"]` err := handler.Validate(admission.NewAttributesRecord(&pod, nil, api.Kind("Pod").WithVersion("version"), pod.Namespace, pod.Name, api.Resource("pods").WithVersion("version"), "", admission.Create, &metav1.CreateOptions{}, false, nil), nil) if err == nil { t.Fatal("missing expected error") From d88c928733fb5f3d5fe17f4cda30ad6c486210da Mon Sep 17 00:00:00 2001 From: Lee Verberne Date: Tue, 25 Jun 2019 18:45:30 +0000 Subject: [PATCH 2/2] Generated build file for alwayspullimages --- plugin/pkg/admission/alwayspullimages/BUILD | 1 + 1 file changed, 1 insertion(+) diff --git a/plugin/pkg/admission/alwayspullimages/BUILD b/plugin/pkg/admission/alwayspullimages/BUILD index 34533347242..ef30baee700 100644 --- a/plugin/pkg/admission/alwayspullimages/BUILD +++ b/plugin/pkg/admission/alwayspullimages/BUILD @@ -14,6 +14,7 @@ go_library( "//pkg/apis/core:go_default_library", "//pkg/apis/core/pods:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", "//staging/src/k8s.io/apiserver/pkg/admission:go_default_library", ],