services fielse selector for type

Change-Id: I57e934c520713713d4b0616a52519ec51c49e0fc
This commit is contained in:
Antonio Ojea 2024-03-12 17:30:08 +00:00
parent 7d78fb791d
commit 8f306d8046
3 changed files with 19 additions and 1 deletions

View File

@ -497,7 +497,8 @@ func AddFieldLabelConversionsForService(scheme *runtime.Scheme) error {
switch label {
case "metadata.namespace",
"metadata.name",
"spec.clusterIP":
"spec.clusterIP",
"spec.type":
return label, value, nil
default:
return "", "", fmt.Errorf("field label not supported: %s", label)

View File

@ -194,6 +194,7 @@ func SelectableFields(service *api.Service) fields.Set {
objectMetaFieldsSet := generic.ObjectMetaFieldsSet(&service.ObjectMeta, true)
serviceSpecificFieldsSet := fields.Set{
"spec.clusterIP": service.Spec.ClusterIP,
"spec.type": string(service.Spec.Type),
}
return generic.MergeFieldsSets(objectMetaFieldsSet, serviceSpecificFieldsSet)
}

View File

@ -844,6 +844,22 @@ func TestMatchService(t *testing.T) {
fieldSelector: fields.ParseSelectorOrDie("metadata.namespace=nomatch"),
expectMatch: false,
},
{
name: "match on loadbalancer type service",
in: &api.Service{
Spec: api.ServiceSpec{Type: api.ServiceTypeLoadBalancer},
},
fieldSelector: fields.ParseSelectorOrDie("spec.type=LoadBalancer"),
expectMatch: true,
},
{
name: "no match on nodeport type service",
in: &api.Service{
Spec: api.ServiceSpec{Type: api.ServiceTypeNodePort},
},
fieldSelector: fields.ParseSelectorOrDie("spec.type=LoadBalancer"),
expectMatch: false,
},
{
name: "match on headless service",
in: &api.Service{