Revert "fail earlier on discovery failures"

pull/6/head
Juan Vallejo 2018-01-31 13:08:54 -05:00 committed by juanvallejo
parent 89cbdc0d6f
commit 4026356b1c
No known key found for this signature in database
GPG Key ID: 7D2C958002D6448D
3 changed files with 13 additions and 9 deletions

View File

@ -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

View File

@ -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",
],
)

View File

@ -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) {