From c900c39e7bc119ebacdc79c2c0831f1865b35017 Mon Sep 17 00:00:00 2001
From: Steven Kreitzer <skre@skre.me>
Date: Tue, 27 Aug 2024 15:52:43 -0400
Subject: [PATCH] feat: allow pod replacement policy override

---
 pkg/upgrade/job/job.go | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/pkg/upgrade/job/job.go b/pkg/upgrade/job/job.go
index d4631a86..3a0bf1ae 100644
--- a/pkg/upgrade/job/job.go
+++ b/pkg/upgrade/job/job.go
@@ -27,6 +27,7 @@ const (
 	defaultKubectlImage            = "rancher/kubectl:v1.30.3"
 	defaultImagePullPolicy         = corev1.PullIfNotPresent
 	defaultTTLSecondsAfterFinished = int32(900)
+	defaultPodReplacementPolicy    = batchv1.PodReplacementPolicy("TerminatingOrFailed")
 )
 
 func allowUserDefinedSecurityContext(defaultValue bool) bool {
@@ -111,6 +112,13 @@ var (
 		}
 		return defaultValue
 	}(defaultTTLSecondsAfterFinished)
+
+	PodReplacementPolicy = func(defaultValue batchv1.PodReplacementPolicy) batchv1.PodReplacementPolicy {
+		if str := os.Getenv("SYSTEM_UPGRADE_JOB_POD_REPLACEMENT_POLICY"); str != "" {
+			return batchv1.PodReplacementPolicy(str)
+		}
+		return defaultValue
+	}(defaultPodReplacementPolicy)
 )
 
 var (
@@ -160,6 +168,7 @@ func New(plan *upgradeapiv1.Plan, node *corev1.Node, controllerName string) *bat
 			Labels:      jobLabels,
 		},
 		Spec: batchv1.JobSpec{
+			PodReplacementPolicy:    &PodReplacementPolicy,
 			BackoffLimit:            &BackoffLimit,
 			TTLSecondsAfterFinished: &TTLSecondsAfterFinished,
 			Template: corev1.PodTemplateSpec{
-- 
GitLab