mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-01 02:38:12 +00:00 
			
		
		
		
	low hanging fruit for using cobra commands
This commit is contained in:
		| @@ -21,11 +21,9 @@ go_library( | ||||
|     importpath = "k8s.io/kubernetes/cmd/cloud-controller-manager", | ||||
|     deps = [ | ||||
|         "//cmd/cloud-controller-manager/app:go_default_library", | ||||
|         "//cmd/cloud-controller-manager/app/options:go_default_library", | ||||
|         "//pkg/client/metrics/prometheus:go_default_library", | ||||
|         "//pkg/cloudprovider/providers:go_default_library", | ||||
|         "//pkg/version/prometheus:go_default_library", | ||||
|         "//pkg/version/verflag:go_default_library", | ||||
|         "//vendor/github.com/spf13/pflag:go_default_library", | ||||
|         "//vendor/k8s.io/apiserver/pkg/util/flag:go_default_library", | ||||
|         "//vendor/k8s.io/apiserver/pkg/util/logs:go_default_library", | ||||
|   | ||||
| @@ -18,10 +18,10 @@ go_library( | ||||
|         "//pkg/controller/route:go_default_library", | ||||
|         "//pkg/controller/service:go_default_library", | ||||
|         "//pkg/util/configz:go_default_library", | ||||
|         "//pkg/version/verflag:go_default_library", | ||||
|         "//vendor/github.com/golang/glog:go_default_library", | ||||
|         "//vendor/github.com/prometheus/client_golang/prometheus:go_default_library", | ||||
|         "//vendor/github.com/spf13/cobra:go_default_library", | ||||
|         "//vendor/github.com/spf13/pflag:go_default_library", | ||||
|         "//vendor/k8s.io/api/core/v1:go_default_library", | ||||
|         "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", | ||||
|         "//vendor/k8s.io/apiserver/pkg/server/healthz:go_default_library", | ||||
|   | ||||
| @@ -17,6 +17,7 @@ limitations under the License. | ||||
| package app | ||||
|  | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"math/rand" | ||||
| 	"net" | ||||
| 	"net/http" | ||||
| @@ -27,6 +28,10 @@ import ( | ||||
| 	"strings" | ||||
| 	"time" | ||||
|  | ||||
| 	"github.com/golang/glog" | ||||
| 	"github.com/prometheus/client_golang/prometheus" | ||||
| 	"github.com/spf13/cobra" | ||||
|  | ||||
| 	"k8s.io/api/core/v1" | ||||
| 	"k8s.io/apimachinery/pkg/util/wait" | ||||
| 	"k8s.io/apiserver/pkg/server/healthz" | ||||
| @@ -46,11 +51,7 @@ import ( | ||||
| 	routecontroller "k8s.io/kubernetes/pkg/controller/route" | ||||
| 	servicecontroller "k8s.io/kubernetes/pkg/controller/service" | ||||
| 	"k8s.io/kubernetes/pkg/util/configz" | ||||
|  | ||||
| 	"github.com/golang/glog" | ||||
| 	"github.com/prometheus/client_golang/prometheus" | ||||
| 	"github.com/spf13/cobra" | ||||
| 	"github.com/spf13/pflag" | ||||
| 	"k8s.io/kubernetes/pkg/version/verflag" | ||||
| ) | ||||
|  | ||||
| const ( | ||||
| @@ -61,14 +62,21 @@ const ( | ||||
| // NewCloudControllerManagerCommand creates a *cobra.Command object with default parameters | ||||
| func NewCloudControllerManagerCommand() *cobra.Command { | ||||
| 	s := options.NewCloudControllerManagerServer() | ||||
| 	s.AddFlags(pflag.CommandLine) | ||||
| 	cmd := &cobra.Command{ | ||||
| 		Use: "cloud-controller-manager", | ||||
| 		Long: `The Cloud controller manager is a daemon that embeds | ||||
| the cloud specific control loops shipped with Kubernetes.`, | ||||
| 		Run: func(cmd *cobra.Command, args []string) { | ||||
| 			verflag.PrintAndExitIfRequested() | ||||
|  | ||||
| 			if err := Run(s); err != nil { | ||||
| 				fmt.Fprintf(os.Stderr, "%v\n", err) | ||||
| 				os.Exit(1) | ||||
| 			} | ||||
|  | ||||
| 		}, | ||||
| 	} | ||||
| 	s.AddFlags(cmd.Flags()) | ||||
|  | ||||
| 	return cmd | ||||
| } | ||||
|   | ||||
| @@ -20,35 +20,40 @@ limitations under the License. | ||||
| package main | ||||
|  | ||||
| import ( | ||||
| 	goflag "flag" | ||||
| 	"fmt" | ||||
| 	"math/rand" | ||||
| 	"os" | ||||
| 	"time" | ||||
|  | ||||
| 	"k8s.io/apiserver/pkg/util/flag" | ||||
| 	utilflag "k8s.io/apiserver/pkg/util/flag" | ||||
| 	"k8s.io/apiserver/pkg/util/logs" | ||||
| 	"k8s.io/kubernetes/cmd/cloud-controller-manager/app" | ||||
| 	"k8s.io/kubernetes/cmd/cloud-controller-manager/app/options" | ||||
| 	_ "k8s.io/kubernetes/pkg/client/metrics/prometheus" // for client metric registration | ||||
| 	// NOTE: Importing all in-tree cloud-providers is not required when | ||||
| 	// implementing an out-of-tree cloud-provider. | ||||
| 	_ "k8s.io/kubernetes/pkg/cloudprovider/providers" | ||||
| 	_ "k8s.io/kubernetes/pkg/version/prometheus" // for version metric registration | ||||
| 	"k8s.io/kubernetes/pkg/version/verflag" | ||||
|  | ||||
| 	"github.com/spf13/pflag" | ||||
| ) | ||||
|  | ||||
| func main() { | ||||
| 	s := options.NewCloudControllerManagerServer() | ||||
| 	s.AddFlags(pflag.CommandLine) | ||||
| 	rand.Seed(time.Now().UTC().UnixNano()) | ||||
|  | ||||
| 	flag.InitFlags() | ||||
| 	command := app.NewCloudControllerManagerCommand() | ||||
|  | ||||
| 	// TODO: once we switch everything over to Cobra commands, we can go back to calling | ||||
| 	// utilflag.InitFlags() (by removing its pflag.Parse() call). For now, we have to set the | ||||
| 	// normalize func and add the go flag set by hand. | ||||
| 	pflag.CommandLine.SetNormalizeFunc(utilflag.WordSepNormalizeFunc) | ||||
| 	pflag.CommandLine.AddGoFlagSet(goflag.CommandLine) | ||||
| 	// utilflag.InitFlags() | ||||
| 	logs.InitLogs() | ||||
| 	defer logs.FlushLogs() | ||||
|  | ||||
| 	verflag.PrintAndExitIfRequested() | ||||
|  | ||||
| 	if err := app.Run(s); err != nil { | ||||
| 		fmt.Fprintf(os.Stderr, "%v\n", err) | ||||
| 	if err := command.Execute(); err != nil { | ||||
| 		fmt.Fprintf(os.Stderr, "error: %v\n", err) | ||||
| 		os.Exit(1) | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -32,7 +32,6 @@ go_library( | ||||
|     srcs = [ | ||||
|         "cloud-controller-manager.go", | ||||
|         "hyperkube.go", | ||||
|         "kube-aggregator.go", | ||||
|         "kube-apiserver.go", | ||||
|         "kube-controller-manager.go", | ||||
|         "kube-proxy.go", | ||||
| @@ -66,7 +65,6 @@ go_library( | ||||
|         "//vendor/k8s.io/apiserver/pkg/server/healthz:go_default_library", | ||||
|         "//vendor/k8s.io/apiserver/pkg/util/flag:go_default_library", | ||||
|         "//vendor/k8s.io/apiserver/pkg/util/logs:go_default_library", | ||||
|         "//vendor/k8s.io/kube-aggregator/pkg/cmd/server:go_default_library", | ||||
|     ], | ||||
| ) | ||||
|  | ||||
|   | ||||
| @@ -1,52 +0,0 @@ | ||||
| /* | ||||
| Copyright 2017 The Kubernetes Authors. | ||||
|  | ||||
| Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| you may not use this file except in compliance with the License. | ||||
| You may obtain a copy of the License at | ||||
|  | ||||
|     http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  | ||||
| Unless required by applicable law or agreed to in writing, software | ||||
| distributed under the License is distributed on an "AS IS" BASIS, | ||||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| See the License for the specific language governing permissions and | ||||
| limitations under the License. | ||||
| */ | ||||
|  | ||||
| package main | ||||
|  | ||||
| import ( | ||||
| 	"os" | ||||
|  | ||||
| 	"k8s.io/kube-aggregator/pkg/cmd/server" | ||||
| ) | ||||
|  | ||||
| // NewKubeAggregator creates a new hyperkube Server object that includes the | ||||
| // description and flags. | ||||
| func NewKubeAggregator() *Server { | ||||
| 	o := server.NewDefaultOptions(os.Stdout, os.Stderr) | ||||
|  | ||||
| 	hks := Server{ | ||||
| 		name:            "aggregator", | ||||
| 		AlternativeName: "kube-aggregator", | ||||
| 		SimpleUsage:     "aggregator", | ||||
| 		Long:            "Aggregator for Kubernetes-style API servers: dynamic registration, discovery summarization, secure proxy.", | ||||
| 		Run: func(_ *Server, args []string, stopCh <-chan struct{}) error { | ||||
| 			if err := o.Complete(); err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			if err := o.Validate(args); err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			if err := o.RunAggregator(stopCh); err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			return nil | ||||
| 		}, | ||||
| 		RespectsStopCh: true, | ||||
| 	} | ||||
|  | ||||
| 	o.AddFlags(hks.Flags()) | ||||
| 	return &hks | ||||
| } | ||||
| @@ -44,7 +44,6 @@ func main() { | ||||
| 		hk.AddServer(kubelet) | ||||
| 	} | ||||
| 	hk.AddServer(NewKubeProxy()) | ||||
| 	hk.AddServer(NewKubeAggregator()) | ||||
|  | ||||
| 	// Alpha servers | ||||
| 	hk.AddAlphaServer(NewCloudControllerManager()) | ||||
|   | ||||
| @@ -21,12 +21,9 @@ go_library( | ||||
|     importpath = "k8s.io/kubernetes/cmd/kube-apiserver", | ||||
|     deps = [ | ||||
|         "//cmd/kube-apiserver/app:go_default_library", | ||||
|         "//cmd/kube-apiserver/app/options:go_default_library", | ||||
|         "//pkg/client/metrics/prometheus:go_default_library", | ||||
|         "//pkg/version/prometheus:go_default_library", | ||||
|         "//pkg/version/verflag:go_default_library", | ||||
|         "//vendor/github.com/spf13/pflag:go_default_library", | ||||
|         "//vendor/k8s.io/apiserver/pkg/server:go_default_library", | ||||
|         "//vendor/k8s.io/apiserver/pkg/util/flag:go_default_library", | ||||
|         "//vendor/k8s.io/apiserver/pkg/util/logs:go_default_library", | ||||
|     ], | ||||
|   | ||||
| @@ -19,6 +19,7 @@ limitations under the License. | ||||
| package main | ||||
|  | ||||
| import ( | ||||
| 	goflag "flag" | ||||
| 	"fmt" | ||||
| 	"math/rand" | ||||
| 	"os" | ||||
| @@ -26,31 +27,29 @@ import ( | ||||
|  | ||||
| 	"github.com/spf13/pflag" | ||||
|  | ||||
| 	"k8s.io/apiserver/pkg/server" | ||||
| 	"k8s.io/apiserver/pkg/util/flag" | ||||
| 	utilflag "k8s.io/apiserver/pkg/util/flag" | ||||
| 	"k8s.io/apiserver/pkg/util/logs" | ||||
| 	"k8s.io/kubernetes/cmd/kube-apiserver/app" | ||||
| 	"k8s.io/kubernetes/cmd/kube-apiserver/app/options" | ||||
| 	_ "k8s.io/kubernetes/pkg/client/metrics/prometheus" // for client metric registration | ||||
| 	_ "k8s.io/kubernetes/pkg/version/prometheus"        // for version metric registration | ||||
| 	"k8s.io/kubernetes/pkg/version/verflag" | ||||
| ) | ||||
|  | ||||
| func main() { | ||||
| 	rand.Seed(time.Now().UTC().UnixNano()) | ||||
|  | ||||
| 	s := options.NewServerRunOptions() | ||||
| 	s.AddFlags(pflag.CommandLine) | ||||
| 	command := app.NewAPIServerCommand() | ||||
|  | ||||
| 	flag.InitFlags() | ||||
| 	// TODO: once we switch everything over to Cobra commands, we can go back to calling | ||||
| 	// utilflag.InitFlags() (by removing its pflag.Parse() call). For now, we have to set the | ||||
| 	// normalize func and add the go flag set by hand. | ||||
| 	pflag.CommandLine.SetNormalizeFunc(utilflag.WordSepNormalizeFunc) | ||||
| 	pflag.CommandLine.AddGoFlagSet(goflag.CommandLine) | ||||
| 	// utilflag.InitFlags() | ||||
| 	logs.InitLogs() | ||||
| 	defer logs.FlushLogs() | ||||
|  | ||||
| 	verflag.PrintAndExitIfRequested() | ||||
|  | ||||
| 	stopCh := server.SetupSignalHandler() | ||||
| 	if err := app.Run(s, stopCh); err != nil { | ||||
| 		fmt.Fprintf(os.Stderr, "%v\n", err) | ||||
| 	if err := command.Execute(); err != nil { | ||||
| 		fmt.Fprintf(os.Stderr, "error: %v\n", err) | ||||
| 		os.Exit(1) | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -46,11 +46,11 @@ go_library( | ||||
|         "//pkg/util/reflector/prometheus:go_default_library", | ||||
|         "//pkg/util/workqueue/prometheus:go_default_library", | ||||
|         "//pkg/version:go_default_library", | ||||
|         "//pkg/version/verflag:go_default_library", | ||||
|         "//plugin/pkg/auth/authenticator/token/bootstrap:go_default_library", | ||||
|         "//vendor/github.com/go-openapi/spec:go_default_library", | ||||
|         "//vendor/github.com/golang/glog:go_default_library", | ||||
|         "//vendor/github.com/spf13/cobra:go_default_library", | ||||
|         "//vendor/github.com/spf13/pflag:go_default_library", | ||||
|         "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library", | ||||
|         "//vendor/k8s.io/apiextensions-apiserver/pkg/apiserver:go_default_library", | ||||
|         "//vendor/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion:go_default_library", | ||||
|   | ||||
| @@ -35,7 +35,6 @@ import ( | ||||
| 	"github.com/go-openapi/spec" | ||||
| 	"github.com/golang/glog" | ||||
| 	"github.com/spf13/cobra" | ||||
| 	"github.com/spf13/pflag" | ||||
|  | ||||
| 	"k8s.io/apimachinery/pkg/apis/meta/v1" | ||||
| 	"k8s.io/apimachinery/pkg/runtime/schema" | ||||
| @@ -56,6 +55,7 @@ import ( | ||||
| 	openapi "k8s.io/kube-openapi/pkg/common" | ||||
|  | ||||
| 	webhookinit "k8s.io/apiserver/pkg/admission/plugin/webhook/initializer" | ||||
| 	"k8s.io/apiserver/pkg/server" | ||||
| 	"k8s.io/apiserver/pkg/storage/etcd3/preflight" | ||||
| 	clientgoinformers "k8s.io/client-go/informers" | ||||
| 	clientgoclientset "k8s.io/client-go/kubernetes" | ||||
| @@ -93,6 +93,7 @@ import ( | ||||
|  | ||||
| 	_ "k8s.io/kubernetes/pkg/util/reflector/prometheus" // for reflector metric registration | ||||
| 	_ "k8s.io/kubernetes/pkg/util/workqueue/prometheus" // for workqueue metric registration | ||||
| 	"k8s.io/kubernetes/pkg/version/verflag" | ||||
| ) | ||||
|  | ||||
| const etcdRetryLimit = 60 | ||||
| @@ -101,7 +102,6 @@ const etcdRetryInterval = 1 * time.Second | ||||
| // NewAPIServerCommand creates a *cobra.Command object with default parameters | ||||
| func NewAPIServerCommand() *cobra.Command { | ||||
| 	s := options.NewServerRunOptions() | ||||
| 	s.AddFlags(pflag.CommandLine) | ||||
| 	cmd := &cobra.Command{ | ||||
| 		Use: "kube-apiserver", | ||||
| 		Long: `The Kubernetes API server validates and configures data | ||||
| @@ -109,8 +109,16 @@ for the api objects which include pods, services, replicationcontrollers, and | ||||
| others. The API Server services REST operations and provides the frontend to the | ||||
| cluster's shared state through which all other components interact.`, | ||||
| 		Run: func(cmd *cobra.Command, args []string) { | ||||
| 			verflag.PrintAndExitIfRequested() | ||||
|  | ||||
| 			stopCh := server.SetupSignalHandler() | ||||
| 			if err := Run(s, stopCh); err != nil { | ||||
| 				fmt.Fprintf(os.Stderr, "%v\n", err) | ||||
| 				os.Exit(1) | ||||
| 			} | ||||
| 		}, | ||||
| 	} | ||||
| 	s.AddFlags(cmd.Flags()) | ||||
|  | ||||
| 	return cmd | ||||
| } | ||||
|   | ||||
| @@ -22,7 +22,9 @@ package main | ||||
|  | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"math/rand" | ||||
| 	"os" | ||||
| 	"time" | ||||
|  | ||||
| 	"k8s.io/apiserver/pkg/util/flag" | ||||
| 	"k8s.io/apiserver/pkg/util/logs" | ||||
| @@ -38,6 +40,8 @@ import ( | ||||
| ) | ||||
|  | ||||
| func main() { | ||||
| 	rand.Seed(time.Now().UTC().UnixNano()) | ||||
|  | ||||
| 	s := options.NewCMServer() | ||||
| 	s.AddFlags(pflag.CommandLine, app.KnownControllers(), app.ControllersDisabledByDefault.List()) | ||||
|  | ||||
|   | ||||
| @@ -19,7 +19,9 @@ package main | ||||
| import ( | ||||
| 	goflag "flag" | ||||
| 	"fmt" | ||||
| 	"math/rand" | ||||
| 	"os" | ||||
| 	"time" | ||||
|  | ||||
| 	"github.com/spf13/pflag" | ||||
|  | ||||
| @@ -31,6 +33,8 @@ import ( | ||||
| ) | ||||
|  | ||||
| func main() { | ||||
| 	rand.Seed(time.Now().UTC().UnixNano()) | ||||
|  | ||||
| 	command := app.NewProxyCommand() | ||||
|  | ||||
| 	// TODO: once we switch everything over to Cobra commands, we can go back to calling | ||||
|   | ||||
| @@ -23,6 +23,7 @@ go_library( | ||||
|         "//cmd/kube-scheduler/app:go_default_library", | ||||
|         "//pkg/client/metrics/prometheus:go_default_library", | ||||
|         "//pkg/version/prometheus:go_default_library", | ||||
|         "//vendor/github.com/spf13/pflag:go_default_library", | ||||
|         "//vendor/k8s.io/apiserver/pkg/util/flag:go_default_library", | ||||
|         "//vendor/k8s.io/apiserver/pkg/util/logs:go_default_library", | ||||
|     ], | ||||
|   | ||||
| @@ -341,8 +341,7 @@ through the API as necessary.`, | ||||
| 		glog.Fatalf("unable to apply config defaults: %v", err) | ||||
| 	} | ||||
|  | ||||
| 	opts.AddFlags(pflag.CommandLine) | ||||
|  | ||||
| 	opts.AddFlags(cmd.Flags()) | ||||
| 	cmd.MarkFlagFilename("config", "yaml", "yml", "json") | ||||
|  | ||||
| 	return cmd | ||||
|   | ||||
| @@ -17,8 +17,12 @@ limitations under the License. | ||||
| package main | ||||
|  | ||||
| import ( | ||||
| 	goflag "flag" | ||||
| 	"math/rand" | ||||
| 	"os" | ||||
| 	"time" | ||||
|  | ||||
| 	"github.com/spf13/pflag" | ||||
| 	utilflag "k8s.io/apiserver/pkg/util/flag" | ||||
| 	"k8s.io/apiserver/pkg/util/logs" | ||||
| 	"k8s.io/kubernetes/cmd/kube-scheduler/app" | ||||
| @@ -27,9 +31,16 @@ import ( | ||||
| ) | ||||
|  | ||||
| func main() { | ||||
| 	rand.Seed(time.Now().UTC().UnixNano()) | ||||
|  | ||||
| 	command := app.NewSchedulerCommand() | ||||
|  | ||||
| 	utilflag.InitFlags() | ||||
| 	// TODO: once we switch everything over to Cobra commands, we can go back to calling | ||||
| 	// utilflag.InitFlags() (by removing its pflag.Parse() call). For now, we have to set the | ||||
| 	// normalize func and add the go flag set by hand. | ||||
| 	pflag.CommandLine.SetNormalizeFunc(utilflag.WordSepNormalizeFunc) | ||||
| 	pflag.CommandLine.AddGoFlagSet(goflag.CommandLine) | ||||
| 	// utilflag.InitFlags() | ||||
| 	logs.InitLogs() | ||||
| 	defer logs.FlushLogs() | ||||
|  | ||||
|   | ||||
| @@ -19,7 +19,12 @@ go_library( | ||||
|     srcs = ["kubectl.go"], | ||||
|     importpath = "k8s.io/kubernetes/cmd/kubectl", | ||||
|     visibility = ["//visibility:private"], | ||||
|     deps = ["//cmd/kubectl/app:go_default_library"], | ||||
|     deps = [ | ||||
|         "//pkg/kubectl/cmd:go_default_library", | ||||
|         "//vendor/github.com/spf13/pflag:go_default_library", | ||||
|         "//vendor/k8s.io/apiserver/pkg/util/flag:go_default_library", | ||||
|         "//vendor/k8s.io/apiserver/pkg/util/logs:go_default_library", | ||||
|     ], | ||||
| ) | ||||
|  | ||||
| filegroup( | ||||
|   | ||||
| @@ -17,16 +17,33 @@ limitations under the License. | ||||
| package main | ||||
|  | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	goflag "flag" | ||||
| 	"math/rand" | ||||
| 	"os" | ||||
| 	"time" | ||||
|  | ||||
| 	"k8s.io/kubernetes/cmd/kubectl/app" | ||||
| 	"github.com/spf13/pflag" | ||||
|  | ||||
| 	utilflag "k8s.io/apiserver/pkg/util/flag" | ||||
| 	"k8s.io/apiserver/pkg/util/logs" | ||||
| 	"k8s.io/kubernetes/pkg/kubectl/cmd" | ||||
| ) | ||||
|  | ||||
| func main() { | ||||
| 	if err := app.Run(); err != nil { | ||||
| 		fmt.Fprintf(os.Stderr, "error: %v\n", err) | ||||
| 	rand.Seed(time.Now().UTC().UnixNano()) | ||||
|  | ||||
| 	command := cmd.NewDefaultKubectlCommand() | ||||
|  | ||||
| 	// TODO: once we switch everything over to Cobra commands, we can go back to calling | ||||
| 	// utilflag.InitFlags() (by removing its pflag.Parse() call). For now, we have to set the | ||||
| 	// normalize func and add the go flag set by hand. | ||||
| 	pflag.CommandLine.SetNormalizeFunc(utilflag.WordSepNormalizeFunc) | ||||
| 	pflag.CommandLine.AddGoFlagSet(goflag.CommandLine) | ||||
| 	// utilflag.InitFlags() | ||||
| 	logs.InitLogs() | ||||
| 	defer logs.FlushLogs() | ||||
|  | ||||
| 	if err := command.Execute(); err != nil { | ||||
| 		os.Exit(1) | ||||
| 	} | ||||
| 	os.Exit(0) | ||||
| } | ||||
|   | ||||
| @@ -22,7 +22,9 @@ package main | ||||
|  | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"math/rand" | ||||
| 	"os" | ||||
| 	"time" | ||||
|  | ||||
| 	"github.com/golang/glog" | ||||
| 	"github.com/spf13/pflag" | ||||
| @@ -53,6 +55,8 @@ func die(err error) { | ||||
| } | ||||
|  | ||||
| func main() { | ||||
| 	rand.Seed(time.Now().UTC().UnixNano()) | ||||
|  | ||||
| 	fs := pflag.NewFlagSet(os.Args[0], pflag.ExitOnError) | ||||
| 	// set the normalize func, similar to k8s.io/apiserver/pkg/util/flag/flags.go:InitFlags | ||||
| 	fs.SetNormalizeFunc(flag.WordSepNormalizeFunc) | ||||
|   | ||||
| @@ -19,6 +19,7 @@ package cmd | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"io" | ||||
| 	"os" | ||||
|  | ||||
| 	"k8s.io/apiserver/pkg/util/flag" | ||||
| 	"k8s.io/client-go/tools/clientcmd" | ||||
| @@ -212,6 +213,10 @@ var ( | ||||
| 	} | ||||
| ) | ||||
|  | ||||
| func NewDefaultKubectlCommand() *cobra.Command { | ||||
| 	return NewKubectlCommand(cmdutil.NewFactory(nil), os.Stdin, os.Stdout, os.Stderr) | ||||
| } | ||||
|  | ||||
| // NewKubectlCommand creates the `kubectl` command and its nested children. | ||||
| func NewKubectlCommand(f cmdutil.Factory, in io.Reader, out, err io.Writer) *cobra.Command { | ||||
| 	// Parent command to which all subcommands are added. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 David Eads
					David Eads