From f38bc641194ab67b22da077502a95bcae66418cf Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 21 Sep 2025 18:12:25 -0400 Subject: [PATCH] feat: expose concurrency policy to kubernetes jobs --- plugins/scheduler-k3s/template.go | 17 +++++++++++++---- .../scheduler-k3s/templates/chart/cron-job.yaml | 2 +- plugins/scheduler-k3s/triggers.go | 10 ++++++---- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/plugins/scheduler-k3s/template.go b/plugins/scheduler-k3s/template.go index 17eafdde5..dcc6060d8 100644 --- a/plugins/scheduler-k3s/template.go +++ b/plugins/scheduler-k3s/template.go @@ -299,12 +299,21 @@ const ( ) type ProcessCron struct { - ID string `yaml:"id"` - Schedule string `yaml:"schedule"` - Suffix string `yaml:"suffix"` - Suspend bool `yaml:"suspend"` + ID string `yaml:"id"` + Schedule string `yaml:"schedule"` + Suffix string `yaml:"suffix"` + Suspend bool `yaml:"suspend"` + ConcurrencyPolicy ProcessCronConcurrencyPolicy `yaml:"concurrency_policy"` } +type ProcessCronConcurrencyPolicy string + +const ( + ProcessCronConcurrencyPolicy_Allow ProcessCronConcurrencyPolicy = "Allow" + ProcessCronConcurrencyPolicy_Forbid ProcessCronConcurrencyPolicy = "Forbid" + ProcessCronConcurrencyPolicy_Replace ProcessCronConcurrencyPolicy = "Replace" +) + type ProcessPortMap struct { ContainerPort int32 `yaml:"container_port"` HostPort int32 `yaml:"host_port"` diff --git a/plugins/scheduler-k3s/templates/chart/cron-job.yaml b/plugins/scheduler-k3s/templates/chart/cron-job.yaml index b5b4e8b88..102b3ce1e 100644 --- a/plugins/scheduler-k3s/templates/chart/cron-job.yaml +++ b/plugins/scheduler-k3s/templates/chart/cron-job.yaml @@ -26,7 +26,7 @@ metadata: name: {{ $.Values.global.app_name }}-cron-{{ $config.cron.suffix }} namespace: {{ $.Values.global.namespace }} spec: - concurrencyPolicy: Allow + concurrencyPolicy: {{ $config.cron.concurrency_policy }} failedJobsHistoryLimit: 10 jobTemplate: metadata: diff --git a/plugins/scheduler-k3s/triggers.go b/plugins/scheduler-k3s/triggers.go index 626f11a5d..1086a7163 100644 --- a/plugins/scheduler-k3s/triggers.go +++ b/plugins/scheduler-k3s/triggers.go @@ -699,14 +699,16 @@ func TriggerSchedulerDeploy(scheduler string, appName string, imageTag string) e return fmt.Errorf("Error getting process labels: %w", err) } + concurrencyPolicy := strings.ToUpper(cronTask.ConcurrencyPolicy) processValues := ProcessValues{ Args: words, Annotations: annotations, Cron: ProcessCron{ - ID: cronTask.ID, - Schedule: cronTask.Schedule, - Suffix: suffix, - Suspend: cronTask.Maintenance, + ID: cronTask.ID, + Schedule: cronTask.Schedule, + Suffix: suffix, + Suspend: cronTask.Maintenance, + ConcurrencyPolicy: ProcessCronConcurrencyPolicy(concurrencyPolicy), }, Labels: labels, ProcessType: ProcessType_Cron,