1
0
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:
Nox 2020-08-25 09:55:12 +02:00 committed by GitHub
parent 0f11b03692
commit 8f778ea379
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 259 additions and 37 deletions

View File

@ -79,7 +79,7 @@ msgid "Account Name"
msgstr "Account Name" msgstr "Account Name"
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:51 #: 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" msgid "Active"
msgstr "Active" msgstr "Active"
@ -173,7 +173,7 @@ msgstr "Affinities"
#: src/renderer/components/+user-management-roles/roles.tsx:35 #: 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-roles-bindings/role-bindings.tsx:38
#: src/renderer/components/+user-management-service-accounts/service-accounts.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-daemonsets/daemonsets.tsx:50
#: src/renderer/components/+workloads-deployments/deployments.tsx:63 #: src/renderer/components/+workloads-deployments/deployments.tsx:63
#: src/renderer/components/+workloads-jobs/jobs.tsx:41 #: src/renderer/components/+workloads-jobs/jobs.tsx:41
@ -675,7 +675,7 @@ msgstr "Created at"
msgid "Credentials Ref" msgid "Credentials Ref"
msgstr "Credentials Ref" msgstr "Credentials Ref"
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:40 #: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:44
msgid "Cron Jobs" msgid "Cron Jobs"
msgstr "Cron Jobs" msgstr "Cron Jobs"
@ -1154,6 +1154,10 @@ msgstr "Item list is empty"
msgid "JSON Path" msgid "JSON Path"
msgstr "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/workloads.tsx:69
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:62 #: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:62
#: src/renderer/components/+workloads-jobs/jobs.tsx:36 #: src/renderer/components/+workloads-jobs/jobs.tsx:36
@ -1218,7 +1222,7 @@ msgid "Last Failure Time"
msgstr "Last Failure Time" msgstr "Last Failure Time"
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:57 #: 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" msgid "Last schedule"
msgstr "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-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-secret.tsx:29
#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:36 #: 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-daemonsets/daemonsets.tsx:45
#: src/renderer/components/+workloads-deployments/deployments.tsx:58 #: src/renderer/components/+workloads-deployments/deployments.tsx:58
#: src/renderer/components/+workloads-jobs/jobs.tsx:37 #: 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-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/create-service-account-dialog.tsx:79
#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:37 #: 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-daemonsets/daemonsets.tsx:46
#: src/renderer/components/+workloads-deployments/deployments.tsx:59 #: src/renderer/components/+workloads-deployments/deployments.tsx:59
#: src/renderer/components/+workloads-jobs/jobs.tsx:38 #: src/renderer/components/+workloads-jobs/jobs.tsx:38
@ -2155,7 +2159,7 @@ msgid "Scale Deployment <0>{deploymentName}</0>"
msgstr "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/cronjob-details.tsx:46
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:44 #: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:48
msgid "Schedule" msgid "Schedule"
msgstr "Schedule" msgstr "Schedule"
@ -2413,7 +2417,7 @@ msgid "Supplemental Groups"
msgstr "Supplemental Groups" msgstr "Supplemental Groups"
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:54 #: 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" msgid "Suspend"
msgstr "Suspend" msgstr "Suspend"
@ -2482,6 +2486,16 @@ msgstr "Tolerations"
msgid "Transmit" msgid "Transmit"
msgstr "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/+cluster/cluster-issues.tsx:102
#: src/renderer/components/+config-secrets/secret-details.tsx:74 #: src/renderer/components/+config-secrets/secret-details.tsx:74
#: src/renderer/components/+config-secrets/secrets.tsx:45 #: src/renderer/components/+config-secrets/secrets.tsx:45
@ -2717,7 +2731,7 @@ msgid "listKind"
msgstr "listKind" msgstr "listKind"
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:48 #: 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" msgid "never"
msgstr "never" msgstr "never"

View File

