Skip to content
This repository was archived by the owner on May 6, 2022. It is now read-only.

Commit 3984a95

Browse files
jimmidysonk8s-ci-robot
authored andcommitted
Ensure that ObjectMeta field selectors (e.g. name and namespace) can be used appropriately for all types (#2214)
* Ensure that ObjectMeta field selectors (e.g. name and namespace) can be used appropriately for all types * Add client tests for namespaced resources
1 parent 95c1201 commit 3984a95

9 files changed

Lines changed: 769 additions & 100 deletions

File tree

pkg/apis/servicecatalog/v1beta1/conversion.go

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ import (
2929
// what it's given for the supported fields, and errors for unsupported.
3030
func ClusterServicePlanFieldLabelConversionFunc(label, value string) (string, string, error) {
3131
switch label {
32-
case "spec.externalID",
32+
case "metadata.name",
33+
"spec.externalID",
3334
"spec.externalName",
3435
"spec.clusterServiceBrokerName",
3536
"spec.clusterServiceClassRef.name":
@@ -43,7 +44,9 @@ func ClusterServicePlanFieldLabelConversionFunc(label, value string) (string, st
4344
// what it's given for the supported fields, and errors for unsupported.
4445
func ServicePlanFieldLabelConversionFunc(label, value string) (string, string, error) {
4546
switch label {
46-
case "spec.externalID",
47+
case "metadata.name",
48+
"metadata.namespace",
49+
"spec.externalID",
4750
"spec.externalName",
4851
"spec.serviceBrokerName",
4952
"spec.serviceClassRef.name":
@@ -57,7 +60,9 @@ func ServicePlanFieldLabelConversionFunc(label, value string) (string, string, e
5760
// what it's given for the supported fields, and errors for unsupported.
5861
func ServiceClassFieldLabelConversionFunc(label, value string) (string, string, error) {
5962
switch label {
60-
case "spec.externalID",
63+
case "metadata.name",
64+
"metadata.namespace",
65+
"spec.externalID",
6166
"spec.externalName",
6267
"spec.serviceBrokerName":
6368
return label, value, nil
@@ -70,7 +75,8 @@ func ServiceClassFieldLabelConversionFunc(label, value string) (string, string,
7075
// what it's given for the supported fields, and errors for unsupported.
7176
func ClusterServiceClassFieldLabelConversionFunc(label, value string) (string, string, error) {
7277
switch label {
73-
case "spec.externalID",
78+
case "metadata.name",
79+
"spec.externalID",
7480
"spec.externalName",
7581
"spec.clusterServiceBrokerName":
7682
return label, value, nil
@@ -83,7 +89,9 @@ func ClusterServiceClassFieldLabelConversionFunc(label, value string) (string, s
8389
// what it's given for the supported fields, and errors for unsupported.
8490
func ServiceInstanceFieldLabelConversionFunc(label, value string) (string, string, error) {
8591
switch label {
86-
case "spec.externalID",
92+
case "metadata.name",
93+
"metadata.namespace",
94+
"spec.externalID",
8795
"spec.clusterServiceClassRef.name",
8896
"spec.clusterServicePlanRef.name":
8997
return label, value, nil
@@ -96,7 +104,9 @@ func ServiceInstanceFieldLabelConversionFunc(label, value string) (string, strin
96104
// what it's given for the supported fields, and errors for unsupported.
97105
func ServiceBindingFieldLabelConversionFunc(label, value string) (string, string, error) {
98106
switch label {
99-
case "spec.externalID":
107+
case "metadata.name",
108+
"metadata.namespace",
109+
"spec.externalID":
100110
return label, value, nil
101111
default:
102112
return "", "", fmt.Errorf("field label not supported: %s", label)

pkg/registry/servicecatalog/binding/storage.go

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -90,15 +90,9 @@ func Match(label labels.Selector, field fields.Selector) storage.SelectionPredic
9090
func toSelectableFields(binding *servicecatalog.ServiceBinding) fields.Set {
9191
// If you add a new selectable field, you also need to modify
9292
// pkg/apis/servicecatalog/v1beta1/conversion[_test].go
93-
objectMetaFieldsSet := generic.ObjectMetaFieldsSet(&binding.ObjectMeta, true)
94-
9593
specFieldSet := make(fields.Set, 1)
96-
97-
if binding.Spec.ExternalID != "" {
98-
specFieldSet["spec.externalID"] = binding.Spec.ExternalID
99-
}
100-
101-
return generic.MergeFieldsSets(objectMetaFieldsSet, specFieldSet)
94+
specFieldSet["spec.externalID"] = binding.Spec.ExternalID
95+
return generic.AddObjectMetaFieldsSet(specFieldSet, &binding.ObjectMeta, true)
10296
}
10397

10498
// GetAttrs returns labels and fields of a given object for filtering purposes.

pkg/registry/servicecatalog/clusterservicebroker/storage.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,7 @@ func Match(label labels.Selector, field fields.Selector) storage.SelectionPredic
8989

9090
// toSelectableFields returns a field set that represents the object for matching purposes.
9191
func toSelectableFields(broker *servicecatalog.ClusterServiceBroker) fields.Set {
92-
objectMetaFieldsSet := generic.ObjectMetaFieldsSet(&broker.ObjectMeta, true)
93-
return generic.MergeFieldsSets(objectMetaFieldsSet, nil)
92+
return generic.ObjectMetaFieldsSet(&broker.ObjectMeta, false)
9493
}
9594

9695
// GetAttrs returns labels and fields of a given object for filtering purposes.

pkg/registry/servicecatalog/clusterserviceclass/storage.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ func toSelectableFields(clusterServiceClass *servicecatalog.ClusterServiceClass)
100100
cscSpecificFieldsSet["spec.clusterServiceBrokerName"] = clusterServiceClass.Spec.ClusterServiceBrokerName
101101
cscSpecificFieldsSet["spec.externalName"] = clusterServiceClass.Spec.ExternalName
102102
cscSpecificFieldsSet["spec.externalID"] = clusterServiceClass.Spec.ExternalID
103-
return generic.AddObjectMetaFieldsSet(cscSpecificFieldsSet, &clusterServiceClass.ObjectMeta, true)
103+
return generic.AddObjectMetaFieldsSet(cscSpecificFieldsSet, &clusterServiceClass.ObjectMeta, false)
104104
}
105105

106106
// GetAttrs returns labels and fields of a given object for filtering purposes.

pkg/registry/servicecatalog/clusterserviceplan/storage.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ func toSelectableFields(servicePlan *servicecatalog.ClusterServicePlan) fields.S
9999
spSpecificFieldsSet["spec.clusterServiceClassRef.name"] = servicePlan.Spec.ClusterServiceClassRef.Name
100100
spSpecificFieldsSet["spec.externalName"] = servicePlan.Spec.ExternalName
101101
spSpecificFieldsSet["spec.externalID"] = servicePlan.Spec.ExternalID
102-
return generic.AddObjectMetaFieldsSet(spSpecificFieldsSet, &servicePlan.ObjectMeta, true)
102+
return generic.AddObjectMetaFieldsSet(spSpecificFieldsSet, &servicePlan.ObjectMeta, false)
103103
}
104104

105105
// GetAttrs returns labels and fields of a given object for filtering purposes.

pkg/registry/servicecatalog/instance/storage.go

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -90,23 +90,15 @@ func Match(label labels.Selector, field fields.Selector) storage.SelectionPredic
9090
func toSelectableFields(instance *servicecatalog.ServiceInstance) fields.Set {
9191
// If you add a new selectable field, you also need to modify
9292
// pkg/apis/servicecatalog/v1beta1/conversion[_test].go
93-
objectMetaFieldsSet := generic.ObjectMetaFieldsSet(&instance.ObjectMeta, true)
94-
9593
specFieldSet := make(fields.Set, 3)
96-
9794
if instance.Spec.ClusterServiceClassRef != nil {
9895
specFieldSet["spec.clusterServiceClassRef.name"] = instance.Spec.ClusterServiceClassRef.Name
9996
}
100-
10197
if instance.Spec.ClusterServicePlanRef != nil {
10298
specFieldSet["spec.clusterServicePlanRef.name"] = instance.Spec.ClusterServicePlanRef.Name
10399
}
104-
105-
if instance.Spec.ExternalID != "" {
106-
specFieldSet["spec.externalID"] = instance.Spec.ExternalID
107-
}
108-
109-
return generic.MergeFieldsSets(objectMetaFieldsSet, specFieldSet)
100+
specFieldSet["spec.externalID"] = instance.Spec.ExternalID
101+
return generic.AddObjectMetaFieldsSet(specFieldSet, &instance.ObjectMeta, true)
110102
}
111103

112104
// GetAttrs returns labels and fields of a given object for filtering purposes.

pkg/registry/servicecatalog/servicebroker/storage.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,7 @@ func Match(label labels.Selector, field fields.Selector) storage.SelectionPredic
8989

9090
// toSelectableFields returns a field set that represents the object for matching purposes.
9191
func toSelectableFields(broker *servicecatalog.ServiceBroker) fields.Set {
92-
objectMetaFieldsSet := generic.ObjectMetaFieldsSet(&broker.ObjectMeta, true)
93-
return generic.MergeFieldsSets(objectMetaFieldsSet, nil)
92+
return generic.ObjectMetaFieldsSet(&broker.ObjectMeta, true)
9493
}
9594

9695
// GetAttrs returns labels and fields of a given object for filtering purposes.

0 commit comments

Comments
 (0)