diff --git a/cmd/kube-aggregator/pkg/apiserver/apiserver.go b/cmd/kube-aggregator/pkg/apiserver/apiserver.go index c0da8ae52ec..342340a691f 100644 --- a/cmd/kube-aggregator/pkg/apiserver/apiserver.go +++ b/cmd/kube-aggregator/pkg/apiserver/apiserver.go @@ -24,6 +24,7 @@ import ( "k8s.io/apimachinery/pkg/util/wait" genericapirequest "k8s.io/apiserver/pkg/endpoints/request" genericfilters "k8s.io/apiserver/pkg/server/filters" + "k8s.io/kubernetes/pkg/api" kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" kubeinformers "k8s.io/kubernetes/pkg/client/informers/informers_generated" v1listers "k8s.io/kubernetes/pkg/client/listers/core/v1" @@ -140,7 +141,7 @@ func (c completedConfig) New() (*APIDiscoveryServer, error) { proxyMux: proxyMux, } - apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(apiregistration.GroupName) + apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(apiregistration.GroupName, api.Registry, api.Scheme, api.ParameterCodec, api.Codecs) apiGroupInfo.GroupMeta.GroupVersion = v1alpha1.SchemeGroupVersion v1alpha1storage := map[string]rest.Storage{} v1alpha1storage["apiservices"] = apiservicestorage.NewREST(c.RESTOptionsGetter) diff --git a/cmd/kube-aggregator/pkg/cmd/server/start.go b/cmd/kube-aggregator/pkg/cmd/server/start.go index 3a8cc744626..a08db29a1e5 100644 --- a/cmd/kube-aggregator/pkg/cmd/server/start.go +++ b/cmd/kube-aggregator/pkg/cmd/server/start.go @@ -116,7 +116,8 @@ func (o DiscoveryServerOptions) RunDiscoveryServer() error { return fmt.Errorf("error creating self-signed certificates: %v", err) } - genericAPIServerConfig := genericapiserver.NewConfig() + genericAPIServerConfig := genericapiserver.NewConfig(). + WithSerializer(api.Codecs) if _, err := genericAPIServerConfig.ApplySecureServingOptions(o.SecureServing); err != nil { return err } diff --git a/cmd/kube-aggregator/pkg/registry/apiservice/etcd/BUILD b/cmd/kube-aggregator/pkg/registry/apiservice/etcd/BUILD index f75040dd42f..25ddb731bc0 100644 --- a/cmd/kube-aggregator/pkg/registry/apiservice/etcd/BUILD +++ b/cmd/kube-aggregator/pkg/registry/apiservice/etcd/BUILD @@ -17,6 +17,7 @@ go_library( "//pkg/api:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//vendor:k8s.io/apimachinery/pkg/runtime", ], ) diff --git a/cmd/kube-aggregator/pkg/registry/apiservice/etcd/etcd.go b/cmd/kube-aggregator/pkg/registry/apiservice/etcd/etcd.go index 63e99ffe32f..4a8bf413483 100644 --- a/cmd/kube-aggregator/pkg/registry/apiservice/etcd/etcd.go +++ b/cmd/kube-aggregator/pkg/registry/apiservice/etcd/etcd.go @@ -23,6 +23,7 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" + "k8s.io/kubernetes/pkg/registry/cachesize" ) // rest implements a RESTStorage for API services against etcd @@ -41,6 +42,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { }, PredicateFunc: apiservice.MatchAPIService, QualifiedResource: apiregistration.Resource("apiservices"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("apiservices"), CreateStrategy: apiservice.Strategy, UpdateStrategy: apiservice.Strategy, diff --git a/cmd/kube-apiserver/app/server.go b/cmd/kube-apiserver/app/server.go index cc935926085..c0ebda3a940 100644 --- a/cmd/kube-apiserver/app/server.go +++ b/cmd/kube-apiserver/app/server.go @@ -106,6 +106,7 @@ func Run(s *options.ServerRunOptions) error { // create config from options genericConfig := genericapiserver.NewConfig(). + WithSerializer(api.Codecs). ApplyOptions(s.GenericServerRunOptions). ApplyInsecureServingOptions(s.InsecureServing) @@ -195,7 +196,7 @@ func Run(s *options.ServerRunOptions) error { } storageFactory, err := kubeapiserver.BuildDefaultStorageFactory( s.Etcd.StorageConfig, s.GenericServerRunOptions.DefaultStorageMediaType, api.Codecs, - genericapiserver.NewDefaultResourceEncodingConfig(), storageGroupsToEncodingVersion, + genericapiserver.NewDefaultResourceEncodingConfig(api.Registry), storageGroupsToEncodingVersion, // FIXME: this GroupVersionResource override should be configurable []schema.GroupVersionResource{batch.Resource("cronjobs").WithVersion("v2alpha1")}, master.DefaultAPIResourceConfigSource(), s.GenericServerRunOptions.RuntimeConfig) @@ -294,7 +295,7 @@ func Run(s *options.ServerRunOptions) error { genericConfig.Authenticator = apiAuthenticator genericConfig.Authorizer = apiAuthorizer genericConfig.AdmissionControl = admissionController - genericConfig.OpenAPIConfig = genericapiserver.DefaultOpenAPIConfig(generatedopenapi.GetOpenAPIDefinitions) + genericConfig.OpenAPIConfig = genericapiserver.DefaultOpenAPIConfig(generatedopenapi.GetOpenAPIDefinitions, api.Scheme) genericConfig.OpenAPIConfig.PostProcessSpec = postProcessOpenAPISpecForBackwardCompatibility genericConfig.OpenAPIConfig.SecurityDefinitions = securityDefinitions genericConfig.OpenAPIConfig.Info.Title = "Kubernetes" diff --git a/examples/apiserver/apiserver.go b/examples/apiserver/apiserver.go index 012898afcaa..05acb76c245 100644 --- a/examples/apiserver/apiserver.go +++ b/examples/apiserver/apiserver.go @@ -51,7 +51,7 @@ func newStorageFactory() genericapiserver.StorageFactory { ServerList: []string{"http://127.0.0.1:2379"}, Copier: api.Scheme, } - storageFactory := genericapiserver.NewDefaultStorageFactory(config, "application/json", api.Codecs, genericapiserver.NewDefaultResourceEncodingConfig(), genericapiserver.NewResourceConfig()) + storageFactory := genericapiserver.NewDefaultStorageFactory(config, "application/json", api.Codecs, genericapiserver.NewDefaultResourceEncodingConfig(api.Registry), genericapiserver.NewResourceConfig()) return storageFactory } @@ -104,6 +104,7 @@ func (serverOptions *ServerRunOptions) Run(stopCh <-chan struct{}) error { // create config from options config := genericapiserver.NewConfig(). + WithSerializer(api.Codecs). ApplyOptions(serverOptions.GenericServerRunOptions). ApplyInsecureServingOptions(serverOptions.InsecureServing) diff --git a/federation/cmd/federation-apiserver/app/server.go b/federation/cmd/federation-apiserver/app/server.go index 65d01d99dc3..5836283da88 100644 --- a/federation/cmd/federation-apiserver/app/server.go +++ b/federation/cmd/federation-apiserver/app/server.go @@ -88,9 +88,10 @@ func Run(s *options.ServerRunOptions) error { return utilerrors.NewAggregate(errs) } - genericConfig := genericapiserver.NewConfig(). // create the new config - ApplyOptions(s.GenericServerRunOptions). // apply the options selected - ApplyInsecureServingOptions(s.InsecureServing) + genericConfig := genericapiserver.NewConfig(). + WithSerializer(api.Codecs). + ApplyOptions(s.GenericServerRunOptions). + ApplyInsecureServingOptions(s.InsecureServing) if _, err := genericConfig.ApplySecureServingOptions(s.SecureServing); err != nil { return fmt.Errorf("failed to configure https: %s", err) @@ -112,7 +113,7 @@ func Run(s *options.ServerRunOptions) error { } storageFactory, err := kubeapiserver.BuildDefaultStorageFactory( s.Etcd.StorageConfig, s.GenericServerRunOptions.DefaultStorageMediaType, api.Codecs, - genericapiserver.NewDefaultResourceEncodingConfig(), storageGroupsToEncodingVersion, + genericapiserver.NewDefaultResourceEncodingConfig(api.Registry), storageGroupsToEncodingVersion, []schema.GroupVersionResource{}, resourceConfig, s.GenericServerRunOptions.RuntimeConfig) if err != nil { return fmt.Errorf("error in initializing storage factory: %s", err) @@ -177,7 +178,7 @@ func Run(s *options.ServerRunOptions) error { genericConfig.Authenticator = apiAuthenticator genericConfig.Authorizer = apiAuthorizer genericConfig.AdmissionControl = admissionController - genericConfig.OpenAPIConfig = genericapiserver.DefaultOpenAPIConfig(openapi.GetOpenAPIDefinitions) + genericConfig.OpenAPIConfig = genericapiserver.DefaultOpenAPIConfig(openapi.GetOpenAPIDefinitions, api.Scheme) genericConfig.OpenAPIConfig.PostProcessSpec = postProcessOpenAPISpecForBackwardCompatibility genericConfig.OpenAPIConfig.SecurityDefinitions = securityDefinitions genericConfig.SwaggerConfig = genericapiserver.DefaultSwaggerConfig() diff --git a/federation/pkg/federation-controller/daemonset/daemonset_controller_test.go b/federation/pkg/federation-controller/daemonset/daemonset_controller_test.go index 18036f35779..f5cfa486e2c 100644 --- a/federation/pkg/federation-controller/daemonset/daemonset_controller_test.go +++ b/federation/pkg/federation-controller/daemonset/daemonset_controller_test.go @@ -101,7 +101,7 @@ func TestDaemonSetController(t *testing.T) { updatedDaemonSet := GetDaemonSetFromChan(daemonsetUpdateChan) assert.True(t, daemonsetController.hasFinalizerFunc(updatedDaemonSet, deletionhelper.FinalizerDeleteFromUnderlyingClusters)) updatedDaemonSet = GetDaemonSetFromChan(daemonsetUpdateChan) - assert.True(t, daemonsetController.hasFinalizerFunc(updatedDaemonSet, apiv1.FinalizerOrphan)) + assert.True(t, daemonsetController.hasFinalizerFunc(updatedDaemonSet, metav1.FinalizerOrphan)) daemonset1 = *updatedDaemonSet createdDaemonSet := GetDaemonSetFromChan(cluster1CreateChan) diff --git a/federation/pkg/federation-controller/ingress/ingress_controller_test.go b/federation/pkg/federation-controller/ingress/ingress_controller_test.go index 57da7088b2a..8d19afe6f9c 100644 --- a/federation/pkg/federation-controller/ingress/ingress_controller_test.go +++ b/federation/pkg/federation-controller/ingress/ingress_controller_test.go @@ -144,7 +144,7 @@ func TestIngressController(t *testing.T) { updatedIngress := GetIngressFromChan(t, fedIngressUpdateChan) assert.True(t, ingressController.hasFinalizerFunc(updatedIngress, deletionhelper.FinalizerDeleteFromUnderlyingClusters)) updatedIngress = GetIngressFromChan(t, fedIngressUpdateChan) - assert.True(t, ingressController.hasFinalizerFunc(updatedIngress, apiv1.FinalizerOrphan), fmt.Sprintf("ingress does not have the orphan finalizer: %v", updatedIngress)) + assert.True(t, ingressController.hasFinalizerFunc(updatedIngress, metav1.FinalizerOrphan), fmt.Sprintf("ingress does not have the orphan finalizer: %v", updatedIngress)) fedIngress = *updatedIngress t.Log("Checking that Ingress was correctly created in cluster 1") @@ -305,7 +305,7 @@ func WaitForFinalizersInFederationStore(ingressController *IngressController, st return false, err } ingress := obj.(*extensionsv1beta1.Ingress) - if ingressController.hasFinalizerFunc(ingress, apiv1.FinalizerOrphan) && + if ingressController.hasFinalizerFunc(ingress, metav1.FinalizerOrphan) && ingressController.hasFinalizerFunc(ingress, deletionhelper.FinalizerDeleteFromUnderlyingClusters) { return true, nil } diff --git a/federation/pkg/federation-controller/namespace/namespace_controller_test.go b/federation/pkg/federation-controller/namespace/namespace_controller_test.go index bd4a32de7d1..e1f61dfc5a4 100644 --- a/federation/pkg/federation-controller/namespace/namespace_controller_test.go +++ b/federation/pkg/federation-controller/namespace/namespace_controller_test.go @@ -149,7 +149,7 @@ func TestNamespaceController(t *testing.T) { // Delete the namespace with orphan finalizer (let namespaces // in underlying clusters be as is). // TODO: Add a test without orphan finalizer. - ns1.ObjectMeta.Finalizers = append(ns1.ObjectMeta.Finalizers, apiv1.FinalizerOrphan) + ns1.ObjectMeta.Finalizers = append(ns1.ObjectMeta.Finalizers, metav1.FinalizerOrphan) ns1.DeletionTimestamp = &metav1.Time{Time: time.Now()} namespaceWatch.Modify(&ns1) assert.Equal(t, ns1.Name, GetStringFromChan(nsDeleteChan)) diff --git a/federation/pkg/federation-controller/secret/secret_controller_test.go b/federation/pkg/federation-controller/secret/secret_controller_test.go index c62aad64636..4fea99e5da4 100644 --- a/federation/pkg/federation-controller/secret/secret_controller_test.go +++ b/federation/pkg/federation-controller/secret/secret_controller_test.go @@ -101,7 +101,7 @@ func TestSecretController(t *testing.T) { updatedSecret := GetSecretFromChan(secretUpdateChan) assert.True(t, secretController.hasFinalizerFunc(updatedSecret, deletionhelper.FinalizerDeleteFromUnderlyingClusters)) updatedSecret = GetSecretFromChan(secretUpdateChan) - assert.True(t, secretController.hasFinalizerFunc(updatedSecret, apiv1.FinalizerOrphan)) + assert.True(t, secretController.hasFinalizerFunc(updatedSecret, metav1.FinalizerOrphan)) secret1 = *updatedSecret // Verify that the secret is created in underlying cluster1. diff --git a/federation/pkg/federation-controller/util/deletionhelper/BUILD b/federation/pkg/federation-controller/util/deletionhelper/BUILD index 846780e2129..06ed9ea948c 100644 --- a/federation/pkg/federation-controller/util/deletionhelper/BUILD +++ b/federation/pkg/federation-controller/util/deletionhelper/BUILD @@ -14,8 +14,8 @@ go_library( deps = [ "//federation/pkg/federation-controller/util:go_default_library", "//pkg/api:go_default_library", - "//pkg/api/v1:go_default_library", "//vendor:github.com/golang/glog", + "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", "//vendor:k8s.io/apimachinery/pkg/runtime", "//vendor:k8s.io/client-go/tools/record", ], diff --git a/federation/pkg/federation-controller/util/deletionhelper/deletion_helper.go b/federation/pkg/federation-controller/util/deletionhelper/deletion_helper.go index 7c34fb6fd1e..3d6b7e97d77 100644 --- a/federation/pkg/federation-controller/util/deletionhelper/deletion_helper.go +++ b/federation/pkg/federation-controller/util/deletionhelper/deletion_helper.go @@ -24,11 +24,11 @@ import ( "strings" "time" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/client-go/tools/record" "k8s.io/kubernetes/federation/pkg/federation-controller/util" "k8s.io/kubernetes/pkg/api" - api_v1 "k8s.io/kubernetes/pkg/api/v1" "github.com/golang/glog" ) @@ -96,9 +96,9 @@ func (dh *DeletionHelper) EnsureFinalizers(obj runtime.Object) ( return obj, err } } - if !dh.hasFinalizerFunc(obj, api_v1.FinalizerOrphan) { - glog.V(2).Infof("Adding finalizer %s to %s", api_v1.FinalizerOrphan, dh.objNameFunc(obj)) - obj, err := dh.addFinalizerFunc(obj, api_v1.FinalizerOrphan) + if !dh.hasFinalizerFunc(obj, metav1.FinalizerOrphan) { + glog.V(2).Infof("Adding finalizer %s to %s", metav1.FinalizerOrphan, dh.objNameFunc(obj)) + obj, err := dh.addFinalizerFunc(obj, metav1.FinalizerOrphan) if err != nil { return obj, err } @@ -120,7 +120,7 @@ func (dh *DeletionHelper) HandleObjectInUnderlyingClusters(obj runtime.Object) ( glog.V(2).Infof("obj does not have %s finalizer. Nothing to do", FinalizerDeleteFromUnderlyingClusters) return obj, nil } - hasOrphanFinalizer := dh.hasFinalizerFunc(obj, api_v1.FinalizerOrphan) + hasOrphanFinalizer := dh.hasFinalizerFunc(obj, metav1.FinalizerOrphan) if hasOrphanFinalizer { glog.V(2).Infof("Found finalizer orphan. Nothing to do, just remove the finalizer") // If the obj has FinalizerOrphan finalizer, then we need to orphan the @@ -130,7 +130,7 @@ func (dh *DeletionHelper) HandleObjectInUnderlyingClusters(obj runtime.Object) ( if err != nil { return obj, err } - return dh.removeFinalizerFunc(obj, api_v1.FinalizerOrphan) + return dh.removeFinalizerFunc(obj, metav1.FinalizerOrphan) } glog.V(2).Infof("Deleting obj %s from underlying clusters", objName) diff --git a/federation/registry/cluster/etcd/BUILD b/federation/registry/cluster/etcd/BUILD index ef7cb8eed66..5aeda7b1e09 100644 --- a/federation/registry/cluster/etcd/BUILD +++ b/federation/registry/cluster/etcd/BUILD @@ -19,6 +19,7 @@ go_library( "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", "//pkg/genericapiserver/registry/rest:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//vendor:k8s.io/apimachinery/pkg/runtime", "//vendor:k8s.io/apiserver/pkg/endpoints/request", ], diff --git a/federation/registry/cluster/etcd/etcd.go b/federation/registry/cluster/etcd/etcd.go index b665fefc546..69647fdece7 100644 --- a/federation/registry/cluster/etcd/etcd.go +++ b/federation/registry/cluster/etcd/etcd.go @@ -25,6 +25,7 @@ import ( "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" "k8s.io/kubernetes/pkg/genericapiserver/registry/rest" + "k8s.io/kubernetes/pkg/registry/cachesize" ) type REST struct { @@ -55,6 +56,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { }, PredicateFunc: cluster.MatchCluster, QualifiedResource: federation.Resource("clusters"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("clusters"), CreateStrategy: cluster.Strategy, UpdateStrategy: cluster.Strategy, diff --git a/pkg/BUILD b/pkg/BUILD index 427297937da..4e250349593 100644 --- a/pkg/BUILD +++ b/pkg/BUILD @@ -98,6 +98,7 @@ filegroup( "//pkg/securitycontext:all-srcs", "//pkg/serviceaccount:all-srcs", "//pkg/ssh:all-srcs", + "//pkg/storage/errors:all-srcs", "//pkg/storage/etcd:all-srcs", "//pkg/storage/etcd3:all-srcs", "//pkg/storage/storagebackend/factory:all-srcs", diff --git a/pkg/api/errors/BUILD b/pkg/api/errors/BUILD index bf845535db1..deefdcef3c1 100644 --- a/pkg/api/errors/BUILD +++ b/pkg/api/errors/BUILD @@ -22,9 +22,6 @@ filegroup( filegroup( name = "all-srcs", - srcs = [ - ":package-srcs", - "//pkg/api/errors/storage:all-srcs", - ], + srcs = [":package-srcs"], tags = ["automanaged"], ) diff --git a/pkg/api/helpers.go b/pkg/api/helpers.go index 283dc8062c4..7ac8d9689b3 100644 --- a/pkg/api/helpers.go +++ b/pkg/api/helpers.go @@ -244,7 +244,7 @@ func IsServiceIPRequested(service *Service) bool { var standardFinalizers = sets.NewString( string(FinalizerKubernetes), - FinalizerOrphan, + metav1.FinalizerOrphan, ) // HasAnnotation returns a bool if passed in annotation exists diff --git a/pkg/api/types.go b/pkg/api/types.go index 2e0ac770777..457a5f64566 100644 --- a/pkg/api/types.go +++ b/pkg/api/types.go @@ -2798,10 +2798,10 @@ type NamespaceSpec struct { // FinalizerName is the name identifying a finalizer during namespace lifecycle. type FinalizerName string -// These are internal finalizer values to Kubernetes, must be qualified name unless defined here +// These are internal finalizer values to Kubernetes, must be qualified name unless defined here or +// in metav1. const ( FinalizerKubernetes FinalizerName = "kubernetes" - FinalizerOrphan string = "orphan" ) // NamespaceStatus is information about the current status of a Namespace. diff --git a/pkg/api/v1/helpers.go b/pkg/api/v1/helpers.go index 97a636a1984..b9fcf0e526a 100644 --- a/pkg/api/v1/helpers.go +++ b/pkg/api/v1/helpers.go @@ -21,6 +21,7 @@ import ( "fmt" "strings" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/selection" "k8s.io/apimachinery/pkg/types" @@ -82,7 +83,7 @@ func IsServiceIPRequested(service *Service) bool { var standardFinalizers = sets.NewString( string(FinalizerKubernetes), - FinalizerOrphan, + metav1.FinalizerOrphan, ) func IsStandardFinalizerName(str string) bool { diff --git a/pkg/api/v1/types.go b/pkg/api/v1/types.go index be90da724b6..d2dfcdc1132 100644 --- a/pkg/api/v1/types.go +++ b/pkg/api/v1/types.go @@ -3220,10 +3220,10 @@ type NodeList struct { // FinalizerName is the name identifying a finalizer during namespace lifecycle. type FinalizerName string -// These are internal finalizer values to Kubernetes, must be qualified name unless defined here +// These are internal finalizer values to Kubernetes, must be qualified name unless defined here or +// in metav1. const ( FinalizerKubernetes FinalizerName = "kubernetes" - FinalizerOrphan string = "orphan" ) // NamespaceSpec describes the attributes on a Namespace. diff --git a/pkg/controller/garbagecollector/BUILD b/pkg/controller/garbagecollector/BUILD index 3430b1cfc37..6805707ba86 100644 --- a/pkg/controller/garbagecollector/BUILD +++ b/pkg/controller/garbagecollector/BUILD @@ -18,7 +18,6 @@ go_library( ], tags = ["automanaged"], deps = [ - "//pkg/api/v1:go_default_library", "//pkg/controller/garbagecollector/metaonly:go_default_library", "//pkg/util/metrics:go_default_library", "//vendor:github.com/golang/glog", diff --git a/pkg/controller/garbagecollector/garbagecollector.go b/pkg/controller/garbagecollector/garbagecollector.go index c272e30b249..e2af652bf14 100644 --- a/pkg/controller/garbagecollector/garbagecollector.go +++ b/pkg/controller/garbagecollector/garbagecollector.go @@ -39,7 +39,6 @@ import ( "k8s.io/client-go/tools/cache" "k8s.io/client-go/util/clock" "k8s.io/client-go/util/workqueue" - "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/controller/garbagecollector/metaonly" // import known versions @@ -235,7 +234,7 @@ func shouldOrphanDependents(e *event, accessor metav1.Object) bool { } finalizers := accessor.GetFinalizers() for _, finalizer := range finalizers { - if finalizer == v1.FinalizerOrphan { + if finalizer == metav1.FinalizerOrphan { return true } } @@ -280,7 +279,7 @@ func (gc *GarbageCollector) removeOrphanFinalizer(owner *node) error { var newFinalizers []string found := false for _, f := range finalizers { - if f == v1.FinalizerOrphan { + if f == metav1.FinalizerOrphan { found = true break } else { diff --git a/pkg/genericapiserver/registry/generic/registry/BUILD b/pkg/genericapiserver/registry/generic/registry/BUILD index 0f488cb3131..2041d0f6a1b 100644 --- a/pkg/genericapiserver/registry/generic/registry/BUILD +++ b/pkg/genericapiserver/registry/generic/registry/BUILD @@ -18,11 +18,9 @@ go_library( ], tags = ["automanaged"], deps = [ - "//pkg/api:go_default_library", - "//pkg/api/errors/storage:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/rest:go_default_library", - "//pkg/registry/cachesize:go_default_library", + "//pkg/storage/errors:go_default_library", "//pkg/storage/etcd:go_default_library", "//pkg/storage/storagebackend/factory:go_default_library", "//vendor:github.com/golang/glog", @@ -54,11 +52,8 @@ go_test( library = ":go_default_library", tags = ["automanaged"], deps = [ - "//pkg/api:go_default_library", - "//pkg/api/testapi:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/rest:go_default_library", - "//pkg/registry/core/pod:go_default_library", "//pkg/storage/etcd:go_default_library", "//pkg/storage/etcd/testing:go_default_library", "//pkg/storage/storagebackend/factory:go_default_library", @@ -66,15 +61,19 @@ go_test( "//vendor:k8s.io/apimachinery/pkg/api/equality", "//vendor:k8s.io/apimachinery/pkg/api/errors", "//vendor:k8s.io/apimachinery/pkg/api/meta", + "//vendor:k8s.io/apimachinery/pkg/api/testing", "//vendor:k8s.io/apimachinery/pkg/apis/meta/internalversion", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", "//vendor:k8s.io/apimachinery/pkg/fields", "//vendor:k8s.io/apimachinery/pkg/labels", "//vendor:k8s.io/apimachinery/pkg/runtime", + "//vendor:k8s.io/apimachinery/pkg/runtime/serializer", "//vendor:k8s.io/apimachinery/pkg/selection", "//vendor:k8s.io/apimachinery/pkg/util/validation/field", "//vendor:k8s.io/apimachinery/pkg/util/wait", "//vendor:k8s.io/apimachinery/pkg/watch", + "//vendor:k8s.io/apiserver/pkg/apis/example", + "//vendor:k8s.io/apiserver/pkg/apis/example/v1", "//vendor:k8s.io/apiserver/pkg/endpoints/request", "//vendor:k8s.io/apiserver/pkg/storage", "//vendor:k8s.io/apiserver/pkg/storage/names", diff --git a/pkg/genericapiserver/registry/generic/registry/decorated_watcher_test.go b/pkg/genericapiserver/registry/generic/registry/decorated_watcher_test.go index ae62e0a1e61..0afbd773f07 100644 --- a/pkg/genericapiserver/registry/generic/registry/decorated_watcher_test.go +++ b/pkg/genericapiserver/registry/generic/registry/decorated_watcher_test.go @@ -25,23 +25,23 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/apimachinery/pkg/watch" - "k8s.io/kubernetes/pkg/api" + "k8s.io/apiserver/pkg/apis/example" ) func TestDecoratedWatcher(t *testing.T) { w := watch.NewFake() decorator := func(obj runtime.Object) error { - pod := obj.(*api.Pod) + pod := obj.(*example.Pod) pod.Annotations = map[string]string{"decorated": "true"} return nil } dw := newDecoratedWatcher(w, decorator) defer dw.Stop() - go w.Add(&api.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}}) + go w.Add(&example.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}}) select { case e := <-dw.ResultChan(): - pod, ok := e.Object.(*api.Pod) + pod, ok := e.Object.(*example.Pod) if !ok { t.Errorf("Should received object of type *api.Pod, get type (%T)", e.Object) return @@ -63,7 +63,7 @@ func TestDecoratedWatcherError(t *testing.T) { dw := newDecoratedWatcher(w, decorator) defer dw.Stop() - go w.Add(&api.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}}) + go w.Add(&example.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}}) select { case e := <-dw.ResultChan(): if e.Type != watch.Error { diff --git a/pkg/genericapiserver/registry/generic/registry/store.go b/pkg/genericapiserver/registry/generic/registry/store.go index 946d654dbaf..5f95681aeee 100644 --- a/pkg/genericapiserver/registry/generic/registry/store.go +++ b/pkg/genericapiserver/registry/generic/registry/store.go @@ -37,15 +37,16 @@ import ( "k8s.io/apimachinery/pkg/watch" genericapirequest "k8s.io/apiserver/pkg/endpoints/request" "k8s.io/apiserver/pkg/storage" - "k8s.io/kubernetes/pkg/api" - storeerr "k8s.io/kubernetes/pkg/api/errors/storage" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" "k8s.io/kubernetes/pkg/genericapiserver/registry/rest" - "k8s.io/kubernetes/pkg/registry/cachesize" + storeerr "k8s.io/kubernetes/pkg/storage/errors" "github.com/golang/glog" ) +// defaultWatchCacheSize is the default size of a watch catch per resource in number of entries. +const DefaultWatchCacheSize = 100 + // ObjectFunc is a function to act on a given object. An error may be returned // if the hook cannot be completed. An ObjectFunc may transform the provided // object. @@ -162,6 +163,10 @@ type Store struct { Storage storage.Interface // Called to cleanup clients used by the underlying Storage; optional. DestroyFunc func() + // Maximum size of the watch history cached in memory, in number of entries. + // A zero value here means that a default is used. This value is ignored if + // Storage is non-nil. + WatchCacheSize int } // Note: the rest.StandardStorage interface aggregates the common REST verbs @@ -546,7 +551,7 @@ func shouldUpdateFinalizers(e *Store, accessor metav1.Object, options *metav1.De hasOrphanFinalizer := false finalizers := accessor.GetFinalizers() for _, f := range finalizers { - if f == api.FinalizerOrphan { + if f == metav1.FinalizerOrphan { shouldOrphan = true hasOrphanFinalizer = true break @@ -558,13 +563,13 @@ func shouldUpdateFinalizers(e *Store, accessor metav1.Object, options *metav1.De shouldOrphan = *options.OrphanDependents } if shouldOrphan && !hasOrphanFinalizer { - finalizers = append(finalizers, api.FinalizerOrphan) + finalizers = append(finalizers, metav1.FinalizerOrphan) return true, finalizers } if !shouldOrphan && hasOrphanFinalizer { var newFinalizers []string for _, f := range finalizers { - if f == api.FinalizerOrphan { + if f == metav1.FinalizerOrphan { continue } newFinalizers = append(newFinalizers, f) @@ -1118,10 +1123,14 @@ func (e *Store) CompleteWithOptions(options *generic.StoreOptions) error { e.EnableGarbageCollection = opts.EnableGarbageCollection if e.Storage == nil { + capacity := DefaultWatchCacheSize + if e.WatchCacheSize != 0 { + capacity = DefaultWatchCacheSize + } e.Storage, e.DestroyFunc = opts.Decorator( e.Copier, opts.StorageConfig, - cachesize.GetWatchCacheSizeByResource(cachesize.Resource(e.QualifiedResource.Resource)), + capacity, e.NewFunc(), prefix, keyFunc, diff --git a/pkg/genericapiserver/registry/generic/registry/store_test.go b/pkg/genericapiserver/registry/generic/registry/store_test.go index edddc483df0..6e32bd76bc3 100644 --- a/pkg/genericapiserver/registry/generic/registry/store_test.go +++ b/pkg/genericapiserver/registry/generic/registry/store_test.go @@ -29,28 +29,38 @@ import ( apiequality "k8s.io/apimachinery/pkg/api/equality" "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/api/meta" + apitesting "k8s.io/apimachinery/pkg/api/testing" metainternalversion "k8s.io/apimachinery/pkg/apis/meta/internalversion" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/fields" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/serializer" "k8s.io/apimachinery/pkg/selection" "k8s.io/apimachinery/pkg/util/validation/field" "k8s.io/apimachinery/pkg/util/wait" + "k8s.io/apiserver/pkg/apis/example" + examplev1 "k8s.io/apiserver/pkg/apis/example/v1" genericapirequest "k8s.io/apiserver/pkg/endpoints/request" "k8s.io/apiserver/pkg/storage" "k8s.io/apiserver/pkg/storage/names" - "k8s.io/kubernetes/pkg/api" - "k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" "k8s.io/kubernetes/pkg/genericapiserver/registry/rest" - "k8s.io/kubernetes/pkg/registry/core/pod" etcdstorage "k8s.io/kubernetes/pkg/storage/etcd" etcdtesting "k8s.io/kubernetes/pkg/storage/etcd/testing" "k8s.io/kubernetes/pkg/storage/storagebackend/factory" storagetesting "k8s.io/kubernetes/pkg/storage/testing" ) +var scheme = runtime.NewScheme() +var codecs = serializer.NewCodecFactory(scheme) + +func init() { + metav1.AddToGroupVersion(scheme, metav1.SchemeGroupVersion) + example.AddToScheme(scheme) + examplev1.AddToScheme(scheme) +} + type testGracefulStrategy struct { testRESTStrategy } @@ -104,11 +114,11 @@ func (t *testRESTStrategy) ValidateUpdate(ctx genericapirequest.Context, obj, ol func (t *testRESTStrategy) Canonicalize(obj runtime.Object) {} func NewTestGenericStoreRegistry(t *testing.T) (factory.DestroyFunc, *Store) { - return newTestGenericStoreRegistry(t, false) + return newTestGenericStoreRegistry(t, scheme, false) } func getPodAttrs(obj runtime.Object) (labels.Set, fields.Set, error) { - pod := obj.(*api.Pod) + pod := obj.(*example.Pod) return labels.Set{"name": pod.ObjectMeta.Name}, nil, nil } @@ -139,20 +149,20 @@ func matchEverything() storage.SelectionPredicate { } func TestStoreList(t *testing.T) { - podA := &api.Pod{ + podA := &example.Pod{ ObjectMeta: metav1.ObjectMeta{Namespace: "test", Name: "bar"}, - Spec: api.PodSpec{NodeName: "machine"}, + Spec: example.PodSpec{NodeName: "machine"}, } - podB := &api.Pod{ + podB := &example.Pod{ ObjectMeta: metav1.ObjectMeta{Namespace: "test", Name: "foo"}, - Spec: api.PodSpec{NodeName: "machine"}, + Spec: example.PodSpec{NodeName: "machine"}, } testContext := genericapirequest.WithNamespace(genericapirequest.NewContext(), "test") noNamespaceContext := genericapirequest.NewContext() table := map[string]struct { - in *api.PodList + in *example.PodList m storage.SelectionPredicate out runtime.Object context genericapirequest.Context @@ -160,28 +170,28 @@ func TestStoreList(t *testing.T) { "notFound": { in: nil, m: matchEverything(), - out: &api.PodList{Items: []api.Pod{}}, + out: &example.PodList{Items: []example.Pod{}}, }, "normal": { - in: &api.PodList{Items: []api.Pod{*podA, *podB}}, + in: &example.PodList{Items: []example.Pod{*podA, *podB}}, m: matchEverything(), - out: &api.PodList{Items: []api.Pod{*podA, *podB}}, + out: &example.PodList{Items: []example.Pod{*podA, *podB}}, }, "normalFiltered": { - in: &api.PodList{Items: []api.Pod{*podA, *podB}}, + in: &example.PodList{Items: []example.Pod{*podA, *podB}}, m: matchPodName("foo"), - out: &api.PodList{Items: []api.Pod{*podB}}, + out: &example.PodList{Items: []example.Pod{*podB}}, }, "normalFilteredNoNamespace": { - in: &api.PodList{Items: []api.Pod{*podA, *podB}}, + in: &example.PodList{Items: []example.Pod{*podA, *podB}}, m: matchPodName("foo"), - out: &api.PodList{Items: []api.Pod{*podB}}, + out: &example.PodList{Items: []example.Pod{*podB}}, context: noNamespaceContext, }, "normalFilteredMatchMultiple": { - in: &api.PodList{Items: []api.Pod{*podA, *podB}}, + in: &example.PodList{Items: []example.Pod{*podA, *podB}}, m: matchPodName("foo", "makeMatchSingleReturnFalse"), - out: &api.PodList{Items: []api.Pod{*podB}}, + out: &example.PodList{Items: []example.Pod{*podB}}, }, } @@ -215,17 +225,17 @@ func TestStoreList(t *testing.T) { // TestStoreListResourceVersion tests that if List with ResourceVersion > 0, it will wait until // the results are as fresh as given version. func TestStoreListResourceVersion(t *testing.T) { - fooPod := &api.Pod{ + fooPod := &example.Pod{ ObjectMeta: metav1.ObjectMeta{Namespace: "test", Name: "foo"}, - Spec: api.PodSpec{NodeName: "machine"}, + Spec: example.PodSpec{NodeName: "machine"}, } - barPod := &api.Pod{ + barPod := &example.Pod{ ObjectMeta: metav1.ObjectMeta{Namespace: "test", Name: "bar"}, - Spec: api.PodSpec{NodeName: "machine"}, + Spec: example.PodSpec{NodeName: "machine"}, } ctx := genericapirequest.WithNamespace(genericapirequest.NewContext(), "test") - destroyFunc, registry := newTestGenericStoreRegistry(t, true) + destroyFunc, registry := newTestGenericStoreRegistry(t, scheme, true) defer destroyFunc() obj, err := registry.Create(ctx, fooPod) @@ -269,7 +279,7 @@ func TestStoreListResourceVersion(t *testing.T) { if !ok { return } - pl := l.(*api.PodList).Items + pl := l.(*example.PodList).Items if len(pl) != 2 { t.Errorf("Expected get 2 items, but got %d", len(pl)) } @@ -278,20 +288,21 @@ func TestStoreListResourceVersion(t *testing.T) { func TestStoreCreate(t *testing.T) { gracefulPeriod := int64(50) - podA := &api.Pod{ + podA := &example.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: "test"}, - Spec: api.PodSpec{NodeName: "machine"}, + Spec: example.PodSpec{NodeName: "machine"}, } - podB := &api.Pod{ + podB := &example.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: "test"}, - Spec: api.PodSpec{NodeName: "machine2"}, + Spec: example.PodSpec{NodeName: "machine2"}, } testContext := genericapirequest.WithNamespace(genericapirequest.NewContext(), "test") destroyFunc, registry := NewTestGenericStoreRegistry(t) defer destroyFunc() // re-define delete strategy to have graceful delete capability - registry.DeleteStrategy = pod.Strategy + defaultDeleteStrategy := testRESTStrategy{scheme, names.SimpleNameGenerator, true, false, true} + registry.DeleteStrategy = testGracefulStrategy{defaultDeleteStrategy} // create the object objA, err := registry.Create(testContext, podA) @@ -342,8 +353,8 @@ func TestStoreCreate(t *testing.T) { } } -func updateAndVerify(t *testing.T, ctx genericapirequest.Context, registry *Store, pod *api.Pod) bool { - obj, _, err := registry.Update(ctx, pod.Name, rest.DefaultUpdatedObjectInfo(pod, api.Scheme)) +func updateAndVerify(t *testing.T, ctx genericapirequest.Context, registry *Store, pod *example.Pod) bool { + obj, _, err := registry.Update(ctx, pod.Name, rest.DefaultUpdatedObjectInfo(pod, scheme)) if err != nil { t.Errorf("Unexpected error: %v", err) return false @@ -361,17 +372,17 @@ func updateAndVerify(t *testing.T, ctx genericapirequest.Context, registry *Stor } func TestStoreUpdate(t *testing.T) { - podA := &api.Pod{ + podA := &example.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: "test"}, - Spec: api.PodSpec{NodeName: "machine"}, + Spec: example.PodSpec{NodeName: "machine"}, } - podB := &api.Pod{ + podB := &example.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: "test"}, - Spec: api.PodSpec{NodeName: "machine2"}, + Spec: example.PodSpec{NodeName: "machine2"}, } - podAWithResourceVersion := &api.Pod{ + podAWithResourceVersion := &example.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: "test", ResourceVersion: "7"}, - Spec: api.PodSpec{NodeName: "machine"}, + Spec: example.PodSpec{NodeName: "machine"}, } testContext := genericapirequest.WithNamespace(genericapirequest.NewContext(), "test") @@ -379,7 +390,7 @@ func TestStoreUpdate(t *testing.T) { defer destroyFunc() // Test1 try to update a non-existing node - _, _, err := registry.Update(testContext, podA.Name, rest.DefaultUpdatedObjectInfo(podA, api.Scheme)) + _, _, err := registry.Update(testContext, podA.Name, rest.DefaultUpdatedObjectInfo(podA, scheme)) if !errors.IsNotFound(err) { t.Errorf("Unexpected error: %v", err) } @@ -392,7 +403,7 @@ func TestStoreUpdate(t *testing.T) { registry.UpdateStrategy.(*testRESTStrategy).allowCreateOnUpdate = false // Test3 outofDate - _, _, err = registry.Update(testContext, podAWithResourceVersion.Name, rest.DefaultUpdatedObjectInfo(podAWithResourceVersion, api.Scheme)) + _, _, err = registry.Update(testContext, podAWithResourceVersion.Name, rest.DefaultUpdatedObjectInfo(podAWithResourceVersion, scheme)) if !errors.IsConflict(err) { t.Errorf("Unexpected error updating podAWithResourceVersion: %v", err) } @@ -416,14 +427,14 @@ func TestNoOpUpdates(t *testing.T) { destroyFunc, registry := NewTestGenericStoreRegistry(t) defer destroyFunc() - newPod := func() *api.Pod { - return &api.Pod{ + newPod := func() *example.Pod { + return &example.Pod{ ObjectMeta: metav1.ObjectMeta{ Namespace: metav1.NamespaceDefault, Name: "foo", Labels: map[string]string{"prepare_create": "true"}, }, - Spec: api.PodSpec{NodeName: "machine"}, + Spec: example.PodSpec{NodeName: "machine"}, } } @@ -440,7 +451,7 @@ func TestNoOpUpdates(t *testing.T) { var updateResult runtime.Object p := newPod() - if updateResult, _, err = registry.Update(genericapirequest.NewDefaultContext(), p.Name, rest.DefaultUpdatedObjectInfo(p, api.Scheme)); err != nil { + if updateResult, _, err = registry.Update(genericapirequest.NewDefaultContext(), p.Name, rest.DefaultUpdatedObjectInfo(p, scheme)); err != nil { t.Fatalf("Unexpected error: %v", err) } @@ -475,7 +486,7 @@ func TestNoOpUpdates(t *testing.T) { type testPodExport struct{} func (t testPodExport) Export(ctx genericapirequest.Context, obj runtime.Object, exact bool) error { - pod := obj.(*api.Pod) + pod := obj.(*example.Pod) if pod.Labels == nil { pod.Labels = map[string]string{} } @@ -486,13 +497,13 @@ func (t testPodExport) Export(ctx genericapirequest.Context, obj runtime.Object, } func TestStoreCustomExport(t *testing.T) { - podA := api.Pod{ + podA := example.Pod{ ObjectMeta: metav1.ObjectMeta{ Namespace: "test", Name: "foo", Labels: map[string]string{}, }, - Spec: api.PodSpec{NodeName: "machine"}, + Spec: example.PodSpec{NodeName: "machine"}, } destroyFunc, registry := NewTestGenericStoreRegistry(t) @@ -510,7 +521,7 @@ func TestStoreCustomExport(t *testing.T) { if err != nil { t.Errorf("unexpected error: %v", err) } - exportedPod := obj.(*api.Pod) + exportedPod := obj.(*example.Pod) if exportedPod.Labels["exported"] != "true" { t.Errorf("expected: exported->true, found: %s", exportedPod.Labels["exported"]) } @@ -531,14 +542,14 @@ func TestStoreCustomExport(t *testing.T) { } func TestStoreBasicExport(t *testing.T) { - podA := api.Pod{ + podA := example.Pod{ ObjectMeta: metav1.ObjectMeta{ Namespace: "test", Name: "foo", Labels: map[string]string{}, }, - Spec: api.PodSpec{NodeName: "machine"}, - Status: api.PodStatus{HostIP: "1.2.3.4"}, + Spec: example.PodSpec{NodeName: "machine"}, + Status: example.PodStatus{HostIP: "1.2.3.4"}, } destroyFunc, registry := NewTestGenericStoreRegistry(t) @@ -554,7 +565,7 @@ func TestStoreBasicExport(t *testing.T) { if err != nil { t.Errorf("unexpected error: %v", err) } - exportedPod := obj.(*api.Pod) + exportedPod := obj.(*example.Pod) if exportedPod.Labels["prepare_create"] != "true" { t.Errorf("expected: prepare_create->true, found: %s", exportedPod.Labels["prepare_create"]) } @@ -567,9 +578,9 @@ func TestStoreBasicExport(t *testing.T) { } func TestStoreGet(t *testing.T) { - podA := &api.Pod{ + podA := &example.Pod{ ObjectMeta: metav1.ObjectMeta{Namespace: "test", Name: "foo"}, - Spec: api.PodSpec{NodeName: "machine"}, + Spec: example.PodSpec{NodeName: "machine"}, } testContext := genericapirequest.WithNamespace(genericapirequest.NewContext(), "test") @@ -588,9 +599,9 @@ func TestStoreGet(t *testing.T) { } func TestStoreDelete(t *testing.T) { - podA := &api.Pod{ + podA := &example.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, - Spec: api.PodSpec{NodeName: "machine"}, + Spec: example.PodSpec{NodeName: "machine"}, } testContext := genericapirequest.WithNamespace(genericapirequest.NewContext(), "test") @@ -630,20 +641,20 @@ func TestGracefulStoreCanDeleteIfExistingGracePeriodZero(t *testing.T) { deletionTimestamp := metav1.NewTime(time.Now()) deletionGracePeriodSeconds := int64(0) initialGeneration := int64(1) - pod := &api.Pod{ + pod := &example.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", Generation: initialGeneration, DeletionGracePeriodSeconds: &deletionGracePeriodSeconds, DeletionTimestamp: &deletionTimestamp, }, - Spec: api.PodSpec{NodeName: "machine"}, + Spec: example.PodSpec{NodeName: "machine"}, } testContext := genericapirequest.WithNamespace(genericapirequest.NewContext(), "test") destroyFunc, registry := NewTestGenericStoreRegistry(t) registry.EnableGarbageCollection = false - defaultDeleteStrategy := testRESTStrategy{api.Scheme, names.SimpleNameGenerator, true, false, true} + defaultDeleteStrategy := testRESTStrategy{scheme, names.SimpleNameGenerator, true, false, true} registry.DeleteStrategy = testGracefulStrategy{defaultDeleteStrategy} defer destroyFunc() @@ -661,15 +672,15 @@ func TestGracefulStoreCanDeleteIfExistingGracePeriodZero(t *testing.T) { func TestGracefulStoreHandleFinalizers(t *testing.T) { initialGeneration := int64(1) - podWithFinalizer := &api.Pod{ + podWithFinalizer := &example.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo", Finalizers: []string{"foo.com/x"}, Generation: initialGeneration}, - Spec: api.PodSpec{NodeName: "machine"}, + Spec: example.PodSpec{NodeName: "machine"}, } testContext := genericapirequest.WithNamespace(genericapirequest.NewContext(), "test") destroyFunc, registry := NewTestGenericStoreRegistry(t) registry.EnableGarbageCollection = true - defaultDeleteStrategy := testRESTStrategy{api.Scheme, names.SimpleNameGenerator, true, false, true} + defaultDeleteStrategy := testRESTStrategy{scheme, names.SimpleNameGenerator, true, false, true} registry.DeleteStrategy = testGracefulStrategy{defaultDeleteStrategy} defer destroyFunc() // create pod @@ -688,11 +699,11 @@ func TestGracefulStoreHandleFinalizers(t *testing.T) { t.Fatalf("Unexpected error: %v", err) } - updatedPodWithFinalizer := &api.Pod{ + updatedPodWithFinalizer := &example.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo", Finalizers: []string{"foo.com/x"}, ResourceVersion: podWithFinalizer.ObjectMeta.ResourceVersion}, - Spec: api.PodSpec{NodeName: "machine"}, + Spec: example.PodSpec{NodeName: "machine"}, } - _, _, err = registry.Update(testContext, updatedPodWithFinalizer.ObjectMeta.Name, rest.DefaultUpdatedObjectInfo(updatedPodWithFinalizer, api.Scheme)) + _, _, err = registry.Update(testContext, updatedPodWithFinalizer.ObjectMeta.Name, rest.DefaultUpdatedObjectInfo(updatedPodWithFinalizer, scheme)) if err != nil { t.Fatalf("Unexpected error: %v", err) } @@ -703,11 +714,11 @@ func TestGracefulStoreHandleFinalizers(t *testing.T) { t.Fatalf("Unexpected error: %v", err) } - podWithNoFinalizer := &api.Pod{ + podWithNoFinalizer := &example.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo", ResourceVersion: podWithFinalizer.ObjectMeta.ResourceVersion}, - Spec: api.PodSpec{NodeName: "anothermachine"}, + Spec: example.PodSpec{NodeName: "anothermachine"}, } - _, _, err = registry.Update(testContext, podWithFinalizer.ObjectMeta.Name, rest.DefaultUpdatedObjectInfo(podWithNoFinalizer, api.Scheme)) + _, _, err = registry.Update(testContext, podWithFinalizer.ObjectMeta.Name, rest.DefaultUpdatedObjectInfo(podWithNoFinalizer, scheme)) if err != nil { t.Fatalf("Unexpected error: %v", err) } @@ -720,9 +731,9 @@ func TestGracefulStoreHandleFinalizers(t *testing.T) { func TestNonGracefulStoreHandleFinalizers(t *testing.T) { initialGeneration := int64(1) - podWithFinalizer := &api.Pod{ + podWithFinalizer := &example.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo", Finalizers: []string{"foo.com/x"}, Generation: initialGeneration}, - Spec: api.PodSpec{NodeName: "machine"}, + Spec: example.PodSpec{NodeName: "machine"}, } testContext := genericapirequest.WithNamespace(genericapirequest.NewContext(), "test") @@ -746,7 +757,7 @@ func TestNonGracefulStoreHandleFinalizers(t *testing.T) { if err != nil { t.Errorf("Unexpected error: %v", err) } - podWithFinalizer, ok := obj.(*api.Pod) + podWithFinalizer, ok := obj.(*example.Pod) if !ok { t.Errorf("Unexpected object: %#v", obj) } @@ -760,11 +771,11 @@ func TestNonGracefulStoreHandleFinalizers(t *testing.T) { t.Errorf("Deletion didn't increase Generation.") } - updatedPodWithFinalizer := &api.Pod{ + updatedPodWithFinalizer := &example.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo", Finalizers: []string{"foo.com/x"}, ResourceVersion: podWithFinalizer.ObjectMeta.ResourceVersion}, - Spec: api.PodSpec{NodeName: "machine"}, + Spec: example.PodSpec{NodeName: "machine"}, } - _, _, err = registry.Update(testContext, updatedPodWithFinalizer.ObjectMeta.Name, rest.DefaultUpdatedObjectInfo(updatedPodWithFinalizer, api.Scheme)) + _, _, err = registry.Update(testContext, updatedPodWithFinalizer.ObjectMeta.Name, rest.DefaultUpdatedObjectInfo(updatedPodWithFinalizer, scheme)) if err != nil { t.Errorf("Unexpected error: %v", err) } @@ -774,16 +785,16 @@ func TestNonGracefulStoreHandleFinalizers(t *testing.T) { if err != nil { t.Errorf("Unexpected error: %v", err) } - podWithFinalizer, ok = obj.(*api.Pod) + podWithFinalizer, ok = obj.(*example.Pod) if !ok { t.Errorf("Unexpected object: %#v", obj) } - podWithNoFinalizer := &api.Pod{ + podWithNoFinalizer := &example.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo", ResourceVersion: podWithFinalizer.ObjectMeta.ResourceVersion}, - Spec: api.PodSpec{NodeName: "anothermachine"}, + Spec: example.PodSpec{NodeName: "anothermachine"}, } - _, _, err = registry.Update(testContext, podWithFinalizer.ObjectMeta.Name, rest.DefaultUpdatedObjectInfo(podWithNoFinalizer, api.Scheme)) + _, _, err = registry.Update(testContext, podWithFinalizer.ObjectMeta.Name, rest.DefaultUpdatedObjectInfo(podWithNoFinalizer, scheme)) if err != nil { t.Errorf("Unexpected error: %v", err) } @@ -796,28 +807,28 @@ func TestNonGracefulStoreHandleFinalizers(t *testing.T) { func TestStoreDeleteWithOrphanDependents(t *testing.T) { initialGeneration := int64(1) - podWithOrphanFinalizer := func(name string) *api.Pod { - return &api.Pod{ - ObjectMeta: metav1.ObjectMeta{Name: name, Finalizers: []string{"foo.com/x", api.FinalizerOrphan, "bar.com/y"}, Generation: initialGeneration}, - Spec: api.PodSpec{NodeName: "machine"}, + podWithOrphanFinalizer := func(name string) *example.Pod { + return &example.Pod{ + ObjectMeta: metav1.ObjectMeta{Name: name, Finalizers: []string{"foo.com/x", metav1.FinalizerOrphan, "bar.com/y"}, Generation: initialGeneration}, + Spec: example.PodSpec{NodeName: "machine"}, } } - podWithOtherFinalizers := func(name string) *api.Pod { - return &api.Pod{ + podWithOtherFinalizers := func(name string) *example.Pod { + return &example.Pod{ ObjectMeta: metav1.ObjectMeta{Name: name, Finalizers: []string{"foo.com/x", "bar.com/y"}, Generation: initialGeneration}, - Spec: api.PodSpec{NodeName: "machine"}, + Spec: example.PodSpec{NodeName: "machine"}, } } - podWithNoFinalizer := func(name string) *api.Pod { - return &api.Pod{ + podWithNoFinalizer := func(name string) *example.Pod { + return &example.Pod{ ObjectMeta: metav1.ObjectMeta{Name: name, Generation: initialGeneration}, - Spec: api.PodSpec{NodeName: "machine"}, + Spec: example.PodSpec{NodeName: "machine"}, } } - podWithOnlyOrphanFinalizer := func(name string) *api.Pod { - return &api.Pod{ - ObjectMeta: metav1.ObjectMeta{Name: name, Finalizers: []string{api.FinalizerOrphan}, Generation: initialGeneration}, - Spec: api.PodSpec{NodeName: "machine"}, + podWithOnlyOrphanFinalizer := func(name string) *example.Pod { + return &example.Pod{ + ObjectMeta: metav1.ObjectMeta{Name: name, Finalizers: []string{metav1.FinalizerOrphan}, Generation: initialGeneration}, + Spec: example.PodSpec{NodeName: "machine"}, } } trueVar, falseVar := true, false @@ -826,13 +837,13 @@ func TestStoreDeleteWithOrphanDependents(t *testing.T) { nilOrphanOptions := &metav1.DeleteOptions{} // defaultDeleteStrategy doesn't implement rest.GarbageCollectionDeleteStrategy. - defaultDeleteStrategy := &testRESTStrategy{api.Scheme, names.SimpleNameGenerator, true, false, true} + defaultDeleteStrategy := &testRESTStrategy{scheme, names.SimpleNameGenerator, true, false, true} // orphanDeleteStrategy indicates the default garbage collection policy is // to orphan dependentes. orphanDeleteStrategy := &testOrphanDeleteStrategy{defaultDeleteStrategy} testcases := []struct { - pod *api.Pod + pod *example.Pod options *metav1.DeleteOptions strategy rest.RESTDeleteStrategy expectNotFound bool @@ -844,28 +855,28 @@ func TestStoreDeleteWithOrphanDependents(t *testing.T) { orphanOptions, defaultDeleteStrategy, false, - []string{"foo.com/x", api.FinalizerOrphan, "bar.com/y"}, + []string{"foo.com/x", metav1.FinalizerOrphan, "bar.com/y"}, }, { podWithOtherFinalizers("pod2"), orphanOptions, defaultDeleteStrategy, false, - []string{"foo.com/x", "bar.com/y", api.FinalizerOrphan}, + []string{"foo.com/x", "bar.com/y", metav1.FinalizerOrphan}, }, { podWithNoFinalizer("pod3"), orphanOptions, defaultDeleteStrategy, false, - []string{api.FinalizerOrphan}, + []string{metav1.FinalizerOrphan}, }, { podWithOnlyOrphanFinalizer("pod4"), orphanOptions, defaultDeleteStrategy, false, - []string{api.FinalizerOrphan}, + []string{metav1.FinalizerOrphan}, }, // cases run with DeleteOptions.OrphanDedependents=false // these cases all have oprhanDeleteStrategy, which should be ignored @@ -907,14 +918,14 @@ func TestStoreDeleteWithOrphanDependents(t *testing.T) { nilOrphanOptions, defaultDeleteStrategy, false, - []string{"foo.com/x", api.FinalizerOrphan, "bar.com/y"}, + []string{"foo.com/x", metav1.FinalizerOrphan, "bar.com/y"}, }, { podWithOrphanFinalizer("pod10"), nilOrphanOptions, orphanDeleteStrategy, false, - []string{"foo.com/x", api.FinalizerOrphan, "bar.com/y"}, + []string{"foo.com/x", metav1.FinalizerOrphan, "bar.com/y"}, }, { podWithOtherFinalizers("pod11"), @@ -928,7 +939,7 @@ func TestStoreDeleteWithOrphanDependents(t *testing.T) { nilOrphanOptions, orphanDeleteStrategy, false, - []string{"foo.com/x", "bar.com/y", api.FinalizerOrphan}, + []string{"foo.com/x", "bar.com/y", metav1.FinalizerOrphan}, }, { podWithNoFinalizer("pod13"), @@ -942,21 +953,21 @@ func TestStoreDeleteWithOrphanDependents(t *testing.T) { nilOrphanOptions, orphanDeleteStrategy, false, - []string{api.FinalizerOrphan}, + []string{metav1.FinalizerOrphan}, }, { podWithOnlyOrphanFinalizer("pod15"), nilOrphanOptions, defaultDeleteStrategy, false, - []string{api.FinalizerOrphan}, + []string{metav1.FinalizerOrphan}, }, { podWithOnlyOrphanFinalizer("pod16"), nilOrphanOptions, orphanDeleteStrategy, false, - []string{api.FinalizerOrphan}, + []string{metav1.FinalizerOrphan}, }, // cases run with nil DeleteOptions should have exact same behavior. @@ -967,14 +978,14 @@ func TestStoreDeleteWithOrphanDependents(t *testing.T) { nil, defaultDeleteStrategy, false, - []string{"foo.com/x", api.FinalizerOrphan, "bar.com/y"}, + []string{"foo.com/x", metav1.FinalizerOrphan, "bar.com/y"}, }, { podWithOrphanFinalizer("pod18"), nil, orphanDeleteStrategy, false, - []string{"foo.com/x", api.FinalizerOrphan, "bar.com/y"}, + []string{"foo.com/x", metav1.FinalizerOrphan, "bar.com/y"}, }, { podWithOtherFinalizers("pod19"), @@ -988,7 +999,7 @@ func TestStoreDeleteWithOrphanDependents(t *testing.T) { nil, orphanDeleteStrategy, false, - []string{"foo.com/x", "bar.com/y", api.FinalizerOrphan}, + []string{"foo.com/x", "bar.com/y", metav1.FinalizerOrphan}, }, { podWithNoFinalizer("pod21"), @@ -1002,21 +1013,21 @@ func TestStoreDeleteWithOrphanDependents(t *testing.T) { nil, orphanDeleteStrategy, false, - []string{api.FinalizerOrphan}, + []string{metav1.FinalizerOrphan}, }, { podWithOnlyOrphanFinalizer("pod23"), nil, defaultDeleteStrategy, false, - []string{api.FinalizerOrphan}, + []string{metav1.FinalizerOrphan}, }, { podWithOnlyOrphanFinalizer("pod24"), nil, orphanDeleteStrategy, false, - []string{api.FinalizerOrphan}, + []string{metav1.FinalizerOrphan}, }, } @@ -1044,7 +1055,7 @@ func TestStoreDeleteWithOrphanDependents(t *testing.T) { t.Fatalf("Unexpected error: %v", err) } if !tc.expectNotFound { - pod, ok := obj.(*api.Pod) + pod, ok := obj.(*example.Pod) if !ok { t.Fatalf("Expect the object to be a pod, but got %#v", obj) } @@ -1065,8 +1076,8 @@ func TestStoreDeleteWithOrphanDependents(t *testing.T) { } func TestStoreDeleteCollection(t *testing.T) { - podA := &api.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}} - podB := &api.Pod{ObjectMeta: metav1.ObjectMeta{Name: "bar"}} + podA := &example.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}} + podB := &example.Pod{ObjectMeta: metav1.ObjectMeta{Name: "bar"}} testContext := genericapirequest.WithNamespace(genericapirequest.NewContext(), "test") destroyFunc, registry := NewTestGenericStoreRegistry(t) @@ -1084,7 +1095,7 @@ func TestStoreDeleteCollection(t *testing.T) { if err != nil { t.Fatalf("Unexpected error: %v", err) } - deletedPods := deleted.(*api.PodList) + deletedPods := deleted.(*example.PodList) if len(deletedPods.Items) != 2 { t.Errorf("Unexpected number of pods deleted: %d, expected: 2", len(deletedPods.Items)) } @@ -1103,8 +1114,8 @@ func TestStoreDeleteCollectionNotFound(t *testing.T) { testContext := genericapirequest.WithNamespace(genericapirequest.NewContext(), "test") - podA := &api.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}} - podB := &api.Pod{ObjectMeta: metav1.ObjectMeta{Name: "bar"}} + podA := &example.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}} + podB := &example.Pod{ObjectMeta: metav1.ObjectMeta{Name: "bar"}} for i := 0; i < 10; i++ { // Setup @@ -1141,7 +1152,7 @@ func TestStoreDeleteCollectionNotFound(t *testing.T) { // Test whether objects deleted with DeleteCollection are correctly delivered // to watchers. func TestStoreDeleteCollectionWithWatch(t *testing.T) { - podA := &api.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}} + podA := &example.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}} testContext := genericapirequest.WithNamespace(genericapirequest.NewContext(), "test") destroyFunc, registry := NewTestGenericStoreRegistry(t) @@ -1151,7 +1162,7 @@ func TestStoreDeleteCollectionWithWatch(t *testing.T) { if err != nil { t.Fatalf("Unexpected error: %v", err) } - podCreated := objCreated.(*api.Pod) + podCreated := objCreated.(*example.Pod) watcher, err := registry.WatchPredicate(testContext, matchPodName("foo"), podCreated.ResourceVersion) if err != nil { @@ -1170,7 +1181,7 @@ func TestStoreDeleteCollectionWithWatch(t *testing.T) { if got.Type != "DELETED" { t.Errorf("Unexpected event type: %s", got.Type) } - gotObject := got.Object.(*api.Pod) + gotObject := got.Object.(*example.Pod) gotObject.ResourceVersion = podCreated.ResourceVersion if e, a := podCreated, gotObject; !reflect.DeepEqual(e, a) { t.Errorf("Expected: %#v, got: %#v", e, a) @@ -1203,12 +1214,12 @@ func TestStoreWatch(t *testing.T) { if m.context != nil { ctx = m.context } - podA := &api.Pod{ + podA := &example.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: "test", }, - Spec: api.PodSpec{NodeName: "machine"}, + Spec: example.PodSpec{NodeName: "machine"}, } destroyFunc, registry := NewTestGenericStoreRegistry(t) @@ -1233,12 +1244,12 @@ func TestStoreWatch(t *testing.T) { } } -func newTestGenericStoreRegistry(t *testing.T, hasCacheEnabled bool) (factory.DestroyFunc, *Store) { +func newTestGenericStoreRegistry(t *testing.T, scheme *runtime.Scheme, hasCacheEnabled bool) (factory.DestroyFunc, *Store) { podPrefix := "/pods" - server, sc := etcdtesting.NewUnsecuredEtcd3TestClientServer(t, api.Scheme) - strategy := &testRESTStrategy{api.Scheme, names.SimpleNameGenerator, true, false, true} + server, sc := etcdtesting.NewUnsecuredEtcd3TestClientServer(t, scheme) + strategy := &testRESTStrategy{scheme, names.SimpleNameGenerator, true, false, true} - sc.Codec = testapi.Default.StorageCodec() + sc.Codec = apitesting.TestStorageCodec(codecs, examplev1.SchemeGroupVersion) s, dFunc, err := factory.Create(*sc) if err != nil { t.Fatalf("Error creating storage: %v", err) @@ -1252,12 +1263,12 @@ func newTestGenericStoreRegistry(t *testing.T, hasCacheEnabled bool) (factory.De CacheCapacity: 10, Storage: s, Versioner: etcdstorage.APIObjectVersioner{}, - Copier: api.Scheme, - Type: &api.Pod{}, + Copier: scheme, + Type: &example.Pod{}, ResourcePrefix: podPrefix, KeyFunc: func(obj runtime.Object) (string, error) { return storage.NoNamespaceKeyFunc(podPrefix, obj) }, GetAttrsFunc: getPodAttrs, - NewListFunc: func() runtime.Object { return &api.PodList{} }, + NewListFunc: func() runtime.Object { return &example.PodList{} }, Codec: sc.Codec, } cacher := storage.NewCacherFromConfig(config) @@ -1270,10 +1281,10 @@ func newTestGenericStoreRegistry(t *testing.T, hasCacheEnabled bool) (factory.De } return destroyFunc, &Store{ - Copier: api.Scheme, - NewFunc: func() runtime.Object { return &api.Pod{} }, - NewListFunc: func() runtime.Object { return &api.PodList{} }, - QualifiedResource: api.Resource("pods"), + Copier: scheme, + NewFunc: func() runtime.Object { return &example.Pod{} }, + NewListFunc: func() runtime.Object { return &example.PodList{} }, + QualifiedResource: example.Resource("pods"), CreateStrategy: strategy, UpdateStrategy: strategy, DeleteStrategy: strategy, @@ -1286,13 +1297,13 @@ func newTestGenericStoreRegistry(t *testing.T, hasCacheEnabled bool) (factory.De } return path.Join(podPrefix, id), nil }, - ObjectNameFunc: func(obj runtime.Object) (string, error) { return obj.(*api.Pod).Name, nil }, + ObjectNameFunc: func(obj runtime.Object) (string, error) { return obj.(*example.Pod).Name, nil }, PredicateFunc: func(label labels.Selector, field fields.Selector) storage.SelectionPredicate { return storage.SelectionPredicate{ Label: label, Field: field, GetAttrs: func(obj runtime.Object) (labels.Set, fields.Set, error) { - pod, ok := obj.(*api.Pod) + pod, ok := obj.(*example.Pod) if !ok { return nil, nil, fmt.Errorf("not a pod") } diff --git a/pkg/genericapiserver/server/BUILD b/pkg/genericapiserver/server/BUILD index d570d7347a3..ba96422846b 100644 --- a/pkg/genericapiserver/server/BUILD +++ b/pkg/genericapiserver/server/BUILD @@ -19,9 +19,6 @@ go_test( library = ":go_default_library", tags = ["automanaged"], deps = [ - "//pkg/api:go_default_library", - "//pkg/api/testapi:go_default_library", - "//pkg/apis/extensions:go_default_library", "//pkg/client/clientset_generated/clientset:go_default_library", "//pkg/generated/openapi:go_default_library", "//pkg/genericapiserver/registry/rest:go_default_library", @@ -30,6 +27,8 @@ go_test( "//vendor:github.com/stretchr/testify/assert", "//vendor:k8s.io/apimachinery/pkg/api/meta", "//vendor:k8s.io/apimachinery/pkg/apimachinery", + "//vendor:k8s.io/apimachinery/pkg/apimachinery/announced", + "//vendor:k8s.io/apimachinery/pkg/apimachinery/registered", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", "//vendor:k8s.io/apimachinery/pkg/runtime", "//vendor:k8s.io/apimachinery/pkg/runtime/schema", @@ -37,12 +36,16 @@ go_test( "//vendor:k8s.io/apimachinery/pkg/util/net", "//vendor:k8s.io/apimachinery/pkg/util/sets", "//vendor:k8s.io/apimachinery/pkg/version", + "//vendor:k8s.io/apiserver/pkg/apis/example", + "//vendor:k8s.io/apiserver/pkg/apis/example/install", + "//vendor:k8s.io/apiserver/pkg/apis/example/v1", "//vendor:k8s.io/apiserver/pkg/authentication/user", "//vendor:k8s.io/apiserver/pkg/authorization/authorizer", "//vendor:k8s.io/apiserver/pkg/endpoints/request", "//vendor:k8s.io/apiserver/pkg/server/options", "//vendor:k8s.io/apiserver/pkg/storage/storagebackend", "//vendor:k8s.io/apiserver/pkg/util/flag", + "//vendor:k8s.io/client-go/pkg/api", "//vendor:k8s.io/client-go/util/cert", ], ) @@ -64,7 +67,6 @@ go_library( ], tags = ["automanaged"], deps = [ - "//pkg/api:go_default_library", "//pkg/genericapiserver/endpoints:go_default_library", "//pkg/genericapiserver/endpoints/filters:go_default_library", "//pkg/genericapiserver/endpoints/openapi:go_default_library", @@ -80,10 +82,12 @@ go_library( "//vendor:github.com/pkg/errors", "//vendor:gopkg.in/natefinch/lumberjack.v2", "//vendor:k8s.io/apimachinery/pkg/apimachinery", + "//vendor:k8s.io/apimachinery/pkg/apimachinery/registered", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", "//vendor:k8s.io/apimachinery/pkg/openapi", "//vendor:k8s.io/apimachinery/pkg/runtime", "//vendor:k8s.io/apimachinery/pkg/runtime/schema", + "//vendor:k8s.io/apimachinery/pkg/runtime/serializer", "//vendor:k8s.io/apimachinery/pkg/runtime/serializer/recognizer", "//vendor:k8s.io/apimachinery/pkg/util/net", "//vendor:k8s.io/apimachinery/pkg/util/runtime", diff --git a/pkg/genericapiserver/server/config.go b/pkg/genericapiserver/server/config.go index ad1289e744c..741288507d5 100644 --- a/pkg/genericapiserver/server/config.go +++ b/pkg/genericapiserver/server/config.go @@ -39,6 +39,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" openapicommon "k8s.io/apimachinery/pkg/openapi" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/serializer" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/version" "k8s.io/apiserver/pkg/admission" @@ -55,7 +56,6 @@ import ( "k8s.io/apiserver/pkg/server/options" restclient "k8s.io/client-go/rest" certutil "k8s.io/client-go/util/cert" - "k8s.io/kubernetes/pkg/api" genericapifilters "k8s.io/kubernetes/pkg/genericapiserver/endpoints/filters" apiopenapi "k8s.io/kubernetes/pkg/genericapiserver/endpoints/openapi" "k8s.io/kubernetes/pkg/genericapiserver/server/mux" @@ -192,7 +192,6 @@ type SecureServingInfo struct { // NewConfig returns a Config struct with the default values func NewConfig() *Config { config := &Config{ - Serializer: api.Codecs, ReadWritePort: 6443, RequestContextMapper: apirequest.NewRequestContextMapper(), BuildHandlerChainsFunc: DefaultBuildHandlerChain, @@ -213,8 +212,13 @@ func NewConfig() *Config { return config.ApplyOptions(defaultOptions) } -func DefaultOpenAPIConfig(getDefinitions openapicommon.GetOpenAPIDefinitions) *openapicommon.Config { - defNamer := apiopenapi.NewDefinitionNamer(api.Scheme) +func (c *Config) WithSerializer(codecs serializer.CodecFactory) *Config { + c.Serializer = codecs + return c +} + +func DefaultOpenAPIConfig(getDefinitions openapicommon.GetOpenAPIDefinitions, scheme *runtime.Scheme) *openapicommon.Config { + defNamer := apiopenapi.NewDefinitionNamer(scheme) return &openapicommon.Config{ ProtocolList: []string{"https"}, IgnorePrefixes: []string{"/swaggerapi"}, diff --git a/pkg/genericapiserver/server/genericapiserver.go b/pkg/genericapiserver/server/genericapiserver.go index a2edf94d9db..b2458e2d959 100644 --- a/pkg/genericapiserver/server/genericapiserver.go +++ b/pkg/genericapiserver/server/genericapiserver.go @@ -31,17 +31,18 @@ import ( "github.com/golang/glog" "k8s.io/apimachinery/pkg/apimachinery" + "k8s.io/apimachinery/pkg/apimachinery/registered" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" openapicommon "k8s.io/apimachinery/pkg/openapi" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/runtime/serializer" utilnet "k8s.io/apimachinery/pkg/util/net" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apiserver/pkg/admission" apirequest "k8s.io/apiserver/pkg/endpoints/request" "k8s.io/apiserver/pkg/server/healthz" restclient "k8s.io/client-go/rest" - "k8s.io/kubernetes/pkg/api" genericapi "k8s.io/kubernetes/pkg/genericapiserver/endpoints" "k8s.io/kubernetes/pkg/genericapiserver/registry/rest" genericmux "k8s.io/kubernetes/pkg/genericapiserver/server/mux" @@ -376,15 +377,15 @@ func (s *GenericAPIServer) DynamicApisDiscovery() *restful.WebService { // NewDefaultAPIGroupInfo returns an APIGroupInfo stubbed with "normal" values // exposed for easier composition from other packages -func NewDefaultAPIGroupInfo(group string) APIGroupInfo { - groupMeta := api.Registry.GroupOrDie(group) +func NewDefaultAPIGroupInfo(group string, registry *registered.APIRegistrationManager, scheme *runtime.Scheme, parameterCodec runtime.ParameterCodec, codecs serializer.CodecFactory) APIGroupInfo { + groupMeta := registry.GroupOrDie(group) return APIGroupInfo{ GroupMeta: *groupMeta, VersionedResourcesStorageMap: map[string]map[string]rest.Storage{}, - OptionsExternalVersion: &api.Registry.GroupOrDie(api.GroupName).GroupVersion, - Scheme: api.Scheme, - ParameterCodec: api.ParameterCodec, - NegotiatedSerializer: api.Codecs, + OptionsExternalVersion: ®istry.GroupOrDie("").GroupVersion, + Scheme: scheme, + ParameterCodec: parameterCodec, + NegotiatedSerializer: codecs, } } diff --git a/pkg/genericapiserver/server/genericapiserver_test.go b/pkg/genericapiserver/server/genericapiserver_test.go index d3a1d343020..7a311b49eb2 100644 --- a/pkg/genericapiserver/server/genericapiserver_test.go +++ b/pkg/genericapiserver/server/genericapiserver_test.go @@ -41,10 +41,12 @@ import ( utilnet "k8s.io/apimachinery/pkg/util/net" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/version" + "k8s.io/apiserver/pkg/apis/example" + examplev1 "k8s.io/apiserver/pkg/apis/example/v1" "k8s.io/apiserver/pkg/authentication/user" "k8s.io/apiserver/pkg/authorization/authorizer" genericapirequest "k8s.io/apiserver/pkg/endpoints/request" - "k8s.io/kubernetes/pkg/api/testapi" + "k8s.io/client-go/pkg/api" openapigen "k8s.io/kubernetes/pkg/generated/openapi" "k8s.io/kubernetes/pkg/genericapiserver/registry/rest" etcdtesting "k8s.io/kubernetes/pkg/storage/etcd/testing" @@ -71,18 +73,20 @@ func init() { &metav1.APIGroup{}, &metav1.APIResourceList{}, ) + example.AddToScheme(scheme) + examplev1.AddToScheme(scheme) } // setUp is a convience function for setting up for (most) tests. func setUp(t *testing.T) (*etcdtesting.EtcdTestServer, Config, *assert.Assertions) { etcdServer, _ := etcdtesting.NewUnsecuredEtcd3TestClientServer(t, scheme) - config := NewConfig() + config := NewConfig().WithSerializer(codecs) config.PublicAddress = net.ParseIP("192.168.10.4") config.RequestContextMapper = genericapirequest.NewRequestContextMapper() config.LegacyAPIGroupPrefixes = sets.NewString("/api") - config.OpenAPIConfig = DefaultOpenAPIConfig(openapigen.GetOpenAPIDefinitions) + config.OpenAPIConfig = DefaultOpenAPIConfig(openapigen.GetOpenAPIDefinitions, api.Scheme) config.OpenAPIConfig.Info = &spec.Info{ InfoProps: spec.InfoProps{ Title: "Kubernetes", @@ -483,8 +487,8 @@ func TestDiscoveryAtAPIS(t *testing.T) { // Add a Group. extensionsVersions := []metav1.GroupVersionForDiscovery{ { - GroupVersion: testapi.Extensions.GroupVersion().String(), - Version: testapi.Extensions.GroupVersion().Version, + GroupVersion: examplev1.SchemeGroupVersion.String(), + Version: examplev1.SchemeGroupVersion.Version, }, } extensionsPreferredVersion := metav1.GroupVersionForDiscovery{ diff --git a/pkg/genericapiserver/server/resource_encoding_config.go b/pkg/genericapiserver/server/resource_encoding_config.go index 9fd18895128..f00ca91e52f 100644 --- a/pkg/genericapiserver/server/resource_encoding_config.go +++ b/pkg/genericapiserver/server/resource_encoding_config.go @@ -17,9 +17,9 @@ limitations under the License. package server import ( + "k8s.io/apimachinery/pkg/apimachinery/registered" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" - "k8s.io/kubernetes/pkg/api" ) type ResourceEncodingConfig interface { @@ -33,7 +33,8 @@ type ResourceEncodingConfig interface { } type DefaultResourceEncodingConfig struct { - Groups map[string]*GroupResourceEncodingConfig + groups map[string]*GroupResourceEncodingConfig + registry *registered.APIRegistrationManager } type GroupResourceEncodingConfig struct { @@ -46,8 +47,8 @@ type GroupResourceEncodingConfig struct { var _ ResourceEncodingConfig = &DefaultResourceEncodingConfig{} -func NewDefaultResourceEncodingConfig() *DefaultResourceEncodingConfig { - return &DefaultResourceEncodingConfig{Groups: map[string]*GroupResourceEncodingConfig{}} +func NewDefaultResourceEncodingConfig(registry *registered.APIRegistrationManager) *DefaultResourceEncodingConfig { + return &DefaultResourceEncodingConfig{groups: map[string]*GroupResourceEncodingConfig{}, registry: registry} } func newGroupResourceEncodingConfig(defaultEncoding, defaultInternalVersion schema.GroupVersion) *GroupResourceEncodingConfig { @@ -58,33 +59,33 @@ func newGroupResourceEncodingConfig(defaultEncoding, defaultInternalVersion sche } func (o *DefaultResourceEncodingConfig) SetVersionEncoding(group string, externalEncodingVersion, internalVersion schema.GroupVersion) { - _, groupExists := o.Groups[group] + _, groupExists := o.groups[group] if !groupExists { - o.Groups[group] = newGroupResourceEncodingConfig(externalEncodingVersion, internalVersion) + o.groups[group] = newGroupResourceEncodingConfig(externalEncodingVersion, internalVersion) } - o.Groups[group].DefaultExternalEncoding = externalEncodingVersion - o.Groups[group].DefaultInternalEncoding = internalVersion + o.groups[group].DefaultExternalEncoding = externalEncodingVersion + o.groups[group].DefaultInternalEncoding = internalVersion } func (o *DefaultResourceEncodingConfig) SetResourceEncoding(resourceBeingStored schema.GroupResource, externalEncodingVersion, internalVersion schema.GroupVersion) { group := resourceBeingStored.Group - _, groupExists := o.Groups[group] + _, groupExists := o.groups[group] if !groupExists { - o.Groups[group] = newGroupResourceEncodingConfig(externalEncodingVersion, internalVersion) + o.groups[group] = newGroupResourceEncodingConfig(externalEncodingVersion, internalVersion) } - o.Groups[group].ExternalResourceEncodings[resourceBeingStored.Resource] = externalEncodingVersion - o.Groups[group].InternalResourceEncodings[resourceBeingStored.Resource] = internalVersion + o.groups[group].ExternalResourceEncodings[resourceBeingStored.Resource] = externalEncodingVersion + o.groups[group].InternalResourceEncodings[resourceBeingStored.Resource] = internalVersion } func (o *DefaultResourceEncodingConfig) StorageEncodingFor(resource schema.GroupResource) (schema.GroupVersion, error) { - groupMeta, err := api.Registry.Group(resource.Group) + groupMeta, err := o.registry.Group(resource.Group) if err != nil { return schema.GroupVersion{}, err } - groupEncoding, groupExists := o.Groups[resource.Group] + groupEncoding, groupExists := o.groups[resource.Group] if !groupExists { // return the most preferred external version for the group @@ -100,11 +101,11 @@ func (o *DefaultResourceEncodingConfig) StorageEncodingFor(resource schema.Group } func (o *DefaultResourceEncodingConfig) InMemoryEncodingFor(resource schema.GroupResource) (schema.GroupVersion, error) { - if _, err := api.Registry.Group(resource.Group); err != nil { + if _, err := o.registry.Group(resource.Group); err != nil { return schema.GroupVersion{}, err } - groupEncoding, groupExists := o.Groups[resource.Group] + groupEncoding, groupExists := o.groups[resource.Group] if !groupExists { return schema.GroupVersion{Group: resource.Group, Version: runtime.APIVersionInternal}, nil } diff --git a/pkg/genericapiserver/server/storage_factory_test.go b/pkg/genericapiserver/server/storage_factory_test.go index d4fa24e3223..c7dd0159e43 100644 --- a/pkg/genericapiserver/server/storage_factory_test.go +++ b/pkg/genericapiserver/server/storage_factory_test.go @@ -17,17 +17,30 @@ limitations under the License. package server import ( + "os" "reflect" "testing" + "k8s.io/apimachinery/pkg/apimachinery/announced" + "k8s.io/apimachinery/pkg/apimachinery/registered" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apiserver/pkg/apis/example" + exampleinstall "k8s.io/apiserver/pkg/apis/example/install" + examplev1 "k8s.io/apiserver/pkg/apis/example/v1" "k8s.io/apiserver/pkg/server/options" "k8s.io/apiserver/pkg/storage/storagebackend" - "k8s.io/kubernetes/pkg/api" - "k8s.io/kubernetes/pkg/apis/extensions" ) +var ( + registry = registered.NewOrDie(os.Getenv("KUBE_API_VERSIONS")) + announce = make(announced.APIGroupFactoryRegistry) +) + +func init() { + exampleinstall.Install(announce, registry, scheme) +} + type fakeNegotiater struct { serializer, streamSerializer runtime.Serializer framer runtime.Framer @@ -66,18 +79,18 @@ func (n *fakeNegotiater) DecoderToVersion(serializer runtime.Decoder, gv runtime func TestDefaultStorageFactory(t *testing.T) { ns := &fakeNegotiater{types: []string{"test/test"}} - f := NewDefaultStorageFactory(storagebackend.Config{}, "test/test", ns, NewDefaultResourceEncodingConfig(), NewResourceConfig()) - f.AddCohabitatingResources(schema.GroupResource{Resource: "test"}, schema.GroupResource{Resource: "test2", Group: "2"}) + f := NewDefaultStorageFactory(storagebackend.Config{}, "test/test", ns, NewDefaultResourceEncodingConfig(registry), NewResourceConfig()) + f.AddCohabitatingResources(example.Resource("test"), schema.GroupResource{Resource: "test2", Group: "2"}) called := false testEncoderChain := func(e runtime.Encoder) runtime.Encoder { called = true return e } - f.AddSerializationChains(testEncoderChain, nil, schema.GroupResource{Resource: "test"}) - f.SetEtcdLocation(schema.GroupResource{Resource: "*"}, []string{"/server2"}) - f.SetEtcdPrefix(schema.GroupResource{Resource: "test"}, "/prefix_for_test") + f.AddSerializationChains(testEncoderChain, nil, example.Resource("test")) + f.SetEtcdLocation(example.Resource("*"), []string{"/server2"}) + f.SetEtcdPrefix(example.Resource("test"), "/prefix_for_test") - config, err := f.NewConfig(schema.GroupResource{Resource: "test"}) + config, err := f.NewConfig(example.Resource("test")) if err != nil { t.Fatal(err) } @@ -90,20 +103,24 @@ func TestDefaultStorageFactory(t *testing.T) { } func TestUpdateEtcdOverrides(t *testing.T) { + registry := registered.NewOrDie(os.Getenv("KUBE_API_VERSIONS")) + announced := make(announced.APIGroupFactoryRegistry) + exampleinstall.Install(announced, registry, scheme) + testCases := []struct { resource schema.GroupResource servers []string }{ { - resource: schema.GroupResource{Group: api.GroupName, Resource: "resource"}, + resource: schema.GroupResource{Group: example.GroupName, Resource: "resource"}, servers: []string{"http://127.0.0.1:10000"}, }, { - resource: schema.GroupResource{Group: api.GroupName, Resource: "resource"}, + resource: schema.GroupResource{Group: example.GroupName, Resource: "resource"}, servers: []string{"http://127.0.0.1:10000", "http://127.0.0.1:20000"}, }, { - resource: schema.GroupResource{Group: extensions.GroupName, Resource: "resource"}, + resource: schema.GroupResource{Group: example.GroupName, Resource: "resource"}, servers: []string{"http://127.0.0.1:10000"}, }, } @@ -115,7 +132,7 @@ func TestUpdateEtcdOverrides(t *testing.T) { ServerList: defaultEtcdLocation, Copier: scheme, } - storageFactory := NewDefaultStorageFactory(defaultConfig, "", api.Codecs, NewDefaultResourceEncodingConfig(), NewResourceConfig()) + storageFactory := NewDefaultStorageFactory(defaultConfig, "", codecs, NewDefaultResourceEncodingConfig(registry), NewResourceConfig()) storageFactory.SetEtcdLocation(test.resource, test.servers) var err error @@ -129,7 +146,7 @@ func TestUpdateEtcdOverrides(t *testing.T) { continue } - config, err = storageFactory.NewConfig(schema.GroupResource{Group: api.GroupName, Resource: "unlikely"}) + config, err = storageFactory.NewConfig(schema.GroupResource{Group: examplev1.GroupName, Resource: "unlikely"}) if err != nil { t.Errorf("%d: unexpected error %v", i, err) continue diff --git a/pkg/master/master_openapi_test.go b/pkg/master/master_openapi_test.go index 921099e37cf..416573d60d8 100644 --- a/pkg/master/master_openapi_test.go +++ b/pkg/master/master_openapi_test.go @@ -27,6 +27,7 @@ import ( "net/http/httptest" "testing" + "k8s.io/kubernetes/pkg/api" openapigen "k8s.io/kubernetes/pkg/generated/openapi" genericapiserver "k8s.io/kubernetes/pkg/genericapiserver/server" @@ -43,7 +44,7 @@ func TestValidOpenAPISpec(t *testing.T) { defer etcdserver.Terminate(t) config.GenericConfig.EnableIndex = true - config.GenericConfig.OpenAPIConfig = genericapiserver.DefaultOpenAPIConfig(openapigen.GetOpenAPIDefinitions) + config.GenericConfig.OpenAPIConfig = genericapiserver.DefaultOpenAPIConfig(openapigen.GetOpenAPIDefinitions, api.Scheme) config.GenericConfig.OpenAPIConfig.Info = &spec.Info{ InfoProps: spec.InfoProps{ Title: "Kubernetes", diff --git a/pkg/master/master_test.go b/pkg/master/master_test.go index af04f2ac132..f4289c69970 100644 --- a/pkg/master/master_test.go +++ b/pkg/master/master_test.go @@ -62,13 +62,13 @@ func setUp(t *testing.T) (*Master, *etcdtesting.EtcdTestServer, Config, *assert. server, storageConfig := etcdtesting.NewUnsecuredEtcd3TestClientServer(t, api.Scheme) config := &Config{ - GenericConfig: genericapiserver.NewConfig(), + GenericConfig: genericapiserver.NewConfig().WithSerializer(api.Codecs), APIResourceConfigSource: DefaultAPIResourceConfigSource(), APIServerServicePort: 443, MasterCount: 1, } - resourceEncoding := genericapiserver.NewDefaultResourceEncodingConfig() + resourceEncoding := genericapiserver.NewDefaultResourceEncodingConfig(api.Registry) resourceEncoding.SetVersionEncoding(api.GroupName, api.Registry.GroupOrDie(api.GroupName).GroupVersion, schema.GroupVersion{Group: api.GroupName, Version: runtime.APIVersionInternal}) resourceEncoding.SetVersionEncoding(autoscaling.GroupName, *testapi.Autoscaling.GroupVersion(), schema.GroupVersion{Group: autoscaling.GroupName, Version: runtime.APIVersionInternal}) resourceEncoding.SetVersionEncoding(batch.GroupName, *testapi.Batch.GroupVersion(), schema.GroupVersion{Group: batch.GroupName, Version: runtime.APIVersionInternal}) diff --git a/pkg/registry/apps/petset/storage/BUILD b/pkg/registry/apps/petset/storage/BUILD index d2aac55d42e..57d533e85d1 100644 --- a/pkg/registry/apps/petset/storage/BUILD +++ b/pkg/registry/apps/petset/storage/BUILD @@ -38,6 +38,7 @@ go_library( "//pkg/genericapiserver/registry/generic/registry:go_default_library", "//pkg/genericapiserver/registry/rest:go_default_library", "//pkg/registry/apps/petset:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", "//vendor:k8s.io/apimachinery/pkg/runtime", "//vendor:k8s.io/apiserver/pkg/endpoints/request", diff --git a/pkg/registry/apps/petset/storage/storage.go b/pkg/registry/apps/petset/storage/storage.go index 919a9763339..eded49cc02d 100644 --- a/pkg/registry/apps/petset/storage/storage.go +++ b/pkg/registry/apps/petset/storage/storage.go @@ -26,6 +26,7 @@ import ( genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" "k8s.io/kubernetes/pkg/genericapiserver/registry/rest" "k8s.io/kubernetes/pkg/registry/apps/petset" + "k8s.io/kubernetes/pkg/registry/cachesize" ) // rest implements a RESTStorage for replication controllers against etcd @@ -44,6 +45,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { }, PredicateFunc: petset.MatchStatefulSet, QualifiedResource: appsapi.Resource("statefulsets"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("statefulsets"), CreateStrategy: petset.Strategy, UpdateStrategy: petset.Strategy, diff --git a/pkg/registry/apps/rest/BUILD b/pkg/registry/apps/rest/BUILD index 7efd8eb5b8b..995ebecc3ef 100644 --- a/pkg/registry/apps/rest/BUILD +++ b/pkg/registry/apps/rest/BUILD @@ -12,6 +12,7 @@ go_library( srcs = ["storage_apps.go"], tags = ["automanaged"], deps = [ + "//pkg/api:go_default_library", "//pkg/apis/apps:go_default_library", "//pkg/apis/apps/v1beta1:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", diff --git a/pkg/registry/apps/rest/storage_apps.go b/pkg/registry/apps/rest/storage_apps.go index 7ff6a0ac507..aef03c76989 100644 --- a/pkg/registry/apps/rest/storage_apps.go +++ b/pkg/registry/apps/rest/storage_apps.go @@ -17,6 +17,7 @@ limitations under the License. package rest import ( + "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/apis/apps" appsapiv1beta1 "k8s.io/kubernetes/pkg/apis/apps/v1beta1" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" @@ -28,7 +29,7 @@ import ( type RESTStorageProvider struct{} func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource genericapiserver.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (genericapiserver.APIGroupInfo, bool) { - apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(apps.GroupName) + apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(apps.GroupName, api.Registry, api.Scheme, api.ParameterCodec, api.Codecs) if apiResourceConfigSource.AnyResourcesForVersionEnabled(appsapiv1beta1.SchemeGroupVersion) { apiGroupInfo.VersionedResourcesStorageMap[appsapiv1beta1.SchemeGroupVersion.Version] = p.v1beta1Storage(apiResourceConfigSource, restOptionsGetter) diff --git a/pkg/registry/authentication/rest/BUILD b/pkg/registry/authentication/rest/BUILD index 27675333c63..243cc2a5136 100644 --- a/pkg/registry/authentication/rest/BUILD +++ b/pkg/registry/authentication/rest/BUILD @@ -12,6 +12,7 @@ go_library( srcs = ["storage_authentication.go"], tags = ["automanaged"], deps = [ + "//pkg/api:go_default_library", "//pkg/apis/authentication:go_default_library", "//pkg/apis/authentication/v1beta1:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", diff --git a/pkg/registry/authentication/rest/storage_authentication.go b/pkg/registry/authentication/rest/storage_authentication.go index 4f910622c8b..6ebbd4caadd 100644 --- a/pkg/registry/authentication/rest/storage_authentication.go +++ b/pkg/registry/authentication/rest/storage_authentication.go @@ -18,6 +18,7 @@ package rest import ( "k8s.io/apiserver/pkg/authentication/authenticator" + "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/apis/authentication" authenticationv1beta1 "k8s.io/kubernetes/pkg/apis/authentication/v1beta1" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" @@ -36,7 +37,7 @@ func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource genericapise // return genericapiserver.APIGroupInfo{}, false // } - apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(authentication.GroupName) + apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(authentication.GroupName, api.Registry, api.Scheme, api.ParameterCodec, api.Codecs) if apiResourceConfigSource.AnyResourcesForVersionEnabled(authenticationv1beta1.SchemeGroupVersion) { apiGroupInfo.VersionedResourcesStorageMap[authenticationv1beta1.SchemeGroupVersion.Version] = p.v1beta1Storage(apiResourceConfigSource, restOptionsGetter) diff --git a/pkg/registry/authorization/rest/BUILD b/pkg/registry/authorization/rest/BUILD index 2d91afa22cf..947108e6df3 100644 --- a/pkg/registry/authorization/rest/BUILD +++ b/pkg/registry/authorization/rest/BUILD @@ -12,6 +12,7 @@ go_library( srcs = ["storage_authorization.go"], tags = ["automanaged"], deps = [ + "//pkg/api:go_default_library", "//pkg/apis/authorization:go_default_library", "//pkg/apis/authorization/v1beta1:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", diff --git a/pkg/registry/authorization/rest/storage_authorization.go b/pkg/registry/authorization/rest/storage_authorization.go index 9310d69d81c..6a51ee3d984 100644 --- a/pkg/registry/authorization/rest/storage_authorization.go +++ b/pkg/registry/authorization/rest/storage_authorization.go @@ -18,6 +18,7 @@ package rest import ( "k8s.io/apiserver/pkg/authorization/authorizer" + "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/apis/authorization" authorizationv1beta1 "k8s.io/kubernetes/pkg/apis/authorization/v1beta1" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" @@ -37,7 +38,7 @@ func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource genericapise return genericapiserver.APIGroupInfo{}, false } - apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(authorization.GroupName) + apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(authorization.GroupName, api.Registry, api.Scheme, api.ParameterCodec, api.Codecs) if apiResourceConfigSource.AnyResourcesForVersionEnabled(authorizationv1beta1.SchemeGroupVersion) { apiGroupInfo.VersionedResourcesStorageMap[authorizationv1beta1.SchemeGroupVersion.Version] = p.v1beta1Storage(apiResourceConfigSource, restOptionsGetter) diff --git a/pkg/registry/autoscaling/horizontalpodautoscaler/storage/BUILD b/pkg/registry/autoscaling/horizontalpodautoscaler/storage/BUILD index 2f9c165788a..95bc2a118a6 100644 --- a/pkg/registry/autoscaling/horizontalpodautoscaler/storage/BUILD +++ b/pkg/registry/autoscaling/horizontalpodautoscaler/storage/BUILD @@ -37,6 +37,7 @@ go_library( "//pkg/genericapiserver/registry/generic/registry:go_default_library", "//pkg/genericapiserver/registry/rest:go_default_library", "//pkg/registry/autoscaling/horizontalpodautoscaler:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", "//vendor:k8s.io/apimachinery/pkg/runtime", "//vendor:k8s.io/apiserver/pkg/endpoints/request", diff --git a/pkg/registry/autoscaling/horizontalpodautoscaler/storage/storage.go b/pkg/registry/autoscaling/horizontalpodautoscaler/storage/storage.go index 105b1fdc911..bbbeb13c283 100644 --- a/pkg/registry/autoscaling/horizontalpodautoscaler/storage/storage.go +++ b/pkg/registry/autoscaling/horizontalpodautoscaler/storage/storage.go @@ -26,6 +26,7 @@ import ( genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" "k8s.io/kubernetes/pkg/genericapiserver/registry/rest" "k8s.io/kubernetes/pkg/registry/autoscaling/horizontalpodautoscaler" + "k8s.io/kubernetes/pkg/registry/cachesize" ) type REST struct { @@ -43,6 +44,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { }, PredicateFunc: horizontalpodautoscaler.MatchAutoscaler, QualifiedResource: autoscaling.Resource("horizontalpodautoscalers"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("horizontalpodautoscalers"), CreateStrategy: horizontalpodautoscaler.Strategy, UpdateStrategy: horizontalpodautoscaler.Strategy, diff --git a/pkg/registry/autoscaling/rest/BUILD b/pkg/registry/autoscaling/rest/BUILD index 9ce8efa8a67..4b29650a010 100644 --- a/pkg/registry/autoscaling/rest/BUILD +++ b/pkg/registry/autoscaling/rest/BUILD @@ -12,6 +12,7 @@ go_library( srcs = ["storage_autoscaling.go"], tags = ["automanaged"], deps = [ + "//pkg/api:go_default_library", "//pkg/apis/autoscaling:go_default_library", "//pkg/apis/autoscaling/v1:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", diff --git a/pkg/registry/autoscaling/rest/storage_autoscaling.go b/pkg/registry/autoscaling/rest/storage_autoscaling.go index 58d9b414a5e..081d4c33d0f 100644 --- a/pkg/registry/autoscaling/rest/storage_autoscaling.go +++ b/pkg/registry/autoscaling/rest/storage_autoscaling.go @@ -17,6 +17,7 @@ limitations under the License. package rest import ( + "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/apis/autoscaling" autoscalingapiv1 "k8s.io/kubernetes/pkg/apis/autoscaling/v1" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" @@ -28,7 +29,7 @@ import ( type RESTStorageProvider struct{} func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource genericapiserver.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (genericapiserver.APIGroupInfo, bool) { - apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(autoscaling.GroupName) + apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(autoscaling.GroupName, api.Registry, api.Scheme, api.ParameterCodec, api.Codecs) if apiResourceConfigSource.AnyResourcesForVersionEnabled(autoscalingapiv1.SchemeGroupVersion) { apiGroupInfo.VersionedResourcesStorageMap[autoscalingapiv1.SchemeGroupVersion.Version] = p.v1Storage(apiResourceConfigSource, restOptionsGetter) diff --git a/pkg/registry/batch/cronjob/storage/BUILD b/pkg/registry/batch/cronjob/storage/BUILD index 1b272ce291e..52243754cf5 100644 --- a/pkg/registry/batch/cronjob/storage/BUILD +++ b/pkg/registry/batch/cronjob/storage/BUILD @@ -39,6 +39,7 @@ go_library( "//pkg/genericapiserver/registry/generic/registry:go_default_library", "//pkg/genericapiserver/registry/rest:go_default_library", "//pkg/registry/batch/cronjob:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", "//vendor:k8s.io/apimachinery/pkg/runtime", "//vendor:k8s.io/apiserver/pkg/endpoints/request", diff --git a/pkg/registry/batch/cronjob/storage/storage.go b/pkg/registry/batch/cronjob/storage/storage.go index 2d38bd192aa..e6b4dc5d6f5 100644 --- a/pkg/registry/batch/cronjob/storage/storage.go +++ b/pkg/registry/batch/cronjob/storage/storage.go @@ -26,6 +26,7 @@ import ( genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" "k8s.io/kubernetes/pkg/genericapiserver/registry/rest" "k8s.io/kubernetes/pkg/registry/batch/cronjob" + "k8s.io/kubernetes/pkg/registry/cachesize" ) // REST implements a RESTStorage for scheduled jobs against etcd @@ -44,6 +45,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { }, PredicateFunc: cronjob.MatchCronJob, QualifiedResource: batch.Resource("cronjobs"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("cronjobs"), CreateStrategy: cronjob.Strategy, UpdateStrategy: cronjob.Strategy, diff --git a/pkg/registry/batch/job/storage/BUILD b/pkg/registry/batch/job/storage/BUILD index 559101a89ec..d6ab1bab6f6 100644 --- a/pkg/registry/batch/job/storage/BUILD +++ b/pkg/registry/batch/job/storage/BUILD @@ -37,6 +37,7 @@ go_library( "//pkg/genericapiserver/registry/generic/registry:go_default_library", "//pkg/genericapiserver/registry/rest:go_default_library", "//pkg/registry/batch/job:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", "//vendor:k8s.io/apimachinery/pkg/runtime", "//vendor:k8s.io/apiserver/pkg/endpoints/request", diff --git a/pkg/registry/batch/job/storage/storage.go b/pkg/registry/batch/job/storage/storage.go index c349c18f56c..88d497b2fa2 100644 --- a/pkg/registry/batch/job/storage/storage.go +++ b/pkg/registry/batch/job/storage/storage.go @@ -26,6 +26,7 @@ import ( genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" "k8s.io/kubernetes/pkg/genericapiserver/registry/rest" "k8s.io/kubernetes/pkg/registry/batch/job" + "k8s.io/kubernetes/pkg/registry/cachesize" ) // JobStorage includes dummy storage for Job. @@ -59,6 +60,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { }, PredicateFunc: job.MatchJob, QualifiedResource: batch.Resource("jobs"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("jobs"), CreateStrategy: job.Strategy, UpdateStrategy: job.Strategy, diff --git a/pkg/registry/batch/rest/BUILD b/pkg/registry/batch/rest/BUILD index 046e59e02e8..b8299ef2e3a 100644 --- a/pkg/registry/batch/rest/BUILD +++ b/pkg/registry/batch/rest/BUILD @@ -12,6 +12,7 @@ go_library( srcs = ["storage_batch.go"], tags = ["automanaged"], deps = [ + "//pkg/api:go_default_library", "//pkg/apis/batch:go_default_library", "//pkg/apis/batch/v1:go_default_library", "//pkg/apis/batch/v2alpha1:go_default_library", diff --git a/pkg/registry/batch/rest/storage_batch.go b/pkg/registry/batch/rest/storage_batch.go index 4760af9b79f..aeb7c661293 100644 --- a/pkg/registry/batch/rest/storage_batch.go +++ b/pkg/registry/batch/rest/storage_batch.go @@ -18,6 +18,7 @@ package rest import ( "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/apis/batch" batchapiv1 "k8s.io/kubernetes/pkg/apis/batch/v1" batchapiv2alpha1 "k8s.io/kubernetes/pkg/apis/batch/v2alpha1" @@ -31,7 +32,7 @@ import ( type RESTStorageProvider struct{} func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource genericapiserver.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (genericapiserver.APIGroupInfo, bool) { - apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(batch.GroupName) + apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(batch.GroupName, api.Registry, api.Scheme, api.ParameterCodec, api.Codecs) if apiResourceConfigSource.AnyResourcesForVersionEnabled(batchapiv2alpha1.SchemeGroupVersion) { apiGroupInfo.VersionedResourcesStorageMap[batchapiv2alpha1.SchemeGroupVersion.Version] = p.v2alpha1Storage(apiResourceConfigSource, restOptionsGetter) diff --git a/pkg/registry/cachesize/BUILD b/pkg/registry/cachesize/BUILD index bcbce5d01d5..70807693860 100644 --- a/pkg/registry/cachesize/BUILD +++ b/pkg/registry/cachesize/BUILD @@ -11,7 +11,10 @@ go_library( name = "go_default_library", srcs = ["cachesize.go"], tags = ["automanaged"], - deps = ["//vendor:github.com/golang/glog"], + deps = [ + "//pkg/genericapiserver/registry/generic/registry:go_default_library", + "//vendor:github.com/golang/glog", + ], ) filegroup( diff --git a/pkg/registry/cachesize/cachesize.go b/pkg/registry/cachesize/cachesize.go index 1b0ae583b18..ffd05cf3a3b 100644 --- a/pkg/registry/cachesize/cachesize.go +++ b/pkg/registry/cachesize/cachesize.go @@ -23,6 +23,8 @@ import ( "strings" "github.com/golang/glog" + + "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" ) type Resource string @@ -60,9 +62,6 @@ const ( ServiceAccounts Resource = "serviceaccounts" Services Resource = "services" StorageClasses Resource = "storageclasses" - - // Default value of watch cache size for a resource if not specified. - defaultWatchCacheSize = 100 ) // TODO: This shouldn't be a global variable. @@ -112,11 +111,11 @@ func SetWatchCacheSizes(cacheSizes []string) { } } -func GetWatchCacheSizeByResource(resource Resource) int { // TODO this should use schema.GroupResource for lookups - if value, found := watchCacheSizes[resource]; found { +func GetWatchCacheSizeByResource(resource string) int { // TODO this should use schema.GroupResource for lookups + if value, found := watchCacheSizes[Resource(resource)]; found { return value } - return defaultWatchCacheSize + return registry.DefaultWatchCacheSize } func maxInt(a, b int) int { diff --git a/pkg/registry/certificates/certificates/storage/BUILD b/pkg/registry/certificates/certificates/storage/BUILD index acf7153b2ae..619d630a94c 100644 --- a/pkg/registry/certificates/certificates/storage/BUILD +++ b/pkg/registry/certificates/certificates/storage/BUILD @@ -17,6 +17,7 @@ go_library( "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", "//pkg/genericapiserver/registry/rest:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/certificates/certificates:go_default_library", "//vendor:k8s.io/apimachinery/pkg/runtime", "//vendor:k8s.io/apiserver/pkg/endpoints/request", diff --git a/pkg/registry/certificates/certificates/storage/storage.go b/pkg/registry/certificates/certificates/storage/storage.go index 0559be933fb..a24693c7922 100644 --- a/pkg/registry/certificates/certificates/storage/storage.go +++ b/pkg/registry/certificates/certificates/storage/storage.go @@ -24,6 +24,7 @@ import ( "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" "k8s.io/kubernetes/pkg/genericapiserver/registry/rest" + "k8s.io/kubernetes/pkg/registry/cachesize" csrregistry "k8s.io/kubernetes/pkg/registry/certificates/certificates" ) @@ -43,6 +44,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST, *Approva }, PredicateFunc: csrregistry.Matcher, QualifiedResource: certificates.Resource("certificatesigningrequests"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("certificatesigningrequests"), CreateStrategy: csrregistry.Strategy, UpdateStrategy: csrregistry.Strategy, diff --git a/pkg/registry/certificates/rest/BUILD b/pkg/registry/certificates/rest/BUILD index 0c2980c1f15..b86306ec31f 100644 --- a/pkg/registry/certificates/rest/BUILD +++ b/pkg/registry/certificates/rest/BUILD @@ -12,6 +12,7 @@ go_library( srcs = ["storage_certificates.go"], tags = ["automanaged"], deps = [ + "//pkg/api:go_default_library", "//pkg/apis/certificates:go_default_library", "//pkg/apis/certificates/v1beta1:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", diff --git a/pkg/registry/certificates/rest/storage_certificates.go b/pkg/registry/certificates/rest/storage_certificates.go index 8666f194ed1..465c49a7756 100644 --- a/pkg/registry/certificates/rest/storage_certificates.go +++ b/pkg/registry/certificates/rest/storage_certificates.go @@ -17,6 +17,7 @@ limitations under the License. package rest import ( + "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/apis/certificates" certificatesapiv1beta1 "k8s.io/kubernetes/pkg/apis/certificates/v1beta1" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" @@ -28,7 +29,7 @@ import ( type RESTStorageProvider struct{} func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource genericapiserver.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (genericapiserver.APIGroupInfo, bool) { - apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(certificates.GroupName) + apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(certificates.GroupName, api.Registry, api.Scheme, api.ParameterCodec, api.Codecs) if apiResourceConfigSource.AnyResourcesForVersionEnabled(certificatesapiv1beta1.SchemeGroupVersion) { apiGroupInfo.VersionedResourcesStorageMap[certificatesapiv1beta1.SchemeGroupVersion.Version] = p.v1beta1Storage(apiResourceConfigSource, restOptionsGetter) diff --git a/pkg/registry/core/configmap/storage/BUILD b/pkg/registry/core/configmap/storage/BUILD index e1287e277e8..1bafe282b2c 100644 --- a/pkg/registry/core/configmap/storage/BUILD +++ b/pkg/registry/core/configmap/storage/BUILD @@ -33,6 +33,7 @@ go_library( "//pkg/api:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/core/configmap:go_default_library", "//vendor:k8s.io/apimachinery/pkg/runtime", ], diff --git a/pkg/registry/core/configmap/storage/storage.go b/pkg/registry/core/configmap/storage/storage.go index 869bb72efa4..b6f534b3b48 100644 --- a/pkg/registry/core/configmap/storage/storage.go +++ b/pkg/registry/core/configmap/storage/storage.go @@ -21,6 +21,7 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/core/configmap" ) @@ -40,6 +41,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { }, PredicateFunc: configmap.MatchConfigMap, QualifiedResource: api.Resource("configmaps"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("configmaps"), CreateStrategy: configmap.Strategy, UpdateStrategy: configmap.Strategy, diff --git a/pkg/registry/core/endpoint/storage/BUILD b/pkg/registry/core/endpoint/storage/BUILD index d3cb6061b2f..7018523719c 100644 --- a/pkg/registry/core/endpoint/storage/BUILD +++ b/pkg/registry/core/endpoint/storage/BUILD @@ -33,6 +33,7 @@ go_library( "//pkg/api:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/core/endpoint:go_default_library", "//vendor:k8s.io/apimachinery/pkg/runtime", ], diff --git a/pkg/registry/core/endpoint/storage/storage.go b/pkg/registry/core/endpoint/storage/storage.go index 56b00c46fac..63a25b6ec6d 100644 --- a/pkg/registry/core/endpoint/storage/storage.go +++ b/pkg/registry/core/endpoint/storage/storage.go @@ -21,6 +21,7 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/core/endpoint" ) @@ -39,6 +40,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { }, PredicateFunc: endpoint.MatchEndpoints, QualifiedResource: api.Resource("endpoints"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("endpoints"), CreateStrategy: endpoint.Strategy, UpdateStrategy: endpoint.Strategy, diff --git a/pkg/registry/core/event/storage/BUILD b/pkg/registry/core/event/storage/BUILD index 5dbfca473b0..02cfd85b953 100644 --- a/pkg/registry/core/event/storage/BUILD +++ b/pkg/registry/core/event/storage/BUILD @@ -31,6 +31,7 @@ go_library( "//pkg/api:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/core/event:go_default_library", "//vendor:k8s.io/apimachinery/pkg/runtime", ], diff --git a/pkg/registry/core/event/storage/storage.go b/pkg/registry/core/event/storage/storage.go index dcf45bc4659..946ee8a2da7 100644 --- a/pkg/registry/core/event/storage/storage.go +++ b/pkg/registry/core/event/storage/storage.go @@ -21,6 +21,7 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/core/event" ) @@ -52,6 +53,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter, ttl uint64) *REST { return ttl, nil }, QualifiedResource: resource, + WatchCacheSize: cachesize.GetWatchCacheSizeByResource(resource.Resource), CreateStrategy: event.Strategy, UpdateStrategy: event.Strategy, diff --git a/pkg/registry/core/limitrange/storage/BUILD b/pkg/registry/core/limitrange/storage/BUILD index a0eb13f6a5d..20a99459e30 100644 --- a/pkg/registry/core/limitrange/storage/BUILD +++ b/pkg/registry/core/limitrange/storage/BUILD @@ -34,6 +34,7 @@ go_library( "//pkg/api:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/core/limitrange:go_default_library", "//vendor:k8s.io/apimachinery/pkg/runtime", ], diff --git a/pkg/registry/core/limitrange/storage/storage.go b/pkg/registry/core/limitrange/storage/storage.go index 5545dd7f95e..afb4632860d 100644 --- a/pkg/registry/core/limitrange/storage/storage.go +++ b/pkg/registry/core/limitrange/storage/storage.go @@ -21,6 +21,7 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/core/limitrange" ) @@ -39,6 +40,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { }, PredicateFunc: limitrange.MatchLimitRange, QualifiedResource: api.Resource("limitranges"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("limitranges"), CreateStrategy: limitrange.Strategy, UpdateStrategy: limitrange.Strategy, diff --git a/pkg/registry/core/namespace/storage/BUILD b/pkg/registry/core/namespace/storage/BUILD index aebc08e0650..b05b1b5a165 100644 --- a/pkg/registry/core/namespace/storage/BUILD +++ b/pkg/registry/core/namespace/storage/BUILD @@ -31,11 +31,12 @@ go_library( tags = ["automanaged"], deps = [ "//pkg/api:go_default_library", - "//pkg/api/errors/storage:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", "//pkg/genericapiserver/registry/rest:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/core/namespace:go_default_library", + "//pkg/storage/errors:go_default_library", "//vendor:k8s.io/apimachinery/pkg/api/errors", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", "//vendor:k8s.io/apimachinery/pkg/runtime", diff --git a/pkg/registry/core/namespace/storage/storage.go b/pkg/registry/core/namespace/storage/storage.go index e3f522a9ad3..a169b6ad476 100644 --- a/pkg/registry/core/namespace/storage/storage.go +++ b/pkg/registry/core/namespace/storage/storage.go @@ -25,11 +25,12 @@ import ( genericapirequest "k8s.io/apiserver/pkg/endpoints/request" "k8s.io/apiserver/pkg/storage" "k8s.io/kubernetes/pkg/api" - storageerr "k8s.io/kubernetes/pkg/api/errors/storage" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" "k8s.io/kubernetes/pkg/genericapiserver/registry/rest" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/core/namespace" + storageerr "k8s.io/kubernetes/pkg/storage/errors" ) // rest implements a RESTStorage for namespaces @@ -59,6 +60,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST, *Finaliz }, PredicateFunc: namespace.MatchNamespace, QualifiedResource: api.Resource("namespaces"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("namespaces"), CreateStrategy: namespace.Strategy, UpdateStrategy: namespace.Strategy, @@ -141,7 +143,7 @@ func (r *REST) Delete(ctx genericapirequest.Context, name string, options *metav newFinalizers := []string{} for i := range existingNamespace.ObjectMeta.Finalizers { finalizer := existingNamespace.ObjectMeta.Finalizers[i] - if string(finalizer) != api.FinalizerOrphan { + if string(finalizer) != metav1.FinalizerOrphan { newFinalizers = append(newFinalizers, finalizer) } } diff --git a/pkg/registry/core/node/storage/BUILD b/pkg/registry/core/node/storage/BUILD index 0f63dec939c..43940b4e206 100644 --- a/pkg/registry/core/node/storage/BUILD +++ b/pkg/registry/core/node/storage/BUILD @@ -38,6 +38,7 @@ go_library( "//pkg/genericapiserver/registry/generic/registry:go_default_library", "//pkg/genericapiserver/registry/rest:go_default_library", "//pkg/kubelet/client:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/core/node:go_default_library", "//pkg/registry/core/node/rest:go_default_library", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", diff --git a/pkg/registry/core/node/storage/storage.go b/pkg/registry/core/node/storage/storage.go index 2d6e8f78f5f..06b802549ef 100644 --- a/pkg/registry/core/node/storage/storage.go +++ b/pkg/registry/core/node/storage/storage.go @@ -30,6 +30,7 @@ import ( genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" "k8s.io/kubernetes/pkg/genericapiserver/registry/rest" "k8s.io/kubernetes/pkg/kubelet/client" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/core/node" noderest "k8s.io/kubernetes/pkg/registry/core/node/rest" ) @@ -79,6 +80,7 @@ func NewStorage(optsGetter generic.RESTOptionsGetter, kubeletClientConfig client }, PredicateFunc: node.MatchNode, QualifiedResource: api.Resource("nodes"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("nodes"), CreateStrategy: node.Strategy, UpdateStrategy: node.Strategy, diff --git a/pkg/registry/core/persistentvolume/storage/BUILD b/pkg/registry/core/persistentvolume/storage/BUILD index 345e062ccea..d3f3eb41855 100644 --- a/pkg/registry/core/persistentvolume/storage/BUILD +++ b/pkg/registry/core/persistentvolume/storage/BUILD @@ -39,6 +39,7 @@ go_library( "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", "//pkg/genericapiserver/registry/rest:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/core/persistentvolume:go_default_library", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", "//vendor:k8s.io/apimachinery/pkg/runtime", diff --git a/pkg/registry/core/persistentvolume/storage/storage.go b/pkg/registry/core/persistentvolume/storage/storage.go index 2727cd984e4..f739244c17d 100644 --- a/pkg/registry/core/persistentvolume/storage/storage.go +++ b/pkg/registry/core/persistentvolume/storage/storage.go @@ -24,6 +24,7 @@ import ( "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" "k8s.io/kubernetes/pkg/genericapiserver/registry/rest" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/core/persistentvolume" ) @@ -42,6 +43,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { }, PredicateFunc: persistentvolume.MatchPersistentVolumes, QualifiedResource: api.Resource("persistentvolumes"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("persistentvolumes"), CreateStrategy: persistentvolume.Strategy, UpdateStrategy: persistentvolume.Strategy, diff --git a/pkg/registry/core/persistentvolumeclaim/storage/BUILD b/pkg/registry/core/persistentvolumeclaim/storage/BUILD index 01039bfb69b..c2d7b55823d 100644 --- a/pkg/registry/core/persistentvolumeclaim/storage/BUILD +++ b/pkg/registry/core/persistentvolumeclaim/storage/BUILD @@ -39,6 +39,7 @@ go_library( "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", "//pkg/genericapiserver/registry/rest:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/core/persistentvolumeclaim:go_default_library", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", "//vendor:k8s.io/apimachinery/pkg/runtime", diff --git a/pkg/registry/core/persistentvolumeclaim/storage/storage.go b/pkg/registry/core/persistentvolumeclaim/storage/storage.go index c83bc370c17..02e0007fde8 100644 --- a/pkg/registry/core/persistentvolumeclaim/storage/storage.go +++ b/pkg/registry/core/persistentvolumeclaim/storage/storage.go @@ -24,6 +24,7 @@ import ( "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" "k8s.io/kubernetes/pkg/genericapiserver/registry/rest" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/core/persistentvolumeclaim" ) @@ -42,6 +43,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { }, PredicateFunc: persistentvolumeclaim.MatchPersistentVolumeClaim, QualifiedResource: api.Resource("persistentvolumeclaims"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("persistentvolumeclaims"), CreateStrategy: persistentvolumeclaim.Strategy, UpdateStrategy: persistentvolumeclaim.Strategy, diff --git a/pkg/registry/core/pod/storage/BUILD b/pkg/registry/core/pod/storage/BUILD index b20269e48b3..769814c7b77 100644 --- a/pkg/registry/core/pod/storage/BUILD +++ b/pkg/registry/core/pod/storage/BUILD @@ -15,11 +15,11 @@ go_test( tags = ["automanaged"], deps = [ "//pkg/api:go_default_library", - "//pkg/api/errors/storage:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/rest:go_default_library", "//pkg/registry/registrytest:go_default_library", "//pkg/securitycontext:go_default_library", + "//pkg/storage/errors:go_default_library", "//pkg/storage/etcd/testing:go_default_library", "//vendor:golang.org/x/net/context", "//vendor:k8s.io/apimachinery/pkg/api/equality", @@ -43,7 +43,6 @@ go_library( tags = ["automanaged"], deps = [ "//pkg/api:go_default_library", - "//pkg/api/errors/storage:go_default_library", "//pkg/api/validation:go_default_library", "//pkg/apis/policy:go_default_library", "//pkg/client/clientset_generated/internalclientset/typed/policy/internalversion:go_default_library", @@ -52,8 +51,10 @@ go_library( "//pkg/genericapiserver/registry/generic/registry:go_default_library", "//pkg/genericapiserver/registry/rest:go_default_library", "//pkg/kubelet/client:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/core/pod:go_default_library", "//pkg/registry/core/pod/rest:go_default_library", + "//pkg/storage/errors:go_default_library", "//vendor:k8s.io/apimachinery/pkg/api/errors", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", "//vendor:k8s.io/apimachinery/pkg/labels", diff --git a/pkg/registry/core/pod/storage/storage.go b/pkg/registry/core/pod/storage/storage.go index 01603e9a72b..1fcad706985 100644 --- a/pkg/registry/core/pod/storage/storage.go +++ b/pkg/registry/core/pod/storage/storage.go @@ -27,15 +27,16 @@ import ( genericapirequest "k8s.io/apiserver/pkg/endpoints/request" "k8s.io/apiserver/pkg/storage" "k8s.io/kubernetes/pkg/api" - storeerr "k8s.io/kubernetes/pkg/api/errors/storage" "k8s.io/kubernetes/pkg/api/validation" policyclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/policy/internalversion" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" "k8s.io/kubernetes/pkg/genericapiserver/registry/rest" "k8s.io/kubernetes/pkg/kubelet/client" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/core/pod" podrest "k8s.io/kubernetes/pkg/registry/core/pod/rest" + storeerr "k8s.io/kubernetes/pkg/storage/errors" ) // PodStorage includes storage for pods and all sub resources @@ -68,6 +69,7 @@ func NewStorage(optsGetter generic.RESTOptionsGetter, k client.ConnectionInfoGet }, PredicateFunc: pod.MatchPod, QualifiedResource: api.Resource("pods"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("pods"), CreateStrategy: pod.Strategy, UpdateStrategy: pod.Strategy, diff --git a/pkg/registry/core/pod/storage/storage_test.go b/pkg/registry/core/pod/storage/storage_test.go index 1c1e218c0ef..f810af2d2a9 100644 --- a/pkg/registry/core/pod/storage/storage_test.go +++ b/pkg/registry/core/pod/storage/storage_test.go @@ -31,11 +31,11 @@ import ( genericapirequest "k8s.io/apiserver/pkg/endpoints/request" "k8s.io/apiserver/pkg/storage" "k8s.io/kubernetes/pkg/api" - storeerr "k8s.io/kubernetes/pkg/api/errors/storage" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" "k8s.io/kubernetes/pkg/genericapiserver/registry/rest" "k8s.io/kubernetes/pkg/registry/registrytest" "k8s.io/kubernetes/pkg/securitycontext" + storeerr "k8s.io/kubernetes/pkg/storage/errors" etcdtesting "k8s.io/kubernetes/pkg/storage/etcd/testing" ) diff --git a/pkg/registry/core/podtemplate/storage/BUILD b/pkg/registry/core/podtemplate/storage/BUILD index 82d3b731706..7263e6dee9e 100644 --- a/pkg/registry/core/podtemplate/storage/BUILD +++ b/pkg/registry/core/podtemplate/storage/BUILD @@ -33,6 +33,7 @@ go_library( "//pkg/api:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/core/podtemplate:go_default_library", "//vendor:k8s.io/apimachinery/pkg/runtime", ], diff --git a/pkg/registry/core/podtemplate/storage/storage.go b/pkg/registry/core/podtemplate/storage/storage.go index 601ed603aae..407e35a7606 100644 --- a/pkg/registry/core/podtemplate/storage/storage.go +++ b/pkg/registry/core/podtemplate/storage/storage.go @@ -21,6 +21,7 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/core/podtemplate" ) @@ -39,6 +40,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { }, PredicateFunc: podtemplate.MatchPodTemplate, QualifiedResource: api.Resource("podtemplates"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("podtemplates"), CreateStrategy: podtemplate.Strategy, UpdateStrategy: podtemplate.Strategy, diff --git a/pkg/registry/core/replicationcontroller/storage/BUILD b/pkg/registry/core/replicationcontroller/storage/BUILD index fc585ac931a..e1b8d62bb76 100644 --- a/pkg/registry/core/replicationcontroller/storage/BUILD +++ b/pkg/registry/core/replicationcontroller/storage/BUILD @@ -42,6 +42,7 @@ go_library( "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", "//pkg/genericapiserver/registry/rest:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/core/replicationcontroller:go_default_library", "//vendor:k8s.io/apimachinery/pkg/api/errors", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", diff --git a/pkg/registry/core/replicationcontroller/storage/storage.go b/pkg/registry/core/replicationcontroller/storage/storage.go index e438ddb40fb..54ac4a2db26 100644 --- a/pkg/registry/core/replicationcontroller/storage/storage.go +++ b/pkg/registry/core/replicationcontroller/storage/storage.go @@ -32,6 +32,7 @@ import ( "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" "k8s.io/kubernetes/pkg/genericapiserver/registry/rest" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/core/replicationcontroller" ) @@ -68,6 +69,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { }, PredicateFunc: replicationcontroller.MatchController, QualifiedResource: api.Resource("replicationcontrollers"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("replicationcontrollers"), CreateStrategy: replicationcontroller.Strategy, UpdateStrategy: replicationcontroller.Strategy, diff --git a/pkg/registry/core/resourcequota/storage/BUILD b/pkg/registry/core/resourcequota/storage/BUILD index 6b1147245a0..c0d4dd1c677 100644 --- a/pkg/registry/core/resourcequota/storage/BUILD +++ b/pkg/registry/core/resourcequota/storage/BUILD @@ -38,6 +38,7 @@ go_library( "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", "//pkg/genericapiserver/registry/rest:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/core/resourcequota:go_default_library", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", "//vendor:k8s.io/apimachinery/pkg/runtime", diff --git a/pkg/registry/core/resourcequota/storage/storage.go b/pkg/registry/core/resourcequota/storage/storage.go index dd4ea2e9ea1..e5bc87006d8 100644 --- a/pkg/registry/core/resourcequota/storage/storage.go +++ b/pkg/registry/core/resourcequota/storage/storage.go @@ -24,6 +24,7 @@ import ( "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" "k8s.io/kubernetes/pkg/genericapiserver/registry/rest" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/core/resourcequota" ) @@ -42,6 +43,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { }, PredicateFunc: resourcequota.MatchResourceQuota, QualifiedResource: api.Resource("resourcequotas"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("resourcequotas"), CreateStrategy: resourcequota.Strategy, UpdateStrategy: resourcequota.Strategy, diff --git a/pkg/registry/core/secret/storage/BUILD b/pkg/registry/core/secret/storage/BUILD index cbd3c5156d1..4c38e2177d5 100644 --- a/pkg/registry/core/secret/storage/BUILD +++ b/pkg/registry/core/secret/storage/BUILD @@ -33,6 +33,7 @@ go_library( "//pkg/api:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/core/secret:go_default_library", "//vendor:k8s.io/apimachinery/pkg/runtime", ], diff --git a/pkg/registry/core/secret/storage/storage.go b/pkg/registry/core/secret/storage/storage.go index 64726fdc69d..df295ad34f8 100644 --- a/pkg/registry/core/secret/storage/storage.go +++ b/pkg/registry/core/secret/storage/storage.go @@ -21,6 +21,7 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/core/secret" ) @@ -39,6 +40,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { }, PredicateFunc: secret.Matcher, QualifiedResource: api.Resource("secrets"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("secrets"), CreateStrategy: secret.Strategy, UpdateStrategy: secret.Strategy, diff --git a/pkg/registry/core/service/allocator/storage/BUILD b/pkg/registry/core/service/allocator/storage/BUILD index 95b76276dea..36a5f631e3b 100644 --- a/pkg/registry/core/service/allocator/storage/BUILD +++ b/pkg/registry/core/service/allocator/storage/BUILD @@ -29,10 +29,10 @@ go_library( tags = ["automanaged"], deps = [ "//pkg/api:go_default_library", - "//pkg/api/errors/storage:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/registry/core/rangeallocation:go_default_library", "//pkg/registry/core/service/allocator:go_default_library", + "//pkg/storage/errors:go_default_library", "//vendor:golang.org/x/net/context", "//vendor:k8s.io/apimachinery/pkg/api/errors", "//vendor:k8s.io/apimachinery/pkg/runtime", diff --git a/pkg/registry/core/service/allocator/storage/storage.go b/pkg/registry/core/service/allocator/storage/storage.go index 2563c7f78f7..43d58a12f39 100644 --- a/pkg/registry/core/service/allocator/storage/storage.go +++ b/pkg/registry/core/service/allocator/storage/storage.go @@ -27,10 +27,10 @@ import ( "k8s.io/apiserver/pkg/storage" "k8s.io/apiserver/pkg/storage/storagebackend" "k8s.io/kubernetes/pkg/api" - storeerr "k8s.io/kubernetes/pkg/api/errors/storage" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" "k8s.io/kubernetes/pkg/registry/core/rangeallocation" "k8s.io/kubernetes/pkg/registry/core/service/allocator" + storeerr "k8s.io/kubernetes/pkg/storage/errors" "golang.org/x/net/context" ) diff --git a/pkg/registry/core/service/storage/BUILD b/pkg/registry/core/service/storage/BUILD index a6c24dc332a..8876ebd3aaf 100644 --- a/pkg/registry/core/service/storage/BUILD +++ b/pkg/registry/core/service/storage/BUILD @@ -35,6 +35,7 @@ go_library( "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", "//pkg/genericapiserver/registry/rest:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/core/service:go_default_library", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", "//vendor:k8s.io/apimachinery/pkg/runtime", diff --git a/pkg/registry/core/service/storage/storage.go b/pkg/registry/core/service/storage/storage.go index 36affbff933..f48c493778e 100644 --- a/pkg/registry/core/service/storage/storage.go +++ b/pkg/registry/core/service/storage/storage.go @@ -24,6 +24,7 @@ import ( "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" "k8s.io/kubernetes/pkg/genericapiserver/registry/rest" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/core/service" ) @@ -42,6 +43,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { }, PredicateFunc: service.MatchServices, QualifiedResource: api.Resource("services"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("services"), CreateStrategy: service.Strategy, UpdateStrategy: service.Strategy, diff --git a/pkg/registry/core/serviceaccount/storage/BUILD b/pkg/registry/core/serviceaccount/storage/BUILD index 423e7af32f8..1ff63824410 100644 --- a/pkg/registry/core/serviceaccount/storage/BUILD +++ b/pkg/registry/core/serviceaccount/storage/BUILD @@ -33,6 +33,7 @@ go_library( "//pkg/api:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/core/serviceaccount:go_default_library", "//vendor:k8s.io/apimachinery/pkg/runtime", ], diff --git a/pkg/registry/core/serviceaccount/storage/storage.go b/pkg/registry/core/serviceaccount/storage/storage.go index 184fc0b71b8..8a01952cac2 100644 --- a/pkg/registry/core/serviceaccount/storage/storage.go +++ b/pkg/registry/core/serviceaccount/storage/storage.go @@ -21,6 +21,7 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/core/serviceaccount" ) @@ -39,6 +40,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { }, PredicateFunc: serviceaccount.Matcher, QualifiedResource: api.Resource("serviceaccounts"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("serviceaccounts"), CreateStrategy: serviceaccount.Strategy, UpdateStrategy: serviceaccount.Strategy, diff --git a/pkg/registry/extensions/daemonset/storage/BUILD b/pkg/registry/extensions/daemonset/storage/BUILD index c30b7d1f331..dd57154428c 100644 --- a/pkg/registry/extensions/daemonset/storage/BUILD +++ b/pkg/registry/extensions/daemonset/storage/BUILD @@ -36,6 +36,7 @@ go_library( "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", "//pkg/genericapiserver/registry/rest:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/extensions/daemonset:go_default_library", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", "//vendor:k8s.io/apimachinery/pkg/runtime", diff --git a/pkg/registry/extensions/daemonset/storage/storage.go b/pkg/registry/extensions/daemonset/storage/storage.go index 64797a99d56..a3c78a8aca1 100644 --- a/pkg/registry/extensions/daemonset/storage/storage.go +++ b/pkg/registry/extensions/daemonset/storage/storage.go @@ -25,6 +25,7 @@ import ( "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" "k8s.io/kubernetes/pkg/genericapiserver/registry/rest" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/extensions/daemonset" ) @@ -44,6 +45,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { }, PredicateFunc: daemonset.MatchDaemonSet, QualifiedResource: extensions.Resource("daemonsets"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("daemonsets"), CreateStrategy: daemonset.Strategy, UpdateStrategy: daemonset.Strategy, diff --git a/pkg/registry/extensions/deployment/storage/BUILD b/pkg/registry/extensions/deployment/storage/BUILD index c3e6991278e..3ecc3610c08 100644 --- a/pkg/registry/extensions/deployment/storage/BUILD +++ b/pkg/registry/extensions/deployment/storage/BUILD @@ -15,11 +15,11 @@ go_test( tags = ["automanaged"], deps = [ "//pkg/api:go_default_library", - "//pkg/api/errors/storage:go_default_library", "//pkg/apis/extensions:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/rest:go_default_library", "//pkg/registry/registrytest:go_default_library", + "//pkg/storage/errors:go_default_library", "//pkg/storage/etcd/testing:go_default_library", "//vendor:k8s.io/apimachinery/pkg/api/equality", "//vendor:k8s.io/apimachinery/pkg/api/errors", @@ -39,13 +39,14 @@ go_library( tags = ["automanaged"], deps = [ "//pkg/api:go_default_library", - "//pkg/api/errors/storage:go_default_library", "//pkg/apis/extensions:go_default_library", "//pkg/apis/extensions/validation:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", "//pkg/genericapiserver/registry/rest:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/extensions/deployment:go_default_library", + "//pkg/storage/errors:go_default_library", "//vendor:k8s.io/apimachinery/pkg/api/errors", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", "//vendor:k8s.io/apimachinery/pkg/runtime", diff --git a/pkg/registry/extensions/deployment/storage/storage.go b/pkg/registry/extensions/deployment/storage/storage.go index ff9b0216829..075804e2719 100644 --- a/pkg/registry/extensions/deployment/storage/storage.go +++ b/pkg/registry/extensions/deployment/storage/storage.go @@ -26,13 +26,14 @@ import ( genericapirequest "k8s.io/apiserver/pkg/endpoints/request" "k8s.io/apiserver/pkg/storage" "k8s.io/kubernetes/pkg/api" - storeerr "k8s.io/kubernetes/pkg/api/errors/storage" "k8s.io/kubernetes/pkg/apis/extensions" extvalidation "k8s.io/kubernetes/pkg/apis/extensions/validation" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" "k8s.io/kubernetes/pkg/genericapiserver/registry/rest" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/extensions/deployment" + storeerr "k8s.io/kubernetes/pkg/storage/errors" ) // DeploymentStorage includes dummy storage for Deployments and for Scale subresource. @@ -70,6 +71,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST, *Rollbac }, PredicateFunc: deployment.MatchDeployment, QualifiedResource: extensions.Resource("deployments"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("deployments"), CreateStrategy: deployment.Strategy, UpdateStrategy: deployment.Strategy, diff --git a/pkg/registry/extensions/deployment/storage/storage_test.go b/pkg/registry/extensions/deployment/storage/storage_test.go index 432800f2ef7..e5017b8154f 100644 --- a/pkg/registry/extensions/deployment/storage/storage_test.go +++ b/pkg/registry/extensions/deployment/storage/storage_test.go @@ -30,11 +30,11 @@ import ( "k8s.io/apimachinery/pkg/util/intstr" genericapirequest "k8s.io/apiserver/pkg/endpoints/request" "k8s.io/kubernetes/pkg/api" - storeerr "k8s.io/kubernetes/pkg/api/errors/storage" "k8s.io/kubernetes/pkg/apis/extensions" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" "k8s.io/kubernetes/pkg/genericapiserver/registry/rest" "k8s.io/kubernetes/pkg/registry/registrytest" + storeerr "k8s.io/kubernetes/pkg/storage/errors" etcdtesting "k8s.io/kubernetes/pkg/storage/etcd/testing" ) diff --git a/pkg/registry/extensions/ingress/storage/BUILD b/pkg/registry/extensions/ingress/storage/BUILD index 87a45921b85..c264b4f6ef3 100644 --- a/pkg/registry/extensions/ingress/storage/BUILD +++ b/pkg/registry/extensions/ingress/storage/BUILD @@ -37,6 +37,7 @@ go_library( "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", "//pkg/genericapiserver/registry/rest:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/extensions/ingress:go_default_library", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", "//vendor:k8s.io/apimachinery/pkg/runtime", diff --git a/pkg/registry/extensions/ingress/storage/storage.go b/pkg/registry/extensions/ingress/storage/storage.go index 5704134468f..9d3e4b06dbd 100644 --- a/pkg/registry/extensions/ingress/storage/storage.go +++ b/pkg/registry/extensions/ingress/storage/storage.go @@ -25,6 +25,7 @@ import ( "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" "k8s.io/kubernetes/pkg/genericapiserver/registry/rest" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/extensions/ingress" ) @@ -44,6 +45,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { }, PredicateFunc: ingress.MatchIngress, QualifiedResource: extensions.Resource("ingresses"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("ingresses"), CreateStrategy: ingress.Strategy, UpdateStrategy: ingress.Strategy, diff --git a/pkg/registry/extensions/networkpolicy/storage/BUILD b/pkg/registry/extensions/networkpolicy/storage/BUILD index bab768f60f2..bb7b72225f4 100644 --- a/pkg/registry/extensions/networkpolicy/storage/BUILD +++ b/pkg/registry/extensions/networkpolicy/storage/BUILD @@ -36,6 +36,7 @@ go_library( "//pkg/apis/extensions:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/extensions/networkpolicy:go_default_library", "//vendor:k8s.io/apimachinery/pkg/runtime", ], diff --git a/pkg/registry/extensions/networkpolicy/storage/storage.go b/pkg/registry/extensions/networkpolicy/storage/storage.go index 44518cf498d..7da15b040f8 100644 --- a/pkg/registry/extensions/networkpolicy/storage/storage.go +++ b/pkg/registry/extensions/networkpolicy/storage/storage.go @@ -22,6 +22,7 @@ import ( extensionsapi "k8s.io/kubernetes/pkg/apis/extensions" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/extensions/networkpolicy" ) @@ -41,6 +42,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { }, PredicateFunc: networkpolicy.MatchNetworkPolicy, QualifiedResource: extensionsapi.Resource("networkpolicies"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("networkpolicies"), CreateStrategy: networkpolicy.Strategy, UpdateStrategy: networkpolicy.Strategy, diff --git a/pkg/registry/extensions/podsecuritypolicy/storage/BUILD b/pkg/registry/extensions/podsecuritypolicy/storage/BUILD index bf4b4f1f244..04355b25292 100644 --- a/pkg/registry/extensions/podsecuritypolicy/storage/BUILD +++ b/pkg/registry/extensions/podsecuritypolicy/storage/BUILD @@ -35,6 +35,7 @@ go_library( "//pkg/apis/extensions:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/extensions/podsecuritypolicy:go_default_library", "//vendor:k8s.io/apimachinery/pkg/runtime", ], diff --git a/pkg/registry/extensions/podsecuritypolicy/storage/storage.go b/pkg/registry/extensions/podsecuritypolicy/storage/storage.go index 16e08e25c4f..78ceac9d3b1 100644 --- a/pkg/registry/extensions/podsecuritypolicy/storage/storage.go +++ b/pkg/registry/extensions/podsecuritypolicy/storage/storage.go @@ -22,6 +22,7 @@ import ( "k8s.io/kubernetes/pkg/apis/extensions" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/extensions/podsecuritypolicy" ) @@ -41,6 +42,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { }, PredicateFunc: podsecuritypolicy.MatchPodSecurityPolicy, QualifiedResource: extensions.Resource("podsecuritypolicies"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("podsecuritypolicies"), CreateStrategy: podsecuritypolicy.Strategy, UpdateStrategy: podsecuritypolicy.Strategy, diff --git a/pkg/registry/extensions/replicaset/storage/BUILD b/pkg/registry/extensions/replicaset/storage/BUILD index 0792ece9d39..91adfa3316b 100644 --- a/pkg/registry/extensions/replicaset/storage/BUILD +++ b/pkg/registry/extensions/replicaset/storage/BUILD @@ -42,6 +42,7 @@ go_library( "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", "//pkg/genericapiserver/registry/rest:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/extensions/replicaset:go_default_library", "//vendor:k8s.io/apimachinery/pkg/api/errors", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", diff --git a/pkg/registry/extensions/replicaset/storage/storage.go b/pkg/registry/extensions/replicaset/storage/storage.go index cce09db1d55..6b3128a8a86 100644 --- a/pkg/registry/extensions/replicaset/storage/storage.go +++ b/pkg/registry/extensions/replicaset/storage/storage.go @@ -31,6 +31,7 @@ import ( "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" "k8s.io/kubernetes/pkg/genericapiserver/registry/rest" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/extensions/replicaset" ) @@ -67,6 +68,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { }, PredicateFunc: replicaset.MatchReplicaSet, QualifiedResource: extensions.Resource("replicasets"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("replicasets"), CreateStrategy: replicaset.Strategy, UpdateStrategy: replicaset.Strategy, diff --git a/pkg/registry/extensions/rest/BUILD b/pkg/registry/extensions/rest/BUILD index 244be343ea1..67680b208c3 100644 --- a/pkg/registry/extensions/rest/BUILD +++ b/pkg/registry/extensions/rest/BUILD @@ -29,6 +29,7 @@ go_library( ], tags = ["automanaged"], deps = [ + "//pkg/api:go_default_library", "//pkg/apis/extensions:go_default_library", "//pkg/apis/extensions/v1beta1:go_default_library", "//pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion:go_default_library", diff --git a/pkg/registry/extensions/rest/storage_extensions.go b/pkg/registry/extensions/rest/storage_extensions.go index 3f1b5768eab..c8b96c0dcc3 100644 --- a/pkg/registry/extensions/rest/storage_extensions.go +++ b/pkg/registry/extensions/rest/storage_extensions.go @@ -24,6 +24,7 @@ import ( utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/util/wait" + "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/apis/extensions" extensionsapiv1beta1 "k8s.io/kubernetes/pkg/apis/extensions/v1beta1" extensionsclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion" @@ -45,7 +46,7 @@ type RESTStorageProvider struct { } func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource genericapiserver.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (genericapiserver.APIGroupInfo, bool) { - apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(extensions.GroupName) + apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(extensions.GroupName, api.Registry, api.Scheme, api.ParameterCodec, api.Codecs) if apiResourceConfigSource.AnyResourcesForVersionEnabled(extensionsapiv1beta1.SchemeGroupVersion) { apiGroupInfo.VersionedResourcesStorageMap[extensionsapiv1beta1.SchemeGroupVersion.Version] = p.v1beta1Storage(apiResourceConfigSource, restOptionsGetter) diff --git a/pkg/registry/extensions/thirdpartyresource/storage/BUILD b/pkg/registry/extensions/thirdpartyresource/storage/BUILD index 261ed94033f..1a7b29b6e9b 100644 --- a/pkg/registry/extensions/thirdpartyresource/storage/BUILD +++ b/pkg/registry/extensions/thirdpartyresource/storage/BUILD @@ -35,6 +35,7 @@ go_library( "//pkg/apis/extensions:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/extensions/thirdpartyresource:go_default_library", "//vendor:k8s.io/apimachinery/pkg/runtime", ], diff --git a/pkg/registry/extensions/thirdpartyresource/storage/storage.go b/pkg/registry/extensions/thirdpartyresource/storage/storage.go index c8cd1af4b54..4b6d501001a 100644 --- a/pkg/registry/extensions/thirdpartyresource/storage/storage.go +++ b/pkg/registry/extensions/thirdpartyresource/storage/storage.go @@ -22,6 +22,7 @@ import ( "k8s.io/kubernetes/pkg/apis/extensions" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/extensions/thirdpartyresource" ) @@ -50,6 +51,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { }, PredicateFunc: thirdpartyresource.Matcher, QualifiedResource: resource, + WatchCacheSize: cachesize.GetWatchCacheSizeByResource(resource.Resource), CreateStrategy: thirdpartyresource.Strategy, UpdateStrategy: thirdpartyresource.Strategy, diff --git a/pkg/registry/extensions/thirdpartyresourcedata/storage/BUILD b/pkg/registry/extensions/thirdpartyresourcedata/storage/BUILD index 7782ba1200f..c3102d765bc 100644 --- a/pkg/registry/extensions/thirdpartyresourcedata/storage/BUILD +++ b/pkg/registry/extensions/thirdpartyresourcedata/storage/BUILD @@ -35,6 +35,7 @@ go_library( "//pkg/apis/extensions:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/extensions/thirdpartyresourcedata:go_default_library", "//vendor:k8s.io/apimachinery/pkg/runtime", ], diff --git a/pkg/registry/extensions/thirdpartyresourcedata/storage/storage.go b/pkg/registry/extensions/thirdpartyresourcedata/storage/storage.go index 67e2c7c0ee4..926ce3d500e 100644 --- a/pkg/registry/extensions/thirdpartyresourcedata/storage/storage.go +++ b/pkg/registry/extensions/thirdpartyresourcedata/storage/storage.go @@ -24,6 +24,7 @@ import ( "k8s.io/kubernetes/pkg/apis/extensions" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/extensions/thirdpartyresourcedata" ) @@ -54,6 +55,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter, group, kind string) *REST { }, PredicateFunc: thirdpartyresourcedata.Matcher, QualifiedResource: resource, + WatchCacheSize: cachesize.GetWatchCacheSizeByResource(resource.Resource), CreateStrategy: thirdpartyresourcedata.Strategy, UpdateStrategy: thirdpartyresourcedata.Strategy, diff --git a/pkg/registry/policy/poddisruptionbudget/storage/BUILD b/pkg/registry/policy/poddisruptionbudget/storage/BUILD index d44959102e3..434b83ea928 100644 --- a/pkg/registry/policy/poddisruptionbudget/storage/BUILD +++ b/pkg/registry/policy/poddisruptionbudget/storage/BUILD @@ -38,6 +38,7 @@ go_library( "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", "//pkg/genericapiserver/registry/rest:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/policy/poddisruptionbudget:go_default_library", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", "//vendor:k8s.io/apimachinery/pkg/runtime", diff --git a/pkg/registry/policy/poddisruptionbudget/storage/storage.go b/pkg/registry/policy/poddisruptionbudget/storage/storage.go index e7137b6ece8..9c2270aea72 100644 --- a/pkg/registry/policy/poddisruptionbudget/storage/storage.go +++ b/pkg/registry/policy/poddisruptionbudget/storage/storage.go @@ -25,6 +25,7 @@ import ( "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" "k8s.io/kubernetes/pkg/genericapiserver/registry/rest" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/policy/poddisruptionbudget" ) @@ -44,6 +45,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { }, PredicateFunc: poddisruptionbudget.MatchPodDisruptionBudget, QualifiedResource: policyapi.Resource("poddisruptionbudgets"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("poddisruptionbudgets"), CreateStrategy: poddisruptionbudget.Strategy, UpdateStrategy: poddisruptionbudget.Strategy, diff --git a/pkg/registry/policy/rest/BUILD b/pkg/registry/policy/rest/BUILD index 855ffcce17c..51817d88a3e 100644 --- a/pkg/registry/policy/rest/BUILD +++ b/pkg/registry/policy/rest/BUILD @@ -12,6 +12,7 @@ go_library( srcs = ["storage_policy.go"], tags = ["automanaged"], deps = [ + "//pkg/api:go_default_library", "//pkg/apis/policy:go_default_library", "//pkg/apis/policy/v1beta1:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", diff --git a/pkg/registry/policy/rest/storage_policy.go b/pkg/registry/policy/rest/storage_policy.go index 2a434065483..d100fa1ead9 100644 --- a/pkg/registry/policy/rest/storage_policy.go +++ b/pkg/registry/policy/rest/storage_policy.go @@ -17,6 +17,7 @@ limitations under the License. package rest import ( + "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/apis/policy" policyapiv1beta1 "k8s.io/kubernetes/pkg/apis/policy/v1beta1" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" @@ -28,7 +29,7 @@ import ( type RESTStorageProvider struct{} func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource genericapiserver.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (genericapiserver.APIGroupInfo, bool) { - apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(policy.GroupName) + apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(policy.GroupName, api.Registry, api.Scheme, api.ParameterCodec, api.Codecs) if apiResourceConfigSource.AnyResourcesForVersionEnabled(policyapiv1beta1.SchemeGroupVersion) { apiGroupInfo.VersionedResourcesStorageMap[policyapiv1beta1.SchemeGroupVersion.Version] = p.v1beta1Storage(apiResourceConfigSource, restOptionsGetter) diff --git a/pkg/registry/rbac/clusterrole/storage/BUILD b/pkg/registry/rbac/clusterrole/storage/BUILD index 866563ac616..f49f9f08608 100644 --- a/pkg/registry/rbac/clusterrole/storage/BUILD +++ b/pkg/registry/rbac/clusterrole/storage/BUILD @@ -16,6 +16,7 @@ go_library( "//pkg/apis/rbac:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/rbac/clusterrole:go_default_library", "//vendor:k8s.io/apimachinery/pkg/runtime", ], diff --git a/pkg/registry/rbac/clusterrole/storage/storage.go b/pkg/registry/rbac/clusterrole/storage/storage.go index e1cf3579911..30453c0e25c 100644 --- a/pkg/registry/rbac/clusterrole/storage/storage.go +++ b/pkg/registry/rbac/clusterrole/storage/storage.go @@ -22,6 +22,7 @@ import ( "k8s.io/kubernetes/pkg/apis/rbac" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/rbac/clusterrole" ) @@ -41,6 +42,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { }, PredicateFunc: clusterrole.Matcher, QualifiedResource: rbac.Resource("clusterroles"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("clusterroles"), CreateStrategy: clusterrole.Strategy, UpdateStrategy: clusterrole.Strategy, diff --git a/pkg/registry/rbac/clusterrolebinding/storage/BUILD b/pkg/registry/rbac/clusterrolebinding/storage/BUILD index f3d436aaaed..d0933fd52bb 100644 --- a/pkg/registry/rbac/clusterrolebinding/storage/BUILD +++ b/pkg/registry/rbac/clusterrolebinding/storage/BUILD @@ -16,6 +16,7 @@ go_library( "//pkg/apis/rbac:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/rbac/clusterrolebinding:go_default_library", "//vendor:k8s.io/apimachinery/pkg/runtime", ], diff --git a/pkg/registry/rbac/clusterrolebinding/storage/storage.go b/pkg/registry/rbac/clusterrolebinding/storage/storage.go index b134339bfc5..3fbbe2fd36d 100644 --- a/pkg/registry/rbac/clusterrolebinding/storage/storage.go +++ b/pkg/registry/rbac/clusterrolebinding/storage/storage.go @@ -22,6 +22,7 @@ import ( "k8s.io/kubernetes/pkg/apis/rbac" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/rbac/clusterrolebinding" ) @@ -41,6 +42,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { }, PredicateFunc: clusterrolebinding.Matcher, QualifiedResource: rbac.Resource("clusterrolebindings"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("clusterrolebindings"), CreateStrategy: clusterrolebinding.Strategy, UpdateStrategy: clusterrolebinding.Strategy, diff --git a/pkg/registry/rbac/rest/BUILD b/pkg/registry/rbac/rest/BUILD index 5361dc4b6ab..b9a2db036fa 100644 --- a/pkg/registry/rbac/rest/BUILD +++ b/pkg/registry/rbac/rest/BUILD @@ -12,6 +12,7 @@ go_library( srcs = ["storage_rbac.go"], tags = ["automanaged"], deps = [ + "//pkg/api:go_default_library", "//pkg/apis/rbac:go_default_library", "//pkg/apis/rbac/v1alpha1:go_default_library", "//pkg/apis/rbac/v1beta1:go_default_library", diff --git a/pkg/registry/rbac/rest/storage_rbac.go b/pkg/registry/rbac/rest/storage_rbac.go index d3df1571937..9a41d3effb2 100644 --- a/pkg/registry/rbac/rest/storage_rbac.go +++ b/pkg/registry/rbac/rest/storage_rbac.go @@ -28,6 +28,7 @@ import ( utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/apiserver/pkg/authorization/authorizer" + "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/apis/rbac" rbacapiv1alpha1 "k8s.io/kubernetes/pkg/apis/rbac/v1alpha1" rbacapiv1beta1 "k8s.io/kubernetes/pkg/apis/rbac/v1beta1" @@ -58,7 +59,7 @@ type RESTStorageProvider struct { var _ genericapiserver.PostStartHookProvider = RESTStorageProvider{} func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource genericapiserver.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (genericapiserver.APIGroupInfo, bool) { - apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(rbac.GroupName) + apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(rbac.GroupName, api.Registry, api.Scheme, api.ParameterCodec, api.Codecs) if apiResourceConfigSource.AnyResourcesForVersionEnabled(rbacapiv1alpha1.SchemeGroupVersion) { apiGroupInfo.VersionedResourcesStorageMap[rbacapiv1alpha1.SchemeGroupVersion.Version] = p.storage(rbacapiv1alpha1.SchemeGroupVersion, apiResourceConfigSource, restOptionsGetter) diff --git a/pkg/registry/rbac/role/storage/BUILD b/pkg/registry/rbac/role/storage/BUILD index 9a10a4edbf1..c2ede437a88 100644 --- a/pkg/registry/rbac/role/storage/BUILD +++ b/pkg/registry/rbac/role/storage/BUILD @@ -16,6 +16,7 @@ go_library( "//pkg/apis/rbac:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/rbac/role:go_default_library", "//vendor:k8s.io/apimachinery/pkg/runtime", ], diff --git a/pkg/registry/rbac/role/storage/storage.go b/pkg/registry/rbac/role/storage/storage.go index 4c54fc489c6..dd181a14b94 100644 --- a/pkg/registry/rbac/role/storage/storage.go +++ b/pkg/registry/rbac/role/storage/storage.go @@ -22,6 +22,7 @@ import ( "k8s.io/kubernetes/pkg/apis/rbac" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/rbac/role" ) @@ -41,6 +42,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { }, PredicateFunc: role.Matcher, QualifiedResource: rbac.Resource("roles"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("roles"), CreateStrategy: role.Strategy, UpdateStrategy: role.Strategy, diff --git a/pkg/registry/rbac/rolebinding/storage/BUILD b/pkg/registry/rbac/rolebinding/storage/BUILD index ccac1a80776..c85b50d7f13 100644 --- a/pkg/registry/rbac/rolebinding/storage/BUILD +++ b/pkg/registry/rbac/rolebinding/storage/BUILD @@ -16,6 +16,7 @@ go_library( "//pkg/apis/rbac:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/rbac/rolebinding:go_default_library", "//vendor:k8s.io/apimachinery/pkg/runtime", ], diff --git a/pkg/registry/rbac/rolebinding/storage/storage.go b/pkg/registry/rbac/rolebinding/storage/storage.go index c68fbaf8c37..20df712c6b4 100644 --- a/pkg/registry/rbac/rolebinding/storage/storage.go +++ b/pkg/registry/rbac/rolebinding/storage/storage.go @@ -22,6 +22,7 @@ import ( "k8s.io/kubernetes/pkg/apis/rbac" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/rbac/rolebinding" ) @@ -41,6 +42,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { }, PredicateFunc: rolebinding.Matcher, QualifiedResource: rbac.Resource("rolebindings"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("rolebindings"), CreateStrategy: rolebinding.Strategy, UpdateStrategy: rolebinding.Strategy, diff --git a/pkg/registry/storage/rest/BUILD b/pkg/registry/storage/rest/BUILD index f96296800a4..174114b4a45 100644 --- a/pkg/registry/storage/rest/BUILD +++ b/pkg/registry/storage/rest/BUILD @@ -12,6 +12,7 @@ go_library( srcs = ["storage_storage.go"], tags = ["automanaged"], deps = [ + "//pkg/api:go_default_library", "//pkg/apis/storage:go_default_library", "//pkg/apis/storage/v1beta1:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", diff --git a/pkg/registry/storage/rest/storage_storage.go b/pkg/registry/storage/rest/storage_storage.go index 1dbd12e3df8..311701bed94 100644 --- a/pkg/registry/storage/rest/storage_storage.go +++ b/pkg/registry/storage/rest/storage_storage.go @@ -17,6 +17,7 @@ limitations under the License. package rest import ( + "k8s.io/kubernetes/pkg/api" storageapi "k8s.io/kubernetes/pkg/apis/storage" storageapiv1beta1 "k8s.io/kubernetes/pkg/apis/storage/v1beta1" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" @@ -29,7 +30,7 @@ type RESTStorageProvider struct { } func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource genericapiserver.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (genericapiserver.APIGroupInfo, bool) { - apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(storageapi.GroupName) + apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(storageapi.GroupName, api.Registry, api.Scheme, api.ParameterCodec, api.Codecs) if apiResourceConfigSource.AnyResourcesForVersionEnabled(storageapiv1beta1.SchemeGroupVersion) { apiGroupInfo.VersionedResourcesStorageMap[storageapiv1beta1.SchemeGroupVersion.Version] = p.v1beta1Storage(apiResourceConfigSource, restOptionsGetter) diff --git a/pkg/registry/storage/storageclass/storage/BUILD b/pkg/registry/storage/storageclass/storage/BUILD index f61192518c8..e1248add765 100644 --- a/pkg/registry/storage/storageclass/storage/BUILD +++ b/pkg/registry/storage/storageclass/storage/BUILD @@ -34,6 +34,7 @@ go_library( "//pkg/apis/storage:go_default_library", "//pkg/genericapiserver/registry/generic:go_default_library", "//pkg/genericapiserver/registry/generic/registry:go_default_library", + "//pkg/registry/cachesize:go_default_library", "//pkg/registry/storage/storageclass:go_default_library", "//vendor:k8s.io/apimachinery/pkg/runtime", ], diff --git a/pkg/registry/storage/storageclass/storage/storage.go b/pkg/registry/storage/storageclass/storage/storage.go index 9c96dd7362a..0c7cf8a8df6 100644 --- a/pkg/registry/storage/storageclass/storage/storage.go +++ b/pkg/registry/storage/storageclass/storage/storage.go @@ -22,6 +22,7 @@ import ( storageapi "k8s.io/kubernetes/pkg/apis/storage" "k8s.io/kubernetes/pkg/genericapiserver/registry/generic" genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry" + "k8s.io/kubernetes/pkg/registry/cachesize" "k8s.io/kubernetes/pkg/registry/storage/storageclass" ) @@ -40,6 +41,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { }, PredicateFunc: storageclass.MatchStorageClasses, QualifiedResource: storageapi.Resource("storageclasses"), + WatchCacheSize: cachesize.GetWatchCacheSizeByResource("storageclass"), CreateStrategy: storageclass.Strategy, UpdateStrategy: storageclass.Strategy, diff --git a/pkg/api/errors/storage/BUILD b/pkg/storage/errors/BUILD similarity index 100% rename from pkg/api/errors/storage/BUILD rename to pkg/storage/errors/BUILD diff --git a/pkg/api/errors/storage/doc.go b/pkg/storage/errors/doc.go similarity index 90% rename from pkg/api/errors/storage/doc.go rename to pkg/storage/errors/doc.go index 7655da4d841..012e4b8e008 100644 --- a/pkg/api/errors/storage/doc.go +++ b/pkg/storage/errors/doc.go @@ -15,4 +15,4 @@ limitations under the License. */ // Package etcd provides conversion of etcd errors to API errors. -package storage // import "k8s.io/kubernetes/pkg/api/errors/storage" +package storage // import "k8s.io/kubernetes/pkg/storage/errors" diff --git a/pkg/api/errors/storage/storage.go b/pkg/storage/errors/storage.go similarity index 100% rename from pkg/api/errors/storage/storage.go rename to pkg/storage/errors/storage.go diff --git a/staging/src/k8s.io/apimachinery/pkg/api/testing/codec.go b/staging/src/k8s.io/apimachinery/pkg/api/testing/codec.go index 40b40fbbd1e..8ed8008a8bd 100644 --- a/staging/src/k8s.io/apimachinery/pkg/api/testing/codec.go +++ b/staging/src/k8s.io/apimachinery/pkg/api/testing/codec.go @@ -24,29 +24,63 @@ import ( "k8s.io/apimachinery/pkg/runtime" runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer" "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/runtime/serializer/recognizer" ) -var testCodecMediaType string +var ( + testCodecMediaType string + testStorageCodecMediaType string +) // TestCodec returns the codec for the API version to test against, as set by the // KUBE_TEST_API_TYPE env var. func TestCodec(codecs runtimeserializer.CodecFactory, gvs ...schema.GroupVersion) runtime.Codec { if len(testCodecMediaType) != 0 { - serializer, ok := runtime.SerializerInfoForMediaType(codecs.SupportedMediaTypes(), testCodecMediaType) + serializerInfo, ok := runtime.SerializerInfoForMediaType(codecs.SupportedMediaTypes(), testCodecMediaType) if !ok { panic(fmt.Sprintf("no serializer for %s", testCodecMediaType)) } - return codecs.CodecForVersions(serializer.Serializer, codecs.UniversalDeserializer(), schema.GroupVersions(gvs), nil) + return codecs.CodecForVersions(serializerInfo.Serializer, codecs.UniversalDeserializer(), schema.GroupVersions(gvs), nil) + } + return codecs.LegacyCodec(gvs...) +} + +// TestStorageCodec returns the codec for the API version to test against used in storage, as set by the +// KUBE_TEST_API_STORAGE_TYPE env var. +func TestStorageCodec(codecs runtimeserializer.CodecFactory, gvs ...schema.GroupVersion) runtime.Codec { + if len(testStorageCodecMediaType) != 0 { + serializerInfo, ok := runtime.SerializerInfoForMediaType(codecs.SupportedMediaTypes(), testStorageCodecMediaType) + if !ok { + panic(fmt.Sprintf("no serializer for %s", testStorageCodecMediaType)) + } + + // etcd2 only supports string data - we must wrap any result before returning + // TODO: remove for etcd3 / make parameterizable + serializer := serializerInfo.Serializer + if !serializerInfo.EncodesAsText { + serializer = runtime.NewBase64Serializer(serializer) + } + + decoder := recognizer.NewDecoder(serializer, codecs.UniversalDeserializer()) + return codecs.CodecForVersions(serializer, decoder, schema.GroupVersions(gvs), nil) + } return codecs.LegacyCodec(gvs...) } func init() { + var err error if apiMediaType := os.Getenv("KUBE_TEST_API_TYPE"); len(apiMediaType) > 0 { - var err error testCodecMediaType, _, err = mime.ParseMediaType(apiMediaType) if err != nil { panic(err) } } + + if storageMediaType := os.Getenv("KUBE_TEST_API_STORAGE_TYPE"); len(storageMediaType) > 0 { + testStorageCodecMediaType, _, err = mime.ParseMediaType(storageMediaType) + if err != nil { + panic(err) + } + } } diff --git a/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/types.go b/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/types.go index 11fc5b60f3e..af78044bdf0 100644 --- a/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/types.go +++ b/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/types.go @@ -71,6 +71,11 @@ type ListMeta struct { ResourceVersion string `json:"resourceVersion,omitempty" protobuf:"bytes,2,opt,name=resourceVersion"` } +// These are internal finalizer values for Kubernetes-like APIs, must be qualified name unless defined here +const ( + FinalizerOrphan string = "orphan" +) + // ObjectMeta is metadata that all persisted resources must have, which includes all objects // users must create. type ObjectMeta struct { diff --git a/staging/src/k8s.io/client-go/pkg/api/v1/helpers.go b/staging/src/k8s.io/client-go/pkg/api/v1/helpers.go index f0ebe997f74..57468707996 100644 --- a/staging/src/k8s.io/client-go/pkg/api/v1/helpers.go +++ b/staging/src/k8s.io/client-go/pkg/api/v1/helpers.go @@ -26,6 +26,7 @@ import ( "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/client-go/pkg/api" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) // IsOpaqueIntResourceName returns true if the resource name has the opaque @@ -82,7 +83,7 @@ func IsServiceIPRequested(service *Service) bool { var standardFinalizers = sets.NewString( string(FinalizerKubernetes), - FinalizerOrphan, + metav1.FinalizerOrphan, ) func IsStandardFinalizerName(str string) bool { diff --git a/staging/src/k8s.io/client-go/pkg/api/v1/types.go b/staging/src/k8s.io/client-go/pkg/api/v1/types.go index be90da724b6..393e95a5bfb 100644 --- a/staging/src/k8s.io/client-go/pkg/api/v1/types.go +++ b/staging/src/k8s.io/client-go/pkg/api/v1/types.go @@ -3223,7 +3223,6 @@ type FinalizerName string // These are internal finalizer values to Kubernetes, must be qualified name unless defined here const ( FinalizerKubernetes FinalizerName = "kubernetes" - FinalizerOrphan string = "orphan" ) // NamespaceSpec describes the attributes on a Namespace. diff --git a/test/integration/framework/master_utils.go b/test/integration/framework/master_utils.go index efbb91f994a..e14e1af7e5a 100644 --- a/test/integration/framework/master_utils.go +++ b/test/integration/framework/master_utils.go @@ -183,7 +183,7 @@ func startMasterOrDie(masterConfig *master.Config, incomingServer *httptest.Serv masterConfig = NewMasterConfig() masterConfig.GenericConfig.EnableProfiling = true masterConfig.GenericConfig.EnableMetrics = true - masterConfig.GenericConfig.OpenAPIConfig = genericapiserver.DefaultOpenAPIConfig(openapi.GetOpenAPIDefinitions) + masterConfig.GenericConfig.OpenAPIConfig = genericapiserver.DefaultOpenAPIConfig(openapi.GetOpenAPIDefinitions, api.Scheme) masterConfig.GenericConfig.OpenAPIConfig.Info = &spec.Info{ InfoProps: spec.InfoProps{ Title: "Kubernetes", @@ -317,7 +317,7 @@ func NewMasterConfig() *master.Config { info, _ := runtime.SerializerInfoForMediaType(api.Codecs.SupportedMediaTypes(), runtime.ContentTypeJSON) ns := NewSingleContentTypeSerializer(api.Scheme, info) - storageFactory := genericapiserver.NewDefaultStorageFactory(config, runtime.ContentTypeJSON, ns, genericapiserver.NewDefaultResourceEncodingConfig(), master.DefaultAPIResourceConfigSource()) + storageFactory := genericapiserver.NewDefaultStorageFactory(config, runtime.ContentTypeJSON, ns, genericapiserver.NewDefaultResourceEncodingConfig(api.Registry), master.DefaultAPIResourceConfigSource()) storageFactory.SetSerializer( schema.GroupResource{Group: v1.GroupName, Resource: genericapiserver.AllResources}, "", @@ -355,7 +355,7 @@ func NewMasterConfig() *master.Config { "", ns) - genericConfig := genericapiserver.NewConfig() + genericConfig := genericapiserver.NewConfig().WithSerializer(api.Codecs) kubeVersion := version.Get() genericConfig.Version = &kubeVersion genericConfig.Authorizer = authorizerfactory.NewAlwaysAllowAuthorizer() diff --git a/test/integration/garbagecollector/garbage_collector_test.go b/test/integration/garbagecollector/garbage_collector_test.go index f51b0bfb1d7..3963ca796be 100644 --- a/test/integration/garbagecollector/garbage_collector_test.go +++ b/test/integration/garbagecollector/garbage_collector_test.go @@ -297,7 +297,7 @@ func setupRCsPods(t *testing.T, gc *garbagecollector.GarbageCollector, clientSet } podUIDs = append(podUIDs, pod.ObjectMeta.UID) } - orphan := (options != nil && options.OrphanDependents != nil && *options.OrphanDependents) || (options == nil && len(initialFinalizers) != 0 && initialFinalizers[0] == api.FinalizerOrphan) + orphan := (options != nil && options.OrphanDependents != nil && *options.OrphanDependents) || (options == nil && len(initialFinalizers) != 0 && initialFinalizers[0] == metav1.FinalizerOrphan) // if we intend to orphan the pods, we need wait for the gc to observe the // creation of the pods, otherwise if the deletion of RC is observed before // the creation of the pods, the pods will not be orphaned. @@ -356,9 +356,9 @@ func TestStressingCascadingDeletion(t *testing.T) { // rc is created with empty finalizers, deleted with nil delete options, pods will remain. go setupRCsPods(t, gc, clientSet, "collection1-"+strconv.Itoa(i), ns.Name, []string{}, nil, &wg, rcUIDs) // rc is created with the orphan finalizer, deleted with nil options, pods will remain. - go setupRCsPods(t, gc, clientSet, "collection2-"+strconv.Itoa(i), ns.Name, []string{api.FinalizerOrphan}, nil, &wg, rcUIDs) + go setupRCsPods(t, gc, clientSet, "collection2-"+strconv.Itoa(i), ns.Name, []string{metav1.FinalizerOrphan}, nil, &wg, rcUIDs) // rc is created with the orphan finalizer, deleted with DeleteOptions.OrphanDependents=false, pods will be deleted. - go setupRCsPods(t, gc, clientSet, "collection3-"+strconv.Itoa(i), ns.Name, []string{api.FinalizerOrphan}, getNonOrphanOptions(), &wg, rcUIDs) + go setupRCsPods(t, gc, clientSet, "collection3-"+strconv.Itoa(i), ns.Name, []string{metav1.FinalizerOrphan}, getNonOrphanOptions(), &wg, rcUIDs) // rc is created with empty finalizers, deleted with DeleteOptions.OrphanDependents=true, pods will remain. go setupRCsPods(t, gc, clientSet, "collection4-"+strconv.Itoa(i), ns.Name, []string{}, getOrphanOptions(), &wg, rcUIDs) } diff --git a/vendor/BUILD b/vendor/BUILD index 95134b9dd29..a6fabee34f7 100644 --- a/vendor/BUILD +++ b/vendor/BUILD @@ -13774,6 +13774,7 @@ go_library( "//vendor:k8s.io/apimachinery/pkg/runtime", "//vendor:k8s.io/apimachinery/pkg/runtime/schema", "//vendor:k8s.io/apimachinery/pkg/runtime/serializer", + "//vendor:k8s.io/apimachinery/pkg/runtime/serializer/recognizer", "//vendor:k8s.io/apimachinery/pkg/types", ], )