@ -79,7 +79,7 @@ msgid "Account Name"
msgstr "" msgstr ""
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:51 #: 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" msgid "Active"
msgstr "" msgstr ""
@ -173,7 +173,7 @@ msgstr ""
#: src/renderer/components/+user-management-roles/roles.tsx:35 #: 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-roles-bindings/role-bindings.tsx:38
#: src/renderer/components/+user-management-service-accounts/service-accounts.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-daemonsets/daemonsets.tsx:50
#: src/renderer/components/+workloads-deployments/deployments.tsx:63 #: src/renderer/components/+workloads-deployments/deployments.tsx:63
#: src/renderer/components/+workloads-jobs/jobs.tsx:41 #: src/renderer/components/+workloads-jobs/jobs.tsx:41
@ -671,7 +671,7 @@ msgstr ""
msgid "Credentials Ref" msgid "Credentials Ref"
msgstr "" msgstr ""
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:40 #: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:44
msgid "Cron Jobs" msgid "Cron Jobs"
msgstr "" msgstr ""
@ -1145,6 +1145,10 @@ msgstr ""
msgid "JSON Path" msgid "JSON Path"
msgstr "" 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/workloads.tsx:69
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:62 #: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:62
#: src/renderer/components/+workloads-jobs/jobs.tsx:36 #: src/renderer/components/+workloads-jobs/jobs.tsx:36
@ -1209,7 +1213,7 @@ msgid "Last Failure Time"
msgstr "" msgstr ""
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:57 #: 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" msgid "Last schedule"
msgstr "" msgstr ""
@ -1439,7 +1443,7 @@ msgstr ""
#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:35 #: 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-secret.tsx:29
#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:36 #: 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-daemonsets/daemonsets.tsx:45
#: src/renderer/components/+workloads-deployments/deployments.tsx:58 #: src/renderer/components/+workloads-deployments/deployments.tsx:58
#: src/renderer/components/+workloads-jobs/jobs.tsx:37 #: 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-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/create-service-account-dialog.tsx:79
#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:37 #: 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-daemonsets/daemonsets.tsx:46
#: src/renderer/components/+workloads-deployments/deployments.tsx:59 #: src/renderer/components/+workloads-deployments/deployments.tsx:59
#: src/renderer/components/+workloads-jobs/jobs.tsx:38 #: src/renderer/components/+workloads-jobs/jobs.tsx:38
@ -2138,7 +2142,7 @@ msgid "Scale Deployment <0>{deploymentName}</0>"
msgstr "" msgstr ""
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:46 #: 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" msgid "Schedule"
msgstr "" msgstr ""
@ -2396,7 +2400,7 @@ msgid "Supplemental Groups"
msgstr "" msgstr ""
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:54 #: 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" msgid "Suspend"
msgstr "" msgstr ""
@ -2465,6 +2469,16 @@ msgstr ""
msgid "Transmit" msgid "Transmit"
msgstr "" 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/+cluster/cluster-issues.tsx:102
#: src/renderer/components/+config-secrets/secret-details.tsx:74 #: src/renderer/components/+config-secrets/secret-details.tsx:74
#: src/renderer/components/+config-secrets/secrets.tsx:45 #: src/renderer/components/+config-secrets/secrets.tsx:45
@ -2700,7 +2714,7 @@ msgid "listKind"
msgstr "" msgstr ""
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:48 #: 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" msgid "never"
msgstr "" msgstr ""

View File

@ -80,7 +80,7 @@ msgid "Account Name"
msgstr "Название аккаунта" msgstr "Название аккаунта"
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:51 #: 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" msgid "Active"
msgstr "Активный" msgstr "Активный"
@ -174,7 +174,7 @@ msgstr "Аффинитеты"
#: src/renderer/components/+user-management-roles/roles.tsx:35 #: 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-roles-bindings/role-bindings.tsx:38
#: src/renderer/components/+user-management-service-accounts/service-accounts.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-daemonsets/daemonsets.tsx:50
#: src/renderer/components/+workloads-deployments/deployments.tsx:63 #: src/renderer/components/+workloads-deployments/deployments.tsx:63
#: src/renderer/components/+workloads-jobs/jobs.tsx:41 #: src/renderer/components/+workloads-jobs/jobs.tsx:41
@ -676,7 +676,7 @@ msgstr "Создано"
msgid "Credentials Ref" msgid "Credentials Ref"
msgstr "Credentials Ref" msgstr "Credentials Ref"
#: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:40 #: src/renderer/components/+workloads-cronjobs/cronjobs.tsx:44
msgid "Cron Jobs" msgid "Cron Jobs"
msgstr "" msgstr ""
@ -1155,6 +1155,10 @@ msgstr "Список пуст"
msgid "JSON Path" msgid "JSON Path"
msgstr "" 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/workloads.tsx:69
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:62 #: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:62
#: src/renderer/components/+workloads-jobs/jobs.tsx:36 #: src/renderer/components/+workloads-jobs/jobs.tsx:36
@ -1219,7 +1223,7 @@ msgid "Last Failure Time"
msgstr "Время последнего сбоя" msgstr "Время последнего сбоя"
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:57 #: 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" msgid "Last schedule"
msgstr "Последний запуск" msgstr "Последний запуск"
@ -1449,7 +1453,7 @@ msgstr "Установки"
#: src/renderer/components/+user-management-roles-bindings/role-bindings.tsx:35 #: 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-secret.tsx:29
#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:36 #: 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-daemonsets/daemonsets.tsx:45
#: src/renderer/components/+workloads-deployments/deployments.tsx:58 #: src/renderer/components/+workloads-deployments/deployments.tsx:58
#: src/renderer/components/+workloads-jobs/jobs.tsx:37 #: 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-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/create-service-account-dialog.tsx:79
#: src/renderer/components/+user-management-service-accounts/service-accounts.tsx:37 #: 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-daemonsets/daemonsets.tsx:46
#: src/renderer/components/+workloads-deployments/deployments.tsx:59 #: src/renderer/components/+workloads-deployments/deployments.tsx:59
#: src/renderer/components/+workloads-jobs/jobs.tsx:38 #: src/renderer/components/+workloads-jobs/jobs.tsx:38
@ -2156,7 +2160,7 @@ msgid "Scale Deployment <0>{deploymentName}</0>"
msgstr "Масштабировать Deployment <0>{deploymentName}</0>" msgstr "Масштабировать Deployment <0>{deploymentName}</0>"
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:46 #: 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" msgid "Schedule"
msgstr "Расписание" msgstr "Расписание"
@ -2414,7 +2418,7 @@ msgid "Supplemental Groups"
msgstr "" msgstr ""
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:54 #: 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" msgid "Suspend"
msgstr "Заморозка" msgstr "Заморозка"
@ -2483,6 +2487,16 @@ msgstr "Толерантности"
msgid "Transmit" msgid "Transmit"
msgstr "Транзит" 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/+cluster/cluster-issues.tsx:102
#: src/renderer/components/+config-secrets/secret-details.tsx:74 #: src/renderer/components/+config-secrets/secret-details.tsx:74
#: src/renderer/components/+config-secrets/secrets.tsx:45 #: src/renderer/components/+config-secrets/secrets.tsx:45
@ -2718,7 +2732,7 @@ msgid "listKind"
msgstr "" msgstr ""
#: src/renderer/components/+workloads-cronjobs/cronjob-details.tsx:48 #: 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" msgid "never"
msgstr "" msgstr ""

