From 2984ef8b358a40cb1b22a1d2e569d7ba2f876155 Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Thu, 19 Oct 2023 08:52:10 +0200 Subject: [PATCH 1/3] Allow jobs to be manually unpaused in development mode Partly mitigates #859 --- bundle/config/mutator/process_target_mode.go | 6 ++--- .../mutator/process_target_mode_test.go | 24 ++++++++++++++++++- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/bundle/config/mutator/process_target_mode.go b/bundle/config/mutator/process_target_mode.go index c11bd1c5a6..b39e76ad85 100644 --- a/bundle/config/mutator/process_target_mode.go +++ b/bundle/config/mutator/process_target_mode.go @@ -47,13 +47,13 @@ func transformDevelopmentMode(b *bundle.Bundle) error { if r.Jobs[i].MaxConcurrentRuns == 0 { r.Jobs[i].MaxConcurrentRuns = developmentConcurrentRuns } - if r.Jobs[i].Schedule != nil { + if r.Jobs[i].Schedule != nil && r.Jobs[i].Schedule.PauseStatus != jobs.PauseStatusUnpaused { r.Jobs[i].Schedule.PauseStatus = jobs.PauseStatusPaused } - if r.Jobs[i].Continuous != nil { + if r.Jobs[i].Continuous != nil && r.Jobs[i].Schedule.PauseStatus != jobs.PauseStatusUnpaused { r.Jobs[i].Continuous.PauseStatus = jobs.PauseStatusPaused } - if r.Jobs[i].Trigger != nil { + if r.Jobs[i].Trigger != nil && r.Jobs[i].Schedule.PauseStatus != jobs.PauseStatusUnpaused { r.Jobs[i].Trigger.PauseStatus = jobs.PauseStatusPaused } } diff --git a/bundle/config/mutator/process_target_mode_test.go b/bundle/config/mutator/process_target_mode_test.go index a9da0b0f31..ccdab1eff0 100644 --- a/bundle/config/mutator/process_target_mode_test.go +++ b/bundle/config/mutator/process_target_mode_test.go @@ -45,7 +45,23 @@ func mockBundle(mode config.Mode) *bundle.Bundle { }, Resources: config.Resources{ Jobs: map[string]*resources.Job{ - "job1": {JobSettings: &jobs.JobSettings{Name: "job1"}}, + "job1": { + JobSettings: &jobs.JobSettings{ + Name: "job1", + Schedule: &jobs.CronSchedule{ + QuartzCronExpression: "* * * * *", + }, + }, + }, + "job2": { + JobSettings: &jobs.JobSettings{ + Name: "job2", + Schedule: &jobs.CronSchedule{ + QuartzCronExpression: "* * * * *", + PauseStatus: jobs.PauseStatusUnpaused, + }, + }, + }, }, Pipelines: map[string]*resources.Pipeline{ "pipeline1": {PipelineSpec: &pipelines.PipelineSpec{Name: "pipeline1"}}, @@ -82,6 +98,12 @@ func TestProcessTargetModeDevelopment(t *testing.T) { // Job 1 assert.Equal(t, "[dev lennart] job1", bundle.Config.Resources.Jobs["job1"].Name) assert.Equal(t, bundle.Config.Resources.Jobs["job1"].Tags["dev"], "lennart") + assert.Equal(t, bundle.Config.Resources.Jobs["job1"].Schedule.PauseStatus, jobs.PauseStatusPaused) + + // Job 2 + assert.Equal(t, "[dev lennart] job2", bundle.Config.Resources.Jobs["job2"].Name) + assert.Equal(t, bundle.Config.Resources.Jobs["job2"].Tags["dev"], "lennart") + assert.Equal(t, bundle.Config.Resources.Jobs["job2"].Schedule.PauseStatus, jobs.PauseStatusUnpaused) // Pipeline 1 assert.Equal(t, "[dev lennart] pipeline1", bundle.Config.Resources.Pipelines["pipeline1"].Name) From 00df9e7d3b9349d636ec0722f46526974c4a65a0 Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Sat, 21 Oct 2023 15:19:42 +0200 Subject: [PATCH 2/3] Fix test --- bundle/config/mutator/process_target_mode_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/bundle/config/mutator/process_target_mode_test.go b/bundle/config/mutator/process_target_mode_test.go index ccdab1eff0..f7e78da2d4 100644 --- a/bundle/config/mutator/process_target_mode_test.go +++ b/bundle/config/mutator/process_target_mode_test.go @@ -204,6 +204,7 @@ func TestProcessTargetModeProduction(t *testing.T) { } bundle.Config.Resources.Jobs["job1"].Permissions = permissions bundle.Config.Resources.Jobs["job1"].RunAs = &jobs.JobRunAs{UserName: "user@company.com"} + bundle.Config.Resources.Jobs["job2"].RunAs = &jobs.JobRunAs{UserName: "user@company.com"} bundle.Config.Resources.Pipelines["pipeline1"].Permissions = permissions bundle.Config.Resources.Experiments["experiment1"].Permissions = permissions bundle.Config.Resources.Experiments["experiment2"].Permissions = permissions From b32159f6e1a3986e6b754903dc7fa5da55fba6fa Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Sat, 11 Nov 2023 17:36:20 +0100 Subject: [PATCH 3/3] Add comment --- bundle/config/mutator/process_target_mode.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bundle/config/mutator/process_target_mode.go b/bundle/config/mutator/process_target_mode.go index b39e76ad85..3389d1075c 100644 --- a/bundle/config/mutator/process_target_mode.go +++ b/bundle/config/mutator/process_target_mode.go @@ -47,6 +47,10 @@ func transformDevelopmentMode(b *bundle.Bundle) error { if r.Jobs[i].MaxConcurrentRuns == 0 { r.Jobs[i].MaxConcurrentRuns = developmentConcurrentRuns } + + // Pause each job. As an exception, we don't pause jobs that are explicitly + // marked as "unpaused". This allows users to override the default behavior + // of the development mode. if r.Jobs[i].Schedule != nil && r.Jobs[i].Schedule.PauseStatus != jobs.PauseStatusUnpaused { r.Jobs[i].Schedule.PauseStatus = jobs.PauseStatusPaused }