Skip to content

Commit d14cfb5

Browse files
committed
add legacy field selector for names
1 parent a6abbaf commit d14cfb5

File tree

46 files changed

+58
-602
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+58
-602
lines changed

hack/import-restrictions.json

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
"vendor/k8s.io/kubernetes/pkg/api",
4141
"vendor/k8s.io/kubernetes/pkg/api/v1",
4242
"github.com/openshift/origin/pkg/api",
43-
"github.com/openshift/origin/pkg/api",
43+
"github.com/openshift/origin/pkg/api/legacy",
4444
"github.com/openshift/origin/pkg/api/install",
4545
"github.com/openshift/origin/pkg/util/namer",
4646
"github.com/openshift/origin/pkg/build/util",
@@ -67,10 +67,8 @@
6767
"vendor/k8s.io/kubernetes/pkg/apis/extensions/v1beta1",
6868
"vendor/k8s.io/kubernetes/pkg/api/helper",
6969
"vendor/k8s.io/kubernetes/pkg/api/install",
70-
"github.com/openshift/origin/pkg/api",
7170
"github.com/openshift/origin/pkg/deploy/apis/apps/install",
72-
"github.com/openshift/origin/pkg/image/apis/image",
73-
"github.com/openshift/origin/test/util/api"
71+
"github.com/openshift/origin/pkg/image/apis/image"
7472
]
7573
},
7674

@@ -182,11 +180,7 @@
182180
"vendor/k8s.io/apimachinery",
183181
"vendor/github.com/gogo/protobuf"
184182
],
185-
"allowedImportPackages": [
186-
"github.com/openshift/origin/pkg/api",
187-
"github.com/openshift/origin/pkg/api/install",
188-
"github.com/openshift/origin/test/util/api"
189-
]
183+
"allowedImportPackages": []
190184
},
191185

192186
{

pkg/api/legacy/fields.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package legacy
2+
3+
import (
4+
"k8s.io/apimachinery/pkg/runtime"
5+
)
6+
7+
// LegacyMetaV1FieldSelectorConversionWithName auto-accepts metav1 values for name and namespace AND "name"
8+
// which many of our older resources used.
9+
func LegacyMetaV1FieldSelectorConversionWithName(label, value string) (string, string, error) {
10+
switch label {
11+
case "name":
12+
return "metadata.name", value, nil
13+
default:
14+
return runtime.DefaultMetaV1FieldSelectorConversion(label, value)
15+
}
16+
}

pkg/build/apis/build/fields.go

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,3 @@ func BuildToSelectableFields(build *Build) fields.Set {
1212
"podName": GetBuildPodName(build),
1313
}
1414
}
15-
16-
// BuildConfigToSelectableFields returns a label set that represents the object
17-
// changes to the returned keys require registering conversions for existing versions using Scheme.AddFieldLabelConversionFunc
18-
func BuildConfigToSelectableFields(buildConfig *BuildConfig) fields.Set {
19-
return fields.Set{
20-
"metadata.name": buildConfig.Name,
21-
"metadata.namespace": buildConfig.Namespace,
22-
}
23-
}

pkg/build/apis/build/v1/conversion.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"k8s.io/apimachinery/pkg/runtime"
66

77
oapi "github.com/openshift/origin/pkg/api"
8+
"github.com/openshift/origin/pkg/api/legacy"
89
newer "github.com/openshift/origin/pkg/build/apis/build"
910
buildutil "github.com/openshift/origin/pkg/build/util"
1011
imageapi "github.com/openshift/origin/pkg/image/apis/image"
@@ -174,15 +175,23 @@ func addConversionFuncs(scheme *runtime.Scheme) error {
174175
return err
175176
}
176177