View File

@ -32,6 +32,12 @@ export class CronJob extends KubeObject {
jobTemplate: { jobTemplate: {
metadata: { metadata: {
creationTimestamp?: string; creationTimestamp?: string;
labels?: {
[key: string]: string;
};
annotations?: {
[key: string]: string;
};
}; };
spec: { spec: {
template: { template: {
@ -53,7 +59,7 @@ export class CronJob extends KubeObject {
failedJobsHistoryLimit: number; failedJobsHistoryLimit: number;
} }
status: { status: {
lastScheduleTime: string; lastScheduleTime?: string;
} }
getSuspendFlag() { getSuspendFlag() {
@ -61,6 +67,7 @@ export class CronJob extends KubeObject {
} }
getLastScheduleTime() { getLastScheduleTime() {
if (!this.status.lastScheduleTime) return "-"
const diff = moment().diff(this.status.lastScheduleTime) const diff = moment().diff(this.status.lastScheduleTime)
return formatDuration(diff, true) return formatDuration(diff, true)
} }

View File

@ -13,7 +13,7 @@ export class Job extends WorkloadKubeObject {
parallelism?: number; parallelism?: number;
completions?: number; completions?: number;
backoffLimit?: number; backoffLimit?: number;
selector: { selector?: {
matchLabels: { matchLabels: {
[name: string]: string; [name: string]: string;
}; };
@ -21,8 +21,11 @@ export class Job extends WorkloadKubeObject {
template: { template: {
metadata: { metadata: {
creationTimestamp?: string; creationTimestamp?: string;
labels: { labels?: {
name: string; [name: string]: string;
};
annotations?: {
[name: string]: string;
}; };
}; };
spec: { spec: {
@ -35,7 +38,7 @@ export class Job extends WorkloadKubeObject {
nodeSelector?: { nodeSelector?: {
[selector: string]: string; [selector: string]: string;
}; };
tolerations: { tolerations?: {
key: string; key: string;
operator: string; operator: string;
effect: string; effect: string;

View File

@ -0,0 +1,18 @@
.CronJobTriggerDialog {
.Wizard {
.header {
span {
color: #a0a0a0;
white-space: nowrap;
text-overflow: ellipsis;
}
}
.WizardStep {
.step-content {
min-height: 90px;
overflow: hidden;
}
}
}
}

View File

@ -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>
);
}
}

View File

@ -9,13 +9,13 @@ export class CronJobStore extends KubeObjectStore<CronJob> {
api = cronJobApi api = cronJobApi
getStatuses(cronJobs?: CronJob[]) { getStatuses(cronJobs?: CronJob[]) {
const status = { failed: 0, running: 0 } const status = { suspended: 0, scheduled: 0 }
cronJobs.forEach(cronJob => { cronJobs.forEach(cronJob => {
if (cronJob.spec.suspend) { if (cronJob.spec.suspend) {
status.failed++ status.suspended++
} }
else { else {
status.running++ status.scheduled++
} }
}) })
return status return status

View File

@ -3,8 +3,10 @@ import "./cronjobs.scss";
import React from "react"; import React from "react";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import { RouteComponentProps } from "react-router"; 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 { CronJob, cronJobApi } from "../../api/endpoints/cron-job.api";
import { MenuItem } from "../menu";
import { Icon } from "../icon";
import { cronJobStore } from "./cronjob.store"; import { cronJobStore } from "./cronjob.store";
import { jobStore } from "../+workloads-jobs/job.store"; import { jobStore } from "../+workloads-jobs/job.store";
import { eventStore } from "../+events/event.store"; import { eventStore } from "../+events/event.store";
@ -12,7 +14,9 @@ import { KubeObjectMenu, KubeObjectMenuProps } from "../kube-object/kube-object-
import { ICronJobsRouteParams } from "../+workloads"; import { ICronJobsRouteParams } from "../+workloads";
import { KubeObjectListLayout } from "../kube-object"; import { KubeObjectListLayout } from "../kube-object";
import { KubeEventIcon } from "../+events/kube-event-icon"; import { KubeEventIcon } from "../+events/kube-event-icon";
import { _i18n } from "../../i18n";
import { apiManager } from "../../api/api-manager"; import { apiManager } from "../../api/api-manager";
import { CronJobTriggerDialog } from "./cronjob-trigger-dialog";
enum sortBy { enum sortBy {
name = "name", name = "name",
@ -79,8 +83,14 @@ export class CronJobs extends React.Component<Props> {
} }
export function CronJobMenu(props: KubeObjectMenuProps<CronJob>) { export function CronJobMenu(props: KubeObjectMenuProps<CronJob>) {
const { object, toolbar } = props;
return ( 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>
) )
} }

View File

@ -3,6 +3,8 @@
--workload-status-pending: #{$pod-status-pending-color}; --workload-status-pending: #{$pod-status-pending-color};
--workload-status-evicted: #{$pod-status-evicted-color}; --workload-status-evicted: #{$pod-status-evicted-color};
--workload-status-succeeded: #{$pod-status-succeeded-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-failed: #{$pod-status-failed-color};
--workload-status-terminated: #{$pod-status-terminated-color}; --workload-status-terminated: #{$pod-status-terminated-color};
--workload-status-unknown: #{$pod-status-unknown-color}; --workload-status-unknown: #{$pod-status-unknown-color};

View File

@ -26,6 +26,10 @@ $deployment-replicafailure: $colorError;
$job-complete: $colorSuccess; $job-complete: $colorSuccess;
$job-failed: $colorError; $job-failed: $colorError;
// Cronjob
$cronjob-scheduled: $colorSuccess;
$cronjob-suspended: $colorTerminated;
// Pod Statuses // Pod Statuses
$pod-status-color-list: ( $pod-status-color-list: (
running: $pod-status-running-color, running: $pod-status-running-color,
@ -48,6 +52,12 @@ $job-condition-color-list: (
failed: $job-failed, failed: $job-failed,
); );
// Cronjob Conditions
$cronjob-condition-color-list: (
scheduled: $cronjob-scheduled,
suspended: $cronjob-suspended,
);
@mixin pod-status-bgs { @mixin pod-status-bgs {
@each $status, $color in $pod-status-color-list { @each $status, $color in $pod-status-color-list {
&.#{$status} { &.#{$status} {

View File

@ -25,6 +25,7 @@ import { KubeObjectDetails } from "./kube-object/kube-object-details";
import { AddRoleBindingDialog } from "./+user-management-roles-bindings"; import { AddRoleBindingDialog } from "./+user-management-roles-bindings";
import { PodLogsDialog } from "./+workloads-pods/pod-logs-dialog"; import { PodLogsDialog } from "./+workloads-pods/pod-logs-dialog";
import { DeploymentScaleDialog } from "./+workloads-deployments/deployment-scale-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 { CustomResources } from "./+custom-resources/custom-resources";
import { crdRoute } from "./+custom-resources"; import { crdRoute } from "./+custom-resources";
import { isAllowedResource } from "../../common/rbac"; import { isAllowedResource } from "../../common/rbac";
@ -80,6 +81,7 @@ export class App extends React.Component {
<AddRoleBindingDialog/> <AddRoleBindingDialog/>
<PodLogsDialog/> <PodLogsDialog/>
<DeploymentScaleDialog/> <DeploymentScaleDialog/>
<CronJobTriggerDialog/>
</ErrorBoundary> </ErrorBoundary>
</Router> </Router>
</I18nProvider> </I18nProvider>