Commit 98e0c699 authored by Clayton Coleman's avatar Clayton Coleman

Revert "refactor builder in kubectl factory"

This reverts commit 06c5be98.
parent 6b97376a
...@@ -189,23 +189,31 @@ func (o AnnotateOptions) RunAnnotate(f cmdutil.Factory, cmd *cobra.Command) erro ...@@ -189,23 +189,31 @@ 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().
NamespaceParam(namespace).DefaultNamespace().
FilenameParam(enforceNamespace, &o.FilenameOptions).
IncludeUninitialized(includeUninitialized).
Flatten()
var b *resource.Builder if !o.local {
if o.local { // call this method here, as it requires an api call
b = f.NewBuilder(). // and will cause the command to fail when there is
Local(f.ClientForMapping) // no connection to a server
} else { mapper, typer, err := f.UnstructuredObject()
b = f.NewUnstructuredBuilder(). if err != nil {
LabelSelectorParam(o.selector). 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)
} }
r := b.ContinueOnError().
NamespaceParam(namespace).DefaultNamespace(). r := b.Do()
FilenameParam(enforceNamespace, &o.FilenameOptions).
IncludeUninitialized(includeUninitialized).
Flatten().
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 ...@@ -198,7 +198,7 @@ func RunApply(f cmdutil.Factory, cmd *cobra.Command, out, errOut io.Writer, opti
return err return err
} }
mapper, _, err := f.UnstructuredObject() mapper, typer, err := f.UnstructuredObject()
if err != nil { if err != nil {
return err return err
} }
...@@ -213,7 +213,8 @@ func RunApply(f cmdutil.Factory, cmd *cobra.Command, out, errOut io.Writer, opti ...@@ -213,7 +213,8 @@ 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.NewUnstructuredBuilder(). r := f.NewBuilder().
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
Schema(schema). Schema(schema).
ContinueOnError(). ContinueOnError().
NamespaceParam(cmdNamespace).DefaultNamespace(). NamespaceParam(cmdNamespace).DefaultNamespace().
......
...@@ -122,13 +122,19 @@ func (o *SetLastAppliedOptions) Complete(f cmdutil.Factory, cmd *cobra.Command) ...@@ -122,13 +122,19 @@ 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 {
r := f.NewUnstructuredBuilder(). mapper, typer, err := f.UnstructuredObject()
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,7 +87,13 @@ func (o *ViewLastAppliedOptions) Complete(f cmdutil.Factory, args []string) erro ...@@ -87,7 +87,13 @@ func (o *ViewLastAppliedOptions) Complete(f cmdutil.Factory, args []string) erro
return err return err
} }
r := f.NewUnstructuredBuilder(). mapper, typer, err := f.UnstructuredObject()
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 ...@@ -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()
......
...@@ -184,12 +184,13 @@ func RunCreate(f cmdutil.Factory, cmd *cobra.Command, out, errOut io.Writer, opt ...@@ -184,12 +184,13 @@ func RunCreate(f cmdutil.Factory, cmd *cobra.Command, out, errOut io.Writer, opt
return err return err
} }
mapper, _, err := f.UnstructuredObject() mapper, typer, err := f.UnstructuredObject()
if err != nil { if err != nil {
return err return err
} }
r := f.NewUnstructuredBuilder(). r := f.NewBuilder().
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
Schema(schema). Schema(schema).
ContinueOnError(). ContinueOnError().
NamespaceParam(cmdNamespace).DefaultNamespace(). NamespaceParam(cmdNamespace).DefaultNamespace().
......
...@@ -170,14 +170,15 @@ func (o *DeleteOptions) Complete(f cmdutil.Factory, out, errOut io.Writer, args ...@@ -170,14 +170,15 @@ func (o *DeleteOptions) Complete(f cmdutil.Factory, out, errOut io.Writer, args
} }
// Set up client based support. // Set up client based support.
mapper, _, err := f.UnstructuredObject() mapper, typer, 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.NewUnstructuredBuilder(). r := f.NewBuilder().
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
ContinueOnError(). ContinueOnError().
NamespaceParam(cmdNamespace).DefaultNamespace(). NamespaceParam(cmdNamespace).DefaultNamespace().
FilenameParam(enforceNamespace, &o.FilenameOptions). FilenameParam(enforceNamespace, &o.FilenameOptions).
......
...@@ -116,10 +116,16 @@ func RunDescribe(f cmdutil.Factory, out, cmdErr io.Writer, cmd *cobra.Command, a ...@@ -116,10 +116,16 @@ 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.NewUnstructuredBuilder(). r := f.NewBuilder().
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
ContinueOnError(). ContinueOnError().
NamespaceParam(cmdNamespace).DefaultNamespace().AllNamespaces(allNamespaces). NamespaceParam(cmdNamespace).DefaultNamespace().AllNamespaces(allNamespaces).
FilenameParam(enforceNamespace, options). FilenameParam(enforceNamespace, options).
......
...@@ -408,12 +408,18 @@ func RunDiff(f cmdutil.Factory, diff *DiffProgram, options *DiffOptions, from, t ...@@ -408,12 +408,18 @@ 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.NewUnstructuredBuilder(). r := f.NewBuilder().
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
NamespaceParam(cmdNamespace).DefaultNamespace(). NamespaceParam(cmdNamespace).DefaultNamespace().
FilenameParam(enforceNamespace, &options.FilenameOptions). FilenameParam(enforceNamespace, &options.FilenameOptions).
Flatten(). Flatten().
......
...@@ -191,25 +191,32 @@ func (o *LabelOptions) RunLabel(f cmdutil.Factory, cmd *cobra.Command) error { ...@@ -191,25 +191,32 @@ 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)
var b *resource.Builder b := f.NewBuilder().
if o.local { ContinueOnError().
b = f.NewBuilder(). NamespaceParam(cmdNamespace).DefaultNamespace().
Local(f.ClientForMapping) FilenameParam(enforceNamespace, &o.FilenameOptions).
} else { IncludeUninitialized(includeUninitialized).
b = f.NewUnstructuredBuilder(). Flatten()
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.ContinueOnError(). r := b.Do().IntoSingleItemImplied(&one)
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,7 +153,13 @@ func RunPatch(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []strin ...@@ -153,7 +153,13 @@ 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)
} }
r := f.NewUnstructuredBuilder(). mapper, typer, err := f.UnstructuredObject()
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,12 +120,13 @@ func RunReplace(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []str ...@@ -120,12 +120,13 @@ 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, _, err := f.UnstructuredObject() mapper, typer, err := f.UnstructuredObject()
if err != nil { if err != nil {
return err return err
} }
r := f.NewUnstructuredBuilder(). r := f.NewBuilder().
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
Schema(schema). Schema(schema).
ContinueOnError(). ContinueOnError().
NamespaceParam(cmdNamespace).DefaultNamespace(). NamespaceParam(cmdNamespace).DefaultNamespace().
...@@ -248,7 +249,8 @@ func forceReplace(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []s ...@@ -248,7 +249,8 @@ func forceReplace(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []s
return err return err
} }
r = f.NewUnstructuredBuilder(). r = f.NewBuilder().
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
Schema(schema). Schema(schema).
ContinueOnError(). ContinueOnError().
NamespaceParam(cmdNamespace).DefaultNamespace(). NamespaceParam(cmdNamespace).DefaultNamespace().
......
...@@ -232,7 +232,13 @@ func (options *GetOptions) Run(f cmdutil.Factory, cmd *cobra.Command, args []str ...@@ -232,7 +232,13 @@ func (options *GetOptions) Run(f cmdutil.Factory, cmd *cobra.Command, args []str
return options.watch(f, cmd, args) return options.watch(f, cmd, args)
} }
r := f.NewUnstructuredBuilder(). mapper, typer, err := f.UnstructuredObject()
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,12 +445,18 @@ func (options *GetOptions) raw(f cmdutil.Factory) error { ...@@ -439,12 +445,18 @@ 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.NewUnstructuredBuilder(). 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).
...@@ -456,7 +468,7 @@ func (options *GetOptions) watch(f cmdutil.Factory, cmd *cobra.Command, args []s ...@@ -456,7 +468,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
} }
......
...@@ -241,13 +241,13 @@ func (o *EnvOptions) RunEnv(f cmdutil.Factory) error { ...@@ -241,13 +241,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()
...@@ -309,13 +309,13 @@ func (o *EnvOptions) RunEnv(f cmdutil.Factory) error { ...@@ -309,13 +309,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()
......
...@@ -149,7 +149,12 @@ func (o *ImageOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []st ...@@ -149,7 +149,12 @@ 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.
...@@ -158,11 +163,6 @@ func (o *ImageOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []st ...@@ -158,11 +163,6 @@ 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,7 +151,12 @@ func (o *ResourcesOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args ...@@ -151,7 +151,12 @@ 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.
...@@ -160,11 +165,6 @@ func (o *ResourcesOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args ...@@ -160,11 +165,6 @@ 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()
......
...@@ -135,7 +135,11 @@ func (o *SelectorOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args [ ...@@ -135,7 +135,11 @@ 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.
...@@ -144,10 +148,6 @@ func (o *SelectorOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args [ ...@@ -144,10 +148,6 @@ 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,7 +133,12 @@ func (o *SubjectOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args [] ...@@ -133,7 +133,12 @@ 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.
...@@ -142,11 +147,6 @@ func (o *SubjectOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args [] ...@@ -142,11 +147,6 @@ 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()
......
...@@ -32,7 +32,6 @@ go_library( ...@@ -32,7 +32,6 @@ go_library(
"//vendor/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/api/core/v1: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/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",
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
......
...@@ -29,7 +29,6 @@ import ( ...@@ -29,7 +29,6 @@ import (
"k8s.io/api/core/v1" "k8s.io/api/core/v1"
"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"
...@@ -522,19 +521,6 @@ func (f *FakeFactory) NewBuilder() *resource.Builder { ...@@ -522,19 +521,6 @@ 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{}
} }
...@@ -849,19 +835,6 @@ func (f *fakeAPIFactory) NewBuilder() *resource.Builder { ...@@ -849,19 +835,6 @@ 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 [] ...@@ -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, _, err := f.UnstructuredObject() mapper, typer, err := f.UnstructuredObject()
if err != nil { if err != nil {
return err return err
} }
b := f.NewUnstructuredBuilder() b := f.NewBuilder().Unstructured(f.UnstructuredClientForMapping, mapper, typer)
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 [] ...@@ -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 f.NewUnstructuredBuilder(). return resource.NewBuilder(mapper, f.CategoryExpander(), typer, resource.ClientMapperFunc(f.UnstructuredClientForMapping), unstructured.UnstructuredJSONScheme).
Stream(bytes.NewReader(data), "edited-file"). Stream(bytes.NewReader(data), "edited-file").
IncludeUninitialized(includeUninitialized). IncludeUninitialized(includeUninitialized).
ContinueOnError(). ContinueOnError().
......
...@@ -251,10 +251,9 @@ type BuilderFactory interface { ...@@ -251,10 +251,9 @@ type BuilderFactory interface {
PrintResourceInfoForCommand(cmd *cobra.Command, info *resource.Info, out io.Writer) error PrintResourceInfoForCommand(cmd *cobra.Command, info *resource.Info, out io.Writer) error
// PrintSuccess prints message after finishing mutating operations // PrintSuccess prints message after finishing mutating operations
PrintSuccess(mapper meta.RESTMapper, shortOutput bool, out io.Writer, resource, name string, dryRun bool, operation string) PrintSuccess(mapper meta.RESTMapper, shortOutput bool, out io.Writer, resource, name string, dryRun bool, operation string)
// One stop shopping for a structured Builder // NewBuilder returns an object that assists in loading objects from both disk and the server
// and which implements the common patterns for CLI interactions with generic resources.
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.
......
...@@ -190,18 +190,6 @@ func (f *ring2Factory) NewBuilder() *resource.Builder { ...@@ -190,18 +190,6 @@ 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,6 +29,7 @@ go_library( ...@@ -29,6 +29,7 @@ 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,6 +26,7 @@ import ( ...@@ -26,6 +26,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/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"
...@@ -171,6 +172,17 @@ func (b *Builder) Local(mapperFunc ClientMapperFunc) *Builder { ...@@ -171,6 +172,17 @@ 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 {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment