foreman_remote_execution 9.1.0 → 10.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/release.yml +14 -0
- data/.packit.yaml +40 -0
- data/.tx/config +3 -1
- data/app/assets/javascripts/foreman_remote_execution/locale/de/foreman_remote_execution.js +1 -0
- data/app/assets/javascripts/foreman_remote_execution/locale/en/foreman_remote_execution.js +1 -0
- data/app/assets/javascripts/foreman_remote_execution/locale/en_GB/foreman_remote_execution.js +1 -0
- data/app/assets/javascripts/foreman_remote_execution/locale/es/foreman_remote_execution.js +1 -0
- data/app/assets/javascripts/foreman_remote_execution/locale/fr/foreman_remote_execution.js +1 -0
- data/app/assets/javascripts/foreman_remote_execution/locale/ja/foreman_remote_execution.js +1 -0
- data/app/assets/javascripts/foreman_remote_execution/locale/ko/foreman_remote_execution.js +1 -0
- data/app/assets/javascripts/foreman_remote_execution/locale/pt_BR/foreman_remote_execution.js +1 -0
- data/app/assets/javascripts/foreman_remote_execution/locale/ru/foreman_remote_execution.js +1 -0
- data/app/assets/javascripts/foreman_remote_execution/locale/zh_CN/foreman_remote_execution.js +1 -0
- data/app/assets/javascripts/foreman_remote_execution/locale/zh_TW/foreman_remote_execution.js +1 -0
- data/app/assets/javascripts/foreman_remote_execution/template_invocation.js +10 -1
- data/app/controllers/job_invocations_controller.rb +20 -1
- data/app/controllers/ui_job_wizard_controller.rb +0 -3
- data/app/lib/actions/remote_execution/run_host_job.rb +1 -1
- data/app/views/job_invocations/_form.html.erb +1 -1
- data/app/views/templates/script/run_command.erb +1 -0
- data/config/routes.rb +1 -0
- data/lib/foreman_remote_execution/engine.rb +8 -8
- data/lib/foreman_remote_execution/tasks/explain_proxy_selection.rake +12 -3
- data/lib/foreman_remote_execution/version.rb +1 -1
- data/locale/Makefile +6 -3
- data/locale/de/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/de/foreman_remote_execution.po +53 -8
- data/locale/en/foreman_remote_execution.po +52 -7
- data/locale/en_GB/foreman_remote_execution.po +52 -7
- data/locale/es/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/es/foreman_remote_execution.po +56 -11
- data/locale/foreman_remote_execution.pot +193 -126
- data/locale/fr/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/fr/foreman_remote_execution.po +56 -11
- data/locale/ja/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/ja/foreman_remote_execution.po +56 -11
- data/locale/ko/foreman_remote_execution.po +52 -7
- data/locale/pt_BR/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/pt_BR/foreman_remote_execution.po +56 -11
- data/locale/ru/foreman_remote_execution.po +52 -7
- data/locale/zh_CN/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/zh_CN/foreman_remote_execution.po +56 -11
- data/locale/zh_TW/foreman_remote_execution.po +52 -7
- data/webpack/JobWizard/Footer.js +104 -0
- data/webpack/JobWizard/JobWizard.js +24 -16
- data/webpack/JobWizard/JobWizard.scss +6 -17
- data/webpack/JobWizard/JobWizardConstants.js +1 -1
- data/webpack/JobWizard/JobWizardPageRerun.js +2 -0
- data/webpack/JobWizard/__tests__/fixtures.js +8 -1
- data/webpack/JobWizard/__tests__/validation.test.js +9 -0
- data/webpack/JobWizard/steps/HostsAndInputs/HostPreviewModal.js +2 -0
- data/webpack/JobWizard/steps/HostsAndInputs/SelectedChips.js +28 -14
- data/webpack/JobWizard/steps/HostsAndInputs/__tests__/HostsAndInputs.test.js +3 -3
- data/webpack/JobWizard/steps/ReviewDetails/ReviewDetails.test.js +117 -0
- data/webpack/JobWizard/steps/ReviewDetails/helpers.js +43 -0
- data/webpack/JobWizard/steps/ReviewDetails/index.js +169 -18
- data/webpack/JobWizard/steps/Schedule/QueryType.js +1 -1
- data/webpack/JobWizard/steps/Schedule/RepeatHour.js +0 -1
- data/webpack/JobWizard/steps/Schedule/RepeatWeek.js +1 -1
- data/webpack/JobWizard/steps/Schedule/__tests__/Schedule.test.js +19 -5
- data/webpack/JobWizard/steps/form/DateTimePicker.js +0 -1
- data/webpack/JobWizard/steps/form/GroupedSelectField.js +0 -1
- data/webpack/JobWizard/steps/form/SelectField.js +0 -1
- data/webpack/react_app/components/RecentJobsCard/RecentJobsCard.js +4 -4
- data/webpack/react_app/components/RecentJobsCard/RecentJobsTable.js +2 -2
- data/webpack/react_app/components/RecentJobsCard/constants.js +2 -2
- data/webpack/react_app/components/RegistrationExtension/RexPull.js +0 -2
- metadata +19 -3
@@ -29,6 +29,9 @@ msgstr "%s назад"
|
|
29
29
|
msgid "%s job has been invoked"
|
30
30
|
msgstr ""
|
31
31
|
|
32
|
+
msgid "%s more"
|
33
|
+
msgstr ""
|
34
|
+
|
32
35
|
msgid "%{description} on %{host}"
|
33
36
|
msgstr "%{description} на %{host}"
|
34
37
|
|
@@ -38,9 +41,6 @@ msgstr ""
|
|
38
41
|
msgid "'Starts before' date must in the future"
|
39
42
|
msgstr ""
|
40
43
|
|
41
|
-
msgid ", and %s more"
|
42
|
-
msgstr ""
|
43
|
-
|
44
44
|
msgid "...and %s more"
|
45
45
|
msgstr ""
|
46
46
|
|
@@ -100,6 +100,9 @@ msgstr ""
|
|
100
100
|
msgid "After"
|
101
101
|
msgstr ""
|
102
102
|
|
103
|
+
msgid "After %s occurences"
|
104
|
+
msgstr ""
|
105
|
+
|
103
106
|
msgid "All fields are required."
|
104
107
|
msgstr ""
|
105
108
|
|
@@ -157,7 +160,7 @@ msgstr "bookmark_id и search_query не могут использоваться
|
|
157
160
|
msgid "Categories list failed with:"
|
158
161
|
msgstr ""
|
159
162
|
|
160
|
-
msgid "Category and
|
163
|
+
msgid "Category and template"
|
161
164
|
msgstr ""
|
162
165
|
|
163
166
|
msgid "Choose a job template that is pre-selected in job invocation form"
|
@@ -169,7 +172,7 @@ msgstr "При добавлении входных параметров из «%
|
|
169
172
|
msgid "Cleanup working directories"
|
170
173
|
msgstr ""
|
171
174
|
|
172
|
-
msgid "Clear filters"
|
175
|
+
msgid "Clear all filters"
|
173
176
|
msgstr ""
|
174
177
|
|
175
178
|
msgid "Clear input"
|
@@ -379,6 +382,18 @@ msgstr ""
|
|
379
382
|
msgid "Evaluated at:"
|
380
383
|
msgstr "Обработано:"
|
381
384
|
|
385
|
+
msgid "Every day at %s"
|
386
|
+
msgstr ""
|
387
|
+
|
388
|
+
msgid "Every hour at minute %s"
|
389
|
+
msgstr ""
|
390
|
+
|
391
|
+
msgid "Every month on %s at %s"
|
392
|
+
msgstr ""
|
393
|
+
|
394
|
+
msgid "Every week on %s at %s"
|
395
|
+
msgstr ""
|
396
|
+
|
382
397
|
msgid "Execute the job later, at a scheduled time."
|
383
398
|
msgstr ""
|
384
399
|
|
@@ -739,6 +754,9 @@ msgstr "Организация"
|
|
739
754
|
msgid "Override the description format from the template for this invocation only"
|
740
755
|
msgstr "Переопределить формат описания из шаблона только на время этого вызова"
|
741
756
|
|
757
|
+
msgid "Override the global time to pickup interval for this invocation only"
|
758
|
+
msgstr ""
|
759
|
+
|
742
760
|
msgid "Override the timeout interval from the template for this invocation only"
|
743
761
|
msgstr ""
|
744
762
|
|
@@ -766,9 +784,24 @@ msgstr ""
|
|
766
784
|
msgid "Perform no more executions after this time"
|
767
785
|
msgstr "Остановить после указанного числа повторений"
|
768
786
|
|
787
|
+
msgid "Please enter a search query"
|
788
|
+
msgstr ""
|
789
|
+
|
790
|
+
msgid "Please go back to \\\"Schedule\\\" - \\\"Future execution\\\" step to fix the error"
|
791
|
+
msgstr ""
|
792
|
+
|
769
793
|
msgid "Please refine your search."
|
770
794
|
msgstr ""
|
771
795
|
|
796
|
+
msgid "Please select at least one host"
|
797
|
+
msgstr ""
|
798
|
+
|
799
|
+
msgid "Please select at least one host collection"
|
800
|
+
msgstr ""
|
801
|
+
|
802
|
+
msgid "Please select at least one host group"
|
803
|
+
msgstr ""
|
804
|
+
|
772
805
|
msgid "Port to use for SSH communication. Default port 22. You may override per host by setting a parameter called remote_execution_ssh_port."
|
773
806
|
msgstr ""
|
774
807
|
|
@@ -910,6 +943,12 @@ msgstr "Выполнить задание"
|
|
910
943
|
msgid "Run Puppet Once"
|
911
944
|
msgstr ""
|
912
945
|
|
946
|
+
msgid "Run Script"
|
947
|
+
msgstr ""
|
948
|
+
|
949
|
+
msgid "Run a script"
|
950
|
+
msgstr ""
|
951
|
+
|
913
952
|
msgid "Run at most N tasks at a time"
|
914
953
|
msgstr "Максимальное количество параллельно выполняемых задач"
|
915
954
|
|
@@ -1060,6 +1099,9 @@ msgstr ""
|
|
1060
1099
|
msgid "Starts"
|
1061
1100
|
msgstr "Начало"
|
1062
1101
|
|
1102
|
+
msgid "Starts Before"
|
1103
|
+
msgstr ""
|
1104
|
+
|
1063
1105
|
msgid "Starts at"
|
1064
1106
|
msgstr ""
|
1065
1107
|
|
@@ -1244,7 +1286,7 @@ msgstr "Тип"
|
|
1244
1286
|
msgid "Type has impact on when is the query evaluated to hosts."
|
1245
1287
|
msgstr ""
|
1246
1288
|
|
1247
|
-
msgid "Type has impact on when is the query evaluated to hosts.<br><ul><li><b>Static</b> - evaluates just after you submit this form</li><li><b>Dynamic</b> - evaluates just before the execution is started, so if it's
|
1289
|
+
msgid "Type has impact on when is the query evaluated to hosts.<br><ul><li><b>Static</b> - evaluates just after you submit this form</li><li><b>Dynamic</b> - evaluates just before the execution is started, so if it's planned in future, targeted hosts set may change before it</li></ul>"
|
1248
1290
|
msgstr ""
|
1249
1291
|
|
1250
1292
|
msgid "Type of execution"
|
@@ -1400,7 +1442,7 @@ msgstr "ошибка при обработке шаблонов: %s"
|
|
1400
1442
|
msgid "evaluates just after you submit this form"
|
1401
1443
|
msgstr ""
|
1402
1444
|
|
1403
|
-
msgid "evaluates just before the execution is started, so if it's
|
1445
|
+
msgid "evaluates just before the execution is started, so if it's planned in future, targeted hosts set may change before it"
|
1404
1446
|
msgstr ""
|
1405
1447
|
|
1406
1448
|
msgid "failed"
|
@@ -1484,5 +1526,8 @@ msgstr ""
|
|
1484
1526
|
msgid "using Smart Proxy"
|
1485
1527
|
msgstr ""
|
1486
1528
|
|
1529
|
+
msgid "view host names"
|
1530
|
+
msgstr ""
|
1531
|
+
|
1487
1532
|
msgid "yes"
|
1488
1533
|
msgstr "да"
|
Binary file
|
@@ -26,6 +26,9 @@ msgstr "%s 前"
|
|
26
26
|
msgid "%s job has been invoked"
|
27
27
|
msgstr "%s 任务已被调用"
|
28
28
|
|
29
|
+
msgid "%s more"
|
30
|
+
msgstr ""
|
31
|
+
|
29
32
|
msgid "%{description} on %{host}"
|
30
33
|
msgstr "%{host} 的 %{description}"
|
31
34
|
|
@@ -35,9 +38,6 @@ msgstr ""
|
|
35
38
|
msgid "'Starts before' date must in the future"
|
36
39
|
msgstr ""
|
37
40
|
|
38
|
-
msgid ", and %s more"
|
39
|
-
msgstr ", 和 %s 个更多"
|
40
|
-
|
41
41
|
msgid "...and %s more"
|
42
42
|
msgstr "...和 %s 个更多"
|
43
43
|
|
@@ -96,6 +96,9 @@ msgstr "高级项"
|
|
96
96
|
msgid "After"
|
97
97
|
msgstr ""
|
98
98
|
|
99
|
+
msgid "After %s occurences"
|
100
|
+
msgstr ""
|
101
|
+
|
99
102
|
msgid "All fields are required."
|
100
103
|
msgstr "各个项都需要。"
|
101
104
|
|
@@ -153,8 +156,8 @@ msgstr "无法同时指定 bookmark_id 和 search_query"
|
|
153
156
|
msgid "Categories list failed with:"
|
154
157
|
msgstr "类别列表失败并带有:"
|
155
158
|
|
156
|
-
msgid "Category and
|
157
|
-
msgstr "
|
159
|
+
msgid "Category and template"
|
160
|
+
msgstr ""
|
158
161
|
|
159
162
|
msgid "Choose a job template that is pre-selected in job invocation form"
|
160
163
|
msgstr "选择在作业调用表单中预先选择的作业模板"
|
@@ -165,8 +168,8 @@ msgstr "在外部输入设置中发现了循环的依赖关系 '%{template}' ->
|
|
165
168
|
msgid "Cleanup working directories"
|
166
169
|
msgstr "清理工作目录"
|
167
170
|
|
168
|
-
msgid "Clear filters"
|
169
|
-
msgstr "
|
171
|
+
msgid "Clear all filters"
|
172
|
+
msgstr ""
|
170
173
|
|
171
174
|
msgid "Clear input"
|
172
175
|
msgstr ""
|
@@ -375,6 +378,18 @@ msgstr "错误:"
|
|
375
378
|
msgid "Evaluated at:"
|
376
379
|
msgstr "评估于:"
|
377
380
|
|
381
|
+
msgid "Every day at %s"
|
382
|
+
msgstr ""
|
383
|
+
|
384
|
+
msgid "Every hour at minute %s"
|
385
|
+
msgstr ""
|
386
|
+
|
387
|
+
msgid "Every month on %s at %s"
|
388
|
+
msgstr ""
|
389
|
+
|
390
|
+
msgid "Every week on %s at %s"
|
391
|
+
msgstr ""
|
392
|
+
|
378
393
|
msgid "Execute the job later, at a scheduled time."
|
379
394
|
msgstr ""
|
380
395
|
|
@@ -735,6 +750,9 @@ msgstr "机构"
|
|
735
750
|
msgid "Override the description format from the template for this invocation only"
|
736
751
|
msgstr "只为此调用覆盖来自模板的描述格式"
|
737
752
|
|
753
|
+
msgid "Override the global time to pickup interval for this invocation only"
|
754
|
+
msgstr ""
|
755
|
+
|
738
756
|
msgid "Override the timeout interval from the template for this invocation only"
|
739
757
|
msgstr "只为此调用使用该模板覆盖超时间隔"
|
740
758
|
|
@@ -762,9 +780,24 @@ msgstr "执行一个单独 Puppet 运行"
|
|
762
780
|
msgid "Perform no more executions after this time"
|
763
781
|
msgstr "在此时间后不再执行"
|
764
782
|
|
783
|
+
msgid "Please enter a search query"
|
784
|
+
msgstr ""
|
785
|
+
|
786
|
+
msgid "Please go back to \\\"Schedule\\\" - \\\"Future execution\\\" step to fix the error"
|
787
|
+
msgstr ""
|
788
|
+
|
765
789
|
msgid "Please refine your search."
|
766
790
|
msgstr "请重新调整您的搜索。"
|
767
791
|
|
792
|
+
msgid "Please select at least one host"
|
793
|
+
msgstr ""
|
794
|
+
|
795
|
+
msgid "Please select at least one host collection"
|
796
|
+
msgstr ""
|
797
|
+
|
798
|
+
msgid "Please select at least one host group"
|
799
|
+
msgstr ""
|
800
|
+
|
768
801
|
msgid "Port to use for SSH communication. Default port 22. You may override per host by setting a parameter called remote_execution_ssh_port."
|
769
802
|
msgstr "要用于 SSH 通信的端口。默认端口 22。您可以通过设置名为 remote_execution_ssh_port 的参数来按主机进行覆盖。"
|
770
803
|
|
@@ -906,6 +939,12 @@ msgstr "运行作业"
|
|
906
939
|
msgid "Run Puppet Once"
|
907
940
|
msgstr "运行 Puppet 一次"
|
908
941
|
|
942
|
+
msgid "Run Script"
|
943
|
+
msgstr ""
|
944
|
+
|
945
|
+
msgid "Run a script"
|
946
|
+
msgstr ""
|
947
|
+
|
909
948
|
msgid "Run at most N tasks at a time"
|
910
949
|
msgstr "一次最多运行 N 个任务"
|
911
950
|
|
@@ -1056,6 +1095,9 @@ msgstr "已启动"
|
|
1056
1095
|
msgid "Starts"
|
1057
1096
|
msgstr "开始"
|
1058
1097
|
|
1098
|
+
msgid "Starts Before"
|
1099
|
+
msgstr ""
|
1100
|
+
|
1059
1101
|
msgid "Starts at"
|
1060
1102
|
msgstr "开始于"
|
1061
1103
|
|
@@ -1237,8 +1279,8 @@ msgstr "类型"
|
|
1237
1279
|
msgid "Type has impact on when is the query evaluated to hosts."
|
1238
1280
|
msgstr "类型会影响到什么时候会评估到主机。"
|
1239
1281
|
|
1240
|
-
msgid "Type has impact on when is the query evaluated to hosts.<br><ul><li><b>Static</b> - evaluates just after you submit this form</li><li><b>Dynamic</b> - evaluates just before the execution is started, so if it's
|
1241
|
-
msgstr "
|
1282
|
+
msgid "Type has impact on when is the query evaluated to hosts.<br><ul><li><b>Static</b> - evaluates just after you submit this form</li><li><b>Dynamic</b> - evaluates just before the execution is started, so if it's planned in future, targeted hosts set may change before it</li></ul>"
|
1283
|
+
msgstr ""
|
1242
1284
|
|
1243
1285
|
msgid "Type of execution"
|
1244
1286
|
msgstr ""
|
@@ -1393,8 +1435,8 @@ msgstr "呈现时出错:%s"
|
|
1393
1435
|
msgid "evaluates just after you submit this form"
|
1394
1436
|
msgstr "提交此表单后评估"
|
1395
1437
|
|
1396
|
-
msgid "evaluates just before the execution is started, so if it's
|
1397
|
-
msgstr "
|
1438
|
+
msgid "evaluates just before the execution is started, so if it's planned in future, targeted hosts set may change before it"
|
1439
|
+
msgstr ""
|
1398
1440
|
|
1399
1441
|
msgid "failed"
|
1400
1442
|
msgstr "失败"
|
@@ -1477,5 +1519,8 @@ msgstr "使用 "
|
|
1477
1519
|
msgid "using Smart Proxy"
|
1478
1520
|
msgstr "使用智能代理"
|
1479
1521
|
|
1522
|
+
msgid "view host names"
|
1523
|
+
msgstr ""
|
1524
|
+
|
1480
1525
|
msgid "yes"
|
1481
1526
|
msgstr "是"
|
@@ -26,6 +26,9 @@ msgstr "%s 之前"
|
|
26
26
|
msgid "%s job has been invoked"
|
27
27
|
msgstr ""
|
28
28
|
|
29
|
+
msgid "%s more"
|
30
|
+
msgstr ""
|
31
|
+
|
29
32
|
msgid "%{description} on %{host}"
|
30
33
|
msgstr "%{description} 於 %{host} 之上"
|
31
34
|
|
@@ -35,9 +38,6 @@ msgstr ""
|
|
35
38
|
msgid "'Starts before' date must in the future"
|
36
39
|
msgstr ""
|
37
40
|
|
38
|
-
msgid ", and %s more"
|
39
|
-
msgstr ""
|
40
|
-
|
41
41
|
msgid "...and %s more"
|
42
42
|
msgstr ""
|
43
43
|
|
@@ -97,6 +97,9 @@ msgstr ""
|
|
97
97
|
msgid "After"
|
98
98
|
msgstr ""
|
99
99
|
|
100
|
+
msgid "After %s occurences"
|
101
|
+
msgstr ""
|
102
|
+
|
100
103
|
msgid "All fields are required."
|
101
104
|
msgstr ""
|
102
105
|
|
@@ -154,7 +157,7 @@ msgstr "無法指定 bookmark_id 和 search_query"
|
|
154
157
|
msgid "Categories list failed with:"
|
155
158
|
msgstr ""
|
156
159
|
|
157
|
-
msgid "Category and
|
160
|
+
msgid "Category and template"
|
158
161
|
msgstr ""
|
159
162
|
|
160
163
|
msgid "Choose a job template that is pre-selected in job invocation form"
|
@@ -166,7 +169,7 @@ msgstr "在外部輸入集偵測到環狀相依性: '%{template}' -> '%{target
|
|
166
169
|
msgid "Cleanup working directories"
|
167
170
|
msgstr ""
|
168
171
|
|
169
|
-
msgid "Clear filters"
|
172
|
+
msgid "Clear all filters"
|
170
173
|
msgstr ""
|
171
174
|
|
172
175
|
msgid "Clear input"
|
@@ -376,6 +379,18 @@ msgstr ""
|
|
376
379
|
msgid "Evaluated at:"
|
377
380
|
msgstr "評量於:"
|
378
381
|
|
382
|
+
msgid "Every day at %s"
|
383
|
+
msgstr ""
|
384
|
+
|
385
|
+
msgid "Every hour at minute %s"
|
386
|
+
msgstr ""
|
387
|
+
|
388
|
+
msgid "Every month on %s at %s"
|
389
|
+
msgstr ""
|
390
|
+
|
391
|
+
msgid "Every week on %s at %s"
|
392
|
+
msgstr ""
|
393
|
+
|
379
394
|
msgid "Execute the job later, at a scheduled time."
|
380
395
|
msgstr ""
|
381
396
|
|
@@ -736,6 +751,9 @@ msgstr "組織"
|
|
736
751
|
msgid "Override the description format from the template for this invocation only"
|
737
752
|
msgstr "僅為這祈願從範本覆寫描述格式"
|
738
753
|
|
754
|
+
msgid "Override the global time to pickup interval for this invocation only"
|
755
|
+
msgstr ""
|
756
|
+
|
739
757
|
msgid "Override the timeout interval from the template for this invocation only"
|
740
758
|
msgstr ""
|
741
759
|
|
@@ -763,9 +781,24 @@ msgstr ""
|
|
763
781
|
msgid "Perform no more executions after this time"
|
764
782
|
msgstr "此時間之後不再進行任何執行"
|
765
783
|
|
784
|
+
msgid "Please enter a search query"
|
785
|
+
msgstr ""
|
786
|
+
|
787
|
+
msgid "Please go back to \\\"Schedule\\\" - \\\"Future execution\\\" step to fix the error"
|
788
|
+
msgstr ""
|
789
|
+
|
766
790
|
msgid "Please refine your search."
|
767
791
|
msgstr ""
|
768
792
|
|
793
|
+
msgid "Please select at least one host"
|
794
|
+
msgstr ""
|
795
|
+
|
796
|
+
msgid "Please select at least one host collection"
|
797
|
+
msgstr ""
|
798
|
+
|
799
|
+
msgid "Please select at least one host group"
|
800
|
+
msgstr ""
|
801
|
+
|
769
802
|
msgid "Port to use for SSH communication. Default port 22. You may override per host by setting a parameter called remote_execution_ssh_port."
|
770
803
|
msgstr ""
|
771
804
|
|
@@ -907,6 +940,12 @@ msgstr "執行工作"
|
|
907
940
|
msgid "Run Puppet Once"
|
908
941
|
msgstr ""
|
909
942
|
|
943
|
+
msgid "Run Script"
|
944
|
+
msgstr ""
|
945
|
+
|
946
|
+
msgid "Run a script"
|
947
|
+
msgstr ""
|
948
|
+
|
910
949
|
msgid "Run at most N tasks at a time"
|
911
950
|
msgstr "一次最多執行 N 個任務"
|
912
951
|
|
@@ -1057,6 +1096,9 @@ msgstr ""
|
|
1057
1096
|
msgid "Starts"
|
1058
1097
|
msgstr "起始"
|
1059
1098
|
|
1099
|
+
msgid "Starts Before"
|
1100
|
+
msgstr ""
|
1101
|
+
|
1060
1102
|
msgid "Starts at"
|
1061
1103
|
msgstr ""
|
1062
1104
|
|
@@ -1239,7 +1281,7 @@ msgstr "類型"
|
|
1239
1281
|
msgid "Type has impact on when is the query evaluated to hosts."
|
1240
1282
|
msgstr ""
|
1241
1283
|
|
1242
|
-
msgid "Type has impact on when is the query evaluated to hosts.<br><ul><li><b>Static</b> - evaluates just after you submit this form</li><li><b>Dynamic</b> - evaluates just before the execution is started, so if it's
|
1284
|
+
msgid "Type has impact on when is the query evaluated to hosts.<br><ul><li><b>Static</b> - evaluates just after you submit this form</li><li><b>Dynamic</b> - evaluates just before the execution is started, so if it's planned in future, targeted hosts set may change before it</li></ul>"
|
1243
1285
|
msgstr ""
|
1244
1286
|
|
1245
1287
|
msgid "Type of execution"
|
@@ -1395,7 +1437,7 @@ msgstr "處理時發生錯誤:%s"
|
|
1395
1437
|
msgid "evaluates just after you submit this form"
|
1396
1438
|
msgstr ""
|
1397
1439
|
|
1398
|
-
msgid "evaluates just before the execution is started, so if it's
|
1440
|
+
msgid "evaluates just before the execution is started, so if it's planned in future, targeted hosts set may change before it"
|
1399
1441
|
msgstr ""
|
1400
1442
|
|
1401
1443
|
msgid "failed"
|
@@ -1479,5 +1521,8 @@ msgstr ""
|
|
1479
1521
|
msgid "using Smart Proxy"
|
1480
1522
|
msgstr ""
|
1481
1523
|
|
1524
|
+
msgid "view host names"
|
1525
|
+
msgstr ""
|
1526
|
+
|
1482
1527
|
msgid "yes"
|
1483
1528
|
msgstr "是"
|
@@ -0,0 +1,104 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { useSelector } from 'react-redux';
|
3
|
+
import PropTypes from 'prop-types';
|
4
|
+
import {
|
5
|
+
Button,
|
6
|
+
WizardFooter,
|
7
|
+
WizardContextConsumer,
|
8
|
+
Tooltip,
|
9
|
+
Spinner,
|
10
|
+
} from '@patternfly/react-core';
|
11
|
+
import { translate as __ } from 'foremanReact/common/I18n';
|
12
|
+
import { WIZARD_TITLES } from './JobWizardConstants';
|
13
|
+
import { selectIsSubmitting } from './JobWizardSelectors';
|
14
|
+
|
15
|
+
export const Footer = ({ canSubmit, onSave }) => {
|
16
|
+
const isSubmitting = useSelector(selectIsSubmitting);
|
17
|
+
return (
|
18
|
+
<WizardFooter>
|
19
|
+
<WizardContextConsumer>
|
20
|
+
{({ activeStep, onNext, onBack, onClose, goToStepByName }) => {
|
21
|
+
const isValid =
|
22
|
+
activeStep && activeStep.enableNext !== undefined
|
23
|
+
? activeStep.enableNext
|
24
|
+
: true;
|
25
|
+
|
26
|
+
return (
|
27
|
+
<>
|
28
|
+
<Button
|
29
|
+
variant="primary"
|
30
|
+
type="submit"
|
31
|
+
onClick={onNext}
|
32
|
+
isDisabled={!isValid || isSubmitting}
|
33
|
+
>
|
34
|
+
{activeStep.name === WIZARD_TITLES.review
|
35
|
+
? __('Submit')
|
36
|
+
: __('Next')}
|
37
|
+
</Button>
|
38
|
+
<Button
|
39
|
+
variant="secondary"
|
40
|
+
onClick={onBack}
|
41
|
+
isDisabled={
|
42
|
+
activeStep.name === WIZARD_TITLES.categoryAndTemplate
|
43
|
+
}
|
44
|
+
>
|
45
|
+
{__('Back')}
|
46
|
+
</Button>
|
47
|
+
<Tooltip
|
48
|
+
content={
|
49
|
+
<div>
|
50
|
+
{canSubmit
|
51
|
+
? __('Start job')
|
52
|
+
: __('Fill all required fields in all the steps')}
|
53
|
+
</div>
|
54
|
+
}
|
55
|
+
>
|
56
|
+
<Button
|
57
|
+
variant="tertiary"
|
58
|
+
onClick={onSave}
|
59
|
+
isAriaDisabled={!canSubmit}
|
60
|
+
isDisabled={isSubmitting}
|
61
|
+
>
|
62
|
+
{__('Run on selected hosts')}
|
63
|
+
</Button>
|
64
|
+
</Tooltip>
|
65
|
+
<Tooltip
|
66
|
+
content={
|
67
|
+
<div>
|
68
|
+
{canSubmit
|
69
|
+
? __('Skip to review step')
|
70
|
+
: __(
|
71
|
+
'Fill all required fields in all the steps to start the job'
|
72
|
+
)}
|
73
|
+
</div>
|
74
|
+
}
|
75
|
+
>
|
76
|
+
<Button
|
77
|
+
variant="tertiary"
|
78
|
+
onClick={() => goToStepByName(WIZARD_TITLES.review)}
|
79
|
+
isAriaDisabled={!canSubmit}
|
80
|
+
isDisabled={isSubmitting}
|
81
|
+
>
|
82
|
+
{__('Skip to review')}
|
83
|
+
</Button>
|
84
|
+
</Tooltip>
|
85
|
+
<Button variant="link" onClick={onClose}>
|
86
|
+
{__('Cancel')}
|
87
|
+
</Button>
|
88
|
+
{isSubmitting && (
|
89
|
+
<div>
|
90
|
+
<Spinner size="lg" />
|
91
|
+
</div>
|
92
|
+
)}
|
93
|
+
</>
|
94
|
+
);
|
95
|
+
}}
|
96
|
+
</WizardContextConsumer>
|
97
|
+
</WizardFooter>
|
98
|
+
);
|
99
|
+
};
|
100
|
+
|
101
|
+
Footer.propTypes = {
|
102
|
+
canSubmit: PropTypes.bool.isRequired,
|
103
|
+
onSave: PropTypes.func.isRequired,
|
104
|
+
};
|
@@ -37,6 +37,7 @@ import { useAutoFill } from './autofill';
|
|
37
37
|
import { submit } from './submit';
|
38
38
|
import { generateDefaultDescription } from './JobWizardHelpers';
|
39
39
|
import { StartsBeforeErrorAlert } from './StartsBeforeErrorAlert';
|
40
|
+
import { Footer } from './Footer';
|
40
41
|
import './JobWizard.scss';
|
41
42
|
|
42
43
|
export const JobWizard = ({ rerunData }) => {
|
@@ -420,6 +421,22 @@ export const JobWizard = ({ rerunData }) => {
|
|
420
421
|
];
|
421
422
|
const location = useForemanLocation();
|
422
423
|
const organization = useForemanOrganization();
|
424
|
+
const onSave = () => {
|
425
|
+
submit({
|
426
|
+
jobTemplateID,
|
427
|
+
templateValues,
|
428
|
+
advancedValues,
|
429
|
+
scheduleValue,
|
430
|
+
dispatch,
|
431
|
+
selectedTargets,
|
432
|
+
hostsSearchQuery,
|
433
|
+
location,
|
434
|
+
organization,
|
435
|
+
feature: routerSearch?.feature,
|
436
|
+
provider: templateResponse.provider_name,
|
437
|
+
advancedInputs: templateResponse.advanced_template_inputs,
|
438
|
+
});
|
439
|
+
};
|
423
440
|
return (
|
424
441
|
<>
|
425
442
|
{isStartsBeforeError && <StartsBeforeErrorAlert />}
|
@@ -429,22 +446,13 @@ export const JobWizard = ({ rerunData }) => {
|
|
429
446
|
steps={steps}
|
430
447
|
height="100%"
|
431
448
|
className="job-wizard"
|
432
|
-
onSave={
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
selectedTargets,
|
440
|
-
hostsSearchQuery,
|
441
|
-
location,
|
442
|
-
organization,
|
443
|
-
feature: routerSearch?.feature,
|
444
|
-
provider: templateResponse.provider_name,
|
445
|
-
advancedInputs: templateResponse.advanced_template_inputs,
|
446
|
-
});
|
447
|
-
}}
|
449
|
+
onSave={onSave}
|
450
|
+
footer={
|
451
|
+
<Footer
|
452
|
+
canSubmit={!!steps[steps.length - 1].enableNext}
|
453
|
+
onSave={onSave}
|
454
|
+
/>
|
455
|
+
}
|
448
456
|
/>
|
449
457
|
</>
|
450
458
|
);
|
@@ -6,20 +6,15 @@
|
|
6
6
|
|
7
7
|
.pf-c-wizard__nav.pf-m-expanded {
|
8
8
|
z-index: calc(
|
9
|
-
var(--pf-c-
|
10
|
-
); // So the small screen navigation can be shown above the select box
|
9
|
+
var(--pf-c-wizard__toggle--ZIndex) + 2
|
10
|
+
); // So the small screen navigation can be shown above the select box and wizard body
|
11
11
|
}
|
12
12
|
|
13
13
|
.pf-c-wizard__main {
|
14
14
|
overflow: visible;
|
15
15
|
z-index: calc(
|
16
|
-
var(--pf-c-
|
17
|
-
); // So the select box can be shown above the wizard footer
|
18
|
-
}
|
19
|
-
.pf-c-wizard__nav {
|
20
|
-
z-index: calc(
|
21
|
-
var(--pf-c-wizard__footer--ZIndex) + 2
|
22
|
-
); // So the navigation box can be shown above the wizard body
|
16
|
+
var(--pf-c-wizard__toggle--ZIndex) + 1
|
17
|
+
); // So the select box can be shown above the wizard footer and navigation toggle
|
23
18
|
}
|
24
19
|
.pf-c-wizard__main-body {
|
25
20
|
max-width: 500px;
|
@@ -34,14 +29,8 @@
|
|
34
29
|
}
|
35
30
|
|
36
31
|
.target-hosts-and-inputs {
|
37
|
-
.
|
38
|
-
margin-
|
39
|
-
float: left;
|
40
|
-
clear: left;
|
41
|
-
display: block;
|
42
|
-
}
|
43
|
-
.clear-chips {
|
44
|
-
margin-top: 8px;
|
32
|
+
.pf-c-chip-group.pf-m-category {
|
33
|
+
margin-bottom: 10px;
|
45
34
|
}
|
46
35
|
.pf-c-select__toggle-typeahead {
|
47
36
|
border: 0px;
|
@@ -23,7 +23,7 @@ export const SCHEDULE_TYPES = {
|
|
23
23
|
};
|
24
24
|
|
25
25
|
export const WIZARD_TITLES = {
|
26
|
-
categoryAndTemplate: __('Category and
|
26
|
+
categoryAndTemplate: __('Category and template'),
|
27
27
|
hostsAndInputs: __('Target hosts and inputs'),
|
28
28
|
advanced: __('Advanced fields'),
|
29
29
|
schedule: __('Schedule'),
|
@@ -86,6 +86,7 @@ const JobWizardPageRerun = ({
|
|
86
86
|
<React.Fragment>
|
87
87
|
{jobOrganization?.id !== currentOrganization?.id && (
|
88
88
|
<Alert
|
89
|
+
isInline
|
89
90
|
className="job-wizard-alert"
|
90
91
|
variant="warning"
|
91
92
|
title={sprintf(
|
@@ -99,6 +100,7 @@ const JobWizardPageRerun = ({
|
|
99
100
|
)}
|
100
101
|
{jobLocation?.id !== currentLocation?.id && (
|
101
102
|
<Alert
|
103
|
+
isInline
|
102
104
|
className="job-wizard-alert"
|
103
105
|
variant="warning"
|
104
106
|
title={sprintf(
|