Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Local and Unstructured resource builder attributes and handle <rsrsc> / <name> pairs when --local is set #48763

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
19 changes: 13 additions & 6 deletions pkg/kubectl/cmd/annotate.go
Original file line number Diff line number Diff line change
Expand Up @@ -186,24 +186,31 @@ func (o AnnotateOptions) RunAnnotate(f cmdutil.Factory, cmd *cobra.Command) erro

changeCause := f.Command(cmd, false)

builder, err := f.NewUnstructuredBuilder(!o.local)
if err != nil {
return err
}

includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, false)
b := builder.
b := f.NewBuilder().
ContinueOnError().
NamespaceParam(namespace).DefaultNamespace().
FilenameParam(enforceNamespace, &o.FilenameOptions).
IncludeUninitialized(includeUninitialized).
Flatten()

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).
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 {
return err
Expand Down
11 changes: 3 additions & 8 deletions pkg/kubectl/cmd/apply.go
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ func RunApply(f cmdutil.Factory, cmd *cobra.Command, out, errOut io.Writer, opti
return err
}

mapper, _, err := f.UnstructuredObject()
mapper, typer, err := f.UnstructuredObject()
if err != nil {
return err
}
Expand All @@ -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
// unless explicitly set --include-uninitialized=false
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, options.Prune)

r := builder.
r := f.NewBuilder().
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
Schema(schema).
ContinueOnError().
NamespaceParam(cmdNamespace).DefaultNamespace().
Expand Down
5 changes: 3 additions & 2 deletions pkg/kubectl/cmd/apply_set_last_applied.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
builder, err := f.NewUnstructuredBuilder(true)
mapper, typer, err := f.UnstructuredObject()
if err != nil {
return err
}

r := builder.
r := f.NewBuilder().
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
NamespaceParam(o.Namespace).DefaultNamespace().
FilenameParam(o.EnforceNamespace, &o.FilenameOptions).
Latest().
Expand Down
5 changes: 3 additions & 2 deletions pkg/kubectl/cmd/apply_view_last_applied.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,12 +87,13 @@ func (o *ViewLastAppliedOptions) Complete(f cmdutil.Factory, args []string) erro
return err
}

builder, err := f.NewUnstructuredBuilder(true)
mapper, typer, err := f.UnstructuredObject()
if err != nil {
return err
}

