diff --git a/assets/translations/en-us.yaml b/assets/translations/en-us.yaml index 10a6e2c8fb..873fd6975b 100644 --- a/assets/translations/en-us.yaml +++ b/assets/translations/en-us.yaml @@ -1317,9 +1317,13 @@ workload: parallelism: label: Parallelism tip: The maximum number of pods the job should run at any given time. + startingDeadlineSeconds: + label: Starting Deadline Seconds + tip: The deadline in seconds for starting the job if it misses scheduled time successfulJobsHistoryLimit: label: Successful Job History Limit tip: The number of successful finished jobs to retain. + suspend: Suspend networking: dnsPolicy: label: DNS Policy @@ -1489,7 +1493,6 @@ workload: title: 'Storage' volumeName: Volume Name volumePath: Volume Path - typeDescriptions: apps.daemonset: DaemonSets run exactly one pod on every eligible node. When new nodes are added to the cluster, DaemonSets automatically deploy to them. Recommended for system-wide or vertically-scalable workloads that never need more than one pod per node. apps.deployment: 'Deployments run a scalable number of replicas of a pod distributed among the eligible nodes. Changes are rolled out incrementally and can be rolled back to the previous revision when needed. Recommended for stateless & horizontally-scalable workloads.' @@ -1500,6 +1503,12 @@ workload: activeDeadlineSeconds: label: Pod Active Deadline tip: The duration the pod may be active before the system will try to mark it failed and kill associated containers. + concurrencyPolicy: + label: Concurrency + options: + allow: Allow CronJobs to run concurrently + forbid: Skip next run if current run hasn't finished + replace: Replace run if current run hasn't finished maxSurge: label: Max Surge tip: The maximum number of pods allowed beyond the desired scale at any given time. diff --git a/edit/workload/Job.vue b/edit/workload/Job.vue index 39f641857e..6d1247d6df 100644 --- a/edit/workload/Job.vue +++ b/edit/workload/Job.vue @@ -29,19 +29,20 @@ export default { }, data() { const { - failedJobsHistoryLimit, successfulJobsHistoryLimit, suspend, schedule + failedJobsHistoryLimit, successfulJobsHistoryLimit, suspend = false, schedule } = this.value; if (this.type === WORKLOAD_TYPES.CRON_JOB) { if (!this.value.jobTemplate) { this.$set(this.value, 'jobTemplate', { spec: {} }); } + const { concurrencyPolicy = 'Allow', startingDeadlineSeconds } = this.value; const { completions, parallelism, backoffLimit, activeDeadlineSeconds } = this.value.jobTemplate.spec; return { - completions, parallelism, backoffLimit, activeDeadlineSeconds, failedJobsHistoryLimit, successfulJobsHistoryLimit, suspend, schedule + completions, parallelism, backoffLimit, activeDeadlineSeconds, failedJobsHistoryLimit, successfulJobsHistoryLimit, suspend, schedule, concurrencyPolicy, startingDeadlineSeconds }; } else { const { @@ -70,7 +71,6 @@ export default { parallelism: this.parallelism, backoffLimit: this.backoffLimit, activeDeadlineSeconds: this.activeDeadlineSeconds, - }; this.$emit('input', spec); @@ -80,7 +80,8 @@ export default { failedJobsHistoryLimit: this.failedJobsHistoryLimit, successfulJobsHistoryLimit: this.successfulJobsHistoryLimit, suspend: this.suspend, - schedule: this.schedule, + concurrencyPolicy: this.concurrencyPolicy, + startingDeadlineSeconds: this.startingDeadlineSeconds, jobTemplate: { ...this.value.jobTemplate, completions: this.completions, @@ -103,7 +104,7 @@ export default {