Merge pull request #118015 from tenzen-y/list-supprted-operators

Scheduler: Pass the supported nodeSelectorOperators to the field.NotSupported
This commit is contained in:
Kubernetes Prow Robot 2023-05-15 11:05:39 -07:00 committed by GitHub
commit 23ea6996d2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 1 deletions

View File

@ -200,6 +200,15 @@ func (t *nodeSelectorTerm) match(nodeLabels labels.Set, nodeFields fields.Set) (
return true, nil return true, nil
} }
var validSelectorOperators = []string{
string(v1.NodeSelectorOpIn),
string(v1.NodeSelectorOpNotIn),
string(v1.NodeSelectorOpExists),
string(v1.NodeSelectorOpDoesNotExist),
string(v1.NodeSelectorOpGt),
string(v1.NodeSelectorOpLt),
}
// nodeSelectorRequirementsAsSelector converts the []NodeSelectorRequirement api type into a struct that implements // nodeSelectorRequirementsAsSelector converts the []NodeSelectorRequirement api type into a struct that implements
// labels.Selector. // labels.Selector.
func nodeSelectorRequirementsAsSelector(nsm []v1.NodeSelectorRequirement, path *field.Path) (labels.Selector, []error) { func nodeSelectorRequirementsAsSelector(nsm []v1.NodeSelectorRequirement, path *field.Path) (labels.Selector, []error) {
@ -225,7 +234,7 @@ func nodeSelectorRequirementsAsSelector(nsm []v1.NodeSelectorRequirement, path *
case v1.NodeSelectorOpLt: case v1.NodeSelectorOpLt:
op = selection.LessThan op = selection.LessThan
default: default:
errs = append(errs, field.NotSupported(p.Child("operator"), expr.Operator, nil)) errs = append(errs, field.NotSupported(p.Child("operator"), expr.Operator, validSelectorOperators))
continue continue
} }
r, err := labels.NewRequirement(expr.Key, op, expr.Values, field.WithPath(p)) r, err := labels.NewRequirement(expr.Key, op, expr.Values, field.WithPath(p))

View File

@ -346,6 +346,16 @@ func TestNodeSelectorRequirementsAsSelector(t *testing.T) {
}}, }},
out: mustParse("bar<7"), out: mustParse("bar<7"),
}, },
{
in: []v1.NodeSelectorRequirement{{
Key: "baz",
Operator: "invalid",
Values: []string{"5"},
}},
wantErr: []error{
field.NotSupported(field.NewPath("root").Index(0).Child("operator"), v1.NodeSelectorOperator("invalid"), validSelectorOperators),
},
},
} }
for i, tc := range tc { for i, tc := range tc {