mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	remove storage dependency on api
This commit is contained in:
		@@ -14,6 +14,7 @@ go_library(
 | 
				
			|||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
        "//cmd/kube-aggregator/pkg/apis/apiregistration:go_default_library",
 | 
					        "//cmd/kube-aggregator/pkg/apis/apiregistration:go_default_library",
 | 
				
			||||||
        "//cmd/kube-aggregator/pkg/registry/apiservice:go_default_library",
 | 
					        "//cmd/kube-aggregator/pkg/registry/apiservice:go_default_library",
 | 
				
			||||||
 | 
					        "//pkg/api:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
				
			||||||
        "//vendor:k8s.io/apimachinery/pkg/runtime",
 | 
					        "//vendor:k8s.io/apimachinery/pkg/runtime",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,6 +20,7 @@ import (
 | 
				
			|||||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
						"k8s.io/apimachinery/pkg/runtime"
 | 
				
			||||||
	"k8s.io/kubernetes/cmd/kube-aggregator/pkg/apis/apiregistration"
 | 
						"k8s.io/kubernetes/cmd/kube-aggregator/pkg/apis/apiregistration"
 | 
				
			||||||
	"k8s.io/kubernetes/cmd/kube-aggregator/pkg/registry/apiservice"
 | 
						"k8s.io/kubernetes/cmd/kube-aggregator/pkg/registry/apiservice"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
						"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
				
			||||||
	genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
						genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -32,6 +33,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against API services.
 | 
					// NewREST returns a RESTStorage object that will work against API services.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &apiregistration.APIService{} },
 | 
							NewFunc:     func() runtime.Object { return &apiregistration.APIService{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &apiregistration.APIServiceList{} },
 | 
							NewListFunc: func() runtime.Object { return &apiregistration.APIServiceList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,6 +39,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work with testtype.
 | 
					// NewREST returns a RESTStorage object that will work with testtype.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:  api.Scheme,
 | 
				
			||||||
		NewFunc: func() runtime.Object { return &testgroup.TestType{} },
 | 
							NewFunc: func() runtime.Object { return &testgroup.TestType{} },
 | 
				
			||||||
		// NewListFunc returns an object capable of storing results of an etcd list.
 | 
							// NewListFunc returns an object capable of storing results of an etcd list.
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &testgroup.TestTypeList{} },
 | 
							NewListFunc: func() runtime.Object { return &testgroup.TestTypeList{} },
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,6 +15,7 @@ go_library(
 | 
				
			|||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
        "//federation/apis/federation:go_default_library",
 | 
					        "//federation/apis/federation:go_default_library",
 | 
				
			||||||
        "//federation/registry/cluster:go_default_library",
 | 
					        "//federation/registry/cluster:go_default_library",
 | 
				
			||||||
 | 
					        "//pkg/api:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/rest:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/rest:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,6 +21,7 @@ import (
 | 
				
			|||||||
	genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
 | 
						genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
 | 
				
			||||||
	"k8s.io/kubernetes/federation/apis/federation"
 | 
						"k8s.io/kubernetes/federation/apis/federation"
 | 
				
			||||||
	"k8s.io/kubernetes/federation/registry/cluster"
 | 
						"k8s.io/kubernetes/federation/registry/cluster"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
						"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
				
			||||||
	genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
						genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver/registry/rest"
 | 
						"k8s.io/kubernetes/pkg/genericapiserver/registry/rest"
 | 
				
			||||||
@@ -46,6 +47,7 @@ func (r *StatusREST) Update(ctx genericapirequest.Context, name string, objInfo
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against clusters.
 | 
					// NewREST returns a RESTStorage object that will work against clusters.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &federation.Cluster{} },
 | 
							NewFunc:     func() runtime.Object { return &federation.Cluster{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &federation.ClusterList{} },
 | 
							NewListFunc: func() runtime.Object { return &federation.ClusterList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,6 +29,7 @@ var _ generic.StorageDecorator = StorageWithCacher
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Creates a cacher based given storageConfig.
 | 
					// Creates a cacher based given storageConfig.
 | 
				
			||||||
func StorageWithCacher(
 | 
					func StorageWithCacher(
 | 
				
			||||||
 | 
						copier runtime.ObjectCopier,
 | 
				
			||||||
	storageConfig *storagebackend.Config,
 | 
						storageConfig *storagebackend.Config,
 | 
				
			||||||
	capacity int,
 | 
						capacity int,
 | 
				
			||||||
	objectType runtime.Object,
 | 
						objectType runtime.Object,
 | 
				
			||||||
@@ -45,6 +46,7 @@ func StorageWithCacher(
 | 
				
			|||||||
		CacheCapacity:        capacity,
 | 
							CacheCapacity:        capacity,
 | 
				
			||||||
		Storage:              s,
 | 
							Storage:              s,
 | 
				
			||||||
		Versioner:            etcdstorage.APIObjectVersioner{},
 | 
							Versioner:            etcdstorage.APIObjectVersioner{},
 | 
				
			||||||
 | 
							Copier:               copier,
 | 
				
			||||||
		Type:                 objectType,
 | 
							Type:                 objectType,
 | 
				
			||||||
		ResourcePrefix:       resourcePrefix,
 | 
							ResourcePrefix:       resourcePrefix,
 | 
				
			||||||
		KeyFunc:              keyFunc,
 | 
							KeyFunc:              keyFunc,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -67,6 +67,9 @@ type ObjectFunc func(obj runtime.Object) error
 | 
				
			|||||||
//
 | 
					//
 | 
				
			||||||
// TODO: make the default exposed methods exactly match a generic RESTStorage
 | 
					// TODO: make the default exposed methods exactly match a generic RESTStorage
 | 
				
			||||||
type Store struct {
 | 
					type Store struct {
 | 
				
			||||||
 | 
						// Copier is used to make some storage caching decorators work
 | 
				
			||||||
 | 
						Copier runtime.ObjectCopier
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// NewFunc returns a new instance of the type this registry returns for a
 | 
						// NewFunc returns a new instance of the type this registry returns for a
 | 
				
			||||||
	// GET of a single object, e.g.:
 | 
						// GET of a single object, e.g.:
 | 
				
			||||||
	//
 | 
						//
 | 
				
			||||||
@@ -1116,6 +1119,7 @@ func (e *Store) CompleteWithOptions(options *generic.StoreOptions) error {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if e.Storage == nil {
 | 
						if e.Storage == nil {
 | 
				
			||||||
		e.Storage, e.DestroyFunc = opts.Decorator(
 | 
							e.Storage, e.DestroyFunc = opts.Decorator(
 | 
				
			||||||
 | 
								e.Copier,
 | 
				
			||||||
			opts.StorageConfig,
 | 
								opts.StorageConfig,
 | 
				
			||||||
			cachesize.GetWatchCacheSizeByResource(cachesize.Resource(e.QualifiedResource.Resource)),
 | 
								cachesize.GetWatchCacheSizeByResource(cachesize.Resource(e.QualifiedResource.Resource)),
 | 
				
			||||||
			e.NewFunc(),
 | 
								e.NewFunc(),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1251,6 +1251,7 @@ func newTestGenericStoreRegistry(t *testing.T, hasCacheEnabled bool) (factory.De
 | 
				
			|||||||
			CacheCapacity:  10,
 | 
								CacheCapacity:  10,
 | 
				
			||||||
			Storage:        s,
 | 
								Storage:        s,
 | 
				
			||||||
			Versioner:      etcdstorage.APIObjectVersioner{},
 | 
								Versioner:      etcdstorage.APIObjectVersioner{},
 | 
				
			||||||
 | 
								Copier:         api.Scheme,
 | 
				
			||||||
			Type:           &api.Pod{},
 | 
								Type:           &api.Pod{},
 | 
				
			||||||
			ResourcePrefix: podPrefix,
 | 
								ResourcePrefix: podPrefix,
 | 
				
			||||||
			KeyFunc:        func(obj runtime.Object) (string, error) { return storage.NoNamespaceKeyFunc(podPrefix, obj) },
 | 
								KeyFunc:        func(obj runtime.Object) (string, error) { return storage.NoNamespaceKeyFunc(podPrefix, obj) },
 | 
				
			||||||
@@ -1268,6 +1269,7 @@ func newTestGenericStoreRegistry(t *testing.T, hasCacheEnabled bool) (factory.De
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return destroyFunc, &Store{
 | 
						return destroyFunc, &Store{
 | 
				
			||||||
 | 
							Copier:            api.Scheme,
 | 
				
			||||||
		NewFunc:           func() runtime.Object { return &api.Pod{} },
 | 
							NewFunc:           func() runtime.Object { return &api.Pod{} },
 | 
				
			||||||
		NewListFunc:       func() runtime.Object { return &api.PodList{} },
 | 
							NewListFunc:       func() runtime.Object { return &api.PodList{} },
 | 
				
			||||||
		QualifiedResource: api.Resource("pods"),
 | 
							QualifiedResource: api.Resource("pods"),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,6 +27,7 @@ import (
 | 
				
			|||||||
// StorageDecorator is a function signature for producing a storage.Interface
 | 
					// StorageDecorator is a function signature for producing a storage.Interface
 | 
				
			||||||
// and an associated DestroyFunc from given parameters.
 | 
					// and an associated DestroyFunc from given parameters.
 | 
				
			||||||
type StorageDecorator func(
 | 
					type StorageDecorator func(
 | 
				
			||||||
 | 
						copier runtime.ObjectCopier,
 | 
				
			||||||
	config *storagebackend.Config,
 | 
						config *storagebackend.Config,
 | 
				
			||||||
	capacity int,
 | 
						capacity int,
 | 
				
			||||||
	objectType runtime.Object,
 | 
						objectType runtime.Object,
 | 
				
			||||||
@@ -39,6 +40,7 @@ type StorageDecorator func(
 | 
				
			|||||||
// UndecoratedStorage returns the given a new storage from the given config
 | 
					// UndecoratedStorage returns the given a new storage from the given config
 | 
				
			||||||
// without any decoration.
 | 
					// without any decoration.
 | 
				
			||||||
func UndecoratedStorage(
 | 
					func UndecoratedStorage(
 | 
				
			||||||
 | 
						copier runtime.ObjectCopier,
 | 
				
			||||||
	config *storagebackend.Config,
 | 
						config *storagebackend.Config,
 | 
				
			||||||
	capacity int,
 | 
						capacity int,
 | 
				
			||||||
	objectType runtime.Object,
 | 
						objectType runtime.Object,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,6 +32,7 @@ go_library(
 | 
				
			|||||||
    srcs = ["storage.go"],
 | 
					    srcs = ["storage.go"],
 | 
				
			||||||
    tags = ["automanaged"],
 | 
					    tags = ["automanaged"],
 | 
				
			||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
 | 
					        "//pkg/api:go_default_library",
 | 
				
			||||||
        "//pkg/apis/apps:go_default_library",
 | 
					        "//pkg/apis/apps:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,6 +20,7 @@ import (
 | 
				
			|||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
						"k8s.io/apimachinery/pkg/runtime"
 | 
				
			||||||
	genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
 | 
						genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	appsapi "k8s.io/kubernetes/pkg/apis/apps"
 | 
						appsapi "k8s.io/kubernetes/pkg/apis/apps"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
						"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
				
			||||||
	genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
						genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
				
			||||||
@@ -35,6 +36,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against replication controllers.
 | 
					// NewREST returns a RESTStorage object that will work against replication controllers.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &appsapi.StatefulSet{} },
 | 
							NewFunc:     func() runtime.Object { return &appsapi.StatefulSet{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &appsapi.StatefulSetList{} },
 | 
							NewListFunc: func() runtime.Object { return &appsapi.StatefulSetList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,6 +31,7 @@ go_library(
 | 
				
			|||||||
    srcs = ["storage.go"],
 | 
					    srcs = ["storage.go"],
 | 
				
			||||||
    tags = ["automanaged"],
 | 
					    tags = ["automanaged"],
 | 
				
			||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
 | 
					        "//pkg/api:go_default_library",
 | 
				
			||||||
        "//pkg/apis/autoscaling:go_default_library",
 | 
					        "//pkg/apis/autoscaling:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,6 +20,7 @@ import (
 | 
				
			|||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
						"k8s.io/apimachinery/pkg/runtime"
 | 
				
			||||||
	genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
 | 
						genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/autoscaling"
 | 
						"k8s.io/kubernetes/pkg/apis/autoscaling"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
						"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
				
			||||||
	genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
						genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
				
			||||||
@@ -34,6 +35,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against horizontal pod autoscalers.
 | 
					// NewREST returns a RESTStorage object that will work against horizontal pod autoscalers.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &autoscaling.HorizontalPodAutoscaler{} },
 | 
							NewFunc:     func() runtime.Object { return &autoscaling.HorizontalPodAutoscaler{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &autoscaling.HorizontalPodAutoscalerList{} },
 | 
							NewListFunc: func() runtime.Object { return &autoscaling.HorizontalPodAutoscalerList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -33,6 +33,7 @@ go_library(
 | 
				
			|||||||
    srcs = ["storage.go"],
 | 
					    srcs = ["storage.go"],
 | 
				
			||||||
    tags = ["automanaged"],
 | 
					    tags = ["automanaged"],
 | 
				
			||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
 | 
					        "//pkg/api:go_default_library",
 | 
				
			||||||
        "//pkg/apis/batch:go_default_library",
 | 
					        "//pkg/apis/batch:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,6 +20,7 @@ import (
 | 
				
			|||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
						"k8s.io/apimachinery/pkg/runtime"
 | 
				
			||||||
	genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
 | 
						genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/batch"
 | 
						"k8s.io/kubernetes/pkg/apis/batch"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
						"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
				
			||||||
	genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
						genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
				
			||||||
@@ -35,6 +36,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against CronJobs.
 | 
					// NewREST returns a RESTStorage object that will work against CronJobs.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &batch.CronJob{} },
 | 
							NewFunc:     func() runtime.Object { return &batch.CronJob{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &batch.CronJobList{} },
 | 
							NewListFunc: func() runtime.Object { return &batch.CronJobList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,6 +31,7 @@ go_library(
 | 
				
			|||||||
    srcs = ["storage.go"],
 | 
					    srcs = ["storage.go"],
 | 
				
			||||||
    tags = ["automanaged"],
 | 
					    tags = ["automanaged"],
 | 
				
			||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
 | 
					        "//pkg/api:go_default_library",
 | 
				
			||||||
        "//pkg/apis/batch:go_default_library",
 | 
					        "//pkg/apis/batch:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,6 +20,7 @@ import (
 | 
				
			|||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
						"k8s.io/apimachinery/pkg/runtime"
 | 
				
			||||||
	genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
 | 
						genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/batch"
 | 
						"k8s.io/kubernetes/pkg/apis/batch"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
						"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
				
			||||||
	genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
						genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
				
			||||||
@@ -50,6 +51,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against Jobs.
 | 
					// NewREST returns a RESTStorage object that will work against Jobs.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &batch.Job{} },
 | 
							NewFunc:     func() runtime.Object { return &batch.Job{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &batch.JobList{} },
 | 
							NewListFunc: func() runtime.Object { return &batch.JobList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,6 +12,7 @@ go_library(
 | 
				
			|||||||
    srcs = ["storage.go"],
 | 
					    srcs = ["storage.go"],
 | 
				
			||||||
    tags = ["automanaged"],
 | 
					    tags = ["automanaged"],
 | 
				
			||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
 | 
					        "//pkg/api:go_default_library",
 | 
				
			||||||
        "//pkg/apis/certificates:go_default_library",
 | 
					        "//pkg/apis/certificates:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,6 +19,7 @@ package storage
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
						"k8s.io/apimachinery/pkg/runtime"
 | 
				
			||||||
	genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
 | 
						genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/certificates"
 | 
						"k8s.io/kubernetes/pkg/apis/certificates"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
						"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
				
			||||||
	genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
						genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
				
			||||||
@@ -34,6 +35,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a registry which will store CertificateSigningRequest in the given helper
 | 
					// NewREST returns a registry which will store CertificateSigningRequest in the given helper
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST, *ApprovalREST) {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST, *ApprovalREST) {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &certificates.CertificateSigningRequest{} },
 | 
							NewFunc:     func() runtime.Object { return &certificates.CertificateSigningRequest{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &certificates.CertificateSigningRequestList{} },
 | 
							NewListFunc: func() runtime.Object { return &certificates.CertificateSigningRequestList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,6 +32,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work with ConfigMap objects.
 | 
					// NewREST returns a RESTStorage object that will work with ConfigMap objects.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &api.ConfigMap{} },
 | 
							NewFunc:     func() runtime.Object { return &api.ConfigMap{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &api.ConfigMapList{} },
 | 
							NewListFunc: func() runtime.Object { return &api.ConfigMapList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,6 +31,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against endpoints.
 | 
					// NewREST returns a RESTStorage object that will work against endpoints.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &api.Endpoints{} },
 | 
							NewFunc:     func() runtime.Object { return &api.Endpoints{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &api.EndpointsList{} },
 | 
							NewListFunc: func() runtime.Object { return &api.EndpointsList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -41,6 +41,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter, ttl uint64) *REST {
 | 
				
			|||||||
	opts.Decorator = generic.UndecoratedStorage // TODO use watchCacheSize=-1 to signal UndecoratedStorage
 | 
						opts.Decorator = generic.UndecoratedStorage // TODO use watchCacheSize=-1 to signal UndecoratedStorage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &api.Event{} },
 | 
							NewFunc:     func() runtime.Object { return &api.Event{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &api.EventList{} },
 | 
							NewListFunc: func() runtime.Object { return &api.EventList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,6 +31,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against horizontal pod autoscalers.
 | 
					// NewREST returns a RESTStorage object that will work against horizontal pod autoscalers.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &api.LimitRange{} },
 | 
							NewFunc:     func() runtime.Object { return &api.LimitRange{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &api.LimitRangeList{} },
 | 
							NewListFunc: func() runtime.Object { return &api.LimitRangeList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,6 +51,7 @@ type FinalizeREST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against namespaces.
 | 
					// NewREST returns a RESTStorage object that will work against namespaces.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST, *FinalizeREST) {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST, *FinalizeREST) {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &api.Namespace{} },
 | 
							NewFunc:     func() runtime.Object { return &api.Namespace{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &api.NamespaceList{} },
 | 
							NewListFunc: func() runtime.Object { return &api.NamespaceList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -71,6 +71,7 @@ func (r *StatusREST) Update(ctx genericapirequest.Context, name string, objInfo
 | 
				
			|||||||
// NewStorage returns a NodeStorage object that will work against nodes.
 | 
					// NewStorage returns a NodeStorage object that will work against nodes.
 | 
				
			||||||
func NewStorage(optsGetter generic.RESTOptionsGetter, kubeletClientConfig client.KubeletClientConfig, proxyTransport http.RoundTripper) (*NodeStorage, error) {
 | 
					func NewStorage(optsGetter generic.RESTOptionsGetter, kubeletClientConfig client.KubeletClientConfig, proxyTransport http.RoundTripper) (*NodeStorage, error) {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &api.Node{} },
 | 
							NewFunc:     func() runtime.Object { return &api.Node{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &api.NodeList{} },
 | 
							NewListFunc: func() runtime.Object { return &api.NodeList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,6 +34,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against persistent volumes.
 | 
					// NewREST returns a RESTStorage object that will work against persistent volumes.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &api.PersistentVolume{} },
 | 
							NewFunc:     func() runtime.Object { return &api.PersistentVolume{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &api.PersistentVolumeList{} },
 | 
							NewListFunc: func() runtime.Object { return &api.PersistentVolumeList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,6 +34,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against persistent volume claims.
 | 
					// NewREST returns a RESTStorage object that will work against persistent volume claims.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &api.PersistentVolumeClaim{} },
 | 
							NewFunc:     func() runtime.Object { return &api.PersistentVolumeClaim{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &api.PersistentVolumeClaimList{} },
 | 
							NewListFunc: func() runtime.Object { return &api.PersistentVolumeClaimList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -60,6 +60,7 @@ type REST struct {
 | 
				
			|||||||
// NewStorage returns a RESTStorage object that will work against pods.
 | 
					// NewStorage returns a RESTStorage object that will work against pods.
 | 
				
			||||||
func NewStorage(optsGetter generic.RESTOptionsGetter, k client.ConnectionInfoGetter, proxyTransport http.RoundTripper, podDisruptionBudgetClient policyclient.PodDisruptionBudgetsGetter) PodStorage {
 | 
					func NewStorage(optsGetter generic.RESTOptionsGetter, k client.ConnectionInfoGetter, proxyTransport http.RoundTripper, podDisruptionBudgetClient policyclient.PodDisruptionBudgetsGetter) PodStorage {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &api.Pod{} },
 | 
							NewFunc:     func() runtime.Object { return &api.Pod{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &api.PodList{} },
 | 
							NewListFunc: func() runtime.Object { return &api.PodList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,6 +31,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against pod templates.
 | 
					// NewREST returns a RESTStorage object that will work against pod templates.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &api.PodTemplate{} },
 | 
							NewFunc:     func() runtime.Object { return &api.PodTemplate{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &api.PodTemplateList{} },
 | 
							NewListFunc: func() runtime.Object { return &api.PodTemplateList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -60,6 +60,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against replication controllers.
 | 
					// NewREST returns a RESTStorage object that will work against replication controllers.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &api.ReplicationController{} },
 | 
							NewFunc:     func() runtime.Object { return &api.ReplicationController{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &api.ReplicationControllerList{} },
 | 
							NewListFunc: func() runtime.Object { return &api.ReplicationControllerList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,6 +34,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against resource quotas.
 | 
					// NewREST returns a RESTStorage object that will work against resource quotas.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &api.ResourceQuota{} },
 | 
							NewFunc:     func() runtime.Object { return &api.ResourceQuota{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &api.ResourceQuotaList{} },
 | 
							NewListFunc: func() runtime.Object { return &api.ResourceQuotaList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,6 +31,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against secrets.
 | 
					// NewREST returns a RESTStorage object that will work against secrets.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &api.Secret{} },
 | 
							NewFunc:     func() runtime.Object { return &api.Secret{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &api.SecretList{} },
 | 
							NewListFunc: func() runtime.Object { return &api.SecretList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,6 +34,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against services.
 | 
					// NewREST returns a RESTStorage object that will work against services.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &api.Service{} },
 | 
							NewFunc:     func() runtime.Object { return &api.Service{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &api.ServiceList{} },
 | 
							NewListFunc: func() runtime.Object { return &api.ServiceList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,6 +31,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against service accounts.
 | 
					// NewREST returns a RESTStorage object that will work against service accounts.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &api.ServiceAccount{} },
 | 
							NewFunc:     func() runtime.Object { return &api.ServiceAccount{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &api.ServiceAccountList{} },
 | 
							NewListFunc: func() runtime.Object { return &api.ServiceAccountList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,6 +31,7 @@ go_library(
 | 
				
			|||||||
    srcs = ["storage.go"],
 | 
					    srcs = ["storage.go"],
 | 
				
			||||||
    tags = ["automanaged"],
 | 
					    tags = ["automanaged"],
 | 
				
			||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
 | 
					        "//pkg/api:go_default_library",
 | 
				
			||||||
        "//pkg/apis/extensions:go_default_library",
 | 
					        "//pkg/apis/extensions:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,6 +20,7 @@ import (
 | 
				
			|||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
						"k8s.io/apimachinery/pkg/runtime"
 | 
				
			||||||
	genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
 | 
						genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/extensions"
 | 
						"k8s.io/kubernetes/pkg/apis/extensions"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
						"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
				
			||||||
	genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
						genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
				
			||||||
@@ -35,6 +36,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against DaemonSets.
 | 
					// NewREST returns a RESTStorage object that will work against DaemonSets.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &extensions.DaemonSet{} },
 | 
							NewFunc:     func() runtime.Object { return &extensions.DaemonSet{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &extensions.DaemonSetList{} },
 | 
							NewListFunc: func() runtime.Object { return &extensions.DaemonSetList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -37,6 +37,7 @@ go_library(
 | 
				
			|||||||
    srcs = ["storage.go"],
 | 
					    srcs = ["storage.go"],
 | 
				
			||||||
    tags = ["automanaged"],
 | 
					    tags = ["automanaged"],
 | 
				
			||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
 | 
					        "//pkg/api:go_default_library",
 | 
				
			||||||
        "//pkg/api/errors/storage:go_default_library",
 | 
					        "//pkg/api/errors/storage:go_default_library",
 | 
				
			||||||
        "//pkg/apis/extensions:go_default_library",
 | 
					        "//pkg/apis/extensions:go_default_library",
 | 
				
			||||||
        "//pkg/apis/extensions/validation:go_default_library",
 | 
					        "//pkg/apis/extensions/validation:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,6 +24,7 @@ import (
 | 
				
			|||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
						"k8s.io/apimachinery/pkg/runtime"
 | 
				
			||||||
	genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
 | 
						genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	storeerr "k8s.io/kubernetes/pkg/api/errors/storage"
 | 
						storeerr "k8s.io/kubernetes/pkg/api/errors/storage"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/extensions"
 | 
						"k8s.io/kubernetes/pkg/apis/extensions"
 | 
				
			||||||
	extvalidation "k8s.io/kubernetes/pkg/apis/extensions/validation"
 | 
						extvalidation "k8s.io/kubernetes/pkg/apis/extensions/validation"
 | 
				
			||||||
@@ -61,6 +62,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against deployments.
 | 
					// NewREST returns a RESTStorage object that will work against deployments.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST, *RollbackREST) {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST, *RollbackREST) {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &extensions.Deployment{} },
 | 
							NewFunc:     func() runtime.Object { return &extensions.Deployment{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &extensions.DeploymentList{} },
 | 
							NewListFunc: func() runtime.Object { return &extensions.DeploymentList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,6 +32,7 @@ go_library(
 | 
				
			|||||||
    srcs = ["storage.go"],
 | 
					    srcs = ["storage.go"],
 | 
				
			||||||
    tags = ["automanaged"],
 | 
					    tags = ["automanaged"],
 | 
				
			||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
 | 
					        "//pkg/api:go_default_library",
 | 
				
			||||||
        "//pkg/apis/extensions:go_default_library",
 | 
					        "//pkg/apis/extensions:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,6 +20,7 @@ import (
 | 
				
			|||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
						"k8s.io/apimachinery/pkg/runtime"
 | 
				
			||||||
	genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
 | 
						genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/extensions"
 | 
						"k8s.io/kubernetes/pkg/apis/extensions"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
						"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
				
			||||||
	genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
						genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
				
			||||||
@@ -35,6 +36,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against replication controllers.
 | 
					// NewREST returns a RESTStorage object that will work against replication controllers.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &extensions.Ingress{} },
 | 
							NewFunc:     func() runtime.Object { return &extensions.Ingress{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &extensions.IngressList{} },
 | 
							NewListFunc: func() runtime.Object { return &extensions.IngressList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,6 +32,7 @@ go_library(
 | 
				
			|||||||
    srcs = ["storage.go"],
 | 
					    srcs = ["storage.go"],
 | 
				
			||||||
    tags = ["automanaged"],
 | 
					    tags = ["automanaged"],
 | 
				
			||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
 | 
					        "//pkg/api:go_default_library",
 | 
				
			||||||
        "//pkg/apis/extensions:go_default_library",
 | 
					        "//pkg/apis/extensions:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,6 +18,7 @@ package storage
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
						"k8s.io/apimachinery/pkg/runtime"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	extensionsapi "k8s.io/kubernetes/pkg/apis/extensions"
 | 
						extensionsapi "k8s.io/kubernetes/pkg/apis/extensions"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
						"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
				
			||||||
	genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
						genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
				
			||||||
@@ -32,6 +33,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against network policies.
 | 
					// NewREST returns a RESTStorage object that will work against network policies.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &extensionsapi.NetworkPolicy{} },
 | 
							NewFunc:     func() runtime.Object { return &extensionsapi.NetworkPolicy{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &extensionsapi.NetworkPolicyList{} },
 | 
							NewListFunc: func() runtime.Object { return &extensionsapi.NetworkPolicyList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,6 +31,7 @@ go_library(
 | 
				
			|||||||
    srcs = ["storage.go"],
 | 
					    srcs = ["storage.go"],
 | 
				
			||||||
    tags = ["automanaged"],
 | 
					    tags = ["automanaged"],
 | 
				
			||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
 | 
					        "//pkg/api:go_default_library",
 | 
				
			||||||
        "//pkg/apis/extensions:go_default_library",
 | 
					        "//pkg/apis/extensions:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,6 +18,7 @@ package storage
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
						"k8s.io/apimachinery/pkg/runtime"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/extensions"
 | 
						"k8s.io/kubernetes/pkg/apis/extensions"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
						"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
				
			||||||
	genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
						genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
				
			||||||
@@ -32,6 +33,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against PodSecurityPolicy objects.
 | 
					// NewREST returns a RESTStorage object that will work against PodSecurityPolicy objects.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &extensions.PodSecurityPolicy{} },
 | 
							NewFunc:     func() runtime.Object { return &extensions.PodSecurityPolicy{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &extensions.PodSecurityPolicyList{} },
 | 
							NewListFunc: func() runtime.Object { return &extensions.PodSecurityPolicyList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,6 +35,7 @@ go_library(
 | 
				
			|||||||
    srcs = ["storage.go"],
 | 
					    srcs = ["storage.go"],
 | 
				
			||||||
    tags = ["automanaged"],
 | 
					    tags = ["automanaged"],
 | 
				
			||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
 | 
					        "//pkg/api:go_default_library",
 | 
				
			||||||
        "//pkg/apis/extensions:go_default_library",
 | 
					        "//pkg/apis/extensions:go_default_library",
 | 
				
			||||||
        "//pkg/apis/extensions/validation:go_default_library",
 | 
					        "//pkg/apis/extensions/validation:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -25,6 +25,7 @@ import (
 | 
				
			|||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
						"k8s.io/apimachinery/pkg/runtime"
 | 
				
			||||||
	genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
 | 
						genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/extensions"
 | 
						"k8s.io/kubernetes/pkg/apis/extensions"
 | 
				
			||||||
	extvalidation "k8s.io/kubernetes/pkg/apis/extensions/validation"
 | 
						extvalidation "k8s.io/kubernetes/pkg/apis/extensions/validation"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
						"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
				
			||||||
@@ -58,6 +59,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against ReplicaSet.
 | 
					// NewREST returns a RESTStorage object that will work against ReplicaSet.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &extensions.ReplicaSet{} },
 | 
							NewFunc:     func() runtime.Object { return &extensions.ReplicaSet{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &extensions.ReplicaSetList{} },
 | 
							NewListFunc: func() runtime.Object { return &extensions.ReplicaSetList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,6 +31,7 @@ go_library(
 | 
				
			|||||||
    srcs = ["storage.go"],
 | 
					    srcs = ["storage.go"],
 | 
				
			||||||
    tags = ["automanaged"],
 | 
					    tags = ["automanaged"],
 | 
				
			||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
 | 
					        "//pkg/api:go_default_library",
 | 
				
			||||||
        "//pkg/apis/extensions:go_default_library",
 | 
					        "//pkg/apis/extensions:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,6 +18,7 @@ package storage
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
						"k8s.io/apimachinery/pkg/runtime"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/extensions"
 | 
						"k8s.io/kubernetes/pkg/apis/extensions"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
						"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
				
			||||||
	genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
						genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
				
			||||||
@@ -41,6 +42,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
				
			|||||||
	opts.Decorator = generic.UndecoratedStorage // TODO use watchCacheSize=-1 to signal UndecoratedStorage
 | 
						opts.Decorator = generic.UndecoratedStorage // TODO use watchCacheSize=-1 to signal UndecoratedStorage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &extensions.ThirdPartyResource{} },
 | 
							NewFunc:     func() runtime.Object { return &extensions.ThirdPartyResource{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &extensions.ThirdPartyResourceList{} },
 | 
							NewListFunc: func() runtime.Object { return &extensions.ThirdPartyResourceList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,6 +31,7 @@ go_library(
 | 
				
			|||||||
    srcs = ["storage.go"],
 | 
					    srcs = ["storage.go"],
 | 
				
			||||||
    tags = ["automanaged"],
 | 
					    tags = ["automanaged"],
 | 
				
			||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
 | 
					        "//pkg/api:go_default_library",
 | 
				
			||||||
        "//pkg/apis/extensions:go_default_library",
 | 
					        "//pkg/apis/extensions:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,6 +20,7 @@ import (
 | 
				
			|||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
						"k8s.io/apimachinery/pkg/runtime"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/extensions"
 | 
						"k8s.io/kubernetes/pkg/apis/extensions"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
						"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
				
			||||||
	genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
						genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
				
			||||||
@@ -45,6 +46,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter, group, kind string) *REST {
 | 
				
			|||||||
	opts.ResourcePrefix = "/ThirdPartyResourceData/" + group + "/" + strings.ToLower(kind) + "s"
 | 
						opts.ResourcePrefix = "/ThirdPartyResourceData/" + group + "/" + strings.ToLower(kind) + "s"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &extensions.ThirdPartyResourceData{} },
 | 
							NewFunc:     func() runtime.Object { return &extensions.ThirdPartyResourceData{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &extensions.ThirdPartyResourceDataList{} },
 | 
							NewListFunc: func() runtime.Object { return &extensions.ThirdPartyResourceDataList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -33,6 +33,7 @@ go_library(
 | 
				
			|||||||
    srcs = ["storage.go"],
 | 
					    srcs = ["storage.go"],
 | 
				
			||||||
    tags = ["automanaged"],
 | 
					    tags = ["automanaged"],
 | 
				
			||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
 | 
					        "//pkg/api:go_default_library",
 | 
				
			||||||
        "//pkg/apis/policy:go_default_library",
 | 
					        "//pkg/apis/policy:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,6 +20,7 @@ import (
 | 
				
			|||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
						"k8s.io/apimachinery/pkg/runtime"
 | 
				
			||||||
	genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
 | 
						genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	policyapi "k8s.io/kubernetes/pkg/apis/policy"
 | 
						policyapi "k8s.io/kubernetes/pkg/apis/policy"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
						"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
				
			||||||
	genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
						genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
				
			||||||
@@ -35,6 +36,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against pod disruption budgets.
 | 
					// NewREST returns a RESTStorage object that will work against pod disruption budgets.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &policyapi.PodDisruptionBudget{} },
 | 
							NewFunc:     func() runtime.Object { return &policyapi.PodDisruptionBudget{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &policyapi.PodDisruptionBudgetList{} },
 | 
							NewListFunc: func() runtime.Object { return &policyapi.PodDisruptionBudgetList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,6 +12,7 @@ go_library(
 | 
				
			|||||||
    srcs = ["storage.go"],
 | 
					    srcs = ["storage.go"],
 | 
				
			||||||
    tags = ["automanaged"],
 | 
					    tags = ["automanaged"],
 | 
				
			||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
 | 
					        "//pkg/api:go_default_library",
 | 
				
			||||||
        "//pkg/apis/rbac:go_default_library",
 | 
					        "//pkg/apis/rbac:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,6 +18,7 @@ package storage
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
						"k8s.io/apimachinery/pkg/runtime"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/rbac"
 | 
						"k8s.io/kubernetes/pkg/apis/rbac"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
						"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
				
			||||||
	genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
						genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
				
			||||||
@@ -32,6 +33,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against ClusterRole objects.
 | 
					// NewREST returns a RESTStorage object that will work against ClusterRole objects.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &rbac.ClusterRole{} },
 | 
							NewFunc:     func() runtime.Object { return &rbac.ClusterRole{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &rbac.ClusterRoleList{} },
 | 
							NewListFunc: func() runtime.Object { return &rbac.ClusterRoleList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,6 +12,7 @@ go_library(
 | 
				
			|||||||
    srcs = ["storage.go"],
 | 
					    srcs = ["storage.go"],
 | 
				
			||||||
    tags = ["automanaged"],
 | 
					    tags = ["automanaged"],
 | 
				
			||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
 | 
					        "//pkg/api:go_default_library",
 | 
				
			||||||
        "//pkg/apis/rbac:go_default_library",
 | 
					        "//pkg/apis/rbac:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,6 +18,7 @@ package storage
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
						"k8s.io/apimachinery/pkg/runtime"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/rbac"
 | 
						"k8s.io/kubernetes/pkg/apis/rbac"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
						"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
				
			||||||
	genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
						genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
				
			||||||
@@ -32,6 +33,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against ClusterRoleBinding objects.
 | 
					// NewREST returns a RESTStorage object that will work against ClusterRoleBinding objects.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &rbac.ClusterRoleBinding{} },
 | 
							NewFunc:     func() runtime.Object { return &rbac.ClusterRoleBinding{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &rbac.ClusterRoleBindingList{} },
 | 
							NewListFunc: func() runtime.Object { return &rbac.ClusterRoleBindingList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,6 +12,7 @@ go_library(
 | 
				
			|||||||
    srcs = ["storage.go"],
 | 
					    srcs = ["storage.go"],
 | 
				
			||||||
    tags = ["automanaged"],
 | 
					    tags = ["automanaged"],
 | 
				
			||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
 | 
					        "//pkg/api:go_default_library",
 | 
				
			||||||
        "//pkg/apis/rbac:go_default_library",
 | 
					        "//pkg/apis/rbac:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,6 +18,7 @@ package storage
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
						"k8s.io/apimachinery/pkg/runtime"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/rbac"
 | 
						"k8s.io/kubernetes/pkg/apis/rbac"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
						"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
				
			||||||
	genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
						genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
				
			||||||
@@ -32,6 +33,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against Role objects.
 | 
					// NewREST returns a RESTStorage object that will work against Role objects.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &rbac.Role{} },
 | 
							NewFunc:     func() runtime.Object { return &rbac.Role{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &rbac.RoleList{} },
 | 
							NewListFunc: func() runtime.Object { return &rbac.RoleList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,6 +12,7 @@ go_library(
 | 
				
			|||||||
    srcs = ["storage.go"],
 | 
					    srcs = ["storage.go"],
 | 
				
			||||||
    tags = ["automanaged"],
 | 
					    tags = ["automanaged"],
 | 
				
			||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
 | 
					        "//pkg/api:go_default_library",
 | 
				
			||||||
        "//pkg/apis/rbac:go_default_library",
 | 
					        "//pkg/apis/rbac:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,6 +18,7 @@ package storage
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
						"k8s.io/apimachinery/pkg/runtime"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/rbac"
 | 
						"k8s.io/kubernetes/pkg/apis/rbac"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
						"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
				
			||||||
	genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
						genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
				
			||||||
@@ -32,6 +33,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against RoleBinding objects.
 | 
					// NewREST returns a RESTStorage object that will work against RoleBinding objects.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &rbac.RoleBinding{} },
 | 
							NewFunc:     func() runtime.Object { return &rbac.RoleBinding{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &rbac.RoleBindingList{} },
 | 
							NewListFunc: func() runtime.Object { return &rbac.RoleBindingList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -30,6 +30,7 @@ go_library(
 | 
				
			|||||||
    srcs = ["storage.go"],
 | 
					    srcs = ["storage.go"],
 | 
				
			||||||
    tags = ["automanaged"],
 | 
					    tags = ["automanaged"],
 | 
				
			||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
 | 
					        "//pkg/api:go_default_library",
 | 
				
			||||||
        "//pkg/apis/storage:go_default_library",
 | 
					        "//pkg/apis/storage:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
					        "//pkg/genericapiserver/registry/generic/registry:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,6 +18,7 @@ package storage
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
						"k8s.io/apimachinery/pkg/runtime"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	storageapi "k8s.io/kubernetes/pkg/apis/storage"
 | 
						storageapi "k8s.io/kubernetes/pkg/apis/storage"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
						"k8s.io/kubernetes/pkg/genericapiserver/registry/generic"
 | 
				
			||||||
	genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
						genericregistry "k8s.io/kubernetes/pkg/genericapiserver/registry/generic/registry"
 | 
				
			||||||
@@ -31,6 +32,7 @@ type REST struct {
 | 
				
			|||||||
// NewREST returns a RESTStorage object that will work against persistent volumes.
 | 
					// NewREST returns a RESTStorage object that will work against persistent volumes.
 | 
				
			||||||
func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
					func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
 | 
				
			||||||
	store := &genericregistry.Store{
 | 
						store := &genericregistry.Store{
 | 
				
			||||||
 | 
							Copier:      api.Scheme,
 | 
				
			||||||
		NewFunc:     func() runtime.Object { return &storageapi.StorageClass{} },
 | 
							NewFunc:     func() runtime.Object { return &storageapi.StorageClass{} },
 | 
				
			||||||
		NewListFunc: func() runtime.Object { return &storageapi.StorageClassList{} },
 | 
							NewListFunc: func() runtime.Object { return &storageapi.StorageClassList{} },
 | 
				
			||||||
		ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
							ObjectNameFunc: func(obj runtime.Object) (string, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,7 +22,6 @@ go_library(
 | 
				
			|||||||
    ],
 | 
					    ],
 | 
				
			||||||
    tags = ["automanaged"],
 | 
					    tags = ["automanaged"],
 | 
				
			||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
        "//pkg/api:go_default_library",
 | 
					 | 
				
			||||||
        "//pkg/util:go_default_library",
 | 
					        "//pkg/util:go_default_library",
 | 
				
			||||||
        "//vendor:github.com/golang/glog",
 | 
					        "//vendor:github.com/golang/glog",
 | 
				
			||||||
        "//vendor:golang.org/x/net/context",
 | 
					        "//vendor:golang.org/x/net/context",
 | 
				
			||||||
@@ -56,7 +55,6 @@ go_test(
 | 
				
			|||||||
    library = ":go_default_library",
 | 
					    library = ":go_default_library",
 | 
				
			||||||
    tags = ["automanaged"],
 | 
					    tags = ["automanaged"],
 | 
				
			||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
        "//pkg/api:go_default_library",
 | 
					 | 
				
			||||||
        "//vendor:k8s.io/apimachinery/pkg/api/errors",
 | 
					        "//vendor:k8s.io/apimachinery/pkg/api/errors",
 | 
				
			||||||
        "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
 | 
					        "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
 | 
				
			||||||
        "//vendor:k8s.io/apimachinery/pkg/fields",
 | 
					        "//vendor:k8s.io/apimachinery/pkg/fields",
 | 
				
			||||||
@@ -66,6 +64,7 @@ go_test(
 | 
				
			|||||||
        "//vendor:k8s.io/apimachinery/pkg/util/sets",
 | 
					        "//vendor:k8s.io/apimachinery/pkg/util/sets",
 | 
				
			||||||
        "//vendor:k8s.io/apimachinery/pkg/util/wait",
 | 
					        "//vendor:k8s.io/apimachinery/pkg/util/wait",
 | 
				
			||||||
        "//vendor:k8s.io/apimachinery/pkg/watch",
 | 
					        "//vendor:k8s.io/apimachinery/pkg/watch",
 | 
				
			||||||
 | 
					        "//vendor:k8s.io/client-go/pkg/api",
 | 
				
			||||||
        "//vendor:k8s.io/client-go/tools/cache",
 | 
					        "//vendor:k8s.io/client-go/tools/cache",
 | 
				
			||||||
        "//vendor:k8s.io/client-go/util/clock",
 | 
					        "//vendor:k8s.io/client-go/util/clock",
 | 
				
			||||||
    ],
 | 
					    ],
 | 
				
			||||||
@@ -76,10 +75,6 @@ go_test(
 | 
				
			|||||||
    srcs = ["cacher_test.go"],
 | 
					    srcs = ["cacher_test.go"],
 | 
				
			||||||
    tags = ["automanaged"],
 | 
					    tags = ["automanaged"],
 | 
				
			||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
        "//pkg/api:go_default_library",
 | 
					 | 
				
			||||||
        "//pkg/api/testapi:go_default_library",
 | 
					 | 
				
			||||||
        "//pkg/api/testing:go_default_library",
 | 
					 | 
				
			||||||
        "//pkg/registry/core/pod:go_default_library",
 | 
					 | 
				
			||||||
        "//pkg/storage:go_default_library",
 | 
					        "//pkg/storage:go_default_library",
 | 
				
			||||||
        "//pkg/storage/etcd:go_default_library",
 | 
					        "//pkg/storage/etcd:go_default_library",
 | 
				
			||||||
        "//pkg/storage/etcd/etcdtest:go_default_library",
 | 
					        "//pkg/storage/etcd/etcdtest:go_default_library",
 | 
				
			||||||
@@ -95,6 +90,9 @@ go_test(
 | 
				
			|||||||
        "//vendor:k8s.io/apimachinery/pkg/util/sets",
 | 
					        "//vendor:k8s.io/apimachinery/pkg/util/sets",
 | 
				
			||||||
        "//vendor:k8s.io/apimachinery/pkg/util/wait",
 | 
					        "//vendor:k8s.io/apimachinery/pkg/util/wait",
 | 
				
			||||||
        "//vendor:k8s.io/apimachinery/pkg/watch",
 | 
					        "//vendor:k8s.io/apimachinery/pkg/watch",
 | 
				
			||||||
 | 
					        "//vendor:k8s.io/client-go/pkg/api",
 | 
				
			||||||
 | 
					        "//vendor:k8s.io/client-go/pkg/api/install",
 | 
				
			||||||
 | 
					        "//vendor:k8s.io/client-go/pkg/api/v1",
 | 
				
			||||||
    ],
 | 
					    ],
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,7 +35,6 @@ import (
 | 
				
			|||||||
	"k8s.io/apimachinery/pkg/util/wait"
 | 
						"k8s.io/apimachinery/pkg/util/wait"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/watch"
 | 
						"k8s.io/apimachinery/pkg/watch"
 | 
				
			||||||
	"k8s.io/client-go/tools/cache"
 | 
						"k8s.io/client-go/tools/cache"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util"
 | 
						"k8s.io/kubernetes/pkg/util"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/golang/glog"
 | 
						"github.com/golang/glog"
 | 
				
			||||||
@@ -53,6 +52,8 @@ type CacherConfig struct {
 | 
				
			|||||||
	// An underlying storage.Versioner.
 | 
						// An underlying storage.Versioner.
 | 
				
			||||||
	Versioner Versioner
 | 
						Versioner Versioner
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Copier runtime.ObjectCopier
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// The Cache will be caching objects of a given Type and assumes that they
 | 
						// The Cache will be caching objects of a given Type and assumes that they
 | 
				
			||||||
	// are all stored under ResourcePrefix directory in the underlying database.
 | 
						// are all stored under ResourcePrefix directory in the underlying database.
 | 
				
			||||||
	Type           interface{}
 | 
						Type           interface{}
 | 
				
			||||||
@@ -158,6 +159,8 @@ type Cacher struct {
 | 
				
			|||||||
	// Underlying storage.Interface.
 | 
						// Underlying storage.Interface.
 | 
				
			||||||
	storage Interface
 | 
						storage Interface
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						copier runtime.ObjectCopier
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Expected type of objects in the underlying cache.
 | 
						// Expected type of objects in the underlying cache.
 | 
				
			||||||
	objectType reflect.Type
 | 
						objectType reflect.Type
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -206,6 +209,7 @@ func NewCacherFromConfig(config CacherConfig) *Cacher {
 | 
				
			|||||||
	cacher := &Cacher{
 | 
						cacher := &Cacher{
 | 
				
			||||||
		ready:       newReady(),
 | 
							ready:       newReady(),
 | 
				
			||||||
		storage:     config.Storage,
 | 
							storage:     config.Storage,
 | 
				
			||||||
 | 
							copier:      config.Copier,
 | 
				
			||||||
		objectType:  reflect.TypeOf(config.Type),
 | 
							objectType:  reflect.TypeOf(config.Type),
 | 
				
			||||||
		watchCache:  watchCache,
 | 
							watchCache:  watchCache,
 | 
				
			||||||
		reflector:   cache.NewReflector(listerWatcher, config.Type, watchCache, 0),
 | 
							reflector:   cache.NewReflector(listerWatcher, config.Type, watchCache, 0),
 | 
				
			||||||
@@ -336,7 +340,7 @@ func (c *Cacher) Watch(ctx context.Context, key string, resourceVersion string,
 | 
				
			|||||||
	c.Lock()
 | 
						c.Lock()
 | 
				
			||||||
	defer c.Unlock()
 | 
						defer c.Unlock()
 | 
				
			||||||
	forget := forgetWatcher(c, c.watcherIdx, triggerValue, triggerSupported)
 | 
						forget := forgetWatcher(c, c.watcherIdx, triggerValue, triggerSupported)
 | 
				
			||||||
	watcher := newCacheWatcher(watchRV, chanSize, initEvents, watchFilterFunction(key, pred), forget)
 | 
						watcher := newCacheWatcher(c.copier, watchRV, chanSize, initEvents, watchFilterFunction(key, pred), forget)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	c.watchers.addWatcher(watcher, c.watcherIdx, triggerValue, triggerSupported)
 | 
						c.watchers.addWatcher(watcher, c.watcherIdx, triggerValue, triggerSupported)
 | 
				
			||||||
	c.watcherIdx++
 | 
						c.watcherIdx++
 | 
				
			||||||
@@ -520,7 +524,7 @@ func (c *Cacher) GuaranteedUpdate(
 | 
				
			|||||||
	if elem, exists, err := c.watchCache.GetByKey(key); err != nil {
 | 
						if elem, exists, err := c.watchCache.GetByKey(key); err != nil {
 | 
				
			||||||
		glog.Errorf("GetByKey returned error: %v", err)
 | 
							glog.Errorf("GetByKey returned error: %v", err)
 | 
				
			||||||
	} else if exists {
 | 
						} else if exists {
 | 
				
			||||||
		currObj, copyErr := api.Scheme.Copy(elem.(*storeElement).Object)
 | 
							currObj, copyErr := c.copier.Copy(elem.(*storeElement).Object)
 | 
				
			||||||
		if copyErr == nil {
 | 
							if copyErr == nil {
 | 
				
			||||||
			return c.storage.GuaranteedUpdate(ctx, key, ptrToType, ignoreNotFound, preconditions, tryUpdate, currObj)
 | 
								return c.storage.GuaranteedUpdate(ctx, key, ptrToType, ignoreNotFound, preconditions, tryUpdate, currObj)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -747,6 +751,7 @@ func (c *errWatcher) Stop() {
 | 
				
			|||||||
// cacherWatch implements watch.Interface
 | 
					// cacherWatch implements watch.Interface
 | 
				
			||||||
type cacheWatcher struct {
 | 
					type cacheWatcher struct {
 | 
				
			||||||
	sync.Mutex
 | 
						sync.Mutex
 | 
				
			||||||
 | 
						copier  runtime.ObjectCopier
 | 
				
			||||||
	input   chan watchCacheEvent
 | 
						input   chan watchCacheEvent
 | 
				
			||||||
	result  chan watch.Event
 | 
						result  chan watch.Event
 | 
				
			||||||
	done    chan struct{}
 | 
						done    chan struct{}
 | 
				
			||||||
@@ -755,8 +760,9 @@ type cacheWatcher struct {
 | 
				
			|||||||
	forget  func(bool)
 | 
						forget  func(bool)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func newCacheWatcher(resourceVersion uint64, chanSize int, initEvents []*watchCacheEvent, filter watchFilterFunc, forget func(bool)) *cacheWatcher {
 | 
					func newCacheWatcher(copier runtime.ObjectCopier, resourceVersion uint64, chanSize int, initEvents []*watchCacheEvent, filter watchFilterFunc, forget func(bool)) *cacheWatcher {
 | 
				
			||||||
	watcher := &cacheWatcher{
 | 
						watcher := &cacheWatcher{
 | 
				
			||||||
 | 
							copier:  copier,
 | 
				
			||||||
		input:   make(chan watchCacheEvent, chanSize),
 | 
							input:   make(chan watchCacheEvent, chanSize),
 | 
				
			||||||
		result:  make(chan watch.Event, chanSize),
 | 
							result:  make(chan watch.Event, chanSize),
 | 
				
			||||||
		done:    make(chan struct{}),
 | 
							done:    make(chan struct{}),
 | 
				
			||||||
@@ -844,7 +850,7 @@ func (c *cacheWatcher) sendWatchCacheEvent(event *watchCacheEvent) {
 | 
				
			|||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	object, err := api.Scheme.Copy(event.Object)
 | 
						object, err := c.copier.Copy(event.Object)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		glog.Errorf("unexpected copy error: %v", err)
 | 
							glog.Errorf("unexpected copy error: %v", err)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -33,10 +33,8 @@ import (
 | 
				
			|||||||
	"k8s.io/apimachinery/pkg/util/sets"
 | 
						"k8s.io/apimachinery/pkg/util/sets"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/util/wait"
 | 
						"k8s.io/apimachinery/pkg/util/wait"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/watch"
 | 
						"k8s.io/apimachinery/pkg/watch"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/client-go/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/testapi"
 | 
						"k8s.io/client-go/pkg/api/v1"
 | 
				
			||||||
	apitesting "k8s.io/kubernetes/pkg/api/testing"
 | 
					 | 
				
			||||||
	corepod "k8s.io/kubernetes/pkg/registry/core/pod"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/storage"
 | 
						"k8s.io/kubernetes/pkg/storage"
 | 
				
			||||||
	etcdstorage "k8s.io/kubernetes/pkg/storage/etcd"
 | 
						etcdstorage "k8s.io/kubernetes/pkg/storage/etcd"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/storage/etcd/etcdtest"
 | 
						"k8s.io/kubernetes/pkg/storage/etcd/etcdtest"
 | 
				
			||||||
@@ -44,8 +42,52 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/storage/etcd3"
 | 
						"k8s.io/kubernetes/pkg/storage/etcd3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"golang.org/x/net/context"
 | 
						"golang.org/x/net/context"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_ "k8s.io/client-go/pkg/api/install"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func DeepEqualSafePodSpec() api.PodSpec {
 | 
				
			||||||
 | 
						grace := int64(30)
 | 
				
			||||||
 | 
						return api.PodSpec{
 | 
				
			||||||
 | 
							RestartPolicy:                 api.RestartPolicyAlways,
 | 
				
			||||||
 | 
							DNSPolicy:                     api.DNSClusterFirst,
 | 
				
			||||||
 | 
							TerminationGracePeriodSeconds: &grace,
 | 
				
			||||||
 | 
							SecurityContext:               &api.PodSecurityContext{},
 | 
				
			||||||
 | 
							SchedulerName:                 api.DefaultSchedulerName,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// GetAttrs returns labels and fields of a given object for filtering purposes.
 | 
				
			||||||
 | 
					func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, error) {
 | 
				
			||||||
 | 
						pod, ok := obj.(*api.Pod)
 | 
				
			||||||
 | 
						if !ok {
 | 
				
			||||||
 | 
							return nil, nil, fmt.Errorf("not a pod")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return labels.Set(pod.ObjectMeta.Labels), PodToSelectableFields(pod), nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// PodToSelectableFields returns a field set that represents the object
 | 
				
			||||||
 | 
					// TODO: fields are not labels, and the validation rules for them do not apply.
 | 
				
			||||||
 | 
					func PodToSelectableFields(pod *api.Pod) fields.Set {
 | 
				
			||||||
 | 
						// The purpose of allocation with a given number of elements is to reduce
 | 
				
			||||||
 | 
						// amount of allocations needed to create the fields.Set. If you add any
 | 
				
			||||||
 | 
						// field here or the number of object-meta related fields changes, this should
 | 
				
			||||||
 | 
						// be adjusted.
 | 
				
			||||||
 | 
						podSpecificFieldsSet := make(fields.Set, 5)
 | 
				
			||||||
 | 
						podSpecificFieldsSet["spec.nodeName"] = pod.Spec.NodeName
 | 
				
			||||||
 | 
						podSpecificFieldsSet["spec.restartPolicy"] = string(pod.Spec.RestartPolicy)
 | 
				
			||||||
 | 
						podSpecificFieldsSet["status.phase"] = string(pod.Status.Phase)
 | 
				
			||||||
 | 
						return AddObjectMetaFieldsSet(podSpecificFieldsSet, &pod.ObjectMeta, true)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func AddObjectMetaFieldsSet(source fields.Set, objectMeta *metav1.ObjectMeta, hasNamespaceField bool) fields.Set {
 | 
				
			||||||
 | 
						source["metadata.name"] = objectMeta.Name
 | 
				
			||||||
 | 
						if hasNamespaceField {
 | 
				
			||||||
 | 
							source["metadata.namespace"] = objectMeta.Namespace
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return source
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func newEtcdTestStorage(t *testing.T, codec runtime.Codec, prefix string) (*etcdtesting.EtcdTestServer, storage.Interface) {
 | 
					func newEtcdTestStorage(t *testing.T, codec runtime.Codec, prefix string) (*etcdtesting.EtcdTestServer, storage.Interface) {
 | 
				
			||||||
	server, _ := etcdtesting.NewUnsecuredEtcd3TestClientServer(t)
 | 
						server, _ := etcdtesting.NewUnsecuredEtcd3TestClientServer(t)
 | 
				
			||||||
	storage := etcd3.New(server.V3Client, codec, prefix)
 | 
						storage := etcd3.New(server.V3Client, codec, prefix)
 | 
				
			||||||
@@ -58,12 +100,13 @@ func newTestCacher(s storage.Interface, cap int) *storage.Cacher {
 | 
				
			|||||||
		CacheCapacity:  cap,
 | 
							CacheCapacity:  cap,
 | 
				
			||||||
		Storage:        s,
 | 
							Storage:        s,
 | 
				
			||||||
		Versioner:      etcdstorage.APIObjectVersioner{},
 | 
							Versioner:      etcdstorage.APIObjectVersioner{},
 | 
				
			||||||
 | 
							Copier:         api.Scheme,
 | 
				
			||||||
		Type:           &api.Pod{},
 | 
							Type:           &api.Pod{},
 | 
				
			||||||
		ResourcePrefix: prefix,
 | 
							ResourcePrefix: prefix,
 | 
				
			||||||
		KeyFunc:        func(obj runtime.Object) (string, error) { return storage.NamespaceKeyFunc(prefix, obj) },
 | 
							KeyFunc:        func(obj runtime.Object) (string, error) { return storage.NamespaceKeyFunc(prefix, obj) },
 | 
				
			||||||
		GetAttrsFunc:   corepod.GetAttrs,
 | 
							GetAttrsFunc:   GetAttrs,
 | 
				
			||||||
		NewListFunc:    func() runtime.Object { return &api.PodList{} },
 | 
							NewListFunc:    func() runtime.Object { return &api.PodList{} },
 | 
				
			||||||
		Codec:          testapi.Default.Codec(),
 | 
							Codec:          api.Codecs.LegacyCodec(v1.SchemeGroupVersion),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return storage.NewCacherFromConfig(config)
 | 
						return storage.NewCacherFromConfig(config)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -71,7 +114,7 @@ func newTestCacher(s storage.Interface, cap int) *storage.Cacher {
 | 
				
			|||||||
func makeTestPod(name string) *api.Pod {
 | 
					func makeTestPod(name string) *api.Pod {
 | 
				
			||||||
	return &api.Pod{
 | 
						return &api.Pod{
 | 
				
			||||||
		ObjectMeta: metav1.ObjectMeta{Namespace: "ns", Name: name},
 | 
							ObjectMeta: metav1.ObjectMeta{Namespace: "ns", Name: name},
 | 
				
			||||||
		Spec:       apitesting.DeepEqualSafePodSpec(),
 | 
							Spec:       DeepEqualSafePodSpec(),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -97,7 +140,7 @@ func updatePod(t *testing.T, s storage.Interface, obj, old *api.Pod) *api.Pod {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestGet(t *testing.T) {
 | 
					func TestGet(t *testing.T) {
 | 
				
			||||||
	server, etcdStorage := newEtcdTestStorage(t, testapi.Default.Codec(), etcdtest.PathPrefix())
 | 
						server, etcdStorage := newEtcdTestStorage(t, api.Codecs.LegacyCodec(v1.SchemeGroupVersion), etcdtest.PathPrefix())
 | 
				
			||||||
	defer server.Terminate(t)
 | 
						defer server.Terminate(t)
 | 
				
			||||||
	cacher := newTestCacher(etcdStorage, 10)
 | 
						cacher := newTestCacher(etcdStorage, 10)
 | 
				
			||||||
	defer cacher.Stop()
 | 
						defer cacher.Stop()
 | 
				
			||||||
@@ -128,7 +171,7 @@ func TestGet(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestList(t *testing.T) {
 | 
					func TestList(t *testing.T) {
 | 
				
			||||||
	server, etcdStorage := newEtcdTestStorage(t, testapi.Default.Codec(), etcdtest.PathPrefix())
 | 
						server, etcdStorage := newEtcdTestStorage(t, api.Codecs.LegacyCodec(v1.SchemeGroupVersion), etcdtest.PathPrefix())
 | 
				
			||||||
	defer server.Terminate(t)
 | 
						defer server.Terminate(t)
 | 
				
			||||||
	cacher := newTestCacher(etcdStorage, 10)
 | 
						cacher := newTestCacher(etcdStorage, 10)
 | 
				
			||||||
	defer cacher.Stop()
 | 
						defer cacher.Stop()
 | 
				
			||||||
@@ -209,7 +252,7 @@ func TestList(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestInfiniteList(t *testing.T) {
 | 
					func TestInfiniteList(t *testing.T) {
 | 
				
			||||||
	server, etcdStorage := newEtcdTestStorage(t, testapi.Default.Codec(), etcdtest.PathPrefix())
 | 
						server, etcdStorage := newEtcdTestStorage(t, api.Codecs.LegacyCodec(v1.SchemeGroupVersion), etcdtest.PathPrefix())
 | 
				
			||||||
	defer server.Terminate(t)
 | 
						defer server.Terminate(t)
 | 
				
			||||||
	cacher := newTestCacher(etcdStorage, 10)
 | 
						cacher := newTestCacher(etcdStorage, 10)
 | 
				
			||||||
	defer cacher.Stop()
 | 
						defer cacher.Stop()
 | 
				
			||||||
@@ -263,7 +306,7 @@ func (self *injectListError) List(ctx context.Context, key string, resourceVersi
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestWatch(t *testing.T) {
 | 
					func TestWatch(t *testing.T) {
 | 
				
			||||||
	server, etcdStorage := newEtcdTestStorage(t, testapi.Default.Codec(), etcdtest.PathPrefix())
 | 
						server, etcdStorage := newEtcdTestStorage(t, api.Codecs.LegacyCodec(v1.SchemeGroupVersion), etcdtest.PathPrefix())
 | 
				
			||||||
	// Inject one list error to make sure we test the relist case.
 | 
						// Inject one list error to make sure we test the relist case.
 | 
				
			||||||
	etcdStorage = &injectListError{errors: 1, Interface: etcdStorage}
 | 
						etcdStorage = &injectListError{errors: 1, Interface: etcdStorage}
 | 
				
			||||||
	defer server.Terminate(t)
 | 
						defer server.Terminate(t)
 | 
				
			||||||
@@ -340,7 +383,7 @@ func TestWatch(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestWatcherTimeout(t *testing.T) {
 | 
					func TestWatcherTimeout(t *testing.T) {
 | 
				
			||||||
	server, etcdStorage := newEtcdTestStorage(t, testapi.Default.Codec(), etcdtest.PathPrefix())
 | 
						server, etcdStorage := newEtcdTestStorage(t, api.Codecs.LegacyCodec(v1.SchemeGroupVersion), etcdtest.PathPrefix())
 | 
				
			||||||
	defer server.Terminate(t)
 | 
						defer server.Terminate(t)
 | 
				
			||||||
	cacher := newTestCacher(etcdStorage, 10)
 | 
						cacher := newTestCacher(etcdStorage, 10)
 | 
				
			||||||
	defer cacher.Stop()
 | 
						defer cacher.Stop()
 | 
				
			||||||
@@ -382,7 +425,7 @@ func TestWatcherTimeout(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestFiltering(t *testing.T) {
 | 
					func TestFiltering(t *testing.T) {
 | 
				
			||||||
	server, etcdStorage := newEtcdTestStorage(t, testapi.Default.Codec(), etcdtest.PathPrefix())
 | 
						server, etcdStorage := newEtcdTestStorage(t, api.Codecs.LegacyCodec(v1.SchemeGroupVersion), etcdtest.PathPrefix())
 | 
				
			||||||
	defer server.Terminate(t)
 | 
						defer server.Terminate(t)
 | 
				
			||||||
	cacher := newTestCacher(etcdStorage, 10)
 | 
						cacher := newTestCacher(etcdStorage, 10)
 | 
				
			||||||
	defer cacher.Stop()
 | 
						defer cacher.Stop()
 | 
				
			||||||
@@ -444,7 +487,7 @@ func TestFiltering(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestStartingResourceVersion(t *testing.T) {
 | 
					func TestStartingResourceVersion(t *testing.T) {
 | 
				
			||||||
	server, etcdStorage := newEtcdTestStorage(t, testapi.Default.Codec(), etcdtest.PathPrefix())
 | 
						server, etcdStorage := newEtcdTestStorage(t, api.Codecs.LegacyCodec(v1.SchemeGroupVersion), etcdtest.PathPrefix())
 | 
				
			||||||
	defer server.Terminate(t)
 | 
						defer server.Terminate(t)
 | 
				
			||||||
	cacher := newTestCacher(etcdStorage, 10)
 | 
						cacher := newTestCacher(etcdStorage, 10)
 | 
				
			||||||
	defer cacher.Stop()
 | 
						defer cacher.Stop()
 | 
				
			||||||
@@ -492,7 +535,7 @@ func TestStartingResourceVersion(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestRandomWatchDeliver(t *testing.T) {
 | 
					func TestRandomWatchDeliver(t *testing.T) {
 | 
				
			||||||
	server, etcdStorage := newEtcdTestStorage(t, testapi.Default.Codec(), etcdtest.PathPrefix())
 | 
						server, etcdStorage := newEtcdTestStorage(t, api.Codecs.LegacyCodec(v1.SchemeGroupVersion), etcdtest.PathPrefix())
 | 
				
			||||||
	defer server.Terminate(t)
 | 
						defer server.Terminate(t)
 | 
				
			||||||
	cacher := newTestCacher(etcdStorage, 10)
 | 
						cacher := newTestCacher(etcdStorage, 10)
 | 
				
			||||||
	defer cacher.Stop()
 | 
						defer cacher.Stop()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,7 +24,7 @@ import (
 | 
				
			|||||||
	"k8s.io/apimachinery/pkg/fields"
 | 
						"k8s.io/apimachinery/pkg/fields"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/labels"
 | 
						"k8s.io/apimachinery/pkg/labels"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/util/wait"
 | 
						"k8s.io/apimachinery/pkg/util/wait"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/client-go/pkg/api"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// verifies the cacheWatcher.process goroutine is properly cleaned up even if
 | 
					// verifies the cacheWatcher.process goroutine is properly cleaned up even if
 | 
				
			||||||
@@ -44,7 +44,7 @@ func TestCacheWatcherCleanupNotBlockedByResult(t *testing.T) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	// set the size of the buffer of w.result to 0, so that the writes to
 | 
						// set the size of the buffer of w.result to 0, so that the writes to
 | 
				
			||||||
	// w.result is blocked.
 | 
						// w.result is blocked.
 | 
				
			||||||
	w := newCacheWatcher(0, 0, initEvents, filter, forget)
 | 
						w := newCacheWatcher(api.Scheme, 0, 0, initEvents, filter, forget)
 | 
				
			||||||
	w.Stop()
 | 
						w.Stop()
 | 
				
			||||||
	if err := wait.PollImmediate(1*time.Second, 5*time.Second, func() (bool, error) {
 | 
						if err := wait.PollImmediate(1*time.Second, 5*time.Second, func() (bool, error) {
 | 
				
			||||||
		lock.RLock()
 | 
							lock.RLock()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,9 +29,9 @@ import (
 | 
				
			|||||||
	"k8s.io/apimachinery/pkg/util/sets"
 | 
						"k8s.io/apimachinery/pkg/util/sets"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/util/wait"
 | 
						"k8s.io/apimachinery/pkg/util/wait"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/watch"
 | 
						"k8s.io/apimachinery/pkg/watch"
 | 
				
			||||||
 | 
						"k8s.io/client-go/pkg/api"
 | 
				
			||||||
	"k8s.io/client-go/tools/cache"
 | 
						"k8s.io/client-go/tools/cache"
 | 
				
			||||||
	"k8s.io/client-go/util/clock"
 | 
						"k8s.io/client-go/util/clock"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func makeTestPod(name string, resourceVersion uint64) *api.Pod {
 | 
					func makeTestPod(name string, resourceVersion uint64) *api.Pod {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user