mirror of https://github.com/k3s-io/k3s
add Local and Unstructured builder attributes
Moves DisabledClientMapperForMapping wrapper to new Local attribute. Removes Factory#NewUnstructuredBuilder in favor of new Unstructured builder attribute.pull/6/head
parent
c10f4f78bc
commit
90d76adb4b
|
@ -186,13 +186,8 @@ func (o AnnotateOptions) RunAnnotate(f cmdutil.Factory, cmd *cobra.Command) erro
|
||||||
|
|
||||||
changeCause := f.Command(cmd, false)
|
changeCause := f.Command(cmd, false)
|
||||||
|
|
||||||
builder, err := f.NewUnstructuredBuilder(!o.local)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, false)
|
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, false)
|
||||||
b := builder.
|
b := f.NewBuilder().
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
NamespaceParam(namespace).DefaultNamespace().
|
NamespaceParam(namespace).DefaultNamespace().
|
||||||
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
||||||
|
@ -200,10 +195,22 @@ func (o AnnotateOptions) RunAnnotate(f cmdutil.Factory, cmd *cobra.Command) erro
|
||||||
Flatten()
|
Flatten()
|
||||||
|
|
||||||
if !o.local {
|
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.SelectorParam(o.selector).
|
b = b.SelectorParam(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.Do()
|
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, _, err := f.UnstructuredObject()
|
mapper, typer, err := f.UnstructuredObject()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -210,16 +210,11 @@ func RunApply(f cmdutil.Factory, cmd *cobra.Command, out, errOut io.Writer, opti
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
builder, err := f.NewUnstructuredBuilder(true)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// 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 := builder.
|
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
|
||||||
Schema(schema).
|
Schema(schema).
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
|
|
|
@ -122,12 +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 {
|
||||||
builder, err := f.NewUnstructuredBuilder(true)
|
mapper, typer, err := f.UnstructuredObject()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
r := builder.
|
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().
|
||||||
|
|
|
@ -87,12 +87,13 @@ func (o *ViewLastAppliedOptions) Complete(f cmdutil.Factory, args []string) erro
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
builder, err := f.NewUnstructuredBuilder(true)
|
mapper, typer, err := f.UnstructuredObject()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
r := builder.
|
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...).
|
||||||
|
|
|
@ -142,7 +142,7 @@ func (p *AttachOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, argsIn [
|
||||||
return cmdutil.UsageErrorf(cmd, err.Error())
|
return cmdutil.UsageErrorf(cmd, err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
builder := f.NewBuilder(true).
|
builder := f.NewBuilder().
|
||||||
NamespaceParam(namespace).DefaultNamespace()
|
NamespaceParam(namespace).DefaultNamespace()
|
||||||
|
|
||||||
switch len(argsIn) {
|
switch len(argsIn) {
|
||||||
|
|
|
@ -92,7 +92,7 @@ func (o *ReconcileOptions) Complete(cmd *cobra.Command, f cmdutil.Factory, args
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
o.ResourceBuilder = f.NewBuilder(true).
|
o.ResourceBuilder = f.NewBuilder().
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
NamespaceParam(namespace).DefaultNamespace().
|
NamespaceParam(namespace).DefaultNamespace().
|
||||||
FilenameParam(enforceNamespace, options).
|
FilenameParam(enforceNamespace, options).
|
||||||
|
|
|
@ -90,8 +90,7 @@ func RunAutoscale(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []s
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
mapper, typer := f.Object()
|
r := f.NewBuilder().
|
||||||
r := f.NewBuilder(true).
|
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
NamespaceParam(namespace).DefaultNamespace().
|
NamespaceParam(namespace).DefaultNamespace().
|
||||||
FilenameParam(enforceNamespace, options).
|
FilenameParam(enforceNamespace, options).
|
||||||
|
@ -145,6 +144,7 @@ func RunAutoscale(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []s
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mapper, typer := f.Object()
|
||||||
resourceMapper := &resource.Mapper{
|
resourceMapper := &resource.Mapper{
|
||||||
ObjectTyper: typer,
|
ObjectTyper: typer,
|
||||||
RESTMapper: mapper,
|
RESTMapper: mapper,
|
||||||
|
|
|
@ -167,7 +167,7 @@ func (options *CertificateOptions) modifyCertificateCondition(f cmdutil.Factory,
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
r := f.NewBuilder(true).
|
r := f.NewBuilder().
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
FilenameParam(false, &options.FilenameOptions).
|
FilenameParam(false, &options.FilenameOptions).
|
||||||
ResourceNames("certificatesigningrequest", options.csrNames...).
|
ResourceNames("certificatesigningrequest", options.csrNames...).
|
||||||
|
|
|
@ -71,7 +71,7 @@ func RunClusterInfo(f cmdutil.Factory, out io.Writer, cmd *cobra.Command) error
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO use generalized labels once they are implemented (#341)
|
// TODO use generalized labels once they are implemented (#341)
|
||||||
b := f.NewBuilder(true).
|
b := f.NewBuilder().
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
SelectorParam("kubernetes.io/cluster-service=true").
|
SelectorParam("kubernetes.io/cluster-service=true").
|
||||||
ResourceTypeOrNameArgs(false, []string{"services"}...).
|
ResourceTypeOrNameArgs(false, []string{"services"}...).
|
||||||
|
|
|
@ -126,14 +126,17 @@ func (o *ConvertOptions) Complete(f cmdutil.Factory, out io.Writer, cmd *cobra.C
|
||||||
}
|
}
|
||||||
|
|
||||||
// build the builder
|
// build the builder
|
||||||
o.builder = f.NewBuilder(!o.local)
|
o.builder = f.NewBuilder()
|
||||||
if !o.local {
|
if !o.local {
|
||||||
schema, err := f.Validator(cmdutil.GetFlagBool(cmd, "validate"), cmdutil.GetFlagBool(cmd, "openapi-validation"), cmdutil.GetFlagString(cmd, "schema-cache-dir"))
|
schema, err := f.Validator(cmdutil.GetFlagBool(cmd, "validate"), cmdutil.GetFlagBool(cmd, "openapi-validation"), cmdutil.GetFlagString(cmd, "schema-cache-dir"))
|
||||||
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()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -125,17 +125,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
|
||||||
}
|
}
|
||||||
|
|
||||||
builder, err := f.NewUnstructuredBuilder(true)
|
r := f.NewBuilder().
|
||||||
if err != nil {
|
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
r := builder.
|
|
||||||
Schema(schema).
|
Schema(schema).
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
|
|
|
@ -170,19 +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 {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
builder, err := f.NewUnstructuredBuilder(true)
|
|
||||||
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 := builder.
|
r := f.NewBuilder().
|
||||||
|
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
||||||
|
|
|
@ -117,7 +117,7 @@ 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.")
|
||||||
}
|
}
|
||||||
|
|
||||||
builder, err := f.NewUnstructuredBuilder(true)
|
mapper, typer, err := f.UnstructuredObject()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -125,8 +125,8 @@ func RunDescribe(f cmdutil.Factory, out, cmdErr io.Writer, cmd *cobra.Command, a
|
||||||
// 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 := builder.
|
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().AllNamespaces(allNamespaces).
|
NamespaceParam(cmdNamespace).DefaultNamespace().AllNamespaces(allNamespaces).
|
||||||
FilenameParam(enforceNamespace, options).
|
FilenameParam(enforceNamespace, options).
|
||||||
|
|
|
@ -20,11 +20,12 @@ import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"k8s.io/apimachinery/pkg/util/json"
|
|
||||||
"math"
|
"math"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"k8s.io/apimachinery/pkg/util/json"
|
||||||
|
|
||||||
"github.com/jonboulle/clockwork"
|
"github.com/jonboulle/clockwork"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
|
||||||
|
@ -217,7 +218,7 @@ func (o *DrainOptions) SetupDrain(cmd *cobra.Command, args []string) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
r := o.Factory.NewBuilder(true).
|
r := o.Factory.NewBuilder().
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
ResourceNames("node", args[0]).
|
ResourceNames("node", args[0]).
|
||||||
Do()
|
Do()
|
||||||
|
|
|
@ -126,7 +126,7 @@ func RunExpose(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []stri
|
||||||
}
|
}
|
||||||
|
|
||||||
mapper, typer := f.Object()
|
mapper, typer := f.Object()
|
||||||
r := f.NewBuilder(true).
|
r := f.NewBuilder().
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
NamespaceParam(namespace).DefaultNamespace().
|
NamespaceParam(namespace).DefaultNamespace().
|
||||||
FilenameParam(enforceNamespace, options).
|
FilenameParam(enforceNamespace, options).
|
||||||
|
|
|
@ -166,14 +166,16 @@ func RunGet(f cmdutil.Factory, out, errOut io.Writer, cmd *cobra.Command, args [
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
selector := cmdutil.GetFlagString(cmd, "selector")
|
mapper, typer, err := f.UnstructuredObject()
|
||||||
allNamespaces := cmdutil.GetFlagBool(cmd, "all-namespaces")
|
|
||||||
showKind := cmdutil.GetFlagBool(cmd, "show-kind")
|
|
||||||
builder, err := f.NewUnstructuredBuilder(true)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
selector := cmdutil.GetFlagString(cmd, "selector")
|
||||||
|
allNamespaces := cmdutil.GetFlagBool(cmd, "all-namespaces")
|
||||||
|
showKind := cmdutil.GetFlagBool(cmd, "show-kind")
|
||||||
|
builder := f.NewBuilder().Unstructured(f.UnstructuredClientForMapping, mapper, typer)
|
||||||
|
|
||||||
cmdNamespace, enforceNamespace, err := f.DefaultNamespace()
|
cmdNamespace, enforceNamespace, err := f.DefaultNamespace()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -212,12 +214,8 @@ func RunGet(f cmdutil.Factory, out, errOut io.Writer, cmd *cobra.Command, args [
|
||||||
includeUninitialized = cmdutil.ShouldIncludeUninitialized(cmd, includeUninitialized)
|
includeUninitialized = cmdutil.ShouldIncludeUninitialized(cmd, includeUninitialized)
|
||||||
|
|
||||||
if isWatch || isWatchOnly {
|
if isWatch || isWatchOnly {
|
||||||
builder, err := f.NewUnstructuredBuilder(true)
|
r := f.NewBuilder().
|
||||||
if err != nil {
|
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
r := builder.
|
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().AllNamespaces(allNamespaces).
|
NamespaceParam(cmdNamespace).DefaultNamespace().AllNamespaces(allNamespaces).
|
||||||
FilenameParam(enforceNamespace, &options.FilenameOptions).
|
FilenameParam(enforceNamespace, &options.FilenameOptions).
|
||||||
SelectorParam(selector).
|
SelectorParam(selector).
|
||||||
|
|
|
@ -181,13 +181,8 @@ func (o *LabelOptions) RunLabel(f cmdutil.Factory, cmd *cobra.Command) error {
|
||||||
|
|
||||||
changeCause := f.Command(cmd, false)
|
changeCause := f.Command(cmd, false)
|
||||||
|
|
||||||
builder, err := f.NewUnstructuredBuilder(!o.local)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, false)
|
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, false)
|
||||||
b := builder.
|
b := f.NewBuilder().
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
||||||
|
@ -195,10 +190,22 @@ func (o *LabelOptions) RunLabel(f cmdutil.Factory, cmd *cobra.Command) error {
|
||||||
Flatten()
|
Flatten()
|
||||||
|
|
||||||
if !o.local {
|
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.SelectorParam(o.selector).
|
b = b.SelectorParam(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.Do().IntoSingleItemImplied(&one)
|
||||||
if err := r.Err(); err != nil {
|
if err := r.Err(); err != nil {
|
||||||
|
|
|
@ -192,7 +192,7 @@ func (o *LogsOptions) Complete(f cmdutil.Factory, out io.Writer, cmd *cobra.Comm
|
||||||
}
|
}
|
||||||
|
|
||||||
if o.Object == nil {
|
if o.Object == nil {
|
||||||
builder := f.NewBuilder(true).
|
builder := f.NewBuilder().
|
||||||
NamespaceParam(o.Namespace).DefaultNamespace().
|
NamespaceParam(o.Namespace).DefaultNamespace().
|
||||||
SingleResourceType()
|
SingleResourceType()
|
||||||
if o.ResourceArg != "" {
|
if o.ResourceArg != "" {
|
||||||
|
|
|
@ -150,14 +150,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)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: fix --local to work with customresources without making use of the discovery client.
|
mapper, typer, err := f.UnstructuredObject()
|
||||||
// https://github.com/kubernetes/kubernetes/issues/46722
|
|
||||||
builder, err := f.NewUnstructuredBuilder(true)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
r := builder.
|
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,17 +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
|
||||||
}
|
}
|
||||||
|
|
||||||
builder, err := f.NewUnstructuredBuilder(true)
|
r := f.NewBuilder().
|
||||||
if err != nil {
|
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
r := builder.
|
|
||||||
Schema(schema).
|
Schema(schema).
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
|
@ -250,12 +246,8 @@ func forceReplace(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []s
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
builder, err := f.NewUnstructuredBuilder(true)
|
r = f.NewBuilder().
|
||||||
if err != nil {
|
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
r = builder.
|
|
||||||
Schema(schema).
|
Schema(schema).
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
|
|
|
@ -199,7 +199,7 @@ func RunRollingUpdate(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
request := f.NewBuilder(true).
|
request := f.NewBuilder().
|
||||||
Schema(schema).
|
Schema(schema).
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
FilenameParam(enforceNamespace, &resource.FilenameOptions{Recursive: false, Filenames: []string{filename}}).
|
FilenameParam(enforceNamespace, &resource.FilenameOptions{Recursive: false, Filenames: []string{filename}}).
|
||||||
|
|
|
@ -79,7 +79,7 @@ func RunHistory(f cmdutil.Factory, cmd *cobra.Command, out io.Writer, args []str
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
r := f.NewBuilder(true).
|
r := f.NewBuilder().
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
FilenameParam(enforceNamespace, options).
|
FilenameParam(enforceNamespace, options).
|
||||||
ResourceTypeOrNameArgs(true, args...).
|
ResourceTypeOrNameArgs(true, args...).
|
||||||
|
|
|
@ -111,7 +111,7 @@ func (o *PauseConfig) CompletePause(f cmdutil.Factory, cmd *cobra.Command, out i
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
r := f.NewBuilder(true).
|
r := f.NewBuilder().
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
||||||
ResourceTypeOrNameArgs(true, args...).
|
ResourceTypeOrNameArgs(true, args...).
|
||||||
|
|
|
@ -109,7 +109,7 @@ func (o *ResumeConfig) CompleteResume(f cmdutil.Factory, cmd *cobra.Command, out
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
r := f.NewBuilder(true).
|
r := f.NewBuilder().
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
||||||
ResourceTypeOrNameArgs(true, args...).
|
ResourceTypeOrNameArgs(true, args...).
|
||||||
|
|
|
@ -82,7 +82,7 @@ func RunStatus(f cmdutil.Factory, cmd *cobra.Command, out io.Writer, args []stri
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
r := f.NewBuilder(true).
|
r := f.NewBuilder().
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
FilenameParam(enforceNamespace, options).
|
FilenameParam(enforceNamespace, options).
|
||||||
ResourceTypeOrNameArgs(true, args...).
|
ResourceTypeOrNameArgs(true, args...).
|
||||||
|
|
|
@ -110,7 +110,7 @@ func (o *UndoOptions) CompleteUndo(f cmdutil.Factory, cmd *cobra.Command, out io
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
r := f.NewBuilder(true).
|
r := f.NewBuilder().
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
||||||
ResourceTypeOrNameArgs(true, args...).
|
ResourceTypeOrNameArgs(true, args...).
|
||||||
|
|
|
@ -352,7 +352,7 @@ func RunRun(f cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer, cmd *c
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
r := f.NewBuilder(true).
|
r := f.NewBuilder().
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
NamespaceParam(namespace).DefaultNamespace().
|
NamespaceParam(namespace).DefaultNamespace().
|
||||||
ResourceNames(obj.Mapping.Resource, name).
|
ResourceNames(obj.Mapping.Resource, name).
|
||||||
|
|
|
@ -99,7 +99,7 @@ func RunScale(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []strin
|
||||||
}
|
}
|
||||||
|
|
||||||
mapper, _ := f.Object()
|
mapper, _ := f.Object()
|
||||||
r := f.NewBuilder(true).
|
r := f.NewBuilder().
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
FilenameParam(enforceNamespace, options).
|
FilenameParam(enforceNamespace, options).
|
||||||
|
|
|
@ -139,12 +139,13 @@ func (o *ImageOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []st
|
||||||
}
|
}
|
||||||
|
|
||||||
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, false)
|
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, false)
|
||||||
builder := f.NewBuilder(!o.Local).
|
builder := f.NewBuilder().
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
||||||
IncludeUninitialized(includeUninitialized).
|
IncludeUninitialized(includeUninitialized).
|
||||||
Flatten()
|
Flatten()
|
||||||
|
|
||||||
if !o.Local {
|
if !o.Local {
|
||||||
builder = builder.
|
builder = builder.
|
||||||
SelectorParam(o.Selector).
|
SelectorParam(o.Selector).
|
||||||
|
@ -157,6 +158,8 @@ func (o *ImageOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []st
|
||||||
if len(o.Resources) > 0 {
|
if len(o.Resources) > 0 {
|
||||||
return resource.LocalResourceError
|
return resource.LocalResourceError
|
||||||
}
|
}
|
||||||
|
|
||||||
|
builder = builder.Local(f.ClientForMapping)
|
||||||
}
|
}
|
||||||
|
|
||||||
o.Infos, err = builder.Do().Infos()
|
o.Infos, err = builder.Do().Infos()
|
||||||
|
|
|
@ -143,7 +143,7 @@ func (o *ResourcesOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args
|
||||||
}
|
}
|
||||||
|
|
||||||
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, false)
|
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, false)
|
||||||
builder := f.NewBuilder(!o.Local).
|
builder := f.NewBuilder().
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
||||||
|
@ -162,6 +162,8 @@ func (o *ResourcesOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args
|
||||||
if len(args) > 0 {
|
if len(args) > 0 {
|
||||||
return resource.LocalResourceError
|
return resource.LocalResourceError
|
||||||
}
|
}
|
||||||
|
|
||||||
|
builder = builder.Local(f.ClientForMapping)
|
||||||
}
|
}
|
||||||
|
|
||||||
o.Infos, err = builder.Do().Infos()
|
o.Infos, err = builder.Do().Infos()
|
||||||
|
|
|
@ -123,7 +123,7 @@ func (o *SelectorOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args [
|
||||||
}
|
}
|
||||||
|
|
||||||
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, false)
|
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, false)
|
||||||
o.builder = f.NewBuilder(!o.local).
|
o.builder = f.NewBuilder().
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
FilenameParam(enforceNamespace, &o.fileOptions).
|
FilenameParam(enforceNamespace, &o.fileOptions).
|
||||||
|
@ -141,6 +141,8 @@ func (o *SelectorOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args [
|
||||||
if len(o.resources) > 0 {
|
if len(o.resources) > 0 {
|
||||||
return resource.LocalResourceError
|
return resource.LocalResourceError
|
||||||
}
|
}
|
||||||
|
|
||||||
|
o.builder = o.builder.Local(f.ClientForMapping)
|
||||||
}
|
}
|
||||||
|
|
||||||
o.PrintObject = func(obj runtime.Object) error {
|
o.PrintObject = func(obj runtime.Object) error {
|
||||||
|
|
|
@ -126,7 +126,7 @@ func (saConfig *serviceAccountConfig) Complete(f cmdutil.Factory, cmd *cobra.Com
|
||||||
saConfig.serviceAccountName = args[len(args)-1]
|
saConfig.serviceAccountName = args[len(args)-1]
|
||||||
resources := args[:len(args)-1]
|
resources := args[:len(args)-1]
|
||||||
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, false)
|
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, false)
|
||||||
builder := f.NewBuilder(!saConfig.local).ContinueOnError().
|
builder := f.NewBuilder().ContinueOnError().
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
FilenameParam(enforceNamespace, &saConfig.fileNameOptions).
|
FilenameParam(enforceNamespace, &saConfig.fileNameOptions).
|
||||||
IncludeUninitialized(includeUninitialized).
|
IncludeUninitialized(includeUninitialized).
|
||||||
|
@ -134,6 +134,8 @@ func (saConfig *serviceAccountConfig) Complete(f cmdutil.Factory, cmd *cobra.Com
|
||||||
if !saConfig.local {
|
if !saConfig.local {
|
||||||
builder.ResourceTypeOrNameArgs(saConfig.all, resources...).
|
builder.ResourceTypeOrNameArgs(saConfig.all, resources...).
|
||||||
Latest()
|
Latest()
|
||||||
|
} else {
|
||||||
|
builder = builder.Local(f.ClientForMapping)
|
||||||
}
|
}
|
||||||
saConfig.infos, err = builder.Do().Infos()
|
saConfig.infos, err = builder.Do().Infos()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -125,7 +125,7 @@ func (o *SubjectOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []
|
||||||
}
|
}
|
||||||
|
|
||||||
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, false)
|
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, false)
|
||||||
builder := f.NewBuilder(!o.Local).
|
builder := f.NewBuilder().
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
NamespaceParam(cmdNamespace).DefaultNamespace().
|
NamespaceParam(cmdNamespace).DefaultNamespace().
|
||||||
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
FilenameParam(enforceNamespace, &o.FilenameOptions).
|
||||||
|
@ -144,6 +144,8 @@ func (o *SubjectOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []
|
||||||
if len(args) > 0 {
|
if len(args) > 0 {
|
||||||
return resource.LocalResourceError
|
return resource.LocalResourceError
|
||||||
}
|
}
|
||||||
|
|
||||||
|
builder = builder.Local(f.ClientForMapping)
|
||||||
}
|
}
|
||||||
|
|
||||||
o.Infos, err = builder.Do().Infos()
|
o.Infos, err = builder.Do().Infos()
|
||||||
|
|
|
@ -148,7 +148,7 @@ func (o *TaintOptions) Complete(f cmdutil.Factory, out io.Writer, cmd *cobra.Com
|
||||||
if o.taintsToAdd, o.taintsToRemove, err = taintutils.ParseTaints(taintArgs); err != nil {
|
if o.taintsToAdd, o.taintsToRemove, err = taintutils.ParseTaints(taintArgs); err != nil {
|
||||||
return cmdutil.UsageErrorf(cmd, err.Error())
|
return cmdutil.UsageErrorf(cmd, err.Error())
|
||||||
}
|
}
|
||||||
o.builder = f.NewBuilder(true).
|
o.builder = f.NewBuilder().
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
NamespaceParam(namespace).DefaultNamespace()
|
NamespaceParam(namespace).DefaultNamespace()
|
||||||
if o.selector != "" {
|
if o.selector != "" {
|
||||||
|
|
|
@ -29,7 +29,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/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"
|
||||||
|
@ -484,21 +483,9 @@ func (f *FakeFactory) PrinterForMapping(cmd *cobra.Command, isLocal bool, output
|
||||||
return f.tf.Printer, f.tf.Err
|
return f.tf.Printer, f.tf.Err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *FakeFactory) NewBuilder(allowRemoteCalls bool) *resource.Builder {
|
func (f *FakeFactory) NewBuilder() *resource.Builder {
|
||||||
return nil
|
mapper, typer := f.Object()
|
||||||
}
|
return resource.NewBuilder(mapper, f.CategoryExpander(), typer, resource.ClientMapperFunc(f.ClientForMapping), f.Decoder(true))
|
||||||
|
|
||||||
func (f *FakeFactory) NewUnstructuredBuilder(allowRemoteCalls bool) (*resource.Builder, error) {
|
|
||||||
if !allowRemoteCalls {
|
|
||||||
return f.NewBuilder(allowRemoteCalls), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
mapper, typer, err := f.UnstructuredObject()
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return resource.NewBuilder(mapper, f.CategoryExpander(), typer, resource.ClientMapperFunc(f.UnstructuredClientForMapping), unstructured.UnstructuredJSONScheme), nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *FakeFactory) DefaultResourceFilterOptions(cmd *cobra.Command, withNamespace bool) *printers.PrintOptions {
|
func (f *FakeFactory) DefaultResourceFilterOptions(cmd *cobra.Command, withNamespace bool) *printers.PrintOptions {
|
||||||
|
@ -769,25 +756,11 @@ func (f *fakeAPIFactory) PrinterForMapping(cmd *cobra.Command, isLocal bool, out
|
||||||
return f.tf.Printer, f.tf.Err
|
return f.tf.Printer, f.tf.Err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *fakeAPIFactory) NewBuilder(allowRemoteCalls bool) *resource.Builder {
|
func (f *fakeAPIFactory) NewBuilder() *resource.Builder {
|
||||||
mapper, typer := f.Object()
|
mapper, typer := f.Object()
|
||||||
|
|
||||||
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(allowRemoteCalls bool) (*resource.Builder, error) {
|
|
||||||
if !allowRemoteCalls {
|
|
||||||
return f.NewBuilder(allowRemoteCalls), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
mapper, typer, err := f.UnstructuredObject()
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return resource.NewBuilder(mapper, f.CategoryExpander(), typer, resource.ClientMapperFunc(f.UnstructuredClientForMapping), unstructured.UnstructuredJSONScheme), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *fakeAPIFactory) SuggestedPodTemplateResources() []schema.GroupResource {
|
func (f *fakeAPIFactory) SuggestedPodTemplateResources() []schema.GroupResource {
|
||||||
return []schema.GroupResource{}
|
return []schema.GroupResource{}
|
||||||
}
|
}
|
||||||
|
|
|
@ -111,10 +111,7 @@ func (o *EditOptions) Complete(f cmdutil.Factory, out, errOut io.Writer, args []
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
b, err := f.NewUnstructuredBuilder(true)
|
b := f.NewBuilder().Unstructured(f.UnstructuredClientForMapping, mapper, typer)
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
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()
|
||||||
|
|
|
@ -256,9 +256,7 @@ type BuilderFactory interface {
|
||||||
// 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 Builder
|
||||||
NewBuilder(allowRemoteCalls bool) *resource.Builder
|
NewBuilder() *resource.Builder
|
||||||
// Resource builder for working with unstructured objects
|
|
||||||
NewUnstructuredBuilder(allowRemoteCalls bool) (*resource.Builder, error)
|
|
||||||
// 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.
|
||||||
|
|
|
@ -140,37 +140,13 @@ func (f *ring2Factory) PrintObject(cmd *cobra.Command, isLocal bool, mapper meta
|
||||||
|
|
||||||
// NewBuilder returns a new resource builder.
|
// NewBuilder returns a new resource builder.
|
||||||
// Receives a bool flag and avoids remote calls if set to false
|
// Receives a bool flag and avoids remote calls if set to false
|
||||||
func (f *ring2Factory) NewBuilder(allowRemoteCalls bool) *resource.Builder {
|
func (f *ring2Factory) NewBuilder() *resource.Builder {
|
||||||
var clientMapper resource.ClientMapper
|
|
||||||
clientMapperFunc := resource.ClientMapperFunc(f.objectMappingFactory.ClientForMapping)
|
clientMapperFunc := resource.ClientMapperFunc(f.objectMappingFactory.ClientForMapping)
|
||||||
|
|
||||||
mapper, typer := f.objectMappingFactory.Object()
|
mapper, typer := f.objectMappingFactory.Object()
|
||||||
categoryExpander := f.objectMappingFactory.CategoryExpander()
|
categoryExpander := f.objectMappingFactory.CategoryExpander()
|
||||||
|
|
||||||
if allowRemoteCalls {
|
return resource.NewBuilder(mapper, categoryExpander, typer, clientMapperFunc, f.clientAccessFactory.Decoder(true))
|
||||||
clientMapper = clientMapperFunc
|
|
||||||
} else {
|
|
||||||
clientMapper = resource.DisabledClientForMapping{ClientMapper: clientMapperFunc}
|
|
||||||
}
|
|
||||||
|
|
||||||
return resource.NewBuilder(mapper, categoryExpander, typer, clientMapper, f.clientAccessFactory.Decoder(true))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *ring2Factory) NewUnstructuredBuilder(allowRemoteCalls bool) (*resource.Builder, error) {
|
|
||||||
if !allowRemoteCalls {
|
|
||||||
return f.NewBuilder(allowRemoteCalls), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
clientMapperFunc := resource.ClientMapperFunc(f.objectMappingFactory.UnstructuredClientForMapping)
|
|
||||||
|
|
||||||
mapper, typer, err := f.objectMappingFactory.UnstructuredObject()
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
categoryExpander := f.objectMappingFactory.CategoryExpander()
|
|
||||||
return resource.NewBuilder(mapper, categoryExpander, typer, clientMapperFunc, unstructured.UnstructuredJSONScheme), nil
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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.
|
||||||
|
|
|
@ -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"
|
||||||
|
@ -67,6 +68,9 @@ type Builder struct {
|
||||||
defaultNamespace bool
|
defaultNamespace bool
|
||||||
requireNamespace bool
|
requireNamespace bool
|
||||||
|
|
||||||
|
isLocal bool
|
||||||
|
isUnstructured bool
|
||||||
|
|
||||||
flatten bool
|
flatten bool
|
||||||
latest bool
|
latest bool
|
||||||
|
|
||||||
|
@ -82,6 +86,8 @@ type Builder struct {
|
||||||
schema validation.Schema
|
schema validation.Schema
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var LocalUnstructuredBuilderError = fmt.Errorf("Unstructured objects cannot be handled with a local builder - Local and Unstructured attributes cannot be used in conjunction")
|
||||||
|
|
||||||
var missingResourceError = fmt.Errorf(`You must provide one or more resources by argument or filename.
|
var missingResourceError = fmt.Errorf(`You must provide one or more resources by argument or filename.
|
||||||
Example resource specifications include:
|
Example resource specifications include:
|
||||||
'-f rsrc.yaml'
|
'-f rsrc.yaml'
|
||||||
|
@ -161,6 +167,35 @@ func (b *Builder) FilenameParam(enforceNamespace bool, filenameOptions *Filename
|
||||||
return b
|
return b
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Local wraps the builder's clientMapper in a DisabledClientMapperForMapping
|
||||||
|
func (b *Builder) Local(mapperFunc ClientMapperFunc) *Builder {
|
||||||
|
if b.isUnstructured {
|
||||||
|
b.errs = append(b.errs, LocalUnstructuredBuilderError)
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
|
||||||
|
b.isLocal = true
|
||||||
|
b.mapper.ClientMapper = DisabledClientForMapping{ClientMapper: ClientMapperFunc(mapperFunc)}
|
||||||
|
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 {
|
||||||
|
if b.isLocal {
|
||||||
|
b.errs = append(b.errs, LocalUnstructuredBuilderError)
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
|
||||||
|
b.isUnstructured = true
|
||||||
|
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