Scheduler: Pass the supported nodeSelectorOperators to the field.NotSupported

Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>
This commit is contained in:
Yuki Iwai 2023-05-09 02:46:37 +09:00
parent 50ce134595
commit 1ca8f84eed
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 {