diff --git a/pkg/kubectl/cmd/annotate.go b/pkg/kubectl/cmd/annotate.go index 0637528d7e7..6f2cf8588e7 100644 --- a/pkg/kubectl/cmd/annotate.go +++ b/pkg/kubectl/cmd/annotate.go @@ -36,7 +36,6 @@ import ( cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" "k8s.io/kubernetes/pkg/kubectl/resource" "k8s.io/kubernetes/pkg/kubectl/util/i18n" - "k8s.io/kubernetes/pkg/printers" ) // AnnotateOptions have the data required to perform the annotate operation @@ -100,17 +99,7 @@ var ( func NewCmdAnnotate(f cmdutil.Factory, out io.Writer) *cobra.Command { options := &AnnotateOptions{} - - // retrieve a list of handled resources from printer as valid args - validArgs, argAliases := []string{}, []string{} - p, err := f.Printer(nil, printers.PrintOptions{ - ColumnLabels: []string{}, - }) - cmdutil.CheckErr(err) - if p != nil { - validArgs = p.HandledResources() - argAliases = kubectl.ResourceAliases(validArgs) - } + validArgs := cmdutil.ValidArgList(f) cmd := &cobra.Command{ Use: "annotate [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]", @@ -128,7 +117,7 @@ func NewCmdAnnotate(f cmdutil.Factory, out io.Writer) *cobra.Command { cmdutil.CheckErr(options.RunAnnotate(f, cmd)) }, ValidArgs: validArgs, - ArgAliases: argAliases, + ArgAliases: kubectl.ResourceAliases(validArgs), } cmdutil.AddPrinterFlags(cmd) cmdutil.AddIncludeUninitializedFlag(cmd) diff --git a/pkg/kubectl/cmd/apply_edit_last_applied.go b/pkg/kubectl/cmd/apply_edit_last_applied.go index f12bb981e87..5fd5dd19935 100644 --- a/pkg/kubectl/cmd/apply_edit_last_applied.go +++ b/pkg/kubectl/cmd/apply_edit_last_applied.go @@ -26,7 +26,6 @@ import ( "k8s.io/kubernetes/pkg/kubectl/cmd/templates" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" "k8s.io/kubernetes/pkg/kubectl/cmd/util/editor" - "k8s.io/kubernetes/pkg/printers" ) var ( @@ -63,17 +62,7 @@ func NewCmdApplyEditLastApplied(f cmdutil.Factory, out, errOut io.Writer) *cobra options := &editor.EditOptions{ EditMode: editor.ApplyEditMode, } - - // retrieve a list of handled resources from printer as valid args - validArgs, argAliases := []string{}, []string{} - p, err := f.Printer(nil, printers.PrintOptions{ - ColumnLabels: []string{}, - }) - cmdutil.CheckErr(err) - if p != nil { - validArgs = p.HandledResources() - argAliases = kubectl.ResourceAliases(validArgs) - } + validArgs := cmdutil.ValidArgList(f) cmd := &cobra.Command{ Use: "edit-last-applied (RESOURCE/NAME | -f FILENAME)", @@ -91,7 +80,7 @@ func NewCmdApplyEditLastApplied(f cmdutil.Factory, out, errOut io.Writer) *cobra } }, ValidArgs: validArgs, - ArgAliases: argAliases, + ArgAliases: kubectl.ResourceAliases(validArgs), } usage := "to use to edit the resource" diff --git a/pkg/kubectl/cmd/delete.go b/pkg/kubectl/cmd/delete.go index 60ac7d5b43c..22de0cd9339 100644 --- a/pkg/kubectl/cmd/delete.go +++ b/pkg/kubectl/cmd/delete.go @@ -32,7 +32,6 @@ import ( cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" "k8s.io/kubernetes/pkg/kubectl/resource" "k8s.io/kubernetes/pkg/kubectl/util/i18n" - "k8s.io/kubernetes/pkg/printers" ) var ( @@ -114,17 +113,7 @@ type DeleteOptions struct { func NewCmdDelete(f cmdutil.Factory, out, errOut io.Writer) *cobra.Command { options := &DeleteOptions{} - - // retrieve a list of handled resources from printer as valid args - validArgs, argAliases := []string{}, []string{} - p, err := f.Printer(nil, printers.PrintOptions{ - ColumnLabels: []string{}, - }) - cmdutil.CheckErr(err) - if p != nil { - validArgs = p.HandledResources() - argAliases = kubectl.ResourceAliases(validArgs) - } + validArgs := cmdutil.ValidArgList(f) cmd := &cobra.Command{ Use: "delete ([-f FILENAME] | TYPE [(NAME | -l label | --all)])", @@ -146,7 +135,7 @@ func NewCmdDelete(f cmdutil.Factory, out, errOut io.Writer) *cobra.Command { }, SuggestFor: []string{"rm"}, ValidArgs: validArgs, - ArgAliases: argAliases, + ArgAliases: kubectl.ResourceAliases(validArgs), } usage := "containing the resource to delete." cmdutil.AddFilenameOptionFlags(cmd, &options.FilenameOptions, usage) diff --git a/pkg/kubectl/cmd/edit.go b/pkg/kubectl/cmd/edit.go index 1883c11895c..62ab54a5060 100644 --- a/pkg/kubectl/cmd/edit.go +++ b/pkg/kubectl/cmd/edit.go @@ -28,7 +28,6 @@ import ( cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" "k8s.io/kubernetes/pkg/kubectl/cmd/util/editor" "k8s.io/kubernetes/pkg/kubectl/util/i18n" - "k8s.io/kubernetes/pkg/printers" ) var ( @@ -74,17 +73,7 @@ func NewCmdEdit(f cmdutil.Factory, out, errOut io.Writer) *cobra.Command { options := &editor.EditOptions{ EditMode: editor.NormalEditMode, } - - // retrieve a list of handled resources from printer as valid args - validArgs, argAliases := []string{}, []string{} - p, err := f.Printer(nil, printers.PrintOptions{ - ColumnLabels: []string{}, - }) - cmdutil.CheckErr(err) - if p != nil { - validArgs = p.HandledResources() - argAliases = kubectl.ResourceAliases(validArgs) - } + validArgs := cmdutil.ValidArgList(f) cmd := &cobra.Command{ Use: "edit (RESOURCE/NAME | -f FILENAME)", @@ -102,7 +91,7 @@ func NewCmdEdit(f cmdutil.Factory, out, errOut io.Writer) *cobra.Command { } }, ValidArgs: validArgs, - ArgAliases: argAliases, + ArgAliases: kubectl.ResourceAliases(validArgs), } usage := "to use to edit the resource" cmdutil.AddFilenameOptionFlags(cmd, &options.FilenameOptions, usage) diff --git a/pkg/kubectl/cmd/expose.go b/pkg/kubectl/cmd/expose.go index 9800f1255c4..0d7b11c0d11 100644 --- a/pkg/kubectl/cmd/expose.go +++ b/pkg/kubectl/cmd/expose.go @@ -75,11 +75,10 @@ var ( func NewCmdExposeService(f cmdutil.Factory, out io.Writer) *cobra.Command { options := &resource.FilenameOptions{} - validArgs, argAliases := []string{}, []string{} + validArgs := []string{} resources := regexp.MustCompile(`\s*,`).Split(exposeResources, -1) for _, r := range resources { validArgs = append(validArgs, strings.Fields(r)[0]) - argAliases = kubectl.ResourceAliases(validArgs) } cmd := &cobra.Command{ @@ -93,7 +92,7 @@ func NewCmdExposeService(f cmdutil.Factory, out io.Writer) *cobra.Command { cmdutil.CheckErr(err) }, ValidArgs: validArgs, - ArgAliases: argAliases, + ArgAliases: kubectl.ResourceAliases(validArgs), } cmdutil.AddPrinterFlags(cmd) cmd.Flags().String("generator", "service/v2", i18n.T("The name of the API generator to use. There are 2 generators: 'service/v1' and 'service/v2'. The only difference between them is that service port in v1 is named 'default', while it is left unnamed in v2. Default is 'service/v2'.")) diff --git a/pkg/kubectl/cmd/label.go b/pkg/kubectl/cmd/label.go index 32574853234..8ae79709e98 100644 --- a/pkg/kubectl/cmd/label.go +++ b/pkg/kubectl/cmd/label.go @@ -39,7 +39,6 @@ import ( cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" "k8s.io/kubernetes/pkg/kubectl/resource" "k8s.io/kubernetes/pkg/kubectl/util/i18n" - "k8s.io/kubernetes/pkg/printers" ) // LabelOptions have the data required to perform the label operation @@ -98,17 +97,7 @@ var ( func NewCmdLabel(f cmdutil.Factory, out io.Writer) *cobra.Command { options := &LabelOptions{} - - // retrieve a list of handled resources from printer as valid args - validArgs, argAliases := []string{}, []string{} - p, err := f.Printer(nil, printers.PrintOptions{ - ColumnLabels: []string{}, - }) - cmdutil.CheckErr(err) - if p != nil { - validArgs = p.HandledResources() - argAliases = kubectl.ResourceAliases(validArgs) - } + validArgs := cmdutil.ValidArgList(f) cmd := &cobra.Command{ Use: "label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]", @@ -126,7 +115,7 @@ func NewCmdLabel(f cmdutil.Factory, out io.Writer) *cobra.Command { cmdutil.CheckErr(options.RunLabel(f, cmd)) }, ValidArgs: validArgs, - ArgAliases: argAliases, + ArgAliases: kubectl.ResourceAliases(validArgs), } cmdutil.AddPrinterFlags(cmd) cmd.Flags().Bool("overwrite", false, "If true, allow labels to be overwritten, otherwise reject label updates that overwrite existing labels.") diff --git a/pkg/kubectl/cmd/patch.go b/pkg/kubectl/cmd/patch.go index daf67ef56bb..399ebff0678 100644 --- a/pkg/kubectl/cmd/patch.go +++ b/pkg/kubectl/cmd/patch.go @@ -40,7 +40,6 @@ import ( "k8s.io/kubernetes/pkg/kubectl/resource" "k8s.io/kubernetes/pkg/kubectl/scheme" "k8s.io/kubernetes/pkg/kubectl/util/i18n" - "k8s.io/kubernetes/pkg/printers" ) var patchTypes = map[string]types.PatchType{"json": types.JSONPatchType, "merge": types.MergePatchType, "strategic": types.StrategicMergePatchType} @@ -82,17 +81,7 @@ var ( func NewCmdPatch(f cmdutil.Factory, out io.Writer) *cobra.Command { options := &PatchOptions{} - - // retrieve a list of handled resources from printer as valid args - validArgs, argAliases := []string{}, []string{} - p, err := f.Printer(nil, printers.PrintOptions{ - ColumnLabels: []string{}, - }) - cmdutil.CheckErr(err) - if p != nil { - validArgs = p.HandledResources() - argAliases = kubectl.ResourceAliases(validArgs) - } + validArgs := cmdutil.ValidArgList(f) cmd := &cobra.Command{ Use: "patch (-f FILENAME | TYPE NAME) -p PATCH", @@ -106,7 +95,7 @@ func NewCmdPatch(f cmdutil.Factory, out io.Writer) *cobra.Command { cmdutil.CheckErr(err) }, ValidArgs: validArgs, - ArgAliases: argAliases, + ArgAliases: kubectl.ResourceAliases(validArgs), } cmd.Flags().StringP("patch", "p", "", "The patch to be applied to the resource JSON file.") cmd.MarkFlagRequired("patch") diff --git a/pkg/kubectl/cmd/resource/get.go b/pkg/kubectl/cmd/resource/get.go index 76c596865af..e60dd6059d6 100644 --- a/pkg/kubectl/cmd/resource/get.go +++ b/pkg/kubectl/cmd/resource/get.go @@ -128,19 +128,7 @@ func NewCmdGet(f cmdutil.Factory, out io.Writer, errOut io.Writer) *cobra.Comman Out: out, ErrOut: errOut, } - - // TODO: this needs to be abstracted behind the factory like ValidResourceTypeList - // and use discovery - // retrieve a list of handled resources from printer as valid args - validArgs, argAliases := []string{}, []string{} - p, err := f.Printer(nil, printers.PrintOptions{ - ColumnLabels: []string{}, - }) - cmdutil.CheckErr(err) - if p != nil { - validArgs = p.HandledResources() - argAliases = kubectl.ResourceAliases(validArgs) - } + validArgs := cmdutil.ValidArgList(f) cmd := &cobra.Command{ Use: "get [(-o|--output=)json|yaml|wide|custom-columns=...|custom-columns-file=...|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...] (TYPE [NAME | -l label] | TYPE/NAME ...) [flags]", @@ -155,7 +143,7 @@ func NewCmdGet(f cmdutil.Factory, out io.Writer, errOut io.Writer) *cobra.Comman }, SuggestFor: []string{"list", "ps"}, ValidArgs: validArgs, - ArgAliases: argAliases, + ArgAliases: kubectl.ResourceAliases(validArgs), } cmd.Flags().StringVar(&options.Raw, "raw", options.Raw, "Raw URI to request from the server. Uses the transport specified by the kubeconfig file.") diff --git a/pkg/kubectl/cmd/util/printing.go b/pkg/kubectl/cmd/util/printing.go index 8d06f8d3713..c679dde5e8c 100644 --- a/pkg/kubectl/cmd/util/printing.go +++ b/pkg/kubectl/cmd/util/printing.go @@ -223,3 +223,19 @@ func ValidResourceTypeList(f ClientAccessFactory) string { `) } + +// Retrieve a list of handled resources from printer as valid args +// TODO: This function implementation should be replaced with a real implementation from the +// discovery service. +func ValidArgList(f ClientAccessFactory) []string { + validArgs := []string{} + p, err := f.Printer(nil, printers.PrintOptions{ + ColumnLabels: []string{}, + }) + CheckErr(err) + if p != nil { + validArgs = p.HandledResources() + } + + return validArgs +}