foreman_leapp 0.0.5 → 0.0.6

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 (35) hide show
  1. checksums.yaml +4 -4
  2. data/app/views/foreman_leapp/job_templates/upgrade.erb +12 -4
  3. data/app/views/job_invocations/_leapp_preupgrade_report.html.erb +2 -1
  4. data/lib/foreman_leapp/version.rb +1 -1
  5. data/webpack/__mocks__/foremanReact/Root/Context/ForemanContext.js +4 -0
  6. data/webpack/__mocks__/foremanReact/components/Pagination/PaginationWrapper.js +2 -0
  7. data/webpack/components/PreupgradeReports/PreupgradeReports.js +32 -4
  8. data/webpack/components/PreupgradeReports/PreupgradeReportsHelpers.js +35 -0
  9. data/webpack/components/PreupgradeReports/PreupgradeReportsSelectors.js +1 -0
  10. data/webpack/components/PreupgradeReports/__tests__/PreupgradeReports.fixtures.js +34 -2
  11. data/webpack/components/PreupgradeReports/__tests__/PreupgradeReports.test.js +9 -0
  12. data/webpack/components/PreupgradeReports/__tests__/PreupgradeReportsHelpers.test.js +38 -0
  13. data/webpack/components/PreupgradeReports/__tests__/__snapshots__/PreupgradeReports.test.js.snap +131 -24
  14. data/webpack/components/PreupgradeReports/__tests__/__snapshots__/PreupgradeReportsHelpers.test.js.snap +82 -0
  15. data/webpack/components/PreupgradeReports/__tests__/__snapshots__/PreupgradeReportsReducer.test.js.snap +19 -0
  16. data/webpack/components/PreupgradeReports/__tests__/__snapshots__/PreupgradeReportsSelectors.test.js.snap +19 -0
  17. data/webpack/components/PreupgradeReports/components/FixAllButton.js +37 -0
  18. data/webpack/components/PreupgradeReports/components/FixAllButton.test.js +18 -0
  19. data/webpack/components/PreupgradeReports/components/__snapshots__/FixAllButton.test.js.snap +34 -0
  20. data/webpack/components/PreupgradeReports/index.js +7 -2
  21. data/webpack/components/PreupgradeReportsList/__tests__/PreupgradeReportsList.test.js +12 -2
  22. data/webpack/components/PreupgradeReportsList/__tests__/__snapshots__/PreupgradeReportsList.test.js.snap +81 -0
  23. data/webpack/components/PreupgradeReportsList/components/PreupgradeReportEntry.js +39 -5
  24. data/webpack/components/PreupgradeReportsList/components/__tests__/PreupgradeReportEntry.fixtures.js +38 -0
  25. data/webpack/components/PreupgradeReportsList/components/__tests__/__snapshots__/PreupgradeReportEntry.test.js.snap +97 -22
  26. data/webpack/components/PreupgradeReportsList/components/__tests__/__snapshots__/helpers.test.js.snap +196 -28
  27. data/webpack/components/PreupgradeReportsList/components/__tests__/helpers.test.js +21 -8
  28. data/webpack/components/PreupgradeReportsList/components/foreman_leapp.scss +9 -0
  29. data/webpack/components/PreupgradeReportsList/components/helpers.js +149 -21
  30. data/webpack/components/PreupgradeReportsList/index.js +21 -8
  31. data/webpack/csrf.js +4 -0
  32. metadata +27 -5
  33. data/webpack/components/PreupgradeReportsList/components/StringInfoItem.js +0 -49
  34. data/webpack/components/PreupgradeReportsList/components/__tests__/StringInfoItem.test.js +0 -13
  35. data/webpack/components/PreupgradeReportsList/components/__tests__/__snapshots__/StringInfoItem.test.js.snap +0 -12
