mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Add cronjob trigger (#694)
Signed-off-by: Nox <aurelien.gaston@krondor.fr> Co-authored-by: Lauri Nevala <lauri.nevala@gmail.com>
This commit is contained in:
parent
0f11b03692
commit
8f778ea379
@ -79,7 +79,7 @@ msgid "Account Name"
|
||||
msgstr "Account Name"
|
||||
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:51
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:46
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:50
|
||||
msgid "Active"
|
||||
msgstr "Active"
|
||||
|
||||
@ -173,7 +173,7 @@ msgstr "Affinities"
|
||||
#: src/renderer/components/+user-management-roles/roles.tsx:35
|
||||
#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:38
|
||||
#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:38
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:48
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:52
|
||||
#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:50
|
||||
#: src/renderer/components/+workloads-deployments/deployments.tsx:63
|
||||
#: src/renderer/components/+workloads-jobs/jobs.tsx:41
|
||||
@ -675,7 +675,7 @@ msgstr "Created at"
|
||||
msgid "Credentials Ref"
|
||||
msgstr "Credentials Ref"
|
||||
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:40
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:44
|
||||
msgid "Cron Jobs"
|
||||
msgstr "Cron Jobs"
|
||||
|
||||
@ -1154,6 +1154,10 @@ msgstr "Item list is empty"
|
||||
msgid "JSON Path"
|
||||
msgstr "JSON Path"
|
||||
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjob-trigger-dialog.tsx:91
|
||||
msgid "Job name"
|
||||
msgstr "Job name"
|
||||
|
||||
#: src/renderer/components/+workloads/workloads.tsx:69
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:62
|
||||
#: src/renderer/components/+workloads-jobs/jobs.tsx:36
|
||||
@ -1218,7 +1222,7 @@ msgid "Last Failure Time"
|
||||
msgstr "Last Failure Time"
|
||||
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:57
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:47
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:51
|
||||
msgid "Last schedule"
|
||||
msgstr "Last schedule"
|
||||
|
||||
@ -1448,7 +1452,7 @@ msgstr "Mounts"
|
||||
#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:35
|
||||
#: src/renderer/components/+user-management-service-accounts/service-accounts-secret.tsx:29
|
||||
#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:36
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:41
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:45
|
||||
#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:45
|
||||
#: src/renderer/components/+workloads-deployments/deployments.tsx:58
|
||||
#: src/renderer/components/+workloads-jobs/jobs.tsx:37
|
||||
@ -1498,7 +1502,7 @@ msgstr "Names"
|
||||
#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:37
|
||||
#: src/renderer/components/+user-management-service-accounts/create-service-account-dialog.tsx:79
|
||||
#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:37
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:43
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:47
|
||||
#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:46
|
||||
#: src/renderer/components/+workloads-deployments/deployments.tsx:59
|
||||
#: src/renderer/components/+workloads-jobs/jobs.tsx:38
|
||||
@ -2155,7 +2159,7 @@ msgid "Scale Deployment <0>{deploymentName}</0>"
|
||||
msgstr "Scale Deployment <0>{deploymentName}</0>"
|
||||
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:46
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:44
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:48
|
||||
msgid "Schedule"
|
||||
msgstr "Schedule"
|
||||
|
||||
@ -2413,7 +2417,7 @@ msgid "Supplemental Groups"
|
||||
msgstr "Supplemental Groups"
|
||||
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:54
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:45
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:49
|
||||
msgid "Suspend"
|
||||
msgstr "Suspend"
|
||||
|
||||
@ -2482,6 +2486,16 @@ msgstr "Tolerations"
|
||||
msgid "Transmit"
|
||||
msgstr "Transmit"
|
||||
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjob-trigger-dialog.tsx:107
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:79
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:80
|
||||
msgid "Trigger"
|
||||
msgstr "Trigger"
|
||||
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjob-trigger-dialog.tsx:103
|
||||
msgid "Trigger CronJob <0>{cronjobName}</0>"
|
||||
msgstr "Trigger CronJob <0>{cronjobName}</0>"
|
||||
|
||||
#: src/renderer/components/+cluster/cluster-issues.tsx:102
|
||||
#: src/renderer/components/+config-secrets/secret-details.tsx:74
|
||||
#: src/renderer/components/+config-secrets/secrets.tsx:45
|
||||
@ -2717,7 +2731,7 @@ msgid "listKind"
|
||||
msgstr "listKind"
|
||||
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:48
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:57
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:61
|
||||
msgid "never"
|
||||
msgstr "never"
|
||||
|
||||
|
||||
@ -79,7 +79,7 @@ msgid "Account Name"
|
||||
msgstr ""
|
||||
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:51
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:46
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:50
|
||||
msgid "Active"
|
||||
msgstr ""
|
||||
|
||||
@ -173,7 +173,7 @@ msgstr ""
|
||||
#: src/renderer/components/+user-management-roles/roles.tsx:35
|
||||
#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:38
|
||||
#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:38
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:48
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:52
|
||||
#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:50
|
||||
#: src/renderer/components/+workloads-deployments/deployments.tsx:63
|
||||
#: src/renderer/components/+workloads-jobs/jobs.tsx:41
|
||||
@ -671,7 +671,7 @@ msgstr ""
|
||||
msgid "Credentials Ref"
|
||||
msgstr ""
|
||||
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:40
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:44
|
||||
msgid "Cron Jobs"
|
||||
msgstr ""
|
||||
|
||||
@ -1145,6 +1145,10 @@ msgstr ""
|
||||
msgid "JSON Path"
|
||||
msgstr ""
|
||||
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjob-trigger-dialog.tsx:91
|
||||
msgid "Job name"
|
||||
msgstr ""
|
||||
|
||||
#: src/renderer/components/+workloads/workloads.tsx:69
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:62
|
||||
#: src/renderer/components/+workloads-jobs/jobs.tsx:36
|
||||
@ -1209,7 +1213,7 @@ msgid "Last Failure Time"
|
||||
msgstr ""
|
||||
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:57
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:47
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:51
|
||||
msgid "Last schedule"
|
||||
msgstr ""
|
||||
|
||||
@ -1439,7 +1443,7 @@ msgstr ""
|
||||
#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:35
|
||||
#: src/renderer/components/+user-management-service-accounts/service-accounts-secret.tsx:29
|
||||
#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:36
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:41
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:45
|
||||
#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:45
|
||||
#: src/renderer/components/+workloads-deployments/deployments.tsx:58
|
||||
#: src/renderer/components/+workloads-jobs/jobs.tsx:37
|
||||
@ -1489,7 +1493,7 @@ msgstr ""
|
||||
#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:37
|
||||
#: src/renderer/components/+user-management-service-accounts/create-service-account-dialog.tsx:79
|
||||
#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:37
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:43
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:47
|
||||
#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:46
|
||||
#: src/renderer/components/+workloads-deployments/deployments.tsx:59
|
||||
#: src/renderer/components/+workloads-jobs/jobs.tsx:38
|
||||
@ -2138,7 +2142,7 @@ msgid "Scale Deployment <0>{deploymentName}</0>"
|
||||
msgstr ""
|
||||
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:46
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:44
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:48
|
||||
msgid "Schedule"
|
||||
msgstr ""
|
||||
|
||||
@ -2396,7 +2400,7 @@ msgid "Supplemental Groups"
|
||||
msgstr ""
|
||||
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:54
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:45
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:49
|
||||
msgid "Suspend"
|
||||
msgstr ""
|
||||
|
||||
@ -2465,6 +2469,16 @@ msgstr ""
|
||||
msgid "Transmit"
|
||||
msgstr ""
|
||||
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjob-trigger-dialog.tsx:107
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:79
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:80
|
||||
msgid "Trigger"
|
||||
msgstr ""
|
||||
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjob-trigger-dialog.tsx:103
|
||||
msgid "Trigger CronJob <0>{cronjobName}</0>"
|
||||
msgstr ""
|
||||
|
||||
#: src/renderer/components/+cluster/cluster-issues.tsx:102
|
||||
#: src/renderer/components/+config-secrets/secret-details.tsx:74
|
||||
#: src/renderer/components/+config-secrets/secrets.tsx:45
|
||||
@ -2700,7 +2714,7 @@ msgid "listKind"
|
||||
msgstr ""
|
||||
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:48
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:57
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:61
|
||||
msgid "never"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@ -80,7 +80,7 @@ msgid "Account Name"
|
||||
msgstr "Название аккаунта"
|
||||
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:51
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:46
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:50
|
||||
msgid "Active"
|
||||
msgstr "Активный"
|
||||
|
||||
@ -174,7 +174,7 @@ msgstr "Аффинитеты"
|
||||
#: src/renderer/components/+user-management-roles/roles.tsx:35
|
||||
#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:38
|
||||
#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:38
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:48
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:52
|
||||
#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:50
|
||||
#: src/renderer/components/+workloads-deployments/deployments.tsx:63
|
||||
#: src/renderer/components/+workloads-jobs/jobs.tsx:41
|
||||
@ -676,7 +676,7 @@ msgstr "Создано"
|
||||
msgid "Credentials Ref"
|
||||
msgstr "Credentials Ref"
|
||||
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:40
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:44
|
||||
msgid "Cron Jobs"
|
||||
msgstr ""
|
||||
|
||||
@ -1155,6 +1155,10 @@ msgstr "Список пуст"
|
||||
msgid "JSON Path"
|
||||
msgstr ""
|
||||
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjob-trigger-dialog.tsx:91
|
||||
msgid "Job name"
|
||||
msgstr ""
|
||||
|
||||
#: src/renderer/components/+workloads/workloads.tsx:69
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:62
|
||||
#: src/renderer/components/+workloads-jobs/jobs.tsx:36
|
||||
@ -1219,7 +1223,7 @@ msgid "Last Failure Time"
|
||||
msgstr "Время последнего сбоя"
|
||||
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:57
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:47
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:51
|
||||
msgid "Last schedule"
|
||||
msgstr "Последний запуск"
|
||||
|
||||
@ -1449,7 +1453,7 @@ msgstr "Установки"
|
||||
#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:35
|
||||
#: src/renderer/components/+user-management-service-accounts/service-accounts-secret.tsx:29
|
||||
#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:36
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:41
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:45
|
||||
#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:45
|
||||
#: src/renderer/components/+workloads-deployments/deployments.tsx:58
|
||||
#: src/renderer/components/+workloads-jobs/jobs.tsx:37
|
||||
@ -1499,7 +1503,7 @@ msgstr ""
|
||||
#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:37
|
||||
#: src/renderer/components/+user-management-service-accounts/create-service-account-dialog.tsx:79
|
||||
#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:37
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:43
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:47
|
||||
#: src/renderer/components/+workloads-daemonsets/daemonsets.tsx:46
|
||||
#: src/renderer/components/+workloads-deployments/deployments.tsx:59
|
||||
#: src/renderer/components/+workloads-jobs/jobs.tsx:38
|
||||
@ -2156,7 +2160,7 @@ msgid "Scale Deployment <0>{deploymentName}</0>"
|
||||
msgstr "Масштабировать Deployment <0>{deploymentName}</0>"
|
||||
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:46
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:44
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:48
|
||||
msgid "Schedule"
|
||||
msgstr "Расписание"
|
||||
|
||||
@ -2414,7 +2418,7 @@ msgid "Supplemental Groups"
|
||||
msgstr ""
|
||||
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:54
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:45
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:49
|
||||
msgid "Suspend"
|
||||
msgstr "Заморозка"
|
||||
|
||||
@ -2483,6 +2487,16 @@ msgstr "Толерантности"
|
||||
msgid "Transmit"
|
||||
msgstr "Транзит"
|
||||
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjob-trigger-dialog.tsx:107
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:79
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:80
|
||||
msgid "Trigger"
|
||||
msgstr ""
|
||||
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjob-trigger-dialog.tsx:103
|
||||
msgid "Trigger CronJob <0>{cronjobName}</0>"
|
||||
msgstr ""
|
||||
|
||||
#: src/renderer/components/+cluster/cluster-issues.tsx:102
|
||||
#: src/renderer/components/+config-secrets/secret-details.tsx:74
|
||||
#: src/renderer/components/+config-secrets/secrets.tsx:45
|
||||
@ -2718,7 +2732,7 @@ msgid "listKind"
|
||||
msgstr ""
|
||||
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:48
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:57
|
||||
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:61
|
||||
msgid "never"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@ -32,6 +32,12 @@ export class CronJob extends KubeObject {
|
||||
jobTemplate: {
|
||||
metadata: {
|
||||
creationTimestamp?: string;
|
||||
labels?: {
|
||||
[key: string]: string;
|
||||
};
|
||||
annotations?: {
|
||||
[key: string]: string;
|
||||
};
|
||||
};
|
||||
spec: {
|
||||
template: {
|
||||
@ -53,7 +59,7 @@ export class CronJob extends KubeObject {
|
||||
failedJobsHistoryLimit: number;
|
||||
}
|
||||
status: {
|
||||
lastScheduleTime: string;
|
||||
lastScheduleTime?: string;
|
||||
}
|
||||
|
||||
getSuspendFlag() {
|
||||
@ -61,6 +67,7 @@ export class CronJob extends KubeObject {
|
||||
}
|
||||
|
||||
getLastScheduleTime() {
|
||||
if (!this.status.lastScheduleTime) return "-"
|
||||
const diff = moment().diff(this.status.lastScheduleTime)
|
||||
return formatDuration(diff, true)
|
||||
}
|
||||
|
||||
@ -13,7 +13,7 @@ export class Job extends WorkloadKubeObject {
|
||||
parallelism?: number;
|
||||
completions?: number;
|
||||
backoffLimit?: number;
|
||||
selector: {
|
||||
selector?: {
|
||||
matchLabels: {
|
||||
[name: string]: string;
|
||||
};
|
||||
@ -21,8 +21,11 @@ export class Job extends WorkloadKubeObject {
|
||||
template: {
|
||||
metadata: {
|
||||
creationTimestamp?: string;
|
||||
labels: {
|
||||
name: string;
|
||||
labels?: {
|
||||
[name: string]: string;
|
||||
};
|
||||
annotations?: {
|
||||
[name: string]: string;
|
||||
};
|
||||
};
|
||||
spec: {
|
||||
@ -35,7 +38,7 @@ export class Job extends WorkloadKubeObject {
|
||||
nodeSelector?: {
|
||||
[selector: string]: string;
|
||||
};
|
||||
tolerations: {
|
||||
tolerations?: {
|
||||
key: string;
|
||||
operator: string;
|
||||
effect: string;
|
||||
|
||||
@ -0,0 +1,18 @@
|
||||
.CronJobTriggerDialog {
|
||||
.Wizard {
|
||||
.header {
|
||||
span {
|
||||
color: #a0a0a0;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
}
|
||||
|
||||
.WizardStep {
|
||||
.step-content {
|
||||
min-height: 90px;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,128 @@
|
||||
import "./cronjob-trigger-dialog.scss";
|
||||
|
||||
import React, { Component } from "react";
|
||||
import { observable } from "mobx";
|
||||
import { observer } from "mobx-react";
|
||||
import { Trans } from "@lingui/macro";
|
||||
import { Dialog, DialogProps } from "../dialog";
|
||||
import { Wizard, WizardStep } from "../wizard";
|
||||
import { CronJob, cronJobApi, jobApi, Job } from "../../api/endpoints";
|
||||
import { Notifications } from "../notifications";
|
||||
import { cssNames } from "../../utils";
|
||||
import { Input } from "../input";
|
||||
import { systemName, maxLength } from "../input/input.validators";
|
||||
|
||||
interface Props extends Partial<DialogProps> {
|
||||
}
|
||||
|
||||
@observer
|
||||
export class CronJobTriggerDialog extends Component<Props> {
|
||||
@observable static isOpen = false;
|
||||
@observable static data: CronJob = null;
|
||||
|
||||
@observable jobName = "";
|
||||
|
||||
@observable ready = false;
|
||||
|
||||
static open(cronjob: CronJob) {
|
||||
CronJobTriggerDialog.isOpen = true;
|
||||
CronJobTriggerDialog.data = cronjob;
|
||||
}
|
||||
|
||||
static close() {
|
||||
CronJobTriggerDialog.isOpen = false;
|
||||
}
|
||||
|
||||
get cronjob() {
|
||||
return CronJobTriggerDialog.data;
|
||||
}
|
||||
|
||||
close = () => {
|
||||
CronJobTriggerDialog.close();
|
||||
}
|
||||
|
||||
onOpen = async () => {
|
||||
const { cronjob } = this;
|
||||
this.jobName = cronjob ? cronjob.getName() + "-manual-" + Math.random().toString(36).slice(2, 7) : "";
|
||||
this.jobName = this.jobName.slice(0, 63);
|
||||
this.ready = true;
|
||||
}
|
||||
|
||||
onClose = () => {
|
||||
this.ready = false;
|
||||
}
|
||||
|
||||
trigger = async () => {
|
||||
const { cronjob } = this;
|
||||
const { close } = this;
|
||||
try {
|
||||
const cronjobDefinition = await cronJobApi.get({
|
||||
name: cronjob.getName(),
|
||||
namespace: cronjob.getNs()
|
||||
});
|
||||
|
||||
await jobApi.create({
|
||||
name: this.jobName,
|
||||
namespace: cronjob.getNs()
|
||||
}, {
|
||||
spec: cronjobDefinition.spec.jobTemplate.spec
|
||||
});
|
||||
|
||||
close();
|
||||
} catch (err) {
|
||||
Notifications.error(err);
|
||||
}
|
||||
}
|
||||
|
||||
renderContents() {
|
||||
return (
|
||||
<>
|
||||
<div className="flex gaps">
|
||||
<Trans>Job name</Trans>:
|
||||
</div>
|
||||
<div className="flex gaps">
|
||||
<Input
|
||||
required autoFocus
|
||||
placeholder={this.jobName}
|
||||
validators={[systemName, maxLength]}
|
||||
maxLength={63}
|
||||
value={this.jobName} onChange={v => this.jobName = v.toLowerCase()}
|
||||
className="box grow"
|
||||
/>
|
||||
</div>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
render() {
|
||||
const { className, ...dialogProps } = this.props;
|
||||
const cronjobName = this.cronjob ? this.cronjob.getName() : "";
|
||||
console.log(cronjobName);
|
||||
const header = (
|
||||
<h5>
|
||||
<Trans>Trigger CronJob <span>{cronjobName}</span></Trans>
|
||||
</h5>
|
||||
);
|
||||
return (
|
||||
<Dialog
|
||||
{...dialogProps}
|
||||
isOpen={CronJobTriggerDialog.isOpen}
|
||||
className={cssNames("CronJobTriggerDialog", className)}
|
||||
onOpen={this.onOpen}
|
||||
onClose={this.onClose}
|
||||
close={this.close}
|
||||
>
|
||||
<Wizard header={header} done={this.close}>
|
||||
<WizardStep
|
||||
contentClass="flex gaps column"
|
||||
next={this.trigger}
|
||||
nextLabel={<Trans>Trigger</Trans>}
|
||||
disabledNext={!this.ready}
|
||||
>
|
||||
{this.renderContents()}
|
||||
</WizardStep>
|
||||
</Wizard>
|
||||
</Dialog>
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -9,13 +9,13 @@ export class CronJobStore extends KubeObjectStore<CronJob> {
|
||||
api = cronJobApi
|
||||
|
||||
getStatuses(cronJobs?: CronJob[]) {
|
||||
const status = { failed: 0, running: 0 }
|
||||
const status = { suspended: 0, scheduled: 0 }
|
||||
cronJobs.forEach(cronJob => {
|
||||
if (cronJob.spec.suspend) {
|
||||
status.failed++
|
||||
status.suspended++
|
||||
}
|
||||
else {
|
||||
status.running++
|
||||
status.scheduled++
|
||||
}
|
||||
})
|
||||
return status
|
||||
|
||||
@ -3,8 +3,10 @@ import "./cronjobs.scss";
|
||||
import React from "react";
|
||||
import { observer } from "mobx-react";
|
||||
import { RouteComponentProps } from "react-router";
|
||||
import { Trans } from "@lingui/macro";
|
||||
import { t, Trans } from "@lingui/macro";
|
||||
import { CronJob, cronJobApi } from "../../api/endpoints/cron-job.api";
|
||||
import { MenuItem } from "../menu";
|
||||
import { Icon } from "../icon";
|
||||
import { cronJobStore } from "./cronjob.store";
|
||||
import { jobStore } from "../+workloads-jobs/job.store";
|
||||
import { eventStore } from "../+events/event.store";
|
||||
@ -12,7 +14,9 @@ import { KubeObjectMenu, KubeObjectMenuProps } from "../kube-object/kube-object-
|
||||
import { ICronJobsRouteParams } from "../+workloads";
|
||||
import { KubeObjectListLayout } from "../kube-object";
|
||||
import { KubeEventIcon } from "../+events/kube-event-icon";
|
||||
import { _i18n } from "../../i18n";
|
||||
import { apiManager } from "../../api/api-manager";
|
||||
import { CronJobTriggerDialog } from "./cronjob-trigger-dialog";
|
||||
|
||||
enum sortBy {
|
||||
name = "name",
|
||||
@ -79,8 +83,14 @@ export class CronJobs extends React.Component<Props> {
|
||||
}
|
||||
|
||||
export function CronJobMenu(props: KubeObjectMenuProps<CronJob>) {
|
||||
const { object, toolbar } = props;
|
||||
return (
|
||||
<KubeObjectMenu {...props}/>
|
||||
<KubeObjectMenu {...props}>
|
||||
<MenuItem onClick={() => CronJobTriggerDialog.open(object)}>
|
||||
<Icon material="play_circle_filled" title={_i18n._(t`Trigger`)} interactive={toolbar}/>
|
||||
<span className="title"><Trans>Trigger</Trans></span>
|
||||
</MenuItem>
|
||||
</KubeObjectMenu>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@ -3,6 +3,8 @@
|
||||
--workload-status-pending: #{$pod-status-pending-color};
|
||||
--workload-status-evicted: #{$pod-status-evicted-color};
|
||||
--workload-status-succeeded: #{$pod-status-succeeded-color};
|
||||
--workload-status-scheduled: #{$cronjob-scheduled};
|
||||
--workload-status-suspended: #{$cronjob-suspended};
|
||||
--workload-status-failed: #{$pod-status-failed-color};
|
||||
--workload-status-terminated: #{$pod-status-terminated-color};
|
||||
--workload-status-unknown: #{$pod-status-unknown-color};
|
||||
|
||||
@ -26,6 +26,10 @@ $deployment-replicafailure: $colorError;
|
||||
$job-complete: $colorSuccess;
|
||||
$job-failed: $colorError;
|
||||
|
||||
// Cronjob
|
||||
$cronjob-scheduled: $colorSuccess;
|
||||
$cronjob-suspended: $colorTerminated;
|
||||
|
||||
// Pod Statuses
|
||||
$pod-status-color-list: (
|
||||
running: $pod-status-running-color,
|
||||
@ -48,6 +52,12 @@ $job-condition-color-list: (
|
||||
failed: $job-failed,
|
||||
);
|
||||
|
||||
// Cronjob Conditions
|
||||
$cronjob-condition-color-list: (
|
||||
scheduled: $cronjob-scheduled,
|
||||
suspended: $cronjob-suspended,
|
||||
);
|
||||
|
||||
@mixin pod-status-bgs {
|
||||
@each $status, $color in $pod-status-color-list {
|
||||
&.#{$status} {
|
||||
|
||||
@ -25,6 +25,7 @@ import { KubeObjectDetails } from "./kube-object/kube-object-details";
|
||||
import { AddRoleBindingDialog } from "./+user-management-roles-bindings";
|
||||
import { PodLogsDialog } from "./+workloads-pods/pod-logs-dialog";
|
||||
import { DeploymentScaleDialog } from "./+workloads-deployments/deployment-scale-dialog";
|
||||
import { CronJobTriggerDialog } from "./+workloads-cronjobs/cronjob-trigger-dialog";
|
||||
import { CustomResources } from "./+custom-resources/custom-resources";
|
||||
import { crdRoute } from "./+custom-resources";
|
||||
import { isAllowedResource } from "../../common/rbac";
|
||||
@ -80,6 +81,7 @@ export class App extends React.Component {
|
||||
<AddRoleBindingDialog/>
|
||||
<PodLogsDialog/>
|
||||
<DeploymentScaleDialog/>
|
||||
<CronJobTriggerDialog/>
|
||||
</ErrorBoundary>
|
||||
</Router>
|
||||
</I18nProvider>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user