diff --git a/locales/en/messages.po b/locales/en/messages.po index 46d7fdae36..8859dde6a8 100644 --- a/locales/en/messages.po +++ b/locales/en/messages.po @@ -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}" msgstr "Scale Deployment <0>{deploymentName}" #: 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}" +msgstr "Trigger CronJob <0>{cronjobName}" + #: 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" diff --git a/locales/fi/messages.po b/locales/fi/messages.po index 8e41f2b6a2..464a49bf9e 100644 --- a/locales/fi/messages.po +++ b/locales/fi/messages.po @@ -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}" 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}" +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 "" diff --git a/locales/ru/messages.po b/locales/ru/messages.po index adcbd19aed..0200d47b72 100644 --- a/locales/ru/messages.po +++ b/locales/ru/messages.po @@ -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}" msgstr "Масштабировать Deployment <0>{deploymentName}" #: 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}" +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 "" diff --git a/src/renderer/api/endpoints/cron-job.api.ts b/src/renderer/api/endpoints/cron-job.api.ts index e48a8636b8..887ec9833c 100644 --- a/src/renderer/api/endpoints/cron-job.api.ts +++ b/src/renderer/api/endpoints/cron-job.api.ts @@ -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) } diff --git a/src/renderer/api/endpoints/job.api.ts b/src/renderer/api/endpoints/job.api.ts index d4657605f6..6c6c1967c1 100644 --- a/src/renderer/api/endpoints/job.api.ts +++ b/src/renderer/api/endpoints/job.api.ts @@ -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; diff --git a/src/renderer/components/+workloads-cronjobs/cronjob-trigger-dialog.scss b/src/renderer/components/+workloads-cronjobs/cronjob-trigger-dialog.scss new file mode 100644 index 0000000000..ef52eebb08 --- /dev/null +++ b/src/renderer/components/+workloads-cronjobs/cronjob-trigger-dialog.scss @@ -0,0 +1,18 @@ +.CronJobTriggerDialog { + .Wizard { + .header { + span { + color: #a0a0a0; + white-space: nowrap; + text-overflow: ellipsis; + } + } + + .WizardStep { + .step-content { + min-height: 90px; + overflow: hidden; + } + } + } +} \ No newline at end of file diff --git a/src/renderer/components/+workloads-cronjobs/cronjob-trigger-dialog.tsx b/src/renderer/components/+workloads-cronjobs/cronjob-trigger-dialog.tsx new file mode 100644 index 0000000000..5075e2fe9c --- /dev/null +++ b/src/renderer/components/+workloads-cronjobs/cronjob-trigger-dialog.tsx @@ -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 { +} + +@observer +export class CronJobTriggerDialog extends Component { + @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 ( + <> +
+ Job name: +
+
+ this.jobName = v.toLowerCase()} + className="box grow" + /> +
+ + ) + } + + render() { + const { className, ...dialogProps } = this.props; + const cronjobName = this.cronjob ? this.cronjob.getName() : ""; + console.log(cronjobName); + const header = ( +
+ Trigger CronJob {cronjobName} +
+ ); + return ( + + + Trigger} + disabledNext={!this.ready} + > + {this.renderContents()} + + + + ); + } +} \ No newline at end of file diff --git a/src/renderer/components/+workloads-cronjobs/cronjob.store.ts b/src/renderer/components/+workloads-cronjobs/cronjob.store.ts index 9e75c25121..e8fa3719ae 100644 --- a/src/renderer/components/+workloads-cronjobs/cronjob.store.ts +++ b/src/renderer/components/+workloads-cronjobs/cronjob.store.ts @@ -9,13 +9,13 @@ export class CronJobStore extends KubeObjectStore { 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 diff --git a/src/renderer/components/+workloads-cronjobs/cronjobs.tsx b/src/renderer/components/+workloads-cronjobs/cronjobs.tsx index 4221302116..32a2dc50dc 100644 --- a/src/renderer/components/+workloads-cronjobs/cronjobs.tsx +++ b/src/renderer/components/+workloads-cronjobs/cronjobs.tsx @@ -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 { } export function CronJobMenu(props: KubeObjectMenuProps) { + const { object, toolbar } = props; return ( - + + CronJobTriggerDialog.open(object)}> + + Trigger + + ) } diff --git a/src/renderer/components/+workloads-overview/overview-workload-status.scss b/src/renderer/components/+workloads-overview/overview-workload-status.scss index c06ed5b4c8..4d47570973 100644 --- a/src/renderer/components/+workloads-overview/overview-workload-status.scss +++ b/src/renderer/components/+workloads-overview/overview-workload-status.scss @@ -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}; diff --git a/src/renderer/components/+workloads/workloads-mixins.scss b/src/renderer/components/+workloads/workloads-mixins.scss index 84bcca8219..8ba7f76665 100644 --- a/src/renderer/components/+workloads/workloads-mixins.scss +++ b/src/renderer/components/+workloads/workloads-mixins.scss @@ -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} { diff --git a/src/renderer/components/app.tsx b/src/renderer/components/app.tsx index abdef9b7f4..23e71e2be9 100755 --- a/src/renderer/components/app.tsx +++ b/src/renderer/components/app.tsx @@ -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 { +