Add +k8s:minimum validation tag

This commit is contained in:
helayoty
2025-11-27 01:25:02 +00:00
committed by Heba Elayoty
parent ac8fe6b94e
commit b75e665a7d
4 changed files with 14 additions and 1 deletions

View File

@@ -77,6 +77,7 @@ func Validate_GangSchedulingPolicy(ctx context.Context, op operation.Operation,
if earlyReturn {
return // do not proceed
}
errs = append(errs, validate.Minimum(ctx, op, fldPath, obj, oldObj, 0)...)
return
}(fldPath.Child("minCount"), &obj.MinCount, safe.Field(oldObj, func(oldObj *schedulingv1alpha1.GangSchedulingPolicy) *int32 { return &oldObj.MinCount }), oldObj != nil)...)

View File

@@ -161,7 +161,17 @@ func validatBasicSchedulingPolicy(policy *scheduling.BasicSchedulingPolicy, fldP
}
func validateGangSchedulingPolicy(policy *scheduling.GangSchedulingPolicy, fldPath *field.Path) field.ErrorList {
allErrs := apivalidation.ValidatePositiveField(int64(policy.MinCount), fldPath.Child("minCount"))
// To match the declarative validation behavior, we return Required for 0.
// Declarative validation treats 0 as "missing" via validate.RequiredValue()
// and returns early before checking the minimum constraint.
// For non-zero values, declarative validation returns early without any validation,
// so we don't mark them as covered.
var allErrs field.ErrorList
if policy.MinCount == 0 {
allErrs = append(allErrs, field.Required(fldPath.Child("minCount"), "").MarkCoveredByDeclarative())
} else if policy.MinCount < 0 {
allErrs = append(allErrs, apivalidation.ValidatePositiveField(int64(policy.MinCount), fldPath.Child("minCount")).WithOrigin("minimum").MarkCoveredByDeclarative()...)
}
return allErrs
}

View File

@@ -42,6 +42,7 @@ message GangSchedulingPolicy {
//
// +required
// +k8s:required
// +k8s:minimum=0
optional int32 minCount = 1;
}

View File

@@ -213,5 +213,6 @@ type GangSchedulingPolicy struct {
//
// +required
// +k8s:required
// +k8s:minimum=0
MinCount int32 `json:"minCount" protobuf:"varint,1,opt,name=minCount"`
}