Add more test cases for SuccessCriteriaMet
Cleanup error messages in the new code Add validation for the Job controller fields
This commit is contained in:
@@ -518,6 +518,16 @@ func validateJobStatus(job *batch.Job, fldPath *field.Path, opts JobStatusValida
|
||||
allErrs = append(allErrs, field.Invalid(fldPath.Child("completionTime"), status.CompletionTime, "completionTime cannot be set before startTime"))
|
||||
}
|
||||
}
|
||||
if opts.RejectFailedJobWithoutFailureTarget {
|
||||
if IsJobFailed(job) && !isJobFailureTarget(job) {
|
||||
allErrs = append(allErrs, field.Invalid(fldPath.Child("conditions"), field.OmitValueType{}, "cannot set Failed=True condition without the FailureTarget=true condition"))
|
||||
}
|
||||
}
|
||||
if opts.RejectCompleteJobWithoutSuccessCriteriaMet {
|
||||
if IsJobComplete(job) && !isJobSuccessCriteriaMet(job) {
|
||||
allErrs = append(allErrs, field.Invalid(fldPath.Child("conditions"), field.OmitValueType{}, "cannot set Complete=True condition without the SuccessCriteriaMet=true condition"))
|
||||
}
|
||||
}
|
||||
isJobFinished := IsJobFinished(job)
|
||||
if opts.RejectFinishedJobWithActivePods {
|
||||
if status.Active > 0 && isJobFinished {
|
||||
@@ -568,6 +578,16 @@ func validateJobStatus(job *batch.Job, fldPath *field.Path, opts JobStatusValida
|
||||
}
|
||||
}
|
||||
}
|
||||
if opts.RejectFinishedJobWithTerminatingPods {
|
||||
if status.Terminating != nil && *status.Terminating > 0 && isJobFinished {
|
||||
allErrs = append(allErrs, field.Invalid(fldPath.Child("terminating"), status.Terminating, "terminating>0 is invalid for finished job"))
|
||||
}
|
||||
}
|
||||
if opts.RejectMoreReadyThanActivePods {
|
||||
if status.Ready != nil && *status.Ready > status.Active {
|
||||
allErrs = append(allErrs, field.Invalid(fldPath.Child("ready"), *status.Ready, "cannot set more ready pods than active"))
|
||||
}
|
||||
}
|
||||
if !opts.AllowForSuccessCriteriaMetInExtendedScope && ptr.Deref(job.Spec.CompletionMode, batch.NonIndexedCompletion) != batch.IndexedCompletion && isJobSuccessCriteriaMet(job) {
|
||||
allErrs = append(allErrs, field.Invalid(fldPath.Child("conditions"), field.OmitValueType{}, "cannot set SuccessCriteriaMet to NonIndexed Job"))
|
||||
}
|
||||
@@ -1005,6 +1025,8 @@ type JobStatusValidationOptions struct {
|
||||
RejectFailedIndexesOverlappingCompleted bool
|
||||
RejectCompletedIndexesForNonIndexedJob bool
|
||||
RejectFailedIndexesForNoBackoffLimitPerIndex bool
|
||||
RejectFailedJobWithoutFailureTarget bool
|
||||
RejectCompleteJobWithoutSuccessCriteriaMet bool
|
||||
RejectFinishedJobWithActivePods bool
|
||||
RejectFinishedJobWithoutStartTime bool
|
||||
RejectFinishedJobWithUncountedTerminatedPods bool
|
||||
@@ -1016,4 +1038,6 @@ type JobStatusValidationOptions struct {
|
||||
RejectCompleteJobWithFailedCondition bool
|
||||
RejectCompleteJobWithFailureTargetCondition bool
|
||||
AllowForSuccessCriteriaMetInExtendedScope bool
|
||||
RejectMoreReadyThanActivePods bool
|
||||
RejectFinishedJobWithTerminatingPods bool
|
||||
}
|
||||
|
Reference in New Issue
Block a user