178+
if err := scheme.AddFieldLabelConversionFunc(SchemeGroupVersion.String(), "Build",
179+
oapi.GetFieldLabelConversionFunc(newer.BuildToSelectableFields(&newer.Build{}), nil),
180+
); err != nil {
181+
return err
182+
}
183+
184+
return nil
185+
}
186+
187+
func addLegacyFieldLabelConversions(scheme *runtime.Scheme) error {
177188
if err := scheme.AddFieldLabelConversionFunc("v1", "Build",
178189
oapi.GetFieldLabelConversionFunc(newer.BuildToSelectableFields(&newer.Build{}), map[string]string{"name": "metadata.name"}),
179190
); err != nil {
180191
return err
181192
}
182193

183-
if err := scheme.AddFieldLabelConversionFunc("v1", "BuildConfig",
184-
oapi.GetFieldLabelConversionFunc(newer.BuildConfigToSelectableFields(&newer.BuildConfig{}), map[string]string{"name": "metadata.name"}),
185-
); err != nil {
194+
if err := scheme.AddFieldLabelConversionFunc("v1", "BuildConfig", legacy.LegacyMetaV1FieldSelectorConversionWithName); err != nil {
186195
return err
187196
}
188197
return nil

pkg/build/apis/build/v1/conversion_test.go

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,6 @@ func TestFieldSelectorConversions(t *testing.T) {
2323
// Ensure previously supported labels have conversions. DO NOT REMOVE THINGS FROM THIS LIST
2424
"name", "status", "podName",
2525
)
26-
27-
testutil.CheckFieldLabelConversions(t, "v1", "BuildConfig",
28-
// Ensure all currently returned labels are supported
29-
newer.BuildConfigToSelectableFields(&newer.BuildConfig{}),
30-
// Ensure previously supported labels have conversions. DO NOT REMOVE THINGS FROM THIS LIST
31-
"name",
32-
)
3326
}
3427

3528
func TestBinaryBuildRequestOptions(t *testing.T) {

pkg/build/apis/build/v1/register.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ var (
1313
SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1"}
1414
LegacySchemeGroupVersion = schema.GroupVersion{Group: LegacyGroupName, Version: "v1"}
1515

16-
LegacySchemeBuilder = runtime.NewSchemeBuilder(addLegacyKnownTypes, addConversionFuncs, RegisterDefaults)
16+
LegacySchemeBuilder = runtime.NewSchemeBuilder(addLegacyKnownTypes, addConversionFuncs, RegisterDefaults, addLegacyFieldLabelConversions)
1717
AddToSchemeInCoreGroup = LegacySchemeBuilder.AddToScheme
1818

1919
SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addConversionFuncs, RegisterDefaults)

pkg/build/registry/buildconfig/etcd/etcd.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,13 @@ func NewREST(optsGetter restoptions.Getter) (*REST, error) {
2525
NewFunc: func() runtime.Object { return &buildapi.BuildConfig{} },
2626
NewListFunc: func() runtime.Object { return &buildapi.BuildConfigList{} },
2727
DefaultQualifiedResource: buildapi.Resource("buildconfigs"),
28-
PredicateFunc: buildconfig.Matcher,
2928

3029
CreateStrategy: buildconfig.GroupStrategy,
3130
UpdateStrategy: buildconfig.GroupStrategy,
3231
DeleteStrategy: buildconfig.GroupStrategy,
3332
}
3433

35-
options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: buildconfig.GetAttrs}
34+
options := &generic.StoreOptions{RESTOptions: optsGetter}
3635
if err := store.CompleteWithOptions(options); err != nil {
3736
return nil, err
3837
}

pkg/build/registry/buildconfig/strategy.go

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,11 @@
11
package buildconfig
22

33
import (
4-
"fmt"
5-
64
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
7-
"k8s.io/apimachinery/pkg/fields"
8-
"k8s.io/apimachinery/pkg/labels"
95
"k8s.io/apimachinery/pkg/runtime"
106
"k8s.io/apimachinery/pkg/util/validation/field"
117
apirequest "k8s.io/apiserver/pkg/endpoints/request"
128
"k8s.io/apiserver/pkg/registry/rest"
13-
kstorage "k8s.io/apiserver/pkg/storage"
149
"k8s.io/apiserver/pkg/storage/names"
1510
kapi "k8s.io/kubernetes/pkg/api"
1611

@@ -125,24 +120,6 @@ func (s legacyStrategy) DefaultGarbageCollectionPolicy() rest.GarbageCollectionP
125120
return rest.OrphanDependents
126121
}
127122

128-
// GetAttrs returns labels and fields of a given object for filtering purposes
129-
func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) {
130-
buildConfig, ok := obj.(*buildapi.BuildConfig)
131-
if !ok {
132-
return nil, nil, false, fmt.Errorf("not a BuildConfig")
133-
}
134-
return labels.Set(buildConfig.ObjectMeta.Labels), buildapi.BuildConfigToSelectableFields(buildConfig), buildConfig.Initializers != nil, nil
135-
}
136-
137-
// Matcher returns a generic matcher for a given label and field selector.
138-
func Matcher(label labels.Selector, field fields.Selector) kstorage.SelectionPredicate {
139-
return kstorage.SelectionPredicate{
140-
Label: label,
141-
Field: field,
142-
GetAttrs: GetAttrs,
143-
}
144-
}
145-
146123
// CheckGracefulDelete allows a build config to be gracefully deleted.
147124
func (strategy) CheckGracefulDelete(obj runtime.Object, options *metav1.DeleteOptions) bool {
148125
return false

pkg/deploy/apis/apps/fields.go

Lines changed: 0 additions & 11 deletions
This file was deleted.

pkg/deploy/apis/apps/v1/conversion.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
"k8s.io/apimachinery/pkg/runtime"
88
"k8s.io/apimachinery/pkg/util/intstr"
99

10-
oapi "github.com/openshift/origin/pkg/api"
1110
newer "github.com/openshift/origin/pkg/deploy/apis/apps"
1211
imageapi "github.com/openshift/origin/pkg/image/apis/image"
1312
)
@@ -119,10 +118,5 @@ func addConversionFuncs(scheme *runtime.Scheme) error {
119118
return err
120119
}
121120

