diff --git a/src/js/utils/JobUtil.js b/src/js/utils/JobUtil.js index a941b4442a..bcb317b5e6 100644 --- a/src/js/utils/JobUtil.js +++ b/src/js/utils/JobUtil.js @@ -78,6 +78,15 @@ const JobUtil = { Object.assign(spec.run, { docker }); } + // default values for id and policy + let scheduleId = "default"; + let schedulePolicy = "ALLOW"; + // preserve id and concurrencyPolicy + if (Array.isArray(spec.schedules) && spec.schedules.length > 0) { + scheduleId = spec.schedules[0].id; + schedulePolicy = spec.schedules[0].concurrencyPolicy; + } + // Reset schedules spec.schedules = []; @@ -85,11 +94,11 @@ const JobUtil = { // defaults if (!schedule || schedule.runOnSchedule) { const { - id = "default", + id = scheduleId, enabled = true, cron, timezone, - concurrencyPolicy = "ALLOW", + concurrencyPolicy = schedulePolicy, startingDeadlineSeconds } = schedule || {}; diff --git a/src/js/utils/__tests__/JobUtil-test.js b/src/js/utils/__tests__/JobUtil-test.js index 2df2702255..188074e8d4 100644 --- a/src/js/utils/__tests__/JobUtil-test.js +++ b/src/js/utils/__tests__/JobUtil-test.js @@ -50,7 +50,50 @@ describe("JobUtil", function() { ]); }); - it("should remove schedule if deactivated", function() { + it("job schedule maintains id and policy", function() { + const job = JobUtil.createJobFromFormModel({ + general: { id: "test", cmd: "sleep 1000;" }, + schedule: { + id: "fluffy", + cron: "* * * * *", + enabled: true, + concurrencyPolicy: "FORBID", + runOnSchedule: true + } + }); + + expect(job.getSchedules()).toEqual([ + { + id: "fluffy", + cron: "* * * * *", + enabled: true, + concurrencyPolicy: "FORBID" + } + ]); + }); + + it("job schedule defaults concurrencyPolicy if not provided", function() { + const job = JobUtil.createJobFromFormModel({ + general: { id: "test", cmd: "sleep 1000;" }, + schedule: { + id: "fluffy", + cron: "* * * * *", + enabled: true, + runOnSchedule: true + } + }); + + expect(job.getSchedules()).toEqual([ + { + id: "fluffy", + cron: "* * * * *", + enabled: true, + concurrencyPolicy: "ALLOW" + } + ]); + }); + + it("removes schedule if deactivated", function() { const job = JobUtil.createJobFromFormModel({ general: { id: "test", cmd: "sleep 1000;" }, schedule: {