diff --git a/cmd/cloud-controller-manager/main.go b/cmd/cloud-controller-manager/main.go index 23ec3eb65f6..b5e20b6543c 100644 --- a/cmd/cloud-controller-manager/main.go +++ b/cmd/cloud-controller-manager/main.go @@ -48,6 +48,8 @@ import ( func main() { rand.Seed(time.Now().UnixNano()) + pflag.CommandLine.SetNormalizeFunc(cliflag.WordSepNormalizeFunc) + ccmOptions, err := options.NewCloudControllerManagerOptions() if err != nil { klog.Fatalf("unable to initialize command options: %v", err) @@ -70,12 +72,6 @@ func main() { command := app.NewCloudControllerManagerCommand(ccmOptions, cloudInitializer, controllerInitializers, fss, wait.NeverStop) - // 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. - // Here is an sample - pflag.CommandLine.SetNormalizeFunc(cliflag.WordSepNormalizeFunc) - // utilflag.InitFlags() logs.InitLogs() defer logs.FlushLogs() diff --git a/cmd/kube-apiserver/apiserver.go b/cmd/kube-apiserver/apiserver.go index 97ac595d836..e267f85c34b 100644 --- a/cmd/kube-apiserver/apiserver.go +++ b/cmd/kube-apiserver/apiserver.go @@ -23,6 +23,9 @@ import ( "os" "time" + "github.com/spf13/pflag" + + cliflag "k8s.io/component-base/cli/flag" "k8s.io/component-base/logs" _ "k8s.io/component-base/metrics/prometheus/clientgo" // load all the prometheus client-go plugins _ "k8s.io/component-base/metrics/prometheus/version" // for version metric registration @@ -32,12 +35,10 @@ import ( func main() { rand.Seed(time.Now().UnixNano()) + pflag.CommandLine.SetNormalizeFunc(cliflag.WordSepNormalizeFunc) + command := app.NewAPIServerCommand() - // 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. - // utilflag.InitFlags() logs.InitLogs() defer logs.FlushLogs() diff --git a/cmd/kube-controller-manager/controller-manager.go b/cmd/kube-controller-manager/controller-manager.go index 4d8fb778e94..8767aaf6974 100644 --- a/cmd/kube-controller-manager/controller-manager.go +++ b/cmd/kube-controller-manager/controller-manager.go @@ -25,6 +25,9 @@ import ( "os" "time" + "github.com/spf13/pflag" + + cliflag "k8s.io/component-base/cli/flag" "k8s.io/component-base/logs" _ "k8s.io/component-base/metrics/prometheus/clientgo" // load all the prometheus client-go plugin _ "k8s.io/component-base/metrics/prometheus/version" // for version metric registration @@ -34,12 +37,10 @@ import ( func main() { rand.Seed(time.Now().UnixNano()) + pflag.CommandLine.SetNormalizeFunc(cliflag.WordSepNormalizeFunc) + command := app.NewControllerManagerCommand() - // 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. - // utilflag.InitFlags() logs.InitLogs() defer logs.FlushLogs() diff --git a/cmd/kube-scheduler/scheduler.go b/cmd/kube-scheduler/scheduler.go index eff69614f06..2f840c86920 100644 --- a/cmd/kube-scheduler/scheduler.go +++ b/cmd/kube-scheduler/scheduler.go @@ -33,13 +33,10 @@ import ( func main() { rand.Seed(time.Now().UnixNano()) + pflag.CommandLine.SetNormalizeFunc(cliflag.WordSepNormalizeFunc) + command := app.NewSchedulerCommand() - // 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(cliflag.WordSepNormalizeFunc) - // utilflag.InitFlags() logs.InitLogs() defer logs.FlushLogs() diff --git a/staging/src/k8s.io/component-base/cli/flag/sectioned.go b/staging/src/k8s.io/component-base/cli/flag/sectioned.go index 493a6c0f0f9..d829177674e 100644 --- a/staging/src/k8s.io/component-base/cli/flag/sectioned.go +++ b/staging/src/k8s.io/component-base/cli/flag/sectioned.go @@ -31,6 +31,8 @@ type NamedFlagSets struct { Order []string // FlagSets stores the flag sets by name. FlagSets map[string]*pflag.FlagSet + // NormalizeNameFunc is the normalize function which used to initialize FlagSets created by NamedFlagSets. + NormalizeNameFunc func(f *pflag.FlagSet, name string) pflag.NormalizedName } // FlagSet returns the flag set with the given name and adds it to the @@ -40,7 +42,12 @@ func (nfs *NamedFlagSets) FlagSet(name string) *pflag.FlagSet { nfs.FlagSets = map[string]*pflag.FlagSet{} } if _, ok := nfs.FlagSets[name]; !ok { - nfs.FlagSets[name] = pflag.NewFlagSet(name, pflag.ExitOnError) + flagSet := pflag.NewFlagSet(name, pflag.ExitOnError) + flagSet.SetNormalizeFunc(pflag.CommandLine.GetNormalizeFunc()) + if nfs.NormalizeNameFunc != nil { + flagSet.SetNormalizeFunc(nfs.NormalizeNameFunc) + } + nfs.FlagSets[name] = flagSet nfs.Order = append(nfs.Order, name) } return nfs.FlagSets[name]