@@ -0,0 +1,9 @@
1
+ @import '~@theforeman/vendor/scss/variables';
2
+
3
+ .top-padded {
4
+ padding-top: 8px;
5
+ }
6
+
7
+ .pre-wrap{
8
+ white-space: pre-wrap;
9
+ }
@@ -1,28 +1,156 @@
1
1
  import React from 'react';
2
-
2
+ import { Grid, ListView, Badge, Icon } from 'patternfly-react';
3
3
  import EmptyInfoItem from './EmptyInfoItem';
4
- import StringInfoItem from './StringInfoItem';
5
4
 
6
5
  export const itemIteratorId = (entry, ...rest) =>
7
6
  `${entry.id}-${entry.preupgradeReportId}-${rest.join('-')}`;
8
7
 
9
- export const additionalInfo = entry => {
10
- const infoAttrs = ['title', 'severity'];
11
-
12
- return infoAttrs.map(attr => {
13
- const key = itemIteratorId(entry, attr);
14
-
15
- if (!entry[attr]) {
16
- return <EmptyInfoItem entry={entry} attr={attr} key={key} />;
17
- }
18
-
19
- switch (attr) {
20
- case 'title':
21
- return <StringInfoItem entry={entry} attr={attr} key={key} />;
22
- case 'severity':
23
- return <StringInfoItem entry={entry} attr={attr} key={key} />;
24
- default:
25
- return '';
26
- }
27
- });
8
+ export const presentSeverity = severity => {
9
+ switch (severity) {
10
+ case 'low':
11
+ return '#39a5dc';
12
+ case 'medium':
13
+ return '#f0ab00';
14
+ case 'high':
15
+ return '#cc0000';
16
+ default:
17
+ return '#39a5dc';
18
+ }
19
+ };
20
+
21
+ export const tagInfo = tags =>
22
+ tags.map(attr => (
23
+ <Badge key={attr} variant="pill primary">
24
+ {attr}
25
+ </Badge>
26
+ ));
27
+
28
+ export const hasRemediations = entry => {
29
+ const key = itemIteratorId(entry, `rm${entry.id}`);
30
+ if (entry.detail && entry.detail.remediations) {
31
+ return (
32
+ <ListView.InfoItem key={key}>
33
+ <Icon type="pf" name="warning-triangle-o" /> Has Remediation
34
+ </ListView.InfoItem>
35
+ );
36
+ }
37
+
38
+ return <EmptyInfoItem key={key} entry={entry} attr="remediation" />;
39
+ };
40
+
41
+ export const getTitle = entry => {
42
+ if (entry.title) {
43
+ return (
44
+ <Grid.Row>
45
+ <Grid.Col md={1}>
46
+ <strong>Title</strong>
47
+ </Grid.Col>
48
+ <Grid.Col md={8}>{entry.title}</Grid.Col>
49
+ </Grid.Row>
50
+ );
51
+ }
52
+ return <div />;
53
+ };
54
+
55
+ export const getSeverity = entry => {
56
+ if (entry.severity) {
57
+ return (
58
+ <Grid.Row className="top-padded">
59
+ <Grid.Col md={1}>
60
+ <strong>Risk Factor</strong>
61
+ </Grid.Col>
62
+ <Grid.Col md={8}>
63
+ <Icon
64
+ type="pf"
65
+ name="resources-full"
66
+ style={{ color: presentSeverity(entry.severity) }}
67
+ />{' '}
68
+ {entry.severity}
69
+ </Grid.Col>
70
+ </Grid.Row>
71
+ );
72
+ }
73
+ return <div />;
74
+ };
75
+
76
+ export const getSummary = entry => {
77
+ if (entry.summary) {
78
+ return (
79
+ <Grid.Row className="top-padded">
80
+ <Grid.Col md={1}>
81
+ <strong>Summary</strong>
82
+ </Grid.Col>
83
+ <Grid.Col md={8} className="pre-wrap">
84
+ {entry.summary}
85
+ </Grid.Col>
86
+ </Grid.Row>
87
+ );
88
+ }
89
+ return <div />;
90
+ };
91
+
92
+ export const getTags = entry => {
93
+ if (entry.tags) {
94
+ return (
95
+ <Grid.Row className="top-padded">
96
+ <Grid.Col md={1}>
97
+ <strong>Tags</strong>
98
+ </Grid.Col>
99
+ <Grid.Col md={8}>{tagInfo(entry.tags)}</Grid.Col>
100
+ </Grid.Row>
101
+ );
102
+ }
103
+ return <div />;
104
+ };
105
+
106
+ export const getExternals = entry => {
107
+ if (entry.detail && entry.detail.external) {
108
+ return entry.detail.external.map(attr => {
109
+ const key = itemIteratorId(entry, attr);
110
+ return (
111
+ <Grid.Row className="top-padded" key={key}>
112
+ <Grid.Col md={1}>
113
+ <strong>Links</strong>
114
+ </Grid.Col>
115
+ <Grid.Col md={8}>
116
+ <a href={attr.url}>{attr.title}</a>
117
+ </Grid.Col>
118
+ </Grid.Row>
119
+ );
120
+ });
121
+ }
122
+ return <div />;
123
+ };
124
+
125
+ export const getRemediations = entry => {
126
+ if (entry.detail && entry.detail.remediations) {
127
+ return entry.detail.remediations.map(attr => {
128
+ const key = itemIteratorId(entry, attr);
129
+ if (attr.type === 'hint') {
130
+ return (
131
+ <Grid.Row className="top-padded" key={key}>
132
+ <Grid.Col md={1}>
133
+ <strong>Hint</strong>
134
+ </Grid.Col>
135
+ <Grid.Col md={8}>{attr.context}</Grid.Col>
136
+ </Grid.Row>
137
+ );
138
+ }
139
+ if (attr.type === 'command') {
140
+ return (
141
+ <Grid.Row className="top-padded" key={key}>
142
+ <Grid.Col md={1}>
143
+ <strong>Command</strong>
144
+ </Grid.Col>
145
+ <Grid.Col md={8}>
146
+ <code>{attr.context.join(' ')}</code>
147
+ </Grid.Col>
148
+ </Grid.Row>
149
+ );
150
+ }
151
+
152
+ return <div />;
153
+ });
154
+ }
155
+ return <div />;
28
156
  };
@@ -1,26 +1,39 @@
1
- import React from 'react';
1
+ import React, { useState } from 'react';
2
2
  import { ListView } from 'patternfly-react';
3
3
  import PropTypes from 'prop-types';
4
4
 
5
+ import Pagination from 'foremanReact/components/Pagination/PaginationWrapper';
6
+ import { useForemanSettings } from 'foremanReact/Root/Context/ForemanContext';
7
+
5
8
  import PreupgradeReportEntry from './components/PreupgradeReportEntry';
9
+ import { entriesPage } from '../PreupgradeReports/PreupgradeReportsHelpers';
6
10
 
7
- const PreupgradeReportsList = ({ preupgradeReports }) => {
8
- const flatEntries = preupgradeReports.reduce(
9
- (memo, report) => [...memo, ...report.entries],
10
- []
11
- );
11
+ const PreupgradeReportsList = ({ allEntries }) => {
12
+ const { perPage, perPageOptions } = useForemanSettings();
13
+ const [pagination, setPagination] = useState({
14
+ page: 1,
15
+ perPage,
16
+ perPageOptions,
17
+ });
12
18
 
13
19
  return (
14
20
  <ListView>
15
- {flatEntries.map((entry, idx) => (
21
+ {entriesPage(allEntries, pagination).map((entry, idx) => (
16
22
  <PreupgradeReportEntry entry={entry} key={idx} />
17
23
  ))}
24
+ <Pagination
25
+ viewType="list"
26
+ itemCount={allEntries.length}
27
+ pagination={pagination}
28
+ onChange={newPage => setPagination({ ...pagination, ...newPage })}
29
+ dropdownButtonId="preupgrade-report-entries-pagination-dropdown"
30
+ />
18
31
  </ListView>
19
32
  );
20
33
  };
21
34
 
22
35
  PreupgradeReportsList.propTypes = {
23
- preupgradeReports: PropTypes.array.isRequired,
36
+ allEntries: PropTypes.array.isRequired,
24
37
  };
25
38
 
26
39
  export default PreupgradeReportsList;
data/webpack/csrf.js ADDED
@@ -0,0 +1,4 @@
1
+ export default () => {
2
+ const tokenMeta = document.getElementsByName('csrf-token')[0];
3
+ return tokenMeta && tokenMeta.content;
4
+ };
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_leapp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Foreman Leapp team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-16 00:00:00.000000000 Z
11
+ date: 2020-04-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: foreman_remote_execution
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: foreman_ansible
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '5.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '5.0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rdoc
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -107,37 +121,45 @@ files:
107
121
  - test/test_plugin_helper.rb
108
122
  - test/unit/actions/preupgrade_job_test.rb
109
123
  - test/unit/helpers/job_helper_test.rb
124
+ - webpack/__mocks__/foremanReact/Root/Context/ForemanContext.js
110
125
  - webpack/__mocks__/foremanReact/common/I18n.js
126
+ - webpack/__mocks__/foremanReact/components/Pagination/PaginationWrapper.js
111
127
  - webpack/__mocks__/foremanReact/components/common/MessageBox.js
112
128
  - webpack/components/PreupgradeReports/PreupgradeReports.js
113
129
  - webpack/components/PreupgradeReports/PreupgradeReportsActions.js
130
+ - webpack/components/PreupgradeReports/PreupgradeReportsHelpers.js
114
131
  - webpack/components/PreupgradeReports/PreupgradeReportsReducer.js
115
132
  - webpack/components/PreupgradeReports/PreupgradeReportsSelectors.js
116
133
  - webpack/components/PreupgradeReports/__tests__/PreupgradeReports.fixtures.js
117
134
  - webpack/components/PreupgradeReports/__tests__/PreupgradeReports.test.js
135
+ - webpack/components/PreupgradeReports/__tests__/PreupgradeReportsHelpers.test.js
118
136
  - webpack/components/PreupgradeReports/__tests__/PreupgradeReportsReducer.test.js
119
137
  - webpack/components/PreupgradeReports/__tests__/PreupgradeReportsSelectors.test.js
120
138
  - webpack/components/PreupgradeReports/__tests__/__snapshots__/PreupgradeReports.test.js.snap
139
+ - webpack/components/PreupgradeReports/__tests__/__snapshots__/PreupgradeReportsHelpers.test.js.snap
121
140
  - webpack/components/PreupgradeReports/__tests__/__snapshots__/PreupgradeReportsReducer.test.js.snap
122
141
  - webpack/components/PreupgradeReports/__tests__/__snapshots__/PreupgradeReportsSelectors.test.js.snap
142
+ - webpack/components/PreupgradeReports/components/FixAllButton.js
143
+ - webpack/components/PreupgradeReports/components/FixAllButton.test.js
144
+ - webpack/components/PreupgradeReports/components/__snapshots__/FixAllButton.test.js.snap
123
145
  - webpack/components/PreupgradeReports/index.js
124
146
  - webpack/components/PreupgradeReportsList/__tests__/PreupgradeReportsList.test.js
125
147
  - webpack/components/PreupgradeReportsList/__tests__/__snapshots__/PreupgradeReportsList.test.js.snap
126
148
  - webpack/components/PreupgradeReportsList/components/EmptyInfoItem.js
127
149
  - webpack/components/PreupgradeReportsList/components/InfoItem.js
128
150
  - webpack/components/PreupgradeReportsList/components/PreupgradeReportEntry.js
129
- - webpack/components/PreupgradeReportsList/components/StringInfoItem.js
130
151
  - webpack/components/PreupgradeReportsList/components/__tests__/EmptyInfoItem.test.js
152
+ - webpack/components/PreupgradeReportsList/components/__tests__/PreupgradeReportEntry.fixtures.js
131
153
  - webpack/components/PreupgradeReportsList/components/__tests__/PreupgradeReportEntry.test.js
132
- - webpack/components/PreupgradeReportsList/components/__tests__/StringInfoItem.test.js
133
154
  - webpack/components/PreupgradeReportsList/components/__tests__/__snapshots__/EmptyInfoItem.test.js.snap
134
155
  - webpack/components/PreupgradeReportsList/components/__tests__/__snapshots__/PreupgradeReportEntry.test.js.snap
135
- - webpack/components/PreupgradeReportsList/components/__tests__/__snapshots__/StringInfoItem.test.js.snap
136
156
  - webpack/components/PreupgradeReportsList/components/__tests__/__snapshots__/helpers.test.js.snap
137
157
  - webpack/components/PreupgradeReportsList/components/__tests__/helpers.test.js
158
+ - webpack/components/PreupgradeReportsList/components/foreman_leapp.scss
138
159
  - webpack/components/PreupgradeReportsList/components/helpers.js
139
160
  - webpack/components/PreupgradeReportsList/index.js
140
161
  - webpack/consts.js
162
+ - webpack/csrf.js
141
163
  - webpack/index.js
142
164
  - webpack/reducer.js
143
165
  - webpack/testSetup.js
@@ -1,49 +0,0 @@
1
- import React from 'react';
2
- import EllipsisWithTooltip from 'react-ellipsis-with-tooltip';
3
- import PropTypes from 'prop-types';
4
- import { translate as __ } from 'foremanReact/common/I18n';
5
-
6
- import InfoItem from './InfoItem';
7
- import { itemIteratorId } from './helpers';
8
-
9
- const StringInfoItem = ({
10
- entry,
11
- attr,
12
- tooltipText,
13
- translate,
14
- mapAttr,
15
- elipsed,
16
- }) => {
17
- const inner = (
18
- <span>{translate ? __(mapAttr(entry, attr)) : mapAttr(entry, attr)}</span>
19
- );
20
- const innerContent = elipsed ? (
21
- <EllipsisWithTooltip placement="top">{inner}</EllipsisWithTooltip>
22
- ) : (
23
- inner
24
- );
25
-
26
- return (
27
- <InfoItem itemId={itemIteratorId(entry, attr)} tooltipText={tooltipText}>
28
- {innerContent}
29
- </InfoItem>
30
- );
31
- };
32
-
33
- StringInfoItem.propTypes = {
34
- entry: PropTypes.object.isRequired,
35
- attr: PropTypes.string.isRequired,
36
- tooltipText: PropTypes.string,
37
- translate: PropTypes.bool,
38
- mapAttr: PropTypes.func,
39
- elipsed: PropTypes.bool,
40
- };
41
-
42
- StringInfoItem.defaultProps = {
43
- translate: false,
44
- mapAttr: (entry, attr) => entry[attr],
45
- elipsed: false,
46
- tooltipText: undefined,
47
- };
48
-
49
- export default StringInfoItem;
@@ -1,13 +0,0 @@
1
- import { testComponentSnapshotsWithFixtures } from '@theforeman/test';
2
-
3
- import StringInfoItem from '../StringInfoItem';
4
-
5
- const fixtures = {
6
- 'should render': {
7
- entry: { title: 'no title', severity: 'low', id: 5, preupgradeReportId: 7 },
8
- attr: 'title',
9
- },
10
- };
11
-
12
- describe('StringInfoItem', () =>
13
- testComponentSnapshotsWithFixtures(StringInfoItem, fixtures));
@@ -1,12 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`StringInfoItem should render 1`] = `
4
- <InfoItem
5
- itemId="5-7-title"
6
- tooltipText=""
7
- >
8
- <span>
9
- no title
10
- </span>
11
- </InfoItem>
12
- `;