Refactor pod failure policy defaults

This commit is contained in:
carlory
2025-04-29 14:58:57 +08:00
parent 616d6d4e75
commit c6f652d5fe
3 changed files with 34 additions and 11 deletions

View File

@@ -59,17 +59,6 @@ func SetDefaults_Job(obj *batchv1.Job) {
if obj.Spec.Suspend == nil {
obj.Spec.Suspend = ptr.To(false)
}
if obj.Spec.PodFailurePolicy != nil {
for _, rule := range obj.Spec.PodFailurePolicy.Rules {
if rule.OnPodConditions != nil {
for i, pattern := range rule.OnPodConditions {
if pattern.Status == "" {
rule.OnPodConditions[i].Status = corev1.ConditionTrue
}
}
}
}
}
if utilfeature.DefaultFeatureGate.Enabled(features.JobPodReplacementPolicy) {
if obj.Spec.PodReplacementPolicy == nil {
if obj.Spec.PodFailurePolicy != nil {
@@ -98,3 +87,9 @@ func SetDefaults_CronJob(obj *batchv1.CronJob) {
obj.Spec.FailedJobsHistoryLimit = ptr.To[int32](1)
}
}
func SetDefaults_PodFailurePolicyOnPodConditionsPattern(obj *batchv1.PodFailurePolicyOnPodConditionsPattern) {
if obj.Status == "" {
obj.Status = corev1.ConditionTrue
}
}

View File

@@ -41,6 +41,15 @@ func RegisterDefaults(scheme *runtime.Scheme) error {
func SetObjectDefaults_CronJob(in *batchv1.CronJob) {
SetDefaults_CronJob(in)
if in.Spec.JobTemplate.Spec.PodFailurePolicy != nil {
for i := range in.Spec.JobTemplate.Spec.PodFailurePolicy.Rules {
a := &in.Spec.JobTemplate.Spec.PodFailurePolicy.Rules[i]
for j := range a.OnPodConditions {
b := &a.OnPodConditions[j]
SetDefaults_PodFailurePolicyOnPodConditionsPattern(b)
}
}
}
apiscorev1.SetDefaults_PodSpec(&in.Spec.JobTemplate.Spec.Template.Spec)
for i := range in.Spec.JobTemplate.Spec.Template.Spec.Volumes {
a := &in.Spec.JobTemplate.Spec.Template.Spec.Volumes[i]
@@ -350,6 +359,15 @@ func SetObjectDefaults_CronJobList(in *batchv1.CronJobList) {
func SetObjectDefaults_Job(in *batchv1.Job) {
SetDefaults_Job(in)
if in.Spec.PodFailurePolicy != nil {
for i := range in.Spec.PodFailurePolicy.Rules {
a := &in.Spec.PodFailurePolicy.Rules[i]
for j := range a.OnPodConditions {
b := &a.OnPodConditions[j]
SetDefaults_PodFailurePolicyOnPodConditionsPattern(b)
}
}
}
apiscorev1.SetDefaults_PodSpec(&in.Spec.Template.Spec)
for i := range in.Spec.Template.Spec.Volumes {
a := &in.Spec.Template.Spec.Volumes[i]

View File

@@ -25,6 +25,7 @@ import (
batchv1beta1 "k8s.io/api/batch/v1beta1"
v1 "k8s.io/api/core/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
batchv1 "k8s.io/kubernetes/pkg/apis/batch/v1"
corev1 "k8s.io/kubernetes/pkg/apis/core/v1"
)
@@ -39,6 +40,15 @@ func RegisterDefaults(scheme *runtime.Scheme) error {
func SetObjectDefaults_CronJob(in *batchv1beta1.CronJob) {
SetDefaults_CronJob(in)
if in.Spec.JobTemplate.Spec.PodFailurePolicy != nil {
for i := range in.Spec.JobTemplate.Spec.PodFailurePolicy.Rules {
a := &in.Spec.JobTemplate.Spec.PodFailurePolicy.Rules[i]
for j := range a.OnPodConditions {
b := &a.OnPodConditions[j]
batchv1.SetDefaults_PodFailurePolicyOnPodConditionsPattern(b)
}
}
}
corev1.SetDefaults_PodSpec(&in.Spec.JobTemplate.Spec.Template.Spec)
for i := range in.Spec.JobTemplate.Spec.Template.Spec.Volumes {
a := &in.Spec.JobTemplate.Spec.Template.Spec.Volumes[i]