From 424dac921f2cc3f295f4842fb7ebe522b36cb7d4 Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Wed, 25 Jan 2017 20:48:18 -0500 Subject: [PATCH] Fall back to unstructured typer retrieving GVKs for printing --- pkg/kubectl/cmd/util/factory_builder.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/pkg/kubectl/cmd/util/factory_builder.go b/pkg/kubectl/cmd/util/factory_builder.go index d6d718fa42f..c11652d13e5 100644 --- a/pkg/kubectl/cmd/util/factory_builder.go +++ b/pkg/kubectl/cmd/util/factory_builder.go @@ -25,7 +25,6 @@ import ( "k8s.io/apimachinery/pkg/api/meta" "k8s.io/apimachinery/pkg/runtime" - "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/kubectl/resource" ) @@ -44,7 +43,20 @@ func NewBuilderFactory(clientAccessFactory ClientAccessFactory, objectMappingFac } func (f *ring2Factory) PrintObject(cmd *cobra.Command, mapper meta.RESTMapper, obj runtime.Object, out io.Writer) error { - gvks, _, err := api.Scheme.ObjectKinds(obj) + // try to get a typed object + _, typer := f.objectMappingFactory.Object() + gvks, _, err := typer.ObjectKinds(obj) + + // fall back to an unstructured object if we get something unregistered + if runtime.IsNotRegisteredError(err) { + _, typer, unstructuredErr := f.objectMappingFactory.UnstructuredObject() + if unstructuredErr != nil { + // if we can't get an unstructured typer, return the original error + return err + } + gvks, _, err = typer.ObjectKinds(obj) + } + if err != nil { return err }