github.com/jingruilea/kubeedge@v1.2.0-beta.0.0.20200410162146-4bb8902b3879/cloud/cmd/admission/app/server.go (about) 1 package app 2 3 import ( 4 "fmt" 5 6 "github.com/spf13/cobra" 7 "k8s.io/apiserver/pkg/util/term" 8 cliflag "k8s.io/component-base/cli/flag" 9 "k8s.io/component-base/cli/globalflag" 10 "k8s.io/klog" 11 12 "github.com/kubeedge/kubeedge/cloud/cmd/admission/app/options" 13 admissioncontroller "github.com/kubeedge/kubeedge/cloud/pkg/admissioncontroller" 14 "github.com/kubeedge/kubeedge/pkg/util/flag" 15 "github.com/kubeedge/kubeedge/pkg/version" 16 "github.com/kubeedge/kubeedge/pkg/version/verflag" 17 ) 18 19 func NewAdmissionCommand() *cobra.Command { 20 ops := options.NewAdmissionOptions() 21 cmd := &cobra.Command{ 22 Use: "admission", 23 Long: `Admission leverage the feature of Dynamic Admission Control from kubernetes, start it 24 if want to admission control some kubeedge resources.`, 25 Run: func(cmd *cobra.Command, args []string) { 26 verflag.PrintAndExitIfRequested() 27 flag.PrintFlags(cmd.Flags()) 28 29 // To help debugging, immediately log version 30 klog.Infof("Version: %+v", version.Get()) 31 admissioncontroller.Run(ops) 32 }, 33 } 34 35 fs := cmd.Flags() 36 namedFs := ops.Flags() 37 verflag.AddFlags(namedFs.FlagSet("global")) 38 globalflag.AddGlobalFlags(namedFs.FlagSet("global"), cmd.Name()) 39 for _, f := range namedFs.FlagSets { 40 fs.AddFlagSet(f) 41 } 42 43 usageFmt := "Usage:\n %s\n" 44 cols, _, _ := term.TerminalSize(cmd.OutOrStdout()) 45 cmd.SetUsageFunc(func(cmd *cobra.Command) error { 46 fmt.Fprintf(cmd.OutOrStderr(), usageFmt, cmd.UseLine()) 47 cliflag.PrintSections(cmd.OutOrStderr(), namedFs, cols) 48 return nil 49 }) 50 cmd.SetHelpFunc(func(cmd *cobra.Command, args []string) { 51 fmt.Fprintf(cmd.OutOrStdout(), "%s\n\n"+usageFmt, cmd.Long, cmd.UseLine()) 52 cliflag.PrintSections(cmd.OutOrStdout(), namedFs, cols) 53 }) 54 55 return cmd 56 }