foreman_remote_execution 4.2.2 → 4.5.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.
Files changed (109) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/js_ci.yml +29 -0
  3. data/.github/workflows/{ci.yml → ruby_ci.yml} +22 -50
  4. data/.prettierrc +4 -0
  5. data/.rubocop.yml +13 -49
  6. data/.rubocop_todo.yml +326 -102
  7. data/Gemfile +1 -4
  8. data/app/controllers/api/v2/job_invocations_controller.rb +28 -23
  9. data/app/controllers/foreman_remote_execution/concerns/api/v2/registration_commands_controller_extensions.rb +19 -0
  10. data/app/controllers/job_templates_controller.rb +4 -4
  11. data/app/controllers/ui_job_wizard_controller.rb +30 -0
  12. data/app/helpers/job_invocations_helper.rb +2 -2
  13. data/app/helpers/remote_execution_helper.rb +35 -8
  14. data/app/lib/actions/remote_execution/run_host_job.rb +68 -5
  15. data/app/lib/foreman_remote_execution/provider_input.rb +29 -0
  16. data/app/lib/foreman_remote_execution/renderer/scope/input.rb +1 -0
  17. data/app/models/concerns/foreman_remote_execution/host_extensions.rb +5 -5
  18. data/app/models/host_status/execution_status.rb +12 -5
  19. data/app/models/invocation_provider_input_value.rb +12 -0
  20. data/app/models/job_invocation.rb +28 -8
  21. data/app/models/job_invocation_composer.rb +72 -17
  22. data/app/models/remote_execution_provider.rb +17 -2
  23. data/app/models/setting/remote_execution.rb +10 -0
  24. data/app/models/ssh_execution_provider.rb +4 -4
  25. data/app/models/template_invocation.rb +2 -0
  26. data/app/overrides/execution_interface.rb +8 -8
  27. data/app/overrides/subnet_proxies.rb +6 -6
  28. data/app/services/renderer_methods.rb +12 -0
  29. data/app/views/job_invocations/_form.html.erb +8 -0
  30. data/app/views/template_invocations/show.html.erb +30 -23
  31. data/config/routes.rb +5 -0
  32. data/db/migrate/20180110104432_rename_template_invocation_permission.rb +1 -1
  33. data/db/migrate/20190111153330_remove_remote_execution_without_proxy_setting.rb +4 -4
  34. data/db/migrate/20210312074713_add_provider_inputs.rb +10 -0
  35. data/extra/cockpit/foreman-cockpit-session +6 -6
  36. data/foreman_remote_execution.gemspec +1 -2
  37. data/lib/foreman_remote_execution/engine.rb +22 -7
  38. data/lib/foreman_remote_execution/version.rb +1 -1
  39. data/lib/tasks/foreman_remote_execution_tasks.rake +1 -18
  40. data/locale/action_names.rb +1 -0
  41. data/locale/de/foreman_remote_execution.po +77 -27
  42. data/locale/en/foreman_remote_execution.po +77 -27
  43. data/locale/en_GB/foreman_remote_execution.po +77 -27
  44. data/locale/es/foreman_remote_execution.po +77 -27
  45. data/locale/foreman_remote_execution.pot +241 -163
  46. data/locale/fr/foreman_remote_execution.po +77 -27
  47. data/locale/ja/foreman_remote_execution.po +77 -27
  48. data/locale/ko/foreman_remote_execution.po +77 -27
  49. data/locale/pt_BR/foreman_remote_execution.po +77 -27
  50. data/locale/ru/foreman_remote_execution.po +77 -27
  51. data/locale/zh_CN/foreman_remote_execution.po +77 -27
  52. data/locale/zh_TW/foreman_remote_execution.po +77 -27
  53. data/package.json +4 -2
  54. data/test/functional/api/v2/job_invocations_controller_test.rb +38 -5
  55. data/test/functional/api/v2/registration_controller_test.rb +4 -13
  56. data/test/functional/ui_job_wizard_controller_test.rb +16 -0
  57. data/test/helpers/remote_execution_helper_test.rb +16 -0
  58. data/test/unit/job_invocation_composer_test.rb +86 -2
  59. data/test/unit/job_invocation_report_template_test.rb +57 -0
  60. data/webpack/JobWizard/JobWizard.js +96 -0
  61. data/webpack/JobWizard/JobWizard.scss +14 -0
  62. data/webpack/JobWizard/JobWizardConstants.js +6 -0
  63. data/webpack/JobWizard/JobWizardSelectors.js +38 -0
  64. data/webpack/JobWizard/__tests__/JobWizard.test.js +13 -0
  65. data/webpack/JobWizard/__tests__/__snapshots__/JobWizard.test.js.snap +32 -0
  66. data/webpack/JobWizard/__tests__/__snapshots__/integration.test.js.snap +43 -0
  67. data/webpack/JobWizard/__tests__/fixtures.js +26 -0
  68. data/webpack/JobWizard/__tests__/integration.test.js +156 -0
  69. data/webpack/JobWizard/index.js +32 -0
  70. data/webpack/JobWizard/steps/AdvancedFields/AdvancedFields.js +93 -0
  71. data/webpack/JobWizard/steps/AdvancedFields/Fields.js +181 -0
  72. data/webpack/JobWizard/steps/AdvancedFields/__tests__/AdvancedFields.test.js +25 -0
  73. data/webpack/JobWizard/steps/AdvancedFields/__tests__/__snapshots__/AdvancedFields.test.js.snap +249 -0
  74. data/webpack/JobWizard/steps/CategoryAndTemplate/CategoryAndTemplate.js +109 -0
  75. data/webpack/JobWizard/steps/CategoryAndTemplate/CategoryAndTemplate.test.js +52 -0
  76. data/webpack/JobWizard/steps/CategoryAndTemplate/__snapshots__/CategoryAndTemplate.test.js.snap +113 -0
  77. data/webpack/JobWizard/steps/CategoryAndTemplate/index.js +94 -0
  78. data/webpack/JobWizard/steps/form/FormHelpers.js +19 -0
  79. data/webpack/JobWizard/steps/form/GroupedSelectField.js +91 -0
  80. data/webpack/JobWizard/steps/form/SelectField.js +48 -0
  81. data/webpack/JobWizard/steps/form/__tests__/GroupedSelectField.test.js +38 -0
  82. data/webpack/JobWizard/steps/form/__tests__/SelectField.test.js +23 -0
  83. data/webpack/JobWizard/steps/form/__tests__/__snapshots__/GroupedSelectField.test.js.snap +37 -0
  84. data/webpack/JobWizard/steps/form/__tests__/__snapshots__/SelectField.test.js.snap +23 -0
  85. data/webpack/Routes/routes.js +12 -0
  86. data/webpack/__mocks__/foremanReact/common/helpers.js +1 -0
  87. data/webpack/__mocks__/foremanReact/history.js +1 -0
  88. data/webpack/__mocks__/foremanReact/redux/API/APISelectors.js +21 -2
  89. data/webpack/__mocks__/foremanReact/redux/API/index.js +5 -0
  90. data/webpack/__mocks__/foremanReact/routes/common/PageLayout/PageLayout.js +10 -0
  91. data/webpack/global_index.js +10 -0
  92. data/webpack/index.js +3 -4
  93. data/webpack/react_app/components/RecentJobsCard/RecentJobsCard.js +83 -0
  94. data/webpack/react_app/components/RecentJobsCard/constants.js +1 -0
  95. data/webpack/react_app/components/RecentJobsCard/index.js +1 -0
  96. data/webpack/react_app/components/RecentJobsCard/styles.css +15 -0
  97. data/webpack/react_app/components/RegistrationExtension/RexInterface.js +50 -0
  98. data/webpack/react_app/components/RegistrationExtension/__tests__/RexInterface.test.js +9 -0
  99. data/webpack/react_app/components/RegistrationExtension/__tests__/__snapshots__/RexInterface.test.js.snap +35 -0
  100. data/webpack/react_app/components/TargetingHosts/TargetingHostsPage.js +1 -1
  101. data/webpack/react_app/components/TargetingHosts/TargetingHostsPage.scss +0 -3
  102. data/webpack/react_app/components/TargetingHosts/__tests__/TargetingHostsSelectors.test.js +8 -3
  103. data/webpack/react_app/components/TargetingHosts/__tests__/__snapshots__/TargetingHostsPage.test.js.snap +1 -1
  104. data/webpack/react_app/components/TargetingHosts/__tests__/__snapshots__/TargetingHostsSelectors.test.js.snap +7 -2
  105. data/webpack/react_app/extend/fillRecentJobsCard.js +11 -0
  106. data/webpack/react_app/extend/fillregistrationAdvanced.js +11 -0
  107. data/webpack/react_app/extend/reducers.js +5 -0
  108. metadata +58 -20
  109. data/app/views/api/v2/registration/_form.html.erb +0 -12
