Added MatchFields to NodeSelectorTerm.
Signed-off-by: Da K. Ma <klaus1982.cn@gmail.com>
This commit is contained in:
@@ -2997,7 +2997,40 @@ func ValidateNodeSelectorRequirement(rq core.NodeSelectorRequirement, fldPath *f
|
||||
default:
|
||||
allErrs = append(allErrs, field.Invalid(fldPath.Child("operator"), rq.Operator, "not a valid selector operator"))
|
||||
}
|
||||
|
||||
allErrs = append(allErrs, unversionedvalidation.ValidateLabelName(rq.Key, fldPath.Child("key"))...)
|
||||
|
||||
return allErrs
|
||||
}
|
||||
|
||||
var nodeFieldSelectorValidators = map[string]func(string, bool) []string{
|
||||
core.ObjectNameField: ValidateNodeName,
|
||||
}
|
||||
|
||||
// ValidateNodeFieldSelectorRequirement tests that the specified NodeSelectorRequirement fields has valid data
|
||||
func ValidateNodeFieldSelectorRequirement(req core.NodeSelectorRequirement, fldPath *field.Path) field.ErrorList {
|
||||
allErrs := field.ErrorList{}
|
||||
|
||||
switch req.Operator {
|
||||
case core.NodeSelectorOpIn, core.NodeSelectorOpNotIn:
|
||||
if len(req.Values) != 1 {
|
||||
allErrs = append(allErrs, field.Required(fldPath.Child("values"),
|
||||
"must be only one value when `operator` is 'In' or 'NotIn' for node field selector"))
|
||||
}
|
||||
default:
|
||||
allErrs = append(allErrs, field.Invalid(fldPath.Child("operator"), req.Operator, "not a valid selector operator"))
|
||||
}
|
||||
|
||||
if vf, found := nodeFieldSelectorValidators[req.Key]; !found {
|
||||
allErrs = append(allErrs, field.Invalid(fldPath.Child("key"), req.Key, "not a valid field selector key"))
|
||||
} else {
|
||||
for i, v := range req.Values {
|
||||
for _, msg := range vf(v, false) {
|
||||
allErrs = append(allErrs, field.Invalid(fldPath.Child("values").Index(i), v, msg))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return allErrs
|
||||
}
|
||||
|
||||
@@ -3008,6 +3041,11 @@ func ValidateNodeSelectorTerm(term core.NodeSelectorTerm, fldPath *field.Path) f
|
||||
for j, req := range term.MatchExpressions {
|
||||
allErrs = append(allErrs, ValidateNodeSelectorRequirement(req, fldPath.Child("matchExpressions").Index(j))...)
|
||||
}
|
||||
|
||||
for j, req := range term.MatchFields {
|
||||
allErrs = append(allErrs, ValidateNodeFieldSelectorRequirement(req, fldPath.Child("matchFields").Index(j))...)
|
||||
}
|
||||
|
||||
return allErrs
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user