foreman_remote_execution 3.3.5 → 4.2.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/.github/workflows/ci.yml +1 -1
- data/app/controllers/api/v2/job_invocations_controller.rb +20 -2
- data/app/controllers/foreman_remote_execution/concerns/api/v2/registration_controller_extensions.rb +26 -0
- data/app/controllers/foreman_remote_execution/concerns/api/v2/subnets_controller_extensions.rb +21 -0
- data/app/controllers/job_invocations_controller.rb +22 -8
- data/app/controllers/job_templates_controller.rb +1 -1
- data/app/helpers/job_invocations_helper.rb +3 -2
- data/app/lib/actions/remote_execution/run_host_job.rb +1 -1
- data/app/lib/actions/remote_execution/run_hosts_job.rb +12 -3
- data/app/lib/foreman_remote_execution/renderer/scope/input.rb +35 -0
- data/app/models/concerns/api/v2/interfaces_controller_extensions.rb +13 -0
- data/app/models/concerns/foreman_remote_execution/host_extensions.rb +38 -14
- data/app/models/job_invocation.rb +12 -4
- data/app/models/job_invocation_composer.rb +2 -2
- data/app/models/remote_execution_feature.rb +5 -2
- data/app/models/remote_execution_provider.rb +8 -3
- data/app/models/setting/remote_execution.rb +2 -2
- data/app/models/ssh_execution_provider.rb +1 -1
- data/app/services/remote_execution_proxy_selector.rb +3 -0
- data/app/views/api/v2/interfaces/execution_flag.json.rabl +1 -0
- data/app/views/api/v2/job_invocations/base.json.rabl +1 -0
- data/app/views/api/v2/job_invocations/main.json.rabl +2 -2
- data/app/views/api/v2/registration/_form.html.erb +12 -0
- data/app/views/api/v2/subnets/remote_execution_proxies.json.rabl +3 -0
- data/app/views/job_invocations/_form.html.erb +1 -1
- data/app/views/job_invocations/_tab_hosts.html.erb +1 -20
- data/app/views/job_invocations/_tab_overview.html.erb +13 -1
- data/app/views/job_invocations/show.html.erb +3 -0
- data/app/views/job_invocations/show.json.erb +2 -1
- data/app/views/template_invocations/_output_line_set.html.erb +1 -1
- data/app/views/templates/ssh/package_action.erb +1 -0
- data/config/routes.rb +1 -0
- data/db/migrate/20200623073022_rename_sudo_password_to_effective_user_password.rb +34 -0
- data/db/migrate/20200820122057_add_proxy_selector_override_to_remote_execution_feature.rb +5 -0
- data/db/seeds.d/20-permissions.rb +9 -0
- data/lib/foreman_remote_execution/engine.rb +28 -2
- data/lib/foreman_remote_execution/version.rb +1 -1
- data/package.json +6 -6
- data/test/functional/api/v2/job_invocations_controller_test.rb +84 -2
- data/test/functional/api/v2/registration_controller_test.rb +82 -0
- data/test/functional/job_invocations_controller_test.rb +71 -0
- data/test/support/remote_execution_helper.rb +5 -0
- data/test/unit/actions/run_host_job_test.rb +3 -3
- data/test/unit/actions/run_hosts_job_test.rb +3 -2
- data/test/unit/job_invocation_composer_test.rb +5 -5
- data/test/unit/remote_execution_provider_test.rb +6 -6
- data/webpack/__mocks__/foremanReact/components/Pagination/PaginationWrapper.js +2 -0
- data/webpack/__mocks__/foremanReact/components/SearchBar.js +2 -0
- data/webpack/__mocks__/foremanReact/constants.js +21 -0
- data/webpack/__mocks__/foremanReact/redux/API/APISelectors.js +2 -0
- data/webpack/__mocks__/foremanReact/redux/middlewares/IntervalMiddleware/IntervalSelectors.js +1 -0
- data/webpack/react_app/components/TargetingHosts/TargetingHosts.js +25 -15
- data/webpack/react_app/components/TargetingHosts/TargetingHostsHelpers.js +10 -0
- data/webpack/react_app/components/TargetingHosts/TargetingHostsPage.js +66 -0
- data/webpack/react_app/components/TargetingHosts/TargetingHostsPage.scss +6 -0
- data/webpack/react_app/components/TargetingHosts/TargetingHostsSelectors.js +10 -2
- data/webpack/react_app/components/TargetingHosts/__tests__/TargetingHostsPage.test.js +9 -0
- data/webpack/react_app/components/TargetingHosts/__tests__/TargetingHostsSelectors.test.js +26 -0
- data/webpack/react_app/components/TargetingHosts/__tests__/__snapshots__/TargetingHosts.test.js.snap +16 -1
- data/webpack/react_app/components/TargetingHosts/__tests__/__snapshots__/TargetingHostsPage.test.js.snap +68 -0
- data/webpack/react_app/components/TargetingHosts/__tests__/__snapshots__/TargetingHostsSelectors.test.js.snap +11 -0
- data/webpack/react_app/components/TargetingHosts/__tests__/fixtures.js +35 -19
- data/webpack/react_app/components/TargetingHosts/index.js +73 -13
- metadata +30 -7
- data/webpack/react_app/components/TargetingHosts/TargetingHostsActions.js +0 -8
@@ -2,11 +2,19 @@ import {
|
|
2
2
|
selectAPIStatus,
|
3
3
|
selectAPIResponse,
|
4
4
|
} from 'foremanReact/redux/API/APISelectors';
|
5
|
+
import { selectDoesIntervalExist } from 'foremanReact/redux/middlewares/IntervalMiddleware/IntervalSelectors';
|
6
|
+
|
5
7
|
import { TARGETING_HOSTS } from './TargetingHostsConsts';
|
6
8
|
|
7
9
|
export const selectItems = state =>
|
8
10
|
selectAPIResponse(state, TARGETING_HOSTS).hosts || [];
|
9
11
|
|
10
12
|
export const selectAutoRefresh = state =>
|
11
|
-
selectAPIResponse(state, TARGETING_HOSTS).autoRefresh;
|
12
|
-
|
13
|
+
selectAPIResponse(state, TARGETING_HOSTS).autoRefresh || '';
|
14
|
+
|
15
|
+
export const selectApiStatus = state => selectAPIStatus(state, TARGETING_HOSTS);
|
16
|
+
export const selectTotalHosts = state =>
|
17
|
+
selectAPIResponse(state, TARGETING_HOSTS).total_hosts || 0;
|
18
|
+
|
19
|
+
export const selectIntervalExists = state =>
|
20
|
+
selectDoesIntervalExist(state, TARGETING_HOSTS);
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import { testComponentSnapshotsWithFixtures } from '@theforeman/test';
|
2
|
+
import TargetingHostsPage from '../TargetingHostsPage';
|
3
|
+
import { TargetingHostsPageFixtures } from './fixtures';
|
4
|
+
|
5
|
+
describe('TargetingHostsPage', () =>
|
6
|
+
testComponentSnapshotsWithFixtures(
|
7
|
+
TargetingHostsPage,
|
8
|
+
TargetingHostsPageFixtures
|
9
|
+
));
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import { testSelectorsSnapshotWithFixtures } from '@theforeman/test';
|
2
|
+
|
3
|
+
import {
|
4
|
+
selectItems,
|
5
|
+
selectAutoRefresh,
|
6
|
+
selectApiStatus,
|
7
|
+
selectTotalHosts,
|
8
|
+
selectIntervalExists,
|
9
|
+
} from '../TargetingHostsSelectors';
|
10
|
+
|
11
|
+
const state = {
|
12
|
+
hosts: [],
|
13
|
+
autoRefresh: 'true',
|
14
|
+
total_hosts: 0,
|
15
|
+
};
|
16
|
+
|
17
|
+
const fixtures = {
|
18
|
+
'should return hosts': () => selectItems(state),
|
19
|
+
'should return autoRefresh': () => selectAutoRefresh(state),
|
20
|
+
'should return apiStatus': () => selectApiStatus(state),
|
21
|
+
'should return totalHosts': () => selectTotalHosts(state),
|
22
|
+
'should return intervalExists': () => selectIntervalExists(state),
|
23
|
+
};
|
24
|
+
|
25
|
+
describe('TargetingHostsSelectors', () =>
|
26
|
+
testSelectorsSnapshotWithFixtures(fixtures));
|
data/webpack/react_app/components/TargetingHosts/__tests__/__snapshots__/TargetingHosts.test.js.snap
CHANGED
@@ -33,6 +33,13 @@ exports[`TargetingHosts renders 1`] = `
|
|
33
33
|
name="host"
|
34
34
|
status="success"
|
35
35
|
/>
|
36
|
+
<HostItem
|
37
|
+
actions={Array []}
|
38
|
+
key="host2"
|
39
|
+
link="/link2"
|
40
|
+
name="host2"
|
41
|
+
status="success"
|
42
|
+
/>
|
36
43
|
</tbody>
|
37
44
|
</table>
|
38
45
|
</div>
|
@@ -74,7 +81,15 @@ exports[`TargetingHosts renders with loading 1`] = `
|
|
74
81
|
</th>
|
75
82
|
</tr>
|
76
83
|
</thead>
|
77
|
-
<tbody
|
84
|
+
<tbody>
|
85
|
+
<tr>
|
86
|
+
<td
|
87
|
+
colSpan="3"
|
88
|
+
>
|
89
|
+
No hosts found.
|
90
|
+
</td>
|
91
|
+
</tr>
|
92
|
+
</tbody>
|
78
93
|
</table>
|
79
94
|
</div>
|
80
95
|
</LoadingState>
|
@@ -0,0 +1,68 @@
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
2
|
+
|
3
|
+
exports[`TargetingHostsPage renders 1`] = `
|
4
|
+
<div
|
5
|
+
id="targeting_hosts"
|
6
|
+
>
|
7
|
+
<Row
|
8
|
+
bsClass="row"
|
9
|
+
componentClass="div"
|
10
|
+
>
|
11
|
+
<Col
|
12
|
+
bsClass="col"
|
13
|
+
className="title_filter"
|
14
|
+
componentClass="div"
|
15
|
+
md={6}
|
16
|
+
>
|
17
|
+
<SearchBar
|
18
|
+
data={
|
19
|
+
Object {
|
20
|
+
"autocomplete": Object {
|
21
|
+
"id": "targeting_hosts_search",
|
22
|
+
"searchQuery": "",
|
23
|
+
"url": "/hosts/auto_complete_search",
|
24
|
+
"useKeyShortcuts": true,
|
25
|
+
},
|
26
|
+
"bookmarks": Object {},
|
27
|
+
"controller": "hosts",
|
28
|
+
}
|
29
|
+
}
|
30
|
+
onSearch={[Function]}
|
31
|
+
/>
|
32
|
+
</Col>
|
33
|
+
</Row>
|
34
|
+
<br />
|
35
|
+
<TargetingHosts
|
36
|
+
apiStatus="RESOLVED"
|
37
|
+
items={
|
38
|
+
Array [
|
39
|
+
Object {
|
40
|
+
"actions": Array [],
|
41
|
+
"link": "/link",
|
42
|
+
"name": "host",
|
43
|
+
"status": "success",
|
44
|
+
},
|
45
|
+
Object {
|
46
|
+
"actions": Array [],
|
47
|
+
"link": "/link2",
|
48
|
+
"name": "host2",
|
49
|
+
"status": "success",
|
50
|
+
},
|
51
|
+
]
|
52
|
+
}
|
53
|
+
/>
|
54
|
+
<PaginationWrapper
|
55
|
+
className="targeting-hosts-pagination"
|
56
|
+
dropdownButtonId="targeting-hosts-pagination-dropdown"
|
57
|
+
itemCount={1}
|
58
|
+
onChange={[Function]}
|
59
|
+
pagination={
|
60
|
+
Object {
|
61
|
+
"page": 1,
|
62
|
+
"perPage": 20,
|
63
|
+
}
|
64
|
+
}
|
65
|
+
viewType="list"
|
66
|
+
/>
|
67
|
+
</div>
|
68
|
+
`;
|
@@ -0,0 +1,11 @@
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
2
|
+
|
3
|
+
exports[`TargetingHostsSelectors should return apiStatus 1`] = `"RESOLVED"`;
|
4
|
+
|
5
|
+
exports[`TargetingHostsSelectors should return autoRefresh 1`] = `"true"`;
|
6
|
+
|
7
|
+
exports[`TargetingHostsSelectors should return hosts 1`] = `Array []`;
|
8
|
+
|
9
|
+
exports[`TargetingHostsSelectors should return intervalExists 1`] = `false`;
|
10
|
+
|
11
|
+
exports[`TargetingHostsSelectors should return totalHosts 1`] = `0`;
|
@@ -1,3 +1,18 @@
|
|
1
|
+
const items = [
|
2
|
+
{
|
3
|
+
name: 'host',
|
4
|
+
link: '/link',
|
5
|
+
status: 'success',
|
6
|
+
actions: [],
|
7
|
+
},
|
8
|
+
{
|
9
|
+
name: 'host2',
|
10
|
+
link: '/link2',
|
11
|
+
status: 'success',
|
12
|
+
actions: [],
|
13
|
+
},
|
14
|
+
];
|
15
|
+
|
1
16
|
export const HostItemFixtures = {
|
2
17
|
renders: {
|
3
18
|
name: 'Host1',
|
@@ -15,29 +30,30 @@ export const HostStatusFixtures = {
|
|
15
30
|
|
16
31
|
export const TargetingHostsFixtures = {
|
17
32
|
renders: {
|
18
|
-
|
19
|
-
items
|
20
|
-
{
|
21
|
-
name: 'host',
|
22
|
-
link: '/link',
|
23
|
-
status: 'success',
|
24
|
-
actions: [],
|
25
|
-
},
|
26
|
-
],
|
33
|
+
apiStatus: 'RESOLVED',
|
34
|
+
items,
|
27
35
|
},
|
28
36
|
'renders with error': {
|
29
|
-
|
30
|
-
items
|
31
|
-
{
|
32
|
-
name: 'host',
|
33
|
-
link: '/link',
|
34
|
-
status: 'success',
|
35
|
-
actions: [],
|
36
|
-
},
|
37
|
-
],
|
37
|
+
apiStatus: 'ERROR',
|
38
|
+
items,
|
38
39
|
},
|
39
40
|
'renders with loading': {
|
40
|
-
|
41
|
+
apiStatus: 'PENDING',
|
41
42
|
items: [],
|
42
43
|
},
|
43
44
|
};
|
45
|
+
|
46
|
+
export const TargetingHostsPageFixtures = {
|
47
|
+
renders: {
|
48
|
+
handleSearch: () => {},
|
49
|
+
searchQuery: '',
|
50
|
+
apiStatus: 'RESOLVED',
|
51
|
+
items,
|
52
|
+
totalHosts: 1,
|
53
|
+
pagination: {
|
54
|
+
page: 1,
|
55
|
+
perPage: 20,
|
56
|
+
},
|
57
|
+
handlePagination: () => {},
|
58
|
+
},
|
59
|
+
};
|
@@ -1,37 +1,97 @@
|
|
1
|
-
import React, { useEffect } from 'react';
|
1
|
+
import React, { useEffect, useState } from 'react';
|
2
2
|
import { useSelector, useDispatch } from 'react-redux';
|
3
|
-
|
4
|
-
import
|
3
|
+
|
4
|
+
import { get } from 'foremanReact/redux/API';
|
5
|
+
import { useForemanSettings } from 'foremanReact/Root/Context/ForemanContext';
|
6
|
+
import {
|
7
|
+
withInterval,
|
8
|
+
stopInterval,
|
9
|
+
} from 'foremanReact/redux/middlewares/IntervalMiddleware';
|
5
10
|
|
6
11
|
import {
|
7
12
|
selectItems,
|
8
|
-
|
13
|
+
selectApiStatus,
|
9
14
|
selectAutoRefresh,
|
15
|
+
selectTotalHosts,
|
16
|
+
selectIntervalExists,
|
10
17
|
} from './TargetingHostsSelectors';
|
11
|
-
import {
|
18
|
+
import { getApiUrl } from './TargetingHostsHelpers';
|
12
19
|
import { TARGETING_HOSTS } from './TargetingHostsConsts';
|
20
|
+
import TargetingHostsPage from './TargetingHostsPage';
|
13
21
|
|
14
22
|
const WrappedTargetingHosts = () => {
|
15
23
|
const dispatch = useDispatch();
|
24
|
+
const { perPage, perPageOptions } = useForemanSettings();
|
25
|
+
|
16
26
|
const autoRefresh = useSelector(selectAutoRefresh);
|
17
27
|
const items = useSelector(selectItems);
|
18
|
-
const
|
28
|
+
const apiStatus = useSelector(selectApiStatus);
|
29
|
+
const totalHosts = useSelector(selectTotalHosts);
|
30
|
+
const [searchQuery, setSearchQuery] = useState('');
|
31
|
+
const [pagination, setPagination] = useState({
|
32
|
+
page: 1,
|
33
|
+
perPage,
|
34
|
+
perPageOptions,
|
35
|
+
});
|
36
|
+
const [apiUrl, setApiUrl] = useState(getApiUrl(searchQuery, pagination));
|
37
|
+
const intervalExists = useSelector(selectIntervalExists);
|
19
38
|
|
20
|
-
|
21
|
-
|
39
|
+
const handleSearch = query => {
|
40
|
+
const defaultPagination = { page: 1, perPage: pagination.perPage };
|
41
|
+
stopApiInterval();
|
22
42
|
|
23
|
-
|
43
|
+
setApiUrl(getApiUrl(query, defaultPagination));
|
44
|
+
setSearchQuery(query);
|
45
|
+
setPagination(defaultPagination);
|
46
|
+
};
|
47
|
+
|
48
|
+
const handlePagination = args => {
|
49
|
+
stopApiInterval();
|
50
|
+
setPagination(args);
|
51
|
+
setApiUrl(getApiUrl(searchQuery, args));
|
52
|
+
};
|
53
|
+
|
54
|
+
const stopApiInterval = () => {
|
55
|
+
if (intervalExists) {
|
24
56
|
dispatch(stopInterval(TARGETING_HOSTS));
|
25
|
-
}
|
26
|
-
}
|
57
|
+
}
|
58
|
+
};
|
59
|
+
|
60
|
+
const getData = url =>
|
61
|
+
withInterval(
|
62
|
+
get({
|
63
|
+
key: TARGETING_HOSTS,
|
64
|
+
url,
|
65
|
+
handleError: () => {
|
66
|
+
dispatch(stopInterval(TARGETING_HOSTS));
|
67
|
+
},
|
68
|
+
}),
|
69
|
+
1000
|
70
|
+
);
|
27
71
|
|
28
72
|
useEffect(() => {
|
73
|
+
dispatch(getData(apiUrl));
|
74
|
+
|
29
75
|
if (autoRefresh === 'false') {
|
30
76
|
dispatch(stopInterval(TARGETING_HOSTS));
|
31
77
|
}
|
32
|
-
}, [autoRefresh, dispatch]);
|
33
78
|
|
34
|
-
|
79
|
+
return () => {
|
80
|
+
dispatch(stopInterval(TARGETING_HOSTS));
|
81
|
+
};
|
82
|
+
}, [dispatch, apiUrl, autoRefresh]);
|
83
|
+
|
84
|
+
return (
|
85
|
+
<TargetingHostsPage
|
86
|
+
handleSearch={handleSearch}
|
87
|
+
searchQuery={searchQuery}
|
88
|
+
apiStatus={apiStatus}
|
89
|
+
items={items}
|
90
|
+
totalHosts={totalHosts}
|
91
|
+
pagination={pagination}
|
92
|
+
handlePagination={handlePagination}
|
93
|
+
/>
|
94
|
+
);
|
35
95
|
};
|
36
96
|
|
37
97
|
export default WrappedTargetingHosts;
|
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
|
+
version: 4.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Foreman Remote Execution team
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-11-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: deface
|
@@ -154,6 +154,8 @@ files:
|
|
154
154
|
- app/controllers/concerns/foreman/controller/parameters/job_template.rb
|
155
155
|
- app/controllers/concerns/foreman/controller/parameters/remote_execution_feature.rb
|
156
156
|
- app/controllers/concerns/foreman/controller/parameters/targeting.rb
|
157
|
+
- app/controllers/foreman_remote_execution/concerns/api/v2/registration_controller_extensions.rb
|
158
|
+
- app/controllers/foreman_remote_execution/concerns/api/v2/subnets_controller_extensions.rb
|
157
159
|
- app/controllers/job_invocations_controller.rb
|
158
160
|
- app/controllers/job_templates_controller.rb
|
159
161
|
- app/controllers/remote_execution_features_controller.rb
|
@@ -170,6 +172,7 @@ files:
|
|
170
172
|
- app/lib/foreman_remote_execution/renderer/scope/input.rb
|
171
173
|
- app/lib/proxy_api/remote_execution_ssh.rb
|
172
174
|
- app/mailers/.gitkeep
|
175
|
+
- app/models/concerns/api/v2/interfaces_controller_extensions.rb
|
173
176
|
- app/models/concerns/foreman_remote_execution/bookmark_extensions.rb
|
174
177
|
- app/models/concerns/foreman_remote_execution/errors_flattener.rb
|
175
178
|
- app/models/concerns/foreman_remote_execution/foreman_tasks_cleaner_extensions.rb
|
@@ -212,6 +215,7 @@ files:
|
|
212
215
|
- app/views/api/v2/foreign_input_sets/index.json.rabl
|
213
216
|
- app/views/api/v2/foreign_input_sets/main.json.rabl
|
214
217
|
- app/views/api/v2/foreign_input_sets/show.json.rabl
|
218
|
+
- app/views/api/v2/interfaces/execution_flag.json.rabl
|
215
219
|
- app/views/api/v2/job_invocations/base.json.rabl
|
216
220
|
- app/views/api/v2/job_invocations/create.json.rabl
|
217
221
|
- app/views/api/v2/job_invocations/index.json.rabl
|
@@ -223,11 +227,13 @@ files:
|
|
223
227
|
- app/views/api/v2/job_templates/main.json.rabl
|
224
228
|
- app/views/api/v2/job_templates/show.json.rabl
|
225
229
|
- app/views/api/v2/job_templates/update.json.rabl
|
230
|
+
- app/views/api/v2/registration/_form.html.erb
|
226
231
|
- app/views/api/v2/remote_execution_features/base.json.rabl
|
227
232
|
- app/views/api/v2/remote_execution_features/index.json.rabl
|
228
233
|
- app/views/api/v2/remote_execution_features/main.json.rabl
|
229
234
|
- app/views/api/v2/remote_execution_features/show.json.rabl
|
230
235
|
- app/views/api/v2/smart_proxies/pubkey.json.rabl
|
236
|
+
- app/views/api/v2/subnets/remote_execution_proxies.json.rabl
|
231
237
|
- app/views/api/v2/template_invocations/base.json.rabl
|
232
238
|
- app/views/api/v2/template_invocations/template_invocations.json.rabl
|
233
239
|
- app/views/dashboard/.gitkeep
|
@@ -323,7 +329,10 @@ files:
|
|
323
329
|
- db/migrate/20180411160809_add_sudo_password_to_job_invocation.rb
|
324
330
|
- db/migrate/20180913101042_add_randomized_ordering_to_targeting.rb
|
325
331
|
- db/migrate/20190111153330_remove_remote_execution_without_proxy_setting.rb
|
332
|
+
- db/migrate/20200623073022_rename_sudo_password_to_effective_user_password.rb
|
333
|
+
- db/migrate/20200820122057_add_proxy_selector_override_to_remote_execution_feature.rb
|
326
334
|
- db/seeds.d/100-assign_features_with_templates.rb
|
335
|
+
- db/seeds.d/20-permissions.rb
|
327
336
|
- db/seeds.d/50-notification_blueprints.rb
|
328
337
|
- db/seeds.d/60-ssh_proxy_feature.rb
|
329
338
|
- db/seeds.d/70-job_templates.rb
|
@@ -370,6 +379,7 @@ files:
|
|
370
379
|
- test/functional/api/v2/foreign_input_sets_controller_test.rb
|
371
380
|
- test/functional/api/v2/job_invocations_controller_test.rb
|
372
381
|
- test/functional/api/v2/job_templates_controller_test.rb
|
382
|
+
- test/functional/api/v2/registration_controller_test.rb
|
373
383
|
- test/functional/api/v2/remote_execution_features_controller_test.rb
|
374
384
|
- test/functional/api/v2/template_invocations_controller_test.rb
|
375
385
|
- test/functional/cockpit_controller_test.rb
|
@@ -377,6 +387,7 @@ files:
|
|
377
387
|
- test/functional/job_templates_controller_test.rb
|
378
388
|
- test/helpers/remote_execution_helper_test.rb
|
379
389
|
- test/models/orchestration/ssh_test.rb
|
390
|
+
- test/support/remote_execution_helper.rb
|
380
391
|
- test/test_plugin_helper.rb
|
381
392
|
- test/unit/actions/run_host_job_test.rb
|
382
393
|
- test/unit/actions/run_hosts_job_test.rb
|
@@ -395,19 +406,29 @@ files:
|
|
395
406
|
- test/unit/targeting_test.rb
|
396
407
|
- test/unit/template_invocation_input_value_test.rb
|
397
408
|
- webpack/__mocks__/foremanReact/common/I18n.js
|
409
|
+
- webpack/__mocks__/foremanReact/components/Pagination/PaginationWrapper.js
|
410
|
+
- webpack/__mocks__/foremanReact/components/SearchBar.js
|
398
411
|
- webpack/__mocks__/foremanReact/components/common/ActionButtons/ActionButtons.js
|
399
412
|
- webpack/__mocks__/foremanReact/constants.js
|
413
|
+
- webpack/__mocks__/foremanReact/redux/API/APISelectors.js
|
414
|
+
- webpack/__mocks__/foremanReact/redux/middlewares/IntervalMiddleware/IntervalSelectors.js
|
400
415
|
- webpack/index.js
|
401
416
|
- webpack/react_app/components/TargetingHosts/TargetingHosts.js
|
402
|
-
- webpack/react_app/components/TargetingHosts/TargetingHostsActions.js
|
403
417
|
- webpack/react_app/components/TargetingHosts/TargetingHostsConsts.js
|
418
|
+
- webpack/react_app/components/TargetingHosts/TargetingHostsHelpers.js
|
419
|
+
- webpack/react_app/components/TargetingHosts/TargetingHostsPage.js
|
420
|
+
- webpack/react_app/components/TargetingHosts/TargetingHostsPage.scss
|
404
421
|
- webpack/react_app/components/TargetingHosts/TargetingHostsSelectors.js
|
405
422
|
- webpack/react_app/components/TargetingHosts/__tests__/HostItem.test.js
|
406
423
|
- webpack/react_app/components/TargetingHosts/__tests__/HostStatus.test.js
|
407
424
|
- webpack/react_app/components/TargetingHosts/__tests__/TargetingHosts.test.js
|
425
|
+
- webpack/react_app/components/TargetingHosts/__tests__/TargetingHostsPage.test.js
|
426
|
+
- webpack/react_app/components/TargetingHosts/__tests__/TargetingHostsSelectors.test.js
|
408
427
|
- webpack/react_app/components/TargetingHosts/__tests__/__snapshots__/HostItem.test.js.snap
|
409
428
|
- webpack/react_app/components/TargetingHosts/__tests__/__snapshots__/HostStatus.test.js.snap
|
410
429
|
- webpack/react_app/components/TargetingHosts/__tests__/__snapshots__/TargetingHosts.test.js.snap
|
430
|
+
- webpack/react_app/components/TargetingHosts/__tests__/__snapshots__/TargetingHostsPage.test.js.snap
|
431
|
+
- webpack/react_app/components/TargetingHosts/__tests__/__snapshots__/TargetingHostsSelectors.test.js.snap
|
411
432
|
- webpack/react_app/components/TargetingHosts/__tests__/fixtures.js
|
412
433
|
- webpack/react_app/components/TargetingHosts/components/HostItem.js
|
413
434
|
- webpack/react_app/components/TargetingHosts/components/HostStatus.js
|
@@ -426,7 +447,7 @@ homepage: https://github.com/theforeman/foreman_remote_execution
|
|
426
447
|
licenses:
|
427
448
|
- GPL-3.0
|
428
449
|
metadata: {}
|
429
|
-
post_install_message:
|
450
|
+
post_install_message:
|
430
451
|
rdoc_options: []
|
431
452
|
require_paths:
|
432
453
|
- lib
|
@@ -441,8 +462,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
441
462
|
- !ruby/object:Gem::Version
|
442
463
|
version: '0'
|
443
464
|
requirements: []
|
444
|
-
rubygems_version: 3.
|
445
|
-
signing_key:
|
465
|
+
rubygems_version: 3.1.2
|
466
|
+
signing_key:
|
446
467
|
specification_version: 4
|
447
468
|
summary: A plugin bringing remote execution to the Foreman, completing the config
|
448
469
|
management functionality with remote management functionality.
|
@@ -453,6 +474,7 @@ test_files:
|
|
453
474
|
- test/functional/api/v2/foreign_input_sets_controller_test.rb
|
454
475
|
- test/functional/api/v2/job_invocations_controller_test.rb
|
455
476
|
- test/functional/api/v2/job_templates_controller_test.rb
|
477
|
+
- test/functional/api/v2/registration_controller_test.rb
|
456
478
|
- test/functional/api/v2/remote_execution_features_controller_test.rb
|
457
479
|
- test/functional/api/v2/template_invocations_controller_test.rb
|
458
480
|
- test/functional/cockpit_controller_test.rb
|
@@ -460,6 +482,7 @@ test_files:
|
|
460
482
|
- test/functional/job_templates_controller_test.rb
|
461
483
|
- test/helpers/remote_execution_helper_test.rb
|
462
484
|
- test/models/orchestration/ssh_test.rb
|
485
|
+
- test/support/remote_execution_helper.rb
|
463
486
|
- test/test_plugin_helper.rb
|
464
487
|
- test/unit/actions/run_host_job_test.rb
|
465
488
|
- test/unit/actions/run_hosts_job_test.rb
|