foreman_remote_execution 18.0.1 → 18.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/javascripts/foreman_remote_execution/locale/fr/foreman_remote_execution.js +28 -28
- data/app/assets/javascripts/foreman_remote_execution/locale/ja/foreman_remote_execution.js +48 -48
- data/app/assets/javascripts/foreman_remote_execution/locale/ko/foreman_remote_execution.js +29 -29
- data/app/assets/javascripts/foreman_remote_execution/locale/zh_CN/foreman_remote_execution.js +22 -22
- data/app/assets/javascripts/foreman_remote_execution/template_invocation.js +0 -170
- data/app/assets/stylesheets/foreman_remote_execution/job_invocations.scss +0 -6
- data/app/controllers/job_invocations_controller.rb +1 -98
- data/app/helpers/job_invocations_helper.rb +0 -49
- data/app/helpers/remote_execution_helper.rb +23 -123
- data/config/routes.rb +0 -6
- data/lib/foreman_remote_execution/plugin.rb +2 -2
- data/lib/foreman_remote_execution/version.rb +1 -1
- data/locale/foreman_remote_execution.pot +2 -2
- data/locale/fr/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/fr/foreman_remote_execution.po +28 -28
- data/locale/ja/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/ja/foreman_remote_execution.po +48 -48
- data/locale/ko/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/ko/foreman_remote_execution.po +29 -29
- data/locale/zh_CN/LC_MESSAGES/foreman_remote_execution.mo +0 -0
- data/locale/zh_CN/foreman_remote_execution.po +22 -22
- data/package.json +1 -14
- data/test/functional/job_invocations_controller_test.rb +0 -77
- data/webpack/JobInvocationDetail/JobInvocationConstants.js +5 -0
- data/webpack/JobInvocationDetail/JobInvocationToolbarButtons.js +0 -10
- data/webpack/JobInvocationDetail/TemplateInvocation.js +12 -69
- data/webpack/JobInvocationDetail/TemplateInvocationComponents/OutputCodeBlock.js +94 -72
- data/webpack/JobInvocationDetail/TemplateInvocationHelpers.js +33 -0
- data/webpack/JobInvocationDetail/__tests__/JobInvocationDetailEmptyState.test.js +1 -1
- data/webpack/JobInvocationDetail/__tests__/MainInformation.test.js +0 -6
- data/webpack/JobInvocationDetail/__tests__/OutputCodeBlock.test.js +1 -1
- data/webpack/JobInvocationDetail/__tests__/TableToolbarActions.test.js +1 -1
- data/webpack/JobInvocationDetail/__tests__/TemplateInvocation.test.js +5 -1
- data/webpack/JobInvocationDetail/__tests__/TemplateInvocationHelpers.test.js +94 -0
- data/webpack/JobInvocationDetail/__tests__/TemplateInvocationPolling.test.js +338 -139
- data/webpack/JobInvocationDetail/useTemplateInvocationOutputPolling.js +185 -0
- data/webpack/JobWizard/JobWizardPageRerun.js +0 -10
- data/webpack/JobWizard/__tests__/autofill.test.js +23 -0
- data/webpack/JobWizard/__tests__/integration.test.js +1 -1
- data/webpack/JobWizard/autofill.js +18 -4
- data/webpack/JobWizard/index.js +1 -18
- data/webpack/JobWizard/steps/HostsAndInputs/__tests__/HostsAndInputs.test.js +49 -1
- data/webpack/global_index.js +0 -2
- data/webpack/index.js +0 -15
- data/webpack/react_app/components/RegistrationExtension/__tests__/RexInterface.test.js +1 -1
- metadata +6 -53
- data/app/assets/stylesheets/foreman_remote_execution/modal_window.scss +0 -4
- data/app/helpers/job_invocations_chart_helper.rb +0 -80
- data/app/views/job_invocations/_card_results.html.erb +0 -12
- data/app/views/job_invocations/_card_schedule.html.erb +0 -33
- data/app/views/job_invocations/_card_target_hosts.html.erb +0 -57
- data/app/views/job_invocations/_card_user_input.html.erb +0 -16
- data/app/views/job_invocations/_description_fields.html.erb +0 -4
- data/app/views/job_invocations/_form.html.erb +0 -144
- data/app/views/job_invocations/_preview_hosts_modal.html.erb +0 -15
- data/app/views/job_invocations/_rerun_taxonomies.html.erb +0 -22
- data/app/views/job_invocations/_tab_hosts.html.erb +0 -11
- data/app/views/job_invocations/_tab_overview.html.erb +0 -41
- data/app/views/job_invocations/_tab_preview_templates.html.erb +0 -20
- data/app/views/job_invocations/_user_input.html.erb +0 -21
- data/app/views/job_invocations/new.html.erb +0 -9
- data/app/views/job_invocations/refresh.js.erb +0 -4
- data/app/views/job_invocations/show.html.erb +0 -59
- data/app/views/job_invocations/show.js.erb +0 -12
- data/app/views/job_invocations/show.json.erb +0 -5
- data/test/support/remote_execution_helper.rb +0 -5
- data/webpack/react_app/components/TargetingHosts/TargetingHosts.js +0 -62
- data/webpack/react_app/components/TargetingHosts/TargetingHostsConsts.js +0 -2
- data/webpack/react_app/components/TargetingHosts/TargetingHostsHelpers.js +0 -10
- data/webpack/react_app/components/TargetingHosts/TargetingHostsLabelsRow.js +0 -45
- data/webpack/react_app/components/TargetingHosts/TargetingHostsLabelsRow.scss +0 -30
- data/webpack/react_app/components/TargetingHosts/TargetingHostsPage.js +0 -78
- data/webpack/react_app/components/TargetingHosts/TargetingHostsPage.scss +0 -3
- data/webpack/react_app/components/TargetingHosts/TargetingHostsSelectors.js +0 -25
- data/webpack/react_app/components/TargetingHosts/__tests__/HostItem.test.js +0 -76
- data/webpack/react_app/components/TargetingHosts/__tests__/HostStatus.test.js +0 -6
- data/webpack/react_app/components/TargetingHosts/__tests__/TargetingHosts.test.js +0 -6
- data/webpack/react_app/components/TargetingHosts/__tests__/TargetingHostsPage.test.js +0 -9
- data/webpack/react_app/components/TargetingHosts/__tests__/TargetingHostsSelectors.test.js +0 -31
- data/webpack/react_app/components/TargetingHosts/__tests__/__snapshots__/HostStatus.test.js.snap +0 -12
- data/webpack/react_app/components/TargetingHosts/__tests__/__snapshots__/TargetingHosts.test.js.snap +0 -96
- data/webpack/react_app/components/TargetingHosts/__tests__/__snapshots__/TargetingHostsPage.test.js.snap +0 -75
- data/webpack/react_app/components/TargetingHosts/__tests__/__snapshots__/TargetingHostsSelectors.test.js.snap +0 -16
- data/webpack/react_app/components/TargetingHosts/__tests__/fixtures.js +0 -56
- data/webpack/react_app/components/TargetingHosts/components/HostItem.js +0 -39
- data/webpack/react_app/components/TargetingHosts/components/HostStatus.js +0 -54
- data/webpack/react_app/components/TargetingHosts/index.js +0 -150
- data/webpack/react_app/components/jobInvocations/AggregateStatus/index.js +0 -60
- data/webpack/react_app/components/jobInvocations/AggregateStatus/index.test.js +0 -76
- data/webpack/react_app/components/jobInvocations/index.js +0 -94
- data/webpack/react_app/extend/reducers.js +0 -5
- data/webpack/react_app/redux/actions/jobInvocations/index.js +0 -87
- data/webpack/react_app/redux/consts.js +0 -5
- data/webpack/react_app/redux/reducers/index.js +0 -6
- data/webpack/react_app/redux/reducers/jobInvocations/index.fixtures.js +0 -46
- data/webpack/react_app/redux/reducers/jobInvocations/index.js +0 -34
- data/webpack/react_app/redux/reducers/jobInvocations/index.test.js +0 -43
|
@@ -132,7 +132,7 @@
|
|
|
132
132
|
"알파벳순"
|
|
133
133
|
],
|
|
134
134
|
"Already on the review step": [
|
|
135
|
-
""
|
|
135
|
+
"이미 검토 단계에 있습니다."
|
|
136
136
|
],
|
|
137
137
|
"An error occurred while fetching the template invocation details.": [
|
|
138
138
|
"템플릿 호출 세부 정보를 가져오는 동안 오류가 발생했습니다."
|
|
@@ -264,28 +264,28 @@
|
|
|
264
264
|
"클립보드에 복사"
|
|
265
265
|
],
|
|
266
266
|
"Could not abort the job %s: %s": [
|
|
267
|
-
""
|
|
267
|
+
"%s 작업을 중단할 수 없습니다: %s"
|
|
268
268
|
],
|
|
269
269
|
"Could not abort the task": [
|
|
270
270
|
"작업을 중단할 수 없습니다"
|
|
271
271
|
],
|
|
272
272
|
"Could not cancel recurring logic %s: %s": [
|
|
273
|
-
""
|
|
273
|
+
"반복 논리 %s를 취소할 수 없습니다: %s"
|
|
274
274
|
],
|
|
275
275
|
"Could not cancel the job %s: %s": [
|
|
276
|
-
""
|
|
276
|
+
"%s 작업을 취소할 수 없습니다: %s"
|
|
277
277
|
],
|
|
278
278
|
"Could not cancel the task": [
|
|
279
279
|
"작업을 취소할 수 없습니다"
|
|
280
280
|
],
|
|
281
281
|
"Could not disable recurring logic %s: %s": [
|
|
282
|
-
""
|
|
282
|
+
"반복 논리 %s를 비활성화할 수 없습니다: %s"
|
|
283
283
|
],
|
|
284
284
|
"Could not display data for job invocation.": [
|
|
285
285
|
"작업 호출에 대한 데이터를 표시할 수 없습니다."
|
|
286
286
|
],
|
|
287
287
|
"Could not enable recurring logic %s: %s": [
|
|
288
|
-
""
|
|
288
|
+
"반복 논리 %s를 활성화할 수 없습니다: %s"
|
|
289
289
|
],
|
|
290
290
|
"Could not find any suitable interface for execution": [
|
|
291
291
|
"실행에 적합한 인터페이스를 찾을 수 없습니다."
|
|
@@ -318,7 +318,7 @@
|
|
|
318
318
|
"작업 템플릿 생성"
|
|
319
319
|
],
|
|
320
320
|
"Create a new job invocation": [
|
|
321
|
-
""
|
|
321
|
+
"새로운 작업 호출 생성"
|
|
322
322
|
],
|
|
323
323
|
"Create a recurring job": [
|
|
324
324
|
"반복 작업 생성"
|
|
@@ -366,7 +366,7 @@
|
|
|
366
366
|
"매일"
|
|
367
367
|
],
|
|
368
368
|
"Date must be in the future": [
|
|
369
|
-
"날짜는
|
|
369
|
+
"날짜는 미래 시점이어야 합니다."
|
|
370
370
|
],
|
|
371
371
|
"Days": [
|
|
372
372
|
"일"
|
|
@@ -411,7 +411,7 @@
|
|
|
411
411
|
"특수 목적의 지정"
|
|
412
412
|
],
|
|
413
413
|
"Directory on the host where remote execution jobs in push mode place and run their scripts. You can override this setting per host with the `remote_execution_remote_working_dir` host parameter.": [
|
|
414
|
-
""
|
|
414
|
+
"푸시 모드에서 원격 실행 작업이 스크립트를 배치하고 실행하는 호스트의 디렉터리입니다. `remote_execution_remote_working_dir` 호스트 매개변수를 사용하여 호스트별로 이 설정을 재정의할 수 있습니다."
|
|
415
415
|
],
|
|
416
416
|
"Disable recurring": [
|
|
417
417
|
"반복을 비활성화합니다"
|
|
@@ -432,7 +432,7 @@
|
|
|
432
432
|
"동적 쿼리"
|
|
433
433
|
],
|
|
434
434
|
"Edit %s": [
|
|
435
|
-
"%s 편집
|
|
435
|
+
"%s 편집"
|
|
436
436
|
],
|
|
437
437
|
"Edit Job Template": [
|
|
438
438
|
"작업 템플릿 편집"
|
|
@@ -549,7 +549,7 @@
|
|
|
549
549
|
"템플릿 렌더링 실패: %s"
|
|
550
550
|
],
|
|
551
551
|
"Failed to load host invocation data": [
|
|
552
|
-
""
|
|
552
|
+
"호스트 호출 데이터 로드 실패"
|
|
553
553
|
],
|
|
554
554
|
"Failed:": [
|
|
555
555
|
"실패함:"
|
|
@@ -606,7 +606,7 @@
|
|
|
606
606
|
"호스트에 대한 원시 출력 가져오기"
|
|
607
607
|
],
|
|
608
608
|
"Go to job invocations": [
|
|
609
|
-
""
|
|
609
|
+
"작업 호출로 이동"
|
|
610
610
|
],
|
|
611
611
|
"Has to be a positive number": [
|
|
612
612
|
"양수여야 합니다"
|
|
@@ -675,10 +675,10 @@
|
|
|
675
675
|
"외부 템플릿의 모든 입력 포함"
|
|
676
676
|
],
|
|
677
677
|
"Include hosts and template invocations in the response. Defaults to true for backwards compatibility. Pass false to skip serializing all hosts.": [
|
|
678
|
-
""
|
|
678
|
+
"응답에 호스트 및 템플릿 호출을 포함합니다. 이전 버전과의 호환성을 위해 기본값은 true입니다. 모든 호스트 직렬화를 건너뛰려면 false를 전달합니다."
|
|
679
679
|
],
|
|
680
680
|
"Include per-host task and permission data in the response": [
|
|
681
|
-
""
|
|
681
|
+
"응답에 호스트별 작업 및 권한 데이터를 포함합니다."
|
|
682
682
|
],
|
|
683
683
|
"Indicates that the action should be cancelled if it cannot be started before this time.": [
|
|
684
684
|
"이 시간 전에 시작할 수 없는 경우 작업을 취소한다는 것을 나타냅니다."
|
|
@@ -849,7 +849,7 @@
|
|
|
849
849
|
"분은 0~59 사이의 숫자만 가능합니다."
|
|
850
850
|
],
|
|
851
851
|
"Missing permissions to generate report templates": [
|
|
852
|
-
""
|
|
852
|
+
"보고서 템플릿을 생성하는 데 필요한 권한이 없습니다."
|
|
853
853
|
],
|
|
854
854
|
"Missing the required permissions: ${missingPermissions.join( ', ' )}": [
|
|
855
855
|
"필수 권한이 없습니다: ${missingPermissions.join( ', ' )}"
|
|
@@ -861,7 +861,7 @@
|
|
|
861
861
|
"북마크를 선택하거나 검색 쿼리를 입력해야 합니다."
|
|
862
862
|
],
|
|
863
863
|
"N/A": [
|
|
864
|
-
"해당 없음
|
|
864
|
+
"해당 없음"
|
|
865
865
|
],
|
|
866
866
|
"Name": [
|
|
867
867
|
"이름 "
|
|
@@ -1131,10 +1131,10 @@
|
|
|
1131
1131
|
"원격 실행 프록시"
|
|
1132
1132
|
],
|
|
1133
1133
|
"Remote working directory": [
|
|
1134
|
-
""
|
|
1134
|
+
"원격 작업 디렉토리"
|
|
1135
1135
|
],
|
|
1136
1136
|
"Remote working directory \\\"%{current_value}\\\" is not an absolute path": [
|
|
1137
|
-
""
|
|
1137
|
+
"원격 작업 디렉토리 \\\"%{current_value}\\\"이/가 절대 경로가 아닙니다."
|
|
1138
1138
|
],
|
|
1139
1139
|
"Repeat a maximum of N times": [
|
|
1140
1140
|
"최대 N번 반복"
|
|
@@ -1149,7 +1149,7 @@
|
|
|
1149
1149
|
"반복"
|
|
1150
1150
|
],
|
|
1151
1151
|
"Report template not found or not configured properly": [
|
|
1152
|
-
""
|
|
1152
|
+
"보고서 템플릿을 찾을 수 없거나 올바르게 구성되지 않았습니다."
|
|
1153
1153
|
],
|
|
1154
1154
|
"Rerun": [
|
|
1155
1155
|
"재실행"
|
|
@@ -1356,7 +1356,7 @@
|
|
|
1356
1356
|
"작업 호출 표시"
|
|
1357
1357
|
],
|
|
1358
1358
|
"Show job status for each host, only applicable when include_hosts is true": [
|
|
1359
|
-
""
|
|
1359
|
+
"각 호스트의 작업 상태를 표시합니다. 이 기능은 include_hosts가 true인 경우에만 적용됩니다."
|
|
1360
1360
|
],
|
|
1361
1361
|
"Show job template details": [
|
|
1362
1362
|
"작업 템플릿 정보 표시"
|
|
@@ -1374,7 +1374,7 @@
|
|
|
1374
1374
|
"스마트 프록시"
|
|
1375
1375
|
],
|
|
1376
1376
|
"Snippet": [
|
|
1377
|
-
"
|
|
1377
|
+
"스니펫"
|
|
1378
1378
|
],
|
|
1379
1379
|
"Start": [
|
|
1380
1380
|
"시작"
|
|
@@ -1410,7 +1410,7 @@
|
|
|
1410
1410
|
"정적 쿼리"
|
|
1411
1411
|
],
|
|
1412
1412
|
"Status": [
|
|
1413
|
-
"상태
|
|
1413
|
+
"상태"
|
|
1414
1414
|
],
|
|
1415
1415
|
"Submit": [
|
|
1416
1416
|
"보내기"
|
|
@@ -1557,7 +1557,7 @@
|
|
|
1557
1557
|
"작업이 시작된 후 호스트가 제거되거나 다른 조직이나 위치로 이동된 경우 이러한 문제가 발생할 수 있습니다."
|
|
1558
1558
|
],
|
|
1559
1559
|
"This template is locked for editing.": [
|
|
1560
|
-
"이 템플릿은
|
|
1560
|
+
"이 템플릿은 편집이 잠금되어 있습니다. "
|
|
1561
1561
|
],
|
|
1562
1562
|
"This template is locked. Please clone it to a new template to customize.": [
|
|
1563
1563
|
"이 템플릿은 잠겨 있습니다. 사용자 정의하려면 이를 새 템플릿에 복제하십시오. "
|
|
@@ -1668,10 +1668,10 @@
|
|
|
1668
1668
|
"템플릿을 저장할 수 없습니다. 강조된 오류를 수정합니다."
|
|
1669
1669
|
],
|
|
1670
1670
|
"Unknown": [
|
|
1671
|
-
"알 수 없음
|
|
1671
|
+
"알 수 없음"
|
|
1672
1672
|
],
|
|
1673
1673
|
"Unknown error.": [
|
|
1674
|
-
""
|
|
1674
|
+
"알 수 없는 오류입니다."
|
|
1675
1675
|
],
|
|
1676
1676
|
"Unknown execution status": [
|
|
1677
1677
|
"알 수 없는 실행 상태"
|
|
@@ -1764,7 +1764,7 @@
|
|
|
1764
1764
|
"호출할 유효 사용자를 덮어쓰도록 허용할지 여부입니다."
|
|
1765
1765
|
],
|
|
1766
1766
|
"Whether or not the template is locked for editing": [
|
|
1767
|
-
"
|
|
1767
|
+
"템플릿 편집 잠금 여부"
|
|
1768
1768
|
],
|
|
1769
1769
|
"Whether the current user login should be used as the effective user": [
|
|
1770
1770
|
"현재 사용자 로그인을 유효 사용자로 사용할지 여부입니다."
|
|
@@ -1821,7 +1821,7 @@
|
|
|
1821
1821
|
"호스트에 실행 인터페이스가 이미 있습니다."
|
|
1822
1822
|
],
|
|
1823
1823
|
"host method": [
|
|
1824
|
-
""
|
|
1824
|
+
"호스트 메서드"
|
|
1825
1825
|
],
|
|
1826
1826
|
"hosts": [
|
|
1827
1827
|
"호스트"
|
|
@@ -1851,10 +1851,10 @@
|
|
|
1851
1851
|
"월(범위: 1-12)"
|
|
1852
1852
|
],
|
|
1853
1853
|
"job invocation": [
|
|
1854
|
-
""
|
|
1854
|
+
"작업 호출"
|
|
1855
1855
|
],
|
|
1856
1856
|
"must be an absolute path": [
|
|
1857
|
-
""
|
|
1857
|
+
"절대 경로여야 합니다."
|
|
1858
1858
|
],
|
|
1859
1859
|
"no": [
|
|
1860
1860
|
"no"
|
data/app/assets/javascripts/foreman_remote_execution/locale/zh_CN/foreman_remote_execution.js
CHANGED
|
@@ -132,7 +132,7 @@
|
|
|
132
132
|
"按字母"
|
|
133
133
|
],
|
|
134
134
|
"Already on the review step": [
|
|
135
|
-
""
|
|
135
|
+
"已在审阅步骤中"
|
|
136
136
|
],
|
|
137
137
|
"An error occurred while fetching the template invocation details.": [
|
|
138
138
|
"在获取模板调用详情时出错。"
|
|
@@ -264,28 +264,28 @@
|
|
|
264
264
|
"复制到剪贴板"
|
|
265
265
|
],
|
|
266
266
|
"Could not abort the job %s: %s": [
|
|
267
|
-
""
|
|
267
|
+
"无法中止作业 %s: %s"
|
|
268
268
|
],
|
|
269
269
|
"Could not abort the task": [
|
|
270
270
|
"无法中止作业"
|
|
271
271
|
],
|
|
272
272
|
"Could not cancel recurring logic %s: %s": [
|
|
273
|
-
""
|
|
273
|
+
"无法取消循环逻辑 %s:%s"
|
|
274
274
|
],
|
|
275
275
|
"Could not cancel the job %s: %s": [
|
|
276
|
-
""
|
|
276
|
+
"无法取消作业 %s: %s"
|
|
277
277
|
],
|
|
278
278
|
"Could not cancel the task": [
|
|
279
279
|
"无法取消作业"
|
|
280
280
|
],
|
|
281
281
|
"Could not disable recurring logic %s: %s": [
|
|
282
|
-
""
|
|
282
|
+
"无法禁用重复逻辑 %s:%s"
|
|
283
283
|
],
|
|
284
284
|
"Could not display data for job invocation.": [
|
|
285
285
|
"无法显示用于作业调用的数据。"
|
|
286
286
|
],
|
|
287
287
|
"Could not enable recurring logic %s: %s": [
|
|
288
|
-
""
|
|
288
|
+
"无法启用重复逻辑 %s:%s"
|
|
289
289
|
],
|
|
290
290
|
"Could not find any suitable interface for execution": [
|
|
291
291
|
"无法找到适合执行的接口"
|
|
@@ -318,7 +318,7 @@
|
|
|
318
318
|
"创建作业模板"
|
|
319
319
|
],
|
|
320
320
|
"Create a new job invocation": [
|
|
321
|
-
""
|
|
321
|
+
"创建新作业调用"
|
|
322
322
|
],
|
|
323
323
|
"Create a recurring job": [
|
|
324
324
|
"创建一个重复运行的作业"
|
|
@@ -411,7 +411,7 @@
|
|
|
411
411
|
"设计特殊目的"
|
|
412
412
|
],
|
|
413
413
|
"Directory on the host where remote execution jobs in push mode place and run their scripts. You can override this setting per host with the `remote_execution_remote_working_dir` host parameter.": [
|
|
414
|
-
""
|
|
414
|
+
"主机上以推送模式运行的远程执行作业存放并运行其脚本的目录。。您可以使用 'remote_execution_remote_working_dir' 主机参数覆盖每个主机的设置。"
|
|
415
415
|
],
|
|
416
416
|
"Disable recurring": [
|
|
417
417
|
"禁用重复"
|
|
@@ -549,7 +549,7 @@
|
|
|
549
549
|
"呈现模板失败:%s"
|
|
550
550
|
],
|
|
551
551
|
"Failed to load host invocation data": [
|
|
552
|
-
""
|
|
552
|
+
"加载主机调用数据失败"
|
|
553
553
|
],
|
|
554
554
|
"Failed:": [
|
|
555
555
|
"失败:"
|
|
@@ -606,7 +606,7 @@
|
|
|
606
606
|
"获取主机的原始输出"
|
|
607
607
|
],
|
|
608
608
|
"Go to job invocations": [
|
|
609
|
-
""
|
|
609
|
+
"返回到作业调用"
|
|
610
610
|
],
|
|
611
611
|
"Has to be a positive number": [
|
|
612
612
|
"必须为一个正数"
|
|
@@ -675,10 +675,10 @@
|
|
|
675
675
|
"在外部模板中包含所有输入格式"
|
|
676
676
|
],
|
|
677
677
|
"Include hosts and template invocations in the response. Defaults to true for backwards compatibility. Pass false to skip serializing all hosts.": [
|
|
678
|
-
""
|
|
678
|
+
"在响应中包含主机和模板调用。为了向后兼容,默认为 true。设置为 false 来跳过所有主机的序列化。"
|
|
679
679
|
],
|
|
680
680
|
"Include per-host task and permission data in the response": [
|
|
681
|
-
""
|
|
681
|
+
"在响应中包含每个主机的任务和权限数据"
|
|
682
682
|
],
|
|
683
683
|
"Indicates that the action should be cancelled if it cannot be started before this time.": [
|
|
684
684
|
"这代表,如果操作无法在这个时间前开始则操作应该被取消。"
|
|
@@ -849,7 +849,7 @@
|
|
|
849
849
|
"分钟只能是一个 0-59 之间的数字"
|
|
850
850
|
],
|
|
851
851
|
"Missing permissions to generate report templates": [
|
|
852
|
-
""
|
|
852
|
+
"缺少生成报告模板的权限"
|
|
853
853
|
],
|
|
854
854
|
"Missing the required permissions: ${missingPermissions.join( ', ' )}": [
|
|
855
855
|
"缺少所需的权限:${missingPermissions.join( ', ' )}"
|
|
@@ -1095,7 +1095,7 @@
|
|
|
1095
1095
|
"重复逻辑"
|
|
1096
1096
|
],
|
|
1097
1097
|
"Recurring logic %s cancelled successfully.": [
|
|
1098
|
-
"
|
|
1098
|
+
"成功取消循环逻辑 %s。"
|
|
1099
1099
|
],
|
|
1100
1100
|
"Recurring logic %s disabled successfully.": [
|
|
1101
1101
|
"成功禁用重复逻辑 %s。"
|
|
@@ -1131,10 +1131,10 @@
|
|
|
1131
1131
|
"远程执行作业"
|
|
1132
1132
|
],
|
|
1133
1133
|
"Remote working directory": [
|
|
1134
|
-
""
|
|
1134
|
+
"远程工作目录"
|
|
1135
1135
|
],
|
|
1136
1136
|
"Remote working directory \\\"%{current_value}\\\" is not an absolute path": [
|
|
1137
|
-
""
|
|
1137
|
+
"远程工作目录 \\\"%{current_value}\\\" 不是绝对路径"
|
|
1138
1138
|
],
|
|
1139
1139
|
"Repeat a maximum of N times": [
|
|
1140
1140
|
"最多重复 N 次"
|
|
@@ -1149,7 +1149,7 @@
|
|
|
1149
1149
|
"重复"
|
|
1150
1150
|
],
|
|
1151
1151
|
"Report template not found or not configured properly": [
|
|
1152
|
-
""
|
|
1152
|
+
"报告模板未找到或未正确配置"
|
|
1153
1153
|
],
|
|
1154
1154
|
"Rerun": [
|
|
1155
1155
|
"重新运行"
|
|
@@ -1356,7 +1356,7 @@
|
|
|
1356
1356
|
"显示作业调用"
|
|
1357
1357
|
],
|
|
1358
1358
|
"Show job status for each host, only applicable when include_hosts is true": [
|
|
1359
|
-
""
|
|
1359
|
+
"显示每个主机的作业状态,仅在 include_hosts 为 true 时才适用"
|
|
1360
1360
|
],
|
|
1361
1361
|
"Show job template details": [
|
|
1362
1362
|
"显示作业模板详情"
|
|
@@ -1671,7 +1671,7 @@
|
|
|
1671
1671
|
"未知"
|
|
1672
1672
|
],
|
|
1673
1673
|
"Unknown error.": [
|
|
1674
|
-
""
|
|
1674
|
+
"未知错误"
|
|
1675
1675
|
],
|
|
1676
1676
|
"Unknown execution status": [
|
|
1677
1677
|
"未知的执行状态"
|
|
@@ -1821,7 +1821,7 @@
|
|
|
1821
1821
|
"主机已有一个执行接口"
|
|
1822
1822
|
],
|
|
1823
1823
|
"host method": [
|
|
1824
|
-
""
|
|
1824
|
+
"主机方法"
|
|
1825
1825
|
],
|
|
1826
1826
|
"hosts": [
|
|
1827
1827
|
"主机"
|
|
@@ -1851,10 +1851,10 @@
|
|
|
1851
1851
|
"月份(范围:1-12)"
|
|
1852
1852
|
],
|
|
1853
1853
|
"job invocation": [
|
|
1854
|
-
""
|
|
1854
|
+
"工作调用"
|
|
1855
1855
|
],
|
|
1856
1856
|
"must be an absolute path": [
|
|
1857
|
-
""
|
|
1857
|
+
"必须是绝对路径"
|
|
1858
1858
|
],
|
|
1859
1859
|
"no": [
|
|
1860
1860
|
"否"
|
|
@@ -1,87 +1,3 @@
|
|
|
1
|
-
$(function() { job_invocation_form_binds() });
|
|
2
|
-
|
|
3
|
-
function refresh_execution_form(perform_description_reset) {
|
|
4
|
-
var form = $('form#job_invocation_form');
|
|
5
|
-
var data = form.serializeArray();
|
|
6
|
-
|
|
7
|
-
request = $.ajax({
|
|
8
|
-
data: data,
|
|
9
|
-
type: 'POST',
|
|
10
|
-
url: form.attr('data-refresh-url'),
|
|
11
|
-
dataType: 'script'
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
request.done(function () {
|
|
15
|
-
password_caps_lock_hint();
|
|
16
|
-
form.find('a[rel="popover-modal"]').popover({html: true});
|
|
17
|
-
form.find('select').select2({allowClear: true});
|
|
18
|
-
if(perform_description_reset == true) {
|
|
19
|
-
var fieldset = $('fieldset#job_template_' + $('select.job_template_selector').val());
|
|
20
|
-
reset_description(fieldset);
|
|
21
|
-
}
|
|
22
|
-
template_change($('select.job_template_selector'));
|
|
23
|
-
job_invocation_form_binds();
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
function refresh_search_query(value){
|
|
28
|
-
id = value.val;
|
|
29
|
-
$('textarea#targeting_search_query').val($('span#bookmark_query_map span#bookmark-' + id).data('query'));
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
function show_preview_hosts_modal() {
|
|
33
|
-
var form = $('form#job_invocation_form');
|
|
34
|
-
var data = form
|
|
35
|
-
.serializeArray()
|
|
36
|
-
.filter(function(item) {
|
|
37
|
-
return [
|
|
38
|
-
'targeting[search_query]',
|
|
39
|
-
'targeting[bookmark_id]',
|
|
40
|
-
'targeting[targeting_type]',
|
|
41
|
-
'targeting[randomized_ordering]',
|
|
42
|
-
].includes(item.name)
|
|
43
|
-
});
|
|
44
|
-
request = $.ajax({
|
|
45
|
-
data: data,
|
|
46
|
-
type: 'GET',
|
|
47
|
-
url: $('#previewHostsModal').attr('data-url')
|
|
48
|
-
}).then(function(result){
|
|
49
|
-
var modal_window = $('#previewHostsModal');
|
|
50
|
-
modal_window.find('.modal-body').html(result);
|
|
51
|
-
modal_window.modal({'show': true});
|
|
52
|
-
modal_window.find('a[rel="popover-modal"]').popover();
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
function close_preview_hosts_modal() {
|
|
57
|
-
var modal_window = $('#previewHostsModal');
|
|
58
|
-
modal_window.modal('hide');
|
|
59
|
-
modal_window.removeData();
|
|
60
|
-
modal_window.find('.modal-body').html('');
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
function job_invocation_form_binds() {
|
|
64
|
-
$('select.job_template_selector').on('click', function () {
|
|
65
|
-
provider_fieldset = $('#provider_' + $(this).data('providerType'));
|
|
66
|
-
$(provider_fieldset).find('fieldset.job_template_form').hide();
|
|
67
|
-
$('#job_template_' + $(this).val()).show();
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
$('select#job_invocation_job_category').on('change', function() {
|
|
71
|
-
refresh_execution_form(true);
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
$('button#refresh_execution_form').on('click', refresh_execution_form);
|
|
75
|
-
|
|
76
|
-
$('button#preview_hosts').on('click', show_preview_hosts_modal);
|
|
77
|
-
|
|
78
|
-
$('textarea#targeting_search_query').on('change', refresh_execution_form);
|
|
79
|
-
|
|
80
|
-
$('select#targeting_bookmark_id').on('change', refresh_search_query);
|
|
81
|
-
|
|
82
|
-
tfm.advancedFields.initAdvancedFields()
|
|
83
|
-
}
|
|
84
|
-
|
|
85
1
|
function delayed_refresh(url, data){
|
|
86
2
|
setTimeout(function () {
|
|
87
3
|
$.ajax(
|
|
@@ -94,89 +10,3 @@ function delayed_refresh(url, data){
|
|
|
94
10
|
)
|
|
95
11
|
}, 1000);
|
|
96
12
|
}
|
|
97
|
-
|
|
98
|
-
function job_invocation_refresh_data(){
|
|
99
|
-
return {
|
|
100
|
-
hosts_needs_refresh: $("div#hosts").data('refresh_required'),
|
|
101
|
-
host_ids_needing_name_update: fetch_ids_of_hosts('name'),
|
|
102
|
-
host_ids_needing_status_update: fetch_ids_of_hosts('status'),
|
|
103
|
-
host_ids_needing_actions_update: fetch_ids_of_hosts('actions')
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
function fetch_ids_of_hosts(attribute){
|
|
108
|
-
return $('div#hosts td.host_' + attribute + '[data-refresh_required="true"]').map(function() { return $(this).data('id') }).get();
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
function regenerate_description(thing) {
|
|
112
|
-
var fieldset = $(thing).closest('fieldset');
|
|
113
|
-
var dict = load_keys(fieldset);
|
|
114
|
-
var format = fieldset.find('.description_format').val();
|
|
115
|
-
fieldset.find('.description').val(String.format(format, dict));
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
function load_keys(parent) {
|
|
119
|
-
var dict = {};
|
|
120
|
-
var pattern = $(parent).find(".description_format").val();
|
|
121
|
-
var re = new RegExp("%\\{([^\\}]+)\\}", "gm");
|
|
122
|
-
var match = re.exec(pattern);
|
|
123
|
-
while(match != null) {
|
|
124
|
-
dict[match[1]] = $(parent).find("#" + match[1]).val();
|
|
125
|
-
match = re.exec(pattern);
|
|
126
|
-
}
|
|
127
|
-
dict['job_category'] = $('#job_invocation_job_category').val();
|
|
128
|
-
dict['template_name'] = $('.job_template_selector:visible span.select2-chosen').html();
|
|
129
|
-
return dict;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
function description_override(source) {
|
|
133
|
-
var description_format_container = $(source).closest('fieldset').find('.description_format_container');
|
|
134
|
-
var description_format = $(description_format_container).find('.description_format');
|
|
135
|
-
var old_value = $(source).val();
|
|
136
|
-
if($(source).is(':checked')) {
|
|
137
|
-
$(description_format_container).hide();
|
|
138
|
-
} else {
|
|
139
|
-
$(description_format_container).show();
|
|
140
|
-
}
|
|
141
|
-
$(source).val($(description_format).val());
|
|
142
|
-
$(description_format).val(old_value);
|
|
143
|
-
regenerate_description(description_format);
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
function template_change(source) {
|
|
147
|
-
var template_forms = $('fieldset.job_template_form');
|
|
148
|
-
for(i = 0; i < template_forms.length; i++) {
|
|
149
|
-
set_description_disable(template_forms[i], true);
|
|
150
|
-
}
|
|
151
|
-
var id = $(source).val();
|
|
152
|
-
var template_fieldset = $(source).closest('form').find('fieldset#job_template_' + id);
|
|
153
|
-
set_description_disable(template_fieldset, false);
|
|
154
|
-
regenerate_description(template_fieldset.find('.description'));
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
function set_description_disable(thing, value) {
|
|
158
|
-
$(thing).find('.description').prop('disabled', value);
|
|
159
|
-
$(thing).find('.description_format').prop('disabled', value);
|
|
160
|
-
$(thing).find('.description_format_override').prop('disabled', value);
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
function reset_description(fieldset) {
|
|
164
|
-
var checkbox = $(fieldset).find('.description_format_override');
|
|
165
|
-
$(fieldset).find('.description_format').val($(checkbox).val());
|
|
166
|
-
$(checkbox).prop('checked', true);
|
|
167
|
-
$(fieldset).find('.description_format_container').hide();
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
String.format = function (pattern, dict) {
|
|
171
|
-
if(pattern == undefined) {
|
|
172
|
-
return "";
|
|
173
|
-
}
|
|
174
|
-
for (var key in dict) {
|
|
175
|
-
var regEx = new RegExp("%\\{" + key + "\\}", "gm");
|
|
176
|
-
if(dict[key] == undefined) {
|
|
177
|
-
dict[key] = "%{" + key + "}"
|
|
178
|
-
}
|
|
179
|
-
pattern = pattern.replace(regEx, dict[key]);
|
|
180
|
-
}
|
|
181
|
-
return pattern;
|
|
182
|
-
};
|