From e8df247597cd042c2051a46f37ec4bd1e78011d5 Mon Sep 17 00:00:00 2001 From: juanvallejo Date: Fri, 29 Jun 2018 10:36:44 -0400 Subject: [PATCH] fix --local panic in set commands --- pkg/kubectl/cmd/set/set_env.go | 3 ++- pkg/kubectl/cmd/set/set_image.go | 3 ++- pkg/kubectl/cmd/set/set_resources.go | 5 +++-- pkg/kubectl/cmd/set/set_serviceaccount.go | 3 ++- pkg/kubectl/cmd/set/set_subject.go | 5 +++-- .../pkg/genericclioptions/resource/visitor.go | 13 +++++++++++++ 6 files changed, 25 insertions(+), 7 deletions(-) diff --git a/pkg/kubectl/cmd/set/set_env.go b/pkg/kubectl/cmd/set/set_env.go index 0cc00cbcfc66..799270edd47a 100644 --- a/pkg/kubectl/cmd/set/set_env.go +++ b/pkg/kubectl/cmd/set/set_env.go @@ -474,7 +474,8 @@ func (o *EnvOptions) RunEnv() error { for _, patch := range patches { info := patch.Info if patch.Err != nil { - allErrs = append(allErrs, fmt.Errorf("error: %s/%s %v", info.Mapping.Resource, info.Name, patch.Err)) + name := info.ObjectName() + allErrs = append(allErrs, fmt.Errorf("error: %s %v\n", name, patch.Err)) continue } diff --git a/pkg/kubectl/cmd/set/set_image.go b/pkg/kubectl/cmd/set/set_image.go index 6e92d5fae4f1..ef422879ba98 100644 --- a/pkg/kubectl/cmd/set/set_image.go +++ b/pkg/kubectl/cmd/set/set_image.go @@ -247,7 +247,8 @@ func (o *SetImageOptions) Run() error { for _, patch := range patches { info := patch.Info if patch.Err != nil { - allErrs = append(allErrs, fmt.Errorf("error: %s/%s %v", info.Mapping.Resource, info.Name, patch.Err)) + name := info.ObjectName() + allErrs = append(allErrs, fmt.Errorf("error: %s %v\n", name, patch.Err)) continue } diff --git a/pkg/kubectl/cmd/set/set_resources.go b/pkg/kubectl/cmd/set/set_resources.go index c7872ba2afd5..106df1974df3 100644 --- a/pkg/kubectl/cmd/set/set_resources.go +++ b/pkg/kubectl/cmd/set/set_resources.go @@ -260,14 +260,15 @@ func (o *SetResourcesOptions) Run() error { for _, patch := range patches { info := patch.Info + name := info.ObjectName() if patch.Err != nil { - allErrs = append(allErrs, fmt.Errorf("error: %s/%s %v", info.Mapping.Resource, info.Name, patch.Err)) + allErrs = append(allErrs, fmt.Errorf("error: %s %v\n", name, patch.Err)) continue } //no changes if string(patch.Patch) == "{}" || len(patch.Patch) == 0 { - allErrs = append(allErrs, fmt.Errorf("info: %s %q was not changed", info.Mapping.Resource, info.Name)) + allErrs = append(allErrs, fmt.Errorf("info: %s was not changed\n", name)) continue } diff --git a/pkg/kubectl/cmd/set/set_serviceaccount.go b/pkg/kubectl/cmd/set/set_serviceaccount.go index e3e56346a8df..d74aaef3481d 100644 --- a/pkg/kubectl/cmd/set/set_serviceaccount.go +++ b/pkg/kubectl/cmd/set/set_serviceaccount.go @@ -191,8 +191,9 @@ func (o *SetServiceAccountOptions) Run() error { patches := CalculatePatches(o.infos, scheme.DefaultJSONEncoder(), patchFn) for _, patch := range patches { info := patch.Info + name := info.ObjectName() if patch.Err != nil { - patchErrs = append(patchErrs, fmt.Errorf("error: %s/%s %v", info.Mapping.Resource, info.Name, patch.Err)) + patchErrs = append(patchErrs, fmt.Errorf("error: %s %v\n", name, patch.Err)) continue } if o.local || o.dryRun { diff --git a/pkg/kubectl/cmd/set/set_subject.go b/pkg/kubectl/cmd/set/set_subject.go index c88414590d09..fd371a26b2b1 100644 --- a/pkg/kubectl/cmd/set/set_subject.go +++ b/pkg/kubectl/cmd/set/set_subject.go @@ -240,14 +240,15 @@ func (o *SubjectOptions) Run(fn updateSubjects) error { allErrs := []error{} for _, patch := range patches { info := patch.Info + name := info.ObjectName() if patch.Err != nil { - allErrs = append(allErrs, fmt.Errorf("error: %s/%s %v", info.Mapping.Resource, info.Name, patch.Err)) + allErrs = append(allErrs, fmt.Errorf("error: %s %v\n", name, patch.Err)) continue } //no changes if string(patch.Patch) == "{}" || len(patch.Patch) == 0 { - allErrs = append(allErrs, fmt.Errorf("info: %s %q was not changed", info.Mapping.Resource, info.Name)) + allErrs = append(allErrs, fmt.Errorf("info: %s was not changed\n", name)) continue } diff --git a/staging/src/k8s.io/cli-runtime/pkg/genericclioptions/resource/visitor.go b/staging/src/k8s.io/cli-runtime/pkg/genericclioptions/resource/visitor.go index 32c1a691a5ad..b4e3b359a1ce 100644 --- a/staging/src/k8s.io/cli-runtime/pkg/genericclioptions/resource/visitor.go +++ b/staging/src/k8s.io/cli-runtime/pkg/genericclioptions/resource/visitor.go @@ -24,6 +24,7 @@ import ( "net/url" "os" "path/filepath" + "strings" "time" "golang.org/x/text/encoding/unicode" @@ -141,6 +142,18 @@ func (i *Info) Refresh(obj runtime.Object, ignoreError bool) error { return nil } +// ObjectName returns an approximate form of the resource's kind/name. +func (i *Info) ObjectName() string { + if i.Mapping != nil { + return fmt.Sprintf("%s/%s", i.Mapping.Resource.Resource, i.Name) + } + gvk := i.Object.GetObjectKind().GroupVersionKind() + if len(gvk.Group) == 0 { + return fmt.Sprintf("%s/%s", strings.ToLower(gvk.Kind), i.Name) + } + return fmt.Sprintf("%s.%s/%s\n", strings.ToLower(gvk.Kind), gvk.Group, i.Name) +} + // String returns the general purpose string representation func (i *Info) String() string { basicInfo := fmt.Sprintf("Name: %q, Namespace: %q\nObject: %+q", i.Name, i.Namespace, i.Object)