mirror of https://github.com/rancher/dashboard.git
166 lines
5.6 KiB
Vue
166 lines
5.6 KiB
Vue
<script>
|
|
import { WORKLOAD_TYPES } from '@/config/types';
|
|
import UnitInput from '@/components/form/UnitInput';
|
|
import LabeledInput from '@/components/form/LabeledInput';
|
|
import RadioGroup from '@/components/form/RadioGroup';
|
|
|
|
export default {
|
|
components: {
|
|
UnitInput, LabeledInput, RadioGroup
|
|
},
|
|
props: {
|
|
value: {
|
|
type: Object,
|
|
default: () => {
|
|
return {};
|
|
}
|
|
},
|
|
type: {
|
|
type: String,
|
|
default: WORKLOAD_TYPES.JOB
|
|
}
|
|
},
|
|
data() {
|
|
const {
|
|
failedJobsHistoryLimit, successfulJobsHistoryLimit, suspend, schedule
|
|
} = this.value;
|
|
|
|
if (this.type === WORKLOAD_TYPES.CRON_JOB) {
|
|
if (!this.value.jobTemplate) {
|
|
this.$set(this.value, 'jobTemplate', { spec: {} });
|
|
}
|
|
const {
|
|
completions, parallelism, backOffLimit, activeDeadlineSeconds
|
|
} = this.value.jobTemplate.spec;
|
|
|
|
return {
|
|
completions, parallelism, backOffLimit, activeDeadlineSeconds, failedJobsHistoryLimit, successfulJobsHistoryLimit, suspend, schedule
|
|
};
|
|
} else {
|
|
const {
|
|
completions, parallelism, backOffLimit, activeDeadlineSeconds
|
|
} = this.value;
|
|
|
|
return {
|
|
completions, parallelism, backOffLimit, activeDeadlineSeconds, failedJobsHistoryLimit, successfulJobsHistoryLimit, suspend, schedule
|
|
};
|
|
}
|
|
},
|
|
computed: {
|
|
isCronJob() {
|
|
return this.type === WORKLOAD_TYPES.CRON_JOB;
|
|
}
|
|
},
|
|
methods: {
|
|
update() {
|
|
if (this.type === WORKLOAD_TYPES.JOB) {
|
|
const spec = {
|
|
...this.value,
|
|
suspend: this.suspend,
|
|
schedule: this.schedule,
|
|
completions: this.completions,
|
|
parallelism: this.parallelism,
|
|
backOffLimit: this.backOffLimit,
|
|
activeDeadlineSeconds: this.activeDeadlineSeconds,
|
|
|
|
};
|
|
|
|
this.$emit('input', spec);
|
|
} else {
|
|
const spec = {
|
|
...this.value,
|
|
failedJobsHistoryLimit: this.failedJobsHistoryLimit,
|
|
successfulJobsHistoryLimit: this.successfulJobsHistoryLimit,
|
|
suspend: this.suspend,
|
|
schedule: this.schedule,
|
|
jobTemplate: {
|
|
...this.value.jobTemplate,
|
|
completions: this.completions,
|
|
parallelism: this.parallelism,
|
|
backOffLimit: this.backOffLimit,
|
|
activeDeadlineSeconds: this.activeDeadlineSeconds
|
|
}
|
|
};
|
|
|
|
this.$emit('input', spec);
|
|
}
|
|
}
|
|
}
|
|
};
|
|
</script>
|
|
|
|
<template>
|
|
<form @input="update">
|
|
<div class="row">
|
|
<div class="col span-6">
|
|
<UnitInput v-model="completions" :suffix="completions===1 ? 'Time' : 'Times'">
|
|
<template v-slot:label>
|
|
<label :style="{'color':'var(--input-label)'}">
|
|
Completions
|
|
<i v-tooltip="'The number of successfully finished pods the job should be run with.'" class="icon icon-info" style="font-size: 14px" />
|
|
</label>
|
|
</template>
|
|
</UnitInput>
|
|
</div>
|
|
<div class="col span-6">
|
|
<UnitInput v-model="parallelism" class="col span-6" :suffix="parallelism===1 ? 'Time' : 'Times'">
|
|
<template v-slot:label>
|
|
<label :style="{'color':'var(--input-label)'}">
|
|
Parallelism
|
|
<i v-tooltip="'The maximum number of pods the job should run at any given time.'" class="icon icon-info" style="font-size: 14px" />
|
|
</label>
|
|
</template>
|
|
</UnitInput>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col span-6">
|
|
<UnitInput v-model="backOffLimit" :suffix="backOffLimit===1 ? 'Time' : 'Times'">
|
|
<template v-slot:label>
|
|
<label :style="{'color':'var(--input-label)'}">
|
|
Back Off Limit
|
|
<i v-tooltip="'The number of retries before marking this job failed.'" class="icon icon-info" style="font-size: 14px" />
|
|
</label>
|
|
</template>
|
|
</UnitInput>
|
|
</div>
|
|
<div class="col span-6">
|
|
<UnitInput v-model="activeDeadlineSeconds" :suffix="activeDeadlineSeconds===1 ? 'Second' : 'Seconds'">
|
|
<template v-slot:label>
|
|
<label :style="{'color':'var(--input-label)'}">
|
|
Active Deadline
|
|
<i v-tooltip="'The duration that the job may be active before the system tries to terminate it.'" class="icon icon-info" style="font-size: 14px" />
|
|
</label>
|
|
</template>
|
|
</UnitInput>
|
|
</div>
|
|
</div>
|
|
<template v-if="isCronJob">
|
|
<div class="row">
|
|
<div class="col span-6">
|
|
<LabeledInput v-model="successfulJobsHistoryLimit">
|
|
<template v-slot:label>
|
|
<label :style="{'color':'var(--input-label)'}">
|
|
Successful Job History Limit
|
|
<i v-tooltip="'The number of successful finished jobs to retain.'" class="icon icon-info" style="font-size: 14px" />
|
|
</label>
|
|
</template>
|
|
</LabeledInput>
|
|
</div>
|
|
<div class="col span-6">
|
|
<LabeledInput v-model="failedJobsHistoryLimit">
|
|
<template v-slot:label>
|
|
<label :style="{'color':'var(--input-label)'}">
|
|
Failed Job History Limit
|
|
<i v-tooltip="'The number of failed finished jobs to retain.'" class="icon icon-info" style="font-size: 14px" />
|
|
</label>
|
|
</template>
|
|
</LabeledInput>
|
|
</div>
|
|
</div>
|
|
<span>Suspend</span>
|
|
<RadioGroup v-model="suspend" row :options="[true, false]" :labels="['Yes', 'No']" />
|
|
</template>
|
|
</form>
|
|
</template>
|