mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-09 03:57:41 +00:00
Switch kubectl resource completion to discovery
This commit is contained in:
parent
918df97a0f
commit
4dfd26a4f2
@ -120,7 +120,6 @@ func NewAnnotateOptions(ioStreams genericclioptions.IOStreams) *AnnotateOptions
|
|||||||
|
|
||||||
func NewCmdAnnotate(parent string, f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobra.Command {
|
func NewCmdAnnotate(parent string, f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobra.Command {
|
||||||
o := NewAnnotateOptions(ioStreams)
|
o := NewAnnotateOptions(ioStreams)
|
||||||
validArgs := cmdutil.ValidArgList(f)
|
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "annotate [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]",
|
Use: "annotate [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]",
|
||||||
@ -133,8 +132,6 @@ func NewCmdAnnotate(parent string, f cmdutil.Factory, ioStreams genericclioption
|
|||||||
cmdutil.CheckErr(o.Validate())
|
cmdutil.CheckErr(o.Validate())
|
||||||
cmdutil.CheckErr(o.RunAnnotate())
|
cmdutil.CheckErr(o.RunAnnotate())
|
||||||
},
|
},
|
||||||
ValidArgs: validArgs,
|
|
||||||
ArgAliases: kubectl.ResourceAliases(validArgs),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// bind flag structs
|
// bind flag structs
|
||||||
|
@ -19,7 +19,6 @@ package cmd
|
|||||||
import (
|
import (
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
|
||||||
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
|
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/cmd/util/editor"
|
"k8s.io/kubernetes/pkg/kubectl/cmd/util/editor"
|
||||||
@ -59,8 +58,6 @@ var (
|
|||||||
func NewCmdApplyEditLastApplied(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobra.Command {
|
func NewCmdApplyEditLastApplied(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobra.Command {
|
||||||
o := editor.NewEditOptions(editor.ApplyEditMode, ioStreams)
|
o := editor.NewEditOptions(editor.ApplyEditMode, ioStreams)
|
||||||
|
|
||||||
validArgs := cmdutil.ValidArgList(f)
|
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "edit-last-applied (RESOURCE/NAME | -f FILENAME)",
|
Use: "edit-last-applied (RESOURCE/NAME | -f FILENAME)",
|
||||||
DisableFlagsInUseLine: true,
|
DisableFlagsInUseLine: true,
|
||||||
@ -75,8 +72,6 @@ func NewCmdApplyEditLastApplied(f cmdutil.Factory, ioStreams genericclioptions.I
|
|||||||
cmdutil.CheckErr(err)
|
cmdutil.CheckErr(err)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
ValidArgs: validArgs,
|
|
||||||
ArgAliases: kubectl.ResourceAliases(validArgs),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// bind flag structs
|
// bind flag structs
|
||||||
|
@ -67,7 +67,6 @@ func NewViewLastAppliedOptions(ioStreams genericclioptions.IOStreams) *ViewLastA
|
|||||||
|
|
||||||
func NewCmdApplyViewLastApplied(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobra.Command {
|
func NewCmdApplyViewLastApplied(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobra.Command {
|
||||||
options := NewViewLastAppliedOptions(ioStreams)
|
options := NewViewLastAppliedOptions(ioStreams)
|
||||||
validArgs := cmdutil.ValidArgList(f)
|
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "view-last-applied (TYPE [NAME | -l label] | TYPE/NAME | -f FILENAME)",
|
Use: "view-last-applied (TYPE [NAME | -l label] | TYPE/NAME | -f FILENAME)",
|
||||||
@ -80,8 +79,6 @@ func NewCmdApplyViewLastApplied(f cmdutil.Factory, ioStreams genericclioptions.I
|
|||||||
cmdutil.CheckErr(options.Validate(cmd))
|
cmdutil.CheckErr(options.Validate(cmd))
|
||||||
cmdutil.CheckErr(options.RunApplyViewLastApplied(cmd))
|
cmdutil.CheckErr(options.RunApplyViewLastApplied(cmd))
|
||||||
},
|
},
|
||||||
ValidArgs: validArgs,
|
|
||||||
ArgAliases: kubectl.ResourceAliases(validArgs),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd.Flags().StringVarP(&options.OutputFormat, "output", "o", options.OutputFormat, "Output format. Must be one of yaml|json")
|
cmd.Flags().StringVarP(&options.OutputFormat, "output", "o", options.OutputFormat, "Output format. Must be one of yaml|json")
|
||||||
|
@ -109,7 +109,12 @@ __kubectl_parse_get()
|
|||||||
__kubectl_get_resource()
|
__kubectl_get_resource()
|
||||||
{
|
{
|
||||||
if [[ ${#nouns[@]} -eq 0 ]]; then
|
if [[ ${#nouns[@]} -eq 0 ]]; then
|
||||||
return 1
|
local kubectl_out
|
||||||
|
if kubectl_out=$(kubectl api-resources $(__kubectl_override_flags) -o name --cached --request-timeout=5s --verbs=get 2>/dev/null); then
|
||||||
|
COMPREPLY=( $( compgen -W "${kubectl_out[*]}" -- "$cur" ) )
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
return 1
|
||||||
fi
|
fi
|
||||||
__kubectl_parse_get "${nouns[${#nouns[@]} -1]}"
|
__kubectl_parse_get "${nouns[${#nouns[@]} -1]}"
|
||||||
}
|
}
|
||||||
|
@ -115,7 +115,6 @@ type DeleteOptions struct {
|
|||||||
|
|
||||||
func NewCmdDelete(f cmdutil.Factory, out, errOut io.Writer) *cobra.Command {
|
func NewCmdDelete(f cmdutil.Factory, out, errOut io.Writer) *cobra.Command {
|
||||||
deleteFlags := NewDeleteCommandFlags("containing the resource to delete.")
|
deleteFlags := NewDeleteCommandFlags("containing the resource to delete.")
|
||||||
validArgs := cmdutil.ValidArgList(f)
|
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "delete ([-f FILENAME] | TYPE [(NAME | -l label | --all)])",
|
Use: "delete ([-f FILENAME] | TYPE [(NAME | -l label | --all)])",
|
||||||
@ -138,8 +137,6 @@ func NewCmdDelete(f cmdutil.Factory, out, errOut io.Writer) *cobra.Command {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
SuggestFor: []string{"rm"},
|
SuggestFor: []string{"rm"},
|
||||||
ValidArgs: validArgs,
|
|
||||||
ArgAliases: kubectl.ResourceAliases(validArgs),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteFlags.AddFlags(cmd)
|
deleteFlags.AddFlags(cmd)
|
||||||
|
@ -21,7 +21,6 @@ import (
|
|||||||
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
|
||||||
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
|
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/cmd/util/editor"
|
"k8s.io/kubernetes/pkg/kubectl/cmd/util/editor"
|
||||||
@ -72,8 +71,6 @@ func NewCmdEdit(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobra
|
|||||||
o := editor.NewEditOptions(editor.NormalEditMode, ioStreams)
|
o := editor.NewEditOptions(editor.NormalEditMode, ioStreams)
|
||||||
o.ValidateOptions = cmdutil.ValidateOptions{EnableValidation: true}
|
o.ValidateOptions = cmdutil.ValidateOptions{EnableValidation: true}
|
||||||
|
|
||||||
validArgs := cmdutil.ValidArgList(f)
|
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "edit (RESOURCE/NAME | -f FILENAME)",
|
Use: "edit (RESOURCE/NAME | -f FILENAME)",
|
||||||
DisableFlagsInUseLine: true,
|
DisableFlagsInUseLine: true,
|
||||||
@ -88,8 +85,6 @@ func NewCmdEdit(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobra
|
|||||||
cmdutil.CheckErr(err)
|
cmdutil.CheckErr(err)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
ValidArgs: validArgs,
|
|
||||||
ArgAliases: kubectl.ResourceAliases(validArgs),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// bind flag structs
|
// bind flag structs
|
||||||
|
@ -148,7 +148,6 @@ func NewGetOptions(parent string, streams genericclioptions.IOStreams) *GetOptio
|
|||||||
// retrieves one or more resources from a server.
|
// retrieves one or more resources from a server.
|
||||||
func NewCmdGet(parent string, f cmdutil.Factory, streams genericclioptions.IOStreams) *cobra.Command {
|
func NewCmdGet(parent string, f cmdutil.Factory, streams genericclioptions.IOStreams) *cobra.Command {
|
||||||
o := NewGetOptions(parent, streams)
|
o := NewGetOptions(parent, streams)
|
||||||
validArgs := cmdutil.ValidArgList(f)
|
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "get [(-o|--output=)json|yaml|wide|custom-columns=...|custom-columns-file=...|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...] (TYPE[.VERSION][.GROUP] [NAME | -l label] | TYPE[.VERSION][.GROUP]/NAME ...) [flags]",
|
Use: "get [(-o|--output=)json|yaml|wide|custom-columns=...|custom-columns-file=...|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...] (TYPE[.VERSION][.GROUP] [NAME | -l label] | TYPE[.VERSION][.GROUP]/NAME ...) [flags]",
|
||||||
@ -162,8 +161,6 @@ func NewCmdGet(parent string, f cmdutil.Factory, streams genericclioptions.IOStr
|
|||||||
cmdutil.CheckErr(o.Run(f, cmd, args))
|
cmdutil.CheckErr(o.Run(f, cmd, args))
|
||||||
},
|
},
|
||||||
SuggestFor: []string{"list", "ps"},
|
SuggestFor: []string{"list", "ps"},
|
||||||
ValidArgs: validArgs,
|
|
||||||
ArgAliases: kubectl.ResourceAliases(validArgs),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
o.PrintFlags.AddFlags(cmd)
|
o.PrintFlags.AddFlags(cmd)
|
||||||
|
@ -34,7 +34,6 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/util/validation"
|
"k8s.io/apimachinery/pkg/util/validation"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructuredscheme"
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructuredscheme"
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
|
||||||
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
|
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
|
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
|
||||||
@ -124,8 +123,6 @@ func NewLabelOptions(ioStreams genericclioptions.IOStreams) *LabelOptions {
|
|||||||
func NewCmdLabel(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobra.Command {
|
func NewCmdLabel(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobra.Command {
|
||||||
o := NewLabelOptions(ioStreams)
|
o := NewLabelOptions(ioStreams)
|
||||||
|
|
||||||
validArgs := cmdutil.ValidArgList(f)
|
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]",
|
Use: "label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]",
|
||||||
DisableFlagsInUseLine: true,
|
DisableFlagsInUseLine: true,
|
||||||
@ -137,8 +134,6 @@ func NewCmdLabel(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobr
|
|||||||
cmdutil.CheckErr(o.Validate())
|
cmdutil.CheckErr(o.Validate())
|
||||||
cmdutil.CheckErr(o.RunLabel())
|
cmdutil.CheckErr(o.RunLabel())
|
||||||
},
|
},
|
||||||
ValidArgs: validArgs,
|
|
||||||
ArgAliases: kubectl.ResourceAliases(validArgs),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
o.RecordFlags.AddFlags(cmd)
|
o.RecordFlags.AddFlags(cmd)
|
||||||
|
@ -33,7 +33,6 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
"k8s.io/apimachinery/pkg/util/strategicpatch"
|
"k8s.io/apimachinery/pkg/util/strategicpatch"
|
||||||
"k8s.io/apimachinery/pkg/util/yaml"
|
"k8s.io/apimachinery/pkg/util/yaml"
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
|
||||||
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
|
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
|
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
|
||||||
@ -106,7 +105,6 @@ func NewPatchOptions(ioStreams genericclioptions.IOStreams) *PatchOptions {
|
|||||||
|
|
||||||
func NewCmdPatch(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobra.Command {
|
func NewCmdPatch(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobra.Command {
|
||||||
o := NewPatchOptions(ioStreams)
|
o := NewPatchOptions(ioStreams)
|
||||||
validArgs := cmdutil.ValidArgList(f)
|
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "patch (-f FILENAME | TYPE NAME) -p PATCH",
|
Use: "patch (-f FILENAME | TYPE NAME) -p PATCH",
|
||||||
@ -119,8 +117,6 @@ func NewCmdPatch(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobr
|
|||||||
cmdutil.CheckErr(o.Validate())
|
cmdutil.CheckErr(o.Validate())
|
||||||
cmdutil.CheckErr(o.RunPatch())
|
cmdutil.CheckErr(o.RunPatch())
|
||||||
},
|
},
|
||||||
ValidArgs: validArgs,
|
|
||||||
ArgAliases: kubectl.ResourceAliases(validArgs),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
o.RecordFlags.AddFlags(cmd)
|
o.RecordFlags.AddFlags(cmd)
|
||||||
|
@ -239,15 +239,3 @@ func maybeWrapSortingPrinter(printer printers.ResourcePrinter, printOpts printer
|
|||||||
func SuggestApiResources(parent string) string {
|
func SuggestApiResources(parent string) string {
|
||||||
return templates.LongDesc(fmt.Sprintf("Use \"%s api-resources\" for a complete list of supported resources.", parent))
|
return templates.LongDesc(fmt.Sprintf("Use \"%s api-resources\" for a complete list of supported resources.", parent))
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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{}
|
|
||||||
|
|
||||||
humanReadablePrinter := printers.NewHumanReadablePrinter(nil, printers.PrintOptions{})
|
|
||||||
printersinternal.AddHandlers(humanReadablePrinter)
|
|
||||||
validArgs = humanReadablePrinter.HandledResources()
|
|
||||||
|
|
||||||
return validArgs
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user