foreman_leapp 0.0.5 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +11 -20
- data/app/controllers/api/v2/concerns/api_authorizer.rb +27 -0
- data/app/controllers/api/v2/preupgrade_reports_controller.rb +21 -2
- data/app/controllers/preupgrade_reports_controller.rb +11 -1
- data/app/lib/actions/preupgrade_job.rb +2 -1
- data/app/lib/helpers/job_helper.rb +3 -4
- data/app/models/preupgrade_report.rb +1 -0
- data/app/models/preupgrade_report_entry.rb +1 -0
- data/app/views/api/v2/preupgrade_report_entries/base.json.rabl +1 -1
- data/app/views/api/v2/preupgrade_reports/job_invocation.json.rabl +3 -0
- data/app/views/foreman_leapp/job_templates/leapp_check.erb +15 -0
- data/app/views/foreman_leapp/job_templates/{preupgrade.erb → leapp_preupgrade.erb} +5 -2
- data/app/views/foreman_leapp/job_templates/leapp_remediation.erb +29 -0
- data/app/views/foreman_leapp/job_templates/leapp_upgrade.erb +26 -0
- data/app/views/job_invocations/_leapp_preupgrade_report.html.erb +2 -1
- data/config/routes.rb +2 -1
- data/db/migrate/20200429080939_report_entries_flags.rb +5 -0
- data/db/seeds.d/10_leapp_preupgrade.rb +1 -1
- data/lib/foreman_leapp/engine.rb +7 -6
- data/lib/foreman_leapp/version.rb +1 -1
- data/package.json +3 -2
- data/test/functional/api/v2/preupgrade_reports_controller_test.rb +89 -6
- data/test/functional/preupgrade_reports_controller_test.rb +27 -4
- data/test/unit/actions/preupgrade_job_test.rb +1 -1
- data/test/unit/helpers/job_helper_test.rb +3 -10
- data/webpack/__mocks__/foremanReact/Root/Context/ForemanContext.js +4 -0
- data/webpack/__mocks__/foremanReact/common/I18n.js +1 -1
- data/webpack/__mocks__/foremanReact/components/Pagination/PaginationWrapper.js +2 -0
- data/webpack/__mocks__/foremanReact/components/common/EmptyState.js +1 -0
- data/webpack/components/PreupgradeReports/PreupgradeReports.js +119 -8
- data/webpack/components/PreupgradeReports/PreupgradeReportsActions.js +1 -1
- data/webpack/components/PreupgradeReports/PreupgradeReportsHelpers.js +152 -0
- data/webpack/components/PreupgradeReports/PreupgradeReportsReducer.js +2 -0
- data/webpack/components/PreupgradeReports/PreupgradeReportsSelectors.js +11 -0
- data/webpack/components/PreupgradeReports/__tests__/PreupgradeReports.fixtures.js +72 -2
- data/webpack/components/PreupgradeReports/__tests__/PreupgradeReports.test.js +26 -1
- data/webpack/components/PreupgradeReports/__tests__/PreupgradeReportsHelpers.test.js +78 -0
- data/webpack/components/PreupgradeReports/__tests__/__snapshots__/PreupgradeReports.test.js.snap +60 -5
- data/webpack/components/PreupgradeReports/__tests__/__snapshots__/PreupgradeReportsHelpers.test.js.snap +489 -0
- data/webpack/components/PreupgradeReports/__tests__/__snapshots__/PreupgradeReportsReducer.test.js.snap +40 -1
- data/webpack/components/PreupgradeReports/__tests__/__snapshots__/PreupgradeReportsSelectors.test.js.snap +36 -1
- data/webpack/components/PreupgradeReports/components/EntriesFilter.js +121 -0
- data/webpack/components/PreupgradeReports/components/EntriesFilter.scss +3 -0
- data/webpack/components/PreupgradeReports/components/EntriesFilter.test.js +30 -0
- data/webpack/components/PreupgradeReports/components/FixSelectedButton.js +35 -0
- data/webpack/components/PreupgradeReports/components/FixSelectedButton.test.js +15 -0
- data/webpack/components/PreupgradeReports/components/NoReports.js +35 -0
- data/webpack/components/PreupgradeReports/components/NoReports.test.js +15 -0
- data/webpack/components/PreupgradeReports/components/UpgradeAllButton.js +29 -0
- data/webpack/components/PreupgradeReports/components/UpgradeAllButton.test.js +17 -0
- data/webpack/components/PreupgradeReports/components/__snapshots__/EntriesFilter.test.js.snap +330 -0
- data/webpack/components/PreupgradeReports/components/__snapshots__/FixSelectedButton.test.js.snap +40 -0
- data/webpack/components/PreupgradeReports/components/__snapshots__/NoReports.test.js.snap +19 -0
- data/webpack/components/PreupgradeReports/components/__snapshots__/UpgradeAllButton.test.js.snap +29 -0
- data/webpack/components/PreupgradeReports/index.js +28 -5
- data/webpack/components/PreupgradeReportsList/PreupgradeReportList.scss +37 -0
- data/webpack/components/PreupgradeReportsList/__tests__/PreupgradeReportsList.test.js +28 -2
- data/webpack/components/PreupgradeReportsList/__tests__/__snapshots__/PreupgradeReportsList.test.js.snap +119 -0
- data/webpack/components/PreupgradeReportsList/components/InfoItem.js +1 -1
- data/webpack/components/PreupgradeReportsList/components/InhibitorInfoItem.js +33 -0
- data/webpack/components/PreupgradeReportsList/components/PreupgradeReportEntry.js +50 -6
- data/webpack/components/PreupgradeReportsList/components/PreupgradeReportsListHeader.js +56 -0
- data/webpack/components/PreupgradeReportsList/components/SortableHeaderItem.js +50 -0
- data/webpack/components/PreupgradeReportsList/components/__tests__/InhibitorInfoItem.test.js +27 -0
- data/webpack/components/PreupgradeReportsList/components/__tests__/PreupgradeReportEntry.fixtures.js +38 -0
- data/webpack/components/PreupgradeReportsList/components/__tests__/PreupgradeReportEntry.test.js +2 -0
- data/webpack/components/PreupgradeReportsList/components/__tests__/PreupgradeReportsListHeader.test.js +14 -0
- data/webpack/components/PreupgradeReportsList/components/__tests__/SortableHeaderItem.test.js +29 -0
- data/webpack/components/PreupgradeReportsList/components/__tests__/__snapshots__/InhibitorInfoItem.test.js.snap +32 -0
- data/webpack/components/PreupgradeReportsList/components/__tests__/__snapshots__/PreupgradeReportEntry.test.js.snap +95 -14
- data/webpack/components/PreupgradeReportsList/components/__tests__/__snapshots__/PreupgradeReportsListHeader.test.js.snap +113 -0
- data/webpack/components/PreupgradeReportsList/components/__tests__/__snapshots__/SortableHeaderItem.test.js.snap +36 -0
- data/webpack/components/PreupgradeReportsList/components/__tests__/__snapshots__/helpers.test.js.snap +191 -29
- data/webpack/components/PreupgradeReportsList/components/__tests__/helpers.test.js +19 -8
- data/webpack/components/PreupgradeReportsList/components/foreman_leapp.scss +15 -0
- data/webpack/components/PreupgradeReportsList/components/helpers.js +177 -21
- data/webpack/components/PreupgradeReportsList/components/images/i_severity-critical.svg +61 -0
- data/webpack/components/PreupgradeReportsList/components/images/i_severity-high.svg +61 -0
- data/webpack/components/PreupgradeReportsList/components/images/i_severity-low.svg +62 -0
- data/webpack/components/PreupgradeReportsList/components/images/i_severity-med.svg +62 -0
- data/webpack/components/PreupgradeReportsList/index.js +48 -10
- data/webpack/csrf.js +4 -0
- metadata +61 -10
- data/app/views/foreman_leapp/job_templates/remediation.erb +0 -17
- data/app/views/foreman_leapp/job_templates/upgrade.erb +0 -16
- data/webpack/components/PreupgradeReportsList/components/StringInfoItem.js +0 -49
- data/webpack/components/PreupgradeReportsList/components/__tests__/StringInfoItem.test.js +0 -13
- data/webpack/components/PreupgradeReportsList/components/__tests__/__snapshots__/StringInfoItem.test.js.snap +0 -12
@@ -0,0 +1,330 @@
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
2
|
+
|
3
|
+
exports[`EntriresFilter should render for host filter 1`] = `
|
4
|
+
<Row
|
5
|
+
bsClass="row"
|
6
|
+
componentClass="div"
|
7
|
+
>
|
8
|
+
<Col
|
9
|
+
bsClass="col"
|
10
|
+
componentClass="div"
|
11
|
+
md={4}
|
12
|
+
>
|
13
|
+
<FormGroup
|
14
|
+
bsClass="form-group"
|
15
|
+
>
|
16
|
+
<InputGroup
|
17
|
+
bsClass="input-group"
|
18
|
+
>
|
19
|
+
<DropdownButton
|
20
|
+
componentClass={[Function]}
|
21
|
+
id="entry-filter"
|
22
|
+
title="Host"
|
23
|
+
>
|
24
|
+
<MenuItem
|
25
|
+
active={false}
|
26
|
+
bsClass="dropdown"
|
27
|
+
disabled={false}
|
28
|
+
divider={false}
|
29
|
+
header={false}
|
30
|
+
key="title"
|
31
|
+
onClick={[Function]}
|
32
|
+
>
|
33
|
+
Title
|
34
|
+
</MenuItem>
|
35
|
+
<MenuItem
|
36
|
+
active={false}
|
37
|
+
bsClass="dropdown"
|
38
|
+
disabled={false}
|
39
|
+
divider={false}
|
40
|
+
header={false}
|
41
|
+
key="severity"
|
42
|
+
onClick={[Function]}
|
43
|
+
>
|
44
|
+
Risk Factor
|
45
|
+
</MenuItem>
|
46
|
+
<MenuItem
|
47
|
+
active={true}
|
48
|
+
bsClass="dropdown"
|
49
|
+
disabled={false}
|
50
|
+
divider={false}
|
51
|
+
header={false}
|
52
|
+
key="hostname"
|
53
|
+
onClick={[Function]}
|
54
|
+
>
|
55
|
+
Host
|
56
|
+
</MenuItem>
|
57
|
+
<MenuItem
|
58
|
+
active={false}
|
59
|
+
bsClass="dropdown"
|
60
|
+
disabled={false}
|
61
|
+
divider={false}
|
62
|
+
header={false}
|
63
|
+
key="fix"
|
64
|
+
onClick={[Function]}
|
65
|
+
>
|
66
|
+
Fix Type
|
67
|
+
</MenuItem>
|
68
|
+
<MenuItem
|
69
|
+
active={false}
|
70
|
+
bsClass="dropdown"
|
71
|
+
disabled={false}
|
72
|
+
divider={false}
|
73
|
+
header={false}
|
74
|
+
key="inhibitor"
|
75
|
+
onClick={[Function]}
|
76
|
+
>
|
77
|
+
Inhibitor
|
78
|
+
</MenuItem>
|
79
|
+
</DropdownButton>
|
80
|
+
<DebounceInput
|
81
|
+
className="form-control entries-filter-reset-height"
|
82
|
+
debounceTimeout={300}
|
83
|
+
element="input"
|
84
|
+
forceNotifyByEnter={true}
|
85
|
+
forceNotifyOnBlur={true}
|
86
|
+
minLength={0}
|
87
|
+
onChange={[Function]}
|
88
|
+
type="text"
|
89
|
+
/>
|
90
|
+
</InputGroup>
|
91
|
+
</FormGroup>
|
92
|
+
</Col>
|
93
|
+
</Row>
|
94
|
+
`;
|
95
|
+
|
96
|
+
exports[`EntriresFilter should render for severity filter 1`] = `
|
97
|
+
<Row
|
98
|
+
bsClass="row"
|
99
|
+
componentClass="div"
|
100
|
+
>
|
101
|
+
<Col
|
102
|
+
bsClass="col"
|
103
|
+
componentClass="div"
|
104
|
+
md={4}
|
105
|
+
>
|
106
|
+
<FormGroup
|
107
|
+
bsClass="form-group"
|
108
|
+
>
|
109
|
+
<InputGroup
|
110
|
+
bsClass="input-group"
|
111
|
+
>
|
112
|
+
<DropdownButton
|
113
|
+
componentClass={[Function]}
|
114
|
+
id="entry-filter"
|
115
|
+
title="Risk Factor"
|
116
|
+
>
|
117
|
+
<MenuItem
|
118
|
+
active={false}
|
119
|
+
bsClass="dropdown"
|
120
|
+
disabled={false}
|
121
|
+
divider={false}
|
122
|
+
header={false}
|
123
|
+
key="title"
|
124
|
+
onClick={[Function]}
|
125
|
+
>
|
126
|
+
Title
|
127
|
+
</MenuItem>
|
128
|
+
<MenuItem
|
129
|
+
active={true}
|
130
|
+
bsClass="dropdown"
|
131
|
+
disabled={false}
|
132
|
+
divider={false}
|
133
|
+
header={false}
|
134
|
+
key="severity"
|
135
|
+
onClick={[Function]}
|
136
|
+
>
|
137
|
+
Risk Factor
|
138
|
+
</MenuItem>
|
139
|
+
<MenuItem
|
140
|
+
active={false}
|
141
|
+
bsClass="dropdown"
|
142
|
+
disabled={false}
|
143
|
+
divider={false}
|
144
|
+
header={false}
|
145
|
+
key="hostname"
|
146
|
+
onClick={[Function]}
|
147
|
+
>
|
148
|
+
Host
|
149
|
+
</MenuItem>
|
150
|
+
<MenuItem
|
151
|
+
active={false}
|
152
|
+
bsClass="dropdown"
|
153
|
+
disabled={false}
|
154
|
+
divider={false}
|
155
|
+
header={false}
|
156
|
+
key="fix"
|
157
|
+
onClick={[Function]}
|
158
|
+
>
|
159
|
+
Fix Type
|
160
|
+
</MenuItem>
|
161
|
+
<MenuItem
|
162
|
+
active={false}
|
163
|
+
bsClass="dropdown"
|
164
|
+
disabled={false}
|
165
|
+
divider={false}
|
166
|
+
header={false}
|
167
|
+
key="inhibitor"
|
168
|
+
onClick={[Function]}
|
169
|
+
>
|
170
|
+
Inhibitor
|
171
|
+
</MenuItem>
|
172
|
+
</DropdownButton>
|
173
|
+
<DropdownButton
|
174
|
+
id="entry-value-filter"
|
175
|
+
title="Low"
|
176
|
+
>
|
177
|
+
<MenuItem
|
178
|
+
active={false}
|
179
|
+
bsClass="dropdown"
|
180
|
+
disabled={false}
|
181
|
+
divider={false}
|
182
|
+
header={false}
|
183
|
+
key=""
|
184
|
+
onClick={[Function]}
|
185
|
+
>
|
186
|
+
All
|
187
|
+
</MenuItem>
|
188
|
+
<MenuItem
|
189
|
+
active={true}
|
190
|
+
bsClass="dropdown"
|
191
|
+
disabled={false}
|
192
|
+
divider={false}
|
193
|
+
header={false}
|
194
|
+
key="low"
|
195
|
+
onClick={[Function]}
|
196
|
+
>
|
197
|
+
Low
|
198
|
+
</MenuItem>
|
199
|
+
<MenuItem
|
200
|
+
active={false}
|
201
|
+
bsClass="dropdown"
|
202
|
+
disabled={false}
|
203
|
+
divider={false}
|
204
|
+
header={false}
|
205
|
+
key="medium"
|
206
|
+
onClick={[Function]}
|
207
|
+
>
|
208
|
+
Medium
|
209
|
+
</MenuItem>
|
210
|
+
<MenuItem
|
211
|
+
active={false}
|
212
|
+
bsClass="dropdown"
|
213
|
+
disabled={false}
|
214
|
+
divider={false}
|
215
|
+
header={false}
|
216
|
+
key="high"
|
217
|
+
onClick={[Function]}
|
218
|
+
>
|
219
|
+
High
|
220
|
+
</MenuItem>
|
221
|
+
<MenuItem
|
222
|
+
active={false}
|
223
|
+
bsClass="dropdown"
|
224
|
+
disabled={false}
|
225
|
+
divider={false}
|
226
|
+
header={false}
|
227
|
+
key="info"
|
228
|
+
onClick={[Function]}
|
229
|
+
>
|
230
|
+
Info
|
231
|
+
</MenuItem>
|
232
|
+
</DropdownButton>
|
233
|
+
</InputGroup>
|
234
|
+
</FormGroup>
|
235
|
+
</Col>
|
236
|
+
</Row>
|
237
|
+
`;
|
238
|
+
|
239
|
+
exports[`EntriresFilter should render for title filter 1`] = `
|
240
|
+
<Row
|
241
|
+
bsClass="row"
|
242
|
+
componentClass="div"
|
243
|
+
>
|
244
|
+
<Col
|
245
|
+
bsClass="col"
|
246
|
+
componentClass="div"
|
247
|
+
md={4}
|
248
|
+
>
|
249
|
+
<FormGroup
|
250
|
+
bsClass="form-group"
|
251
|
+
>
|
252
|
+
<InputGroup
|
253
|
+
bsClass="input-group"
|
254
|
+
>
|
255
|
+
<DropdownButton
|
256
|
+
componentClass={[Function]}
|
257
|
+
id="entry-filter"
|
258
|
+
title="Title"
|
259
|
+
>
|
260
|
+
<MenuItem
|
261
|
+
active={true}
|
262
|
+
bsClass="dropdown"
|
263
|
+
disabled={false}
|
264
|
+
divider={false}
|
265
|
+
header={false}
|
266
|
+
key="title"
|
267
|
+
onClick={[Function]}
|
268
|
+
>
|
269
|
+
Title
|
270
|
+
</MenuItem>
|
271
|
+
<MenuItem
|
272
|
+
active={false}
|
273
|
+
bsClass="dropdown"
|
274
|
+
disabled={false}
|
275
|
+
divider={false}
|
276
|
+
header={false}
|
277
|
+
key="severity"
|
278
|
+
onClick={[Function]}
|
279
|
+
>
|
280
|
+
Risk Factor
|
281
|
+
</MenuItem>
|
282
|
+
<MenuItem
|
283
|
+
active={false}
|
284
|
+
bsClass="dropdown"
|
285
|
+
disabled={false}
|
286
|
+
divider={false}
|
287
|
+
header={false}
|
288
|
+
key="hostname"
|
289
|
+
onClick={[Function]}
|
290
|
+
>
|
291
|
+
Host
|
292
|
+
</MenuItem>
|
293
|
+
<MenuItem
|
294
|
+
active={false}
|
295
|
+
bsClass="dropdown"
|
296
|
+
disabled={false}
|
297
|
+
divider={false}
|
298
|
+
header={false}
|
299
|
+
key="fix"
|
300
|
+
onClick={[Function]}
|
301
|
+
>
|
302
|
+
Fix Type
|
303
|
+
</MenuItem>
|
304
|
+
<MenuItem
|
305
|
+
active={false}
|
306
|
+
bsClass="dropdown"
|
307
|
+
disabled={false}
|
308
|
+
divider={false}
|
309
|
+
header={false}
|
310
|
+
key="inhibitor"
|
311
|
+
onClick={[Function]}
|
312
|
+
>
|
313
|
+
Inhibitor
|
314
|
+
</MenuItem>
|
315
|
+
</DropdownButton>
|
316
|
+
<DebounceInput
|
317
|
+
className="form-control entries-filter-reset-height"
|
318
|
+
debounceTimeout={300}
|
319
|
+
element="input"
|
320
|
+
forceNotifyByEnter={true}
|
321
|
+
forceNotifyOnBlur={true}
|
322
|
+
minLength={0}
|
323
|
+
onChange={[Function]}
|
324
|
+
type="text"
|
325
|
+
/>
|
326
|
+
</InputGroup>
|
327
|
+
</FormGroup>
|
328
|
+
</Col>
|
329
|
+
</Row>
|
330
|
+
`;
|
data/webpack/components/PreupgradeReports/components/__snapshots__/FixSelectedButton.test.js.snap
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
2
|
+
|
3
|
+
exports[`FixSelectedButton should render 1`] = `
|
4
|
+
<form
|
5
|
+
action="/job_invocations/new"
|
6
|
+
method="post"
|
7
|
+
>
|
8
|
+
<Button
|
9
|
+
active={false}
|
10
|
+
block={false}
|
11
|
+
bsClass="btn"
|
12
|
+
bsStyle="default"
|
13
|
+
disabled={false}
|
14
|
+
type="submit"
|
15
|
+
>
|
16
|
+
Fix Selected
|
17
|
+
</Button>
|
18
|
+
<input
|
19
|
+
name="authenticity_token"
|
20
|
+
type="hidden"
|
21
|
+
value="abcd"
|
22
|
+
/>
|
23
|
+
<input
|
24
|
+
name="feature"
|
25
|
+
type="hidden"
|
26
|
+
value="leapp_remediation_plan"
|
27
|
+
/>
|
28
|
+
<input
|
29
|
+
key="5"
|
30
|
+
name="host_ids[]"
|
31
|
+
type="hidden"
|
32
|
+
value={5}
|
33
|
+
/>
|
34
|
+
<input
|
35
|
+
name="inputs[remediation_ids]"
|
36
|
+
type="hidden"
|
37
|
+
value="115"
|
38
|
+
/>
|
39
|
+
</form>
|
40
|
+
`;
|
@@ -0,0 +1,19 @@
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
2
|
+
|
3
|
+
exports[`NoReports should render when reports expected 1`] = `
|
4
|
+
<EmptyStatePattern
|
5
|
+
description="The preupgrade report could not be generated, check the job details for the reason"
|
6
|
+
header="No Preupgrade Report Available"
|
7
|
+
icon="warning-triangle-o"
|
8
|
+
iconType="pf"
|
9
|
+
/>
|
10
|
+
`;
|
11
|
+
|
12
|
+
exports[`NoReports should render when reports not expected 1`] = `
|
13
|
+
<EmptyStatePattern
|
14
|
+
description="The preupgrade report will be available after the job finishes"
|
15
|
+
header="No Preupgrade Report Available"
|
16
|
+
icon="in-progress"
|
17
|
+
iconType="pf"
|
18
|
+
/>
|
19
|
+
`;
|
data/webpack/components/PreupgradeReports/components/__snapshots__/UpgradeAllButton.test.js.snap
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
2
|
+
|
3
|
+
exports[`UpgradeAllButton should render 1`] = `
|
4
|
+
<form
|
5
|
+
action="/job_invocations/new"
|
6
|
+
method="post"
|
7
|
+
>
|
8
|
+
<Button
|
9
|
+
active={false}
|
10
|
+
block={false}
|
11
|
+
bsClass="btn"
|
12
|
+
bsStyle="default"
|
13
|
+
disabled={false}
|
14
|
+
type="submit"
|
15
|
+
>
|
16
|
+
Run Upgrade
|
17
|
+
</Button>
|
18
|
+
<input
|
19
|
+
name="authenticity_token"
|
20
|
+
type="hidden"
|
21
|
+
value="abcd"
|
22
|
+
/>
|
23
|
+
<input
|
24
|
+
name="feature"
|
25
|
+
type="hidden"
|
26
|
+
value="leapp_upgrade"
|
27
|
+
/>
|
28
|
+
</form>
|
29
|
+
`;
|
@@ -1,41 +1,64 @@
|
|
1
|
-
import React, { useEffect } from 'react';
|
1
|
+
import React, { useEffect, useRef } from 'react';
|
2
2
|
import { useDispatch, useSelector } from 'react-redux';
|
3
3
|
import PropTypes from 'prop-types';
|
4
4
|
|
5
5
|
import PreupgradeReports from './PreupgradeReports';
|
6
6
|
|
7
|
+
import getCsrfToken from '../../csrf';
|
8
|
+
|
7
9
|
import {
|
8
10
|
selectPreupgradeReports,
|
9
11
|
selectLoadingPreupgradeReports,
|
12
|
+
selectReportsExpected,
|
10
13
|
selectError,
|
14
|
+
selectJobInvocationsPolling,
|
11
15
|
} from './PreupgradeReportsSelectors';
|
12
16
|
|
13
|
-
import {
|
17
|
+
import { getPreupgradeReportsAction } from './PreupgradeReportsActions';
|
14
18
|
|
15
|
-
const WrappedPreupgradeReports = ({ url }) => {
|
19
|
+
const WrappedPreupgradeReports = ({ url, newJobInvocationUrl }) => {
|
16
20
|
const loading = useSelector(state => selectLoadingPreupgradeReports(state));
|
17
21
|
const preupgradeReports = useSelector(state =>
|
18
22
|
selectPreupgradeReports(state)
|
19
23
|
);
|
20
24
|
const error = useSelector(state => selectError(state));
|
21
25
|
|
26
|
+
const invocationPending = useSelector(state =>
|
27
|
+
selectJobInvocationsPolling(state)
|
28
|
+
);
|
29
|
+
|
30
|
+
const reportsExpected = useSelector(state => selectReportsExpected(state));
|
31
|
+
|
32
|
+
const previousInvocationRef = useRef();
|
33
|
+
useEffect(() => {
|
34
|
+
previousInvocationRef.current = invocationPending;
|
35
|
+
});
|
36
|
+
|
37
|
+
const previousInvocationPending = previousInvocationRef.current;
|
38
|
+
|
22
39
|
const dispatch = useDispatch();
|
23
40
|
|
24
41
|
useEffect(() => {
|
25
|
-
|
26
|
-
|
42
|
+
if (previousInvocationPending && !invocationPending) {
|
43
|
+
dispatch(getPreupgradeReportsAction(url));
|
44
|
+
}
|
45
|
+
}, [dispatch, url, invocationPending, previousInvocationPending]);
|
27
46
|
|
28
47
|
return (
|
29
48
|
<PreupgradeReports
|
30
49
|
preupgradeReports={preupgradeReports}
|
31
50
|
error={error}
|
32
51
|
loading={loading}
|
52
|
+
csrfToken={getCsrfToken()}
|
53
|
+
newJobInvocationUrl={newJobInvocationUrl}
|
54
|
+
reportsExpected={reportsExpected}
|
33
55
|
/>
|
34
56
|
);
|
35
57
|
};
|
36
58
|
|
37
59
|
WrappedPreupgradeReports.propTypes = {
|
38
60
|
url: PropTypes.string.isRequired,
|
61
|
+
newJobInvocationUrl: PropTypes.string.isRequired,
|
39
62
|
};
|
40
63
|
|
41
64
|
export default WrappedPreupgradeReports;
|