From 39a1293cbc80a8c789aecd963d2d32c817bedb00 Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Mon, 9 Aug 2021 11:10:16 -0400 Subject: [PATCH] Drop beta REST APIs removed in 1.22 --- cmd/kube-apiserver/app/aggregator.go | 12 -- pkg/controlplane/instance.go | 28 --- .../storageversionhashdata/data.go | 88 ++++------ .../rest/storage_apiserver.go | 27 --- .../rest/storage_authentication.go | 13 -- .../rest/storage_authorization.go | 19 -- .../certificates/rest/storage_certificates.go | 23 --- .../coordination/rest/storage_coordination.go | 20 --- pkg/registry/extensions/OWNERS | 5 - .../extensions/rest/storage_extensions.go | 66 ------- .../networking/rest/storage_settings.go | 29 ---- pkg/registry/rbac/rest/storage_rbac.go | 16 -- .../scheduling/rest/storage_scheduling.go | 39 ----- pkg/registry/storage/rest/storage_storage.go | 33 ---- .../pkg/apiserver/apiserver.go | 18 -- .../apiservice/rest/storage_apiservice.go | 9 - test/integration/etcd/data.go | 163 ------------------ 17 files changed, 33 insertions(+), 575 deletions(-) delete mode 100644 pkg/registry/extensions/OWNERS delete mode 100644 pkg/registry/extensions/rest/storage_extensions.go diff --git a/cmd/kube-apiserver/app/aggregator.go b/cmd/kube-apiserver/app/aggregator.go index ce90f4080f7..251008b94c5 100644 --- a/cmd/kube-apiserver/app/aggregator.go +++ b/cmd/kube-apiserver/app/aggregator.go @@ -249,9 +249,7 @@ var apiVersionPriorities = map[schema.GroupVersion]priority{ {Group: "events.k8s.io", Version: "v1"}: {group: 17750, version: 15}, {Group: "events.k8s.io", Version: "v1beta1"}: {group: 17750, version: 5}, {Group: "authentication.k8s.io", Version: "v1"}: {group: 17700, version: 15}, - {Group: "authentication.k8s.io", Version: "v1beta1"}: {group: 17700, version: 9}, {Group: "authorization.k8s.io", Version: "v1"}: {group: 17600, version: 15}, - {Group: "authorization.k8s.io", Version: "v1beta1"}: {group: 17600, version: 9}, {Group: "autoscaling", Version: "v1"}: {group: 17500, version: 15}, {Group: "autoscaling", Version: "v2beta1"}: {group: 17500, version: 9}, {Group: "autoscaling", Version: "v2beta2"}: {group: 17500, version: 1}, @@ -259,27 +257,17 @@ var apiVersionPriorities = map[schema.GroupVersion]priority{ {Group: "batch", Version: "v1beta1"}: {group: 17400, version: 9}, {Group: "batch", Version: "v2alpha1"}: {group: 17400, version: 9}, {Group: "certificates.k8s.io", Version: "v1"}: {group: 17300, version: 15}, - {Group: "certificates.k8s.io", Version: "v1beta1"}: {group: 17300, version: 9}, {Group: "networking.k8s.io", Version: "v1"}: {group: 17200, version: 15}, - {Group: "networking.k8s.io", Version: "v1beta1"}: {group: 17200, version: 9}, - {Group: "extensions", Version: "v1beta1"}: {group: 17150, version: 1}, // prioritize below networking.k8s.io, which contains the GA version of Ingress, the only resource remaining in extensions/v1beta1 {Group: "policy", Version: "v1"}: {group: 17100, version: 15}, {Group: "policy", Version: "v1beta1"}: {group: 17100, version: 9}, {Group: "rbac.authorization.k8s.io", Version: "v1"}: {group: 17000, version: 15}, - {Group: "rbac.authorization.k8s.io", Version: "v1beta1"}: {group: 17000, version: 12}, - {Group: "rbac.authorization.k8s.io", Version: "v1alpha1"}: {group: 17000, version: 9}, {Group: "storage.k8s.io", Version: "v1"}: {group: 16800, version: 15}, {Group: "storage.k8s.io", Version: "v1beta1"}: {group: 16800, version: 9}, {Group: "storage.k8s.io", Version: "v1alpha1"}: {group: 16800, version: 1}, {Group: "apiextensions.k8s.io", Version: "v1"}: {group: 16700, version: 15}, - {Group: "apiextensions.k8s.io", Version: "v1beta1"}: {group: 16700, version: 9}, {Group: "admissionregistration.k8s.io", Version: "v1"}: {group: 16700, version: 15}, - {Group: "admissionregistration.k8s.io", Version: "v1beta1"}: {group: 16700, version: 12}, {Group: "scheduling.k8s.io", Version: "v1"}: {group: 16600, version: 15}, - {Group: "scheduling.k8s.io", Version: "v1beta1"}: {group: 16600, version: 12}, - {Group: "scheduling.k8s.io", Version: "v1alpha1"}: {group: 16600, version: 9}, {Group: "coordination.k8s.io", Version: "v1"}: {group: 16500, version: 15}, - {Group: "coordination.k8s.io", Version: "v1beta1"}: {group: 16500, version: 9}, {Group: "node.k8s.io", Version: "v1"}: {group: 16300, version: 15}, {Group: "node.k8s.io", Version: "v1alpha1"}: {group: 16300, version: 1}, {Group: "node.k8s.io", Version: "v1beta1"}: {group: 16300, version: 9}, diff --git a/pkg/controlplane/instance.go b/pkg/controlplane/instance.go index 606ccb921d6..944e7db79fd 100644 --- a/pkg/controlplane/instance.go +++ b/pkg/controlplane/instance.go @@ -26,42 +26,31 @@ import ( "time" admissionregistrationv1 "k8s.io/api/admissionregistration/v1" - admissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1" apiserverinternalv1alpha1 "k8s.io/api/apiserverinternal/v1alpha1" appsv1 "k8s.io/api/apps/v1" authenticationv1 "k8s.io/api/authentication/v1" - authenticationv1beta1 "k8s.io/api/authentication/v1beta1" authorizationapiv1 "k8s.io/api/authorization/v1" - authorizationapiv1beta1 "k8s.io/api/authorization/v1beta1" autoscalingapiv1 "k8s.io/api/autoscaling/v1" autoscalingapiv2beta1 "k8s.io/api/autoscaling/v2beta1" autoscalingapiv2beta2 "k8s.io/api/autoscaling/v2beta2" batchapiv1 "k8s.io/api/batch/v1" batchapiv1beta1 "k8s.io/api/batch/v1beta1" certificatesapiv1 "k8s.io/api/certificates/v1" - certificatesapiv1beta1 "k8s.io/api/certificates/v1beta1" coordinationapiv1 "k8s.io/api/coordination/v1" - coordinationapiv1beta1 "k8s.io/api/coordination/v1beta1" apiv1 "k8s.io/api/core/v1" discoveryv1 "k8s.io/api/discovery/v1" discoveryv1beta1 "k8s.io/api/discovery/v1beta1" eventsv1 "k8s.io/api/events/v1" eventsv1beta1 "k8s.io/api/events/v1beta1" - extensionsapiv1beta1 "k8s.io/api/extensions/v1beta1" flowcontrolv1alpha1 "k8s.io/api/flowcontrol/v1alpha1" networkingapiv1 "k8s.io/api/networking/v1" - networkingapiv1beta1 "k8s.io/api/networking/v1beta1" nodev1 "k8s.io/api/node/v1" nodev1alpha1 "k8s.io/api/node/v1alpha1" nodev1beta1 "k8s.io/api/node/v1beta1" policyapiv1 "k8s.io/api/policy/v1" policyapiv1beta1 "k8s.io/api/policy/v1beta1" rbacv1 "k8s.io/api/rbac/v1" - rbacv1alpha1 "k8s.io/api/rbac/v1alpha1" - rbacv1beta1 "k8s.io/api/rbac/v1beta1" schedulingapiv1 "k8s.io/api/scheduling/v1" - schedulingv1alpha1 "k8s.io/api/scheduling/v1alpha1" - schedulingapiv1beta1 "k8s.io/api/scheduling/v1beta1" storageapiv1 "k8s.io/api/storage/v1" storageapiv1alpha1 "k8s.io/api/storage/v1alpha1" storageapiv1beta1 "k8s.io/api/storage/v1beta1" @@ -108,7 +97,6 @@ import ( corerest "k8s.io/kubernetes/pkg/registry/core/rest" discoveryrest "k8s.io/kubernetes/pkg/registry/discovery/rest" eventsrest "k8s.io/kubernetes/pkg/registry/events/rest" - extensionsrest "k8s.io/kubernetes/pkg/registry/extensions/rest" flowcontrolrest "k8s.io/kubernetes/pkg/registry/flowcontrol/rest" networkingrest "k8s.io/kubernetes/pkg/registry/networking/rest" noderest "k8s.io/kubernetes/pkg/registry/node/rest" @@ -428,7 +416,6 @@ func (c completedConfig) New(delegationTarget genericapiserver.DelegationTarget) certificatesrest.RESTStorageProvider{}, coordinationrest.RESTStorageProvider{}, discoveryrest.StorageProvider{}, - extensionsrest.RESTStorageProvider{}, networkingrest.RESTStorageProvider{}, noderest.RESTStorageProvider{}, policyrest.RESTStorageProvider{}, @@ -643,51 +630,36 @@ func DefaultAPIResourceConfigSource() *serverstorage.ResourceConfig { // NOTE: GroupVersions listed here will be enabled by default. Don't put alpha versions in the list. ret.EnableVersions( admissionregistrationv1.SchemeGroupVersion, - admissionregistrationv1beta1.SchemeGroupVersion, apiv1.SchemeGroupVersion, appsv1.SchemeGroupVersion, authenticationv1.SchemeGroupVersion, - authenticationv1beta1.SchemeGroupVersion, authorizationapiv1.SchemeGroupVersion, - authorizationapiv1beta1.SchemeGroupVersion, autoscalingapiv1.SchemeGroupVersion, autoscalingapiv2beta1.SchemeGroupVersion, autoscalingapiv2beta2.SchemeGroupVersion, batchapiv1.SchemeGroupVersion, batchapiv1beta1.SchemeGroupVersion, certificatesapiv1.SchemeGroupVersion, - certificatesapiv1beta1.SchemeGroupVersion, coordinationapiv1.SchemeGroupVersion, - coordinationapiv1beta1.SchemeGroupVersion, discoveryv1.SchemeGroupVersion, discoveryv1beta1.SchemeGroupVersion, eventsv1.SchemeGroupVersion, eventsv1beta1.SchemeGroupVersion, - extensionsapiv1beta1.SchemeGroupVersion, networkingapiv1.SchemeGroupVersion, - networkingapiv1beta1.SchemeGroupVersion, nodev1.SchemeGroupVersion, nodev1beta1.SchemeGroupVersion, policyapiv1.SchemeGroupVersion, policyapiv1beta1.SchemeGroupVersion, rbacv1.SchemeGroupVersion, - rbacv1beta1.SchemeGroupVersion, storageapiv1.SchemeGroupVersion, storageapiv1beta1.SchemeGroupVersion, - schedulingapiv1beta1.SchemeGroupVersion, schedulingapiv1.SchemeGroupVersion, flowcontrolv1beta1.SchemeGroupVersion, ) - // enable non-deprecated beta resources in extensions/v1beta1 explicitly so we have a full list of what's possible to serve - ret.EnableResources( - extensionsapiv1beta1.SchemeGroupVersion.WithResource("ingresses"), - ) // disable alpha versions explicitly so we have a full list of what's possible to serve ret.DisableVersions( apiserverinternalv1alpha1.SchemeGroupVersion, nodev1alpha1.SchemeGroupVersion, - rbacv1alpha1.SchemeGroupVersion, - schedulingv1alpha1.SchemeGroupVersion, storageapiv1alpha1.SchemeGroupVersion, flowcontrolv1alpha1.SchemeGroupVersion, ) diff --git a/pkg/controlplane/storageversionhashdata/data.go b/pkg/controlplane/storageversionhashdata/data.go index cf817a1ab01..ec37f0728e2 100644 --- a/pkg/controlplane/storageversionhashdata/data.go +++ b/pkg/controlplane/storageversionhashdata/data.go @@ -31,12 +31,6 @@ var NoStorageVersionHash = sets.NewString( "authorization.k8s.io/v1/selfsubjectaccessreviews", "authorization.k8s.io/v1/selfsubjectrulesreviews", "authorization.k8s.io/v1/subjectaccessreviews", - "authentication.k8s.io/v1beta1/tokenreviews", - "authorization.k8s.io/v1beta1/localsubjectaccessreviews", - "authorization.k8s.io/v1beta1/selfsubjectaccessreviews", - "authorization.k8s.io/v1beta1/selfsubjectrulesreviews", - "authorization.k8s.io/v1beta1/subjectaccessreviews", - "extensions/v1beta1/replicationcontrollers", ) // GVRToStorageVersionHash shouldn't change unless we intentionally change the @@ -63,53 +57,37 @@ var GVRToStorageVersionHash = map[string]string{ "batch/v1/jobs": "mudhfqk/qZY=", "batch/v1/cronjobs": "h/JlFAZkyyY=", "batch/v1beta1/cronjobs": "h/JlFAZkyyY=", - "certificates.k8s.io/v1/certificatesigningrequests": "95fRKMXA+00=", - "certificates.k8s.io/v1beta1/certificatesigningrequests": "95fRKMXA+00=", - "coordination.k8s.io/v1beta1/leases": "gqkMMb/YqFM=", - "coordination.k8s.io/v1/leases": "gqkMMb/YqFM=", - "discovery.k8s.io/v1/endpointslices": "Nx3SIv6I0mE=", - "discovery.k8s.io/v1beta1/endpointslices": "Nx3SIv6I0mE=", - "extensions/v1beta1/ingresses": "ZOAfGflaKd0=", - "networking.k8s.io/v1/networkpolicies": "YpfwF18m1G8=", - "networking.k8s.io/v1beta1/ingresses": "ZOAfGflaKd0=", - "networking.k8s.io/v1beta1/ingressclasses": "l/iqIbDgFyQ=", - "networking.k8s.io/v1/ingresses": "ZOAfGflaKd0=", - "networking.k8s.io/v1/ingressclasses": "l/iqIbDgFyQ=", - "node.k8s.io/v1/runtimeclasses": "WQTu1GL3T2Q=", - "node.k8s.io/v1beta1/runtimeclasses": "WQTu1GL3T2Q=", - "policy/v1/poddisruptionbudgets": "6BGBu0kpHtk=", - "policy/v1beta1/poddisruptionbudgets": "6BGBu0kpHtk=", - "policy/v1beta1/podsecuritypolicies": "khBLobUXkqA=", - "rbac.authorization.k8s.io/v1/clusterrolebindings": "48tpQ8gZHFc=", - "rbac.authorization.k8s.io/v1/clusterroles": "bYE5ZWDrJ44=", - "rbac.authorization.k8s.io/v1/rolebindings": "eGsCzGH6b1g=", - "rbac.authorization.k8s.io/v1/roles": "7FuwZcIIItM=", - "rbac.authorization.k8s.io/v1beta1/clusterrolebindings": "48tpQ8gZHFc=", - "rbac.authorization.k8s.io/v1beta1/clusterroles": "bYE5ZWDrJ44=", - "rbac.authorization.k8s.io/v1beta1/rolebindings": "eGsCzGH6b1g=", - "rbac.authorization.k8s.io/v1beta1/roles": "7FuwZcIIItM=", - "scheduling.k8s.io/v1beta1/priorityclasses": "1QwjyaZjj3Y=", - "scheduling.k8s.io/v1/priorityclasses": "1QwjyaZjj3Y=", - "storage.k8s.io/v1/csidrivers": "hL6j/rwBV5w=", - "storage.k8s.io/v1/csinodes": "Pe62DkZtjuo=", - "storage.k8s.io/v1/storageclasses": "K+m6uJwbjGY=", - "storage.k8s.io/v1/volumeattachments": "vQAqD28V4AY=", - "storage.k8s.io/v1beta1/csidrivers": "hL6j/rwBV5w=", - "storage.k8s.io/v1beta1/csinodes": "Pe62DkZtjuo=", - "storage.k8s.io/v1beta1/csistoragecapacities": "xeVl+2Ly1kE=", - "storage.k8s.io/v1beta1/storageclasses": "K+m6uJwbjGY=", - "storage.k8s.io/v1beta1/volumeattachments": "vQAqD28V4AY=", - "apps/v1/controllerrevisions": "85nkx63pcBU=", - "apps/v1/daemonsets": "dd7pWHUlMKQ=", - "apps/v1/deployments": "8aSe+NMegvE=", - "apps/v1/replicasets": "P1RzHs8/mWQ=", - "apps/v1/statefulsets": "H+vl74LkKdo=", - "admissionregistration.k8s.io/v1beta1/mutatingwebhookconfigurations": "Sqi0GUgDaX0=", - "admissionregistration.k8s.io/v1beta1/validatingwebhookconfigurations": "B0wHjQmsGNk=", - "admissionregistration.k8s.io/v1/mutatingwebhookconfigurations": "Sqi0GUgDaX0=", - "admissionregistration.k8s.io/v1/validatingwebhookconfigurations": "B0wHjQmsGNk=", - "events.k8s.io/v1/events": "r2yiGXH7wu8=", - "events.k8s.io/v1beta1/events": "r2yiGXH7wu8=", - "flowcontrol.apiserver.k8s.io/v1beta1/flowschemas": "9bSnTLYweJ0=", - "flowcontrol.apiserver.k8s.io/v1beta1/prioritylevelconfigurations": "BFVwf8eYnsw=", + "certificates.k8s.io/v1/certificatesigningrequests": "95fRKMXA+00=", + "coordination.k8s.io/v1/leases": "gqkMMb/YqFM=", + "discovery.k8s.io/v1/endpointslices": "Nx3SIv6I0mE=", + "discovery.k8s.io/v1beta1/endpointslices": "Nx3SIv6I0mE=", + "networking.k8s.io/v1/networkpolicies": "YpfwF18m1G8=", + "networking.k8s.io/v1/ingresses": "ZOAfGflaKd0=", + "networking.k8s.io/v1/ingressclasses": "l/iqIbDgFyQ=", + "node.k8s.io/v1/runtimeclasses": "WQTu1GL3T2Q=", + "node.k8s.io/v1beta1/runtimeclasses": "WQTu1GL3T2Q=", + "policy/v1/poddisruptionbudgets": "6BGBu0kpHtk=", + "policy/v1beta1/poddisruptionbudgets": "6BGBu0kpHtk=", + "policy/v1beta1/podsecuritypolicies": "khBLobUXkqA=", + "rbac.authorization.k8s.io/v1/clusterrolebindings": "48tpQ8gZHFc=", + "rbac.authorization.k8s.io/v1/clusterroles": "bYE5ZWDrJ44=", + "rbac.authorization.k8s.io/v1/rolebindings": "eGsCzGH6b1g=", + "rbac.authorization.k8s.io/v1/roles": "7FuwZcIIItM=", + "scheduling.k8s.io/v1/priorityclasses": "1QwjyaZjj3Y=", + "storage.k8s.io/v1/csidrivers": "hL6j/rwBV5w=", + "storage.k8s.io/v1/csinodes": "Pe62DkZtjuo=", + "storage.k8s.io/v1/storageclasses": "K+m6uJwbjGY=", + "storage.k8s.io/v1/volumeattachments": "vQAqD28V4AY=", + "storage.k8s.io/v1beta1/csistoragecapacities": "xeVl+2Ly1kE=", + "apps/v1/controllerrevisions": "85nkx63pcBU=", + "apps/v1/daemonsets": "dd7pWHUlMKQ=", + "apps/v1/deployments": "8aSe+NMegvE=", + "apps/v1/replicasets": "P1RzHs8/mWQ=", + "apps/v1/statefulsets": "H+vl74LkKdo=", + "admissionregistration.k8s.io/v1/mutatingwebhookconfigurations": "Sqi0GUgDaX0=", + "admissionregistration.k8s.io/v1/validatingwebhookconfigurations": "B0wHjQmsGNk=", + "events.k8s.io/v1/events": "r2yiGXH7wu8=", + "events.k8s.io/v1beta1/events": "r2yiGXH7wu8=", + "flowcontrol.apiserver.k8s.io/v1beta1/flowschemas": "9bSnTLYweJ0=", + "flowcontrol.apiserver.k8s.io/v1beta1/prioritylevelconfigurations": "BFVwf8eYnsw=", } diff --git a/pkg/registry/admissionregistration/rest/storage_apiserver.go b/pkg/registry/admissionregistration/rest/storage_apiserver.go index 565d72e4933..7b75ecb2817 100644 --- a/pkg/registry/admissionregistration/rest/storage_apiserver.go +++ b/pkg/registry/admissionregistration/rest/storage_apiserver.go @@ -18,7 +18,6 @@ package rest import ( admissionregistrationv1 "k8s.io/api/admissionregistration/v1" - admissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1" "k8s.io/apiserver/pkg/registry/generic" "k8s.io/apiserver/pkg/registry/rest" genericapiserver "k8s.io/apiserver/pkg/server" @@ -36,13 +35,6 @@ func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource serverstorag // If you add a version here, be sure to add an entry in `k8s.io/kubernetes/cmd/kube-apiserver/app/aggregator.go with specific priorities. // TODO refactor the plumbing to provide the information in the APIGroupInfo - if apiResourceConfigSource.VersionEnabled(admissionregistrationv1beta1.SchemeGroupVersion) { - if storageMap, err := p.v1beta1Storage(apiResourceConfigSource, restOptionsGetter); err != nil { - return genericapiserver.APIGroupInfo{}, false, err - } else { - apiGroupInfo.VersionedResourcesStorageMap[admissionregistrationv1beta1.SchemeGroupVersion.Version] = storageMap - } - } if apiResourceConfigSource.VersionEnabled(admissionregistrationv1.SchemeGroupVersion) { if storageMap, err := p.v1Storage(apiResourceConfigSource, restOptionsGetter); err != nil { return genericapiserver.APIGroupInfo{}, false, err @@ -53,25 +45,6 @@ func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource serverstorag return apiGroupInfo, true, nil } -func (p RESTStorageProvider) v1beta1Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (map[string]rest.Storage, error) { - storage := map[string]rest.Storage{} - // validatingwebhookconfigurations - validatingStorage, err := validatingwebhookconfigurationstorage.NewREST(restOptionsGetter) - if err != nil { - return storage, err - } - storage["validatingwebhookconfigurations"] = validatingStorage - - // mutatingwebhookconfigurations - mutatingStorage, err := mutatingwebhookconfigurationstorage.NewREST(restOptionsGetter) - if err != nil { - return storage, err - } - storage["mutatingwebhookconfigurations"] = mutatingStorage - - return storage, err -} - func (p RESTStorageProvider) v1Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (map[string]rest.Storage, error) { storage := map[string]rest.Storage{} // validatingwebhookconfigurations diff --git a/pkg/registry/authentication/rest/storage_authentication.go b/pkg/registry/authentication/rest/storage_authentication.go index c99f9b3e8de..f79a5f218e3 100644 --- a/pkg/registry/authentication/rest/storage_authentication.go +++ b/pkg/registry/authentication/rest/storage_authentication.go @@ -18,7 +18,6 @@ package rest import ( authenticationv1 "k8s.io/api/authentication/v1" - authenticationv1beta1 "k8s.io/api/authentication/v1beta1" "k8s.io/apiserver/pkg/authentication/authenticator" "k8s.io/apiserver/pkg/registry/generic" "k8s.io/apiserver/pkg/registry/rest" @@ -44,9 +43,6 @@ func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource serverstorag // If you add a version here, be sure to add an entry in `k8s.io/kubernetes/cmd/kube-apiserver/app/aggregator.go with specific priorities. // TODO refactor the plumbing to provide the information in the APIGroupInfo - if apiResourceConfigSource.VersionEnabled(authenticationv1beta1.SchemeGroupVersion) { - apiGroupInfo.VersionedResourcesStorageMap[authenticationv1beta1.SchemeGroupVersion.Version] = p.v1beta1Storage(apiResourceConfigSource, restOptionsGetter) - } if apiResourceConfigSource.VersionEnabled(authenticationv1.SchemeGroupVersion) { apiGroupInfo.VersionedResourcesStorageMap[authenticationv1.SchemeGroupVersion.Version] = p.v1Storage(apiResourceConfigSource, restOptionsGetter) } @@ -54,15 +50,6 @@ func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource serverstorag return apiGroupInfo, true, nil } -func (p RESTStorageProvider) v1beta1Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) map[string]rest.Storage { - storage := map[string]rest.Storage{} - // tokenreviews - tokenReviewStorage := tokenreview.NewREST(p.Authenticator, p.APIAudiences) - storage["tokenreviews"] = tokenReviewStorage - - return storage -} - func (p RESTStorageProvider) v1Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) map[string]rest.Storage { storage := map[string]rest.Storage{} // tokenreviews diff --git a/pkg/registry/authorization/rest/storage_authorization.go b/pkg/registry/authorization/rest/storage_authorization.go index 00d8f5c96f6..c424deaf9ef 100644 --- a/pkg/registry/authorization/rest/storage_authorization.go +++ b/pkg/registry/authorization/rest/storage_authorization.go @@ -18,7 +18,6 @@ package rest import ( authorizationv1 "k8s.io/api/authorization/v1" - authorizationv1beta1 "k8s.io/api/authorization/v1beta1" "k8s.io/apiserver/pkg/authorization/authorizer" "k8s.io/apiserver/pkg/registry/generic" "k8s.io/apiserver/pkg/registry/rest" @@ -46,10 +45,6 @@ func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource serverstorag // If you add a version here, be sure to add an entry in `k8s.io/kubernetes/cmd/kube-apiserver/app/aggregator.go with specific priorities. // TODO refactor the plumbing to provide the information in the APIGroupInfo - if apiResourceConfigSource.VersionEnabled(authorizationv1beta1.SchemeGroupVersion) { - apiGroupInfo.VersionedResourcesStorageMap[authorizationv1beta1.SchemeGroupVersion.Version] = p.v1beta1Storage(apiResourceConfigSource, restOptionsGetter) - } - if apiResourceConfigSource.VersionEnabled(authorizationv1.SchemeGroupVersion) { apiGroupInfo.VersionedResourcesStorageMap[authorizationv1.SchemeGroupVersion.Version] = p.v1Storage(apiResourceConfigSource, restOptionsGetter) } @@ -57,20 +52,6 @@ func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource serverstorag return apiGroupInfo, true, nil } -func (p RESTStorageProvider) v1beta1Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) map[string]rest.Storage { - storage := map[string]rest.Storage{} - // subjectaccessreviews - storage["subjectaccessreviews"] = subjectaccessreview.NewREST(p.Authorizer) - // selfsubjectaccessreviews - storage["selfsubjectaccessreviews"] = selfsubjectaccessreview.NewREST(p.Authorizer) - // localsubjectaccessreviews - storage["localsubjectaccessreviews"] = localsubjectaccessreview.NewREST(p.Authorizer) - // selfsubjectrulesreviews - storage["selfsubjectrulesreviews"] = selfsubjectrulesreview.NewREST(p.RuleResolver) - - return storage -} - func (p RESTStorageProvider) v1Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) map[string]rest.Storage { storage := map[string]rest.Storage{} // subjectaccessreviews diff --git a/pkg/registry/certificates/rest/storage_certificates.go b/pkg/registry/certificates/rest/storage_certificates.go index 51d4df034f8..18be6d6ea26 100644 --- a/pkg/registry/certificates/rest/storage_certificates.go +++ b/pkg/registry/certificates/rest/storage_certificates.go @@ -18,7 +18,6 @@ package rest import ( certificatesapiv1 "k8s.io/api/certificates/v1" - certificatesapiv1beta1 "k8s.io/api/certificates/v1beta1" "k8s.io/apiserver/pkg/registry/generic" "k8s.io/apiserver/pkg/registry/rest" genericapiserver "k8s.io/apiserver/pkg/server" @@ -35,14 +34,6 @@ func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource serverstorag // If you add a version here, be sure to add an entry in `k8s.io/kubernetes/cmd/kube-apiserver/app/aggregator.go with specific priorities. // TODO refactor the plumbing to provide the information in the APIGroupInfo - if apiResourceConfigSource.VersionEnabled(certificatesapiv1beta1.SchemeGroupVersion) { - storageMap, err := p.v1beta1Storage(apiResourceConfigSource, restOptionsGetter) - if err != nil { - return genericapiserver.APIGroupInfo{}, false, err - } - apiGroupInfo.VersionedResourcesStorageMap[certificatesapiv1beta1.SchemeGroupVersion.Version] = storageMap - } - if apiResourceConfigSource.VersionEnabled(certificatesapiv1.SchemeGroupVersion) { storageMap, err := p.v1Storage(apiResourceConfigSource, restOptionsGetter) if err != nil { @@ -54,20 +45,6 @@ func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource serverstorag return apiGroupInfo, true, nil } -func (p RESTStorageProvider) v1beta1Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (map[string]rest.Storage, error) { - storage := map[string]rest.Storage{} - // certificatesigningrequests - csrStorage, csrStatusStorage, csrApprovalStorage, err := certificatestore.NewREST(restOptionsGetter) - if err != nil { - return storage, err - } - storage["certificatesigningrequests"] = csrStorage - storage["certificatesigningrequests/status"] = csrStatusStorage - storage["certificatesigningrequests/approval"] = csrApprovalStorage - - return storage, err -} - func (p RESTStorageProvider) v1Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (map[string]rest.Storage, error) { storage := map[string]rest.Storage{} // certificatesigningrequests diff --git a/pkg/registry/coordination/rest/storage_coordination.go b/pkg/registry/coordination/rest/storage_coordination.go index d89e35c5d29..693168b5ba7 100644 --- a/pkg/registry/coordination/rest/storage_coordination.go +++ b/pkg/registry/coordination/rest/storage_coordination.go @@ -18,7 +18,6 @@ package rest import ( coordinationv1 "k8s.io/api/coordination/v1" - coordinationv1beta1 "k8s.io/api/coordination/v1beta1" "k8s.io/apiserver/pkg/registry/generic" "k8s.io/apiserver/pkg/registry/rest" genericapiserver "k8s.io/apiserver/pkg/server" @@ -35,13 +34,6 @@ func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource serverstorag // If you add a version here, be sure to add an entry in `k8s.io/kubernetes/cmd/kube-apiserver/app/aggregator.go with specific priorities. // TODO refactor the plumbing to provide the information in the APIGroupInfo - if apiResourceConfigSource.VersionEnabled(coordinationv1beta1.SchemeGroupVersion) { - if storageMap, err := p.v1beta1Storage(apiResourceConfigSource, restOptionsGetter); err != nil { - return genericapiserver.APIGroupInfo{}, false, err - } else { - apiGroupInfo.VersionedResourcesStorageMap[coordinationv1beta1.SchemeGroupVersion.Version] = storageMap - } - } if apiResourceConfigSource.VersionEnabled(coordinationv1.SchemeGroupVersion) { if storageMap, err := p.v1Storage(apiResourceConfigSource, restOptionsGetter); err != nil { return genericapiserver.APIGroupInfo{}, false, err @@ -52,18 +44,6 @@ func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource serverstorag return apiGroupInfo, true, nil } -func (p RESTStorageProvider) v1beta1Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (map[string]rest.Storage, error) { - storage := map[string]rest.Storage{} - // leases - leaseStorage, err := leasestorage.NewREST(restOptionsGetter) - if err != nil { - return storage, err - } - storage["leases"] = leaseStorage - - return storage, err -} - func (p RESTStorageProvider) v1Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (map[string]rest.Storage, error) { storage := map[string]rest.Storage{} // leases diff --git a/pkg/registry/extensions/OWNERS b/pkg/registry/extensions/OWNERS deleted file mode 100644 index 8af01ebfbdd..00000000000 --- a/pkg/registry/extensions/OWNERS +++ /dev/null @@ -1,5 +0,0 @@ -# See the OWNERS docs at https://go.k8s.io/owners - -reviewers: -- deads2k -- hongchaodeng diff --git a/pkg/registry/extensions/rest/storage_extensions.go b/pkg/registry/extensions/rest/storage_extensions.go deleted file mode 100644 index 9843fb6bb68..00000000000 --- a/pkg/registry/extensions/rest/storage_extensions.go +++ /dev/null @@ -1,66 +0,0 @@ -/* -Copyright 2016 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package rest - -import ( - extensionsapiv1beta1 "k8s.io/api/extensions/v1beta1" - "k8s.io/apiserver/pkg/registry/generic" - "k8s.io/apiserver/pkg/registry/rest" - genericapiserver "k8s.io/apiserver/pkg/server" - serverstorage "k8s.io/apiserver/pkg/server/storage" - "k8s.io/kubernetes/pkg/api/legacyscheme" - "k8s.io/kubernetes/pkg/apis/extensions" - ingressstore "k8s.io/kubernetes/pkg/registry/networking/ingress/storage" -) - -type RESTStorageProvider struct{} - -func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (genericapiserver.APIGroupInfo, bool, error) { - apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(extensions.GroupName, legacyscheme.Scheme, legacyscheme.ParameterCodec, legacyscheme.Codecs) - // If you add a version here, be sure to add an entry in `k8s.io/kubernetes/cmd/kube-apiserver/app/aggregator.go with specific priorities. - // TODO refactor the plumbing to provide the information in the APIGroupInfo - - if apiResourceConfigSource.VersionEnabled(extensionsapiv1beta1.SchemeGroupVersion) { - if storageMap, err := p.v1beta1Storage(apiResourceConfigSource, restOptionsGetter); err != nil { - return genericapiserver.APIGroupInfo{}, false, err - } else { - apiGroupInfo.VersionedResourcesStorageMap[extensionsapiv1beta1.SchemeGroupVersion.Version] = storageMap - } - } - - return apiGroupInfo, true, nil -} - -func (p RESTStorageProvider) v1beta1Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (map[string]rest.Storage, error) { - storage := map[string]rest.Storage{} - - // ingresses - if apiResourceConfigSource.ResourceEnabled(extensionsapiv1beta1.SchemeGroupVersion.WithResource("ingresses")) { - ingressStorage, ingressStatusStorage, err := ingressstore.NewREST(restOptionsGetter) - if err != nil { - return storage, err - } - storage["ingresses"] = ingressStorage - storage["ingresses/status"] = ingressStatusStorage - } - - return storage, nil -} - -func (p RESTStorageProvider) GroupName() string { - return extensions.GroupName -} diff --git a/pkg/registry/networking/rest/storage_settings.go b/pkg/registry/networking/rest/storage_settings.go index 3d9687d5398..2ff3d0a0bf1 100644 --- a/pkg/registry/networking/rest/storage_settings.go +++ b/pkg/registry/networking/rest/storage_settings.go @@ -18,7 +18,6 @@ package rest import ( networkingapiv1 "k8s.io/api/networking/v1" - networkingapiv1beta1 "k8s.io/api/networking/v1beta1" "k8s.io/apiserver/pkg/registry/generic" "k8s.io/apiserver/pkg/registry/rest" genericapiserver "k8s.io/apiserver/pkg/server" @@ -45,14 +44,6 @@ func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource serverstorag } } - if apiResourceConfigSource.VersionEnabled(networkingapiv1beta1.SchemeGroupVersion) { - if storageMap, err := p.v1beta1Storage(apiResourceConfigSource, restOptionsGetter); err != nil { - return genericapiserver.APIGroupInfo{}, false, err - } else { - apiGroupInfo.VersionedResourcesStorageMap[networkingapiv1beta1.SchemeGroupVersion.Version] = storageMap - } - } - return apiGroupInfo, true, nil } @@ -83,26 +74,6 @@ func (p RESTStorageProvider) v1Storage(apiResourceConfigSource serverstorage.API return storage, nil } -func (p RESTStorageProvider) v1beta1Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (map[string]rest.Storage, error) { - storage := map[string]rest.Storage{} - // ingresses - ingressStorage, ingressStatusStorage, err := ingressstore.NewREST(restOptionsGetter) - if err != nil { - return storage, err - } - storage["ingresses"] = ingressStorage - storage["ingresses/status"] = ingressStatusStorage - - // ingressclasses - ingressClassStorage, err := ingressclassstore.NewREST(restOptionsGetter) - if err != nil { - return storage, err - } - storage["ingressclasses"] = ingressClassStorage - - return storage, nil -} - func (p RESTStorageProvider) GroupName() string { return networking.GroupName } diff --git a/pkg/registry/rbac/rest/storage_rbac.go b/pkg/registry/rbac/rest/storage_rbac.go index 94995b9fee9..e73b332ba6a 100644 --- a/pkg/registry/rbac/rest/storage_rbac.go +++ b/pkg/registry/rbac/rest/storage_rbac.go @@ -24,8 +24,6 @@ import ( "k8s.io/klog/v2" rbacapiv1 "k8s.io/api/rbac/v1" - rbacapiv1alpha1 "k8s.io/api/rbac/v1alpha1" - rbacapiv1beta1 "k8s.io/api/rbac/v1beta1" "k8s.io/apimachinery/pkg/api/errors" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -72,20 +70,6 @@ func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource serverstorag // If you add a version here, be sure to add an entry in `k8s.io/kubernetes/cmd/kube-apiserver/app/aggregator.go with specific priorities. // TODO refactor the plumbing to provide the information in the APIGroupInfo - if apiResourceConfigSource.VersionEnabled(rbacapiv1alpha1.SchemeGroupVersion) { - if storageMap, err := p.storage(rbacapiv1alpha1.SchemeGroupVersion, apiResourceConfigSource, restOptionsGetter); err != nil { - return genericapiserver.APIGroupInfo{}, false, err - } else { - apiGroupInfo.VersionedResourcesStorageMap[rbacapiv1alpha1.SchemeGroupVersion.Version] = storageMap - } - } - if apiResourceConfigSource.VersionEnabled(rbacapiv1beta1.SchemeGroupVersion) { - if storageMap, err := p.storage(rbacapiv1beta1.SchemeGroupVersion, apiResourceConfigSource, restOptionsGetter); err != nil { - return genericapiserver.APIGroupInfo{}, false, err - } else { - apiGroupInfo.VersionedResourcesStorageMap[rbacapiv1beta1.SchemeGroupVersion.Version] = storageMap - } - } if apiResourceConfigSource.VersionEnabled(rbacapiv1.SchemeGroupVersion) { if storageMap, err := p.storage(rbacapiv1.SchemeGroupVersion, apiResourceConfigSource, restOptionsGetter); err != nil { return genericapiserver.APIGroupInfo{}, false, err diff --git a/pkg/registry/scheduling/rest/storage_scheduling.go b/pkg/registry/scheduling/rest/storage_scheduling.go index 6c1a4a58a01..be529711ab0 100644 --- a/pkg/registry/scheduling/rest/storage_scheduling.go +++ b/pkg/registry/scheduling/rest/storage_scheduling.go @@ -35,8 +35,6 @@ import ( "k8s.io/kubernetes/pkg/api/legacyscheme" "k8s.io/kubernetes/pkg/apis/scheduling" schedulingapiv1 "k8s.io/kubernetes/pkg/apis/scheduling/v1" - schedulingapiv1alpha1 "k8s.io/kubernetes/pkg/apis/scheduling/v1alpha1" - schedulingapiv1beta1 "k8s.io/kubernetes/pkg/apis/scheduling/v1beta1" priorityclassstore "k8s.io/kubernetes/pkg/registry/scheduling/priorityclass/storage" ) @@ -49,20 +47,6 @@ var _ genericapiserver.PostStartHookProvider = RESTStorageProvider{} func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (genericapiserver.APIGroupInfo, bool, error) { apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(scheduling.GroupName, legacyscheme.Scheme, legacyscheme.ParameterCodec, legacyscheme.Codecs) - if apiResourceConfigSource.VersionEnabled(schedulingapiv1alpha1.SchemeGroupVersion) { - if storage, err := p.v1alpha1Storage(apiResourceConfigSource, restOptionsGetter); err != nil { - return genericapiserver.APIGroupInfo{}, false, err - } else { - apiGroupInfo.VersionedResourcesStorageMap[schedulingapiv1alpha1.SchemeGroupVersion.Version] = storage - } - } - if apiResourceConfigSource.VersionEnabled(schedulingapiv1beta1.SchemeGroupVersion) { - if storage, err := p.v1beta1Storage(apiResourceConfigSource, restOptionsGetter); err != nil { - return genericapiserver.APIGroupInfo{}, false, err - } else { - apiGroupInfo.VersionedResourcesStorageMap[schedulingapiv1beta1.SchemeGroupVersion.Version] = storage - } - } if apiResourceConfigSource.VersionEnabled(schedulingapiv1.SchemeGroupVersion) { if storage, err := p.v1Storage(apiResourceConfigSource, restOptionsGetter); err != nil { return genericapiserver.APIGroupInfo{}, false, err @@ -73,29 +57,6 @@ func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource serverstorag return apiGroupInfo, true, nil } -func (p RESTStorageProvider) v1alpha1Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (map[string]rest.Storage, error) { - storage := map[string]rest.Storage{} - // priorityclasses - if priorityClassStorage, err := priorityclassstore.NewREST(restOptionsGetter); err != nil { - return nil, err - } else { - storage["priorityclasses"] = priorityClassStorage - } - return storage, nil -} - -func (p RESTStorageProvider) v1beta1Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (map[string]rest.Storage, error) { - storage := map[string]rest.Storage{} - // priorityclasses - if priorityClassStorage, err := priorityclassstore.NewREST(restOptionsGetter); err != nil { - return nil, err - } else { - storage["priorityclasses"] = priorityClassStorage - } - - return storage, nil -} - func (p RESTStorageProvider) v1Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (map[string]rest.Storage, error) { storage := map[string]rest.Storage{} // priorityclasses diff --git a/pkg/registry/storage/rest/storage_storage.go b/pkg/registry/storage/rest/storage_storage.go index bafb1ce2c36..4e17538075c 100644 --- a/pkg/registry/storage/rest/storage_storage.go +++ b/pkg/registry/storage/rest/storage_storage.go @@ -68,12 +68,6 @@ func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource serverstorag func (p RESTStorageProvider) v1alpha1Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (map[string]rest.Storage, error) { storage := map[string]rest.Storage{} - // volumeattachments - volumeAttachmentStorage, err := volumeattachmentstore.NewStorage(restOptionsGetter) - if err != nil { - return storage, err - } - storage["volumeattachments"] = volumeAttachmentStorage.VolumeAttachment // register csistoragecapacities csiStorageStorage, err := csistoragecapacitystore.NewStorage(restOptionsGetter) @@ -87,33 +81,6 @@ func (p RESTStorageProvider) v1alpha1Storage(apiResourceConfigSource serverstora func (p RESTStorageProvider) v1beta1Storage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (map[string]rest.Storage, error) { storage := map[string]rest.Storage{} - // storageclasses - storageClassStorage, err := storageclassstore.NewREST(restOptionsGetter) - if err != nil { - return storage, err - } - storage["storageclasses"] = storageClassStorage - - // volumeattachments - volumeAttachmentStorage, err := volumeattachmentstore.NewStorage(restOptionsGetter) - if err != nil { - return storage, err - } - storage["volumeattachments"] = volumeAttachmentStorage.VolumeAttachment - - // register csinodes - csiNodeStorage, err := csinodestore.NewStorage(restOptionsGetter) - if err != nil { - return storage, err - } - storage["csinodes"] = csiNodeStorage.CSINode - - // register csidrivers - csiDriverStorage, err := csidriverstore.NewStorage(restOptionsGetter) - if err != nil { - return storage, err - } - storage["csidrivers"] = csiDriverStorage.CSIDriver // register csistoragecapacities csiStorageStorage, err := csistoragecapacitystore.NewStorage(restOptionsGetter) diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/apiserver.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/apiserver.go index 8ef78d82f44..d08693bbfdf 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/apiserver.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/apiserver.go @@ -137,26 +137,8 @@ func (c completedConfig) New(delegationTarget genericapiserver.DelegationTarget) GenericAPIServer: genericServer, } - // used later to filter the served resource by those that have expired. - resourceExpirationEvaluator, err := genericapiserver.NewResourceExpirationEvaluator(*c.GenericConfig.Version) - if err != nil { - return nil, err - } - apiResourceConfig := c.GenericConfig.MergedResourceConfig apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(apiextensions.GroupName, Scheme, metav1.ParameterCodec, Codecs) - if resourceExpirationEvaluator.ShouldServeForVersion(1, 22) && apiResourceConfig.VersionEnabled(v1beta1.SchemeGroupVersion) { - storage := map[string]rest.Storage{} - // customresourcedefinitions - customResourceDefinitionStorage, err := customresourcedefinition.NewREST(Scheme, c.GenericConfig.RESTOptionsGetter) - if err != nil { - return nil, err - } - storage["customresourcedefinitions"] = customResourceDefinitionStorage - storage["customresourcedefinitions/status"] = customresourcedefinition.NewStatusREST(Scheme, customResourceDefinitionStorage) - - apiGroupInfo.VersionedResourcesStorageMap[v1beta1.SchemeGroupVersion.Version] = storage - } if apiResourceConfig.VersionEnabled(v1.SchemeGroupVersion) { storage := map[string]rest.Storage{} // customresourcedefinitions diff --git a/staging/src/k8s.io/kube-aggregator/pkg/registry/apiservice/rest/storage_apiservice.go b/staging/src/k8s.io/kube-aggregator/pkg/registry/apiservice/rest/storage_apiservice.go index fc3fd6b2f1a..4ae5205ca05 100644 --- a/staging/src/k8s.io/kube-aggregator/pkg/registry/apiservice/rest/storage_apiservice.go +++ b/staging/src/k8s.io/kube-aggregator/pkg/registry/apiservice/rest/storage_apiservice.go @@ -25,7 +25,6 @@ import ( "k8s.io/kube-aggregator/pkg/apis/apiregistration" v1 "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1" - "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1" aggregatorscheme "k8s.io/kube-aggregator/pkg/apiserver/scheme" apiservicestorage "k8s.io/kube-aggregator/pkg/registry/apiservice/etcd" ) @@ -34,14 +33,6 @@ import ( func NewRESTStorage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter, shouldServeBeta bool) genericapiserver.APIGroupInfo { apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(apiregistration.GroupName, aggregatorscheme.Scheme, metav1.ParameterCodec, aggregatorscheme.Codecs) - if shouldServeBeta && apiResourceConfigSource.VersionEnabled(v1beta1.SchemeGroupVersion) { - storage := map[string]rest.Storage{} - apiServiceREST := apiservicestorage.NewREST(aggregatorscheme.Scheme, restOptionsGetter) - storage["apiservices"] = apiServiceREST - storage["apiservices/status"] = apiservicestorage.NewStatusREST(aggregatorscheme.Scheme, apiServiceREST) - apiGroupInfo.VersionedResourcesStorageMap["v1beta1"] = storage - } - if apiResourceConfigSource.VersionEnabled(v1.SchemeGroupVersion) { storage := map[string]rest.Storage{} apiServiceREST := apiservicestorage.NewREST(aggregatorscheme.Scheme, restOptionsGetter) diff --git a/test/integration/etcd/data.go b/test/integration/etcd/data.go index 90b1e4bb733..e3a5293a4e5 100644 --- a/test/integration/etcd/data.go +++ b/test/integration/etcd/data.go @@ -166,14 +166,6 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes }, // -- - // k8s.io/kubernetes/pkg/apis/certificates/v1beta1 - gvr("certificates.k8s.io", "v1beta1", "certificatesigningrequests"): { - Stub: `{"metadata": {"name": "csr1"}, "spec": {"request": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJQnlqQ0NBVE1DQVFBd2dZa3hDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saApNUll3RkFZRFZRUUhFdzFOYjNWdWRHRnBiaUJXYVdWM01STXdFUVlEVlFRS0V3cEhiMjluYkdVZ1NXNWpNUjh3CkhRWURWUVFMRXhaSmJtWnZjbTFoZEdsdmJpQlVaV05vYm05c2IyZDVNUmN3RlFZRFZRUURFdzUzZDNjdVoyOXYKWjJ4bExtTnZiVENCbnpBTkJna3Foa2lHOXcwQkFRRUZBQU9CalFBd2dZa0NnWUVBcFp0WUpDSEo0VnBWWEhmVgpJbHN0UVRsTzRxQzAzaGpYK1prUHl2ZFlkMVE0K3FiQWVUd1htQ1VLWUhUaFZSZDVhWFNxbFB6eUlCd2llTVpyCldGbFJRZGRaMUl6WEFsVlJEV3dBbzYwS2VjcWVBWG5uVUsrNWZYb1RJL1VnV3NocmU4dEoreC9UTUhhUUtSL0oKY0lXUGhxYVFoc0p1elpidkFkR0E4MEJMeGRNQ0F3RUFBYUFBTUEwR0NTcUdTSWIzRFFFQkJRVUFBNEdCQUlobAo0UHZGcStlN2lwQVJnSTVaTStHWng2bXBDejQ0RFRvMEprd2ZSRGYrQnRyc2FDMHE2OGVUZjJYaFlPc3E0ZmtIClEwdUEwYVZvZzNmNWlKeENhM0hwNWd4YkpRNnpWNmtKMFRFc3VhYU9oRWtvOXNkcENvUE9uUkJtMmkvWFJEMkQKNmlOaDhmOHowU2hHc0ZxakRnRkh5RjNvK2xVeWorVUM2SDFRVzdibgotLS0tLUVORCBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0="}}`, - ExpectedEtcdPath: "/registry/certificatesigningrequests/csr1", - ExpectedGVK: gvkP("certificates.k8s.io", "v1", "CertificateSigningRequest"), - }, - // -- - // k8s.io/kubernetes/pkg/apis/certificates/v1 gvr("certificates.k8s.io", "v1", "certificatesigningrequests"): { Stub: `{"metadata": {"name": "csr2"}, "spec": {"signerName":"example.com/signer", "usages":["any"], "request": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJQnlqQ0NBVE1DQVFBd2dZa3hDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saApNUll3RkFZRFZRUUhFdzFOYjNWdWRHRnBiaUJXYVdWM01STXdFUVlEVlFRS0V3cEhiMjluYkdVZ1NXNWpNUjh3CkhRWURWUVFMRXhaSmJtWnZjbTFoZEdsdmJpQlVaV05vYm05c2IyZDVNUmN3RlFZRFZRUURFdzUzZDNjdVoyOXYKWjJ4bExtTnZiVENCbnpBTkJna3Foa2lHOXcwQkFRRUZBQU9CalFBd2dZa0NnWUVBcFp0WUpDSEo0VnBWWEhmVgpJbHN0UVRsTzRxQzAzaGpYK1prUHl2ZFlkMVE0K3FiQWVUd1htQ1VLWUhUaFZSZDVhWFNxbFB6eUlCd2llTVpyCldGbFJRZGRaMUl6WEFsVlJEV3dBbzYwS2VjcWVBWG5uVUsrNWZYb1RJL1VnV3NocmU4dEoreC9UTUhhUUtSL0oKY0lXUGhxYVFoc0p1elpidkFkR0E4MEJMeGRNQ0F3RUFBYUFBTUEwR0NTcUdTSWIzRFFFQkJRVUFBNEdCQUlobAo0UHZGcStlN2lwQVJnSTVaTStHWng2bXBDejQ0RFRvMEprd2ZSRGYrQnRyc2FDMHE2OGVUZjJYaFlPc3E0ZmtIClEwdUEwYVZvZzNmNWlKeENhM0hwNWd4YkpRNnpWNmtKMFRFc3VhYU9oRWtvOXNkcENvUE9uUkJtMmkvWFJEMkQKNmlOaDhmOHowU2hHc0ZxakRnRkh5RjNvK2xVeWorVUM2SDFRVzdibgotLS0tLUVORCBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0="}}`, @@ -188,14 +180,6 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes }, // -- - // k8s.io/kubernetes/pkg/apis/coordination/v1beta1 - gvr("coordination.k8s.io", "v1beta1", "leases"): { - Stub: `{"metadata": {"name": "leasev1beta1"}, "spec": {"holderIdentity": "holder", "leaseDurationSeconds": 5}}`, - ExpectedEtcdPath: "/registry/leases/" + namespace + "/leasev1beta1", - ExpectedGVK: gvkP("coordination.k8s.io", "v1", "Lease"), - }, - // -- - // k8s.io/kubernetes/pkg/apis/discovery/v1 gvr("discovery.k8s.io", "v1", "endpointslices"): { Stub: `{"metadata": {"name": "slicev1"}, "addressType": "IPv4", "protocol": "TCP", "ports": [], "endpoints": []}`, @@ -227,27 +211,6 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes }, // -- - // k8s.io/kubernetes/pkg/apis/extensions/v1beta1 - gvr("extensions", "v1beta1", "ingresses"): { - Stub: `{"metadata": {"name": "ingress1"}, "spec": {"backend": {"serviceName": "service", "servicePort": 5000}}}`, - ExpectedEtcdPath: "/registry/ingress/" + namespace + "/ingress1", - ExpectedGVK: gvkP("networking.k8s.io", "v1", "Ingress"), - }, - // -- - - // k8s.io/kubernetes/pkg/apis/networking/v1beta1 - gvr("networking.k8s.io", "v1beta1", "ingresses"): { - Stub: `{"metadata": {"name": "ingress2"}, "spec": {"backend": {"serviceName": "service", "servicePort": 5000}}}`, - ExpectedEtcdPath: "/registry/ingress/" + namespace + "/ingress2", - ExpectedGVK: gvkP("networking.k8s.io", "v1", "Ingress"), - }, - gvr("networking.k8s.io", "v1beta1", "ingressclasses"): { - Stub: `{"metadata": {"name": "ingressclass2"}, "spec": {"controller": "example.com/controller"}}`, - ExpectedEtcdPath: "/registry/ingressclasses/ingressclass2", - ExpectedGVK: gvkP("networking.k8s.io", "v1", "IngressClass"), - }, - // -- - // k8s.io/kubernetes/pkg/apis/networking/v1 gvr("networking.k8s.io", "v1", "ingresses"): { Stub: `{"metadata": {"name": "ingress3"}, "spec": {"defaultBackend": {"service":{"name":"service", "port":{"number": 5000}}}}}`, @@ -282,14 +245,6 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes }, // -- - // k8s.io/kubernetes/pkg/apis/storage/v1alpha1 - gvr("storage.k8s.io", "v1alpha1", "volumeattachments"): { - Stub: `{"metadata": {"name": "va1"}, "spec": {"attacher": "gce", "nodeName": "localhost", "source": {"persistentVolumeName": "pv1"}}}`, - ExpectedEtcdPath: "/registry/volumeattachments/va1", - ExpectedGVK: gvkP("storage.k8s.io", "v1", "VolumeAttachment"), - }, - // -- - // k8s.io/kubernetes/pkg/apis/storage/v1alpha1 gvr("storage.k8s.io", "v1alpha1", "csistoragecapacities"): { Stub: `{"metadata": {"name": "csc-12345-1"}, "storageClassName": "sc1"}`, @@ -328,14 +283,6 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes }, // -- - // k8s.io/kubernetes/pkg/apis/storage/v1beta1 - gvr("storage.k8s.io", "v1beta1", "volumeattachments"): { - Stub: `{"metadata": {"name": "va2"}, "spec": {"attacher": "gce", "nodeName": "localhost", "source": {"persistentVolumeName": "pv2"}}}`, - ExpectedEtcdPath: "/registry/volumeattachments/va2", - ExpectedGVK: gvkP("storage.k8s.io", "v1", "VolumeAttachment"), - }, - // -- - // k8s.io/kubernetes/pkg/apis/storage/v1 gvr("storage.k8s.io", "v1", "volumeattachments"): { Stub: `{"metadata": {"name": "va3"}, "spec": {"attacher": "gce", "nodeName": "localhost", "source": {"persistentVolumeName": "pv3"}}}`, @@ -344,13 +291,6 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes // -- // k8s.io/kubernetes/pkg/apis/storage/v1beta1 - gvr("storage.k8s.io", "v1beta1", "storageclasses"): { - Stub: `{"metadata": {"name": "sc1"}, "provisioner": "aws"}`, - ExpectedEtcdPath: "/registry/storageclasses/sc1", - ExpectedGVK: gvkP("storage.k8s.io", "v1", "StorageClass"), - }, - // -- - // k8s.io/kubernetes/pkg/apis/storage/v1beta1 gvr("storage.k8s.io", "v1beta1", "csistoragecapacities"): { Stub: `{"metadata": {"name": "csc-12345-2"}, "storageClassName": "sc1"}`, @@ -365,52 +305,6 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes }, // -- - // k8s.io/kubernetes/pkg/apis/rbac/v1alpha1 - gvr("rbac.authorization.k8s.io", "v1alpha1", "roles"): { - Stub: `{"metadata": {"name": "role1"}, "rules": [{"apiGroups": ["v1"], "resources": ["events"], "verbs": ["watch"]}]}`, - ExpectedEtcdPath: "/registry/roles/" + namespace + "/role1", - ExpectedGVK: gvkP("rbac.authorization.k8s.io", "v1", "Role"), - }, - gvr("rbac.authorization.k8s.io", "v1alpha1", "clusterroles"): { - Stub: `{"metadata": {"name": "crole1"}, "rules": [{"nonResourceURLs": ["/version"], "verbs": ["get"]}]}`, - ExpectedEtcdPath: "/registry/clusterroles/crole1", - ExpectedGVK: gvkP("rbac.authorization.k8s.io", "v1", "ClusterRole"), - }, - gvr("rbac.authorization.k8s.io", "v1alpha1", "rolebindings"): { - Stub: `{"metadata": {"name": "roleb1"}, "roleRef": {"apiGroup": "rbac.authorization.k8s.io", "kind": "ClusterRole", "name": "somecr"}, "subjects": [{"apiVersion": "rbac.authorization.k8s.io/v1alpha1", "kind": "Group", "name": "system:authenticated"}]}`, - ExpectedEtcdPath: "/registry/rolebindings/" + namespace + "/roleb1", - ExpectedGVK: gvkP("rbac.authorization.k8s.io", "v1", "RoleBinding"), - }, - gvr("rbac.authorization.k8s.io", "v1alpha1", "clusterrolebindings"): { - Stub: `{"metadata": {"name": "croleb1"}, "roleRef": {"apiGroup": "rbac.authorization.k8s.io", "kind": "ClusterRole", "name": "somecr"}, "subjects": [{"apiVersion": "rbac.authorization.k8s.io/v1alpha1", "kind": "Group", "name": "system:authenticated"}]}`, - ExpectedEtcdPath: "/registry/clusterrolebindings/croleb1", - ExpectedGVK: gvkP("rbac.authorization.k8s.io", "v1", "ClusterRoleBinding"), - }, - // -- - - // k8s.io/kubernetes/pkg/apis/rbac/v1beta1 - gvr("rbac.authorization.k8s.io", "v1beta1", "roles"): { - Stub: `{"metadata": {"name": "role2"}, "rules": [{"apiGroups": ["v1"], "resources": ["events"], "verbs": ["watch"]}]}`, - ExpectedEtcdPath: "/registry/roles/" + namespace + "/role2", - ExpectedGVK: gvkP("rbac.authorization.k8s.io", "v1", "Role"), - }, - gvr("rbac.authorization.k8s.io", "v1beta1", "clusterroles"): { - Stub: `{"metadata": {"name": "crole2"}, "rules": [{"nonResourceURLs": ["/version"], "verbs": ["get"]}]}`, - ExpectedEtcdPath: "/registry/clusterroles/crole2", - ExpectedGVK: gvkP("rbac.authorization.k8s.io", "v1", "ClusterRole"), - }, - gvr("rbac.authorization.k8s.io", "v1beta1", "rolebindings"): { - Stub: `{"metadata": {"name": "roleb2"}, "roleRef": {"apiGroup": "rbac.authorization.k8s.io", "kind": "ClusterRole", "name": "somecr"}, "subjects": [{"apiVersion": "rbac.authorization.k8s.io/v1alpha1", "kind": "Group", "name": "system:authenticated"}]}`, - ExpectedEtcdPath: "/registry/rolebindings/" + namespace + "/roleb2", - ExpectedGVK: gvkP("rbac.authorization.k8s.io", "v1", "RoleBinding"), - }, - gvr("rbac.authorization.k8s.io", "v1beta1", "clusterrolebindings"): { - Stub: `{"metadata": {"name": "croleb2"}, "roleRef": {"apiGroup": "rbac.authorization.k8s.io", "kind": "ClusterRole", "name": "somecr"}, "subjects": [{"apiVersion": "rbac.authorization.k8s.io/v1alpha1", "kind": "Group", "name": "system:authenticated"}]}`, - ExpectedEtcdPath: "/registry/clusterrolebindings/croleb2", - ExpectedGVK: gvkP("rbac.authorization.k8s.io", "v1", "ClusterRoleBinding"), - }, - // -- - // k8s.io/kubernetes/pkg/apis/rbac/v1 gvr("rbac.authorization.k8s.io", "v1", "roles"): { Stub: `{"metadata": {"name": "role3"}, "rules": [{"apiGroups": ["v1"], "resources": ["events"], "verbs": ["watch"]}]}`, @@ -441,35 +335,6 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes }, // -- - // k8s.io/kubernetes/pkg/apis/admissionregistration/v1beta1 - gvr("admissionregistration.k8s.io", "v1beta1", "validatingwebhookconfigurations"): { - Stub: `{"metadata":{"name":"hook1","creationTimestamp":null},"webhooks":[{"name":"externaladmissionhook.k8s.io","clientConfig":{"service":{"namespace":"ns","name":"n"},"caBundle":null},"rules":[{"operations":["CREATE"],"apiGroups":["group"],"apiVersions":["version"],"resources":["resource"]}],"failurePolicy":"Ignore"}]}`, - ExpectedEtcdPath: "/registry/validatingwebhookconfigurations/hook1", - ExpectedGVK: gvkP("admissionregistration.k8s.io", "v1", "ValidatingWebhookConfiguration"), - }, - gvr("admissionregistration.k8s.io", "v1beta1", "mutatingwebhookconfigurations"): { - Stub: `{"metadata":{"name":"hook1","creationTimestamp":null},"webhooks":[{"name":"externaladmissionhook.k8s.io","clientConfig":{"service":{"namespace":"ns","name":"n"},"caBundle":null},"rules":[{"operations":["CREATE"],"apiGroups":["group"],"apiVersions":["version"],"resources":["resource"]}],"failurePolicy":"Ignore"}]}`, - ExpectedEtcdPath: "/registry/mutatingwebhookconfigurations/hook1", - ExpectedGVK: gvkP("admissionregistration.k8s.io", "v1", "MutatingWebhookConfiguration"), - }, - // -- - - // k8s.io/kubernetes/pkg/apis/scheduling/v1alpha1 - gvr("scheduling.k8s.io", "v1alpha1", "priorityclasses"): { - Stub: `{"metadata":{"name":"pc1"},"Value":1000}`, - ExpectedEtcdPath: "/registry/priorityclasses/pc1", - ExpectedGVK: gvkP("scheduling.k8s.io", "v1", "PriorityClass"), - }, - // -- - - // k8s.io/kubernetes/pkg/apis/scheduling/v1beta1 - gvr("scheduling.k8s.io", "v1beta1", "priorityclasses"): { - Stub: `{"metadata":{"name":"pc2"},"Value":1000}`, - ExpectedEtcdPath: "/registry/priorityclasses/pc2", - ExpectedGVK: gvkP("scheduling.k8s.io", "v1", "PriorityClass"), - }, - // -- - // k8s.io/kubernetes/pkg/apis/scheduling/v1 gvr("scheduling.k8s.io", "v1", "priorityclasses"): { Stub: `{"metadata":{"name":"pc3"},"Value":1000}`, @@ -477,15 +342,6 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes }, // -- - // k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1 - // depends on aggregator using the same ungrouped RESTOptionsGetter as the kube apiserver, not SimpleRestOptionsFactory in aggregator.go - gvr("apiregistration.k8s.io", "v1beta1", "apiservices"): { - Stub: `{"metadata": {"name": "as1.foo.com"}, "spec": {"group": "foo.com", "version": "as1", "groupPriorityMinimum":100, "versionPriority":10}}`, - ExpectedEtcdPath: "/registry/apiregistration.k8s.io/apiservices/as1.foo.com", - ExpectedGVK: gvkP("apiregistration.k8s.io", "v1", "APIService"), - }, - // -- - // k8s.io/kube-aggregator/pkg/apis/apiregistration/v1 // depends on aggregator using the same ungrouped RESTOptionsGetter as the kube apiserver, not SimpleRestOptionsFactory in aggregator.go gvr("apiregistration.k8s.io", "v1", "apiservices"): { @@ -503,11 +359,6 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes ExpectedEtcdPath: "/registry/apiextensions.k8s.io/customresourcedefinitions/openshiftwebconsoleconfigs.webconsole2.operator.openshift.io", ExpectedGVK: gvkP("apiextensions.k8s.io", "v1beta1", "CustomResourceDefinition"), }, - // k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1 - gvr("apiextensions.k8s.io", "v1beta1", "customresourcedefinitions"): { - Stub: `{"metadata": {"name": "openshiftwebconsoleconfigs.webconsole.operator.openshift.io"},"spec": {"scope": "Cluster","group": "webconsole.operator.openshift.io","version": "v1alpha1","names": {"kind": "OpenShiftWebConsoleConfig","plural": "openshiftwebconsoleconfigs","singular": "openshiftwebconsoleconfig"}}}`, - ExpectedEtcdPath: "/registry/apiextensions.k8s.io/customresourcedefinitions/openshiftwebconsoleconfigs.webconsole.operator.openshift.io", - }, gvr("cr.bar.com", "v1", "foos"): { Stub: `{"kind": "Foo", "apiVersion": "cr.bar.com/v1", "metadata": {"name": "cr1foo"}, "color": "blue"}`, // requires TypeMeta due to CRD scheme's UnstructuredObjectTyper ExpectedEtcdPath: "/registry/cr.bar.com/foos/" + namespace + "/cr1foo", @@ -563,13 +414,6 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes } // add csinodes - // k8s.io/kubernetes/pkg/apis/storage/v1beta1 - etcdStorageData[gvr("storage.k8s.io", "v1beta1", "csinodes")] = StorageData{ - Stub: `{"metadata": {"name": "csini1"}, "spec": {"drivers": [{"name": "test-driver", "nodeID": "localhost", "topologyKeys": ["company.com/zone1", "company.com/zone2"]}]}}`, - ExpectedEtcdPath: "/registry/csinodes/csini1", - ExpectedGVK: gvkP("storage.k8s.io", "v1", "CSINode"), - } - // k8s.io/kubernetes/pkg/apis/storage/v1 etcdStorageData[gvr("storage.k8s.io", "v1", "csinodes")] = StorageData{ Stub: `{"metadata": {"name": "csini2"}, "spec": {"drivers": [{"name": "test-driver", "nodeID": "localhost", "topologyKeys": ["company.com/zone1", "company.com/zone2"]}]}}`, @@ -577,13 +421,6 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes } // add csidrivers - // k8s.io/kubernetes/pkg/apis/storage/v1beta1 - etcdStorageData[gvr("storage.k8s.io", "v1beta1", "csidrivers")] = StorageData{ - Stub: `{"metadata": {"name": "csid1"}, "spec": {"attachRequired": true, "podInfoOnMount": true}}`, - ExpectedEtcdPath: "/registry/csidrivers/csid1", - ExpectedGVK: gvkP("storage.k8s.io", "v1", "CSIDriver"), - } - // k8s.io/kubernetes/pkg/apis/storage/v1 etcdStorageData[gvr("storage.k8s.io", "v1", "csidrivers")] = StorageData{ Stub: `{"metadata": {"name": "csid2"}, "spec": {"attachRequired": true, "podInfoOnMount": true}}`,