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 }