convert default predicates to use the default
This commit is contained in:
		| @@ -309,12 +309,9 @@ pkg/proxy/util | |||||||
| pkg/proxy/winuserspace | pkg/proxy/winuserspace | ||||||
| pkg/quota/evaluator/core | pkg/quota/evaluator/core | ||||||
| pkg/quota/generic | pkg/quota/generic | ||||||
| pkg/registry/admissionregistration/externaladmissionhookconfiguration |  | ||||||
| pkg/registry/admissionregistration/externaladmissionhookconfiguration/storage | pkg/registry/admissionregistration/externaladmissionhookconfiguration/storage | ||||||
| pkg/registry/admissionregistration/initializerconfiguration |  | ||||||
| pkg/registry/admissionregistration/initializerconfiguration/storage | pkg/registry/admissionregistration/initializerconfiguration/storage | ||||||
| pkg/registry/admissionregistration/rest | pkg/registry/admissionregistration/rest | ||||||
| pkg/registry/apps/controllerrevision |  | ||||||
| pkg/registry/apps/rest | pkg/registry/apps/rest | ||||||
| pkg/registry/apps/statefulset | pkg/registry/apps/statefulset | ||||||
| pkg/registry/apps/statefulset/storage | pkg/registry/apps/statefulset/storage | ||||||
| @@ -337,11 +334,9 @@ pkg/registry/certificates/certificates | |||||||
| pkg/registry/certificates/certificates/storage | pkg/registry/certificates/certificates/storage | ||||||
| pkg/registry/certificates/rest | pkg/registry/certificates/rest | ||||||
| pkg/registry/core/componentstatus | pkg/registry/core/componentstatus | ||||||
| pkg/registry/core/configmap |  | ||||||
| pkg/registry/core/endpoint/storage | pkg/registry/core/endpoint/storage | ||||||
| pkg/registry/core/event | pkg/registry/core/event | ||||||
| pkg/registry/core/event/storage | pkg/registry/core/event/storage | ||||||
| pkg/registry/core/limitrange |  | ||||||
| pkg/registry/core/limitrange/storage | pkg/registry/core/limitrange/storage | ||||||
| pkg/registry/core/namespace | pkg/registry/core/namespace | ||||||
| pkg/registry/core/namespace/storage | pkg/registry/core/namespace/storage | ||||||
| @@ -353,7 +348,6 @@ pkg/registry/core/persistentvolumeclaim | |||||||
| pkg/registry/core/persistentvolumeclaim/storage | pkg/registry/core/persistentvolumeclaim/storage | ||||||
| pkg/registry/core/pod | pkg/registry/core/pod | ||||||
| pkg/registry/core/pod/rest | pkg/registry/core/pod/rest | ||||||
| pkg/registry/core/podtemplate |  | ||||||
| pkg/registry/core/podtemplate/storage | pkg/registry/core/podtemplate/storage | ||||||
| pkg/registry/core/replicationcontroller | pkg/registry/core/replicationcontroller | ||||||
| pkg/registry/core/replicationcontroller/storage | pkg/registry/core/replicationcontroller/storage | ||||||
| @@ -377,13 +371,10 @@ pkg/registry/extensions/deployment | |||||||
| pkg/registry/extensions/deployment/storage | pkg/registry/extensions/deployment/storage | ||||||
| pkg/registry/extensions/ingress | pkg/registry/extensions/ingress | ||||||
| pkg/registry/extensions/ingress/storage | pkg/registry/extensions/ingress/storage | ||||||
| pkg/registry/extensions/networkpolicy |  | ||||||
| pkg/registry/extensions/networkpolicy/storage | pkg/registry/extensions/networkpolicy/storage | ||||||
| pkg/registry/extensions/podsecuritypolicy |  | ||||||
| pkg/registry/extensions/replicaset | pkg/registry/extensions/replicaset | ||||||
| pkg/registry/extensions/replicaset/storage | pkg/registry/extensions/replicaset/storage | ||||||
| pkg/registry/extensions/rest | pkg/registry/extensions/rest | ||||||
| pkg/registry/networking/networkpolicy |  | ||||||
| pkg/registry/networking/networkpolicy/storage | pkg/registry/networking/networkpolicy/storage | ||||||
| pkg/registry/networking/rest | pkg/registry/networking/rest | ||||||
| pkg/registry/policy/poddisruptionbudget | pkg/registry/policy/poddisruptionbudget | ||||||
| @@ -404,7 +395,6 @@ pkg/registry/rbac/validation | |||||||
| pkg/registry/registrytest | pkg/registry/registrytest | ||||||
| pkg/registry/scheduling/priorityclass/storage | pkg/registry/scheduling/priorityclass/storage | ||||||
| pkg/registry/scheduling/rest | pkg/registry/scheduling/rest | ||||||
| pkg/registry/settings/podpreset |  | ||||||
| pkg/registry/settings/podpreset/storage | pkg/registry/settings/podpreset/storage | ||||||
| pkg/registry/settings/rest | pkg/registry/settings/rest | ||||||
| pkg/registry/storage/rest | pkg/registry/storage/rest | ||||||
|   | |||||||
| @@ -18,13 +18,9 @@ go_library( | |||||||
|         "//pkg/api:go_default_library", |         "//pkg/api:go_default_library", | ||||||
|         "//pkg/apis/admissionregistration:go_default_library", |         "//pkg/apis/admissionregistration:go_default_library", | ||||||
|         "//pkg/apis/admissionregistration/validation:go_default_library", |         "//pkg/apis/admissionregistration/validation:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", | ||||||
|     ], |     ], | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -40,7 +40,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		ObjectNameFunc: func(obj runtime.Object) (string, error) { | 		ObjectNameFunc: func(obj runtime.Object) (string, error) { | ||||||
| 			return obj.(*admissionregistration.ExternalAdmissionHookConfiguration).Name, nil | 			return obj.(*admissionregistration.ExternalAdmissionHookConfiguration).Name, nil | ||||||
| 		}, | 		}, | ||||||
| 		PredicateFunc:            externaladmissionhookconfiguration.MatchExternalAdmissionHookConfiguration, |  | ||||||
| 		DefaultQualifiedResource: admissionregistration.Resource("externaladmissionhookconfigurations"), | 		DefaultQualifiedResource: admissionregistration.Resource("externaladmissionhookconfigurations"), | ||||||
| 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("externaladmissionhookconfigurations"), | 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("externaladmissionhookconfigurations"), | ||||||
|  |  | ||||||
| @@ -48,7 +47,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		UpdateStrategy: externaladmissionhookconfiguration.Strategy, | 		UpdateStrategy: externaladmissionhookconfiguration.Strategy, | ||||||
| 		DeleteStrategy: externaladmissionhookconfiguration.Strategy, | 		DeleteStrategy: externaladmissionhookconfiguration.Strategy, | ||||||
| 	} | 	} | ||||||
| 	options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: externaladmissionhookconfiguration.GetAttrs} | 	options := &generic.StoreOptions{RESTOptions: optsGetter} | ||||||
| 	if err := store.CompleteWithOptions(options); err != nil { | 	if err := store.CompleteWithOptions(options); err != nil { | ||||||
| 		panic(err) // TODO: Propagate error up | 		panic(err) // TODO: Propagate error up | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -17,16 +17,11 @@ limitations under the License. | |||||||
| package externaladmissionhookconfiguration | package externaladmissionhookconfiguration | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"fmt" |  | ||||||
| 	"reflect" | 	"reflect" | ||||||
|  |  | ||||||
| 	"k8s.io/apimachinery/pkg/fields" |  | ||||||
| 	"k8s.io/apimachinery/pkg/labels" |  | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/util/validation/field" | 	"k8s.io/apimachinery/pkg/util/validation/field" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/apiserver/pkg/registry/generic" |  | ||||||
| 	apistorage "k8s.io/apiserver/pkg/storage" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage/names" | 	"k8s.io/apiserver/pkg/storage/names" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/apis/admissionregistration" | 	"k8s.io/kubernetes/pkg/apis/admissionregistration" | ||||||
| @@ -93,28 +88,3 @@ func (externaladmissionhookConfigurationStrategy) ValidateUpdate(ctx genericapir | |||||||
| func (externaladmissionhookConfigurationStrategy) AllowUnconditionalUpdate() bool { | func (externaladmissionhookConfigurationStrategy) AllowUnconditionalUpdate() bool { | ||||||
| 	return false | 	return false | ||||||
| } | } | ||||||
|  |  | ||||||
| // MatchReplicaSet is the filter used by the generic etcd backend to route |  | ||||||
| // watch events from etcd to clients of the apiserver only interested in specific |  | ||||||
| // labels/fields. |  | ||||||
| func MatchExternalAdmissionHookConfiguration(label labels.Selector, field fields.Selector) apistorage.SelectionPredicate { |  | ||||||
| 	return apistorage.SelectionPredicate{ |  | ||||||
| 		Label:    label, |  | ||||||
| 		Field:    field, |  | ||||||
| 		GetAttrs: GetAttrs, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // GetAttrs returns labels and fields of a given object for filtering purposes. |  | ||||||
| func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { |  | ||||||
| 	ic, ok := obj.(*admissionregistration.ExternalAdmissionHookConfiguration) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil, nil, false, fmt.Errorf("Given object is not a ExternalAdmissionHookConfiguration.") |  | ||||||
| 	} |  | ||||||
| 	return labels.Set(ic.ObjectMeta.Labels), ExternalAdmissionHookConfigurationToSelectableFields(ic), ic.Initializers != nil, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // ExternalAdmissionHookConfigurationToSelectableFields returns a field set that represents the object. |  | ||||||
| func ExternalAdmissionHookConfigurationToSelectableFields(ic *admissionregistration.ExternalAdmissionHookConfiguration) fields.Set { |  | ||||||
| 	return generic.ObjectMetaFieldsSet(&ic.ObjectMeta, false) |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -18,13 +18,9 @@ go_library( | |||||||
|         "//pkg/api:go_default_library", |         "//pkg/api:go_default_library", | ||||||
|         "//pkg/apis/admissionregistration:go_default_library", |         "//pkg/apis/admissionregistration:go_default_library", | ||||||
|         "//pkg/apis/admissionregistration/validation:go_default_library", |         "//pkg/apis/admissionregistration/validation:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", | ||||||
|     ], |     ], | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -40,7 +40,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		ObjectNameFunc: func(obj runtime.Object) (string, error) { | 		ObjectNameFunc: func(obj runtime.Object) (string, error) { | ||||||
| 			return obj.(*admissionregistration.InitializerConfiguration).Name, nil | 			return obj.(*admissionregistration.InitializerConfiguration).Name, nil | ||||||
| 		}, | 		}, | ||||||
| 		PredicateFunc:            initializerconfiguration.MatchInitializerConfiguration, |  | ||||||
| 		DefaultQualifiedResource: admissionregistration.Resource("initializerconfigurations"), | 		DefaultQualifiedResource: admissionregistration.Resource("initializerconfigurations"), | ||||||
| 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("initializerconfigurations"), | 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("initializerconfigurations"), | ||||||
|  |  | ||||||
| @@ -48,7 +47,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		UpdateStrategy: initializerconfiguration.Strategy, | 		UpdateStrategy: initializerconfiguration.Strategy, | ||||||
| 		DeleteStrategy: initializerconfiguration.Strategy, | 		DeleteStrategy: initializerconfiguration.Strategy, | ||||||
| 	} | 	} | ||||||
| 	options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: initializerconfiguration.GetAttrs} | 	options := &generic.StoreOptions{RESTOptions: optsGetter} | ||||||
| 	if err := store.CompleteWithOptions(options); err != nil { | 	if err := store.CompleteWithOptions(options); err != nil { | ||||||
| 		panic(err) // TODO: Propagate error up | 		panic(err) // TODO: Propagate error up | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -17,16 +17,11 @@ limitations under the License. | |||||||
| package initializerconfiguration | package initializerconfiguration | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"fmt" |  | ||||||
| 	"reflect" | 	"reflect" | ||||||
|  |  | ||||||
| 	"k8s.io/apimachinery/pkg/fields" |  | ||||||
| 	"k8s.io/apimachinery/pkg/labels" |  | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/util/validation/field" | 	"k8s.io/apimachinery/pkg/util/validation/field" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/apiserver/pkg/registry/generic" |  | ||||||
| 	apistorage "k8s.io/apiserver/pkg/storage" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage/names" | 	"k8s.io/apiserver/pkg/storage/names" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/apis/admissionregistration" | 	"k8s.io/kubernetes/pkg/apis/admissionregistration" | ||||||
| @@ -93,28 +88,3 @@ func (initializerConfigurationStrategy) ValidateUpdate(ctx genericapirequest.Con | |||||||
| func (initializerConfigurationStrategy) AllowUnconditionalUpdate() bool { | func (initializerConfigurationStrategy) AllowUnconditionalUpdate() bool { | ||||||
| 	return false | 	return false | ||||||
| } | } | ||||||
|  |  | ||||||
| // MatchReplicaSet is the filter used by the generic etcd backend to route |  | ||||||
| // watch events from etcd to clients of the apiserver only interested in specific |  | ||||||
| // labels/fields. |  | ||||||
| func MatchInitializerConfiguration(label labels.Selector, field fields.Selector) apistorage.SelectionPredicate { |  | ||||||
| 	return apistorage.SelectionPredicate{ |  | ||||||
| 		Label:    label, |  | ||||||
| 		Field:    field, |  | ||||||
| 		GetAttrs: GetAttrs, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // GetAttrs returns labels and fields of a given object for filtering purposes. |  | ||||||
| func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { |  | ||||||
| 	ic, ok := obj.(*admissionregistration.InitializerConfiguration) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil, nil, false, fmt.Errorf("Given object is not a InitializerConfiguration.") |  | ||||||
| 	} |  | ||||||
| 	return labels.Set(ic.ObjectMeta.Labels), InitializerConfigurationToSelectableFields(ic), ic.ObjectMeta.Initializers != nil, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // InitializerConfigurationToSelectableFields returns a field set that represents the object. |  | ||||||
| func InitializerConfigurationToSelectableFields(ic *admissionregistration.InitializerConfiguration) fields.Set { |  | ||||||
| 	return generic.ObjectMetaFieldsSet(&ic.ObjectMeta, false) |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -17,8 +17,6 @@ go_test( | |||||||
|         "//pkg/api:go_default_library", |         "//pkg/api:go_default_library", | ||||||
|         "//pkg/apis/apps:go_default_library", |         "//pkg/apis/apps:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|     ], |     ], | ||||||
| @@ -35,14 +33,10 @@ go_library( | |||||||
|         "//pkg/api:go_default_library", |         "//pkg/api:go_default_library", | ||||||
|         "//pkg/apis/apps:go_default_library", |         "//pkg/apis/apps:go_default_library", | ||||||
|         "//pkg/apis/apps/validation:go_default_library", |         "//pkg/apis/apps/validation:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", | ||||||
|     ], |     ], | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -37,7 +37,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		Copier:                   api.Scheme, | 		Copier:                   api.Scheme, | ||||||
| 		NewFunc:                  func() runtime.Object { return &apps.ControllerRevision{} }, | 		NewFunc:                  func() runtime.Object { return &apps.ControllerRevision{} }, | ||||||
| 		NewListFunc:              func() runtime.Object { return &apps.ControllerRevisionList{} }, | 		NewListFunc:              func() runtime.Object { return &apps.ControllerRevisionList{} }, | ||||||
| 		PredicateFunc:            controllerrevision.MatchControllerRevision, |  | ||||||
| 		DefaultQualifiedResource: apps.Resource("controllerrevisions"), | 		DefaultQualifiedResource: apps.Resource("controllerrevisions"), | ||||||
| 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("controllerrevisions"), | 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("controllerrevisions"), | ||||||
|  |  | ||||||
| @@ -45,7 +44,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		UpdateStrategy: controllerrevision.Strategy, | 		UpdateStrategy: controllerrevision.Strategy, | ||||||
| 		DeleteStrategy: controllerrevision.Strategy, | 		DeleteStrategy: controllerrevision.Strategy, | ||||||
| 	} | 	} | ||||||
| 	options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: controllerrevision.GetAttrs} | 	options := &generic.StoreOptions{RESTOptions: optsGetter} | ||||||
| 	if err := store.CompleteWithOptions(options); err != nil { | 	if err := store.CompleteWithOptions(options); err != nil { | ||||||
| 		panic(err) | 		panic(err) | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -17,16 +17,10 @@ limitations under the License. | |||||||
| package controllerrevision | package controllerrevision | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"errors" |  | ||||||
|  |  | ||||||
| 	"k8s.io/apimachinery/pkg/fields" |  | ||||||
| 	"k8s.io/apimachinery/pkg/labels" |  | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/util/validation/field" | 	"k8s.io/apimachinery/pkg/util/validation/field" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/apiserver/pkg/registry/generic" |  | ||||||
| 	"k8s.io/apiserver/pkg/registry/rest" | 	"k8s.io/apiserver/pkg/registry/rest" | ||||||
| 	apistorage "k8s.io/apiserver/pkg/storage" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage/names" | 	"k8s.io/apiserver/pkg/storage/names" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/apis/apps" | 	"k8s.io/kubernetes/pkg/apis/apps" | ||||||
| @@ -83,26 +77,3 @@ func (strategy) ValidateUpdate(ctx genericapirequest.Context, newObj, oldObj run | |||||||
| 	oldRevision, newRevision := oldObj.(*apps.ControllerRevision), newObj.(*apps.ControllerRevision) | 	oldRevision, newRevision := oldObj.(*apps.ControllerRevision), newObj.(*apps.ControllerRevision) | ||||||
| 	return validation.ValidateControllerRevisionUpdate(newRevision, oldRevision) | 	return validation.ValidateControllerRevisionUpdate(newRevision, oldRevision) | ||||||
| } | } | ||||||
|  |  | ||||||
| // ControllerRevisionToSelectableFields returns a field set that represents the object for matching purposes. |  | ||||||
| func ControllerRevisionToSelectableFields(revision *apps.ControllerRevision) fields.Set { |  | ||||||
| 	return generic.ObjectMetaFieldsSet(&revision.ObjectMeta, true) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // GetAttrs returns labels and fields of a given object for filtering purposes. |  | ||||||
| func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { |  | ||||||
| 	history, ok := obj.(*apps.ControllerRevision) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil, nil, false, errors.New("supplied object is not an ControllerRevision") |  | ||||||
| 	} |  | ||||||
| 	return labels.Set(history.ObjectMeta.Labels), ControllerRevisionToSelectableFields(history), history.Initializers != nil, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // MatchControllerRevision returns a generic matcher for a given label and field selector. |  | ||||||
| func MatchControllerRevision(label labels.Selector, field fields.Selector) apistorage.SelectionPredicate { |  | ||||||
| 	return apistorage.SelectionPredicate{ |  | ||||||
| 		Label:    label, |  | ||||||
| 		Field:    field, |  | ||||||
| 		GetAttrs: GetAttrs, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -20,8 +20,6 @@ import ( | |||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||||
| 	"k8s.io/apimachinery/pkg/fields" |  | ||||||
| 	"k8s.io/apimachinery/pkg/labels" |  | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| @@ -127,55 +125,6 @@ func TestStrategy_ValidateUpdate(t *testing.T) { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func TestControllerRevisionToSelectableFields(t *testing.T) { |  | ||||||
| 	rev := newControllerRevision("validname", "validns", newObject(), 0) |  | ||||||
| 	fieldSet := ControllerRevisionToSelectableFields(rev) |  | ||||||
| 	if fieldSet.Get("metadata.name") != rev.Name { |  | ||||||
| 		t.Errorf("expeted %s found %s", rev.Name, fieldSet.Get("metadata.name")) |  | ||||||
| 	} |  | ||||||
| 	if fieldSet.Get("metadata.namespace") != rev.Namespace { |  | ||||||
| 		t.Errorf("expeted %s found %s", rev.Namespace, fieldSet.Get("metadata.namespace")) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestGetAttrs(t *testing.T) { |  | ||||||
| 	rev := newControllerRevision("validname", "validns", newObject(), 0) |  | ||||||
| 	labelSet, fieldSet, uninitialized, err := GetAttrs(rev) |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatal(err) |  | ||||||
| 	} |  | ||||||
| 	if uninitialized { |  | ||||||
| 		t.Errorf("unexpected attrs") |  | ||||||
| 	} |  | ||||||
| 	if fieldSet.Get("metadata.name") != rev.Name { |  | ||||||
| 		t.Errorf("expeted %s found %s", rev.Name, fieldSet.Get("metadata.name")) |  | ||||||
| 	} |  | ||||||
| 	if fieldSet.Get("metadata.namespace") != rev.Namespace { |  | ||||||
| 		t.Errorf("expeted %s found %s", rev.Namespace, fieldSet.Get("metadata.namespace")) |  | ||||||
| 	} |  | ||||||
| 	if labelSet.Get("foo") != rev.Labels["foo"] { |  | ||||||
| 		t.Errorf("expected %s found %s", rev.Labels["foo"], labelSet.Get("foo")) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestMatchControllerRevision(t *testing.T) { |  | ||||||
| 	rev := newControllerRevision("validname", "validns", newObject(), 0) |  | ||||||
| 	ls := labels.SelectorFromSet(labels.Set(rev.Labels)) |  | ||||||
| 	pred := MatchControllerRevision(ls, nil) |  | ||||||
| 	if matches, err := pred.Matches(rev); err != nil { |  | ||||||
| 		t.Error(err) |  | ||||||
| 	} else if !matches { |  | ||||||
| 		t.Error("failed to match ControllerRevision by labels") |  | ||||||
| 	} |  | ||||||
| 	fs := fields.SelectorFromSet(ControllerRevisionToSelectableFields(rev)) |  | ||||||
| 	pred = MatchControllerRevision(ls, fs) |  | ||||||
| 	if matches, err := pred.Matches(rev); err != nil { |  | ||||||
| 		t.Error(err) |  | ||||||
| 	} else if !matches { |  | ||||||
| 		t.Error("failed to match ControllerRevision by fields") |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func newControllerRevision(name, namespace string, data runtime.Object, revision int64) *apps.ControllerRevision { | func newControllerRevision(name, namespace string, data runtime.Object, revision int64) *apps.ControllerRevision { | ||||||
| 	return &apps.ControllerRevision{ | 	return &apps.ControllerRevision{ | ||||||
| 		ObjectMeta: metav1.ObjectMeta{ | 		ObjectMeta: metav1.ObjectMeta{ | ||||||
|   | |||||||
| @@ -20,14 +20,10 @@ go_library( | |||||||
|         "//pkg/apis/apps:go_default_library", |         "//pkg/apis/apps:go_default_library", | ||||||
|         "//pkg/apis/apps/validation:go_default_library", |         "//pkg/apis/apps/validation:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", | ||||||
|     ], |     ], | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -40,7 +40,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { | |||||||
| 		Copier:                   api.Scheme, | 		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{} }, | ||||||
| 		PredicateFunc:            statefulset.MatchStatefulSet, |  | ||||||
| 		DefaultQualifiedResource: appsapi.Resource("statefulsets"), | 		DefaultQualifiedResource: appsapi.Resource("statefulsets"), | ||||||
| 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("statefulsets"), | 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("statefulsets"), | ||||||
|  |  | ||||||
| @@ -48,7 +47,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { | |||||||
| 		UpdateStrategy: statefulset.Strategy, | 		UpdateStrategy: statefulset.Strategy, | ||||||
| 		DeleteStrategy: statefulset.Strategy, | 		DeleteStrategy: statefulset.Strategy, | ||||||
| 	} | 	} | ||||||
| 	options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: statefulset.GetAttrs} | 	options := &generic.StoreOptions{RESTOptions: optsGetter} | ||||||
| 	if err := store.CompleteWithOptions(options); err != nil { | 	if err := store.CompleteWithOptions(options); err != nil { | ||||||
| 		panic(err) // TODO: Propagate error up | 		panic(err) // TODO: Propagate error up | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -17,17 +17,11 @@ limitations under the License. | |||||||
| package statefulset | package statefulset | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"fmt" |  | ||||||
|  |  | ||||||
| 	apiequality "k8s.io/apimachinery/pkg/api/equality" | 	apiequality "k8s.io/apimachinery/pkg/api/equality" | ||||||
| 	"k8s.io/apimachinery/pkg/fields" |  | ||||||
| 	"k8s.io/apimachinery/pkg/labels" |  | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/util/validation/field" | 	"k8s.io/apimachinery/pkg/util/validation/field" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/apiserver/pkg/registry/generic" |  | ||||||
| 	"k8s.io/apiserver/pkg/registry/rest" | 	"k8s.io/apiserver/pkg/registry/rest" | ||||||
| 	"k8s.io/apiserver/pkg/storage" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage/names" | 	"k8s.io/apiserver/pkg/storage/names" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/apis/apps" | 	"k8s.io/kubernetes/pkg/apis/apps" | ||||||
| @@ -106,30 +100,6 @@ func (statefulSetStrategy) AllowUnconditionalUpdate() bool { | |||||||
| 	return true | 	return true | ||||||
| } | } | ||||||
|  |  | ||||||
| // StatefulSetToSelectableFields returns a field set that represents the object. |  | ||||||
| func StatefulSetToSelectableFields(statefulSet *apps.StatefulSet) fields.Set { |  | ||||||
| 	return generic.ObjectMetaFieldsSet(&statefulSet.ObjectMeta, true) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // GetAttrs returns labels and fields of a given object for filtering purposes. |  | ||||||
| func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { |  | ||||||
| 	statefulSet, ok := obj.(*apps.StatefulSet) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil, nil, false, fmt.Errorf("given object is not an StatefulSet.") |  | ||||||
| 	} |  | ||||||
| 	return labels.Set(statefulSet.ObjectMeta.Labels), StatefulSetToSelectableFields(statefulSet), statefulSet.Initializers != nil, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // MatchStatefulSet is the filter used by the generic etcd backend to watch events |  | ||||||
| // from etcd to clients of the apiserver only interested in specific labels/fields. |  | ||||||
| func MatchStatefulSet(label labels.Selector, field fields.Selector) storage.SelectionPredicate { |  | ||||||
| 	return storage.SelectionPredicate{ |  | ||||||
| 		Label:    label, |  | ||||||
| 		Field:    field, |  | ||||||
| 		GetAttrs: GetAttrs, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type statefulSetStatusStrategy struct { | type statefulSetStatusStrategy struct { | ||||||
| 	statefulSetStrategy | 	statefulSetStrategy | ||||||
| } | } | ||||||
|   | |||||||
| @@ -5,7 +5,6 @@ licenses(["notice"]) | |||||||
| load( | load( | ||||||
|     "@io_bazel_rules_go//go:def.bzl", |     "@io_bazel_rules_go//go:def.bzl", | ||||||
|     "go_library", |     "go_library", | ||||||
|     "go_test", |  | ||||||
| ) | ) | ||||||
|  |  | ||||||
| go_library( | go_library( | ||||||
| @@ -19,29 +18,13 @@ go_library( | |||||||
|         "//pkg/api:go_default_library", |         "//pkg/api:go_default_library", | ||||||
|         "//pkg/apis/autoscaling:go_default_library", |         "//pkg/apis/autoscaling:go_default_library", | ||||||
|         "//pkg/apis/autoscaling/validation:go_default_library", |         "//pkg/apis/autoscaling/validation:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", | ||||||
|     ], |     ], | ||||||
| ) | ) | ||||||
|  |  | ||||||
| go_test( |  | ||||||
|     name = "go_default_test", |  | ||||||
|     srcs = ["strategy_test.go"], |  | ||||||
|     library = ":go_default_library", |  | ||||||
|     tags = ["automanaged"], |  | ||||||
|     deps = [ |  | ||||||
|         "//pkg/api:go_default_library", |  | ||||||
|         "//pkg/api/testapi:go_default_library", |  | ||||||
|         "//pkg/api/testing:go_default_library", |  | ||||||
|         "//pkg/apis/autoscaling:go_default_library", |  | ||||||
|     ], |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| filegroup( | filegroup( | ||||||
|     name = "package-srcs", |     name = "package-srcs", | ||||||
|     srcs = glob(["**"]), |     srcs = glob(["**"]), | ||||||
|   | |||||||
| @@ -39,7 +39,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { | |||||||
| 		Copier:                   api.Scheme, | 		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{} }, | ||||||
| 		PredicateFunc:            horizontalpodautoscaler.MatchAutoscaler, |  | ||||||
| 		DefaultQualifiedResource: autoscaling.Resource("horizontalpodautoscalers"), | 		DefaultQualifiedResource: autoscaling.Resource("horizontalpodautoscalers"), | ||||||
| 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("horizontalpodautoscalers"), | 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("horizontalpodautoscalers"), | ||||||
|  |  | ||||||
| @@ -47,7 +46,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { | |||||||
| 		UpdateStrategy: horizontalpodautoscaler.Strategy, | 		UpdateStrategy: horizontalpodautoscaler.Strategy, | ||||||
| 		DeleteStrategy: horizontalpodautoscaler.Strategy, | 		DeleteStrategy: horizontalpodautoscaler.Strategy, | ||||||
| 	} | 	} | ||||||
| 	options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: horizontalpodautoscaler.GetAttrs} | 	options := &generic.StoreOptions{RESTOptions: optsGetter} | ||||||
| 	if err := store.CompleteWithOptions(options); err != nil { | 	if err := store.CompleteWithOptions(options); err != nil { | ||||||
| 		panic(err) // TODO: Propagate error up | 		panic(err) // TODO: Propagate error up | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -17,14 +17,9 @@ limitations under the License. | |||||||
| package horizontalpodautoscaler | package horizontalpodautoscaler | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"fmt" |  | ||||||
|  |  | ||||||
| 	"k8s.io/apimachinery/pkg/fields" |  | ||||||
| 	"k8s.io/apimachinery/pkg/labels" |  | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/util/validation/field" | 	"k8s.io/apimachinery/pkg/util/validation/field" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/apiserver/pkg/storage" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage/names" | 	"k8s.io/apiserver/pkg/storage/names" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/apis/autoscaling" | 	"k8s.io/kubernetes/pkg/apis/autoscaling" | ||||||
| @@ -86,27 +81,6 @@ func (autoscalerStrategy) AllowUnconditionalUpdate() bool { | |||||||
| 	return true | 	return true | ||||||
| } | } | ||||||
|  |  | ||||||
| func AutoscalerToSelectableFields(hpa *autoscaling.HorizontalPodAutoscaler) fields.Set { |  | ||||||
| 	return nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // GetAttrs returns labels and fields of a given object for filtering purposes. |  | ||||||
| func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { |  | ||||||
| 	hpa, ok := obj.(*autoscaling.HorizontalPodAutoscaler) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil, nil, false, fmt.Errorf("given object is not a horizontal pod autoscaler.") |  | ||||||
| 	} |  | ||||||
| 	return labels.Set(hpa.ObjectMeta.Labels), AutoscalerToSelectableFields(hpa), hpa.Initializers != nil, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func MatchAutoscaler(label labels.Selector, field fields.Selector) storage.SelectionPredicate { |  | ||||||
| 	return storage.SelectionPredicate{ |  | ||||||
| 		Label:    label, |  | ||||||
| 		Field:    field, |  | ||||||
| 		GetAttrs: GetAttrs, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type autoscalerStatusStrategy struct { | type autoscalerStatusStrategy struct { | ||||||
| 	autoscalerStrategy | 	autoscalerStrategy | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,35 +0,0 @@ | |||||||
| /* |  | ||||||
| Copyright 2015 The Kubernetes Authors. |  | ||||||
|  |  | ||||||
| Licensed under the Apache License, Version 2.0 (the "License"); |  | ||||||
| you may not use this file except in compliance with the License. |  | ||||||
| You may obtain a copy of the License at |  | ||||||
|  |  | ||||||
|     http://www.apache.org/licenses/LICENSE-2.0 |  | ||||||
|  |  | ||||||
| Unless required by applicable law or agreed to in writing, software |  | ||||||
| distributed under the License is distributed on an "AS IS" BASIS, |  | ||||||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |  | ||||||
| See the License for the specific language governing permissions and |  | ||||||
| limitations under the License. |  | ||||||
| */ |  | ||||||
|  |  | ||||||
| package horizontalpodautoscaler |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	_ "k8s.io/kubernetes/pkg/api" |  | ||||||
| 	"k8s.io/kubernetes/pkg/api/testapi" |  | ||||||
| 	apitesting "k8s.io/kubernetes/pkg/api/testing" |  | ||||||
| 	"k8s.io/kubernetes/pkg/apis/autoscaling" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestSelectableFieldLabelConversions(t *testing.T) { |  | ||||||
| 	apitesting.TestSelectableFieldLabelConversionsOfKind(t, |  | ||||||
| 		testapi.Autoscaling.GroupVersion().String(), |  | ||||||
| 		"Autoscaler", |  | ||||||
| 		AutoscalerToSelectableFields(&autoscaling.HorizontalPodAutoscaler{}), |  | ||||||
| 		nil, |  | ||||||
| 	) |  | ||||||
| } |  | ||||||
| @@ -22,15 +22,11 @@ go_library( | |||||||
|         "//pkg/apis/certificates/validation:go_default_library", |         "//pkg/apis/certificates/validation:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", | ||||||
|     ], |     ], | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -39,7 +39,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST, *Approva | |||||||
| 		Copier:                   api.Scheme, | 		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{} }, | ||||||
| 		PredicateFunc:            csrregistry.Matcher, |  | ||||||
| 		DefaultQualifiedResource: certificates.Resource("certificatesigningrequests"), | 		DefaultQualifiedResource: certificates.Resource("certificatesigningrequests"), | ||||||
| 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("certificatesigningrequests"), | 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("certificatesigningrequests"), | ||||||
|  |  | ||||||
| @@ -47,7 +46,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST, *Approva | |||||||
| 		UpdateStrategy: csrregistry.Strategy, | 		UpdateStrategy: csrregistry.Strategy, | ||||||
| 		DeleteStrategy: csrregistry.Strategy, | 		DeleteStrategy: csrregistry.Strategy, | ||||||
| 	} | 	} | ||||||
| 	options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: csrregistry.GetAttrs} | 	options := &generic.StoreOptions{RESTOptions: optsGetter} | ||||||
| 	if err := store.CompleteWithOptions(options); err != nil { | 	if err := store.CompleteWithOptions(options); err != nil { | ||||||
| 		panic(err) // TODO: Propagate error up | 		panic(err) // TODO: Propagate error up | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -19,13 +19,9 @@ package certificates | |||||||
| import ( | import ( | ||||||
| 	"fmt" | 	"fmt" | ||||||
|  |  | ||||||
| 	"k8s.io/apimachinery/pkg/fields" |  | ||||||
| 	"k8s.io/apimachinery/pkg/labels" |  | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/util/validation/field" | 	"k8s.io/apimachinery/pkg/util/validation/field" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/apiserver/pkg/registry/generic" |  | ||||||
| 	apistorage "k8s.io/apiserver/pkg/storage" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage/names" | 	"k8s.io/apiserver/pkg/storage/names" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/apis/certificates" | 	"k8s.io/kubernetes/pkg/apis/certificates" | ||||||
| @@ -176,26 +172,3 @@ func (csrApprovalStrategy) PrepareForUpdate(ctx genericapirequest.Context, obj, | |||||||
| func (csrApprovalStrategy) ValidateUpdate(ctx genericapirequest.Context, obj, old runtime.Object) field.ErrorList { | func (csrApprovalStrategy) ValidateUpdate(ctx genericapirequest.Context, obj, old runtime.Object) field.ErrorList { | ||||||
| 	return validation.ValidateCertificateSigningRequestUpdate(obj.(*certificates.CertificateSigningRequest), old.(*certificates.CertificateSigningRequest)) | 	return validation.ValidateCertificateSigningRequestUpdate(obj.(*certificates.CertificateSigningRequest), old.(*certificates.CertificateSigningRequest)) | ||||||
| } | } | ||||||
|  |  | ||||||
| // GetAttrs returns labels and fields of a given object for filtering purposes. |  | ||||||
| func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { |  | ||||||
| 	sa, ok := obj.(*certificates.CertificateSigningRequest) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil, nil, false, fmt.Errorf("not a CertificateSigningRequest") |  | ||||||
| 	} |  | ||||||
| 	return labels.Set(sa.Labels), SelectableFields(sa), sa.Initializers != nil, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // Matcher returns a generic matcher for a given label and field selector. |  | ||||||
| func Matcher(label labels.Selector, field fields.Selector) apistorage.SelectionPredicate { |  | ||||||
| 	return apistorage.SelectionPredicate{ |  | ||||||
| 		Label:    label, |  | ||||||
| 		Field:    field, |  | ||||||
| 		GetAttrs: GetAttrs, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // SelectableFields returns a field set that can be used for filter selection |  | ||||||
| func SelectableFields(obj *certificates.CertificateSigningRequest) fields.Set { |  | ||||||
| 	return generic.ObjectMetaFieldsSet(&obj.ObjectMeta, false) |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -21,15 +21,11 @@ go_library( | |||||||
|         "//pkg/api/validation:go_default_library", |         "//pkg/api/validation:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", | ||||||
|     ], |     ], | ||||||
| ) | ) | ||||||
| @@ -41,7 +37,6 @@ go_test( | |||||||
|     tags = ["automanaged"], |     tags = ["automanaged"], | ||||||
|     deps = [ |     deps = [ | ||||||
|         "//pkg/api:go_default_library", |         "//pkg/api:go_default_library", | ||||||
|         "//pkg/api/testing:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|     ], |     ], | ||||||
|   | |||||||
| @@ -37,7 +37,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		Copier:                   api.Scheme, | 		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{} }, | ||||||
| 		PredicateFunc:            configmap.MatchConfigMap, |  | ||||||
| 		DefaultQualifiedResource: api.Resource("configmaps"), | 		DefaultQualifiedResource: api.Resource("configmaps"), | ||||||
| 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("configmaps"), | 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("configmaps"), | ||||||
|  |  | ||||||
| @@ -45,7 +44,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		UpdateStrategy: configmap.Strategy, | 		UpdateStrategy: configmap.Strategy, | ||||||
| 		DeleteStrategy: configmap.Strategy, | 		DeleteStrategy: configmap.Strategy, | ||||||
| 	} | 	} | ||||||
| 	options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: configmap.GetAttrs} | 	options := &generic.StoreOptions{RESTOptions: optsGetter} | ||||||
| 	if err := store.CompleteWithOptions(options); err != nil { | 	if err := store.CompleteWithOptions(options); err != nil { | ||||||
| 		panic(err) // TODO: Propagate error up | 		panic(err) // TODO: Propagate error up | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -17,16 +17,10 @@ limitations under the License. | |||||||
| package configmap | package configmap | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"fmt" |  | ||||||
|  |  | ||||||
| 	"k8s.io/apimachinery/pkg/fields" |  | ||||||
| 	"k8s.io/apimachinery/pkg/labels" |  | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/util/validation/field" | 	"k8s.io/apimachinery/pkg/util/validation/field" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/apiserver/pkg/registry/generic" |  | ||||||
| 	"k8s.io/apiserver/pkg/registry/rest" | 	"k8s.io/apiserver/pkg/registry/rest" | ||||||
| 	apistorage "k8s.io/apiserver/pkg/storage" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage/names" | 	"k8s.io/apiserver/pkg/storage/names" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/api/validation" | 	"k8s.io/kubernetes/pkg/api/validation" | ||||||
| @@ -84,26 +78,3 @@ func (strategy) ValidateUpdate(ctx genericapirequest.Context, newObj, oldObj run | |||||||
|  |  | ||||||
| 	return validation.ValidateConfigMapUpdate(newCfg, oldCfg) | 	return validation.ValidateConfigMapUpdate(newCfg, oldCfg) | ||||||
| } | } | ||||||
|  |  | ||||||
| // ConfigMapToSelectableFields returns a field set that represents the object for matching purposes. |  | ||||||
| func ConfigMapToSelectableFields(cfg *api.ConfigMap) fields.Set { |  | ||||||
| 	return generic.ObjectMetaFieldsSet(&cfg.ObjectMeta, true) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // GetAttrs returns labels and fields of a given object for filtering purposes. |  | ||||||
| func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { |  | ||||||
| 	cfg, ok := obj.(*api.ConfigMap) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil, nil, false, fmt.Errorf("given object is not a ConfigMap") |  | ||||||
| 	} |  | ||||||
| 	return labels.Set(cfg.ObjectMeta.Labels), ConfigMapToSelectableFields(cfg), cfg.Initializers != nil, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // MatchConfigMap returns a generic matcher for a given label and field selector. |  | ||||||
| func MatchConfigMap(label labels.Selector, field fields.Selector) apistorage.SelectionPredicate { |  | ||||||
| 	return apistorage.SelectionPredicate{ |  | ||||||
| 		Label:    label, |  | ||||||
| 		Field:    field, |  | ||||||
| 		GetAttrs: GetAttrs, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -22,7 +22,6 @@ import ( | |||||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	apitesting "k8s.io/kubernetes/pkg/api/testing" |  | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestConfigMapStrategy(t *testing.T) { | func TestConfigMapStrategy(t *testing.T) { | ||||||
| @@ -69,12 +68,3 @@ func TestConfigMapStrategy(t *testing.T) { | |||||||
| 		t.Errorf("Expected a validation error") | 		t.Errorf("Expected a validation error") | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func TestSelectableFieldLabelConversions(t *testing.T) { |  | ||||||
| 	apitesting.TestSelectableFieldLabelConversionsOfKind(t, |  | ||||||
| 		api.Registry.GroupOrDie(api.GroupName).GroupVersion.String(), |  | ||||||
| 		"ConfigMap", |  | ||||||
| 		ConfigMapToSelectableFields(&api.ConfigMap{}), |  | ||||||
| 		nil, |  | ||||||
| 	) |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -5,7 +5,6 @@ licenses(["notice"]) | |||||||
| load( | load( | ||||||
|     "@io_bazel_rules_go//go:def.bzl", |     "@io_bazel_rules_go//go:def.bzl", | ||||||
|     "go_library", |     "go_library", | ||||||
|     "go_test", |  | ||||||
| ) | ) | ||||||
|  |  | ||||||
| go_library( | go_library( | ||||||
| @@ -22,30 +21,15 @@ go_library( | |||||||
|         "//pkg/api/validation:go_default_library", |         "//pkg/api/validation:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", | ||||||
|     ], |     ], | ||||||
| ) | ) | ||||||
|  |  | ||||||
| go_test( |  | ||||||
|     name = "go_default_test", |  | ||||||
|     srcs = ["strategy_test.go"], |  | ||||||
|     library = ":go_default_library", |  | ||||||
|     tags = ["automanaged"], |  | ||||||
|     deps = [ |  | ||||||
|         "//pkg/api:go_default_library", |  | ||||||
|         "//pkg/api/testing:go_default_library", |  | ||||||
|     ], |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| filegroup( | filegroup( | ||||||
|     name = "package-srcs", |     name = "package-srcs", | ||||||
|     srcs = glob(["**"]), |     srcs = glob(["**"]), | ||||||
|   | |||||||
| @@ -36,7 +36,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		Copier:                   api.Scheme, | 		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{} }, | ||||||
| 		PredicateFunc:            endpoint.MatchEndpoints, |  | ||||||
| 		DefaultQualifiedResource: api.Resource("endpoints"), | 		DefaultQualifiedResource: api.Resource("endpoints"), | ||||||
| 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("endpoints"), | 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("endpoints"), | ||||||
|  |  | ||||||
| @@ -44,7 +43,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		UpdateStrategy: endpoint.Strategy, | 		UpdateStrategy: endpoint.Strategy, | ||||||
| 		DeleteStrategy: endpoint.Strategy, | 		DeleteStrategy: endpoint.Strategy, | ||||||
| 	} | 	} | ||||||
| 	options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: endpoint.GetAttrs} | 	options := &generic.StoreOptions{RESTOptions: optsGetter} | ||||||
| 	if err := store.CompleteWithOptions(options); err != nil { | 	if err := store.CompleteWithOptions(options); err != nil { | ||||||
| 		panic(err) // TODO: Propagate error up | 		panic(err) // TODO: Propagate error up | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -17,15 +17,9 @@ limitations under the License. | |||||||
| package endpoint | package endpoint | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"fmt" |  | ||||||
|  |  | ||||||
| 	"k8s.io/apimachinery/pkg/fields" |  | ||||||
| 	"k8s.io/apimachinery/pkg/labels" |  | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/util/validation/field" | 	"k8s.io/apimachinery/pkg/util/validation/field" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/apiserver/pkg/registry/generic" |  | ||||||
| 	pkgstorage "k8s.io/apiserver/pkg/storage" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage/names" | 	"k8s.io/apiserver/pkg/storage/names" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	endptspkg "k8s.io/kubernetes/pkg/api/endpoints" | 	endptspkg "k8s.io/kubernetes/pkg/api/endpoints" | ||||||
| @@ -80,27 +74,3 @@ func (endpointsStrategy) ValidateUpdate(ctx genericapirequest.Context, obj, old | |||||||
| func (endpointsStrategy) AllowUnconditionalUpdate() bool { | func (endpointsStrategy) AllowUnconditionalUpdate() bool { | ||||||
| 	return true | 	return true | ||||||
| } | } | ||||||
|  |  | ||||||
| // GetAttrs returns labels and fields of a given object for filtering purposes. |  | ||||||
| func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { |  | ||||||
| 	endpoints, ok := obj.(*api.Endpoints) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil, nil, false, fmt.Errorf("invalid object type %#v", obj) |  | ||||||
| 	} |  | ||||||
| 	return endpoints.Labels, EndpointsToSelectableFields(endpoints), endpoints.Initializers != nil, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // MatchEndpoints returns a generic matcher for a given label and field selector. |  | ||||||
| func MatchEndpoints(label labels.Selector, field fields.Selector) pkgstorage.SelectionPredicate { |  | ||||||
| 	return pkgstorage.SelectionPredicate{ |  | ||||||
| 		Label:    label, |  | ||||||
| 		Field:    field, |  | ||||||
| 		GetAttrs: GetAttrs, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // EndpointsToSelectableFields returns a field set that represents the object |  | ||||||
| // TODO: fields are not labels, and the validation rules for them do not apply. |  | ||||||
| func EndpointsToSelectableFields(endpoints *api.Endpoints) fields.Set { |  | ||||||
| 	return generic.ObjectMetaFieldsSet(&endpoints.ObjectMeta, true) |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -1,33 +0,0 @@ | |||||||
| /* |  | ||||||
| Copyright 2014 The Kubernetes Authors. |  | ||||||
|  |  | ||||||
| Licensed under the Apache License, Version 2.0 (the "License"); |  | ||||||
| you may not use this file except in compliance with the License. |  | ||||||
| You may obtain a copy of the License at |  | ||||||
|  |  | ||||||
|     http://www.apache.org/licenses/LICENSE-2.0 |  | ||||||
|  |  | ||||||
| Unless required by applicable law or agreed to in writing, software |  | ||||||
| distributed under the License is distributed on an "AS IS" BASIS, |  | ||||||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |  | ||||||
| See the License for the specific language governing permissions and |  | ||||||
| limitations under the License. |  | ||||||
| */ |  | ||||||
|  |  | ||||||
| package endpoint |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	"k8s.io/kubernetes/pkg/api" |  | ||||||
| 	apitesting "k8s.io/kubernetes/pkg/api/testing" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestSelectableFieldLabelConversions(t *testing.T) { |  | ||||||
| 	apitesting.TestSelectableFieldLabelConversionsOfKind(t, |  | ||||||
| 		api.Registry.GroupOrDie(api.GroupName).GroupVersion.String(), |  | ||||||
| 		"Endpoints", |  | ||||||
| 		EndpointsToSelectableFields(&api.Endpoints{}), |  | ||||||
| 		nil, |  | ||||||
| 	) |  | ||||||
| } |  | ||||||
| @@ -5,7 +5,6 @@ licenses(["notice"]) | |||||||
| load( | load( | ||||||
|     "@io_bazel_rules_go//go:def.bzl", |     "@io_bazel_rules_go//go:def.bzl", | ||||||
|     "go_library", |     "go_library", | ||||||
|     "go_test", |  | ||||||
| ) | ) | ||||||
|  |  | ||||||
| go_library( | go_library( | ||||||
| @@ -18,28 +17,14 @@ go_library( | |||||||
|     deps = [ |     deps = [ | ||||||
|         "//pkg/api:go_default_library", |         "//pkg/api:go_default_library", | ||||||
|         "//pkg/api/validation:go_default_library", |         "//pkg/api/validation:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/uuid:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/uuid:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", | ||||||
|     ], |     ], | ||||||
| ) | ) | ||||||
|  |  | ||||||
| go_test( |  | ||||||
|     name = "go_default_test", |  | ||||||
|     srcs = ["strategy_test.go"], |  | ||||||
|     library = ":go_default_library", |  | ||||||
|     tags = ["automanaged"], |  | ||||||
|     deps = [ |  | ||||||
|         "//pkg/api:go_default_library", |  | ||||||
|         "//pkg/api/testing:go_default_library", |  | ||||||
|     ], |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| filegroup( | filegroup( | ||||||
|     name = "package-srcs", |     name = "package-srcs", | ||||||
|     srcs = glob(["**"]), |     srcs = glob(["**"]), | ||||||
|   | |||||||
| @@ -36,7 +36,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		Copier:                   api.Scheme, | 		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{} }, | ||||||
| 		PredicateFunc:            limitrange.MatchLimitRange, |  | ||||||
| 		DefaultQualifiedResource: api.Resource("limitranges"), | 		DefaultQualifiedResource: api.Resource("limitranges"), | ||||||
| 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("limitranges"), | 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("limitranges"), | ||||||
|  |  | ||||||
| @@ -45,7 +44,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		DeleteStrategy: limitrange.Strategy, | 		DeleteStrategy: limitrange.Strategy, | ||||||
| 		ExportStrategy: limitrange.Strategy, | 		ExportStrategy: limitrange.Strategy, | ||||||
| 	} | 	} | ||||||
| 	options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: limitrange.GetAttrs} | 	options := &generic.StoreOptions{RESTOptions: optsGetter} | ||||||
| 	if err := store.CompleteWithOptions(options); err != nil { | 	if err := store.CompleteWithOptions(options); err != nil { | ||||||
| 		panic(err) // TODO: Propagate error up | 		panic(err) // TODO: Propagate error up | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -17,15 +17,10 @@ limitations under the License. | |||||||
| package limitrange | package limitrange | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"fmt" |  | ||||||
|  |  | ||||||
| 	"k8s.io/apimachinery/pkg/fields" |  | ||||||
| 	"k8s.io/apimachinery/pkg/labels" |  | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/util/uuid" | 	"k8s.io/apimachinery/pkg/util/uuid" | ||||||
| 	"k8s.io/apimachinery/pkg/util/validation/field" | 	"k8s.io/apimachinery/pkg/util/validation/field" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/apiserver/pkg/storage" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage/names" | 	"k8s.io/apiserver/pkg/storage/names" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/api/validation" | 	"k8s.io/kubernetes/pkg/api/validation" | ||||||
| @@ -76,30 +71,9 @@ func (limitrangeStrategy) AllowUnconditionalUpdate() bool { | |||||||
| 	return true | 	return true | ||||||
| } | } | ||||||
|  |  | ||||||
| func LimitRangeToSelectableFields(limitRange *api.LimitRange) fields.Set { |  | ||||||
| 	return nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (limitrangeStrategy) Export(genericapirequest.Context, runtime.Object, bool) error { | func (limitrangeStrategy) Export(genericapirequest.Context, runtime.Object, bool) error { | ||||||
| 	// Copied from OpenShift exporter | 	// Copied from OpenShift exporter | ||||||
| 	// TODO: this needs to be fixed | 	// TODO: this needs to be fixed | ||||||
| 	//  limitrange.Strategy.PrepareForCreate(ctx, obj) | 	//  limitrange.Strategy.PrepareForCreate(ctx, obj) | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| // GetAttrs returns labels and fields of a given object for filtering purposes. |  | ||||||
| func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { |  | ||||||
| 	lr, ok := obj.(*api.LimitRange) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil, nil, false, fmt.Errorf("given object is not a limit range.") |  | ||||||
| 	} |  | ||||||
| 	return labels.Set(lr.ObjectMeta.Labels), LimitRangeToSelectableFields(lr), lr.Initializers != nil, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func MatchLimitRange(label labels.Selector, field fields.Selector) storage.SelectionPredicate { |  | ||||||
| 	return storage.SelectionPredicate{ |  | ||||||
| 		Label:    label, |  | ||||||
| 		Field:    field, |  | ||||||
| 		GetAttrs: GetAttrs, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -1,33 +0,0 @@ | |||||||
| /* |  | ||||||
| Copyright 2015 The Kubernetes Authors. |  | ||||||
|  |  | ||||||
| Licensed under the Apache License, Version 2.0 (the "License"); |  | ||||||
| you may not use this file except in compliance with the License. |  | ||||||
| You may obtain a copy of the License at |  | ||||||
|  |  | ||||||
|     http://www.apache.org/licenses/LICENSE-2.0 |  | ||||||
|  |  | ||||||
| Unless required by applicable law or agreed to in writing, software |  | ||||||
| distributed under the License is distributed on an "AS IS" BASIS, |  | ||||||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |  | ||||||
| See the License for the specific language governing permissions and |  | ||||||
| limitations under the License. |  | ||||||
| */ |  | ||||||
|  |  | ||||||
| package limitrange |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	"k8s.io/kubernetes/pkg/api" |  | ||||||
| 	apitesting "k8s.io/kubernetes/pkg/api/testing" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestSelectableFieldLabelConversions(t *testing.T) { |  | ||||||
| 	apitesting.TestSelectableFieldLabelConversionsOfKind(t, |  | ||||||
| 		api.Registry.GroupOrDie(api.GroupName).GroupVersion.String(), |  | ||||||
| 		"LimitRange", |  | ||||||
| 		LimitRangeToSelectableFields(&api.LimitRange{}), |  | ||||||
| 		nil, |  | ||||||
| 	) |  | ||||||
| } |  | ||||||
| @@ -5,7 +5,6 @@ licenses(["notice"]) | |||||||
| load( | load( | ||||||
|     "@io_bazel_rules_go//go:def.bzl", |     "@io_bazel_rules_go//go:def.bzl", | ||||||
|     "go_library", |     "go_library", | ||||||
|     "go_test", |  | ||||||
| ) | ) | ||||||
|  |  | ||||||
| go_library( | go_library( | ||||||
| @@ -18,27 +17,13 @@ go_library( | |||||||
|     deps = [ |     deps = [ | ||||||
|         "//pkg/api:go_default_library", |         "//pkg/api:go_default_library", | ||||||
|         "//pkg/api/validation:go_default_library", |         "//pkg/api/validation:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", | ||||||
|     ], |     ], | ||||||
| ) | ) | ||||||
|  |  | ||||||
| go_test( |  | ||||||
|     name = "go_default_test", |  | ||||||
|     srcs = ["strategy_test.go"], |  | ||||||
|     library = ":go_default_library", |  | ||||||
|     tags = ["automanaged"], |  | ||||||
|     deps = [ |  | ||||||
|         "//pkg/api:go_default_library", |  | ||||||
|         "//pkg/api/testing:go_default_library", |  | ||||||
|     ], |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| filegroup( | filegroup( | ||||||
|     name = "package-srcs", |     name = "package-srcs", | ||||||
|     srcs = glob(["**"]), |     srcs = glob(["**"]), | ||||||
|   | |||||||
| @@ -35,7 +35,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		Copier:                   api.Scheme, | 		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{} }, | ||||||
| 		PredicateFunc:            podtemplate.MatchPodTemplate, |  | ||||||
| 		DefaultQualifiedResource: api.Resource("podtemplates"), | 		DefaultQualifiedResource: api.Resource("podtemplates"), | ||||||
| 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("podtemplates"), | 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("podtemplates"), | ||||||
|  |  | ||||||
| @@ -46,7 +45,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
|  |  | ||||||
| 		ReturnDeletedObject: true, | 		ReturnDeletedObject: true, | ||||||
| 	} | 	} | ||||||
| 	options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: podtemplate.GetAttrs} | 	options := &generic.StoreOptions{RESTOptions: optsGetter} | ||||||
| 	if err := store.CompleteWithOptions(options); err != nil { | 	if err := store.CompleteWithOptions(options); err != nil { | ||||||
| 		panic(err) // TODO: Propagate error up | 		panic(err) // TODO: Propagate error up | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -17,14 +17,9 @@ limitations under the License. | |||||||
| package podtemplate | package podtemplate | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"fmt" |  | ||||||
|  |  | ||||||
| 	"k8s.io/apimachinery/pkg/fields" |  | ||||||
| 	"k8s.io/apimachinery/pkg/labels" |  | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/util/validation/field" | 	"k8s.io/apimachinery/pkg/util/validation/field" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/apiserver/pkg/storage" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage/names" | 	"k8s.io/apiserver/pkg/storage/names" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/api/validation" | 	"k8s.io/kubernetes/pkg/api/validation" | ||||||
| @@ -83,24 +78,3 @@ func (podTemplateStrategy) Export(ctx genericapirequest.Context, obj runtime.Obj | |||||||
| 	// Do nothing | 	// Do nothing | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| func PodTemplateToSelectableFields(podTemplate *api.PodTemplate) fields.Set { |  | ||||||
| 	return nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // GetAttrs returns labels and fields of a given object for filtering purposes. |  | ||||||
| func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { |  | ||||||
| 	pt, ok := obj.(*api.PodTemplate) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil, nil, false, fmt.Errorf("given object is not a pod template.") |  | ||||||
| 	} |  | ||||||
| 	return labels.Set(pt.ObjectMeta.Labels), PodTemplateToSelectableFields(pt), pt.Initializers != nil, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func MatchPodTemplate(label labels.Selector, field fields.Selector) storage.SelectionPredicate { |  | ||||||
| 	return storage.SelectionPredicate{ |  | ||||||
| 		Label:    label, |  | ||||||
| 		Field:    field, |  | ||||||
| 		GetAttrs: GetAttrs, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -1,33 +0,0 @@ | |||||||
| /* |  | ||||||
| Copyright 2015 The Kubernetes Authors. |  | ||||||
|  |  | ||||||
| Licensed under the Apache License, Version 2.0 (the "License"); |  | ||||||
| you may not use this file except in compliance with the License. |  | ||||||
| You may obtain a copy of the License at |  | ||||||
|  |  | ||||||
|     http://www.apache.org/licenses/LICENSE-2.0 |  | ||||||
|  |  | ||||||
| Unless required by applicable law or agreed to in writing, software |  | ||||||
| distributed under the License is distributed on an "AS IS" BASIS, |  | ||||||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |  | ||||||
| See the License for the specific language governing permissions and |  | ||||||
| limitations under the License. |  | ||||||
| */ |  | ||||||
|  |  | ||||||
| package podtemplate |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	"k8s.io/kubernetes/pkg/api" |  | ||||||
| 	apitesting "k8s.io/kubernetes/pkg/api/testing" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestSelectableFieldLabelConversions(t *testing.T) { |  | ||||||
| 	apitesting.TestSelectableFieldLabelConversionsOfKind(t, |  | ||||||
| 		api.Registry.GroupOrDie(api.GroupName).GroupVersion.String(), |  | ||||||
| 		"PodTemplate", |  | ||||||
| 		PodTemplateToSelectableFields(&api.PodTemplate{}), |  | ||||||
| 		nil, |  | ||||||
| 	) |  | ||||||
| } |  | ||||||
| @@ -18,13 +18,9 @@ go_library( | |||||||
|     deps = [ |     deps = [ | ||||||
|         "//pkg/api:go_default_library", |         "//pkg/api:go_default_library", | ||||||
|         "//pkg/api/validation:go_default_library", |         "//pkg/api/validation:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", | ||||||
|     ], |     ], | ||||||
| ) | ) | ||||||
| @@ -36,7 +32,6 @@ go_test( | |||||||
|     tags = ["automanaged"], |     tags = ["automanaged"], | ||||||
|     deps = [ |     deps = [ | ||||||
|         "//pkg/api:go_default_library", |         "//pkg/api:go_default_library", | ||||||
|         "//pkg/api/testing:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|   | |||||||
| @@ -38,7 +38,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { | |||||||
| 		Copier:                   api.Scheme, | 		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{} }, | ||||||
| 		PredicateFunc:            resourcequota.MatchResourceQuota, |  | ||||||
| 		DefaultQualifiedResource: api.Resource("resourcequotas"), | 		DefaultQualifiedResource: api.Resource("resourcequotas"), | ||||||
| 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("resourcequotas"), | 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("resourcequotas"), | ||||||
|  |  | ||||||
| @@ -47,7 +46,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { | |||||||
| 		DeleteStrategy:      resourcequota.Strategy, | 		DeleteStrategy:      resourcequota.Strategy, | ||||||
| 		ReturnDeletedObject: true, | 		ReturnDeletedObject: true, | ||||||
| 	} | 	} | ||||||
| 	options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: resourcequota.GetAttrs} | 	options := &generic.StoreOptions{RESTOptions: optsGetter} | ||||||
| 	if err := store.CompleteWithOptions(options); err != nil { | 	if err := store.CompleteWithOptions(options); err != nil { | ||||||
| 		panic(err) // TODO: Propagate error up | 		panic(err) // TODO: Propagate error up | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -17,15 +17,9 @@ limitations under the License. | |||||||
| package resourcequota | package resourcequota | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"fmt" |  | ||||||
|  |  | ||||||
| 	"k8s.io/apimachinery/pkg/fields" |  | ||||||
| 	"k8s.io/apimachinery/pkg/labels" |  | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/util/validation/field" | 	"k8s.io/apimachinery/pkg/util/validation/field" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/apiserver/pkg/registry/generic" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage/names" | 	"k8s.io/apiserver/pkg/storage/names" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/api/validation" | 	"k8s.io/kubernetes/pkg/api/validation" | ||||||
| @@ -99,26 +93,3 @@ func (resourcequotaStatusStrategy) PrepareForUpdate(ctx genericapirequest.Contex | |||||||
| func (resourcequotaStatusStrategy) ValidateUpdate(ctx genericapirequest.Context, obj, old runtime.Object) field.ErrorList { | func (resourcequotaStatusStrategy) ValidateUpdate(ctx genericapirequest.Context, obj, old runtime.Object) field.ErrorList { | ||||||
| 	return validation.ValidateResourceQuotaStatusUpdate(obj.(*api.ResourceQuota), old.(*api.ResourceQuota)) | 	return validation.ValidateResourceQuotaStatusUpdate(obj.(*api.ResourceQuota), old.(*api.ResourceQuota)) | ||||||
| } | } | ||||||
|  |  | ||||||
| // GetAttrs returns labels and fields of a given object for filtering purposes. |  | ||||||
| func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { |  | ||||||
| 	resourcequotaObj, ok := obj.(*api.ResourceQuota) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil, nil, false, fmt.Errorf("not a resourcequota") |  | ||||||
| 	} |  | ||||||
| 	return labels.Set(resourcequotaObj.Labels), ResourceQuotaToSelectableFields(resourcequotaObj), resourcequotaObj.Initializers != nil, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // MatchResourceQuota returns a generic matcher for a given label and field selector. |  | ||||||
| func MatchResourceQuota(label labels.Selector, field fields.Selector) storage.SelectionPredicate { |  | ||||||
| 	return storage.SelectionPredicate{ |  | ||||||
| 		Label:    label, |  | ||||||
| 		Field:    field, |  | ||||||
| 		GetAttrs: GetAttrs, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // ResourceQuotaToSelectableFields returns a field set that represents the object |  | ||||||
| func ResourceQuotaToSelectableFields(resourcequota *api.ResourceQuota) fields.Set { |  | ||||||
| 	return generic.ObjectMetaFieldsSet(&resourcequota.ObjectMeta, true) |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -23,7 +23,6 @@ import ( | |||||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	apitesting "k8s.io/kubernetes/pkg/api/testing" |  | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestResourceQuotaStrategy(t *testing.T) { | func TestResourceQuotaStrategy(t *testing.T) { | ||||||
| @@ -59,12 +58,3 @@ func TestResourceQuotaStrategy(t *testing.T) { | |||||||
| 		t.Errorf("ResourceQuota does not allow setting status on create") | 		t.Errorf("ResourceQuota does not allow setting status on create") | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func TestSelectableFieldLabelConversions(t *testing.T) { |  | ||||||
| 	apitesting.TestSelectableFieldLabelConversionsOfKind(t, |  | ||||||
| 		api.Registry.GroupOrDie(api.GroupName).GroupVersion.String(), |  | ||||||
| 		"ResourceQuota", |  | ||||||
| 		ResourceQuotaToSelectableFields(&api.ResourceQuota{}), |  | ||||||
| 		nil, |  | ||||||
| 	) |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -32,8 +32,6 @@ go_library( | |||||||
|         "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/proxy:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/proxy:go_default_library", | ||||||
| @@ -41,9 +39,7 @@ go_library( | |||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", | ||||||
|     ], |     ], | ||||||
| @@ -61,7 +57,6 @@ go_test( | |||||||
|         "//pkg/api:go_default_library", |         "//pkg/api:go_default_library", | ||||||
|         "//pkg/api/helper:go_default_library", |         "//pkg/api/helper:go_default_library", | ||||||
|         "//pkg/api/service:go_default_library", |         "//pkg/api/service:go_default_library", | ||||||
|         "//pkg/api/testing:go_default_library", |  | ||||||
|         "//pkg/features:go_default_library", |         "//pkg/features:go_default_library", | ||||||
|         "//pkg/registry/core/service/ipallocator:go_default_library", |         "//pkg/registry/core/service/ipallocator:go_default_library", | ||||||
|         "//pkg/registry/core/service/portallocator:go_default_library", |         "//pkg/registry/core/service/portallocator:go_default_library", | ||||||
|   | |||||||
| @@ -38,7 +38,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { | |||||||
| 		Copier:                   api.Scheme, | 		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{} }, | ||||||
| 		PredicateFunc:            service.MatchServices, |  | ||||||
| 		DefaultQualifiedResource: api.Resource("services"), | 		DefaultQualifiedResource: api.Resource("services"), | ||||||
| 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("services"), | 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("services"), | ||||||
|  |  | ||||||
| @@ -47,7 +46,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { | |||||||
| 		DeleteStrategy: service.Strategy, | 		DeleteStrategy: service.Strategy, | ||||||
| 		ExportStrategy: service.Strategy, | 		ExportStrategy: service.Strategy, | ||||||
| 	} | 	} | ||||||
| 	options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: service.GetAttrs} | 	options := &generic.StoreOptions{RESTOptions: optsGetter} | ||||||
| 	if err := store.CompleteWithOptions(options); err != nil { | 	if err := store.CompleteWithOptions(options); err != nil { | ||||||
| 		panic(err) // TODO: Propagate error up | 		panic(err) // TODO: Propagate error up | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -19,13 +19,9 @@ package service | |||||||
| import ( | import ( | ||||||
| 	"fmt" | 	"fmt" | ||||||
|  |  | ||||||
| 	"k8s.io/apimachinery/pkg/fields" |  | ||||||
| 	"k8s.io/apimachinery/pkg/labels" |  | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/util/validation/field" | 	"k8s.io/apimachinery/pkg/util/validation/field" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/apiserver/pkg/registry/generic" |  | ||||||
| 	apistorage "k8s.io/apiserver/pkg/storage" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage/names" | 	"k8s.io/apiserver/pkg/storage/names" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/api/validation" | 	"k8s.io/kubernetes/pkg/api/validation" | ||||||
| @@ -103,27 +99,6 @@ func (svcStrategy) Export(ctx genericapirequest.Context, obj runtime.Object, exa | |||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| // GetAttrs returns labels and fields of a given object for filtering purposes. |  | ||||||
| func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { |  | ||||||
| 	service, ok := obj.(*api.Service) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil, nil, false, fmt.Errorf("given object is not a service") |  | ||||||
| 	} |  | ||||||
| 	return labels.Set(service.ObjectMeta.Labels), ServiceToSelectableFields(service), service.Initializers != nil, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func MatchServices(label labels.Selector, field fields.Selector) apistorage.SelectionPredicate { |  | ||||||
| 	return apistorage.SelectionPredicate{ |  | ||||||
| 		Label:    label, |  | ||||||
| 		Field:    field, |  | ||||||
| 		GetAttrs: GetAttrs, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func ServiceToSelectableFields(service *api.Service) fields.Set { |  | ||||||
| 	return generic.ObjectMetaFieldsSet(&service.ObjectMeta, true) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type serviceStatusStrategy struct { | type serviceStatusStrategy struct { | ||||||
| 	svcStrategy | 	svcStrategy | ||||||
| } | } | ||||||
|   | |||||||
| @@ -27,7 +27,6 @@ import ( | |||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/apiserver/pkg/registry/rest" | 	"k8s.io/apiserver/pkg/registry/rest" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	apitesting "k8s.io/kubernetes/pkg/api/testing" |  | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestExportService(t *testing.T) { | func TestExportService(t *testing.T) { | ||||||
| @@ -212,15 +211,6 @@ func TestBeforeUpdate(t *testing.T) { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func TestSelectableFieldLabelConversions(t *testing.T) { |  | ||||||
| 	apitesting.TestSelectableFieldLabelConversionsOfKind(t, |  | ||||||
| 		api.Registry.GroupOrDie(api.GroupName).GroupVersion.String(), |  | ||||||
| 		"Service", |  | ||||||
| 		ServiceToSelectableFields(&api.Service{}), |  | ||||||
| 		nil, |  | ||||||
| 	) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestServiceStatusStrategy(t *testing.T) { | func TestServiceStatusStrategy(t *testing.T) { | ||||||
| 	ctx := genericapirequest.NewDefaultContext() | 	ctx := genericapirequest.NewDefaultContext() | ||||||
| 	if !StatusStrategy.NamespaceScoped() { | 	if !StatusStrategy.NamespaceScoped() { | ||||||
|   | |||||||
| @@ -5,7 +5,6 @@ licenses(["notice"]) | |||||||
| load( | load( | ||||||
|     "@io_bazel_rules_go//go:def.bzl", |     "@io_bazel_rules_go//go:def.bzl", | ||||||
|     "go_library", |     "go_library", | ||||||
|     "go_test", |  | ||||||
| ) | ) | ||||||
|  |  | ||||||
| go_library( | go_library( | ||||||
| @@ -21,30 +20,15 @@ go_library( | |||||||
|         "//pkg/api/validation:go_default_library", |         "//pkg/api/validation:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", | ||||||
|     ], |     ], | ||||||
| ) | ) | ||||||
|  |  | ||||||
| go_test( |  | ||||||
|     name = "go_default_test", |  | ||||||
|     srcs = ["strategy_test.go"], |  | ||||||
|     library = ":go_default_library", |  | ||||||
|     tags = ["automanaged"], |  | ||||||
|     deps = [ |  | ||||||
|         "//pkg/api:go_default_library", |  | ||||||
|         "//pkg/api/testing:go_default_library", |  | ||||||
|     ], |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| filegroup( | filegroup( | ||||||
|     name = "package-srcs", |     name = "package-srcs", | ||||||
|     srcs = glob(["**"]), |     srcs = glob(["**"]), | ||||||
|   | |||||||
| @@ -36,7 +36,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		Copier:                   api.Scheme, | 		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{} }, | ||||||
| 		PredicateFunc:            serviceaccount.Matcher, |  | ||||||
| 		DefaultQualifiedResource: api.Resource("serviceaccounts"), | 		DefaultQualifiedResource: api.Resource("serviceaccounts"), | ||||||
| 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("serviceaccounts"), | 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("serviceaccounts"), | ||||||
|  |  | ||||||
| @@ -45,7 +44,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		DeleteStrategy:      serviceaccount.Strategy, | 		DeleteStrategy:      serviceaccount.Strategy, | ||||||
| 		ReturnDeletedObject: true, | 		ReturnDeletedObject: true, | ||||||
| 	} | 	} | ||||||
| 	options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: serviceaccount.GetAttrs} | 	options := &generic.StoreOptions{RESTOptions: optsGetter} | ||||||
| 	if err := store.CompleteWithOptions(options); err != nil { | 	if err := store.CompleteWithOptions(options); err != nil { | ||||||
| 		panic(err) // TODO: Propagate error up | 		panic(err) // TODO: Propagate error up | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -17,15 +17,9 @@ limitations under the License. | |||||||
| package serviceaccount | package serviceaccount | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"fmt" |  | ||||||
|  |  | ||||||
| 	"k8s.io/apimachinery/pkg/fields" |  | ||||||
| 	"k8s.io/apimachinery/pkg/labels" |  | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/util/validation/field" | 	"k8s.io/apimachinery/pkg/util/validation/field" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/apiserver/pkg/registry/generic" |  | ||||||
| 	apistorage "k8s.io/apiserver/pkg/storage" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage/names" | 	"k8s.io/apiserver/pkg/storage/names" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/api/validation" | 	"k8s.io/kubernetes/pkg/api/validation" | ||||||
| @@ -78,26 +72,3 @@ func (strategy) ValidateUpdate(ctx genericapirequest.Context, obj, old runtime.O | |||||||
| func (strategy) AllowUnconditionalUpdate() bool { | func (strategy) AllowUnconditionalUpdate() bool { | ||||||
| 	return true | 	return true | ||||||
| } | } | ||||||
|  |  | ||||||
| // GetAttrs returns labels and fields of a given object for filtering purposes. |  | ||||||
| func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { |  | ||||||
| 	sa, ok := obj.(*api.ServiceAccount) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil, nil, false, fmt.Errorf("not a serviceaccount") |  | ||||||
| 	} |  | ||||||
| 	return labels.Set(sa.Labels), SelectableFields(sa), sa.Initializers != nil, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // Matcher returns a generic matcher for a given label and field selector. |  | ||||||
| func Matcher(label labels.Selector, field fields.Selector) apistorage.SelectionPredicate { |  | ||||||
| 	return apistorage.SelectionPredicate{ |  | ||||||
| 		Label:    label, |  | ||||||
| 		Field:    field, |  | ||||||
| 		GetAttrs: GetAttrs, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // SelectableFields returns a field set that represents the object |  | ||||||
| func SelectableFields(obj *api.ServiceAccount) fields.Set { |  | ||||||
| 	return generic.ObjectMetaFieldsSet(&obj.ObjectMeta, true) |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -1,33 +0,0 @@ | |||||||
| /* |  | ||||||
| Copyright 2015 The Kubernetes Authors. |  | ||||||
|  |  | ||||||
| Licensed under the Apache License, Version 2.0 (the "License"); |  | ||||||
| you may not use this file except in compliance with the License. |  | ||||||
| You may obtain a copy of the License at |  | ||||||
|  |  | ||||||
|     http://www.apache.org/licenses/LICENSE-2.0 |  | ||||||
|  |  | ||||||
| Unless required by applicable law or agreed to in writing, software |  | ||||||
| distributed under the License is distributed on an "AS IS" BASIS, |  | ||||||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |  | ||||||
| See the License for the specific language governing permissions and |  | ||||||
| limitations under the License. |  | ||||||
| */ |  | ||||||
|  |  | ||||||
| package serviceaccount |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	"k8s.io/kubernetes/pkg/api" |  | ||||||
| 	apitesting "k8s.io/kubernetes/pkg/api/testing" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestSelectableFieldLabelConversions(t *testing.T) { |  | ||||||
| 	apitesting.TestSelectableFieldLabelConversionsOfKind(t, |  | ||||||
| 		api.Registry.GroupOrDie(api.GroupName).GroupVersion.String(), |  | ||||||
| 		"ServiceAccount", |  | ||||||
| 		SelectableFields(&api.ServiceAccount{}), |  | ||||||
| 		nil, |  | ||||||
| 	) |  | ||||||
| } |  | ||||||
| @@ -20,14 +20,10 @@ go_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", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", | ||||||
|     ], |     ], | ||||||
| ) | ) | ||||||
| @@ -39,9 +35,6 @@ go_test( | |||||||
|     tags = ["automanaged"], |     tags = ["automanaged"], | ||||||
|     deps = [ |     deps = [ | ||||||
|         "//pkg/api:go_default_library", |         "//pkg/api:go_default_library", | ||||||
|         "//pkg/api/testapi:go_default_library", |  | ||||||
|         "//pkg/api/testing:go_default_library", |  | ||||||
|         "//pkg/apis/extensions:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", | ||||||
|     ], |     ], | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -40,7 +40,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { | |||||||
| 		Copier:                   api.Scheme, | 		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{} }, | ||||||
| 		PredicateFunc:            daemonset.MatchDaemonSet, |  | ||||||
| 		DefaultQualifiedResource: extensions.Resource("daemonsets"), | 		DefaultQualifiedResource: extensions.Resource("daemonsets"), | ||||||
| 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("daemonsets"), | 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("daemonsets"), | ||||||
|  |  | ||||||
| @@ -48,7 +47,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { | |||||||
| 		UpdateStrategy: daemonset.Strategy, | 		UpdateStrategy: daemonset.Strategy, | ||||||
| 		DeleteStrategy: daemonset.Strategy, | 		DeleteStrategy: daemonset.Strategy, | ||||||
| 	} | 	} | ||||||
| 	options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: daemonset.GetAttrs} | 	options := &generic.StoreOptions{RESTOptions: optsGetter} | ||||||
| 	if err := store.CompleteWithOptions(options); err != nil { | 	if err := store.CompleteWithOptions(options); err != nil { | ||||||
| 		panic(err) // TODO: Propagate error up | 		panic(err) // TODO: Propagate error up | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -17,17 +17,11 @@ limitations under the License. | |||||||
| package daemonset | package daemonset | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"fmt" |  | ||||||
|  |  | ||||||
| 	apiequality "k8s.io/apimachinery/pkg/api/equality" | 	apiequality "k8s.io/apimachinery/pkg/api/equality" | ||||||
| 	"k8s.io/apimachinery/pkg/fields" |  | ||||||
| 	"k8s.io/apimachinery/pkg/labels" |  | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/util/validation/field" | 	"k8s.io/apimachinery/pkg/util/validation/field" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/apiserver/pkg/registry/generic" |  | ||||||
| 	"k8s.io/apiserver/pkg/registry/rest" | 	"k8s.io/apiserver/pkg/registry/rest" | ||||||
| 	"k8s.io/apiserver/pkg/storage" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage/names" | 	"k8s.io/apiserver/pkg/storage/names" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/apis/extensions" | 	"k8s.io/kubernetes/pkg/apis/extensions" | ||||||
| @@ -125,31 +119,6 @@ func (daemonSetStrategy) AllowUnconditionalUpdate() bool { | |||||||
| 	return true | 	return true | ||||||
| } | } | ||||||
|  |  | ||||||
| // DaemonSetToSelectableFields returns a field set that represents the object. |  | ||||||
| func DaemonSetToSelectableFields(daemon *extensions.DaemonSet) fields.Set { |  | ||||||
| 	return generic.ObjectMetaFieldsSet(&daemon.ObjectMeta, true) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // GetAttrs returns labels and fields of a given object for filtering purposes. |  | ||||||
| func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { |  | ||||||
| 	ds, ok := obj.(*extensions.DaemonSet) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil, nil, false, fmt.Errorf("given object is not a ds.") |  | ||||||
| 	} |  | ||||||
| 	return labels.Set(ds.ObjectMeta.Labels), DaemonSetToSelectableFields(ds), ds.Initializers != nil, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // MatchSetDaemon is the filter used by the generic etcd backend to route |  | ||||||
| // watch events from etcd to clients of the apiserver only interested in specific |  | ||||||
| // labels/fields. |  | ||||||
| func MatchDaemonSet(label labels.Selector, field fields.Selector) storage.SelectionPredicate { |  | ||||||
| 	return storage.SelectionPredicate{ |  | ||||||
| 		Label:    label, |  | ||||||
| 		Field:    field, |  | ||||||
| 		GetAttrs: GetAttrs, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type daemonSetStatusStrategy struct { | type daemonSetStatusStrategy struct { | ||||||
| 	daemonSetStrategy | 	daemonSetStrategy | ||||||
| } | } | ||||||
|   | |||||||
| @@ -21,20 +21,8 @@ import ( | |||||||
|  |  | ||||||
| 	"k8s.io/apiserver/pkg/registry/rest" | 	"k8s.io/apiserver/pkg/registry/rest" | ||||||
| 	_ "k8s.io/kubernetes/pkg/api" | 	_ "k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/api/testapi" |  | ||||||
| 	apitesting "k8s.io/kubernetes/pkg/api/testing" |  | ||||||
| 	"k8s.io/kubernetes/pkg/apis/extensions" |  | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestSelectableFieldLabelConversions(t *testing.T) { |  | ||||||
| 	apitesting.TestSelectableFieldLabelConversionsOfKind(t, |  | ||||||
| 		testapi.Extensions.GroupVersion().String(), |  | ||||||
| 		"DaemonSet", |  | ||||||
| 		DaemonSetToSelectableFields(&extensions.DaemonSet{}), |  | ||||||
| 		nil, |  | ||||||
| 	) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestDefaultGarbageCollectionPolicy(t *testing.T) { | func TestDefaultGarbageCollectionPolicy(t *testing.T) { | ||||||
| 	// Make sure we correctly implement the interface. | 	// Make sure we correctly implement the interface. | ||||||
| 	// Otherwise a typo could silently change the default. | 	// Otherwise a typo could silently change the default. | ||||||
|   | |||||||
| @@ -23,14 +23,10 @@ go_library( | |||||||
|         "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", | ||||||
|     ], |     ], | ||||||
| ) | ) | ||||||
| @@ -42,8 +38,6 @@ go_test( | |||||||
|     tags = ["automanaged"], |     tags = ["automanaged"], | ||||||
|     deps = [ |     deps = [ | ||||||
|         "//pkg/api:go_default_library", |         "//pkg/api:go_default_library", | ||||||
|         "//pkg/api/testapi:go_default_library", |  | ||||||
|         "//pkg/api/testing:go_default_library", |  | ||||||
|         "//pkg/apis/extensions:go_default_library", |         "//pkg/apis/extensions:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|   | |||||||
| @@ -66,7 +66,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST, *Rollbac | |||||||
| 		Copier:                   api.Scheme, | 		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{} }, | ||||||
| 		PredicateFunc:            deployment.MatchDeployment, |  | ||||||
| 		DefaultQualifiedResource: extensions.Resource("deployments"), | 		DefaultQualifiedResource: extensions.Resource("deployments"), | ||||||
| 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("deployments"), | 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("deployments"), | ||||||
|  |  | ||||||
| @@ -74,7 +73,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST, *Rollbac | |||||||
| 		UpdateStrategy: deployment.Strategy, | 		UpdateStrategy: deployment.Strategy, | ||||||
| 		DeleteStrategy: deployment.Strategy, | 		DeleteStrategy: deployment.Strategy, | ||||||
| 	} | 	} | ||||||
| 	options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: deployment.GetAttrs} | 	options := &generic.StoreOptions{RESTOptions: optsGetter} | ||||||
| 	if err := store.CompleteWithOptions(options); err != nil { | 	if err := store.CompleteWithOptions(options); err != nil { | ||||||
| 		panic(err) // TODO: Propagate error up | 		panic(err) // TODO: Propagate error up | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -17,17 +17,11 @@ limitations under the License. | |||||||
| package deployment | package deployment | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"fmt" |  | ||||||
|  |  | ||||||
| 	apiequality "k8s.io/apimachinery/pkg/api/equality" | 	apiequality "k8s.io/apimachinery/pkg/api/equality" | ||||||
| 	"k8s.io/apimachinery/pkg/fields" |  | ||||||
| 	"k8s.io/apimachinery/pkg/labels" |  | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/util/validation/field" | 	"k8s.io/apimachinery/pkg/util/validation/field" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/apiserver/pkg/registry/generic" |  | ||||||
| 	"k8s.io/apiserver/pkg/registry/rest" | 	"k8s.io/apiserver/pkg/registry/rest" | ||||||
| 	apistorage "k8s.io/apiserver/pkg/storage" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage/names" | 	"k8s.io/apiserver/pkg/storage/names" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/apis/extensions" | 	"k8s.io/kubernetes/pkg/apis/extensions" | ||||||
| @@ -119,28 +113,3 @@ func (deploymentStatusStrategy) PrepareForUpdate(ctx genericapirequest.Context, | |||||||
| func (deploymentStatusStrategy) ValidateUpdate(ctx genericapirequest.Context, obj, old runtime.Object) field.ErrorList { | func (deploymentStatusStrategy) ValidateUpdate(ctx genericapirequest.Context, obj, old runtime.Object) field.ErrorList { | ||||||
| 	return validation.ValidateDeploymentStatusUpdate(obj.(*extensions.Deployment), old.(*extensions.Deployment)) | 	return validation.ValidateDeploymentStatusUpdate(obj.(*extensions.Deployment), old.(*extensions.Deployment)) | ||||||
| } | } | ||||||
|  |  | ||||||
| // DeploymentToSelectableFields returns a field set that represents the object. |  | ||||||
| func DeploymentToSelectableFields(deployment *extensions.Deployment) fields.Set { |  | ||||||
| 	return generic.ObjectMetaFieldsSet(&deployment.ObjectMeta, true) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // GetAttrs returns labels and fields of a given object for filtering purposes. |  | ||||||
| func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { |  | ||||||
| 	deployment, ok := obj.(*extensions.Deployment) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil, nil, false, fmt.Errorf("given object is not a deployment.") |  | ||||||
| 	} |  | ||||||
| 	return labels.Set(deployment.ObjectMeta.Labels), DeploymentToSelectableFields(deployment), deployment.Initializers != nil, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // MatchDeployment is the filter used by the generic etcd backend to route |  | ||||||
| // watch events from etcd to clients of the apiserver only interested in specific |  | ||||||
| // labels/fields. |  | ||||||
| func MatchDeployment(label labels.Selector, field fields.Selector) apistorage.SelectionPredicate { |  | ||||||
| 	return apistorage.SelectionPredicate{ |  | ||||||
| 		Label:    label, |  | ||||||
| 		Field:    field, |  | ||||||
| 		GetAttrs: GetAttrs, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -24,20 +24,9 @@ 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/api" | ||||||
| 	"k8s.io/kubernetes/pkg/api/testapi" |  | ||||||
| 	apitesting "k8s.io/kubernetes/pkg/api/testing" |  | ||||||
| 	"k8s.io/kubernetes/pkg/apis/extensions" | 	"k8s.io/kubernetes/pkg/apis/extensions" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestSelectableFieldLabelConversions(t *testing.T) { |  | ||||||
| 	apitesting.TestSelectableFieldLabelConversionsOfKind(t, |  | ||||||
| 		testapi.Extensions.GroupVersion().String(), |  | ||||||
| 		"Deployment", |  | ||||||
| 		DeploymentToSelectableFields(&extensions.Deployment{}), |  | ||||||
| 		nil, |  | ||||||
| 	) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestStatusUpdates(t *testing.T) { | func TestStatusUpdates(t *testing.T) { | ||||||
| 	tests := []struct { | 	tests := []struct { | ||||||
| 		old      runtime.Object | 		old      runtime.Object | ||||||
|   | |||||||
| @@ -20,13 +20,9 @@ go_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", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", | ||||||
|     ], |     ], | ||||||
| ) | ) | ||||||
| @@ -38,8 +34,6 @@ go_test( | |||||||
|     tags = ["automanaged"], |     tags = ["automanaged"], | ||||||
|     deps = [ |     deps = [ | ||||||
|         "//pkg/api:go_default_library", |         "//pkg/api:go_default_library", | ||||||
|         "//pkg/api/testapi:go_default_library", |  | ||||||
|         "//pkg/api/testing:go_default_library", |  | ||||||
|         "//pkg/apis/extensions:go_default_library", |         "//pkg/apis/extensions:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", | ||||||
|   | |||||||
| @@ -40,7 +40,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { | |||||||
| 		Copier:                   api.Scheme, | 		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{} }, | ||||||
| 		PredicateFunc:            ingress.MatchIngress, |  | ||||||
| 		DefaultQualifiedResource: extensions.Resource("ingresses"), | 		DefaultQualifiedResource: extensions.Resource("ingresses"), | ||||||
| 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("ingresses"), | 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("ingresses"), | ||||||
|  |  | ||||||
| @@ -48,7 +47,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { | |||||||
| 		UpdateStrategy: ingress.Strategy, | 		UpdateStrategy: ingress.Strategy, | ||||||
| 		DeleteStrategy: ingress.Strategy, | 		DeleteStrategy: ingress.Strategy, | ||||||
| 	} | 	} | ||||||
| 	options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: ingress.GetAttrs} | 	options := &generic.StoreOptions{RESTOptions: optsGetter} | ||||||
| 	if err := store.CompleteWithOptions(options); err != nil { | 	if err := store.CompleteWithOptions(options); err != nil { | ||||||
| 		panic(err) // TODO: Propagate error up | 		panic(err) // TODO: Propagate error up | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -17,16 +17,10 @@ limitations under the License. | |||||||
| package ingress | package ingress | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"fmt" |  | ||||||
|  |  | ||||||
| 	apiequality "k8s.io/apimachinery/pkg/api/equality" | 	apiequality "k8s.io/apimachinery/pkg/api/equality" | ||||||
| 	"k8s.io/apimachinery/pkg/fields" |  | ||||||
| 	"k8s.io/apimachinery/pkg/labels" |  | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/util/validation/field" | 	"k8s.io/apimachinery/pkg/util/validation/field" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/apiserver/pkg/registry/generic" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage/names" | 	"k8s.io/apiserver/pkg/storage/names" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/apis/extensions" | 	"k8s.io/kubernetes/pkg/apis/extensions" | ||||||
| @@ -100,31 +94,6 @@ func (ingressStrategy) AllowUnconditionalUpdate() bool { | |||||||
| 	return true | 	return true | ||||||
| } | } | ||||||
|  |  | ||||||
| // IngressToSelectableFields returns a field set that represents the object. |  | ||||||
| func IngressToSelectableFields(ingress *extensions.Ingress) fields.Set { |  | ||||||
| 	return generic.ObjectMetaFieldsSet(&ingress.ObjectMeta, true) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // GetAttrs returns labels and fields of a given object for filtering purposes. |  | ||||||
| func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { |  | ||||||
| 	ingress, ok := obj.(*extensions.Ingress) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil, nil, false, fmt.Errorf("given object is not an Ingress.") |  | ||||||
| 	} |  | ||||||
| 	return labels.Set(ingress.ObjectMeta.Labels), IngressToSelectableFields(ingress), ingress.Initializers != nil, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // MatchIngress is the filter used by the generic etcd backend to ingress |  | ||||||
| // watch events from etcd to clients of the apiserver only interested in specific |  | ||||||
| // labels/fields. |  | ||||||
| func MatchIngress(label labels.Selector, field fields.Selector) storage.SelectionPredicate { |  | ||||||
| 	return storage.SelectionPredicate{ |  | ||||||
| 		Label:    label, |  | ||||||
| 		Field:    field, |  | ||||||
| 		GetAttrs: GetAttrs, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type ingressStatusStrategy struct { | type ingressStatusStrategy struct { | ||||||
| 	ingressStrategy | 	ingressStrategy | ||||||
| } | } | ||||||
|   | |||||||
| @@ -23,8 +23,6 @@ import ( | |||||||
| 	"k8s.io/apimachinery/pkg/util/intstr" | 	"k8s.io/apimachinery/pkg/util/intstr" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/api/testapi" |  | ||||||
| 	apitesting "k8s.io/kubernetes/pkg/api/testing" |  | ||||||
| 	"k8s.io/kubernetes/pkg/apis/extensions" | 	"k8s.io/kubernetes/pkg/apis/extensions" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| @@ -132,12 +130,3 @@ func TestIngressStatusStrategy(t *testing.T) { | |||||||
| 		t.Errorf("Unexpected error %v", errs) | 		t.Errorf("Unexpected error %v", errs) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func TestSelectableFieldLabelConversions(t *testing.T) { |  | ||||||
| 	apitesting.TestSelectableFieldLabelConversionsOfKind(t, |  | ||||||
| 		testapi.Extensions.GroupVersion().String(), |  | ||||||
| 		"Ingress", |  | ||||||
| 		IngressToSelectableFields(&extensions.Ingress{}), |  | ||||||
| 		nil, |  | ||||||
| 	) |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -20,13 +20,9 @@ go_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", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", | ||||||
|     ], |     ], | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -37,7 +37,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		Copier:                   api.Scheme, | 		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{} }, | ||||||
| 		PredicateFunc:            networkpolicy.MatchNetworkPolicy, |  | ||||||
| 		DefaultQualifiedResource: extensionsapi.Resource("networkpolicies"), | 		DefaultQualifiedResource: extensionsapi.Resource("networkpolicies"), | ||||||
| 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("networkpolicies"), | 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("networkpolicies"), | ||||||
|  |  | ||||||
| @@ -45,7 +44,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		UpdateStrategy: networkpolicy.Strategy, | 		UpdateStrategy: networkpolicy.Strategy, | ||||||
| 		DeleteStrategy: networkpolicy.Strategy, | 		DeleteStrategy: networkpolicy.Strategy, | ||||||
| 	} | 	} | ||||||
| 	options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: networkpolicy.GetAttrs} | 	options := &generic.StoreOptions{RESTOptions: optsGetter} | ||||||
| 	if err := store.CompleteWithOptions(options); err != nil { | 	if err := store.CompleteWithOptions(options); err != nil { | ||||||
| 		panic(err) // TODO: Propagate error up | 		panic(err) // TODO: Propagate error up | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -17,16 +17,10 @@ limitations under the License. | |||||||
| package networkpolicy | package networkpolicy | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"fmt" |  | ||||||
|  |  | ||||||
| 	apiequality "k8s.io/apimachinery/pkg/api/equality" | 	apiequality "k8s.io/apimachinery/pkg/api/equality" | ||||||
| 	"k8s.io/apimachinery/pkg/fields" |  | ||||||
| 	"k8s.io/apimachinery/pkg/labels" |  | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/util/validation/field" | 	"k8s.io/apimachinery/pkg/util/validation/field" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/apiserver/pkg/registry/generic" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage/names" | 	"k8s.io/apiserver/pkg/storage/names" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/apis/extensions" | 	"k8s.io/kubernetes/pkg/apis/extensions" | ||||||
| @@ -92,27 +86,3 @@ func (networkPolicyStrategy) ValidateUpdate(ctx genericapirequest.Context, obj, | |||||||
| func (networkPolicyStrategy) AllowUnconditionalUpdate() bool { | func (networkPolicyStrategy) AllowUnconditionalUpdate() bool { | ||||||
| 	return true | 	return true | ||||||
| } | } | ||||||
|  |  | ||||||
| // NetworkPolicyToSelectableFields returns a field set that represents the object. |  | ||||||
| func NetworkPolicyToSelectableFields(networkPolicy *extensions.NetworkPolicy) fields.Set { |  | ||||||
| 	return generic.ObjectMetaFieldsSet(&networkPolicy.ObjectMeta, true) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // GetAttrs returns labels and fields of a given object for filtering purposes. |  | ||||||
| func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { |  | ||||||
| 	networkPolicy, ok := obj.(*extensions.NetworkPolicy) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil, nil, false, fmt.Errorf("given object is not a NetworkPolicy.") |  | ||||||
| 	} |  | ||||||
| 	return labels.Set(networkPolicy.ObjectMeta.Labels), NetworkPolicyToSelectableFields(networkPolicy), networkPolicy.Initializers != nil, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // MatchNetworkPolicy is the filter used by the generic etcd backend to watch events |  | ||||||
| // from etcd to clients of the apiserver only interested in specific labels/fields. |  | ||||||
| func MatchNetworkPolicy(label labels.Selector, field fields.Selector) storage.SelectionPredicate { |  | ||||||
| 	return storage.SelectionPredicate{ |  | ||||||
| 		Label:    label, |  | ||||||
| 		Field:    field, |  | ||||||
| 		GetAttrs: GetAttrs, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -18,14 +18,10 @@ go_library( | |||||||
|         "//pkg/api:go_default_library", |         "//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", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", | ||||||
|     ], |     ], | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -37,7 +37,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		Copier:                   api.Scheme, | 		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{} }, | ||||||
| 		PredicateFunc:            podsecuritypolicy.MatchPodSecurityPolicy, |  | ||||||
| 		DefaultQualifiedResource: extensions.Resource("podsecuritypolicies"), | 		DefaultQualifiedResource: extensions.Resource("podsecuritypolicies"), | ||||||
| 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("podsecuritypolicies"), | 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("podsecuritypolicies"), | ||||||
|  |  | ||||||
| @@ -46,7 +45,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		DeleteStrategy:      podsecuritypolicy.Strategy, | 		DeleteStrategy:      podsecuritypolicy.Strategy, | ||||||
| 		ReturnDeletedObject: true, | 		ReturnDeletedObject: true, | ||||||
| 	} | 	} | ||||||
| 	options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: podsecuritypolicy.GetAttrs} | 	options := &generic.StoreOptions{RESTOptions: optsGetter} | ||||||
| 	if err := store.CompleteWithOptions(options); err != nil { | 	if err := store.CompleteWithOptions(options); err != nil { | ||||||
| 		panic(err) // TODO: Propagate error up | 		panic(err) // TODO: Propagate error up | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -17,16 +17,10 @@ limitations under the License. | |||||||
| package podsecuritypolicy | package podsecuritypolicy | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"fmt" |  | ||||||
|  |  | ||||||
| 	"k8s.io/apimachinery/pkg/fields" |  | ||||||
| 	"k8s.io/apimachinery/pkg/labels" |  | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/util/validation/field" | 	"k8s.io/apimachinery/pkg/util/validation/field" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/apiserver/pkg/registry/generic" |  | ||||||
| 	"k8s.io/apiserver/pkg/registry/rest" | 	"k8s.io/apiserver/pkg/registry/rest" | ||||||
| 	"k8s.io/apiserver/pkg/storage" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage/names" | 	"k8s.io/apiserver/pkg/storage/names" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/apis/extensions" | 	"k8s.io/kubernetes/pkg/apis/extensions" | ||||||
| @@ -75,26 +69,3 @@ func (strategy) Validate(ctx genericapirequest.Context, obj runtime.Object) fiel | |||||||
| func (strategy) ValidateUpdate(ctx genericapirequest.Context, obj, old runtime.Object) field.ErrorList { | func (strategy) ValidateUpdate(ctx genericapirequest.Context, obj, old runtime.Object) field.ErrorList { | ||||||
| 	return validation.ValidatePodSecurityPolicyUpdate(old.(*extensions.PodSecurityPolicy), obj.(*extensions.PodSecurityPolicy)) | 	return validation.ValidatePodSecurityPolicyUpdate(old.(*extensions.PodSecurityPolicy), obj.(*extensions.PodSecurityPolicy)) | ||||||
| } | } | ||||||
|  |  | ||||||
| // GetAttrs returns labels and fields of a given object for filtering purposes. |  | ||||||
| func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { |  | ||||||
| 	psp, ok := obj.(*extensions.PodSecurityPolicy) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil, nil, false, fmt.Errorf("given object is not a pod security policy.") |  | ||||||
| 	} |  | ||||||
| 	return labels.Set(psp.ObjectMeta.Labels), PodSecurityPolicyToSelectableFields(psp), psp.Initializers != nil, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // Matcher returns a generic matcher for a given label and field selector. |  | ||||||
| func MatchPodSecurityPolicy(label labels.Selector, field fields.Selector) storage.SelectionPredicate { |  | ||||||
| 	return storage.SelectionPredicate{ |  | ||||||
| 		Label:    label, |  | ||||||
| 		Field:    field, |  | ||||||
| 		GetAttrs: GetAttrs, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // PodSecurityPolicyToSelectableFields returns a label set that represents the object |  | ||||||
| func PodSecurityPolicyToSelectableFields(obj *extensions.PodSecurityPolicy) fields.Set { |  | ||||||
| 	return generic.ObjectMetaFieldsSet(&obj.ObjectMeta, false) |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -21,15 +21,11 @@ go_library( | |||||||
|         "//pkg/apis/networking/validation:go_default_library", |         "//pkg/apis/networking/validation:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", | ||||||
|     ], |     ], | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -38,7 +38,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		Copier:                   api.Scheme, | 		Copier:                   api.Scheme, | ||||||
| 		NewFunc:                  func() runtime.Object { return &networkingapi.NetworkPolicy{} }, | 		NewFunc:                  func() runtime.Object { return &networkingapi.NetworkPolicy{} }, | ||||||
| 		NewListFunc:              func() runtime.Object { return &networkingapi.NetworkPolicyList{} }, | 		NewListFunc:              func() runtime.Object { return &networkingapi.NetworkPolicyList{} }, | ||||||
| 		PredicateFunc:            networkpolicy.Matcher, |  | ||||||
| 		DefaultQualifiedResource: networkingapi.Resource("networkpolicies"), | 		DefaultQualifiedResource: networkingapi.Resource("networkpolicies"), | ||||||
| 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("networkpolicies"), | 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("networkpolicies"), | ||||||
|  |  | ||||||
| @@ -46,7 +45,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		UpdateStrategy: networkpolicy.Strategy, | 		UpdateStrategy: networkpolicy.Strategy, | ||||||
| 		DeleteStrategy: networkpolicy.Strategy, | 		DeleteStrategy: networkpolicy.Strategy, | ||||||
| 	} | 	} | ||||||
| 	options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: networkpolicy.GetAttrs} | 	options := &generic.StoreOptions{RESTOptions: optsGetter} | ||||||
| 	if err := store.CompleteWithOptions(options); err != nil { | 	if err := store.CompleteWithOptions(options); err != nil { | ||||||
| 		panic(err) // TODO: Propagate error up | 		panic(err) // TODO: Propagate error up | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -17,16 +17,11 @@ limitations under the License. | |||||||
| package networkpolicy | package networkpolicy | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"fmt" |  | ||||||
| 	"reflect" | 	"reflect" | ||||||
|  |  | ||||||
| 	"k8s.io/apimachinery/pkg/fields" |  | ||||||
| 	"k8s.io/apimachinery/pkg/labels" |  | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/util/validation/field" | 	"k8s.io/apimachinery/pkg/util/validation/field" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/apiserver/pkg/registry/generic" |  | ||||||
| 	apistorage "k8s.io/apiserver/pkg/storage" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage/names" | 	"k8s.io/apiserver/pkg/storage/names" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/apis/networking" | 	"k8s.io/kubernetes/pkg/apis/networking" | ||||||
| @@ -91,27 +86,3 @@ func (networkPolicyStrategy) ValidateUpdate(ctx genericapirequest.Context, obj, | |||||||
| func (networkPolicyStrategy) AllowUnconditionalUpdate() bool { | func (networkPolicyStrategy) AllowUnconditionalUpdate() bool { | ||||||
| 	return true | 	return true | ||||||
| } | } | ||||||
|  |  | ||||||
| // SelectableFields returns a field set that represents the object. |  | ||||||
| func SelectableFields(networkPolicy *networking.NetworkPolicy) fields.Set { |  | ||||||
| 	return generic.ObjectMetaFieldsSet(&networkPolicy.ObjectMeta, true) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // GetAttrs returns labels and fields of a given object for filtering purposes. |  | ||||||
| func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { |  | ||||||
| 	networkPolicy, ok := obj.(*networking.NetworkPolicy) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil, nil, false, fmt.Errorf("given object is not a NetworkPolicy.") |  | ||||||
| 	} |  | ||||||
| 	return labels.Set(networkPolicy.ObjectMeta.Labels), SelectableFields(networkPolicy), networkPolicy.Initializers != nil, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // Matcher is the filter used by the generic etcd backend to watch events |  | ||||||
| // from etcd to clients of the apiserver only interested in specific labels/fields. |  | ||||||
| func Matcher(label labels.Selector, field fields.Selector) apistorage.SelectionPredicate { |  | ||||||
| 	return apistorage.SelectionPredicate{ |  | ||||||
| 		Label:    label, |  | ||||||
| 		Field:    field, |  | ||||||
| 		GetAttrs: GetAttrs, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -20,13 +20,9 @@ go_library( | |||||||
|         "//pkg/apis/policy:go_default_library", |         "//pkg/apis/policy:go_default_library", | ||||||
|         "//pkg/apis/policy/validation:go_default_library", |         "//pkg/apis/policy/validation:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", | ||||||
|     ], |     ], | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -40,7 +40,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { | |||||||
| 		Copier:                   api.Scheme, | 		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{} }, | ||||||
| 		PredicateFunc:            poddisruptionbudget.MatchPodDisruptionBudget, |  | ||||||
| 		DefaultQualifiedResource: policyapi.Resource("poddisruptionbudgets"), | 		DefaultQualifiedResource: policyapi.Resource("poddisruptionbudgets"), | ||||||
| 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("poddisruptionbudgets"), | 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("poddisruptionbudgets"), | ||||||
|  |  | ||||||
| @@ -48,7 +47,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { | |||||||
| 		UpdateStrategy: poddisruptionbudget.Strategy, | 		UpdateStrategy: poddisruptionbudget.Strategy, | ||||||
| 		DeleteStrategy: poddisruptionbudget.Strategy, | 		DeleteStrategy: poddisruptionbudget.Strategy, | ||||||
| 	} | 	} | ||||||
| 	options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: poddisruptionbudget.GetAttrs} | 	options := &generic.StoreOptions{RESTOptions: optsGetter} | ||||||
| 	if err := store.CompleteWithOptions(options); err != nil { | 	if err := store.CompleteWithOptions(options); err != nil { | ||||||
| 		panic(err) // TODO: Propagate error up | 		panic(err) // TODO: Propagate error up | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -17,16 +17,10 @@ limitations under the License. | |||||||
| package poddisruptionbudget | package poddisruptionbudget | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"fmt" |  | ||||||
|  |  | ||||||
| 	apiequality "k8s.io/apimachinery/pkg/api/equality" | 	apiequality "k8s.io/apimachinery/pkg/api/equality" | ||||||
| 	"k8s.io/apimachinery/pkg/fields" |  | ||||||
| 	"k8s.io/apimachinery/pkg/labels" |  | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/util/validation/field" | 	"k8s.io/apimachinery/pkg/util/validation/field" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/apiserver/pkg/registry/generic" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage/names" | 	"k8s.io/apiserver/pkg/storage/names" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/apis/policy" | 	"k8s.io/kubernetes/pkg/apis/policy" | ||||||
| @@ -99,30 +93,6 @@ func (podDisruptionBudgetStrategy) AllowUnconditionalUpdate() bool { | |||||||
| 	return false | 	return false | ||||||
| } | } | ||||||
|  |  | ||||||
| // PodDisruptionBudgetToSelectableFields returns a field set that represents the object. |  | ||||||
| func PodDisruptionBudgetToSelectableFields(podDisruptionBudget *policy.PodDisruptionBudget) fields.Set { |  | ||||||
| 	return generic.ObjectMetaFieldsSet(&podDisruptionBudget.ObjectMeta, true) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // GetAttrs returns labels and fields of a given object for filtering purposes. |  | ||||||
| func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { |  | ||||||
| 	podDisruptionBudget, ok := obj.(*policy.PodDisruptionBudget) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil, nil, false, fmt.Errorf("given object is not a PodDisruptionBudget.") |  | ||||||
| 	} |  | ||||||
| 	return labels.Set(podDisruptionBudget.ObjectMeta.Labels), PodDisruptionBudgetToSelectableFields(podDisruptionBudget), podDisruptionBudget.Initializers != nil, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // MatchPodDisruptionBudget is the filter used by the generic etcd backend to watch events |  | ||||||
| // from etcd to clients of the apiserver only interested in specific labels/fields. |  | ||||||
| func MatchPodDisruptionBudget(label labels.Selector, field fields.Selector) storage.SelectionPredicate { |  | ||||||
| 	return storage.SelectionPredicate{ |  | ||||||
| 		Label:    label, |  | ||||||
| 		Field:    field, |  | ||||||
| 		GetAttrs: GetAttrs, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type podDisruptionBudgetStatusStrategy struct { | type podDisruptionBudgetStatusStrategy struct { | ||||||
| 	podDisruptionBudgetStrategy | 	podDisruptionBudgetStrategy | ||||||
| } | } | ||||||
|   | |||||||
| @@ -21,14 +21,11 @@ go_library( | |||||||
|         "//pkg/apis/rbac/validation:go_default_library", |         "//pkg/apis/rbac/validation:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", | ||||||
|     ], |     ], | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -37,7 +37,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		Copier:                   api.Scheme, | 		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{} }, | ||||||
| 		PredicateFunc:            clusterrole.Matcher, |  | ||||||
| 		DefaultQualifiedResource: rbac.Resource("clusterroles"), | 		DefaultQualifiedResource: rbac.Resource("clusterroles"), | ||||||
| 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("clusterroles"), | 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("clusterroles"), | ||||||
|  |  | ||||||
| @@ -45,7 +44,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		UpdateStrategy: clusterrole.Strategy, | 		UpdateStrategy: clusterrole.Strategy, | ||||||
| 		DeleteStrategy: clusterrole.Strategy, | 		DeleteStrategy: clusterrole.Strategy, | ||||||
| 	} | 	} | ||||||
| 	options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: clusterrole.GetAttrs} | 	options := &generic.StoreOptions{RESTOptions: optsGetter} | ||||||
| 	if err := store.CompleteWithOptions(options); err != nil { | 	if err := store.CompleteWithOptions(options); err != nil { | ||||||
| 		panic(err) // TODO: Propagate error up | 		panic(err) // TODO: Propagate error up | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -17,15 +17,10 @@ limitations under the License. | |||||||
| package clusterrole | package clusterrole | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"fmt" |  | ||||||
|  |  | ||||||
| 	"k8s.io/apimachinery/pkg/fields" |  | ||||||
| 	"k8s.io/apimachinery/pkg/labels" |  | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/util/validation/field" | 	"k8s.io/apimachinery/pkg/util/validation/field" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/apiserver/pkg/registry/rest" | 	"k8s.io/apiserver/pkg/registry/rest" | ||||||
| 	apistorage "k8s.io/apiserver/pkg/storage" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage/names" | 	"k8s.io/apiserver/pkg/storage/names" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/apis/rbac" | 	"k8s.io/kubernetes/pkg/apis/rbac" | ||||||
| @@ -102,26 +97,3 @@ func (strategy) AllowUnconditionalUpdate() bool { | |||||||
| func (s strategy) Export(ctx genericapirequest.Context, obj runtime.Object, exact bool) error { | func (s strategy) Export(ctx genericapirequest.Context, obj runtime.Object, exact bool) error { | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| // GetAttrs returns labels and fields of a given object for filtering purposes. |  | ||||||
| func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { |  | ||||||
| 	role, ok := obj.(*rbac.ClusterRole) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil, nil, false, fmt.Errorf("not a ClusterRole") |  | ||||||
| 	} |  | ||||||
| 	return labels.Set(role.Labels), SelectableFields(role), role.Initializers != nil, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // Matcher returns a generic matcher for a given label and field selector. |  | ||||||
| func Matcher(label labels.Selector, field fields.Selector) apistorage.SelectionPredicate { |  | ||||||
| 	return apistorage.SelectionPredicate{ |  | ||||||
| 		Label:    label, |  | ||||||
| 		Field:    field, |  | ||||||
| 		GetAttrs: GetAttrs, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // SelectableFields returns a field set that can be used for filter selection |  | ||||||
| func SelectableFields(obj *rbac.ClusterRole) fields.Set { |  | ||||||
| 	return nil |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -21,14 +21,11 @@ go_library( | |||||||
|         "//pkg/apis/rbac/validation:go_default_library", |         "//pkg/apis/rbac/validation:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", | ||||||
|     ], |     ], | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -37,7 +37,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		Copier:                   api.Scheme, | 		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{} }, | ||||||
| 		PredicateFunc:            clusterrolebinding.Matcher, |  | ||||||
| 		DefaultQualifiedResource: rbac.Resource("clusterrolebindings"), | 		DefaultQualifiedResource: rbac.Resource("clusterrolebindings"), | ||||||
| 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("clusterrolebindings"), | 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("clusterrolebindings"), | ||||||
|  |  | ||||||
| @@ -45,7 +44,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		UpdateStrategy: clusterrolebinding.Strategy, | 		UpdateStrategy: clusterrolebinding.Strategy, | ||||||
| 		DeleteStrategy: clusterrolebinding.Strategy, | 		DeleteStrategy: clusterrolebinding.Strategy, | ||||||
| 	} | 	} | ||||||
| 	options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: clusterrolebinding.GetAttrs} | 	options := &generic.StoreOptions{RESTOptions: optsGetter} | ||||||
| 	if err := store.CompleteWithOptions(options); err != nil { | 	if err := store.CompleteWithOptions(options); err != nil { | ||||||
| 		panic(err) // TODO: Propagate error up | 		panic(err) // TODO: Propagate error up | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -17,15 +17,10 @@ limitations under the License. | |||||||
| package clusterrolebinding | package clusterrolebinding | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"fmt" |  | ||||||
|  |  | ||||||
| 	"k8s.io/apimachinery/pkg/fields" |  | ||||||
| 	"k8s.io/apimachinery/pkg/labels" |  | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/util/validation/field" | 	"k8s.io/apimachinery/pkg/util/validation/field" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/apiserver/pkg/registry/rest" | 	"k8s.io/apiserver/pkg/registry/rest" | ||||||
| 	apistorage "k8s.io/apiserver/pkg/storage" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage/names" | 	"k8s.io/apiserver/pkg/storage/names" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/apis/rbac" | 	"k8s.io/kubernetes/pkg/apis/rbac" | ||||||
| @@ -102,26 +97,3 @@ func (strategy) AllowUnconditionalUpdate() bool { | |||||||
| func (s strategy) Export(ctx genericapirequest.Context, obj runtime.Object, exact bool) error { | func (s strategy) Export(ctx genericapirequest.Context, obj runtime.Object, exact bool) error { | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| // GetAttrs returns labels and fields of a given object for filtering purposes. |  | ||||||
| func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { |  | ||||||
| 	roleBinding, ok := obj.(*rbac.ClusterRoleBinding) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil, nil, false, fmt.Errorf("not a ClusterRoleBinding") |  | ||||||
| 	} |  | ||||||
| 	return labels.Set(roleBinding.Labels), SelectableFields(roleBinding), roleBinding.Initializers != nil, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // Matcher returns a generic matcher for a given label and field selector. |  | ||||||
| func Matcher(label labels.Selector, field fields.Selector) apistorage.SelectionPredicate { |  | ||||||
| 	return apistorage.SelectionPredicate{ |  | ||||||
| 		Label:    label, |  | ||||||
| 		Field:    field, |  | ||||||
| 		GetAttrs: GetAttrs, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // SelectableFields returns a field set that can be used for filter selection |  | ||||||
| func SelectableFields(obj *rbac.ClusterRoleBinding) fields.Set { |  | ||||||
| 	return nil |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -21,14 +21,11 @@ go_library( | |||||||
|         "//pkg/apis/rbac/validation:go_default_library", |         "//pkg/apis/rbac/validation:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", | ||||||
|     ], |     ], | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -37,7 +37,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		Copier:                   api.Scheme, | 		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{} }, | ||||||
| 		PredicateFunc:            role.Matcher, |  | ||||||
| 		DefaultQualifiedResource: rbac.Resource("roles"), | 		DefaultQualifiedResource: rbac.Resource("roles"), | ||||||
| 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("roles"), | 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("roles"), | ||||||
|  |  | ||||||
| @@ -45,7 +44,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		UpdateStrategy: role.Strategy, | 		UpdateStrategy: role.Strategy, | ||||||
| 		DeleteStrategy: role.Strategy, | 		DeleteStrategy: role.Strategy, | ||||||
| 	} | 	} | ||||||
| 	options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: role.GetAttrs} | 	options := &generic.StoreOptions{RESTOptions: optsGetter} | ||||||
| 	if err := store.CompleteWithOptions(options); err != nil { | 	if err := store.CompleteWithOptions(options); err != nil { | ||||||
| 		panic(err) // TODO: Propagate error up | 		panic(err) // TODO: Propagate error up | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -17,15 +17,10 @@ limitations under the License. | |||||||
| package role | package role | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"fmt" |  | ||||||
|  |  | ||||||
| 	"k8s.io/apimachinery/pkg/fields" |  | ||||||
| 	"k8s.io/apimachinery/pkg/labels" |  | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/util/validation/field" | 	"k8s.io/apimachinery/pkg/util/validation/field" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/apiserver/pkg/registry/rest" | 	"k8s.io/apiserver/pkg/registry/rest" | ||||||
| 	apistorage "k8s.io/apiserver/pkg/storage" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage/names" | 	"k8s.io/apiserver/pkg/storage/names" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/apis/rbac" | 	"k8s.io/kubernetes/pkg/apis/rbac" | ||||||
| @@ -102,26 +97,3 @@ func (strategy) AllowUnconditionalUpdate() bool { | |||||||
| func (s strategy) Export(ctx genericapirequest.Context, obj runtime.Object, exact bool) error { | func (s strategy) Export(ctx genericapirequest.Context, obj runtime.Object, exact bool) error { | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| // GetAttrs returns labels and fields of a given object for filtering purposes. |  | ||||||
| func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { |  | ||||||
| 	role, ok := obj.(*rbac.Role) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil, nil, false, fmt.Errorf("not a Role") |  | ||||||
| 	} |  | ||||||
| 	return labels.Set(role.Labels), SelectableFields(role), role.Initializers != nil, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // Matcher returns a generic matcher for a given label and field selector. |  | ||||||
| func Matcher(label labels.Selector, field fields.Selector) apistorage.SelectionPredicate { |  | ||||||
| 	return apistorage.SelectionPredicate{ |  | ||||||
| 		Label:    label, |  | ||||||
| 		Field:    field, |  | ||||||
| 		GetAttrs: GetAttrs, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // SelectableFields returns a field set that can be used for filter selection |  | ||||||
| func SelectableFields(obj *rbac.Role) fields.Set { |  | ||||||
| 	return nil |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -21,14 +21,11 @@ go_library( | |||||||
|         "//pkg/apis/rbac/validation:go_default_library", |         "//pkg/apis/rbac/validation:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", | ||||||
|     ], |     ], | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -37,7 +37,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		Copier:                   api.Scheme, | 		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{} }, | ||||||
| 		PredicateFunc:            rolebinding.Matcher, |  | ||||||
| 		DefaultQualifiedResource: rbac.Resource("rolebindings"), | 		DefaultQualifiedResource: rbac.Resource("rolebindings"), | ||||||
| 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("rolebindings"), | 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("rolebindings"), | ||||||
|  |  | ||||||
| @@ -45,7 +44,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		UpdateStrategy: rolebinding.Strategy, | 		UpdateStrategy: rolebinding.Strategy, | ||||||
| 		DeleteStrategy: rolebinding.Strategy, | 		DeleteStrategy: rolebinding.Strategy, | ||||||
| 	} | 	} | ||||||
| 	options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: rolebinding.GetAttrs} | 	options := &generic.StoreOptions{RESTOptions: optsGetter} | ||||||
| 	if err := store.CompleteWithOptions(options); err != nil { | 	if err := store.CompleteWithOptions(options); err != nil { | ||||||
| 		panic(err) // TODO: Propagate error up | 		panic(err) // TODO: Propagate error up | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -17,15 +17,10 @@ limitations under the License. | |||||||
| package rolebinding | package rolebinding | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"fmt" |  | ||||||
|  |  | ||||||
| 	"k8s.io/apimachinery/pkg/fields" |  | ||||||
| 	"k8s.io/apimachinery/pkg/labels" |  | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/util/validation/field" | 	"k8s.io/apimachinery/pkg/util/validation/field" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/apiserver/pkg/registry/rest" | 	"k8s.io/apiserver/pkg/registry/rest" | ||||||
| 	apistorage "k8s.io/apiserver/pkg/storage" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage/names" | 	"k8s.io/apiserver/pkg/storage/names" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/apis/rbac" | 	"k8s.io/kubernetes/pkg/apis/rbac" | ||||||
| @@ -102,26 +97,3 @@ func (strategy) AllowUnconditionalUpdate() bool { | |||||||
| func (s strategy) Export(ctx genericapirequest.Context, obj runtime.Object, exact bool) error { | func (s strategy) Export(ctx genericapirequest.Context, obj runtime.Object, exact bool) error { | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| // GetAttrs returns labels and fields of a given object for filtering purposes. |  | ||||||
| func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { |  | ||||||
| 	roleBinding, ok := obj.(*rbac.RoleBinding) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil, nil, false, fmt.Errorf("not a RoleBinding") |  | ||||||
| 	} |  | ||||||
| 	return labels.Set(roleBinding.Labels), SelectableFields(roleBinding), roleBinding.Initializers != nil, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // Matcher returns a generic matcher for a given label and field selector. |  | ||||||
| func Matcher(label labels.Selector, field fields.Selector) apistorage.SelectionPredicate { |  | ||||||
| 	return apistorage.SelectionPredicate{ |  | ||||||
| 		Label:    label, |  | ||||||
| 		Field:    field, |  | ||||||
| 		GetAttrs: GetAttrs, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // SelectableFields returns a field set that can be used for filter selection |  | ||||||
| func SelectableFields(obj *rbac.RoleBinding) fields.Set { |  | ||||||
| 	return nil |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -34,15 +34,11 @@ go_library( | |||||||
|         "//pkg/apis/scheduling/validation:go_default_library", |         "//pkg/apis/scheduling/validation:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", | ||||||
|     ], |     ], | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -38,7 +38,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		Copier:                   api.Scheme, | 		Copier:                   api.Scheme, | ||||||
| 		NewFunc:                  func() runtime.Object { return &schedulingapi.PriorityClass{} }, | 		NewFunc:                  func() runtime.Object { return &schedulingapi.PriorityClass{} }, | ||||||
| 		NewListFunc:              func() runtime.Object { return &schedulingapi.PriorityClassList{} }, | 		NewListFunc:              func() runtime.Object { return &schedulingapi.PriorityClassList{} }, | ||||||
| 		PredicateFunc:            priorityclass.Matcher, |  | ||||||
| 		DefaultQualifiedResource: schedulingapi.Resource("priorityclasses"), | 		DefaultQualifiedResource: schedulingapi.Resource("priorityclasses"), | ||||||
| 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("priorityclasses"), | 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("priorityclasses"), | ||||||
|  |  | ||||||
| @@ -46,7 +45,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		UpdateStrategy: priorityclass.Strategy, | 		UpdateStrategy: priorityclass.Strategy, | ||||||
| 		DeleteStrategy: priorityclass.Strategy, | 		DeleteStrategy: priorityclass.Strategy, | ||||||
| 	} | 	} | ||||||
| 	options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: priorityclass.GetAttrs} | 	options := &generic.StoreOptions{RESTOptions: optsGetter} | ||||||
| 	if err := store.CompleteWithOptions(options); err != nil { | 	if err := store.CompleteWithOptions(options); err != nil { | ||||||
| 		panic(err) // TODO: Propagate error up | 		panic(err) // TODO: Propagate error up | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -17,15 +17,9 @@ limitations under the License. | |||||||
| package priorityclass | package priorityclass | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"fmt" |  | ||||||
|  |  | ||||||
| 	"k8s.io/apimachinery/pkg/fields" |  | ||||||
| 	"k8s.io/apimachinery/pkg/labels" |  | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/util/validation/field" | 	"k8s.io/apimachinery/pkg/util/validation/field" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/apiserver/pkg/registry/generic" |  | ||||||
| 	apistorage "k8s.io/apiserver/pkg/storage" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage/names" | 	"k8s.io/apiserver/pkg/storage/names" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/apis/scheduling" | 	"k8s.io/kubernetes/pkg/apis/scheduling" | ||||||
| @@ -83,27 +77,3 @@ func (priorityClassStrategy) ValidateUpdate(ctx genericapirequest.Context, obj, | |||||||
| func (priorityClassStrategy) AllowUnconditionalUpdate() bool { | func (priorityClassStrategy) AllowUnconditionalUpdate() bool { | ||||||
| 	return true | 	return true | ||||||
| } | } | ||||||
|  |  | ||||||
| // SelectableFields returns a field set that represents the object. |  | ||||||
| func SelectableFields(pc *scheduling.PriorityClass) fields.Set { |  | ||||||
| 	return generic.ObjectMetaFieldsSet(&pc.ObjectMeta, false) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // GetAttrs returns labels and fields of a given object for filtering purposes. |  | ||||||
| func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { |  | ||||||
| 	pc, ok := obj.(*scheduling.PriorityClass) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil, nil, false, fmt.Errorf("given object is not a PriorityClass") |  | ||||||
| 	} |  | ||||||
| 	return labels.Set(pc.ObjectMeta.Labels), SelectableFields(pc), pc.Initializers != nil, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // Matcher is the filter used by the generic etcd backend to watch events |  | ||||||
| // from etcd to clients of the apiserver only interested in specific labels/fields. |  | ||||||
| func Matcher(label labels.Selector, field fields.Selector) apistorage.SelectionPredicate { |  | ||||||
| 	return apistorage.SelectionPredicate{ |  | ||||||
| 		Label:    label, |  | ||||||
| 		Field:    field, |  | ||||||
| 		GetAttrs: GetAttrs, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -21,15 +21,11 @@ go_library( | |||||||
|         "//pkg/apis/settings/validation:go_default_library", |         "//pkg/apis/settings/validation:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", | ||||||
|     ], |     ], | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -37,7 +37,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		Copier:                   api.Scheme, | 		Copier:                   api.Scheme, | ||||||
| 		NewFunc:                  func() runtime.Object { return &settingsapi.PodPreset{} }, | 		NewFunc:                  func() runtime.Object { return &settingsapi.PodPreset{} }, | ||||||
| 		NewListFunc:              func() runtime.Object { return &settingsapi.PodPresetList{} }, | 		NewListFunc:              func() runtime.Object { return &settingsapi.PodPresetList{} }, | ||||||
| 		PredicateFunc:            podpreset.Matcher, |  | ||||||
| 		DefaultQualifiedResource: settingsapi.Resource("podpresets"), | 		DefaultQualifiedResource: settingsapi.Resource("podpresets"), | ||||||
| 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("podpresets"), | 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("podpresets"), | ||||||
|  |  | ||||||
| @@ -45,7 +44,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		UpdateStrategy: podpreset.Strategy, | 		UpdateStrategy: podpreset.Strategy, | ||||||
| 		DeleteStrategy: podpreset.Strategy, | 		DeleteStrategy: podpreset.Strategy, | ||||||
| 	} | 	} | ||||||
| 	options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: podpreset.GetAttrs} | 	options := &generic.StoreOptions{RESTOptions: optsGetter} | ||||||
| 	if err := store.CompleteWithOptions(options); err != nil { | 	if err := store.CompleteWithOptions(options); err != nil { | ||||||
| 		panic(err) // TODO: Propagate error up | 		panic(err) // TODO: Propagate error up | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -17,15 +17,9 @@ limitations under the License. | |||||||
| package podpreset | package podpreset | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"fmt" |  | ||||||
|  |  | ||||||
| 	"k8s.io/apimachinery/pkg/fields" |  | ||||||
| 	"k8s.io/apimachinery/pkg/labels" |  | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/util/validation/field" | 	"k8s.io/apimachinery/pkg/util/validation/field" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/apiserver/pkg/registry/generic" |  | ||||||
| 	apistorage "k8s.io/apiserver/pkg/storage" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage/names" | 	"k8s.io/apiserver/pkg/storage/names" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/apis/settings" | 	"k8s.io/kubernetes/pkg/apis/settings" | ||||||
| @@ -86,27 +80,3 @@ func (podPresetStrategy) ValidateUpdate(ctx genericapirequest.Context, obj, old | |||||||
| func (podPresetStrategy) AllowUnconditionalUpdate() bool { | func (podPresetStrategy) AllowUnconditionalUpdate() bool { | ||||||
| 	return true | 	return true | ||||||
| } | } | ||||||
|  |  | ||||||
| // SelectableFields returns a field set that represents the object. |  | ||||||
| func SelectableFields(pip *settings.PodPreset) fields.Set { |  | ||||||
| 	return generic.ObjectMetaFieldsSet(&pip.ObjectMeta, true) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // GetAttrs returns labels and fields of a given object for filtering purposes. |  | ||||||
| func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { |  | ||||||
| 	pip, ok := obj.(*settings.PodPreset) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil, nil, false, fmt.Errorf("given object is not a PodPreset.") |  | ||||||
| 	} |  | ||||||
| 	return labels.Set(pip.ObjectMeta.Labels), SelectableFields(pip), pip.Initializers != nil, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // Matcher is the filter used by the generic etcd backend to watch events |  | ||||||
| // from etcd to clients of the apiserver only interested in specific labels/fields. |  | ||||||
| func Matcher(label labels.Selector, field fields.Selector) apistorage.SelectionPredicate { |  | ||||||
| 	return apistorage.SelectionPredicate{ |  | ||||||
| 		Label:    label, |  | ||||||
| 		Field:    field, |  | ||||||
| 		GetAttrs: GetAttrs, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -19,13 +19,9 @@ go_library( | |||||||
|         "//pkg/api:go_default_library", |         "//pkg/api:go_default_library", | ||||||
|         "//pkg/apis/storage:go_default_library", |         "//pkg/apis/storage:go_default_library", | ||||||
|         "//pkg/apis/storage/validation:go_default_library", |         "//pkg/apis/storage/validation:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||||
|         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", |         "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library", | ||||||
|         "//vendor/k8s.io/apiserver/pkg/registry/generic:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage:go_default_library", |  | ||||||
|         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", |         "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", | ||||||
|     ], |     ], | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -37,7 +37,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		Copier:                   api.Scheme, | 		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{} }, | ||||||
| 		PredicateFunc:            storageclass.MatchStorageClasses, |  | ||||||
| 		DefaultQualifiedResource: storageapi.Resource("storageclasses"), | 		DefaultQualifiedResource: storageapi.Resource("storageclasses"), | ||||||
| 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("storageclass"), | 		WatchCacheSize:           cachesize.GetWatchCacheSizeByResource("storageclass"), | ||||||
|  |  | ||||||
| @@ -46,7 +45,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST { | |||||||
| 		DeleteStrategy:      storageclass.Strategy, | 		DeleteStrategy:      storageclass.Strategy, | ||||||
| 		ReturnDeletedObject: true, | 		ReturnDeletedObject: true, | ||||||
| 	} | 	} | ||||||
| 	options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: storageclass.GetAttrs} | 	options := &generic.StoreOptions{RESTOptions: optsGetter} | ||||||
| 	if err := store.CompleteWithOptions(options); err != nil { | 	if err := store.CompleteWithOptions(options); err != nil { | ||||||
| 		panic(err) // TODO: Propagate error up | 		panic(err) // TODO: Propagate error up | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -17,15 +17,9 @@ limitations under the License. | |||||||
| package storageclass | package storageclass | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"fmt" |  | ||||||
|  |  | ||||||
| 	"k8s.io/apimachinery/pkg/fields" |  | ||||||
| 	"k8s.io/apimachinery/pkg/labels" |  | ||||||
| 	"k8s.io/apimachinery/pkg/runtime" | 	"k8s.io/apimachinery/pkg/runtime" | ||||||
| 	"k8s.io/apimachinery/pkg/util/validation/field" | 	"k8s.io/apimachinery/pkg/util/validation/field" | ||||||
| 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | 	genericapirequest "k8s.io/apiserver/pkg/endpoints/request" | ||||||
| 	"k8s.io/apiserver/pkg/registry/generic" |  | ||||||
| 	apistorage "k8s.io/apiserver/pkg/storage" |  | ||||||
| 	"k8s.io/apiserver/pkg/storage/names" | 	"k8s.io/apiserver/pkg/storage/names" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/apis/storage" | 	"k8s.io/kubernetes/pkg/apis/storage" | ||||||
| @@ -78,26 +72,3 @@ func (storageClassStrategy) ValidateUpdate(ctx genericapirequest.Context, obj, o | |||||||
| func (storageClassStrategy) AllowUnconditionalUpdate() bool { | func (storageClassStrategy) AllowUnconditionalUpdate() bool { | ||||||
| 	return true | 	return true | ||||||
| } | } | ||||||
|  |  | ||||||
| // GetAttrs returns labels and fields of a given object for filtering purposes. |  | ||||||
| func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) { |  | ||||||
| 	cls, ok := obj.(*storage.StorageClass) |  | ||||||
| 	if !ok { |  | ||||||
| 		return nil, nil, false, fmt.Errorf("given object is not of type StorageClass") |  | ||||||
| 	} |  | ||||||
| 	return labels.Set(cls.ObjectMeta.Labels), StorageClassToSelectableFields(cls), cls.Initializers != nil, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // MatchStorageClass returns a generic matcher for a given label and field selector. |  | ||||||
| func MatchStorageClasses(label labels.Selector, field fields.Selector) apistorage.SelectionPredicate { |  | ||||||
| 	return apistorage.SelectionPredicate{ |  | ||||||
| 		Label:    label, |  | ||||||
| 		Field:    field, |  | ||||||
| 		GetAttrs: GetAttrs, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // StorageClassToSelectableFields returns a label set that represents the object |  | ||||||
| func StorageClassToSelectableFields(storageClass *storage.StorageClass) fields.Set { |  | ||||||
| 	return generic.ObjectMetaFieldsSet(&storageClass.ObjectMeta, false) |  | ||||||
| } |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 deads2k
					deads2k