diff --git a/plugin/pkg/admission/gc/BUILD b/plugin/pkg/admission/gc/BUILD index 2d71285ed05..354e386505b 100644 --- a/plugin/pkg/admission/gc/BUILD +++ b/plugin/pkg/admission/gc/BUILD @@ -27,11 +27,10 @@ go_test( srcs = ["gc_admission_test.go"], embed = [":go_default_library"], deps = [ - "//pkg/api/legacyscheme:go_default_library", "//pkg/apis/core:go_default_library", - "//pkg/client/clientset_generated/internalclientset:go_default_library", "//pkg/kubeapiserver/admission:go_default_library", - "//staging/src/k8s.io/apimachinery/pkg/api/meta/testrestmapper:go_default_library", + "//staging/src/k8s.io/api/core/v1:go_default_library", + "//staging/src/k8s.io/api/extensions/v1beta1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", @@ -39,6 +38,9 @@ go_test( "//staging/src/k8s.io/apiserver/pkg/admission/initializer:go_default_library", "//staging/src/k8s.io/apiserver/pkg/authentication/user:go_default_library", "//staging/src/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library", + "//staging/src/k8s.io/client-go/discovery/fake:go_default_library", + "//staging/src/k8s.io/client-go/restmapper:go_default_library", + "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/plugin/pkg/admission/gc/gc_admission_test.go b/plugin/pkg/admission/gc/gc_admission_test.go index 08deb51dea2..034e5179e45 100644 --- a/plugin/pkg/admission/gc/gc_admission_test.go +++ b/plugin/pkg/admission/gc/gc_admission_test.go @@ -17,10 +17,12 @@ limitations under the License. package gc import ( + "fmt" "strings" "testing" - "k8s.io/apimachinery/pkg/api/meta/testrestmapper" + corev1 "k8s.io/api/core/v1" + extensionv1beta1 "k8s.io/api/extensions/v1beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" @@ -28,13 +30,11 @@ import ( "k8s.io/apiserver/pkg/admission/initializer" "k8s.io/apiserver/pkg/authentication/user" "k8s.io/apiserver/pkg/authorization/authorizer" - "k8s.io/kubernetes/pkg/api/legacyscheme" + fakediscovery "k8s.io/client-go/discovery/fake" + "k8s.io/client-go/restmapper" + coretesting "k8s.io/client-go/testing" api "k8s.io/kubernetes/pkg/apis/core" kubeadmission "k8s.io/kubernetes/pkg/kubeapiserver/admission" - - // Manually initialize legacy scheme to make test rest mapper work with built-in resources. - // See issue #70192 for more details - _ "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset" ) type fakeAuthorizer struct{} @@ -101,7 +101,30 @@ func newGCPermissionsEnforcement() (*gcPermissionsEnforcement, error) { } genericPluginInitializer := initializer.New(nil, nil, fakeAuthorizer{}, nil) - pluginInitializer := kubeadmission.NewPluginInitializer(nil, testrestmapper.TestOnlyStaticRESTMapper(legacyscheme.Scheme), nil) + fakeDiscoveryClient := &fakediscovery.FakeDiscovery{Fake: &coretesting.Fake{}} + fakeDiscoveryClient.Resources = []*metav1.APIResourceList{ + { + GroupVersion: corev1.SchemeGroupVersion.String(), + APIResources: []metav1.APIResource{ + {Name: "nodes", Namespaced: false, Kind: "Node"}, + {Name: "pods", Namespaced: true, Kind: "Pod"}, + {Name: "replicationcontrollers", Namespaced: true, Kind: "ReplicationController"}, + }, + }, + { + GroupVersion: extensionv1beta1.SchemeGroupVersion.String(), + APIResources: []metav1.APIResource{ + {Name: "daemonsets", Namespaced: true, Kind: "DaemonSet"}, + }, + }, + } + + restMapperRes, err := restmapper.GetAPIGroupResources(fakeDiscoveryClient) + if err != nil { + return nil, fmt.Errorf("unexpected error while constructing resource list from fake discovery client: %v", err) + } + restMapper := restmapper.NewDiscoveryRESTMapper(restMapperRes) + pluginInitializer := kubeadmission.NewPluginInitializer(nil, restMapper, nil) initializersChain := admission.PluginInitializers{} initializersChain = append(initializersChain, genericPluginInitializer) initializersChain = append(initializersChain, pluginInitializer)