foreman_patch 1.1.5 → 1.1.6.alpha4
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/controllers/foreman_patch/concerns/hosts_controller_extensions.rb +35 -41
- data/app/controllers/foreman_patch/react_controller.rb +12 -0
- data/app/lib/actions/foreman_patch/cycle/create.rb +5 -1
- data/app/lib/actions/foreman_patch/cycle/initiate.rb +5 -1
- data/app/lib/actions/foreman_patch/invocation/action.rb +23 -29
- data/app/lib/actions/foreman_patch/invocation/patch.rb +16 -7
- data/app/lib/actions/foreman_patch/invocation/process_logging.rb +44 -0
- data/app/lib/actions/foreman_patch/invocation/proxy_action.rb +52 -0
- data/app/lib/actions/foreman_patch/invocation/wait_for_host.rb +4 -29
- data/app/lib/actions/foreman_patch/round/patch.rb +5 -1
- data/app/lib/actions/foreman_patch/window/publish.rb +5 -1
- data/app/lib/actions/foreman_patch/window/resolve_hosts.rb +5 -1
- data/app/models/foreman_patch/event.rb +13 -0
- data/app/models/foreman_patch/invocation.rb +2 -4
- data/app/views/foreman_patch/api/v2/invocations/base.json.rabl +1 -1
- data/app/views/foreman_patch/api/v2/invocations/event.json.rabl +3 -0
- data/app/views/foreman_patch/api/v2/invocations/show.json.rabl +2 -2
- data/app/views/foreman_patch/groups/index.html.erb +1 -1
- data/app/views/foreman_patch/layouts/react.html.erb +1 -1
- data/config/api_routes.rb +26 -28
- data/config/routes.rb +40 -29
- data/db/migrate/20230706092400_nullify_group_on_delete.rb +11 -0
- data/db/migrate/20230707102800_create_invocation_events.rb +16 -0
- data/db/seeds.d/100-assign_features_with_templates.rb +6 -12
- data/lib/foreman_patch/engine.rb +11 -46
- data/lib/foreman_patch/register.rb +119 -0
- data/lib/foreman_patch/version.rb +1 -1
- data/locale/en/foreman_patch.po +1 -1
- data/locale/foreman_patch.pot +1 -1
- data/locale/gemspec.rb +1 -1
- data/package.json +4 -0
- data/public/assets/foreman_patch/calendar-b5391efda77239c4a4894e9f03f34610f6c8e2e748b2a147febfea814b857cdc.scss.gz +0 -0
- data/public/assets/foreman_patch/cycle_plans-e5667e178ba389908f5c815b24ec0ea77c340849d56bc39c5ce72bb626bd446a.scss +6 -0
- data/public/assets/foreman_patch/cycle_plans-e5667e178ba389908f5c815b24ec0ea77c340849d56bc39c5ce72bb626bd446a.scss.gz +0 -0
- data/public/assets/foreman_patch/cycle_plans-ff3d252119622a68828ff70f4a97328303963002237dbf850e92d6a706e93667.scss +6 -0
- data/public/assets/foreman_patch/cycle_plans-ff3d252119622a68828ff70f4a97328303963002237dbf850e92d6a706e93667.scss.gz +0 -0
- data/public/assets/foreman_patch/foreman_patch-410cf04bf9b09e65fee034cc3f2dd74acf2524abf881c6d6e559d5c62a615faf.css +11 -0
- data/public/assets/foreman_patch/foreman_patch-410cf04bf9b09e65fee034cc3f2dd74acf2524abf881c6d6e559d5c62a615faf.css.gz +0 -0
- data/public/assets/foreman_patch/foreman_patch-84845e54f06d3a11189828e656432d587c7312358cdf694753da7b78b7dabcee.css +11 -0
- data/public/assets/foreman_patch/foreman_patch-84845e54f06d3a11189828e656432d587c7312358cdf694753da7b78b7dabcee.css.gz +0 -0
- data/public/assets/foreman_patch/foreman_patch-a76c5fd10a5795e97c5ae4c222bfdf4ab88da49d6a7659175dba79f8fc62ab47.css +82 -0
- data/public/assets/foreman_patch/foreman_patch-a76c5fd10a5795e97c5ae4c222bfdf4ab88da49d6a7659175dba79f8fc62ab47.css.gz +0 -0
- data/public/assets/foreman_patch/foreman_patch.json +1 -0
- data/public/assets/foreman_patch/plan_edit_windows-2eb04c7e83fa62797b0a14364d3ff5b3c4336983603fdc5a276b5464eeba7e60.js +9 -0
- data/public/assets/foreman_patch/plan_edit_windows-2eb04c7e83fa62797b0a14364d3ff5b3c4336983603fdc5a276b5464eeba7e60.js.gz +0 -0
- data/public/assets/foreman_patch/plan_edit_windows-ddedd3e70fb6ef761f636be2b7b35286e86d68e126bfc37294f9365a5171a928.js +9 -0
- data/public/assets/foreman_patch/plan_edit_windows-ddedd3e70fb6ef761f636be2b7b35286e86d68e126bfc37294f9365a5171a928.js.gz +0 -0
- data/public/webpack/foreman_patch/bundle.css +1 -0
- data/public/webpack/foreman_patch/bundle.js +34173 -0
- data/public/webpack/foreman_patch/foreman_patch.css +1 -0
- data/public/webpack/foreman_patch/foreman_patch.js +34366 -0
- data/public/webpack/foreman_patch/foreman_patch:global.css +1 -0
- data/public/webpack/foreman_patch/foreman_patch:global.js +32098 -0
- data/public/webpack/foreman_patch/manifest.json +25 -0
- data/public/webpack/foreman_patch/vendor.js +5201 -0
- data/webpack/components/Invocations/InvocationsPage.js +1 -1
- data/webpack/components/Invocations/index.js +6 -6
- data/webpack/components/common/Calendar/Calendar.css +76 -0
- data/webpack/components/common/Calendar/Calendar.js +5 -4
- data/webpack/components/common/Table/index.js +28 -0
- data/webpack/global_index.js +16 -0
- data/webpack/index.js +3 -8
- data/webpack/src/Components/Invocation/Invocation.js +67 -0
- data/webpack/src/Components/Invocation/InvocationLogFooter.js +30 -0
- data/webpack/src/Components/Invocation/InvocationLogToolbar.js +80 -0
- data/webpack/{components → src/Components}/Invocation/InvocationSelectors.js +0 -3
- data/webpack/src/Components/Invocation/index.js +62 -0
- data/webpack/src/Components/InvocationStatus.js +50 -0
- data/webpack/src/Components/Loading.js +51 -0
- data/webpack/src/Extends/index.js +15 -0
- data/webpack/src/Router/routes.js +4 -2
- data/webpack/src/reducers.js +1 -1
- metadata +57 -88
- data/app/lib/actions/foreman_patch/cycle/complete.rb +0 -41
- data/app/lib/actions/foreman_patch/cycle/plan.rb +0 -73
- data/app/lib/actions/foreman_patch/round/plan.rb +0 -33
- data/app/lib/actions/foreman_patch/window/plan.rb +0 -43
- data/app/models/setting/patching.rb +0 -57
- data/app/views/foreman_patch/api/v2/invocations/phase.json.rabl +0 -7
- data/config/routes/mount_engine.rb +0 -3
- data/config/routes/overrides.rb +0 -10
- data/lib/foreman_patch/plugin.rb +0 -47
- data/webpack/components/Invocation/Invocation.js +0 -47
- data/webpack/components/Invocation/index.js +0 -36
- data/webpack/components/common/Terminal/OutputLine.js +0 -26
- data/webpack/components/common/Terminal/Terminal.js +0 -115
- data/webpack/components/common/Terminal/Terminal.scss +0 -47
- data/webpack/src/ForemanPatch.js +0 -11
- data/webpack/src/Router/index.js +0 -14
- data/webpack/src/index.js +0 -1
- /data/{webpack/components/common/Calendar/Calendar.scss → public/assets/foreman_patch/calendar-b5391efda77239c4a4894e9f03f34610f6c8e2e748b2a147febfea814b857cdc.scss} +0 -0
- /data/webpack/components/Invocations/{Invocations.scss → Invocations.css} +0 -0
- /data/webpack/{components → src/Components}/Invocation/InvocationActions.js +0 -0
- /data/webpack/{components → src/Components}/Invocation/InvocationConsts.js +0 -0
metadata
CHANGED
@@ -1,71 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman_patch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.6.alpha4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Galens
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
12
|
-
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: katello
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '4.1'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '4.1'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: foreman-tasks
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '4.0'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '4.0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: foreman_remote_execution
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '4.0'
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '4.0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rubocop
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 0.80.0
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: 0.80.0
|
11
|
+
date: 2023-07-19 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
69
13
|
description: Foreman Plugin for Managing Patching.
|
70
14
|
email:
|
71
15
|
- bogey.jlg@gmail.com
|
@@ -95,6 +39,7 @@ files:
|
|
95
39
|
- app/controllers/foreman_patch/groups_controller.rb
|
96
40
|
- app/controllers/foreman_patch/invocations_controller.rb
|
97
41
|
- app/controllers/foreman_patch/plans_controller.rb
|
42
|
+
- app/controllers/foreman_patch/react_controller.rb
|
98
43
|
- app/controllers/foreman_patch/rounds_controller.rb
|
99
44
|
- app/controllers/foreman_patch/ticket_fields_controller.rb
|
100
45
|
- app/controllers/foreman_patch/window_plans_controller.rb
|
@@ -108,24 +53,22 @@ files:
|
|
108
53
|
- app/helpers/foreman_patch/window_patching_helper.rb
|
109
54
|
- app/helpers/foreman_patch/window_plans_helper.rb
|
110
55
|
- app/helpers/foreman_patch/windows_helper.rb
|
111
|
-
- app/lib/actions/foreman_patch/cycle/complete.rb
|
112
56
|
- app/lib/actions/foreman_patch/cycle/create.rb
|
113
57
|
- app/lib/actions/foreman_patch/cycle/initiate.rb
|
114
|
-
- app/lib/actions/foreman_patch/cycle/plan.rb
|
115
58
|
- app/lib/actions/foreman_patch/cycle/prepare_content.rb
|
116
59
|
- app/lib/actions/foreman_patch/host/reschedule.rb
|
117
60
|
- app/lib/actions/foreman_patch/invocation/action.rb
|
118
61
|
- app/lib/actions/foreman_patch/invocation/patch.rb
|
62
|
+
- app/lib/actions/foreman_patch/invocation/process_logging.rb
|
63
|
+
- app/lib/actions/foreman_patch/invocation/proxy_action.rb
|
119
64
|
- app/lib/actions/foreman_patch/invocation/reschedule.rb
|
120
65
|
- app/lib/actions/foreman_patch/invocation/wait_for_host.rb
|
121
66
|
- app/lib/actions/foreman_patch/round/add_missing_hosts.rb
|
122
67
|
- app/lib/actions/foreman_patch/round/create.rb
|
123
68
|
- app/lib/actions/foreman_patch/round/patch.rb
|
124
|
-
- app/lib/actions/foreman_patch/round/plan.rb
|
125
69
|
- app/lib/actions/foreman_patch/round/resolve_hosts.rb
|
126
70
|
- app/lib/actions/foreman_patch/window/create.rb
|
127
71
|
- app/lib/actions/foreman_patch/window/patch.rb
|
128
|
-
- app/lib/actions/foreman_patch/window/plan.rb
|
129
72
|
- app/lib/actions/foreman_patch/window/publish.rb
|
130
73
|
- app/lib/actions/foreman_patch/window/resolve_hosts.rb
|
131
74
|
- app/lib/actions/middleware/check_exit_status.rb
|
@@ -135,6 +78,7 @@ files:
|
|
135
78
|
- app/models/foreman_patch/concerns/group_facet_host_extensions.rb
|
136
79
|
- app/models/foreman_patch/concerns/host_managed_extensions.rb
|
137
80
|
- app/models/foreman_patch/cycle.rb
|
81
|
+
- app/models/foreman_patch/event.rb
|
138
82
|
- app/models/foreman_patch/group.rb
|
139
83
|
- app/models/foreman_patch/host/group_facet.rb
|
140
84
|
- app/models/foreman_patch/invocation.rb
|
@@ -145,7 +89,6 @@ files:
|
|
145
89
|
- app/models/foreman_patch/window.rb
|
146
90
|
- app/models/foreman_patch/window_plan.rb
|
147
91
|
- app/models/foreman_patch/window_task_group.rb
|
148
|
-
- app/models/setting/patching.rb
|
149
92
|
- app/services/foreman_patch/cycle_name_generator.rb
|
150
93
|
- app/services/foreman_patch/ticket.rb
|
151
94
|
- app/services/foreman_patch/ticket/affected_items.rb
|
@@ -168,8 +111,8 @@ files:
|
|
168
111
|
- app/views/foreman_patch/api/v2/groups/show.json.rabl
|
169
112
|
- app/views/foreman_patch/api/v2/groups/update.json.rabl
|
170
113
|
- app/views/foreman_patch/api/v2/invocations/base.json.rabl
|
114
|
+
- app/views/foreman_patch/api/v2/invocations/event.json.rabl
|
171
115
|
- app/views/foreman_patch/api/v2/invocations/index.json.rabl
|
172
|
-
- app/views/foreman_patch/api/v2/invocations/phase.json.rabl
|
173
116
|
- app/views/foreman_patch/api/v2/invocations/show.json.rabl
|
174
117
|
- app/views/foreman_patch/api/v2/plans/base.json.rabl
|
175
118
|
- app/views/foreman_patch/api/v2/plans/create.json.rabl
|
@@ -250,8 +193,6 @@ files:
|
|
250
193
|
- config/initializers/pagelets.rb
|
251
194
|
- config/initializers/safemode_jail.rb
|
252
195
|
- config/routes.rb
|
253
|
-
- config/routes/mount_engine.rb
|
254
|
-
- config/routes/overrides.rb
|
255
196
|
- db/migrate/20210202161304_create_foreman_patch_plans.rb
|
256
197
|
- db/migrate/20210202163323_create_foreman_patch_cycles.rb
|
257
198
|
- db/migrate/20210202164301_create_foreman_patch_groups.rb
|
@@ -274,12 +215,14 @@ files:
|
|
274
215
|
- db/migrate/20220406110705_add_window_state.rb
|
275
216
|
- db/migrate/20220407161120_add_round_status.rb
|
276
217
|
- db/migrate/20220902134800_add_invocation_status.rb
|
218
|
+
- db/migrate/20230706092400_nullify_group_on_delete.rb
|
219
|
+
- db/migrate/20230707102800_create_invocation_events.rb
|
277
220
|
- db/seeds.d/100-assign_features_with_templates.rb
|
278
221
|
- db/seeds.d/160-mail_notifications.rb
|
279
222
|
- db/seeds.d/75-job_templates.rb
|
280
223
|
- lib/foreman_patch.rb
|
281
224
|
- lib/foreman_patch/engine.rb
|
282
|
-
- lib/foreman_patch/
|
225
|
+
- lib/foreman_patch/register.rb
|
283
226
|
- lib/foreman_patch/version.rb
|
284
227
|
- lib/tasks/foreman_patch_tasks.rake
|
285
228
|
- locale/Makefile
|
@@ -287,6 +230,31 @@ files:
|
|
287
230
|
- locale/foreman_patch.pot
|
288
231
|
- locale/gemspec.rb
|
289
232
|
- package.json
|
233
|
+
- public/assets/foreman_patch/calendar-b5391efda77239c4a4894e9f03f34610f6c8e2e748b2a147febfea814b857cdc.scss
|
234
|
+
- public/assets/foreman_patch/calendar-b5391efda77239c4a4894e9f03f34610f6c8e2e748b2a147febfea814b857cdc.scss.gz
|
235
|
+
- public/assets/foreman_patch/cycle_plans-e5667e178ba389908f5c815b24ec0ea77c340849d56bc39c5ce72bb626bd446a.scss
|
236
|
+
- public/assets/foreman_patch/cycle_plans-e5667e178ba389908f5c815b24ec0ea77c340849d56bc39c5ce72bb626bd446a.scss.gz
|
237
|
+
- public/assets/foreman_patch/cycle_plans-ff3d252119622a68828ff70f4a97328303963002237dbf850e92d6a706e93667.scss
|
238
|
+
- public/assets/foreman_patch/cycle_plans-ff3d252119622a68828ff70f4a97328303963002237dbf850e92d6a706e93667.scss.gz
|
239
|
+
- public/assets/foreman_patch/foreman_patch-410cf04bf9b09e65fee034cc3f2dd74acf2524abf881c6d6e559d5c62a615faf.css
|
240
|
+
- public/assets/foreman_patch/foreman_patch-410cf04bf9b09e65fee034cc3f2dd74acf2524abf881c6d6e559d5c62a615faf.css.gz
|
241
|
+
- public/assets/foreman_patch/foreman_patch-84845e54f06d3a11189828e656432d587c7312358cdf694753da7b78b7dabcee.css
|
242
|
+
- public/assets/foreman_patch/foreman_patch-84845e54f06d3a11189828e656432d587c7312358cdf694753da7b78b7dabcee.css.gz
|
243
|
+
- public/assets/foreman_patch/foreman_patch-a76c5fd10a5795e97c5ae4c222bfdf4ab88da49d6a7659175dba79f8fc62ab47.css
|
244
|
+
- public/assets/foreman_patch/foreman_patch-a76c5fd10a5795e97c5ae4c222bfdf4ab88da49d6a7659175dba79f8fc62ab47.css.gz
|
245
|
+
- public/assets/foreman_patch/foreman_patch.json
|
246
|
+
- public/assets/foreman_patch/plan_edit_windows-2eb04c7e83fa62797b0a14364d3ff5b3c4336983603fdc5a276b5464eeba7e60.js
|
247
|
+
- public/assets/foreman_patch/plan_edit_windows-2eb04c7e83fa62797b0a14364d3ff5b3c4336983603fdc5a276b5464eeba7e60.js.gz
|
248
|
+
- public/assets/foreman_patch/plan_edit_windows-ddedd3e70fb6ef761f636be2b7b35286e86d68e126bfc37294f9365a5171a928.js
|
249
|
+
- public/assets/foreman_patch/plan_edit_windows-ddedd3e70fb6ef761f636be2b7b35286e86d68e126bfc37294f9365a5171a928.js.gz
|
250
|
+
- public/webpack/foreman_patch/bundle.css
|
251
|
+
- public/webpack/foreman_patch/bundle.js
|
252
|
+
- public/webpack/foreman_patch/foreman_patch.css
|
253
|
+
- public/webpack/foreman_patch/foreman_patch.js
|
254
|
+
- public/webpack/foreman_patch/foreman_patch:global.css
|
255
|
+
- public/webpack/foreman_patch/foreman_patch:global.js
|
256
|
+
- public/webpack/foreman_patch/manifest.json
|
257
|
+
- public/webpack/foreman_patch/vendor.js
|
290
258
|
- test/factories/foreman_patch_factories.rb
|
291
259
|
- test/test_plugin_helper.rb
|
292
260
|
- test/unit/foreman_patch_test.rb
|
@@ -301,13 +269,8 @@ files:
|
|
301
269
|
- webpack/components/Groups/Groups.js
|
302
270
|
- webpack/components/Groups/GroupsHelpers.js
|
303
271
|
- webpack/components/Groups/Priority.js
|
304
|
-
- webpack/components/
|
305
|
-
- webpack/components/Invocation/InvocationActions.js
|
306
|
-
- webpack/components/Invocation/InvocationConsts.js
|
307
|
-
- webpack/components/Invocation/InvocationSelectors.js
|
308
|
-
- webpack/components/Invocation/index.js
|
272
|
+
- webpack/components/Invocations/Invocations.css
|
309
273
|
- webpack/components/Invocations/Invocations.js
|
310
|
-
- webpack/components/Invocations/Invocations.scss
|
311
274
|
- webpack/components/Invocations/InvocationsConstants.js
|
312
275
|
- webpack/components/Invocations/InvocationsHelpers.js
|
313
276
|
- webpack/components/Invocations/InvocationsPage.js
|
@@ -336,8 +299,8 @@ files:
|
|
336
299
|
- webpack/components/Rounds/components/RoundItem.js
|
337
300
|
- webpack/components/Rounds/components/RoundStatus.js
|
338
301
|
- webpack/components/Rounds/index.js
|
302
|
+
- webpack/components/common/Calendar/Calendar.css
|
339
303
|
- webpack/components/common/Calendar/Calendar.js
|
340
|
-
- webpack/components/common/Calendar/Calendar.scss
|
341
304
|
- webpack/components/common/Calendar/CalendarConstants.js
|
342
305
|
- webpack/components/common/Calendar/CalendarHelpers.js
|
343
306
|
- webpack/components/common/Calendar/Day/index.js
|
@@ -349,14 +312,20 @@ files:
|
|
349
312
|
- webpack/components/common/Calendar/View.js
|
350
313
|
- webpack/components/common/Calendar/Week/index.js
|
351
314
|
- webpack/components/common/Calendar/index.js
|
352
|
-
- webpack/components/common/
|
353
|
-
- webpack/
|
354
|
-
- webpack/components/common/Terminal/Terminal.scss
|
315
|
+
- webpack/components/common/Table/index.js
|
316
|
+
- webpack/global_index.js
|
355
317
|
- webpack/index.js
|
356
|
-
- webpack/src/
|
357
|
-
- webpack/src/
|
318
|
+
- webpack/src/Components/Invocation/Invocation.js
|
319
|
+
- webpack/src/Components/Invocation/InvocationActions.js
|
320
|
+
- webpack/src/Components/Invocation/InvocationConsts.js
|
321
|
+
- webpack/src/Components/Invocation/InvocationLogFooter.js
|
322
|
+
- webpack/src/Components/Invocation/InvocationLogToolbar.js
|
323
|
+
- webpack/src/Components/Invocation/InvocationSelectors.js
|
324
|
+
- webpack/src/Components/Invocation/index.js
|
325
|
+
- webpack/src/Components/InvocationStatus.js
|
326
|
+
- webpack/src/Components/Loading.js
|
327
|
+
- webpack/src/Extends/index.js
|
358
328
|
- webpack/src/Router/routes.js
|
359
|
-
- webpack/src/index.js
|
360
329
|
- webpack/src/reducers.js
|
361
330
|
homepage: https://github.com/ludovicus3/foreman_patch
|
362
331
|
licenses:
|
@@ -368,20 +337,20 @@ require_paths:
|
|
368
337
|
- lib
|
369
338
|
required_ruby_version: !ruby/object:Gem::Requirement
|
370
339
|
requirements:
|
371
|
-
- - "
|
340
|
+
- - ">="
|
372
341
|
- !ruby/object:Gem::Version
|
373
|
-
version: '
|
342
|
+
version: '0'
|
374
343
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
375
344
|
requirements:
|
376
|
-
- - "
|
345
|
+
- - ">"
|
377
346
|
- !ruby/object:Gem::Version
|
378
|
-
version:
|
347
|
+
version: 1.3.1
|
379
348
|
requirements: []
|
380
|
-
rubygems_version: 3.
|
349
|
+
rubygems_version: 3.1.6
|
381
350
|
signing_key:
|
382
351
|
specification_version: 4
|
383
352
|
summary: Foreman Plugin for Managing Patching
|
384
353
|
test_files:
|
385
|
-
- test/test_plugin_helper.rb
|
386
|
-
- test/factories/foreman_patch_factories.rb
|
387
354
|
- test/unit/foreman_patch_test.rb
|
355
|
+
- test/factories/foreman_patch_factories.rb
|
356
|
+
- test/test_plugin_helper.rb
|
@@ -1,41 +0,0 @@
|
|
1
|
-
module Actions
|
2
|
-
module ForemanPatch
|
3
|
-
module Cycle
|
4
|
-
class Complete < Actions::EntryAction
|
5
|
-
|
6
|
-
def delay(delay_options, cycle)
|
7
|
-
action_subject(cycle)
|
8
|
-
|
9
|
-
super delay_options, cycle
|
10
|
-
end
|
11
|
-
|
12
|
-
def plan(cycle)
|
13
|
-
action_subject(cycle)
|
14
|
-
|
15
|
-
plan_self
|
16
|
-
end
|
17
|
-
|
18
|
-
def finalize
|
19
|
-
users = ::User.select { |user| user.receives?(:patch_cycle_completed) }.compact
|
20
|
-
|
21
|
-
begin
|
22
|
-
MailNotification[:patch_cycle_completed].deliver(users: users, cycle: cycle) unless users.blank?
|
23
|
-
rescue => error
|
24
|
-
Rails.logger.error(error)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def humanized_name
|
29
|
-
_('Complete Patch Cycle: %s') % input[:cycle][:name]
|
30
|
-
end
|
31
|
-
|
32
|
-
private
|
33
|
-
|
34
|
-
def cycle
|
35
|
-
@cycle ||= ::ForemanPatch::Cycle.find(input[:cycle][:id])
|
36
|
-
end
|
37
|
-
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,73 +0,0 @@
|
|
1
|
-
module Actions
|
2
|
-
module ForemanPatch
|
3
|
-
module Cycle
|
4
|
-
class Plan < Actions::EntryAction
|
5
|
-
|
6
|
-
def delay(delay_options, plan)
|
7
|
-
input.update serialize_args(plan: plan)
|
8
|
-
add_missing_task_group(plan)
|
9
|
-
|
10
|
-
super delay_options, plan
|
11
|
-
end
|
12
|
-
|
13
|
-
def plan(plan)
|
14
|
-
input.update serialize_args(plan: plan)
|
15
|
-
add_missing_task_group(plan)
|
16
|
-
|
17
|
-
sequence do
|
18
|
-
creation = plan_action(::Actions::ForemanPatch::Cycle::Create, params(plan))
|
19
|
-
|
20
|
-
concurrence do
|
21
|
-
plan.window_plans.each do |window_plan|
|
22
|
-
plan_action(::Actions::ForemanPatch::Window::Plan, window_plan, creation.output[:cycle])
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
plan_self
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def run
|
31
|
-
cycle_plan.start_date = cycle_plan.next_cycle_start
|
32
|
-
cycle_plan.save!
|
33
|
-
end
|
34
|
-
|
35
|
-
def finalize
|
36
|
-
cycle_plan.iterate if cycle_plan.active_count > 0
|
37
|
-
end
|
38
|
-
|
39
|
-
def humanized_name
|
40
|
-
_('Plan cycle: %s') % input[:plan][:name]
|
41
|
-
end
|
42
|
-
|
43
|
-
private
|
44
|
-
|
45
|
-
def cycle_plan
|
46
|
-
@cycle_plan ||= ::ForemanPatch::Plan.find(input[:plan][:id])
|
47
|
-
end
|
48
|
-
|
49
|
-
def cycle
|
50
|
-
@cycle ||= ::ForemanPatch::Cycle.find(input[:cycle][:id])
|
51
|
-
end
|
52
|
-
|
53
|
-
def params(plan)
|
54
|
-
{
|
55
|
-
plan_id: plan.id,
|
56
|
-
name: ::ForemanPatch::CycleNameGenerator.generate(plan),
|
57
|
-
start_date: plan.start_date.to_s,
|
58
|
-
end_date: (plan.next_cycle_start - 1.day).to_s,
|
59
|
-
}
|
60
|
-
end
|
61
|
-
|
62
|
-
def add_missing_task_group(plan)
|
63
|
-
if plan.task_group.nil?
|
64
|
-
plan.task_group = ::ForemanPatch::PlanTaskGroup.create!
|
65
|
-
plan.save!
|
66
|
-
end
|
67
|
-
task.add_missing_task_groups(plan.task_group)
|
68
|
-
end
|
69
|
-
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
module Actions
|
2
|
-
module ForemanPatch
|
3
|
-
module Round
|
4
|
-
class Plan < Actions::EntryAction
|
5
|
-
|
6
|
-
def resource_locks
|
7
|
-
:link
|
8
|
-
end
|
9
|
-
|
10
|
-
def plan(group, window)
|
11
|
-
action_subject(group, window: window)
|
12
|
-
|
13
|
-
action = plan_action(::Actions::ForemanPatch::Round::Create, params(group, window))
|
14
|
-
plan_action(::Actions::ForemanPatch::Round::ResolveHosts, action.output[:round])
|
15
|
-
end
|
16
|
-
|
17
|
-
private
|
18
|
-
|
19
|
-
def params(group, window)
|
20
|
-
{
|
21
|
-
window: window,
|
22
|
-
group: group.to_action_input,
|
23
|
-
name: group.name,
|
24
|
-
description: group.description,
|
25
|
-
priority: group.priority,
|
26
|
-
max_unavailable: group.max_unavailable,
|
27
|
-
}
|
28
|
-
end
|
29
|
-
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
module Actions
|
2
|
-
module ForemanPatch
|
3
|
-
module Window
|
4
|
-
class Plan < Actions::EntryAction
|
5
|
-
|
6
|
-
def plan(window_plan, cycle)
|
7
|
-
input.update serialize_args(window_plan: window_plan, cycle: cycle)
|
8
|
-
|
9
|
-
sequence do
|
10
|
-
action = plan_action(::Actions::ForemanPatch::Window::Create, params(window_plan, cycle))
|
11
|
-
|
12
|
-
concurrence do
|
13
|
-
window_plan.groups.each do |group|
|
14
|
-
plan_action(::Actions::ForemanPatch::Round::Plan, group, action.output[:window])
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
plan_action(::Actions::ForemanPatch::Window::Publish, action.output[:window])
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def humanized_name
|
23
|
-
_('Plan window: %s') % input[:window_plan][:name]
|
24
|
-
end
|
25
|
-
|
26
|
-
private
|
27
|
-
|
28
|
-
def params(window_plan, cycle)
|
29
|
-
{
|
30
|
-
cycle: cycle,
|
31
|
-
name: window_plan.name,
|
32
|
-
description: window_plan.description,
|
33
|
-
start_at: window_plan.start_at.to_s,
|
34
|
-
end_by: window_plan.end_by.to_s,
|
35
|
-
}
|
36
|
-
end
|
37
|
-
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
|
@@ -1,57 +0,0 @@
|
|
1
|
-
class Setting::Patching < ::Setting
|
2
|
-
def self.default_settings
|
3
|
-
http_proxy_select = [{
|
4
|
-
name: _('Http Proxies'),
|
5
|
-
class: 'HttpProxy',
|
6
|
-
scope: 'all',
|
7
|
-
value_method: 'name',
|
8
|
-
text_method: 'name_and_url',
|
9
|
-
}]
|
10
|
-
|
11
|
-
time_zone_select = [{
|
12
|
-
name: _('Time Zones'),
|
13
|
-
class: 'ActiveSupport::TimeZone',
|
14
|
-
scope: 'all',
|
15
|
-
value_method: 'name',
|
16
|
-
text_method: 'name',
|
17
|
-
}]
|
18
|
-
|
19
|
-
# set(name, description, default, fullname, value, { options })
|
20
|
-
[
|
21
|
-
self.set('host_max_wait_for_up', N_("Maximum seconds to wait for a host after patching restart."),
|
22
|
-
600, N_("Max wait for host up")),
|
23
|
-
self.set('host_patch_timeout', N_("Maximum seconds for a patching invocation to run before timing out"),
|
24
|
-
nil, N_('Patch Timeout')),
|
25
|
-
self.set('patch_schedule_time_zone', N_('Time zone used to base patch window scheduling off of.'),
|
26
|
-
'UTC', N_('Patch Schedule Time Zone'), nil,
|
27
|
-
collection: proc { time_zone_select }),
|
28
|
-
self.set('ticket_api_host', N_('Host used for change management tickets'),
|
29
|
-
nil, N_('Ticket API host')),
|
30
|
-
self.set('ticket_api_proxy', N_('HTTP Proxy to access ticket API host'),
|
31
|
-
nil, N_('Ticket API HTTP proxy'), nil,
|
32
|
-
collection: proc { http_proxy_select }, include_blank: N_('no proxy')),
|
33
|
-
self.set('ticket_api_user', N_('User with access to ticket API'),
|
34
|
-
nil, N_('Ticket API user')),
|
35
|
-
self.set('ticket_api_password', N_('Password for ticket API user'),
|
36
|
-
nil, N_('Ticket API password'), nil, { encrypted: true }),
|
37
|
-
self.set('ticket_api_path', N_('Ticket API path for REST/CRUD operations'),
|
38
|
-
'/api/now/table/change_request', N_('Ticket API path')),
|
39
|
-
self.set('ticket_web_ui_path', N_('Path for opening a ticket in the web UI'),
|
40
|
-
'/change_request.do?sys_id=:id', N_('Ticket Web UI path')),
|
41
|
-
self.set('ticket_label_field', N_('Name of the field used for the ticket label'),
|
42
|
-
'number', N_('Ticket label field')),
|
43
|
-
self.set('ticket_id_field', N_('Name of the field used for the ticket id'),
|
44
|
-
'sys_id', N_('Ticket ID field')),
|
45
|
-
self.set('skip_broken_patches', N_('Skip broken dependencies during patching'), true, N_('Skip broken patches'))
|
46
|
-
]
|
47
|
-
end
|
48
|
-
|
49
|
-
def self.humanized_category
|
50
|
-
N_('Patching')
|
51
|
-
end
|
52
|
-
|
53
|
-
def self.load_defaults
|
54
|
-
BLANK_ATTRS.concat %w(ticket_api_host ticket_api_proxy ticket_api_user ticket_api_password, host_patch_timeout)
|
55
|
-
super
|
56
|
-
end
|
57
|
-
end
|
data/config/routes/overrides.rb
DELETED
data/lib/foreman_patch/plugin.rb
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
Foreman::Plugin.register :foreman_patch do
|
2
|
-
requires_foreman '>= 2.1'
|
3
|
-
|
4
|
-
apipie_documented_controllers(["#{ForemanPatch::Engine.root}/app/controllers/foreman_patch/api/v2/*.rb"])
|
5
|
-
|
6
|
-
register_facet ForemanPatch::Host::GroupFacet, :group_facet do
|
7
|
-
api_view list: 'foreman_patch/api/v2/group_facet/base_with_root', single: 'foreman_patch/api/v2/group_facet/show'
|
8
|
-
api_docs :group_facet_attributes, ::ForemanPatch::Api::V2::HostGroupsController
|
9
|
-
extend_model ForemanPatch::Concerns::GroupFacetHostExtensions
|
10
|
-
set_dependent_action :destroy
|
11
|
-
end
|
12
|
-
|
13
|
-
# Add permissions
|
14
|
-
security_block :foreman_patch do
|
15
|
-
end
|
16
|
-
|
17
|
-
divider :top_menu, caption: N_('Patching'), parent: :content_menu
|
18
|
-
menu :top_menu, :groups,
|
19
|
-
caption: N_('Groups'),
|
20
|
-
engine: ForemanPatch::Engine,
|
21
|
-
parent: :content_menu
|
22
|
-
|
23
|
-
menu :top_menu, :cycles,
|
24
|
-
caption: N_('Cycles'),
|
25
|
-
engine: ForemanPatch::Engine,
|
26
|
-
parent: :content_menu
|
27
|
-
|
28
|
-
menu :top_menu, :plans,
|
29
|
-
caption: N_('Plans'),
|
30
|
-
engine: ForemanPatch::Engine,
|
31
|
-
parent: :content_menu
|
32
|
-
|
33
|
-
menu :top_menu, :ticket_fields,
|
34
|
-
caption: N_('Ticket Fields'),
|
35
|
-
engine: ForemanPatch::Engine,
|
36
|
-
parent: :content_menu
|
37
|
-
|
38
|
-
parameter_filter ::Host::Managed, :group_facet_attributes => [:group_id]
|
39
|
-
|
40
|
-
describe_host do
|
41
|
-
multiple_actions_provider :patch_host_multiple_actions
|
42
|
-
overview_fields_provider :patch_host_overview_fields
|
43
|
-
end
|
44
|
-
|
45
|
-
RemoteExecutionFeature.register(:power_action, N_("Power Action"), description: N_("Power Action"), provided_inputs: ['action'])
|
46
|
-
RemoteExecutionFeature.register(:ensure_services, N_("Ensure Services"), description: N_("Ensure Services are running"))
|
47
|
-
end
|
@@ -1,47 +0,0 @@
|
|
1
|
-
import React, { useState } from 'react';
|
2
|
-
import PropTypes from 'prop-types';
|
3
|
-
import { translate as __ } from 'foremanReact/common/I18n';
|
4
|
-
import { Tabs, Tab, TabTitleText, LoadingState } from 'patternfly-react';
|
5
|
-
import { STATUS } from 'foremanReact/constants';
|
6
|
-
|
7
|
-
import Terminal from '../common/Terminal/Terminal';
|
8
|
-
|
9
|
-
const Invocation = ({ invocation, status }) => {
|
10
|
-
if (status === STATUS.ERROR) {
|
11
|
-
return (
|
12
|
-
<Alert type="error">
|
13
|
-
{__(
|
14
|
-
'There was an error loading the invocation, try refreshing the page.'
|
15
|
-
)}
|
16
|
-
</Alert>
|
17
|
-
);
|
18
|
-
}
|
19
|
-
|
20
|
-
const [activeTabKey, setActiveTabKey] = useState(0);
|
21
|
-
|
22
|
-
const handleTabClick = (event, tabIndex) => {
|
23
|
-
setActiveTabKey(tabIndex);
|
24
|
-
};
|
25
|
-
|
26
|
-
return (
|
27
|
-
<LoadingState loading={status == STATUS.PENDING}>
|
28
|
-
<Tabs activeKey={activeTabKey} onSelect={handleTabClick}>
|
29
|
-
<Tab eventKey={0} title={<TabTitleText>Overview</TabTitleText>}>
|
30
|
-
TODO: status
|
31
|
-
</Tab>
|
32
|
-
{invocation.phases.map((phase, index) => (
|
33
|
-
<Tab event={index + 1} title={<TabTitleText>{phase.humanized_name}</TabTitleText>}>
|
34
|
-
<Terminal key={phase.label} linesets={phase.live_output}/>
|
35
|
-
</Tab>
|
36
|
-
))}
|
37
|
-
</Tabs>
|
38
|
-
</LoadingState>
|
39
|
-
);
|
40
|
-
};
|
41
|
-
|
42
|
-
Invocation.propTypes = {
|
43
|
-
status: PropTypes.string.isRequired,
|
44
|
-
invocation: PropTypes.object.isRequired,
|
45
|
-
};
|
46
|
-
|
47
|
-
export default Invocation;
|
@@ -1,36 +0,0 @@
|
|
1
|
-
import React { useEffect, useState } from 'react';
|
2
|
-
import { useSelector, useDispatch } from 'react-redux';
|
3
|
-
import { stopInterval } from 'foremanReact/redux/middlewares/IntervalMiddleware';
|
4
|
-
import Invocation from './Invocation';
|
5
|
-
import {
|
6
|
-
selectInvocation,
|
7
|
-
selectState,
|
8
|
-
selectStatus,
|
9
|
-
} from './InvocationSelectors';
|
10
|
-
import { getData } from './InvocationActions';
|
11
|
-
import { INVOCATION } from './InvocationsConsts';
|
12
|
-
|
13
|
-
const WrappedInvocation = () => {
|
14
|
-
const dispatch = useDispatch();
|
15
|
-
const state = useSelector(selectState);
|
16
|
-
const invocation = useSelector(selectInvocation);
|
17
|
-
const status = useSelector(selectStatus);
|
18
|
-
|
19
|
-
useEffect(() => {
|
20
|
-
dispatch(getData());
|
21
|
-
|
22
|
-
return () => {
|
23
|
-
dispatch(stopInterval(INVOCATION));
|
24
|
-
};
|
25
|
-
}, [dispatch]);
|
26
|
-
|
27
|
-
useEffect(() => {
|
28
|
-
if (state === 'stopped') {
|
29
|
-
dispatch(stopInterval(INVOCATION));
|
30
|
-
}
|
31
|
-
}, [state, dispatch]);
|
32
|
-
|
33
|
-
return <Invocation invocation={invocation} status={status}/>
|
34
|
-
};
|
35
|
-
|
36
|
-
export default WrappedInvocation;
|