122-
if err := scheme.AddFieldLabelConversionFunc("v1", "DeploymentConfig",
123-
oapi.GetFieldLabelConversionFunc(newer.DeploymentConfigToSelectableFields(&newer.DeploymentConfig{}), nil),
124-
); err != nil {
125-
return err
126-
}
127121
return nil
128122
}

pkg/deploy/apis/apps/v1/conversion_test.go

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
kapiv1 "k8s.io/kubernetes/pkg/api/v1"
1111

1212
newer "github.com/openshift/origin/pkg/deploy/apis/apps"
13-
testutil "github.com/openshift/origin/test/util/api"
1413
)
1514

1615
func TestTriggerRoundTrip(t *testing.T) {
@@ -223,10 +222,3 @@ func newInt32(val int32) *int32 {
223222
func newIntOrString(ios intstr.IntOrString) *intstr.IntOrString {
224223
return &ios
225224
}
226-
227-
func TestFieldSelectors(t *testing.T) {
228-
testutil.CheckFieldLabelConversions(t, "v1", "DeploymentConfig",
229-
// Ensure all currently returned labels are supported
230-
newer.DeploymentConfigToSelectableFields(&newer.DeploymentConfig{}),
231-
)
232-
}

pkg/deploy/registry/deployconfig/etcd/etcd.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,14 @@ func NewREST(optsGetter restoptions.Getter) (*REST, *StatusREST, *ScaleREST, err
3434
Copier: kapi.Scheme,
3535
NewFunc: func() runtime.Object { return &deployapi.DeploymentConfig{} },
3636
NewListFunc: func() runtime.Object { return &deployapi.DeploymentConfigList{} },
37-
PredicateFunc: deployconfig.Matcher,
3837
DefaultQualifiedResource: deployapi.Resource("deploymentconfigs"),
3938

4039
CreateStrategy: deployconfig.GroupStrategy,
4140
UpdateStrategy: deployconfig.GroupStrategy,
4241
DeleteStrategy: deployconfig.GroupStrategy,
4342
}
4443

45-
options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: deployconfig.GetAttrs}
44+
options := &generic.StoreOptions{RESTOptions: optsGetter}
4645
if err := store.CompleteWithOptions(options); err != nil {
4746
return nil, nil, nil, err
4847
}

pkg/deploy/registry/deployconfig/strategy.go

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
11
package deployconfig
22

33
import (
4-
"fmt"
54
"reflect"
65

76
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
8-
"k8s.io/apimachinery/pkg/fields"
9-
"k8s.io/apimachinery/pkg/labels"
107
"k8s.io/apimachinery/pkg/runtime"
118
"k8s.io/apimachinery/pkg/util/validation/field"
129
apirequest "k8s.io/apiserver/pkg/endpoints/request"
1310
"k8s.io/apiserver/pkg/registry/rest"
14-
kstorage "k8s.io/apiserver/pkg/storage"
1511
"k8s.io/apiserver/pkg/storage/names"
1612
kapi "k8s.io/kubernetes/pkg/api"
1713

@@ -162,21 +158,3 @@ func (statusStrategy) PrepareForUpdate(ctx apirequest.Context, obj, old runtime.
162158
func (statusStrategy) ValidateUpdate(ctx apirequest.Context, obj, old runtime.Object) field.ErrorList {
163159
return validation.ValidateDeploymentConfigStatusUpdate(obj.(*deployapi.DeploymentConfig), old.(*deployapi.DeploymentConfig))
164160
}
165-
166-
// GetAttrs returns labels and fields of a given object for filtering purposes
167-
func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, bool, error) {
168-
deploymentConfig, ok := obj.(*deployapi.DeploymentConfig)
169-
if !ok {
170-
return nil, nil, false, fmt.Errorf("not a DeploymentConfig")
171-
}
172-
return labels.Set(deploymentConfig.ObjectMeta.Labels), deployapi.DeploymentConfigToSelectableFields(deploymentConfig), deploymentConfig.Initializers != nil, nil
173-
}
174-
175-
// Matcher returns a generic matcher for a given label and field selector.
176-
func Matcher(label labels.Selector, field fields.Selector) kstorage.SelectionPredicate {
177-
return kstorage.SelectionPredicate{
178-
Label: label,
179-
Field: field,
180-
GetAttrs: GetAttrs,
181-
}
182-
}

pkg/image/apis/image/fields.go

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,6 @@ package image
22

33
import "k8s.io/apimachinery/pkg/fields"
44

5-
// ImageToSelectableFields returns a label set that represents the object.
6-
func ImageToSelectableFields(image *Image) fields.Set {
7-
return fields.Set{
8-
"metadata.name": image.Name,
9-
"metadata.namespace": image.Namespace,
10-
}
11-
}
12-
135
// ImageStreamToSelectableFields returns a label set that represents the object.
146
func ImageStreamToSelectableFields(ir *ImageStream) fields.Set {
157
return fields.Set{

pkg/image/apis/image/v1/conversion.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -280,12 +280,6 @@ func addConversionFuncs(scheme *runtime.Scheme) error {
280280
return err
281281
}
282282

283-
if err := scheme.AddFieldLabelConversionFunc("v1", "Image",
284-
oapi.GetFieldLabelConversionFunc(newer.ImageToSelectableFields(&newer.Image{}), nil),
285-
); err != nil {
286-
return err
287-
}
288-
289283
if err := scheme.AddFieldLabelConversionFunc("v1", "ImageStream",
290284
oapi.GetFieldLabelConversionFunc(newer.ImageStreamToSelectableFields(&newer.ImageStream{}), map[string]string{"name": "metadata.name"}),
291285
); err != nil {

pkg/image/apis/image/v1/conversion_test.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,6 @@ func TestRoundTripVersionedObject(t *testing.T) {
5050
}
5151

5252
func TestFieldSelectors(t *testing.T) {
53-
testutil.CheckFieldLabelConversions(t, "v1", "Image",
54-
// Ensure all currently returned labels are supported
55-
newer.ImageToSelectableFields(&newer.Image{}),
56-
)
5753
testutil.CheckFieldLabelConversions(t, "v1", "ImageStream",
5854
// Ensure all currently returned labels are supported
5955
newer.ImageStreamToSelectableFields(&newer.ImageStream{}),

pkg/image/registry/image/etcd/etcd.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,14 @@ func NewREST(optsGetter restoptions.Getter) (*REST, error) {
2525
Copier: kapi.Scheme,
2626
NewFunc: func() runtime.Object { return &imageapi.Image{} },
2727
NewListFunc: func() runtime.Object { return &imageapi.ImageList{} },
28-
PredicateFunc: image.Matcher,
2928
DefaultQualifiedResource: imageapi.Resource("images"),
3029

3130
CreateStrategy: image.Strategy,
3231
UpdateStrategy: image.Strategy,
3332
DeleteStrategy: image.Strategy,
3433
}
3534

36-
options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: image.GetAttrs}
35+
options := &generic.StoreOptions{RESTOptions: optsGetter}
3736
if err := store.CompleteWithOptions(options); err != nil {
3837
return nil, err
3938
}

pkg/image/registry/image/strategy.go

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,11 @@ package image
33
import (
44
"fmt"
55

6-
"k8s.io/apimachinery/pkg/fields"
7-
"k8s.io/apimachinery/pkg/labels"
86
"k8s.io/apimachinery/pkg/runtime"
97
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
108
"k8s.io/apimachinery/pkg/util/validation/field"
119
apirequest "k8s.io/apiserver/pkg/endpoints/request"
12-
"k8s.io/apiserver/pkg/registry/generic"
1310
"k8s.io/apiserver/pkg/registry/rest"
14-
kstorage "k8s.io/apiserver/pkg/storage"
1511
"k8s.io/apiserver/pkg/storage/names"
1612
kapi "k8s.io/kubernetes/pkg/api"
1713

@@ -125,26 +121,3 @@ func (s imageStrategy) PrepareForUpdate(ctx apirequest.Context, obj, old runtime
125121
func (imageStrategy) ValidateUpdate(ctx apirequest.Context, obj, old runtime.Object) field.ErrorList {
126122
return validation.ValidateImageUpdate(old.(*imageapi.Image), obj.(*imageapi.Image))
127123
}
128-
129-
// GetAttrs returns labels and fields of a given object for filtering purposes
130-
func GetAttrs(o runtime.Object) (labels.Set, fields.Set, bool, error) {
131-
obj, ok := o.(*imageapi.Image)
132-
if !ok {
133-
return nil, nil, false, fmt.Errorf("not an Image")
134-
}
135-
return labels.Set(obj.Labels), SelectableFields(obj), obj.Initializers != nil, nil
136-
}
137-
138-
// Matcher returns a generic matcher for a given label and field selector.
139-
func Matcher(label labels.Selector, field fields.Selector) kstorage.SelectionPredicate {
140-
return kstorage.SelectionPredicate{
141-
Label: label,
142-
Field: field,
143-
GetAttrs: GetAttrs,
144-
}
145-
}
146-
147-
// SelectableFields returns a field set that can be used for filter selection
148-
func SelectableFields(obj *imageapi.Image) fields.Set {
149-
return generic.ObjectMetaFieldsSet(&obj.ObjectMeta, false)
150-
}

pkg/oauth/apis/oauth/fields.go

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,6 @@ func OAuthAuthorizeTokenToSelectableFields(obj *OAuthAuthorizeToken) fields.Set
2323
}
2424
}
2525

26-
// OAuthClientToSelectableFields returns a label set that represents the object
27-
func OAuthClientToSelectableFields(obj *OAuthClient) fields.Set {
28-
return fields.Set{
29-
"metadata.name": obj.Name,
30-
}
31-
}
32-
3326
// OAuthClientAuthorizationToSelectableFields returns a label set that represents the object
3427
func OAuthClientAuthorizationToSelectableFields(obj *OAuthClientAuthorization) fields.Set {
3528
return fields.Set{

0 commit comments

Comments
 (0)