r := builder.
r := f.NewBuilder().
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
NamespaceParam(cmdNamespace).DefaultNamespace().
FilenameParam(enforceNamespace, &o.FilenameOptions).
ResourceTypeOrNameArgs(enforceNamespace, args...).
Expand Down
2 changes: 1 addition & 1 deletion pkg/kubectl/cmd/attach.go
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ func (p *AttachOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, argsIn [
return cmdutil.UsageErrorf(cmd, err.Error())
}

builder := f.NewBuilder(true).
builder := f.NewBuilder().
NamespaceParam(namespace).DefaultNamespace()

switch len(argsIn) {
Expand Down
2 changes: 1 addition & 1 deletion pkg/kubectl/cmd/auth/reconcile.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ func (o *ReconcileOptions) Complete(cmd *cobra.Command, f cmdutil.Factory, args
if err != nil {
return err
}
o.ResourceBuilder = f.NewBuilder(true).
o.ResourceBuilder = f.NewBuilder().
ContinueOnError().
NamespaceParam(namespace).DefaultNamespace().
FilenameParam(enforceNamespace, options).
Expand Down
4 changes: 2 additions & 2 deletions pkg/kubectl/cmd/autoscale.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,7 @@ func RunAutoscale(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []s
return err
}

mapper, typer := f.Object()
r := f.NewBuilder(true).
r := f.NewBuilder().
ContinueOnError().
NamespaceParam(namespace).DefaultNamespace().
FilenameParam(enforceNamespace, options).
Expand Down Expand Up @@ -145,6 +144,7 @@ func RunAutoscale(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []s
return err
}

mapper, typer := f.Object()
resourceMapper := &resource.Mapper{
ObjectTyper: typer,
RESTMapper: mapper,
Expand Down
2 changes: 1 addition & 1 deletion pkg/kubectl/cmd/certificates.go
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ func (options *CertificateOptions) modifyCertificateCondition(f cmdutil.Factory,
if err != nil {
return err
}
r := f.NewBuilder(true).
r := f.NewBuilder().
ContinueOnError().
FilenameParam(false, &options.FilenameOptions).
ResourceNames("certificatesigningrequest", options.csrNames...).
Expand Down
2 changes: 1 addition & 1 deletion pkg/kubectl/cmd/clusterinfo.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
b := f.NewBuilder(true).
b := f.NewBuilder().
NamespaceParam(cmdNamespace).DefaultNamespace().
SelectorParam("kubernetes.io/cluster-service=true").
ResourceTypeOrNameArgs(false, []string{"services"}...).
Expand Down
5 changes: 4 additions & 1 deletion pkg/kubectl/cmd/convert.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,14 +126,17 @@ func (o *ConvertOptions) Complete(f cmdutil.Factory, out io.Writer, cmd *cobra.C
}

// build the builder
o.builder = f.NewBuilder(!o.local)
o.builder = f.NewBuilder()
if !o.local {
schema, err := f.Validator(cmdutil.GetFlagBool(cmd, "validate"), cmdutil.GetFlagBool(cmd, "openapi-validation"), cmdutil.GetFlagString(cmd, "schema-cache-dir"))
if err != nil {
return err
}
o.builder = o.builder.Schema(schema)
} else {
o.builder = o.builder.Local(f.ClientForMapping)
}

cmdNamespace, _, err := f.DefaultNamespace()
if err != nil {
return err
Expand Down
10 changes: 3 additions & 7 deletions pkg/kubectl/cmd/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -125,17 +125,13 @@ func RunCreate(f cmdutil.Factory, cmd *cobra.Command, out, errOut io.Writer, opt
return err
}

mapper, _, err := f.UnstructuredObject()
mapper, typer, err := f.UnstructuredObject()
if err != nil {
return err
}

builder, err := f.NewUnstructuredBuilder(true)
if err != nil {
return err
}

r := builder.
r := f.NewBuilder().
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
Schema(schema).
ContinueOnError().
NamespaceParam(cmdNamespace).DefaultNamespace().
Expand Down
10 changes: 3 additions & 7 deletions pkg/kubectl/cmd/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -170,19 +170,15 @@ func (o *DeleteOptions) Complete(f cmdutil.Factory, out, errOut io.Writer, args
}

// Set up client based support.
mapper, _, err := f.UnstructuredObject()
if err != nil {
return err
}

builder, err := f.NewUnstructuredBuilder(true)
mapper, typer, err := f.UnstructuredObject()
if err != nil {
return err
}

o.Mapper = mapper
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, false)
r := builder.
r := f.NewBuilder().
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
ContinueOnError().
NamespaceParam(cmdNamespace).DefaultNamespace().
FilenameParam(enforceNamespace, &o.FilenameOptions).
Expand Down
6 changes: 3 additions & 3 deletions pkg/kubectl/cmd/describe.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,16 +117,16 @@ func RunDescribe(f cmdutil.Factory, out, cmdErr io.Writer, cmd *cobra.Command, a
return cmdutil.UsageErrorf(cmd, "Required resource not specified.")
}

builder, err := f.NewUnstructuredBuilder(true)
mapper, typer, err := f.UnstructuredObject()
if err != nil {
return err
}

// include the uninitialized objects by default
// unless user explicitly set --include-uninitialized=false
includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, true)

r := builder.
r := f.NewBuilder().
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
ContinueOnError().
NamespaceParam(cmdNamespace).DefaultNamespace().AllNamespaces(allNamespaces).
FilenameParam(enforceNamespace, options).
Expand Down
5 changes: 3 additions & 2 deletions pkg/kubectl/cmd/drain.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,12 @@ import (
"errors"
"fmt"
"io"
"k8s.io/apimachinery/pkg/util/json"
"math"
"strings"
"time"

"k8s.io/apimachinery/pkg/util/json"

"github.com/jonboulle/clockwork"
"github.com/spf13/cobra"

Expand Down Expand Up @@ -217,7 +218,7 @@ func (o *DrainOptions) SetupDrain(cmd *cobra.Command, args []string) error {
return err
}

r := o.Factory.NewBuilder(true).
r := o.Factory.NewBuilder().
NamespaceParam(cmdNamespace).DefaultNamespace().
ResourceNames("node", args[0]).
Do()
Expand Down
2 changes: 1 addition & 1 deletion pkg/kubectl/cmd/expose.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ func RunExpose(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []stri
}

mapper, typer := f.Object()
r := f.NewBuilder(true).
r := f.NewBuilder().
ContinueOnError().
NamespaceParam(namespace).DefaultNamespace().
FilenameParam(enforceNamespace, options).
Expand Down
18 changes: 8 additions & 10 deletions pkg/kubectl/cmd/get.go
Original file line number Diff line number Diff line change
Expand Up @@ -166,14 +166,16 @@ func RunGet(f cmdutil.Factory, out, errOut io.Writer, cmd *cobra.Command, args [
return nil
}

selector := cmdutil.GetFlagString(cmd, "selector")
allNamespaces := cmdutil.GetFlagBool(cmd, "all-namespaces")
showKind := cmdutil.GetFlagBool(cmd, "show-kind")
builder, err := f.NewUnstructuredBuilder(true)
mapper, typer, err := f.UnstructuredObject()
if err != nil {
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()
if err != nil {
return err
Expand Down Expand Up @@ -212,12 +214,8 @@ func RunGet(f cmdutil.Factory, out, errOut io.Writer, cmd *cobra.Command, args [
includeUninitialized = cmdutil.ShouldIncludeUninitialized(cmd, includeUninitialized)

if isWatch || isWatchOnly {
builder, err := f.NewUnstructuredBuilder(true)
if err != nil {
return err
}

r := builder.
r := f.NewBuilder().
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
NamespaceParam(cmdNamespace).DefaultNamespace().AllNamespaces(allNamespaces).
FilenameParam(enforceNamespace, &options.FilenameOptions).
SelectorParam(selector).
Expand Down
19 changes: 13 additions & 6 deletions pkg/kubectl/cmd/label.go
Original file line number Diff line number Diff line change
Expand Up @@ -181,24 +181,31 @@ func (o *LabelOptions) RunLabel(f cmdutil.Factory, cmd *cobra.Command) error {

changeCause := f.Command(cmd, false)

builder, err := f.NewUnstructuredBuilder(!o.local)
if err != nil {
return err
}

includeUninitialized := cmdutil.ShouldIncludeUninitialized(cmd, false)
b := builder.
b := f.NewBuilder().
ContinueOnError().
NamespaceParam(cmdNamespace).DefaultNamespace().
FilenameParam(enforceNamespace, &o.FilenameOptions).
IncludeUninitialized(includeUninitialized).
Flatten()

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).
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
ResourceTypeOrNameArgs(o.all, o.resources...).
Latest()
} else {
b = b.Local(f.ClientForMapping)
}

one := false
r := b.Do().IntoSingleItemImplied(&one)
if err := r.Err(); err != nil {
Expand Down
2 changes: 1 addition & 1 deletion pkg/kubectl/cmd/logs.go
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ func (o *LogsOptions) Complete(f cmdutil.Factory, out io.Writer, cmd *cobra.Comm
}

if o.Object == nil {
builder := f.NewBuilder(true).
builder := f.NewBuilder().
NamespaceParam(o.Namespace).DefaultNamespace().
SingleResourceType()
if o.ResourceArg != "" {
Expand Down
7 changes: 3 additions & 4 deletions pkg/kubectl/cmd/patch.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}

// TODO: fix --local to work with customresources without making use of the discovery client.
// https://github.com/kubernetes/kubernetes/issues/46722
builder, err := f.NewUnstructuredBuilder(true)
mapper, typer, err := f.UnstructuredObject()
if err != nil {
return err
}

r := builder.
r := f.NewBuilder().
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
ContinueOnError().
NamespaceParam(cmdNamespace).DefaultNamespace().
FilenameParam(enforceNamespace, &options.FilenameOptions).
Expand Down