From 408258c6d5ae07610eca39f991ee81853350c1b8 Mon Sep 17 00:00:00 2001 From: cici37 Date: Tue, 2 Mar 2021 10:26:51 -0800 Subject: [PATCH] Update to use cliflag.NamedFlagSets --- cmd/cloud-controller-manager/main.go | 10 +++---- .../cloud-provider/app/controllermanager.go | 30 +++++++++---------- .../cloud-provider/app/testing/testserver.go | 7 +++-- .../cloud-provider/sample/basic_main.go | 9 +++--- 4 files changed, 28 insertions(+), 28 deletions(-) diff --git a/cmd/cloud-controller-manager/main.go b/cmd/cloud-controller-manager/main.go index f4950450728..23ec3eb65f6 100644 --- a/cmd/cloud-controller-manager/main.go +++ b/cmd/cloud-controller-manager/main.go @@ -36,7 +36,7 @@ import ( "k8s.io/cloud-provider/app" cloudcontrollerconfig "k8s.io/cloud-provider/app/config" "k8s.io/cloud-provider/options" - "k8s.io/component-base/cli/flag" + 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 @@ -64,17 +64,17 @@ func main() { nodeIpamController := nodeIPAMController{} nodeIpamController.nodeIPAMControllerOptions.NodeIPAMControllerConfiguration = &nodeIpamController.nodeIPAMControllerConfiguration - fs := pflag.NewFlagSet("fs", pflag.ContinueOnError) - nodeIpamController.nodeIPAMControllerOptions.AddFlags(fs) + fss := cliflag.NamedFlagSets{} + nodeIpamController.nodeIPAMControllerOptions.AddFlags(fss.FlagSet("nodeipam controller")) controllerInitializers["nodeipam"] = nodeIpamController.startNodeIpamControllerWrapper - command := app.NewCloudControllerManagerCommand(ccmOptions, cloudInitializer, controllerInitializers, fs, wait.NeverStop) + 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(flag.WordSepNormalizeFunc) + pflag.CommandLine.SetNormalizeFunc(cliflag.WordSepNormalizeFunc) // utilflag.InitFlags() logs.InitLogs() defer logs.FlushLogs() diff --git a/staging/src/k8s.io/cloud-provider/app/controllermanager.go b/staging/src/k8s.io/cloud-provider/app/controllermanager.go index d7619117fb6..4acefc386a8 100644 --- a/staging/src/k8s.io/cloud-provider/app/controllermanager.go +++ b/staging/src/k8s.io/cloud-provider/app/controllermanager.go @@ -26,27 +26,23 @@ import ( "time" "github.com/spf13/cobra" - "github.com/spf13/pflag" "k8s.io/apimachinery/pkg/runtime/schema" utilruntime "k8s.io/apimachinery/pkg/util/runtime" - cacheddiscovery "k8s.io/client-go/discovery/cached" - "k8s.io/client-go/informers" - "k8s.io/client-go/metadata" - "k8s.io/client-go/metadata/metadatainformer" - "k8s.io/client-go/restmapper" - cloudprovider "k8s.io/cloud-provider" - cloudcontrollerconfig "k8s.io/cloud-provider/app/config" - "k8s.io/cloud-provider/options" - "k8s.io/controller-manager/pkg/clientbuilder" - "k8s.io/controller-manager/pkg/informerfactory" - "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/uuid" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/apiserver/pkg/server" "k8s.io/apiserver/pkg/server/healthz" + cacheddiscovery "k8s.io/client-go/discovery/cached" + "k8s.io/client-go/informers" + "k8s.io/client-go/metadata" + "k8s.io/client-go/metadata/metadatainformer" + "k8s.io/client-go/restmapper" "k8s.io/client-go/tools/leaderelection" "k8s.io/client-go/tools/leaderelection/resourcelock" + cloudprovider "k8s.io/cloud-provider" + cloudcontrollerconfig "k8s.io/cloud-provider/app/config" + "k8s.io/cloud-provider/options" cliflag "k8s.io/component-base/cli/flag" "k8s.io/component-base/cli/globalflag" "k8s.io/component-base/configz" @@ -54,6 +50,8 @@ import ( "k8s.io/component-base/version" "k8s.io/component-base/version/verflag" genericcontrollermanager "k8s.io/controller-manager/app" + "k8s.io/controller-manager/pkg/clientbuilder" + "k8s.io/controller-manager/pkg/informerfactory" "k8s.io/klog/v2" ) @@ -67,8 +65,7 @@ const ( // NewCloudControllerManagerCommand creates a *cobra.Command object with default parameters // initFuncConstructor is a map of named controller groups (you can start more than one in an init func) paired to their InitFuncConstructor. // additionalFlags provides controller specific flags to be included in the complete set of controller manager flags -func NewCloudControllerManagerCommand(s *options.CloudControllerManagerOptions, cloudInitializer InitCloudFunc, initFuncConstructor map[string]InitFuncConstructor, additionalFlags *pflag.FlagSet, stopCh <-chan struct{}) *cobra.Command { - +func NewCloudControllerManagerCommand(s *options.CloudControllerManagerOptions, cloudInitializer InitCloudFunc, initFuncConstructor map[string]InitFuncConstructor, additionalFlags cliflag.NamedFlagSets, stopCh <-chan struct{}) *cobra.Command { cmd := &cobra.Command{ Use: "cloud-controller-manager", Long: `The Cloud controller manager is a daemon that embeds @@ -119,9 +116,10 @@ the cloud specific control loops shipped with Kubernetes.`, for _, f := range namedFlagSets.FlagSets { fs.AddFlagSet(f) } - if additionalFlags != nil { - fs.AddFlagSet(additionalFlags) + for _, f := range additionalFlags.FlagSets { + fs.AddFlagSet(f) } + usageFmt := "Usage:\n %s\n" cols, _, _ := term.TerminalSize(cmd.OutOrStdout()) cmd.SetUsageFunc(func(cmd *cobra.Command) error { diff --git a/staging/src/k8s.io/cloud-provider/app/testing/testserver.go b/staging/src/k8s.io/cloud-provider/app/testing/testserver.go index 3f7a53656c5..9e334bf5524 100644 --- a/staging/src/k8s.io/cloud-provider/app/testing/testserver.go +++ b/staging/src/k8s.io/cloud-provider/app/testing/testserver.go @@ -33,7 +33,7 @@ import ( "k8s.io/cloud-provider/app" "k8s.io/cloud-provider/app/config" "k8s.io/cloud-provider/options" - "k8s.io/component-base/cli/flag" + cliflag "k8s.io/component-base/cli/flag" ) // TearDownFunc is to be called to tear down a test server. @@ -102,8 +102,9 @@ func StartTestServer(t Logger, customFlags []string) (result TestServer, err err } return cloud } - command := app.NewCloudControllerManagerCommand(s, cloudInitializer, app.DefaultInitFuncConstructors, nil, stopCh) - pflag.CommandLine.SetNormalizeFunc(flag.WordSepNormalizeFunc) + fss := cliflag.NamedFlagSets{} + command := app.NewCloudControllerManagerCommand(s, cloudInitializer, app.DefaultInitFuncConstructors, fss, stopCh) + pflag.CommandLine.SetNormalizeFunc(cliflag.WordSepNormalizeFunc) commandArgs := []string{} listeners := []net.Listener{} diff --git a/staging/src/k8s.io/cloud-provider/sample/basic_main.go b/staging/src/k8s.io/cloud-provider/sample/basic_main.go index ee9f41ae686..9f6386c5430 100644 --- a/staging/src/k8s.io/cloud-provider/sample/basic_main.go +++ b/staging/src/k8s.io/cloud-provider/sample/basic_main.go @@ -21,17 +21,17 @@ limitations under the License. package main import ( - "k8s.io/apimachinery/pkg/util/wait" "math/rand" "os" "time" "github.com/spf13/pflag" + "k8s.io/apimachinery/pkg/util/wait" "k8s.io/cloud-provider" "k8s.io/cloud-provider/app" "k8s.io/cloud-provider/app/config" "k8s.io/cloud-provider/options" - "k8s.io/component-base/cli/flag" + 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 @@ -48,13 +48,14 @@ func main() { klog.Fatalf("unable to initialize command options: %v", err) } - command := app.NewCloudControllerManagerCommand(ccmOptions, cloudInitializer, app.DefaultInitFuncConstructors, nil, wait.NeverStop) + fss := cliflag.NamedFlagSets{} + command := app.NewCloudControllerManagerCommand(ccmOptions, cloudInitializer, app.DefaultInitFuncConstructors, 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(flag.WordSepNormalizeFunc) + pflag.CommandLine.SetNormalizeFunc(cliflag.WordSepNormalizeFunc) // utilflag.InitFlags() logs.InitLogs() defer logs.FlushLogs()