From 1ca8f84eede93fa9b3577a07025ca90582b2ac46 Mon Sep 17 00:00:00 2001 From: Yuki Iwai Date: Tue, 9 May 2023 02:46:37 +0900 Subject: [PATCH] Scheduler: Pass the supported nodeSelectorOperators to the field.NotSupported Signed-off-by: Yuki Iwai --- .../scheduling/corev1/nodeaffinity/nodeaffinity.go | 11 ++++++++++- .../corev1/nodeaffinity/nodeaffinity_test.go | 10 ++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/staging/src/k8s.io/component-helpers/scheduling/corev1/nodeaffinity/nodeaffinity.go b/staging/src/k8s.io/component-helpers/scheduling/corev1/nodeaffinity/nodeaffinity.go index 27caf69b920..0e3b991636a 100644 --- a/staging/src/k8s.io/component-helpers/scheduling/corev1/nodeaffinity/nodeaffinity.go +++ b/staging/src/k8s.io/component-helpers/scheduling/corev1/nodeaffinity/nodeaffinity.go @@ -200,6 +200,15 @@ func (t *nodeSelectorTerm) match(nodeLabels labels.Set, nodeFields fields.Set) ( 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 // labels.Selector. func nodeSelectorRequirementsAsSelector(nsm []v1.NodeSelectorRequirement, path *field.Path) (labels.Selector, []error) { @@ -225,7 +234,7 @@ func nodeSelectorRequirementsAsSelector(nsm []v1.NodeSelectorRequirement, path * case v1.NodeSelectorOpLt: op = selection.LessThan default: - errs = append(errs, field.NotSupported(p.Child("operator"), expr.Operator, nil)) + errs = append(errs, field.NotSupported(p.Child("operator"), expr.Operator, validSelectorOperators)) continue } r, err := labels.NewRequirement(expr.Key, op, expr.Values, field.WithPath(p)) diff --git a/staging/src/k8s.io/component-helpers/scheduling/corev1/nodeaffinity/nodeaffinity_test.go b/staging/src/k8s.io/component-helpers/scheduling/corev1/nodeaffinity/nodeaffinity_test.go index dc0cee84c62..da771f361c3 100644 --- a/staging/src/k8s.io/component-helpers/scheduling/corev1/nodeaffinity/nodeaffinity_test.go +++ b/staging/src/k8s.io/component-helpers/scheduling/corev1/nodeaffinity/nodeaffinity_test.go @@ -346,6 +346,16 @@ func TestNodeSelectorRequirementsAsSelector(t *testing.T) { }}, 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 {