diff --git a/cmd/kube-controller-manager/BUILD b/cmd/kube-controller-manager/BUILD index d5152c0e1c..0ecb2ccd55 100644 --- a/cmd/kube-controller-manager/BUILD +++ b/cmd/kube-controller-manager/BUILD @@ -21,12 +21,10 @@ go_library( importpath = "k8s.io/kubernetes/cmd/kube-controller-manager", deps = [ "//cmd/kube-controller-manager/app:go_default_library", - "//cmd/kube-controller-manager/app/options:go_default_library", "//pkg/client/metrics/prometheus:go_default_library", "//pkg/util/reflector/prometheus:go_default_library", "//pkg/util/workqueue/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/util/flag:go_default_library", "//vendor/k8s.io/apiserver/pkg/util/logs:go_default_library", diff --git a/cmd/kube-controller-manager/app/BUILD b/cmd/kube-controller-manager/app/BUILD index d6940c30d3..14c11c12d6 100644 --- a/cmd/kube-controller-manager/app/BUILD +++ b/cmd/kube-controller-manager/app/BUILD @@ -83,6 +83,7 @@ go_library( "//pkg/util/configz:go_default_library", "//pkg/util/metrics:go_default_library", "//pkg/version:go_default_library", + "//pkg/version/verflag:go_default_library", "//pkg/volume:go_default_library", "//pkg/volume/aws_ebs:go_default_library", "//pkg/volume/azure_dd:go_default_library", @@ -109,7 +110,6 @@ go_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/api/meta:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", diff --git a/cmd/kube-controller-manager/app/controllermanager.go b/cmd/kube-controller-manager/app/controllermanager.go index 664acf362f..407732862a 100644 --- a/cmd/kube-controller-manager/app/controllermanager.go +++ b/cmd/kube-controller-manager/app/controllermanager.go @@ -63,7 +63,7 @@ import ( "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 ( @@ -81,7 +81,6 @@ const ( // NewControllerManagerCommand creates a *cobra.Command object with default parameters func NewControllerManagerCommand() *cobra.Command { s := options.NewCMServer() - s.AddFlags(pflag.CommandLine, KnownControllers(), ControllersDisabledByDefault.List()) cmd := &cobra.Command{ Use: "kube-controller-manager", Long: `The Kubernetes controller manager is a daemon that embeds @@ -93,8 +92,11 @@ current state towards the desired state. Examples of controllers that ship with Kubernetes today are the replication controller, endpoints controller, namespace controller, and serviceaccounts controller.`, Run: func(cmd *cobra.Command, args []string) { + verflag.PrintAndExitIfRequested() + Run(s) }, } + s.AddFlags(cmd.Flags(), KnownControllers(), ControllersDisabledByDefault.List()) return cmd } diff --git a/cmd/kube-controller-manager/controller-manager.go b/cmd/kube-controller-manager/controller-manager.go index 6618dae332..bd7c3f62ab 100644 --- a/cmd/kube-controller-manager/controller-manager.go +++ b/cmd/kube-controller-manager/controller-manager.go @@ -21,38 +21,37 @@ limitations under the License. package main import ( - "fmt" + goflag "flag" "math/rand" "os" "time" - "k8s.io/apiserver/pkg/util/flag" + "github.com/spf13/pflag" + + utilflag "k8s.io/apiserver/pkg/util/flag" "k8s.io/apiserver/pkg/util/logs" "k8s.io/kubernetes/cmd/kube-controller-manager/app" - "k8s.io/kubernetes/cmd/kube-controller-manager/app/options" _ "k8s.io/kubernetes/pkg/client/metrics/prometheus" // for client metric registration _ "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/prometheus" // for version metric registration - "k8s.io/kubernetes/pkg/version/verflag" - - "github.com/spf13/pflag" ) func main() { rand.Seed(time.Now().UTC().UnixNano()) - s := options.NewCMServer() - s.AddFlags(pflag.CommandLine, app.KnownControllers(), app.ControllersDisabledByDefault.List()) + command := app.NewControllerManagerCommand() - 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() - - if err := app.Run(s); err != nil { - fmt.Fprintf(os.Stderr, "%v\n", err) + if err := command.Execute(); err != nil { os.Exit(1) } }