From 4026356b1c3a6875fe26e685e86189a8ed84ea30 Mon Sep 17 00:00:00 2001 From: Juan Vallejo Date: Wed, 31 Jan 2018 13:08:54 -0500 Subject: [PATCH] Revert "fail earlier on discovery failures" --- pkg/kubectl/cmd/util/factory_object_mapping.go | 12 ++++-------- test/integration/etcd/BUILD | 3 +++ test/integration/etcd/etcd_storage_path_test.go | 7 ++++++- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/pkg/kubectl/cmd/util/factory_object_mapping.go b/pkg/kubectl/cmd/util/factory_object_mapping.go index aededbbe54..7eebe0c10f 100644 --- a/pkg/kubectl/cmd/util/factory_object_mapping.go +++ b/pkg/kubectl/cmd/util/factory_object_mapping.go @@ -78,13 +78,11 @@ func NewObjectMappingFactory(clientAccessFactory ClientAccessFactory) ObjectMapp // the built in mapper if necessary. It supports unstructured objects either way, since // the underlying Scheme supports Unstructured. The mapper will return converters that can // convert versioned types to unstructured and back. -// It can return an error and the best effort unstructured mapper and typer. func (f *ring1Factory) objectLoader() (meta.RESTMapper, runtime.ObjectTyper, error) { discoveryClient, err := f.clientAccessFactory.DiscoveryClient() if err != nil { - unstructuredMapper := discovery.NewRESTMapper(nil, meta.InterfacesForUnstructured) - unstructuredTyper := discovery.NewUnstructuredObjectTyper(nil) - return unstructuredMapper, unstructuredTyper, err + glog.V(3).Infof("Unable to get a discovery client to find server resources, falling back to hardcoded types: %v", err) + return legacyscheme.Registry.RESTMapper(), legacyscheme.Scheme, nil } groupResources, err := discovery.GetAPIGroupResources(discoveryClient) @@ -92,11 +90,9 @@ func (f *ring1Factory) objectLoader() (meta.RESTMapper, runtime.ObjectTyper, err discoveryClient.Invalidate() groupResources, err = discovery.GetAPIGroupResources(discoveryClient) } - // even if we can't get all the results, we're better off continuing with what we can than not presenting - // anything. This mirrors old behavior that used to fallback to a hardcoded list of API types compiled - // into kubernetes. if err != nil { - glog.V(1).Infof("Unable to retrieve all API resources, continuing with partial results: %v", err) + glog.V(3).Infof("Unable to retrieve API resources, falling back to hardcoded types: %v", err) + return legacyscheme.Registry.RESTMapper(), legacyscheme.Scheme, nil } // allow conversion between typed and unstructured objects diff --git a/test/integration/etcd/BUILD b/test/integration/etcd/BUILD index 043cf0c537..df1ac5a3e7 100644 --- a/test/integration/etcd/BUILD +++ b/test/integration/etcd/BUILD @@ -22,6 +22,7 @@ go_test( "//cmd/kube-apiserver/app/options:go_default_library", "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/core:go_default_library", + "//pkg/kubectl/cmd/util:go_default_library", "//pkg/master:go_default_library", "//test/integration:go_default_library", "//test/integration/framework:go_default_library", @@ -39,6 +40,8 @@ go_test( "//vendor/k8s.io/apiserver/pkg/storage/storagebackend:go_default_library", "//vendor/k8s.io/client-go/kubernetes:go_default_library", "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/tools/clientcmd:go_default_library", + "//vendor/k8s.io/client-go/tools/clientcmd/api:go_default_library", "//vendor/k8s.io/client-go/util/flowcontrol:go_default_library", ], ) diff --git a/test/integration/etcd/etcd_storage_path_test.go b/test/integration/etcd/etcd_storage_path_test.go index 211cde5963..aa869c2c72 100644 --- a/test/integration/etcd/etcd_storage_path_test.go +++ b/test/integration/etcd/etcd_storage_path_test.go @@ -44,11 +44,14 @@ import ( "k8s.io/apiserver/pkg/storage/storagebackend" clientset "k8s.io/client-go/kubernetes" restclient "k8s.io/client-go/rest" + "k8s.io/client-go/tools/clientcmd" + clientcmdapi "k8s.io/client-go/tools/clientcmd/api" "k8s.io/client-go/util/flowcontrol" "k8s.io/kubernetes/cmd/kube-apiserver/app" "k8s.io/kubernetes/cmd/kube-apiserver/app/options" "k8s.io/kubernetes/pkg/api/legacyscheme" kapi "k8s.io/kubernetes/pkg/apis/core" + "k8s.io/kubernetes/pkg/kubectl/cmd/util" "k8s.io/kubernetes/test/integration" "k8s.io/kubernetes/test/integration/framework" @@ -795,7 +798,9 @@ func startRealMasterOrDie(t *testing.T, certDir string) (*allClient, clientv3.KV t.Fatal(err) } - return client, kvClient, legacyscheme.Registry.RESTMapper() + mapper, _ := util.NewFactory(clientcmd.NewDefaultClientConfig(*clientcmdapi.NewConfig(), &clientcmd.ConfigOverrides{})).Object() + + return client, kvClient, mapper } func dumpEtcdKVOnFailure(t *testing.T, kvClient clientv3.KV) {