mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-07-24 03:40:56 +00:00
Add +k8s:minimum validation tag
This commit is contained in:
@@ -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)...)
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -42,6 +42,7 @@ message GangSchedulingPolicy {
|
||||
//
|
||||
// +required
|
||||
// +k8s:required
|
||||
// +k8s:minimum=0
|
||||
optional int32 minCount = 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -213,5 +213,6 @@ type GangSchedulingPolicy struct {
|
||||
//
|
||||
// +required
|
||||
// +k8s:required
|
||||
// +k8s:minimum=0
|
||||
MinCount int32 `json:"minCount" protobuf:"varint,1,opt,name=minCount"`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user