mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-29 06:27:05 +00:00
Merge pull request #55092 from mengqiy/refactor_factory
Automatic merge from submit-queue (batch tested with PRs 55092, 55348, 55095, 55277, 55352). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. refactor build in kubectl factory Refactor kubectl factory and resource builder. This will be helpful for `kinflate`. ```release-note NONE ``` /assign @monopole
This commit is contained in:
commit
2ee10cc73e
@ -189,31 +189,23 @@ func (o AnnotateOptions) RunAnnotate(f cmdutil.Factory, cmd *cobra.Command) erro
|
|||||||
changeCause := f.Command(cmd, false)
|
changeCause := f.Command(cmd, false)
|
||||||
|
|
||||||
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, false)
|
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, false)
|
||||||
b := f.NewBuilder().
|
|
||||||
ContinueOnError().
|
var b *resource.Builder
|
||||||
|
if o.local {
|
||||||
|
b = f.NewBuilder().
|
||||||
|
Local(f.ClientForMapping)
|
||||||
|
} else {
|
||||||
|
b = f.NewUnstructuredBuilder().
|
||||||
|
LabelSelectorParam(o.selector).
|
||||||
|
ResourceTypeOrNameArgs(o.all, o.resources...).
|
||||||
|
Latest()
|
||||||
|
}
|
||||||
|
r := b.ContinueOnError().
|
||||||
NamespaceParam(namespace).DefaultNamespace().
|
NamespaceParam(namespace).DefaultNamespace().
|
||||||
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
||||||
IncludeUninitialized(includeUninitialized).
|
IncludeUninitialized(includeUninitialized).
|
||||||
Flatten()
|
Flatten().
|
||||||
|
Do()
|
||||||
if !o.local {
|
|
||||||
// call this method here, as it requires an api call
|
|
||||||
// and will cause the command to fail when there is
|
|
||||||
// no connection to a server
|
|
||||||
mapper, typer, err := f.UnstructuredObject()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
b = b.LabelSelectorParam(o.selector).
|
|
||||||
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
|
|
||||||
ResourceTypeOrNameArgs(o.all, o.resources...).
|
|
||||||
Latest()
|
|
||||||
} else {
|
|
||||||
b = b.Local(f.ClientForMapping)
|
|
||||||
}
|
|
||||||
|
|
||||||
r := b.Do()
|
|
||||||
if err := r.Err(); err != nil {
|
if err := r.Err(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -198,7 +198,7 @@ func RunApply(f cmdutil.Factory, cmd *cobra.Command, out, errOut io.Writer, opti
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
mapper, typer, err := f.UnstructuredObject()
|
mapper, _, err := f.UnstructuredObject()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -213,8 +213,7 @@ func RunApply(f cmdutil.Factory, cmd *cobra.Command, out, errOut io.Writer, opti
|
|||||||
// include the uninitialized objects by default if --prune is true
|
// include the uninitialized objects by default if --prune is true
|
||||||
// unless explicitly set --include-uninitialized=false
|
// unless explicitly set --include-uninitialized=false
|
||||||
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, options.Prune)
|
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, options.Prune)
|
||||||
r := f.NewBuilder().
|
r := f.NewUnstructuredBuilder().
|
||||||
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
|
|
||||||
Schema(schema).
|
Schema(schema).
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
|
@ -122,19 +122,13 @@ func (o *SetLastAppliedOptions) Complete(f cmdutil.Factory, cmd *cobra.Command)
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (o *SetLastAppliedOptions) Validate(f cmdutil.Factory, cmd *cobra.Command) error {
|
func (o *SetLastAppliedOptions) Validate(f cmdutil.Factory, cmd *cobra.Command) error {
|
||||||
mapper, typer, err := f.UnstructuredObject()
|
r := f.NewUnstructuredBuilder().
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
r := f.NewBuilder().
|
|
||||||
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
|
|
||||||
NamespaceParam(o.Namespace).DefaultNamespace().
|
NamespaceParam(o.Namespace).DefaultNamespace().
|
||||||
FilenameParam(o.EnforceNamespace, &o.FilenameOptions).
|
FilenameParam(o.EnforceNamespace, &o.FilenameOptions).
|
||||||
Latest().
|
Latest().
|
||||||
Flatten().
|
Flatten().
|
||||||
Do()
|
Do()
|
||||||
err = r.Err()
|
err := r.Err()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -87,13 +87,7 @@ func (o *ViewLastAppliedOptions) Complete(f cmdutil.Factory, args []string) erro
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
mapper, typer, err := f.UnstructuredObject()
|
r := f.NewUnstructuredBuilder().
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
r := f.NewBuilder().
|
|
||||||
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
|
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
||||||
ResourceTypeOrNameArgs(enforceNamespace, args...).
|
ResourceTypeOrNameArgs(enforceNamespace, args...).
|
||||||
|
@ -129,14 +129,14 @@ func (o *ConvertOptions) Complete(f cmdutil.Factory, out io.Writer, cmd *cobra.C
|
|||||||
|
|
||||||
// build the builder
|
// build the builder
|
||||||
o.builder = f.NewBuilder()
|
o.builder = f.NewBuilder()
|
||||||
if !o.local {
|
if o.local {
|
||||||
|
o.builder = o.builder.Local(f.ClientForMapping)
|
||||||
|
} else {
|
||||||
schema, err := f.Validator(cmdutil.GetFlagBool(cmd, "validate"))
|
schema, err := f.Validator(cmdutil.GetFlagBool(cmd, "validate"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
o.builder = o.builder.Schema(schema)
|
o.builder = o.builder.Schema(schema)
|
||||||
} else {
|
|
||||||
o.builder = o.builder.Local(f.ClientForMapping)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cmdNamespace, _, err := f.DefaultNamespace()
|
cmdNamespace, _, err := f.DefaultNamespace()
|
||||||
|
@ -183,13 +183,12 @@ func RunCreate(f cmdutil.Factory, cmd *cobra.Command, out, errOut io.Writer, opt
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
mapper, typer, err := f.UnstructuredObject()
|
mapper, _, err := f.UnstructuredObject()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
r := f.NewBuilder().
|
r := f.NewUnstructuredBuilder().
|
||||||
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
|
|
||||||
Schema(schema).
|
Schema(schema).
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
|
@ -170,15 +170,14 @@ func (o *DeleteOptions) Complete(f cmdutil.Factory, out, errOut io.Writer, args
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Set up client based support.
|
// Set up client based support.
|
||||||
mapper, typer, err := f.UnstructuredObject()
|
mapper, _, err := f.UnstructuredObject()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
o.Mapper = mapper
|
o.Mapper = mapper
|
||||||
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, false)
|
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, false)
|
||||||
r := f.NewBuilder().
|
r := f.NewUnstructuredBuilder().
|
||||||
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
|
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
||||||
|
@ -116,16 +116,10 @@ func RunDescribe(f cmdutil.Factory, out, cmdErr io.Writer, cmd *cobra.Command, a
|
|||||||
return cmdutil.UsageErrorf(cmd, "Required resource not specified.")
|
return cmdutil.UsageErrorf(cmd, "Required resource not specified.")
|
||||||
}
|
}
|
||||||
|
|
||||||
mapper, typer, err := f.UnstructuredObject()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// include the uninitialized objects by default
|
// include the uninitialized objects by default
|
||||||
// unless user explicitly set --include-uninitialized=false
|
// unless user explicitly set --include-uninitialized=false
|
||||||
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, true)
|
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, true)
|
||||||
r := f.NewBuilder().
|
r := f.NewUnstructuredBuilder().
|
||||||
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
|
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().AllNamespaces(allNamespaces).
|
NamespaceParam(cmdNamespace).DefaultNamespace().AllNamespaces(allNamespaces).
|
||||||
FilenameParam(enforceNamespace, options).
|
FilenameParam(enforceNamespace, options).
|
||||||
|
@ -408,18 +408,12 @@ func RunDiff(f cmdutil.Factory, diff *DiffProgram, options *DiffOptions, from, t
|
|||||||
|
|
||||||
printer := Printer{}
|
printer := Printer{}
|
||||||
|
|
||||||
mapper, typer, err := f.UnstructuredObject()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
cmdNamespace, enforceNamespace, err := f.DefaultNamespace()
|
cmdNamespace, enforceNamespace, err := f.DefaultNamespace()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
r := f.NewBuilder().
|
r := f.NewUnstructuredBuilder().
|
||||||
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
|
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
FilenameParam(enforceNamespace, &options.FilenameOptions).
|
FilenameParam(enforceNamespace, &options.FilenameOptions).
|
||||||
Flatten().
|
Flatten().
|
||||||
|
@ -190,32 +190,25 @@ func (o *LabelOptions) RunLabel(f cmdutil.Factory, cmd *cobra.Command) error {
|
|||||||
changeCause := f.Command(cmd, false)
|
changeCause := f.Command(cmd, false)
|
||||||
|
|
||||||
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, false)
|
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, false)
|
||||||
b := f.NewBuilder().
|
var b *resource.Builder
|
||||||
ContinueOnError().
|
if o.local {
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
b = f.NewBuilder().
|
||||||
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
Local(f.ClientForMapping)
|
||||||
IncludeUninitialized(includeUninitialized).
|
} else {
|
||||||
Flatten()
|
b = f.NewUnstructuredBuilder().
|
||||||
|
LabelSelectorParam(o.selector).
|
||||||
if !o.local {
|
|
||||||
// call this method here, as it requires an api call
|
|
||||||
// and will cause the command to fail when there is
|
|
||||||
// no connection to a server
|
|
||||||
mapper, typer, err := f.UnstructuredObject()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
b = b.LabelSelectorParam(o.selector).
|
|
||||||
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
|
|
||||||
ResourceTypeOrNameArgs(o.all, o.resources...).
|
ResourceTypeOrNameArgs(o.all, o.resources...).
|
||||||
Latest()
|
Latest()
|
||||||
} else {
|
|
||||||
b = b.Local(f.ClientForMapping)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
one := false
|
one := false
|
||||||
r := b.Do().IntoSingleItemImplied(&one)
|
r := b.ContinueOnError().
|
||||||
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
|
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
||||||
|
IncludeUninitialized(includeUninitialized).
|
||||||
|
Flatten().
|
||||||
|
Do().
|
||||||
|
IntoSingleItemImplied(&one)
|
||||||
if err := r.Err(); err != nil {
|
if err := r.Err(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -153,13 +153,7 @@ func RunPatch(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []strin
|
|||||||
return fmt.Errorf("unable to parse %q: %v", patch, err)
|
return fmt.Errorf("unable to parse %q: %v", patch, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
mapper, typer, err := f.UnstructuredObject()
|
r := f.NewUnstructuredBuilder().
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
r := f.NewBuilder().
|
|
||||||
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
|
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
FilenameParam(enforceNamespace, &options.FilenameOptions).
|
FilenameParam(enforceNamespace, &options.FilenameOptions).
|
||||||
|
@ -120,13 +120,12 @@ func RunReplace(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []str
|
|||||||
return fmt.Errorf("--timeout must have --force specified")
|
return fmt.Errorf("--timeout must have --force specified")
|
||||||
}
|
}
|
||||||
|
|
||||||
mapper, typer, err := f.UnstructuredObject()
|
mapper, _, err := f.UnstructuredObject()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
r := f.NewBuilder().
|
r := f.NewUnstructuredBuilder().
|
||||||
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
|
|
||||||
Schema(schema).
|
Schema(schema).
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
@ -249,8 +248,7 @@ func forceReplace(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []s
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
r = f.NewBuilder().
|
r = f.NewUnstructuredBuilder().
|
||||||
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
|
|
||||||
Schema(schema).
|
Schema(schema).
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
|
@ -226,13 +226,7 @@ func (options *GetOptions) Run(f cmdutil.Factory, cmd *cobra.Command, args []str
|
|||||||
return options.watch(f, cmd, args)
|
return options.watch(f, cmd, args)
|
||||||
}
|
}
|
||||||
|
|
||||||
mapper, typer, err := f.UnstructuredObject()
|
r := f.NewUnstructuredBuilder().
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
r := f.NewBuilder().
|
|
||||||
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
|
|
||||||
NamespaceParam(options.Namespace).DefaultNamespace().AllNamespaces(options.AllNamespaces).
|
NamespaceParam(options.Namespace).DefaultNamespace().AllNamespaces(options.AllNamespaces).
|
||||||
FilenameParam(options.ExplicitNamespace, &options.FilenameOptions).
|
FilenameParam(options.ExplicitNamespace, &options.FilenameOptions).
|
||||||
LabelSelectorParam(options.LabelSelector).
|
LabelSelectorParam(options.LabelSelector).
|
||||||
@ -439,18 +433,12 @@ func (options *GetOptions) raw(f cmdutil.Factory) error {
|
|||||||
// watch starts a client-side watch of one or more resources.
|
// watch starts a client-side watch of one or more resources.
|
||||||
// TODO: remove the need for arguments here.
|
// TODO: remove the need for arguments here.
|
||||||
func (options *GetOptions) watch(f cmdutil.Factory, cmd *cobra.Command, args []string) error {
|
func (options *GetOptions) watch(f cmdutil.Factory, cmd *cobra.Command, args []string) error {
|
||||||
mapper, typer, err := f.UnstructuredObject()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: this could be better factored
|
// TODO: this could be better factored
|
||||||
// include uninitialized objects when watching on a single object
|
// include uninitialized objects when watching on a single object
|
||||||
// unless explicitly set --include-uninitialized=false
|
// unless explicitly set --include-uninitialized=false
|
||||||
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, len(args) == 2)
|
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, len(args) == 2)
|
||||||
|
|
||||||
r := f.NewBuilder().
|
r := f.NewUnstructuredBuilder().
|
||||||
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
|
|
||||||
NamespaceParam(options.Namespace).DefaultNamespace().AllNamespaces(options.AllNamespaces).
|
NamespaceParam(options.Namespace).DefaultNamespace().AllNamespaces(options.AllNamespaces).
|
||||||
FilenameParam(options.ExplicitNamespace, &options.FilenameOptions).
|
FilenameParam(options.ExplicitNamespace, &options.FilenameOptions).
|
||||||
LabelSelectorParam(options.LabelSelector).
|
LabelSelectorParam(options.LabelSelector).
|
||||||
@ -462,7 +450,7 @@ func (options *GetOptions) watch(f cmdutil.Factory, cmd *cobra.Command, args []s
|
|||||||
SingleResourceType().
|
SingleResourceType().
|
||||||
Latest().
|
Latest().
|
||||||
Do()
|
Do()
|
||||||
err = r.Err()
|
err := r.Err()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -238,13 +238,13 @@ func (o *EnvOptions) RunEnv(f cmdutil.Factory) error {
|
|||||||
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
||||||
Flatten()
|
Flatten()
|
||||||
|
|
||||||
if !o.Local {
|
if o.Local {
|
||||||
|
b = b.Local(f.ClientForMapping)
|
||||||
|
} else {
|
||||||
b = b.
|
b = b.
|
||||||
LabelSelectorParam(o.Selector).
|
LabelSelectorParam(o.Selector).
|
||||||
ResourceTypeOrNameArgs(o.All, o.From).
|
ResourceTypeOrNameArgs(o.All, o.From).
|
||||||
Latest()
|
Latest()
|
||||||
} else {
|
|
||||||
b = b.Local(f.ClientForMapping)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
infos, err := b.Do().Infos()
|
infos, err := b.Do().Infos()
|
||||||
@ -302,13 +302,13 @@ func (o *EnvOptions) RunEnv(f cmdutil.Factory) error {
|
|||||||
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
||||||
Flatten()
|
Flatten()
|
||||||
|
|
||||||
if !o.Local {
|
if o.Local {
|
||||||
|
b = b.Local(f.ClientForMapping)
|
||||||
|
} else {
|
||||||
b = b.
|
b = b.
|
||||||
LabelSelectorParam(o.Selector).
|
LabelSelectorParam(o.Selector).
|
||||||
ResourceTypeOrNameArgs(o.All, o.Resources...).
|
ResourceTypeOrNameArgs(o.All, o.Resources...).
|
||||||
Latest()
|
Latest()
|
||||||
} else {
|
|
||||||
b = b.Local(f.ClientForMapping)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
o.Infos, err = b.Do().Infos()
|
o.Infos, err = b.Do().Infos()
|
||||||
|
@ -147,12 +147,7 @@ func (o *ImageOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []st
|
|||||||
IncludeUninitialized(includeUninitialized).
|
IncludeUninitialized(includeUninitialized).
|
||||||
Flatten()
|
Flatten()
|
||||||
|
|
||||||
if !o.Local {
|
if o.Local {
|
||||||
builder = builder.
|
|
||||||
LabelSelectorParam(o.Selector).
|
|
||||||
ResourceTypeOrNameArgs(o.All, o.Resources...).
|
|
||||||
Latest()
|
|
||||||
} else {
|
|
||||||
// if a --local flag was provided, and a resource was specified in the form
|
// if a --local flag was provided, and a resource was specified in the form
|
||||||
// <resource>/<name>, fail immediately as --local cannot query the api server
|
// <resource>/<name>, fail immediately as --local cannot query the api server
|
||||||
// for the specified resource.
|
// for the specified resource.
|
||||||
@ -161,6 +156,11 @@ func (o *ImageOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []st
|
|||||||
}
|
}
|
||||||
|
|
||||||
builder = builder.Local(f.ClientForMapping)
|
builder = builder.Local(f.ClientForMapping)
|
||||||
|
} else {
|
||||||
|
builder = builder.
|
||||||
|
LabelSelectorParam(o.Selector).
|
||||||
|
ResourceTypeOrNameArgs(o.All, o.Resources...).
|
||||||
|
Latest()
|
||||||
}
|
}
|
||||||
|
|
||||||
o.Infos, err = builder.Do().Infos()
|
o.Infos, err = builder.Do().Infos()
|
||||||
|
@ -151,12 +151,7 @@ func (o *ResourcesOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args
|
|||||||
IncludeUninitialized(includeUninitialized).
|
IncludeUninitialized(includeUninitialized).
|
||||||
Flatten()
|
Flatten()
|
||||||
|
|
||||||
if !o.Local {
|
if o.Local {
|
||||||
builder = builder.
|
|
||||||
LabelSelectorParam(o.Selector).
|
|
||||||
ResourceTypeOrNameArgs(o.All, args...).
|
|
||||||
Latest()
|
|
||||||
} else {
|
|
||||||
// if a --local flag was provided, and a resource was specified in the form
|
// if a --local flag was provided, and a resource was specified in the form
|
||||||
// <resource>/<name>, fail immediately as --local cannot query the api server
|
// <resource>/<name>, fail immediately as --local cannot query the api server
|
||||||
// for the specified resource.
|
// for the specified resource.
|
||||||
@ -165,6 +160,11 @@ func (o *ResourcesOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args
|
|||||||
}
|
}
|
||||||
|
|
||||||
builder = builder.Local(f.ClientForMapping)
|
builder = builder.Local(f.ClientForMapping)
|
||||||
|
} else {
|
||||||
|
builder = builder.
|
||||||
|
LabelSelectorParam(o.Selector).
|
||||||
|
ResourceTypeOrNameArgs(o.All, args...).
|
||||||
|
Latest()
|
||||||
}
|
}
|
||||||
|
|
||||||
o.Infos, err = builder.Do().Infos()
|
o.Infos, err = builder.Do().Infos()
|
||||||
|
@ -132,11 +132,7 @@ func (o *SelectorOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args [
|
|||||||
IncludeUninitialized(includeUninitialized).
|
IncludeUninitialized(includeUninitialized).
|
||||||
Flatten()
|
Flatten()
|
||||||
|
|
||||||
if !o.local {
|
if o.local {
|
||||||
o.builder = o.builder.
|
|
||||||
ResourceTypeOrNameArgs(o.all, o.resources...).
|
|
||||||
Latest()
|
|
||||||
} else {
|
|
||||||
// if a --local flag was provided, and a resource was specified in the form
|
// if a --local flag was provided, and a resource was specified in the form
|
||||||
// <resource>/<name>, fail immediately as --local cannot query the api server
|
// <resource>/<name>, fail immediately as --local cannot query the api server
|
||||||
// for the specified resource.
|
// for the specified resource.
|
||||||
@ -145,6 +141,10 @@ func (o *SelectorOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args [
|
|||||||
}
|
}
|
||||||
|
|
||||||
o.builder = o.builder.Local(f.ClientForMapping)
|
o.builder = o.builder.Local(f.ClientForMapping)
|
||||||
|
} else {
|
||||||
|
o.builder = o.builder.
|
||||||
|
ResourceTypeOrNameArgs(o.all, o.resources...).
|
||||||
|
Latest()
|
||||||
}
|
}
|
||||||
|
|
||||||
o.PrintObject = func(obj runtime.Object) error {
|
o.PrintObject = func(obj runtime.Object) error {
|
||||||
|
@ -133,12 +133,7 @@ func (o *SubjectOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []
|
|||||||
IncludeUninitialized(includeUninitialized).
|
IncludeUninitialized(includeUninitialized).
|
||||||
Flatten()
|
Flatten()
|
||||||
|
|
||||||
if !o.Local {
|
if o.Local {
|
||||||
builder = builder.
|
|
||||||
LabelSelectorParam(o.Selector).
|
|
||||||
ResourceTypeOrNameArgs(o.All, args...).
|
|
||||||
Latest()
|
|
||||||
} else {
|
|
||||||
// if a --local flag was provided, and a resource was specified in the form
|
// if a --local flag was provided, and a resource was specified in the form
|
||||||
// <resource>/<name>, fail immediately as --local cannot query the api server
|
// <resource>/<name>, fail immediately as --local cannot query the api server
|
||||||
// for the specified resource.
|
// for the specified resource.
|
||||||
@ -147,6 +142,11 @@ func (o *SubjectOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []
|
|||||||
}
|
}
|
||||||
|
|
||||||
builder = builder.Local(f.ClientForMapping)
|
builder = builder.Local(f.ClientForMapping)
|
||||||
|
} else {
|
||||||
|
builder = builder.
|
||||||
|
LabelSelectorParam(o.Selector).
|
||||||
|
ResourceTypeOrNameArgs(o.All, args...).
|
||||||
|
Latest()
|
||||||
}
|
}
|
||||||
|
|
||||||
o.Infos, err = builder.Do().Infos()
|
o.Infos, err = builder.Do().Infos()
|
||||||
|
@ -29,6 +29,7 @@ go_library(
|
|||||||
"//vendor/github.com/spf13/pflag:go_default_library",
|
"//vendor/github.com/spf13/pflag:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||||
|
@ -28,6 +28,7 @@ import (
|
|||||||
|
|
||||||
"k8s.io/apimachinery/pkg/api/meta"
|
"k8s.io/apimachinery/pkg/api/meta"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
"k8s.io/apimachinery/pkg/runtime/serializer"
|
"k8s.io/apimachinery/pkg/runtime/serializer"
|
||||||
@ -481,6 +482,19 @@ func (f *FakeFactory) NewBuilder() *resource.Builder {
|
|||||||
return resource.NewBuilder(mapper, f.CategoryExpander(), typer, resource.ClientMapperFunc(f.ClientForMapping), f.Decoder(true))
|
return resource.NewBuilder(mapper, f.CategoryExpander(), typer, resource.ClientMapperFunc(f.ClientForMapping), f.Decoder(true))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *FakeFactory) NewUnstructuredBuilder() *resource.Builder {
|
||||||
|
mapper, typer, err := f.UnstructuredObject()
|
||||||
|
if err != nil {
|
||||||
|
cmdutil.CheckErr(err)
|
||||||
|
}
|
||||||
|
return resource.NewBuilder(
|
||||||
|
mapper,
|
||||||
|
f.CategoryExpander(),
|
||||||
|
typer,
|
||||||
|
resource.ClientMapperFunc(f.UnstructuredClientForMapping),
|
||||||
|
unstructured.UnstructuredJSONScheme)
|
||||||
|
}
|
||||||
|
|
||||||
func (f *FakeFactory) DefaultResourceFilterOptions(cmd *cobra.Command, withNamespace bool) *printers.PrintOptions {
|
func (f *FakeFactory) DefaultResourceFilterOptions(cmd *cobra.Command, withNamespace bool) *printers.PrintOptions {
|
||||||
return &printers.PrintOptions{}
|
return &printers.PrintOptions{}
|
||||||
}
|
}
|
||||||
@ -758,6 +772,19 @@ func (f *fakeAPIFactory) NewBuilder() *resource.Builder {
|
|||||||
return resource.NewBuilder(mapper, f.CategoryExpander(), typer, resource.ClientMapperFunc(f.ClientForMapping), f.Decoder(true))
|
return resource.NewBuilder(mapper, f.CategoryExpander(), typer, resource.ClientMapperFunc(f.ClientForMapping), f.Decoder(true))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *fakeAPIFactory) NewUnstructuredBuilder() *resource.Builder {
|
||||||
|
mapper, typer, err := f.UnstructuredObject()
|
||||||
|
if err != nil {
|
||||||
|
cmdutil.CheckErr(err)
|
||||||
|
}
|
||||||
|
return resource.NewBuilder(
|
||||||
|
mapper,
|
||||||
|
f.CategoryExpander(),
|
||||||
|
typer,
|
||||||
|
resource.ClientMapperFunc(f.UnstructuredClientForMapping),
|
||||||
|
unstructured.UnstructuredJSONScheme)
|
||||||
|
}
|
||||||
|
|
||||||
func (f *fakeAPIFactory) SuggestedPodTemplateResources() []schema.GroupResource {
|
func (f *fakeAPIFactory) SuggestedPodTemplateResources() []schema.GroupResource {
|
||||||
return []schema.GroupResource{}
|
return []schema.GroupResource{}
|
||||||
}
|
}
|
||||||
|
@ -107,12 +107,12 @@ func (o *EditOptions) Complete(f cmdutil.Factory, out, errOut io.Writer, args []
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
mapper, typer, err := f.UnstructuredObject()
|
mapper, _, err := f.UnstructuredObject()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
b := f.NewBuilder().Unstructured(f.UnstructuredClientForMapping, mapper, typer)
|
b := f.NewUnstructuredBuilder()
|
||||||
if o.EditMode == NormalEditMode || o.EditMode == ApplyEditMode {
|
if o.EditMode == NormalEditMode || o.EditMode == ApplyEditMode {
|
||||||
// when do normal edit or apply edit we need to always retrieve the latest resource from server
|
// when do normal edit or apply edit we need to always retrieve the latest resource from server
|
||||||
b = b.ResourceTypeOrNameArgs(true, args...).Latest()
|
b = b.ResourceTypeOrNameArgs(true, args...).Latest()
|
||||||
@ -132,7 +132,7 @@ func (o *EditOptions) Complete(f cmdutil.Factory, out, errOut io.Writer, args []
|
|||||||
|
|
||||||
o.updatedResultGetter = func(data []byte) *resource.Result {
|
o.updatedResultGetter = func(data []byte) *resource.Result {
|
||||||
// resource builder to read objects from edited data
|
// resource builder to read objects from edited data
|
||||||
return resource.NewBuilder(mapper, f.CategoryExpander(), typer, resource.ClientMapperFunc(f.UnstructuredClientForMapping), unstructured.UnstructuredJSONScheme).
|
return f.NewUnstructuredBuilder().
|
||||||
Stream(bytes.NewReader(data), "edited-file").
|
Stream(bytes.NewReader(data), "edited-file").
|
||||||
IncludeUninitialized(includeUninitialized).
|
IncludeUninitialized(includeUninitialized).
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
|
@ -243,8 +243,10 @@ type BuilderFactory interface {
|
|||||||
PrinterForMapping(cmd *cobra.Command, isLocal bool, outputOpts *printers.OutputOptions, mapping *meta.RESTMapping, withNamespace bool) (printers.ResourcePrinter, error)
|
PrinterForMapping(cmd *cobra.Command, isLocal bool, outputOpts *printers.OutputOptions, mapping *meta.RESTMapping, withNamespace bool) (printers.ResourcePrinter, error)
|
||||||
// PrintObject prints an api object given command line flags to modify the output format
|
// PrintObject prints an api object given command line flags to modify the output format
|
||||||
PrintObject(cmd *cobra.Command, isLocal bool, mapper meta.RESTMapper, obj runtime.Object, out io.Writer) error
|
PrintObject(cmd *cobra.Command, isLocal bool, mapper meta.RESTMapper, obj runtime.Object, out io.Writer) error
|
||||||
// One stop shopping for a Builder
|
// One stop shopping for a structured Builder
|
||||||
NewBuilder() *resource.Builder
|
NewBuilder() *resource.Builder
|
||||||
|
// One stop shopping for a unstructured Builder
|
||||||
|
NewUnstructuredBuilder() *resource.Builder
|
||||||
// PluginLoader provides the implementation to be used to load cli plugins.
|
// PluginLoader provides the implementation to be used to load cli plugins.
|
||||||
PluginLoader() plugins.PluginLoader
|
PluginLoader() plugins.PluginLoader
|
||||||
// PluginRunner provides the implementation to be used to run cli plugins.
|
// PluginRunner provides the implementation to be used to run cli plugins.
|
||||||
|
@ -138,8 +138,7 @@ func (f *ring2Factory) PrintObject(cmd *cobra.Command, isLocal bool, mapper meta
|
|||||||
return printer.PrintObj(obj, out)
|
return printer.PrintObj(obj, out)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewBuilder returns a new resource builder.
|
// NewBuilder returns a new resource builder for structured api objects.
|
||||||
// Receives a bool flag and avoids remote calls if set to false
|
|
||||||
func (f *ring2Factory) NewBuilder() *resource.Builder {
|
func (f *ring2Factory) NewBuilder() *resource.Builder {
|
||||||
clientMapperFunc := resource.ClientMapperFunc(f.objectMappingFactory.ClientForMapping)
|
clientMapperFunc := resource.ClientMapperFunc(f.objectMappingFactory.ClientForMapping)
|
||||||
|
|
||||||
@ -149,6 +148,18 @@ func (f *ring2Factory) NewBuilder() *resource.Builder {
|
|||||||
return resource.NewBuilder(mapper, categoryExpander, typer, clientMapperFunc, f.clientAccessFactory.Decoder(true))
|
return resource.NewBuilder(mapper, categoryExpander, typer, clientMapperFunc, f.clientAccessFactory.Decoder(true))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewUnstructuredBuilder returns a new resource builder for unstructured api objects.
|
||||||
|
func (f *ring2Factory) NewUnstructuredBuilder() *resource.Builder {
|
||||||
|
clientMapperFunc := resource.ClientMapperFunc(f.objectMappingFactory.UnstructuredClientForMapping)
|
||||||
|
mapper, typer, err := f.objectMappingFactory.UnstructuredObject()
|
||||||
|
if err != nil {
|
||||||
|
CheckErr(err)
|
||||||
|
}
|
||||||
|
categoryExpander := f.objectMappingFactory.CategoryExpander()
|
||||||
|
|
||||||
|
return resource.NewBuilder(mapper, categoryExpander, typer, clientMapperFunc, unstructured.UnstructuredJSONScheme)
|
||||||
|
}
|
||||||
|
|
||||||
// PluginLoader loads plugins from a path set by the KUBECTL_PLUGINS_PATH env var.
|
// PluginLoader loads plugins from a path set by the KUBECTL_PLUGINS_PATH env var.
|
||||||
// If this env var is not set, it defaults to
|
// If this env var is not set, it defaults to
|
||||||
// "~/.kube/plugins", plus
|
// "~/.kube/plugins", plus
|
||||||
|
@ -29,7 +29,6 @@ go_library(
|
|||||||
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library",
|
|
||||||
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
|
@ -26,7 +26,6 @@ import (
|
|||||||
|
|
||||||
"k8s.io/apimachinery/pkg/api/meta"
|
"k8s.io/apimachinery/pkg/api/meta"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
|
||||||
"k8s.io/apimachinery/pkg/labels"
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
@ -170,17 +169,6 @@ func (b *Builder) Local(mapperFunc ClientMapperFunc) *Builder {
|
|||||||
return b
|
return b
|
||||||
}
|
}
|
||||||
|
|
||||||
// Unstructured updates the builder's ClientMapper, RESTMapper,
|
|
||||||
// ObjectTyper, and codec for working with unstructured api objects
|
|
||||||
func (b *Builder) Unstructured(mapperFunc ClientMapperFunc, mapper meta.RESTMapper, typer runtime.ObjectTyper) *Builder {
|
|
||||||
b.mapper.RESTMapper = mapper
|
|
||||||
b.mapper.ObjectTyper = typer
|
|
||||||
b.mapper.Decoder = unstructured.UnstructuredJSONScheme
|
|
||||||
b.mapper.ClientMapper = ClientMapperFunc(mapperFunc)
|
|
||||||
|
|
||||||
return b
|
|
||||||
}
|
|
||||||
|
|
||||||
// URL accepts a number of URLs directly.
|
// URL accepts a number of URLs directly.
|
||||||
func (b *Builder) URL(httpAttemptCount int, urls ...*url.URL) *Builder {
|
func (b *Builder) URL(httpAttemptCount int, urls ...*url.URL) *Builder {
|
||||||
for _, u := range urls {
|
for _, u := range urls {
|
||||||
|
Loading…
Reference in New Issue
Block a user