diff --git a/pkg/kubectl/cmd/BUILD b/pkg/kubectl/cmd/BUILD index cd03673de6d..72071bf9ff0 100644 --- a/pkg/kubectl/cmd/BUILD +++ b/pkg/kubectl/cmd/BUILD @@ -108,6 +108,7 @@ go_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/unstructured:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructuredscheme: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/runtime:go_default_library", diff --git a/pkg/kubectl/cmd/label.go b/pkg/kubectl/cmd/label.go index 0d6b439dbd9..4b20f1e6bc8 100644 --- a/pkg/kubectl/cmd/label.go +++ b/pkg/kubectl/cmd/label.go @@ -33,6 +33,7 @@ import ( "k8s.io/apimachinery/pkg/util/json" "k8s.io/apimachinery/pkg/util/validation" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructuredscheme" "k8s.io/kubernetes/pkg/kubectl" "k8s.io/kubernetes/pkg/kubectl/cmd/templates" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" @@ -329,7 +330,11 @@ func (o *LabelOptions) RunLabel() error { indent := "" if !one { indent = " " - fmt.Fprintf(o.ErrOut, "Listing labels for %s.%s/%s:\n", info.Mapping.GroupVersionKind.Kind, info.Mapping.GroupVersionKind.Group, info.Name) + gvks, _, err := unstructuredscheme.NewUnstructuredObjectTyper().ObjectKinds(info.Object) + if err != nil { + return err + } + fmt.Fprintf(o.ErrOut, "Listing labels for %s.%s/%s:\n", gvks[0].Kind, gvks[0].Group, info.Name) } for k, v := range accessor.GetLabels() { fmt.Fprintf(o.Out, "%s%s=%s\n", indent, k, v) diff --git a/pkg/kubectl/cmd/taint.go b/pkg/kubectl/cmd/taint.go index cfba42b1eb3..945519b8b26 100644 --- a/pkg/kubectl/cmd/taint.go +++ b/pkg/kubectl/cmd/taint.go @@ -24,6 +24,7 @@ import ( "github.com/golang/glog" "github.com/spf13/cobra" + "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/meta" "k8s.io/apimachinery/pkg/runtime" @@ -253,9 +254,10 @@ func (o TaintOptions) RunTaint() error { return err } - obj, err := legacyscheme.Scheme.ConvertToVersion(info.Object, info.Mapping.GroupVersionKind.GroupVersion()) + obj, err := legacyscheme.Scheme.ConvertToVersion(info.Object, v1.SchemeGroupVersion) if err != nil { - return err + glog.V(1).Info(err) + return fmt.Errorf("object was not a node.v1.: %T", info.Object) } name, namespace := info.Name, info.Namespace oldData, err := json.Marshal(obj) diff --git a/pkg/kubectl/cmd/util/helpers.go b/pkg/kubectl/cmd/util/helpers.go index cd8d88d5461..edff737ac79 100644 --- a/pkg/kubectl/cmd/util/helpers.go +++ b/pkg/kubectl/cmd/util/helpers.go @@ -21,7 +21,6 @@ import ( "errors" "fmt" "io" - "io/ioutil" "net/url" "os" "strings" @@ -435,19 +434,6 @@ type ValidateOptions struct { EnableValidation bool } -func ReadConfigDataFromReader(reader io.Reader, source string) ([]byte, error) { - data, err := ioutil.ReadAll(reader) - if err != nil { - return nil, err - } - - if len(data) == 0 { - return nil, fmt.Errorf("Read from %s but no data found", source) - } - - return data, nil -} - // Merge requires JSON serialization // TODO: merge assumes JSON serialization, and does not properly abstract API retrieval func Merge(codec runtime.Codec, dst runtime.Object, fragment string) (runtime.Object, error) { @@ -493,26 +479,6 @@ func DumpReaderToFile(reader io.Reader, filename string) error { return nil } -// UpdateObject updates resource object with updateFn -func UpdateObject(info *resource.Info, codec runtime.Codec, updateFn func(runtime.Object) error) (runtime.Object, error) { - helper := resource.NewHelper(info.Client, info.Mapping) - - if err := updateFn(info.Object); err != nil { - return nil, err - } - - // Update the annotation used by kubectl apply - if err := kubectl.UpdateApplyAnnotation(info.Object, codec); err != nil { - return nil, err - } - - if _, err := helper.Replace(info.Namespace, info.Name, true, info.Object); err != nil { - return nil, err - } - - return info.Object, nil -} - func GetDryRunFlag(cmd *cobra.Command) bool { return GetFlagBool(cmd, "dry-run") } diff --git a/pkg/kubectl/resource/visitor.go b/pkg/kubectl/resource/visitor.go index 65e020b2357..bfe8be21d2a 100644 --- a/pkg/kubectl/resource/visitor.go +++ b/pkg/kubectl/resource/visitor.go @@ -73,9 +73,9 @@ type ResourceMapping interface { // Info contains temporary info to execute a REST call, or show the results // of an already completed REST call. type Info struct { + // Client will only be present if this builder was not local Client RESTClient - // Mapping may be nil if the object has no available metadata, but is still parseable - // from disk. + // Mapping will only be present if this builder was not local Mapping *meta.RESTMapping // Namespace will be set if the object is namespaced and has a specified value.