From ce90eb2cc2f47e77063099cca5643ed458730dde Mon Sep 17 00:00:00 2001 From: Mike Spreitzer Date: Thu, 13 Jul 2023 01:21:56 -0400 Subject: [PATCH] Fix validation to use field.Forbidden instead of Required Co-authored-by: David Eads Signed-off-by: Mike Spreitzer --- pkg/apis/flowcontrol/validation/validation.go | 2 +- .../flowcontrol/validation/validation_test.go | 22 ++----------------- 2 files changed, 3 insertions(+), 21 deletions(-) diff --git a/pkg/apis/flowcontrol/validation/validation.go b/pkg/apis/flowcontrol/validation/validation.go index 0e70c85002a..66f8556f45e 100644 --- a/pkg/apis/flowcontrol/validation/validation.go +++ b/pkg/apis/flowcontrol/validation/validation.go @@ -396,7 +396,7 @@ func ValidatePriorityLevelConfigurationSpec(spec *flowcontrol.PriorityLevelConfi } case flowcontrol.PriorityLevelEnablementLimited: if spec.Exempt != nil { - allErrs = append(allErrs, field.Required(fldPath.Child("exempt"), "must be nil if the type is Limited")) + allErrs = append(allErrs, field.Forbidden(fldPath.Child("exempt"), "must be nil if the type is Limited")) } if spec.Limited == nil { diff --git a/pkg/apis/flowcontrol/validation/validation_test.go b/pkg/apis/flowcontrol/validation/validation_test.go index 14300a45913..393c355d568 100644 --- a/pkg/apis/flowcontrol/validation/validation_test.go +++ b/pkg/apis/flowcontrol/validation/validation_test.go @@ -828,24 +828,6 @@ func TestPriorityLevelConfigurationValidation(t *testing.T) { field.Invalid(field.NewPath("spec").Child("type"), flowcontrol.PriorityLevelEnablementLimited, "type must be 'Exempt' if and only if name is 'exempt'"), field.Invalid(field.NewPath("spec"), badSpec, "spec of 'exempt' except the 'spec.exempt' field must equal the fixed value"), }, - }, { - name: "limited must not set exempt priority level configuration for borrowing", - priorityLevelConfiguration: &flowcontrol.PriorityLevelConfiguration{ - ObjectMeta: metav1.ObjectMeta{ - Name: "broken-limited", - }, - Spec: flowcontrol.PriorityLevelConfigurationSpec{ - Type: flowcontrol.PriorityLevelEnablementLimited, - Exempt: &flowcontrol.ExemptPriorityLevelConfiguration{ - NominalConcurrencyShares: pointer.Int32(10), - LendablePercent: pointer.Int32(20), - }, - }, - }, - expectedErrors: field.ErrorList{ - field.Required(field.NewPath("spec").Child("exempt"), "must be nil if the type is Limited"), - field.Required(field.NewPath("spec").Child("limited"), "must not be empty when type is Limited"), - }, }, { name: "exempt priority level should have appropriate values for Exempt field", priorityLevelConfiguration: &flowcontrol.PriorityLevelConfiguration{ @@ -875,7 +857,7 @@ func TestPriorityLevelConfigurationValidation(t *testing.T) { priorityLevelConfiguration: exemptTypeRepurposed, expectedErrors: field.ErrorList{ field.Invalid(field.NewPath("spec").Child("type"), flowcontrol.PriorityLevelEnablementLimited, "type must be 'Exempt' if and only if name is 'exempt'"), - field.Required(field.NewPath("spec").Child("exempt"), "must be nil if the type is Limited"), + field.Forbidden(field.NewPath("spec").Child("exempt"), "must be nil if the type is Limited"), field.Invalid(field.NewPath("spec"), exemptTypeRepurposed.Spec, "spec of 'exempt' except the 'spec.exempt' field must equal the fixed value"), }, }, { @@ -911,7 +893,7 @@ func TestPriorityLevelConfigurationValidation(t *testing.T) { }, }, expectedErrors: field.ErrorList{ - field.Required(field.NewPath("spec").Child("exempt"), "must be nil if the type is Limited"), + field.Forbidden(field.NewPath("spec").Child("exempt"), "must be nil if the type is Limited"), field.Required(field.NewPath("spec").Child("limited"), "must not be empty when type is Limited"), }, }, {