From d89868ba8f548ecac93e2ae16b40d780bbdc7897 Mon Sep 17 00:00:00 2001 From: PingWang Date: Fri, 26 Aug 2016 17:30:39 +0800 Subject: [PATCH] combine the ValidateRunOptions errors Signed-off-by: PingWang replace Aggregate with []error Signed-off-by: PingWang replace Aggregate with []error Signed-off-by: PingWang --- .../validation/universal_validation.go | 45 +++++++++++++------ 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/pkg/genericapiserver/validation/universal_validation.go b/pkg/genericapiserver/validation/universal_validation.go index f74cd0751cd..5b638599352 100644 --- a/pkg/genericapiserver/validation/universal_validation.go +++ b/pkg/genericapiserver/validation/universal_validation.go @@ -17,48 +17,67 @@ limitations under the License. package validation import ( + "fmt" + "github.com/golang/glog" "k8s.io/kubernetes/pkg/genericapiserver/options" + utilerrors "k8s.io/kubernetes/pkg/util/errors" ) // TODO: Longer term we should read this from some config store, rather than a flag. -func verifyClusterIPFlags(options *options.ServerRunOptions) { +func verifyClusterIPFlags(options *options.ServerRunOptions) []error { + errors := []error{} if options.ServiceClusterIPRange.IP == nil { - glog.Fatal("No --service-cluster-ip-range specified") + errors = append(errors, fmt.Errorf("No --service-cluster-ip-range specified")) } var ones, bits = options.ServiceClusterIPRange.Mask.Size() if bits-ones > 20 { - glog.Fatal("Specified --service-cluster-ip-range is too large") + errors = append(errors, fmt.Errorf("Specified --service-cluster-ip-range is too large")) } + return errors } -func verifyServiceNodePort(options *options.ServerRunOptions) { +func verifyServiceNodePort(options *options.ServerRunOptions) []error { + errors := []error{} if options.KubernetesServiceNodePort < 0 || options.KubernetesServiceNodePort > 65535 { - glog.Fatalf("--kubernetes-service-node-port %v must be between 0 and 65535, inclusive. If 0, the Kubernetes master service will be of type ClusterIP.", options.KubernetesServiceNodePort) + errors = append(errors, fmt.Errorf("--kubernetes-service-node-port %v must be between 0 and 65535, inclusive. If 0, the Kubernetes master service will be of type ClusterIP.", options.KubernetesServiceNodePort)) } if options.KubernetesServiceNodePort > 0 && !options.ServiceNodePortRange.Contains(options.KubernetesServiceNodePort) { - glog.Fatalf("Kubernetes service port range %v doesn't contain %v", options.ServiceNodePortRange, (options.KubernetesServiceNodePort)) + errors = append(errors, fmt.Errorf("Kubernetes service port range %v doesn't contain %v", options.ServiceNodePortRange, (options.KubernetesServiceNodePort))) } + return errors } -func verifySecureAndInsecurePort(options *options.ServerRunOptions) { +func verifySecureAndInsecurePort(options *options.ServerRunOptions) []error { + errors := []error{} if options.SecurePort < 0 || options.SecurePort > 65535 { - glog.Fatalf("--secure-port %v must be between 0 and 65535, inclusive. 0 for turning off secure port.", options.SecurePort) + errors = append(errors, fmt.Errorf("--secure-port %v must be between 0 and 65535, inclusive. 0 for turning off secure port.", options.SecurePort)) } // TODO: Allow 0 to turn off insecure port. if options.InsecurePort < 1 || options.InsecurePort > 65535 { - glog.Fatalf("--insecure-port %v must be between 1 and 65535, inclusive.", options.InsecurePort) + errors = append(errors, fmt.Errorf("--insecure-port %v must be between 1 and 65535, inclusive.", options.InsecurePort)) } if options.SecurePort == options.InsecurePort { - glog.Fatalf("--secure-port and --insecure-port cannot use the same port.") + errors = append(errors, fmt.Errorf("--secure-port and --insecure-port cannot use the same port.")) } + return errors } func ValidateRunOptions(options *options.ServerRunOptions) { - verifyClusterIPFlags(options) - verifyServiceNodePort(options) - verifySecureAndInsecurePort(options) + errors := []error{} + if errs := verifyClusterIPFlags(options); len(errs) > 0 { + errors = append(errors, errs...) + } + if errs := verifyServiceNodePort(options); len(errs) > 0 { + errors = append(errors, errs...) + } + if errs := verifySecureAndInsecurePort(options); len(errs) > 0 { + errors = append(errors, errs...) + } + if err := utilerrors.NewAggregate(errors); err != nil { + glog.Fatalf("Validate server run options failed: %v", err) + } }