From 10dd5d663197abae40374c3eaa5c0ec2b638a234 Mon Sep 17 00:00:00 2001 From: Jay Lim Date: Wed, 21 Nov 2018 10:46:27 +0800 Subject: [PATCH] *-controller-manager: fix missing global flags for --help --- .../app/controllermanager.go | 7 +++- .../controller-manager.go | 6 ---- .../app/controllermanager.go | 7 +++- .../controller-manager.go | 6 ---- .../pkg/util/globalflag/globalflags.go | 34 ++++++++----------- 5 files changed, 26 insertions(+), 34 deletions(-) diff --git a/cmd/cloud-controller-manager/app/controllermanager.go b/cmd/cloud-controller-manager/app/controllermanager.go index 99cf674192..73f99ecf77 100644 --- a/cmd/cloud-controller-manager/app/controllermanager.go +++ b/cmd/cloud-controller-manager/app/controllermanager.go @@ -25,20 +25,22 @@ import ( "time" "github.com/spf13/cobra" - "k8s.io/klog" "k8s.io/apimachinery/pkg/util/uuid" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/apiserver/pkg/server" "k8s.io/apiserver/pkg/server/healthz" apiserverflag "k8s.io/apiserver/pkg/util/flag" + "k8s.io/apiserver/pkg/util/globalflag" "k8s.io/client-go/kubernetes" "k8s.io/client-go/tools/leaderelection" "k8s.io/client-go/tools/leaderelection/resourcelock" cloudprovider "k8s.io/cloud-provider" + "k8s.io/klog" cloudcontrollerconfig "k8s.io/kubernetes/cmd/cloud-controller-manager/app/config" "k8s.io/kubernetes/cmd/cloud-controller-manager/app/options" genericcontrollermanager "k8s.io/kubernetes/cmd/controller-manager/app" + cmoptions "k8s.io/kubernetes/cmd/controller-manager/app/options" cloudcontrollers "k8s.io/kubernetes/pkg/controller/cloud" routecontroller "k8s.io/kubernetes/pkg/controller/route" servicecontroller "k8s.io/kubernetes/pkg/controller/service" @@ -86,6 +88,9 @@ the cloud specific control loops shipped with Kubernetes.`, fs := cmd.Flags() namedFlagSets := s.Flags() + verflag.AddFlags(namedFlagSets.FlagSet("global")) + globalflag.AddGlobalFlags(namedFlagSets.FlagSet("global"), cmd.Name()) + cmoptions.AddCustomGlobalFlags(namedFlagSets.FlagSet("generic")) for _, f := range namedFlagSets.FlagSets { fs.AddFlagSet(f) } diff --git a/cmd/cloud-controller-manager/controller-manager.go b/cmd/cloud-controller-manager/controller-manager.go index 39eacd52d6..280069e4d8 100644 --- a/cmd/cloud-controller-manager/controller-manager.go +++ b/cmd/cloud-controller-manager/controller-manager.go @@ -20,13 +20,11 @@ limitations under the License. package main import ( - goflag "flag" "fmt" "math/rand" "os" "time" - utilflag "k8s.io/apiserver/pkg/util/flag" "k8s.io/apiserver/pkg/util/logs" "k8s.io/kubernetes/cmd/cloud-controller-manager/app" _ "k8s.io/kubernetes/pkg/client/metrics/prometheus" // for client metric registration @@ -34,8 +32,6 @@ import ( // implementing an out-of-tree cloud-provider. _ "k8s.io/kubernetes/pkg/cloudprovider/providers" _ "k8s.io/kubernetes/pkg/version/prometheus" // for version metric registration - - "github.com/spf13/pflag" ) func main() { @@ -46,8 +42,6 @@ func main() { // 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() diff --git a/cmd/kube-controller-manager/app/controllermanager.go b/cmd/kube-controller-manager/app/controllermanager.go index 5e68609219..2cf1ddf932 100644 --- a/cmd/kube-controller-manager/app/controllermanager.go +++ b/cmd/kube-controller-manager/app/controllermanager.go @@ -30,7 +30,6 @@ import ( "time" "github.com/spf13/cobra" - "k8s.io/klog" "k8s.io/apimachinery/pkg/runtime/schema" utilruntime "k8s.io/apimachinery/pkg/util/runtime" @@ -41,6 +40,7 @@ import ( "k8s.io/apiserver/pkg/server/healthz" "k8s.io/apiserver/pkg/server/mux" apiserverflag "k8s.io/apiserver/pkg/util/flag" + "k8s.io/apiserver/pkg/util/globalflag" cacheddiscovery "k8s.io/client-go/discovery/cached" "k8s.io/client-go/informers" restclient "k8s.io/client-go/rest" @@ -49,7 +49,9 @@ import ( "k8s.io/client-go/tools/leaderelection/resourcelock" certutil "k8s.io/client-go/util/cert" cloudprovider "k8s.io/cloud-provider" + "k8s.io/klog" genericcontrollermanager "k8s.io/kubernetes/cmd/controller-manager/app" + cmoptions "k8s.io/kubernetes/cmd/controller-manager/app/options" "k8s.io/kubernetes/cmd/kube-controller-manager/app/config" "k8s.io/kubernetes/cmd/kube-controller-manager/app/options" "k8s.io/kubernetes/pkg/controller" @@ -112,6 +114,9 @@ controller, and serviceaccounts controller.`, fs := cmd.Flags() namedFlagSets := s.Flags(KnownControllers(), ControllersDisabledByDefault.List()) + verflag.AddFlags(namedFlagSets.FlagSet("global")) + globalflag.AddGlobalFlags(namedFlagSets.FlagSet("global"), cmd.Name()) + cmoptions.AddCustomGlobalFlags(namedFlagSets.FlagSet("generic")) for _, f := range namedFlagSets.FlagSets { fs.AddFlagSet(f) } diff --git a/cmd/kube-controller-manager/controller-manager.go b/cmd/kube-controller-manager/controller-manager.go index 8dd1f29883..7ae1192f97 100644 --- a/cmd/kube-controller-manager/controller-manager.go +++ b/cmd/kube-controller-manager/controller-manager.go @@ -21,15 +21,11 @@ limitations under the License. package main import ( - goflag "flag" "fmt" "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-controller-manager/app" _ "k8s.io/kubernetes/pkg/client/metrics/prometheus" // for client metric registration @@ -46,8 +42,6 @@ func main() { // 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() diff --git a/staging/src/k8s.io/apiserver/pkg/util/globalflag/globalflags.go b/staging/src/k8s.io/apiserver/pkg/util/globalflag/globalflags.go index c00ef7b9f1..b49c8e9dc8 100644 --- a/staging/src/k8s.io/apiserver/pkg/util/globalflag/globalflags.go +++ b/staging/src/k8s.io/apiserver/pkg/util/globalflag/globalflags.go @@ -19,7 +19,6 @@ package globalflag import ( "flag" "fmt" - "os" "strings" "github.com/spf13/pflag" @@ -28,7 +27,7 @@ import ( ) // AddGlobalFlags explicitly registers flags that libraries (klog, verflag, etc.) register -// against the global flagsets from "flag" and "github.com/spf13/pflag". +// against the global flagsets from "flag" and "k8s.io/klog". // We do this in order to prevent unwanted flags from leaking into the component's flagset. func AddGlobalFlags(fs *pflag.FlagSet, name string) { addGlogFlags(fs) @@ -39,21 +38,16 @@ func AddGlobalFlags(fs *pflag.FlagSet, name string) { // addGlogFlags explicitly registers flags that klog libraries(k8s.io/klog) register. func addGlogFlags(fs *pflag.FlagSet) { - // lookup flags in global flag set and re-register the values with our flagset - global := flag.CommandLine - local := pflag.NewFlagSet(os.Args[0], pflag.ExitOnError) - - register(global, local, "logtostderr") - register(global, local, "alsologtostderr") - register(global, local, "v") - register(global, local, "skip_headers") - register(global, local, "stderrthreshold") - register(global, local, "vmodule") - register(global, local, "log_backtrace_at") - register(global, local, "log_dir") - register(global, local, "log_file") - - fs.AddFlagSet(local) + // lookup flags of klog libraries in global flag set and re-register the values with our flagset + Register(fs, "logtostderr") + Register(fs, "alsologtostderr") + Register(fs, "v") + Register(fs, "skip_headers") + Register(fs, "stderrthreshold") + Register(fs, "vmodule") + Register(fs, "log_backtrace_at") + Register(fs, "log_dir") + Register(fs, "log_file") } // normalize replaces underscores with hyphens @@ -62,9 +56,9 @@ func normalize(s string) string { return strings.Replace(s, "_", "-", -1) } -// register adds a flag to local that targets the Value associated with the Flag named globalName in global -func register(global *flag.FlagSet, local *pflag.FlagSet, globalName string) { - if f := global.Lookup(globalName); f != nil { +// Register adds a flag to local that targets the Value associated with the Flag named globalName in flag.CommandLine. +func Register(local *pflag.FlagSet, globalName string) { + if f := flag.CommandLine.Lookup(globalName); f != nil { pflagFlag := pflag.PFlagFromGoFlag(f) pflagFlag.Name = normalize(pflagFlag.Name) local.AddFlag(pflagFlag)