From da03746b224d8feaf700de5cf9ab93bf0789b7e5 Mon Sep 17 00:00:00 2001 From: feihujiang Date: Tue, 1 Sep 2015 14:08:40 +0800 Subject: [PATCH] Aggregate errors when validate kubectl required parameters --- pkg/kubectl/cmd/label.go | 6 ++++-- pkg/kubectl/generate.go | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/pkg/kubectl/cmd/label.go b/pkg/kubectl/cmd/label.go index aa57df0e128..1db85eaf81d 100644 --- a/pkg/kubectl/cmd/label.go +++ b/pkg/kubectl/cmd/label.go @@ -28,6 +28,7 @@ import ( "k8s.io/kubernetes/pkg/kubectl/resource" "k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/util" + "k8s.io/kubernetes/pkg/util/errors" ) const ( @@ -78,12 +79,13 @@ func NewCmdLabel(f *cmdutil.Factory, out io.Writer) *cobra.Command { } func validateNoOverwrites(meta *api.ObjectMeta, labels map[string]string) error { + allErrs := []error{} for key := range labels { if value, found := meta.Labels[key]; found { - return fmt.Errorf("'%s' already has a value (%s), and --overwrite is false", key, value) + allErrs = append(allErrs, fmt.Errorf("'%s' already has a value (%s), and --overwrite is false", key, value)) } } - return nil + return errors.NewAggregate(allErrs) } func parseLabels(spec []string) (map[string]string, []string, error) { diff --git a/pkg/kubectl/generate.go b/pkg/kubectl/generate.go index a7a9168c4c6..c725800e7ee 100644 --- a/pkg/kubectl/generate.go +++ b/pkg/kubectl/generate.go @@ -24,6 +24,7 @@ import ( "github.com/spf13/cobra" "k8s.io/kubernetes/pkg/runtime" + "k8s.io/kubernetes/pkg/util/errors" ) // GeneratorParam is a parameter for a generator @@ -50,15 +51,16 @@ func IsZero(i interface{}) bool { // ValidateParams ensures that all required params are present in the params map func ValidateParams(paramSpec []GeneratorParam, params map[string]interface{}) error { + allErrs := []error{} for ix := range paramSpec { if paramSpec[ix].Required { value, found := params[paramSpec[ix].Name] if !found || IsZero(value) { - return fmt.Errorf("Parameter: %s is required", paramSpec[ix].Name) + allErrs = append(allErrs, fmt.Errorf("Parameter: %s is required", paramSpec[ix].Name)) } } } - return nil + return errors.NewAggregate(allErrs) } // MakeParams is a utility that creates generator parameters from a command line