@@ -0,0 +1,10 @@
1
+ import { registerRoutes } from 'foremanReact/routes/RoutingService';
2
+ import routes from './Routes/routes';
3
+ import fillregistrationAdvanced from './react_app/extend/fillregistrationAdvanced';
4
+ import fillRecentJobsCard from './react_app/extend/fillRecentJobsCard';
5
+ import registerReducers from './react_app/extend/reducers';
6
+
7
+ registerReducers();
8
+ registerRoutes('foreman_remote_execution', routes);
9
+ fillRecentJobsCard();
10
+ fillregistrationAdvanced();
data/webpack/index.js CHANGED
@@ -1,8 +1,9 @@
1
- import { registerReducer } from 'foremanReact/common/MountingService';
2
1
  import componentRegistry from 'foremanReact/components/componentRegistry';
3
2
  import JobInvocationContainer from './react_app/components/jobInvocations';
4
3
  import TargetingHosts from './react_app/components/TargetingHosts';
5
- import rootReducer from './react_app/redux/reducers';
4
+ import registerReducers from './react_app/extend/reducers';
5
+
6
+ registerReducers();
6
7
 
7
8
  const components = [
8
9
  { name: 'JobInvocationContainer', type: JobInvocationContainer },
@@ -12,5 +13,3 @@ const components = [
12
13
  components.forEach(component => {
13
14
  componentRegistry.register(component);
14
15
  });
15
-
16
- registerReducer('foremanRemoteExecutionReducers', rootReducer);
@@ -0,0 +1,83 @@
1
+ /* eslint-disable camelcase */
2
+
3
+ import PropTypes from 'prop-types';
4
+ import React from 'react';
5
+ import Skeleton from 'react-loading-skeleton';
6
+ import ElipsisWithTooltip from 'react-ellipsis-with-tooltip';
7
+
8
+ import { Grid, GridItem } from '@patternfly/react-core';
9
+ import {
10
+ PropertiesSidePanel,
11
+ PropertyItem,
12
+ } from '@patternfly/react-catalog-view-extension';
13
+ import { ArrowIcon, ErrorCircleOIcon, OkIcon } from '@patternfly/react-icons';
14
+
15
+ import { useAPI } from 'foremanReact/common/hooks/API/APIHooks';
16
+ import CardItem from 'foremanReact/components/HostDetails/Templates/CardItem/CardTemplate';
17
+ import RelativeDateTime from 'foremanReact/components/common/dates/RelativeDateTime';
18
+ import { translate as __ } from 'foremanReact/common/I18n';
19
+ import './styles.css';
20
+
21
+ const RecentJobsCard = ({ hostDetails: { name } }) => {
22
+ const jobsUrl =
23
+ name && `/api/job_invocations?search=host%3D${name}&per_page=3`;
24
+ const {
25
+ response: { results: jobs },
26
+ } = useAPI('get', jobsUrl);
27
+
28
+ const iconMarkup = status => {
29
+ if (status === 1) return <ErrorCircleOIcon color="#C9190B" />;
30
+ return <OkIcon color="#3E8635" />;
31
+ };
32
+
33
+ return (
34
+ <CardItem
35
+ header={
36
+ <span>
37
+ {__('Recent Jobs')}{' '}
38
+ <a href={`/job_invocations?search=host+%3D+${name}`}>
39
+ <ArrowIcon />
40
+ </a>
41
+ </span>
42
+ }
43
+ >
44
+ <PropertiesSidePanel>
45
+ {jobs?.map(({ status, status_label, id, start_at, description }) => (
46
+ <PropertyItem
47
+ key={id}
48
+ label={
49
+ description ? (
50
+ <Grid>
51
+ <GridItem span={8}>
52
+ <ElipsisWithTooltip>{description}</ElipsisWithTooltip>
53
+ </GridItem>
54
+ <GridItem span={1}>{iconMarkup(status)}</GridItem>
55
+ <GridItem span={3}>{status_label}</GridItem>
56
+ </Grid>
57
+ ) : (
58
+ <Skeleton />
59
+ )
60
+ }
61
+ value={
62
+ start_at ? (
63
+ <a href={`/job_invocations/${id}`}>
64
+ <RelativeDateTime date={start_at} />
65
+ </a>
66
+ ) : (
67
+ <Skeleton />
68
+ )
69
+ }
70
+ />
71
+ ))}
72
+ </PropertiesSidePanel>
73
+ </CardItem>
74
+ );
75
+ };
76
+
77
+ export default RecentJobsCard;
78
+
79
+ RecentJobsCard.propTypes = {
80
+ hostDetails: PropTypes.shape({
81
+ name: PropTypes.string,
82
+ }).isRequired,
83
+ };
@@ -0,0 +1 @@
1
+ export const HOST_DETAILS_JOBS = 'HOST_DETAILS_JOBS';
@@ -0,0 +1 @@
1
+ export { default } from './RecentJobsCard';
@@ -0,0 +1,15 @@
1
+ .properties-side-panel-pf-property-value {
2
+ font-size: 14px !important;
3
+ margin-top: 8px;
4
+ word-break: break-word;
5
+ }
6
+
7
+ .properties-side-panel-pf-property-label {
8
+ font-weight: 700 !important;
9
+ font-size: 14px !important;
10
+ margin: 0 !important;
11
+ }
12
+
13
+ .properties-side-panel-pf-property {
14
+ margin-top: 24px;
15
+ }
@@ -0,0 +1,50 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+
4
+ import { translate as __ } from 'foremanReact/common/I18n';
5
+
6
+ import { FormGroup, TextInput, Popover } from '@patternfly/react-core';
7
+
8
+ import { HelpIcon } from '@patternfly/react-icons';
9
+
10
+ const RexInterface = ({ isLoading, onChange }) => (
11
+ <FormGroup
12
+ label={__('Remote Execution Interface')}
13
+ fieldId="reg_rex_interface"
14
+ labelIcon={
15
+ <Popover
16
+ bodyContent={
17
+ <div>
18
+ {__('Identifier of the Host interface for Remote execution')}
19
+ </div>
20
+ }
21
+ >
22
+ <button
23
+ className="pf-c-form__group-label-help"
24
+ onClick={e => e.preventDefault()}
25
+ >
26
+ <HelpIcon noVerticalAlign />
27
+ </button>
28
+ </Popover>
29
+ }
30
+ >
31
+ <TextInput
32
+ type="text"
33
+ onBlur={e => onChange({ remoteExecutionInterface: e.target.value })}
34
+ id="reg_rex_interface_input"
35
+ isDisabled={isLoading}
36
+ />
37
+ </FormGroup>
38
+ );
39
+
40
+ RexInterface.propTypes = {
41
+ onChange: PropTypes.func,
42
+ isLoading: PropTypes.bool,
43
+ };
44
+
45
+ RexInterface.defaultProps = {
46
+ onChange: undefined,
47
+ isLoading: false,
48
+ };
49
+
50
+ export default RexInterface;
@@ -0,0 +1,9 @@
1
+ import { testComponentSnapshotsWithFixtures } from '@theforeman/test';
2
+ import RexInterface from '../RexInterface';
3
+
4
+ const fixtures = {
5
+ renders: { isLoading: false, onChange: () => {} },
6
+ };
7
+
8
+ describe('RexInterface', () =>
9
+ testComponentSnapshotsWithFixtures(RexInterface, fixtures));
@@ -0,0 +1,35 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`RexInterface renders 1`] = `
4
+ <FormGroup
5
+ fieldId="reg_rex_interface"
6
+ label="Remote Execution Interface"
7
+ labelIcon={
8
+ <Popover
9
+ bodyContent={
10
+ <div>
11
+ Identifier of the Host interface for Remote execution
12
+ </div>
13
+ }
14
+ >
15
+ <button
16
+ className="pf-c-form__group-label-help"
17
+ onClick={[Function]}
18
+ >
19
+ <HelpIcon
20
+ color="currentColor"
21
+ noVerticalAlign={true}
22
+ size="sm"
23
+ />
24
+ </button>
25
+ </Popover>
26
+ }
27
+ >
28
+ <TextInput
29
+ id="reg_rex_interface_input"
30
+ isDisabled={false}
31
+ onBlur={[Function]}
32
+ type="text"
33
+ />
34
+ </FormGroup>
35
+ `;
@@ -39,7 +39,7 @@ const TargetingHostsPage = ({
39
39
  <br />
40
40
  <TargetingHosts apiStatus={apiStatus} items={items} />
41
41
  <Pagination
42
- viewType="list"
42
+ viewType="table"
43
43
  itemCount={totalHosts}
44
44
  pagination={pagination}
45
45
  onChange={args => handlePagination(args)}
@@ -1,6 +1,3 @@
1
- .targeting-hosts-pagination {
2
- margin-top: -7px;
3
- }
4
1
  #targeting_hosts {
5
2
  min-height: 350px;
6
3
  }
@@ -9,9 +9,14 @@ import {
9
9
  } from '../TargetingHostsSelectors';
10
10
 
11
11
  const state = {
12
- hosts: [],
13
- autoRefresh: 'true',
14
- total_hosts: 0,
12
+ TARGETING_HOSTS: {
13
+ status: 'RESOLVED',
14
+ response: {
15
+ hosts: [1, 2],
16
+ total_hosts: 2,
17
+ autoRefresh: 'true',
18
+ },
19
+ },
15
20
  };
16
21
 
17
22
  const fixtures = {
@@ -62,7 +62,7 @@ exports[`TargetingHostsPage renders 1`] = `
62
62
  "perPage": 20,
63
63
  }
64
64
  }
65
- viewType="list"
65
+ viewType="table"
66
66
  />
67
67
  </div>
68
68
  `;
@@ -4,8 +4,13 @@ exports[`TargetingHostsSelectors should return apiStatus 1`] = `"RESOLVED"`;
4
4
 
5
5
  exports[`TargetingHostsSelectors should return autoRefresh 1`] = `"true"`;
6
6
 
7
- exports[`TargetingHostsSelectors should return hosts 1`] = `Array []`;
7
+ exports[`TargetingHostsSelectors should return hosts 1`] = `
8
+ Array [
9
+ 1,
10
+ 2,
11
+ ]
12
+ `;
8
13
 
9
14
  exports[`TargetingHostsSelectors should return intervalExists 1`] = `false`;
10
15
 
11
- exports[`TargetingHostsSelectors should return totalHosts 1`] = `0`;
16
+ exports[`TargetingHostsSelectors should return totalHosts 1`] = `2`;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { addGlobalFill } from 'foremanReact/components/common/Fill/GlobalFill';
3
+ import RecentJobsCard from '../components/RecentJobsCard';
4
+
5
+ export default () =>
6
+ addGlobalFill(
7
+ 'details-cards',
8
+ 'rex-host-details-latest-jobs',
9
+ <RecentJobsCard />,
10
+ 1000
11
+ );
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { addGlobalFill } from 'foremanReact/components/common/Fill/GlobalFill';
3
+ import RexInterface from '../components/RegistrationExtension/RexInterface';
4
+
5
+ export default () =>
6
+ addGlobalFill(
7
+ 'registrationAdvanced',
8
+ 'foreman-remote-exectuion-rex-interface',
9
+ <RexInterface key="registration-rex-interface" />,
10
+ 100
11
+ );
@@ -0,0 +1,5 @@
1
+ import { registerReducer } from 'foremanReact/common/MountingService';
2
+ import rootReducer from '../redux/reducers';
3
+
4
+ export default () =>
5
+ registerReducer('foremanRemoteExecutionReducers', rootReducer);
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_remote_execution
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.2
4
+ version: 4.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Foreman Remote Execution team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-13 00:00:00.000000000 Z
11
+ date: 2021-05-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: deface
@@ -64,14 +64,14 @@ dependencies:
64
64
  requirements:
65
65
  - - ">="
66
66
  - !ruby/object:Gem::Version
67
- version: 0.15.1
67
+ version: 4.1.0
68
68
  type: :runtime
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - ">="
73
73
  - !ruby/object:Gem::Version
74
- version: 0.15.1
74
+ version: 4.1.0
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: factory_bot_rails
77
77
  requirement: !ruby/object:Gem::Requirement
@@ -86,20 +86,6 @@ dependencies:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
88
  version: 4.8.0
89
- - !ruby/object:Gem::Dependency
90
- name: rubocop
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - "~>"
94
- - !ruby/object:Gem::Version
95
- version: 0.80.0
96
- type: :development
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: 0.80.0
103
89
  - !ruby/object:Gem::Dependency
104
90
  name: rdoc
105
91
  requirement: !ruby/object:Gem::Requirement
@@ -127,8 +113,10 @@ files:
127
113
  - ".babelrc.js"
128
114
  - ".eslintignore"
129
115
  - ".eslintrc"
130
- - ".github/workflows/ci.yml"
116
+ - ".github/workflows/js_ci.yml"
117
+ - ".github/workflows/ruby_ci.yml"
131
118
  - ".gitignore"
119
+ - ".prettierrc"
132
120
  - ".rubocop.yml"
133
121
  - ".rubocop_todo.yml"
134
122
  - ".tx/config"
@@ -154,12 +142,14 @@ files:
154
142
  - app/controllers/concerns/foreman/controller/parameters/job_template.rb
155
143
  - app/controllers/concerns/foreman/controller/parameters/remote_execution_feature.rb
156
144
  - app/controllers/concerns/foreman/controller/parameters/targeting.rb
145
+ - app/controllers/foreman_remote_execution/concerns/api/v2/registration_commands_controller_extensions.rb
157
146
  - app/controllers/foreman_remote_execution/concerns/api/v2/registration_controller_extensions.rb
158
147
  - app/controllers/foreman_remote_execution/concerns/api/v2/subnets_controller_extensions.rb
159
148
  - app/controllers/job_invocations_controller.rb
160
149
  - app/controllers/job_templates_controller.rb
161
150
  - app/controllers/remote_execution_features_controller.rb
162
151
  - app/controllers/template_invocations_controller.rb
152
+ - app/controllers/ui_job_wizard_controller.rb
163
153
  - app/helpers/concerns/foreman_remote_execution/hosts_helper_extensions.rb
164
154
  - app/helpers/concerns/foreman_remote_execution/job_templates_extensions.rb
165
155
  - app/helpers/job_invocation_output_helper.rb
@@ -169,6 +159,7 @@ files:
169
159
  - app/lib/actions/middleware/bind_job_invocation.rb
170
160
  - app/lib/actions/remote_execution/run_host_job.rb
171
161
  - app/lib/actions/remote_execution/run_hosts_job.rb
162
+ - app/lib/foreman_remote_execution/provider_input.rb
172
163
  - app/lib/foreman_remote_execution/renderer/scope/input.rb
173
164
  - app/lib/proxy_api/remote_execution_ssh.rb
174
165
  - app/mailers/.gitkeep
@@ -191,6 +182,7 @@ files:
191
182
  - app/models/foreign_input_set.rb
192
183
  - app/models/host_status/execution_status.rb
193
184
  - app/models/input_template_renderer.rb
185
+ - app/models/invocation_provider_input_value.rb
194
186
  - app/models/job_invocation.rb
195
187
  - app/models/job_invocation_composer.rb
196
188
  - app/models/job_invocation_task_group.rb
@@ -209,6 +201,7 @@ files:
209
201
  - app/overrides/subnet_proxies.rb
210
202
  - app/services/default_proxy_proxy_selector.rb
211
203
  - app/services/remote_execution_proxy_selector.rb
204
+ - app/services/renderer_methods.rb
212
205
  - app/services/ui_notifications/remote_execution_jobs/base_job_finish.rb
213
206
  - app/views/api/v2/foreign_input_sets/base.json.rabl
214
207
  - app/views/api/v2/foreign_input_sets/create.json.rabl
@@ -227,7 +220,6 @@ files:
227
220
  - app/views/api/v2/job_templates/main.json.rabl
228
221
  - app/views/api/v2/job_templates/show.json.rabl
229
222
  - app/views/api/v2/job_templates/update.json.rabl
230
- - app/views/api/v2/registration/_form.html.erb
231
223
  - app/views/api/v2/remote_execution_features/base.json.rabl
232
224
  - app/views/api/v2/remote_execution_features/index.json.rabl
233
225
  - app/views/api/v2/remote_execution_features/main.json.rabl
@@ -331,6 +323,7 @@ files:
331
323
  - db/migrate/20190111153330_remove_remote_execution_without_proxy_setting.rb
332
324
  - db/migrate/20200623073022_rename_sudo_password_to_effective_user_password.rb
333
325
  - db/migrate/20200820122057_add_proxy_selector_override_to_remote_execution_feature.rb
326
+ - db/migrate/20210312074713_add_provider_inputs.rb
334
327
  - db/seeds.d/100-assign_features_with_templates.rb
335
328
  - db/seeds.d/20-permissions.rb
336
329
  - db/seeds.d/50-notification_blueprints.rb
@@ -385,6 +378,7 @@ files:
385
378
  - test/functional/cockpit_controller_test.rb
386
379
  - test/functional/job_invocations_controller_test.rb
387
380
  - test/functional/job_templates_controller_test.rb
381
+ - test/functional/ui_job_wizard_controller_test.rb
388
382
  - test/helpers/remote_execution_helper_test.rb
389
383
  - test/models/orchestration/ssh_test.rb
390
384
  - test/support/remote_execution_helper.rb
@@ -397,6 +391,7 @@ files:
397
391
  - test/unit/execution_task_status_mapper_test.rb
398
392
  - test/unit/input_template_renderer_test.rb
399
393
  - test/unit/job_invocation_composer_test.rb
394
+ - test/unit/job_invocation_report_template_test.rb
400
395
  - test/unit/job_invocation_test.rb
401
396
  - test/unit/job_template_effective_user_test.rb
402
397
  - test/unit/job_template_test.rb
@@ -405,14 +400,52 @@ files:
405
400
  - test/unit/renderer_scope_input.rb
406
401
  - test/unit/targeting_test.rb
407
402
  - test/unit/template_invocation_input_value_test.rb
403
+ - webpack/JobWizard/JobWizard.js
404
+ - webpack/JobWizard/JobWizard.scss
405
+ - webpack/JobWizard/JobWizardConstants.js
406
+ - webpack/JobWizard/JobWizardSelectors.js
407
+ - webpack/JobWizard/__tests__/JobWizard.test.js
408
+ - webpack/JobWizard/__tests__/__snapshots__/JobWizard.test.js.snap
409
+ - webpack/JobWizard/__tests__/__snapshots__/integration.test.js.snap
410
+ - webpack/JobWizard/__tests__/fixtures.js
411
+ - webpack/JobWizard/__tests__/integration.test.js
412
+ - webpack/JobWizard/index.js
413
+ - webpack/JobWizard/steps/AdvancedFields/AdvancedFields.js
414
+ - webpack/JobWizard/steps/AdvancedFields/Fields.js
415
+ - webpack/JobWizard/steps/AdvancedFields/__tests__/AdvancedFields.test.js
416
+ - webpack/JobWizard/steps/AdvancedFields/__tests__/__snapshots__/AdvancedFields.test.js.snap
417
+ - webpack/JobWizard/steps/CategoryAndTemplate/CategoryAndTemplate.js
418
+ - webpack/JobWizard/steps/CategoryAndTemplate/CategoryAndTemplate.test.js
419
+ - webpack/JobWizard/steps/CategoryAndTemplate/__snapshots__/CategoryAndTemplate.test.js.snap
420
+ - webpack/JobWizard/steps/CategoryAndTemplate/index.js
421
+ - webpack/JobWizard/steps/form/FormHelpers.js
422
+ - webpack/JobWizard/steps/form/GroupedSelectField.js
423
+ - webpack/JobWizard/steps/form/SelectField.js
424
+ - webpack/JobWizard/steps/form/__tests__/GroupedSelectField.test.js
425
+ - webpack/JobWizard/steps/form/__tests__/SelectField.test.js
426
+ - webpack/JobWizard/steps/form/__tests__/__snapshots__/GroupedSelectField.test.js.snap
427
+ - webpack/JobWizard/steps/form/__tests__/__snapshots__/SelectField.test.js.snap
428
+ - webpack/Routes/routes.js
408
429
  - webpack/__mocks__/foremanReact/common/I18n.js
430
+ - webpack/__mocks__/foremanReact/common/helpers.js
409
431
  - webpack/__mocks__/foremanReact/components/Pagination/PaginationWrapper.js
410
432
  - webpack/__mocks__/foremanReact/components/SearchBar.js
411
433
  - webpack/__mocks__/foremanReact/components/common/ActionButtons/ActionButtons.js
412
434
  - webpack/__mocks__/foremanReact/constants.js
435
+ - webpack/__mocks__/foremanReact/history.js
413
436
  - webpack/__mocks__/foremanReact/redux/API/APISelectors.js
437
+ - webpack/__mocks__/foremanReact/redux/API/index.js
414
438
  - webpack/__mocks__/foremanReact/redux/middlewares/IntervalMiddleware/IntervalSelectors.js
439
+ - webpack/__mocks__/foremanReact/routes/common/PageLayout/PageLayout.js
440
+ - webpack/global_index.js
415
441
  - webpack/index.js
442
+ - webpack/react_app/components/RecentJobsCard/RecentJobsCard.js
443
+ - webpack/react_app/components/RecentJobsCard/constants.js
444
+ - webpack/react_app/components/RecentJobsCard/index.js
445
+ - webpack/react_app/components/RecentJobsCard/styles.css
446
+ - webpack/react_app/components/RegistrationExtension/RexInterface.js
447
+ - webpack/react_app/components/RegistrationExtension/__tests__/RexInterface.test.js
448
+ - webpack/react_app/components/RegistrationExtension/__tests__/__snapshots__/RexInterface.test.js.snap
416
449
  - webpack/react_app/components/TargetingHosts/TargetingHosts.js
417
450
  - webpack/react_app/components/TargetingHosts/TargetingHostsConsts.js
418
451
  - webpack/react_app/components/TargetingHosts/TargetingHostsHelpers.js
@@ -436,6 +469,9 @@ files:
436
469
  - webpack/react_app/components/jobInvocations/AggregateStatus/index.js
437
470
  - webpack/react_app/components/jobInvocations/AggregateStatus/index.test.js
438
471
  - webpack/react_app/components/jobInvocations/index.js
472
+ - webpack/react_app/extend/fillRecentJobsCard.js
473
+ - webpack/react_app/extend/fillregistrationAdvanced.js
474
+ - webpack/react_app/extend/reducers.js
439
475
  - webpack/react_app/redux/actions/jobInvocations/index.js
440
476
  - webpack/react_app/redux/consts.js
441
477
  - webpack/react_app/redux/reducers/index.js
@@ -480,6 +516,7 @@ test_files:
480
516
  - test/functional/cockpit_controller_test.rb
481
517
  - test/functional/job_invocations_controller_test.rb
482
518
  - test/functional/job_templates_controller_test.rb
519
+ - test/functional/ui_job_wizard_controller_test.rb
483
520
  - test/helpers/remote_execution_helper_test.rb
484
521
  - test/models/orchestration/ssh_test.rb
485
522
  - test/support/remote_execution_helper.rb
@@ -492,6 +529,7 @@ test_files:
492
529
  - test/unit/execution_task_status_mapper_test.rb
493
530
  - test/unit/input_template_renderer_test.rb
494
531
  - test/unit/job_invocation_composer_test.rb
532
+ - test/unit/job_invocation_report_template_test.rb
495
533
  - test/unit/job_invocation_test.rb
496
534
  - test/unit/job_template_effective_user_test.rb
497
535
  - test/unit/job_template_test.rb