mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	move client based restmappers to client-go
This commit is contained in:
		@@ -78,11 +78,11 @@ go_library(
 | 
			
		||||
        "//vendor/k8s.io/apiserver/pkg/server/storage:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apiserver/pkg/storage/etcd3/preflight:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/discovery:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/discovery/cached:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/informers: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/restmapper:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/tools/cache:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/util/cert:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/kube-aggregator/pkg/apis/apiregistration:go_default_library",
 | 
			
		||||
 
 | 
			
		||||
@@ -54,11 +54,11 @@ import (
 | 
			
		||||
	serverstorage "k8s.io/apiserver/pkg/server/storage"
 | 
			
		||||
	"k8s.io/apiserver/pkg/storage/etcd3/preflight"
 | 
			
		||||
	utilfeature "k8s.io/apiserver/pkg/util/feature"
 | 
			
		||||
	"k8s.io/client-go/discovery"
 | 
			
		||||
	cacheddiscovery "k8s.io/client-go/discovery/cached"
 | 
			
		||||
	clientgoinformers "k8s.io/client-go/informers"
 | 
			
		||||
	clientgoclientset "k8s.io/client-go/kubernetes"
 | 
			
		||||
	"k8s.io/client-go/rest"
 | 
			
		||||
	"k8s.io/client-go/restmapper"
 | 
			
		||||
	certutil "k8s.io/client-go/util/cert"
 | 
			
		||||
	aggregatorapiserver "k8s.io/kube-aggregator/pkg/apiserver"
 | 
			
		||||
	openapi "k8s.io/kube-openapi/pkg/common"
 | 
			
		||||
@@ -575,7 +575,7 @@ func BuildAdmissionPluginInitializers(
 | 
			
		||||
	// We have a functional client so we can use that to build our discovery backed REST mapper
 | 
			
		||||
	// Use a discovery client capable of being refreshed.
 | 
			
		||||
	discoveryClient := cacheddiscovery.NewMemCacheClient(client.Discovery())
 | 
			
		||||
	discoveryRESTMapper := discovery.NewDeferredDiscoveryRESTMapper(discoveryClient)
 | 
			
		||||
	discoveryRESTMapper := restmapper.NewDeferredDiscoveryRESTMapper(discoveryClient)
 | 
			
		||||
 | 
			
		||||
	admissionPostStartHook := func(context genericapiserver.PostStartHookContext) error {
 | 
			
		||||
		discoveryRESTMapper.Reset()
 | 
			
		||||
 
 | 
			
		||||
@@ -115,12 +115,12 @@ go_library(
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/util/uuid:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/discovery:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/discovery/cached:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/dynamic:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/informers: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/restmapper:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/scale:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/tools/leaderelection:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/tools/leaderelection/resourcelock:go_default_library",
 | 
			
		||||
 
 | 
			
		||||
@@ -35,10 +35,10 @@ import (
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/sets"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/uuid"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/wait"
 | 
			
		||||
	"k8s.io/client-go/discovery"
 | 
			
		||||
	cacheddiscovery "k8s.io/client-go/discovery/cached"
 | 
			
		||||
	"k8s.io/client-go/informers"
 | 
			
		||||
	restclient "k8s.io/client-go/rest"
 | 
			
		||||
	"k8s.io/client-go/restmapper"
 | 
			
		||||
	"k8s.io/client-go/tools/leaderelection"
 | 
			
		||||
	"k8s.io/client-go/tools/leaderelection/resourcelock"
 | 
			
		||||
	certutil "k8s.io/client-go/util/cert"
 | 
			
		||||
@@ -228,7 +228,7 @@ type ControllerContext struct {
 | 
			
		||||
	// DeferredDiscoveryRESTMapper is a RESTMapper that will defer
 | 
			
		||||
	// initialization of the RESTMapper until the first mapping is
 | 
			
		||||
	// requested.
 | 
			
		||||
	RESTMapper *discovery.DeferredDiscoveryRESTMapper
 | 
			
		||||
	RESTMapper *restmapper.DeferredDiscoveryRESTMapper
 | 
			
		||||
 | 
			
		||||
	// AvailableResources is a map listing currently available resources
 | 
			
		||||
	AvailableResources map[schema.GroupVersionResource]bool
 | 
			
		||||
@@ -399,7 +399,7 @@ func CreateControllerContext(s *config.CompletedConfig, rootClientBuilder, clien
 | 
			
		||||
	// Use a discovery client capable of being refreshed.
 | 
			
		||||
	discoveryClient := rootClientBuilder.ClientOrDie("controller-discovery")
 | 
			
		||||
	cachedClient := cacheddiscovery.NewMemCacheClient(discoveryClient.Discovery())
 | 
			
		||||
	restMapper := discovery.NewDeferredDiscoveryRESTMapper(cachedClient)
 | 
			
		||||
	restMapper := restmapper.NewDeferredDiscoveryRESTMapper(cachedClient)
 | 
			
		||||
	go wait.Until(func() {
 | 
			
		||||
		restMapper.Reset()
 | 
			
		||||
	}, 30*time.Second, stop)
 | 
			
		||||
 
 | 
			
		||||
@@ -33,6 +33,7 @@ go_library(
 | 
			
		||||
        "//vendor/k8s.io/client-go/kubernetes:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/rest:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/rest/fake:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/restmapper:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/scale:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/tools/clientcmd:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/tools/clientcmd/api:go_default_library",
 | 
			
		||||
 
 | 
			
		||||
@@ -39,6 +39,7 @@ import (
 | 
			
		||||
	"k8s.io/client-go/kubernetes"
 | 
			
		||||
	restclient "k8s.io/client-go/rest"
 | 
			
		||||
	"k8s.io/client-go/rest/fake"
 | 
			
		||||
	"k8s.io/client-go/restmapper"
 | 
			
		||||
	scaleclient "k8s.io/client-go/scale"
 | 
			
		||||
	"k8s.io/client-go/tools/clientcmd"
 | 
			
		||||
	clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
 | 
			
		||||
@@ -429,7 +430,7 @@ func (f *TestFactory) ClientSetForVersion(requiredVersion *schema.GroupVersion)
 | 
			
		||||
 | 
			
		||||
func (f *TestFactory) RESTMapper() (meta.RESTMapper, error) {
 | 
			
		||||
	groupResources := testDynamicResources()
 | 
			
		||||
	mapper := discovery.NewRESTMapper(groupResources)
 | 
			
		||||
	mapper := restmapper.NewDiscoveryRESTMapper(groupResources)
 | 
			
		||||
	// for backwards compatibility with existing tests, allow rest mappings from the scheme to show up
 | 
			
		||||
	// TODO: make this opt-in?
 | 
			
		||||
	mapper = meta.FirstHitRESTMapper{
 | 
			
		||||
@@ -441,7 +442,7 @@ func (f *TestFactory) RESTMapper() (meta.RESTMapper, error) {
 | 
			
		||||
 | 
			
		||||
	// TODO: should probably be the external scheme
 | 
			
		||||
	fakeDs := &fakeCachedDiscoveryClient{}
 | 
			
		||||
	expander := cmdutil.NewShortcutExpander(mapper, fakeDs)
 | 
			
		||||
	expander := restmapper.NewShortcutExpander(mapper, fakeDs)
 | 
			
		||||
	return expander, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -467,8 +468,8 @@ func (f *TestFactory) ScaleClient() (scaleclient.ScalesGetter, error) {
 | 
			
		||||
	return f.ScaleGetter, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func testDynamicResources() []*discovery.APIGroupResources {
 | 
			
		||||
	return []*discovery.APIGroupResources{
 | 
			
		||||
func testDynamicResources() []*restmapper.APIGroupResources {
 | 
			
		||||
	return []*restmapper.APIGroupResources{
 | 
			
		||||
		{
 | 
			
		||||
			Group: metav1.APIGroup{
 | 
			
		||||
				Versions: []metav1.GroupVersionForDiscovery{
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,6 @@ go_library(
 | 
			
		||||
        "factory_object_mapping.go",
 | 
			
		||||
        "helpers.go",
 | 
			
		||||
        "printing.go",
 | 
			
		||||
        "shortcut_restmapper.go",
 | 
			
		||||
    ],
 | 
			
		||||
    importpath = "k8s.io/kubernetes/pkg/kubectl/cmd/util",
 | 
			
		||||
    visibility = ["//build/visible_to:pkg_kubectl_cmd_util_CONSUMERS"],
 | 
			
		||||
@@ -69,6 +68,7 @@ go_library(
 | 
			
		||||
        "//vendor/k8s.io/client-go/dynamic: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/restmapper:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/scale:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/tools/clientcmd:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/util/homedir:go_default_library",
 | 
			
		||||
@@ -83,7 +83,6 @@ go_test(
 | 
			
		||||
        "factory_object_mapping_test.go",
 | 
			
		||||
        "factory_test.go",
 | 
			
		||||
        "helpers_test.go",
 | 
			
		||||
        "shortcut_restmapper_test.go",
 | 
			
		||||
    ],
 | 
			
		||||
    embed = [":go_default_library"],
 | 
			
		||||
    deps = [
 | 
			
		||||
@@ -119,6 +118,7 @@ go_test(
 | 
			
		||||
        "//vendor/k8s.io/client-go/discovery:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/rest:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/rest/fake:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/restmapper:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/testing:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/utils/exec:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
 
 | 
			
		||||
@@ -38,9 +38,9 @@ import (
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/labels"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
			
		||||
	"k8s.io/client-go/discovery"
 | 
			
		||||
	"k8s.io/client-go/dynamic"
 | 
			
		||||
	restclient "k8s.io/client-go/rest"
 | 
			
		||||
	"k8s.io/client-go/restmapper"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/apis/apps"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/apis/batch"
 | 
			
		||||
	api "k8s.io/kubernetes/pkg/apis/core"
 | 
			
		||||
@@ -84,9 +84,9 @@ func (f *ring1Factory) RESTMapper() (meta.RESTMapper, error) {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// allow conversion between typed and unstructured objects
 | 
			
		||||
	mapper := discovery.NewDeferredDiscoveryRESTMapper(discoveryClient)
 | 
			
		||||
	mapper := restmapper.NewDeferredDiscoveryRESTMapper(discoveryClient)
 | 
			
		||||
	// TODO: should this also indicate it recognizes typed objects?
 | 
			
		||||
	expander := NewShortcutExpander(mapper, discoveryClient)
 | 
			
		||||
	expander := restmapper.NewShortcutExpander(mapper, discoveryClient)
 | 
			
		||||
	return expander, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -33,6 +33,7 @@ import (
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/sets"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/watch"
 | 
			
		||||
	manualfake "k8s.io/client-go/rest/fake"
 | 
			
		||||
	"k8s.io/client-go/restmapper"
 | 
			
		||||
	testcore "k8s.io/client-go/testing"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api/legacyscheme"
 | 
			
		||||
	api "k8s.io/kubernetes/pkg/apis/core"
 | 
			
		||||
@@ -470,7 +471,7 @@ func TestDiscoveryReplaceAliases(t *testing.T) {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ds := &fakeDiscoveryClient{}
 | 
			
		||||
	mapper := NewShortcutExpander(testrestmapper.TestOnlyStaticRESTMapper(legacyscheme.Registry, legacyscheme.Scheme), ds)
 | 
			
		||||
	mapper := restmapper.NewShortcutExpander(testrestmapper.TestOnlyStaticRESTMapper(legacyscheme.Registry, legacyscheme.Scheme), ds)
 | 
			
		||||
	b := resource.NewFakeBuilder(fakeClient(), mapper, categories.LegacyCategoryExpander)
 | 
			
		||||
 | 
			
		||||
	for _, test := range tests {
 | 
			
		||||
 
 | 
			
		||||
@@ -141,6 +141,7 @@ filegroup(
 | 
			
		||||
        "//staging/src/k8s.io/client-go/pkg/version:all-srcs",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/plugin/pkg/client/auth:all-srcs",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/rest:all-srcs",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/restmapper:all-srcs",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/scale:all-srcs",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/testing:all-srcs",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/third_party/forked/golang/template:all-srcs",
 | 
			
		||||
 
 | 
			
		||||
@@ -385,7 +385,7 @@ func (r *crdHandler) getOrCreateServingInfoFor(crd *apiextensions.CustomResource
 | 
			
		||||
	kind := schema.GroupVersionKind{Group: crd.Spec.Group, Version: crd.Spec.Version, Kind: crd.Status.AcceptedNames.Kind}
 | 
			
		||||
	typer := UnstructuredObjectTyper{
 | 
			
		||||
		Delegate:          parameterScheme,
 | 
			
		||||
		UnstructuredTyper: discovery.NewUnstructuredObjectTyper(nil),
 | 
			
		||||
		UnstructuredTyper: discovery.NewUnstructuredObjectTyper(),
 | 
			
		||||
	}
 | 
			
		||||
	creator := unstructuredCreator{}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -61,7 +61,7 @@ func newStorage(t *testing.T) (customresource.CustomResourceStorage, *etcdtestin
 | 
			
		||||
 | 
			
		||||
	typer := apiserver.UnstructuredObjectTyper{
 | 
			
		||||
		Delegate:          parameterScheme,
 | 
			
		||||
		UnstructuredTyper: discovery.NewUnstructuredObjectTyper(nil),
 | 
			
		||||
		UnstructuredTyper: discovery.NewUnstructuredObjectTyper(),
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	kind := schema.GroupVersionKind{Group: "mygroup.example.com", Version: "v1beta1", Kind: "Noxu"}
 | 
			
		||||
 
 | 
			
		||||
@@ -31,6 +31,7 @@ go_library(
 | 
			
		||||
        "//vendor/k8s.io/client-go/discovery:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/dynamic:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/rest:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/restmapper:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/scale:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 
 | 
			
		||||
@@ -33,6 +33,7 @@ import (
 | 
			
		||||
	"k8s.io/client-go/discovery"
 | 
			
		||||
	"k8s.io/client-go/dynamic"
 | 
			
		||||
	"k8s.io/client-go/rest"
 | 
			
		||||
	"k8s.io/client-go/restmapper"
 | 
			
		||||
	"k8s.io/client-go/scale"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -310,7 +311,7 @@ func CreateNewScaleClient(crd *apiextensionsv1beta1.CustomResourceDefinition, co
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	resources := []*discovery.APIGroupResources{
 | 
			
		||||
	resources := []*restmapper.APIGroupResources{
 | 
			
		||||
		{
 | 
			
		||||
			Group: metav1.APIGroup{
 | 
			
		||||
				Name: crd.Spec.Group,
 | 
			
		||||
@@ -325,7 +326,7 @@ func CreateNewScaleClient(crd *apiextensionsv1beta1.CustomResourceDefinition, co
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	restMapper := discovery.NewRESTMapper(resources)
 | 
			
		||||
	restMapper := restmapper.NewDiscoveryRESTMapper(resources)
 | 
			
		||||
	resolver := scale.NewDiscoveryScaleKindResolver(discoveryClient)
 | 
			
		||||
 | 
			
		||||
	return scale.NewForConfig(config, restMapper, dynamic.LegacyAPIPathResolverFunc, resolver)
 | 
			
		||||
 
 | 
			
		||||
@@ -11,16 +11,13 @@ go_library(
 | 
			
		||||
    srcs = [
 | 
			
		||||
        "discovery_client.go",
 | 
			
		||||
        "helper.go",
 | 
			
		||||
        "restmapper.go",
 | 
			
		||||
        "unstructured.go",
 | 
			
		||||
    ],
 | 
			
		||||
    importpath = "k8s.io/client-go/discovery",
 | 
			
		||||
    deps = [
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_library",
 | 
			
		||||
        "//vendor/github.com/golang/protobuf/proto:go_default_library",
 | 
			
		||||
        "//vendor/github.com/googleapis/gnostic/OpenAPIv2:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_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/runtime:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
 | 
			
		||||
@@ -34,20 +31,13 @@ go_library(
 | 
			
		||||
 | 
			
		||||
go_test(
 | 
			
		||||
    name = "go_default_xtest",
 | 
			
		||||
    srcs = [
 | 
			
		||||
        "helper_blackbox_test.go",
 | 
			
		||||
        "restmapper_test.go",
 | 
			
		||||
    ],
 | 
			
		||||
    srcs = ["helper_blackbox_test.go"],
 | 
			
		||||
    deps = [
 | 
			
		||||
        "//vendor/github.com/googleapis/gnostic/OpenAPIv2:go_default_library",
 | 
			
		||||
        "//vendor/github.com/stretchr/testify/assert:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/api/core/v1:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/version:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/discovery:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/rest:go_default_library",
 | 
			
		||||
 
 | 
			
		||||
@@ -26,7 +26,6 @@ import (
 | 
			
		||||
// UnstructuredObjectTyper provides a runtime.ObjectTyper implementation for
 | 
			
		||||
// runtime.Unstructured object based on discovery information.
 | 
			
		||||
type UnstructuredObjectTyper struct {
 | 
			
		||||
	registered map[schema.GroupVersionKind]bool
 | 
			
		||||
	typers []runtime.ObjectTyper
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -34,24 +33,11 @@ type UnstructuredObjectTyper struct {
 | 
			
		||||
// unstructured objects based on discovery information. It accepts a list of fallback typers
 | 
			
		||||
// for handling objects that are not runtime.Unstructured. It does not delegate the Recognizes
 | 
			
		||||
// check, only ObjectKinds.
 | 
			
		||||
func NewUnstructuredObjectTyper(groupResources []*APIGroupResources, typers ...runtime.ObjectTyper) *UnstructuredObjectTyper {
 | 
			
		||||
// TODO this only works for the apiextensions server and doesn't recognize any types.  Move to point of use.
 | 
			
		||||
func NewUnstructuredObjectTyper(typers ...runtime.ObjectTyper) *UnstructuredObjectTyper {
 | 
			
		||||
	dot := &UnstructuredObjectTyper{
 | 
			
		||||
		registered: make(map[schema.GroupVersionKind]bool),
 | 
			
		||||
		typers: typers,
 | 
			
		||||
	}
 | 
			
		||||
	for _, group := range groupResources {
 | 
			
		||||
		for _, discoveryVersion := range group.Group.Versions {
 | 
			
		||||
			resources, ok := group.VersionedResources[discoveryVersion.Version]
 | 
			
		||||
			if !ok {
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			gv := schema.GroupVersion{Group: group.Group.Name, Version: discoveryVersion.Version}
 | 
			
		||||
			for _, resource := range resources {
 | 
			
		||||
				dot.registered[gv.WithKind(resource.Kind)] = true
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return dot
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -89,7 +75,7 @@ func (d *UnstructuredObjectTyper) ObjectKinds(obj runtime.Object) (gvks []schema
 | 
			
		||||
// Recognizes returns true if the provided group,version,kind was in the
 | 
			
		||||
// discovery information.
 | 
			
		||||
func (d *UnstructuredObjectTyper) Recognizes(gvk schema.GroupVersionKind) bool {
 | 
			
		||||
	return d.registered[gvk]
 | 
			
		||||
	return false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var _ runtime.ObjectTyper = &UnstructuredObjectTyper{}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										53
									
								
								staging/src/k8s.io/client-go/restmapper/BUILD
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								staging/src/k8s.io/client-go/restmapper/BUILD
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
			
		||||
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
 | 
			
		||||
 | 
			
		||||
go_library(
 | 
			
		||||
    name = "go_default_library",
 | 
			
		||||
    srcs = [
 | 
			
		||||
        "discovery.go",
 | 
			
		||||
        "shortcut.go",
 | 
			
		||||
    ],
 | 
			
		||||
    importpath = "k8s.io/client-go/restmapper",
 | 
			
		||||
    visibility = ["//visibility:public"],
 | 
			
		||||
    deps = [
 | 
			
		||||
        "//vendor/github.com/golang/glog:go_default_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/runtime/schema:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/discovery:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
go_test(
 | 
			
		||||
    name = "go_default_test",
 | 
			
		||||
    srcs = [
 | 
			
		||||
        "discovery_test.go",
 | 
			
		||||
        "shortcut_test.go",
 | 
			
		||||
    ],
 | 
			
		||||
    embed = [":go_default_library"],
 | 
			
		||||
    deps = [
 | 
			
		||||
        "//vendor/github.com/googleapis/gnostic/OpenAPIv2:go_default_library",
 | 
			
		||||
        "//vendor/github.com/stretchr/testify/assert:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_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/runtime/schema:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/version:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/discovery:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/rest:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/rest/fake:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
filegroup(
 | 
			
		||||
    name = "package-srcs",
 | 
			
		||||
    srcs = glob(["**"]),
 | 
			
		||||
    tags = ["automanaged"],
 | 
			
		||||
    visibility = ["//visibility:private"],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
filegroup(
 | 
			
		||||
    name = "all-srcs",
 | 
			
		||||
    srcs = [":package-srcs"],
 | 
			
		||||
    tags = ["automanaged"],
 | 
			
		||||
    visibility = ["//visibility:public"],
 | 
			
		||||
)
 | 
			
		||||
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
 | 
			
		||||
limitations under the License.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
package discovery
 | 
			
		||||
package restmapper
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
@@ -24,6 +24,7 @@ import (
 | 
			
		||||
	"k8s.io/apimachinery/pkg/api/meta"
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime/schema"
 | 
			
		||||
	"k8s.io/client-go/discovery"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
)
 | 
			
		||||
@@ -37,9 +38,9 @@ type APIGroupResources struct {
 | 
			
		||||
	VersionedResources map[string][]metav1.APIResource
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NewRESTMapper returns a PriorityRESTMapper based on the discovered
 | 
			
		||||
// NewDiscoveryRESTMapper returns a PriorityRESTMapper based on the discovered
 | 
			
		||||
// groups and resources passed in.
 | 
			
		||||
func NewRESTMapper(groupResources []*APIGroupResources) meta.RESTMapper {
 | 
			
		||||
func NewDiscoveryRESTMapper(groupResources []*APIGroupResources) meta.RESTMapper {
 | 
			
		||||
	unionMapper := meta.MultiRESTMapper{}
 | 
			
		||||
 | 
			
		||||
	var groupPriority []string
 | 
			
		||||
@@ -141,7 +142,7 @@ func NewRESTMapper(groupResources []*APIGroupResources) meta.RESTMapper {
 | 
			
		||||
 | 
			
		||||
// GetAPIGroupResources uses the provided discovery client to gather
 | 
			
		||||
// discovery information and populate a slice of APIGroupResources.
 | 
			
		||||
func GetAPIGroupResources(cl DiscoveryInterface) ([]*APIGroupResources, error) {
 | 
			
		||||
func GetAPIGroupResources(cl discovery.DiscoveryInterface) ([]*APIGroupResources, error) {
 | 
			
		||||
	apiGroups, err := cl.ServerGroups()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		if apiGroups == nil || len(apiGroups.Groups) == 0 {
 | 
			
		||||
@@ -177,13 +178,13 @@ func GetAPIGroupResources(cl DiscoveryInterface) ([]*APIGroupResources, error) {
 | 
			
		||||
type DeferredDiscoveryRESTMapper struct {
 | 
			
		||||
	initMu   sync.Mutex
 | 
			
		||||
	delegate meta.RESTMapper
 | 
			
		||||
	cl       CachedDiscoveryInterface
 | 
			
		||||
	cl       discovery.CachedDiscoveryInterface
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NewDeferredDiscoveryRESTMapper returns a
 | 
			
		||||
// DeferredDiscoveryRESTMapper that will lazily query the provided
 | 
			
		||||
// client for discovery information to do REST mappings.
 | 
			
		||||
func NewDeferredDiscoveryRESTMapper(cl CachedDiscoveryInterface) *DeferredDiscoveryRESTMapper {
 | 
			
		||||
func NewDeferredDiscoveryRESTMapper(cl discovery.CachedDiscoveryInterface) *DeferredDiscoveryRESTMapper {
 | 
			
		||||
	return &DeferredDiscoveryRESTMapper{
 | 
			
		||||
		cl: cl,
 | 
			
		||||
	}
 | 
			
		||||
@@ -202,7 +203,7 @@ func (d *DeferredDiscoveryRESTMapper) getDelegate() (meta.RESTMapper, error) {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	d.delegate = NewRESTMapper(groupResources)
 | 
			
		||||
	d.delegate = NewDiscoveryRESTMapper(groupResources)
 | 
			
		||||
	return d.delegate, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
 | 
			
		||||
limitations under the License.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
package discovery_test
 | 
			
		||||
package restmapper
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"reflect"
 | 
			
		||||
@@ -94,7 +94,7 @@ func TestRESTMapper(t *testing.T) {
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	restMapper := NewRESTMapper(resources)
 | 
			
		||||
	restMapper := NewDiscoveryRESTMapper(resources)
 | 
			
		||||
 | 
			
		||||
	kindTCs := []struct {
 | 
			
		||||
		input schema.GroupVersionResource
 | 
			
		||||
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
 | 
			
		||||
limitations under the License.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
package util
 | 
			
		||||
package restmapper
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"strings"
 | 
			
		||||
@@ -36,34 +36,42 @@ type shortcutExpander struct {
 | 
			
		||||
 | 
			
		||||
var _ meta.RESTMapper = &shortcutExpander{}
 | 
			
		||||
 | 
			
		||||
func NewShortcutExpander(delegate meta.RESTMapper, client discovery.DiscoveryInterface) shortcutExpander {
 | 
			
		||||
// NewShortcutExpander wraps a restmapper in a layer that expands shortcuts found via discovery
 | 
			
		||||
func NewShortcutExpander(delegate meta.RESTMapper, client discovery.DiscoveryInterface) meta.RESTMapper {
 | 
			
		||||
	return shortcutExpander{RESTMapper: delegate, discoveryClient: client}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// KindFor fulfills meta.RESTMapper
 | 
			
		||||
func (e shortcutExpander) KindFor(resource schema.GroupVersionResource) (schema.GroupVersionKind, error) {
 | 
			
		||||
	return e.RESTMapper.KindFor(e.expandResourceShortcut(resource))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// KindsFor fulfills meta.RESTMapper
 | 
			
		||||
func (e shortcutExpander) KindsFor(resource schema.GroupVersionResource) ([]schema.GroupVersionKind, error) {
 | 
			
		||||
	return e.RESTMapper.KindsFor(e.expandResourceShortcut(resource))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ResourcesFor fulfills meta.RESTMapper
 | 
			
		||||
func (e shortcutExpander) ResourcesFor(resource schema.GroupVersionResource) ([]schema.GroupVersionResource, error) {
 | 
			
		||||
	return e.RESTMapper.ResourcesFor(e.expandResourceShortcut(resource))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ResourceFor fulfills meta.RESTMapper
 | 
			
		||||
func (e shortcutExpander) ResourceFor(resource schema.GroupVersionResource) (schema.GroupVersionResource, error) {
 | 
			
		||||
	return e.RESTMapper.ResourceFor(e.expandResourceShortcut(resource))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ResourceSingularizer fulfills meta.RESTMapper
 | 
			
		||||
func (e shortcutExpander) ResourceSingularizer(resource string) (string, error) {
 | 
			
		||||
	return e.RESTMapper.ResourceSingularizer(e.expandResourceShortcut(schema.GroupVersionResource{Resource: resource}).Resource)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// RESTMapping fulfills meta.RESTMapper
 | 
			
		||||
func (e shortcutExpander) RESTMapping(gk schema.GroupKind, versions ...string) (*meta.RESTMapping, error) {
 | 
			
		||||
	return e.RESTMapper.RESTMapping(gk, versions...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// RESTMappings fulfills meta.RESTMapper
 | 
			
		||||
func (e shortcutExpander) RESTMappings(gk schema.GroupKind, versions ...string) ([]*meta.RESTMapping, error) {
 | 
			
		||||
	return e.RESTMapper.RESTMappings(gk, versions...)
 | 
			
		||||
}
 | 
			
		||||
@@ -14,15 +14,21 @@ See the License for the specific language governing permissions and
 | 
			
		||||
limitations under the License.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
package util
 | 
			
		||||
package restmapper
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"testing"
 | 
			
		||||
 | 
			
		||||
	"k8s.io/apimachinery/pkg/api/meta/testrestmapper"
 | 
			
		||||
	"github.com/googleapis/gnostic/OpenAPIv2"
 | 
			
		||||
 | 
			
		||||
	"k8s.io/apimachinery/pkg/api/errors"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/api/meta"
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime/schema"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api/legacyscheme"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/version"
 | 
			
		||||
	"k8s.io/client-go/discovery"
 | 
			
		||||
	restclient "k8s.io/client-go/rest"
 | 
			
		||||
	"k8s.io/client-go/rest/fake"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func TestReplaceAliases(t *testing.T) {
 | 
			
		||||
@@ -32,12 +38,6 @@ func TestReplaceAliases(t *testing.T) {
 | 
			
		||||
		expected schema.GroupVersionResource
 | 
			
		||||
		srvRes   []*metav1.APIResourceList
 | 
			
		||||
	}{
 | 
			
		||||
		{
 | 
			
		||||
			name:     "rc-resolves-to-replicationcontrollers",
 | 
			
		||||
			arg:      "rc",
 | 
			
		||||
			expected: schema.GroupVersionResource{Resource: "replicationcontrollers"},
 | 
			
		||||
			srvRes:   []*metav1.APIResourceList{},
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			name:     "storageclasses-no-replacement",
 | 
			
		||||
			arg:      "storageclasses",
 | 
			
		||||
@@ -126,13 +126,13 @@ func TestReplaceAliases(t *testing.T) {
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ds := &fakeDiscoveryClient{}
 | 
			
		||||
	mapper := NewShortcutExpander(testrestmapper.TestOnlyStaticRESTMapper(legacyscheme.Registry, legacyscheme.Scheme), ds)
 | 
			
		||||
 | 
			
		||||
	for _, test := range tests {
 | 
			
		||||
		ds := &fakeDiscoveryClient{}
 | 
			
		||||
		ds.serverResourcesHandler = func() ([]*metav1.APIResourceList, error) {
 | 
			
		||||
			return test.srvRes, nil
 | 
			
		||||
		}
 | 
			
		||||
		mapper := NewShortcutExpander(&fakeRESTMapper{}, ds).(shortcutExpander)
 | 
			
		||||
 | 
			
		||||
		actual := mapper.expandResourceShortcut(schema.GroupVersionResource{Resource: test.arg})
 | 
			
		||||
		if actual != test.expected {
 | 
			
		||||
			t.Errorf("%s: unexpected argument: expected %s, got %s", test.name, test.expected, actual)
 | 
			
		||||
@@ -143,12 +143,12 @@ func TestReplaceAliases(t *testing.T) {
 | 
			
		||||
func TestKindFor(t *testing.T) {
 | 
			
		||||
	tests := []struct {
 | 
			
		||||
		in       schema.GroupVersionResource
 | 
			
		||||
		expected schema.GroupVersionKind
 | 
			
		||||
		expected schema.GroupVersionResource
 | 
			
		||||
		srvRes   []*metav1.APIResourceList
 | 
			
		||||
	}{
 | 
			
		||||
		{
 | 
			
		||||
			in:       schema.GroupVersionResource{Group: "storage.k8s.io", Version: "", Resource: "sc"},
 | 
			
		||||
			expected: schema.GroupVersionKind{Group: "storage.k8s.io", Version: "v1", Kind: "StorageClass"},
 | 
			
		||||
			expected: schema.GroupVersionResource{Group: "storage.k8s.io", Version: "", Resource: "storageclasses"},
 | 
			
		||||
			srvRes: []*metav1.APIResourceList{
 | 
			
		||||
				{
 | 
			
		||||
					GroupVersion: "storage.k8s.io/v1",
 | 
			
		||||
@@ -163,7 +163,7 @@ func TestKindFor(t *testing.T) {
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			in:       schema.GroupVersionResource{Group: "", Version: "", Resource: "sc"},
 | 
			
		||||
			expected: schema.GroupVersionKind{Group: "storage.k8s.io", Version: "v1", Kind: "StorageClass"},
 | 
			
		||||
			expected: schema.GroupVersionResource{Group: "storage.k8s.io", Version: "", Resource: "storageclasses"},
 | 
			
		||||
			srvRes: []*metav1.APIResourceList{
 | 
			
		||||
				{
 | 
			
		||||
					GroupVersion: "storage.k8s.io/v1",
 | 
			
		||||
@@ -178,19 +178,112 @@ func TestKindFor(t *testing.T) {
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ds := &fakeDiscoveryClient{}
 | 
			
		||||
	mapper := NewShortcutExpander(testrestmapper.TestOnlyStaticRESTMapper(legacyscheme.Registry, legacyscheme.Scheme), ds)
 | 
			
		||||
 | 
			
		||||
	for i, test := range tests {
 | 
			
		||||
		ds := &fakeDiscoveryClient{}
 | 
			
		||||
		ds.serverResourcesHandler = func() ([]*metav1.APIResourceList, error) {
 | 
			
		||||
			return test.srvRes, nil
 | 
			
		||||
		}
 | 
			
		||||
		ret, err := mapper.KindFor(test.in)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			t.Errorf("%d: unexpected error returned %s", i, err.Error())
 | 
			
		||||
		}
 | 
			
		||||
		if ret != test.expected {
 | 
			
		||||
			t.Errorf("%d: unexpected data returned %#v, expected %#v", i, ret, test.expected)
 | 
			
		||||
 | 
			
		||||
		delegate := &fakeRESTMapper{}
 | 
			
		||||
		mapper := NewShortcutExpander(delegate, ds)
 | 
			
		||||
 | 
			
		||||
		mapper.KindFor(test.in)
 | 
			
		||||
		if delegate.kindForInput != test.expected {
 | 
			
		||||
			t.Errorf("%d: unexpected data returned %#v, expected %#v", i, delegate.kindForInput, test.expected)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type fakeRESTMapper struct {
 | 
			
		||||
	kindForInput schema.GroupVersionResource
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (f *fakeRESTMapper) KindFor(resource schema.GroupVersionResource) (schema.GroupVersionKind, error) {
 | 
			
		||||
	f.kindForInput = resource
 | 
			
		||||
	return schema.GroupVersionKind{}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (f *fakeRESTMapper) KindsFor(resource schema.GroupVersionResource) ([]schema.GroupVersionKind, error) {
 | 
			
		||||
	return nil, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (f *fakeRESTMapper) ResourceFor(input schema.GroupVersionResource) (schema.GroupVersionResource, error) {
 | 
			
		||||
	return schema.GroupVersionResource{}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (f *fakeRESTMapper) ResourcesFor(input schema.GroupVersionResource) ([]schema.GroupVersionResource, error) {
 | 
			
		||||
	return nil, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (f *fakeRESTMapper) RESTMapping(gk schema.GroupKind, versions ...string) (*meta.RESTMapping, error) {
 | 
			
		||||
	return nil, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (f *fakeRESTMapper) RESTMappings(gk schema.GroupKind, versions ...string) ([]*meta.RESTMapping, error) {
 | 
			
		||||
	return nil, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (f *fakeRESTMapper) ResourceSingularizer(resource string) (singular string, err error) {
 | 
			
		||||
	return "", nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type fakeDiscoveryClient struct {
 | 
			
		||||
	serverResourcesHandler func() ([]*metav1.APIResourceList, error)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var _ discovery.DiscoveryInterface = &fakeDiscoveryClient{}
 | 
			
		||||
 | 
			
		||||
func (c *fakeDiscoveryClient) RESTClient() restclient.Interface {
 | 
			
		||||
	return &fake.RESTClient{}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *fakeDiscoveryClient) ServerGroups() (*metav1.APIGroupList, error) {
 | 
			
		||||
	return &metav1.APIGroupList{
 | 
			
		||||
		Groups: []metav1.APIGroup{
 | 
			
		||||
			{
 | 
			
		||||
				Name: "a",
 | 
			
		||||
				Versions: []metav1.GroupVersionForDiscovery{
 | 
			
		||||
					{
 | 
			
		||||
						GroupVersion: "a/v1",
 | 
			
		||||
						Version:      "v1",
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
				PreferredVersion: metav1.GroupVersionForDiscovery{
 | 
			
		||||
					GroupVersion: "a/v1",
 | 
			
		||||
					Version:      "v1",
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
	}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *fakeDiscoveryClient) ServerResourcesForGroupVersion(groupVersion string) (*metav1.APIResourceList, error) {
 | 
			
		||||
	if groupVersion == "a/v1" {
 | 
			
		||||
		return &metav1.APIResourceList{APIResources: []metav1.APIResource{{Name: "widgets", Kind: "Widget"}}}, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return nil, errors.NewNotFound(schema.GroupResource{}, "")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *fakeDiscoveryClient) ServerResources() ([]*metav1.APIResourceList, error) {
 | 
			
		||||
	if c.serverResourcesHandler != nil {
 | 
			
		||||
		return c.serverResourcesHandler()
 | 
			
		||||
	}
 | 
			
		||||
	return []*metav1.APIResourceList{}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *fakeDiscoveryClient) ServerPreferredResources() ([]*metav1.APIResourceList, error) {
 | 
			
		||||
	return nil, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *fakeDiscoveryClient) ServerPreferredNamespacedResources() ([]*metav1.APIResourceList, error) {
 | 
			
		||||
	return nil, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *fakeDiscoveryClient) ServerVersion() (*version.Info, error) {
 | 
			
		||||
	return &version.Info{}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *fakeDiscoveryClient) OpenAPISchema() (*openapi_v2.Document, error) {
 | 
			
		||||
	return &openapi_v2.Document{}, nil
 | 
			
		||||
}
 | 
			
		||||
@@ -48,10 +48,10 @@ go_test(
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/discovery:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/discovery/fake:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/dynamic:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/rest/fake:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/restmapper:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/testing:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 
 | 
			
		||||
@@ -29,7 +29,6 @@ import (
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime/schema"
 | 
			
		||||
	serializer "k8s.io/apimachinery/pkg/runtime/serializer"
 | 
			
		||||
	"k8s.io/client-go/discovery"
 | 
			
		||||
	fakedisco "k8s.io/client-go/discovery/fake"
 | 
			
		||||
	"k8s.io/client-go/dynamic"
 | 
			
		||||
	fakerest "k8s.io/client-go/rest/fake"
 | 
			
		||||
@@ -40,6 +39,7 @@ import (
 | 
			
		||||
	autoscalingv1 "k8s.io/api/autoscaling/v1"
 | 
			
		||||
	corev1 "k8s.io/api/core/v1"
 | 
			
		||||
	extv1beta1 "k8s.io/api/extensions/v1beta1"
 | 
			
		||||
	"k8s.io/client-go/restmapper"
 | 
			
		||||
	coretesting "k8s.io/client-go/testing"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -96,11 +96,11 @@ func fakeScaleClient(t *testing.T) (ScalesGetter, []schema.GroupResource) {
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	restMapperRes, err := discovery.GetAPIGroupResources(fakeDiscoveryClient)
 | 
			
		||||
	restMapperRes, err := restmapper.GetAPIGroupResources(fakeDiscoveryClient)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		t.Fatalf("unexpected error while constructing resource list from fake discovery client: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	restMapper := discovery.NewRESTMapper(restMapperRes)
 | 
			
		||||
	restMapper := restmapper.NewDiscoveryRESTMapper(restMapperRes)
 | 
			
		||||
 | 
			
		||||
	autoscalingScale := &autoscalingv1.Scale{
 | 
			
		||||
		TypeMeta: metav1.TypeMeta{
 | 
			
		||||
 
 | 
			
		||||
@@ -146,6 +146,7 @@ go_library(
 | 
			
		||||
        "//vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/rest:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/restmapper:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/scale:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/tools/clientcmd:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/tools/clientcmd/api:go_default_library",
 | 
			
		||||
 
 | 
			
		||||
@@ -39,6 +39,7 @@ import (
 | 
			
		||||
	"k8s.io/client-go/informers"
 | 
			
		||||
	clientset "k8s.io/client-go/kubernetes"
 | 
			
		||||
	"k8s.io/client-go/rest"
 | 
			
		||||
	"k8s.io/client-go/restmapper"
 | 
			
		||||
	scaleclient "k8s.io/client-go/scale"
 | 
			
		||||
	"k8s.io/client-go/tools/clientcmd"
 | 
			
		||||
	aggregatorclient "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset"
 | 
			
		||||
@@ -182,7 +183,7 @@ func (f *Framework) BeforeEach() {
 | 
			
		||||
		discoClient, err := discovery.NewDiscoveryClientForConfig(config)
 | 
			
		||||
		Expect(err).NotTo(HaveOccurred())
 | 
			
		||||
		cachedDiscoClient := cacheddiscovery.NewMemCacheClient(discoClient)
 | 
			
		||||
		restMapper := discovery.NewDeferredDiscoveryRESTMapper(cachedDiscoClient)
 | 
			
		||||
		restMapper := restmapper.NewDeferredDiscoveryRESTMapper(cachedDiscoClient)
 | 
			
		||||
		restMapper.Reset()
 | 
			
		||||
		resolver := scaleclient.NewDiscoveryScaleKindResolver(cachedDiscoClient)
 | 
			
		||||
		f.ScalesGetter = scaleclient.New(restClient, restMapper, dynamic.LegacyAPIPathResolverFunc, resolver)
 | 
			
		||||
 
 | 
			
		||||
@@ -39,6 +39,7 @@ go_library(
 | 
			
		||||
        "//vendor/k8s.io/client-go/dynamic: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/restmapper:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/scale:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/tools/cache:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/transport:go_default_library",
 | 
			
		||||
 
 | 
			
		||||
@@ -53,6 +53,7 @@ import (
 | 
			
		||||
	. "github.com/onsi/ginkgo"
 | 
			
		||||
	. "github.com/onsi/gomega"
 | 
			
		||||
	"k8s.io/client-go/dynamic"
 | 
			
		||||
	"k8s.io/client-go/restmapper"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api/legacyscheme"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -409,7 +410,7 @@ func createClients(numberOfClients int) ([]clientset.Interface, []internalclient
 | 
			
		||||
			return nil, nil, nil, err
 | 
			
		||||
		}
 | 
			
		||||
		cachedDiscoClient := cacheddiscovery.NewMemCacheClient(discoClient)
 | 
			
		||||
		restMapper := discovery.NewDeferredDiscoveryRESTMapper(cachedDiscoClient)
 | 
			
		||||
		restMapper := restmapper.NewDeferredDiscoveryRESTMapper(cachedDiscoClient)
 | 
			
		||||
		restMapper.Reset()
 | 
			
		||||
		resolver := scaleclient.NewDiscoveryScaleKindResolver(cachedDiscoClient)
 | 
			
		||||
		scalesClients[i] = scaleclient.New(restClient, restMapper, dynamic.LegacyAPIPathResolverFunc, resolver)
 | 
			
		||||
 
 | 
			
		||||
@@ -37,10 +37,10 @@ go_test(
 | 
			
		||||
        "//vendor/k8s.io/apiserver/pkg/server:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apiserver/pkg/server/options:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apiserver/pkg/storage/storagebackend:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/discovery:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/discovery/cached: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/restmapper:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/util/flowcontrol:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 
 | 
			
		||||
@@ -43,7 +43,6 @@ import (
 | 
			
		||||
	genericapiserver "k8s.io/apiserver/pkg/server"
 | 
			
		||||
	genericapiserveroptions "k8s.io/apiserver/pkg/server/options"
 | 
			
		||||
	"k8s.io/apiserver/pkg/storage/storagebackend"
 | 
			
		||||
	"k8s.io/client-go/discovery"
 | 
			
		||||
	cacheddiscovery "k8s.io/client-go/discovery/cached"
 | 
			
		||||
	clientset "k8s.io/client-go/kubernetes"
 | 
			
		||||
	restclient "k8s.io/client-go/rest"
 | 
			
		||||
@@ -59,6 +58,7 @@ import (
 | 
			
		||||
	_ "k8s.io/kubernetes/pkg/master" // TODO what else is needed
 | 
			
		||||
 | 
			
		||||
	"github.com/coreos/etcd/clientv3"
 | 
			
		||||
	"k8s.io/client-go/restmapper"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Etcd data for all persisted objects.
 | 
			
		||||
@@ -802,12 +802,10 @@ func startRealMasterOrDie(t *testing.T, certDir string) (*allClient, clientv3.KV
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	discoveryClient := cacheddiscovery.NewMemCacheClient(kubeClient.Discovery())
 | 
			
		||||
	restMapper := discovery.NewDeferredDiscoveryRESTMapper(discoveryClient)
 | 
			
		||||
	restMapper := restmapper.NewDeferredDiscoveryRESTMapper(discoveryClient)
 | 
			
		||||
	restMapper.Reset()
 | 
			
		||||
	// allow conversion between typed and unstructured objects
 | 
			
		||||
	mapper := discovery.NewDeferredDiscoveryRESTMapper(discoveryClient)
 | 
			
		||||
 | 
			
		||||
	return client, kvClient, mapper
 | 
			
		||||
	return client, kvClient, restMapper
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func dumpEtcdKVOnFailure(t *testing.T, kvClient clientv3.KV) {
 | 
			
		||||
 
 | 
			
		||||
@@ -27,11 +27,11 @@ go_test(
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/discovery:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/discovery/cached:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/dynamic:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/informers:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/kubernetes:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/restmapper:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/client-go/tools/cache:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 
 | 
			
		||||
@@ -36,11 +36,11 @@ import (
 | 
			
		||||
	"k8s.io/apimachinery/pkg/types"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/wait"
 | 
			
		||||
	"k8s.io/apiserver/pkg/storage/names"
 | 
			
		||||
	"k8s.io/client-go/discovery"
 | 
			
		||||
	cacheddiscovery "k8s.io/client-go/discovery/cached"
 | 
			
		||||
	"k8s.io/client-go/dynamic"
 | 
			
		||||
	"k8s.io/client-go/informers"
 | 
			
		||||
	clientset "k8s.io/client-go/kubernetes"
 | 
			
		||||
	"k8s.io/client-go/restmapper"
 | 
			
		||||
	"k8s.io/client-go/tools/cache"
 | 
			
		||||
	kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/controller/garbagecollector"
 | 
			
		||||
@@ -220,7 +220,7 @@ func setupWithServer(t *testing.T, result *kubeapiservertesting.TestServer, work
 | 
			
		||||
	createNamespaceOrDie("aval", clientSet, t)
 | 
			
		||||
 | 
			
		||||
	discoveryClient := cacheddiscovery.NewMemCacheClient(clientSet.Discovery())
 | 
			
		||||
	restMapper := discovery.NewDeferredDiscoveryRESTMapper(discoveryClient)
 | 
			
		||||
	restMapper := restmapper.NewDeferredDiscoveryRESTMapper(discoveryClient)
 | 
			
		||||
	restMapper.Reset()
 | 
			
		||||
	deletableResources := garbagecollector.GetDeletableResources(discoveryClient)
 | 
			
		||||
	config := *result.ClientConfig
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user