foreman_rh_cloud 2.0.4 → 2.0.9

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 (176) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +8 -0
  3. data/app/controllers/foreman_inventory_upload/accounts_controller.rb +4 -6
  4. data/app/controllers/foreman_inventory_upload/uploads_controller.rb +33 -7
  5. data/app/controllers/foreman_rh_cloud/react_controller.rb +11 -0
  6. data/app/controllers/insights_cloud/tasks_controller.rb +8 -0
  7. data/app/helpers/foreman_inventory_upload_host_helper.rb +11 -0
  8. data/app/models/insights_facet.rb +3 -0
  9. data/app/models/insights_hit.rb +6 -0
  10. data/app/models/setting/rh_cloud.rb +15 -0
  11. data/app/overrides/hosts_list.rb +13 -0
  12. data/app/views/foreman_rh_cloud/react/insights_cloud.html.erb +6 -0
  13. data/app/views/foreman_rh_cloud/react/inventory_upload.html.erb +1 -0
  14. data/app/views/{foreman_inventory_upload/layouts/react.html.erb → layouts/foreman_rh_cloud/application.html.erb} +2 -2
  15. data/config/routes.rb +12 -1
  16. data/db/migrate/20191215104806_create_insights_hits.foreman_inventory_upload.rb +14 -0
  17. data/db/migrate/20191216062008_create_insights_facets.foreman_inventory_upload.rb +7 -0
  18. data/lib/foreman_inventory_upload.rb +12 -0
  19. data/lib/foreman_inventory_upload/async/async_helpers.rb +13 -0
  20. data/lib/foreman_inventory_upload/async/generate_all_reports_job.rb +8 -0
  21. data/lib/foreman_inventory_upload/async/shell_process.rb +9 -1
  22. data/lib/foreman_inventory_upload/async/upload_report_job.rb +1 -1
  23. data/lib/foreman_inventory_upload/generators/archived_report.rb +6 -3
  24. data/lib/foreman_inventory_upload/generators/fact_helpers.rb +56 -0
  25. data/lib/foreman_inventory_upload/generators/json_stream.rb +10 -0
  26. data/lib/foreman_inventory_upload/generators/queries.rb +7 -0
  27. data/lib/foreman_inventory_upload/generators/slice.rb +48 -22
  28. data/lib/foreman_inventory_upload/notifications/manifest_import_success_notification_override.rb +19 -0
  29. data/lib/foreman_inventory_upload/scripts/uploader.sh.erb +1 -1
  30. data/lib/foreman_rh_cloud/engine.rb +33 -5
  31. data/lib/foreman_rh_cloud/version.rb +1 -1
  32. data/lib/insights_cloud.rb +15 -0
  33. data/lib/insights_cloud/async/insights_full_sync.rb +96 -0
  34. data/test/controllers/accounts_controller_test.rb +8 -3
  35. data/test/controllers/uploads_controller_test.rb +13 -0
  36. data/test/factories/inventory_upload_factories.rb +13 -13
  37. data/test/jobs/insights_full_sync_test.rb +92 -0
  38. data/test/unit/archived_report_generator_test.rb +1 -0
  39. data/test/unit/fact_helpers_test.rb +29 -0
  40. data/test/unit/slice_generator_test.rb +277 -15
  41. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountList.fixtures.js +14 -2
  42. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountList.js +13 -10
  43. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListActions.js +6 -3
  44. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListHelper.js +10 -0
  45. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListReducer.js +16 -0
  46. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListSelectors.js +10 -1
  47. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/EmptyResults/EmptyResults.js +15 -0
  48. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/EmptyResults/__tests__/EmptyResults.test.js +13 -0
  49. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/EmptyResults/__tests__/__snapshots__/EmptyResults.test.js.snap +18 -0
  50. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/EmptyResults/emptyResults.scss +7 -0
  51. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/EmptyResults/index.js +1 -0
  52. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/ListItem/ListItem.js +1 -4
  53. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountList.test.js +1 -0
  54. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListActions.test.js +8 -1
  55. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListHelper.test.js +12 -0
  56. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListIntegration.test.js +1 -1
  57. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListReducer.test.js +22 -0
  58. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListSelectors.test.js +20 -8
  59. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountList.test.js.snap +2 -3
  60. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListActions.test.js.snap +20 -2
  61. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListReducer.test.js.snap +20 -0
  62. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListSelectors.test.js.snap +8 -2
  63. data/webpack/ForemanInventoryUpload/Components/AccountList/index.js +2 -0
  64. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcher.fixtures.js +1 -0
  65. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcher.js +32 -0
  66. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcherActions.js +30 -0
  67. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcherConstants.js +2 -0
  68. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/AutoUploadSwitcher.test.js +14 -0
  69. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/AutoUploadSwitcherActions.test.js +14 -0
  70. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/__snapshots__/AutoUploadSwitcher.test.js.snap +38 -0
  71. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/__snapshots__/AutoUploadSwitcherActions.test.js.snap +14 -0
  72. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/autoUploadSwitcher.scss +3 -0
  73. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/index.js +17 -0
  74. data/webpack/ForemanInventoryUpload/Components/Dashboard/DashboardActions.js +4 -3
  75. data/webpack/ForemanInventoryUpload/Components/Dashboard/DashboardSelectors.js +1 -1
  76. data/webpack/ForemanInventoryUpload/Components/Dashboard/__tests__/DashboardActions.test.js +2 -3
  77. data/webpack/ForemanInventoryUpload/Components/Dashboard/__tests__/DashboardIntegration.test.js +2 -1
  78. data/webpack/ForemanInventoryUpload/Components/Dashboard/__tests__/DashboardSelectors.test.js +3 -2
  79. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcher.fixtures.js +1 -0
  80. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcher.js +29 -0
  81. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcherActions.js +30 -0
  82. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcherConstants.js +3 -0
  83. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/__tests__/HostObfuscationSwitcher.test.js +14 -0
  84. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/__tests__/HostObfuscationSwitcherActions.test.js +14 -0
  85. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/__tests__/__snapshots__/HostObfuscationSwitcher.test.js.snap +38 -0
  86. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/__tests__/__snapshots__/HostObfuscationSwitcherActions.test.js.snap +14 -0
  87. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/hostObfuscationSwitcher.scss +0 -0
  88. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/index.js +20 -0
  89. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/Components/ClearButton/ClearButton.js +26 -0
  90. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/Components/ClearButton/index.js +1 -0
  91. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/InventoryFilter.fixtures.js +2 -0
  92. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/InventoryFilter.js +39 -0
  93. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/InventoryFilterActions.js +16 -0
  94. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/InventoryFilterConstants.js +3 -0
  95. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/InventoryFilterReducer.js +36 -0
  96. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/InventoryFilterSelectors.js +7 -0
  97. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/__tests__/InventoryFilter.test.js +14 -0
  98. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/__tests__/InventoryFilterActions.test.js +14 -0
  99. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/__tests__/InventoryFilterReducer.test.js +35 -0
  100. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/__tests__/InventoryFilterSelectors.test.js +21 -0
  101. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/__tests__/__snapshots__/InventoryFilter.test.js.snap +25 -0
  102. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/__tests__/__snapshots__/InventoryFilterActions.test.js.snap +17 -0
  103. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/__tests__/__snapshots__/InventoryFilterReducer.test.js.snap +25 -0
  104. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/__tests__/__snapshots__/InventoryFilterSelectors.test.js.snap +9 -0
  105. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/__tests__/__snapshots__/integration.test.js.snap +31 -0
  106. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/__tests__/integration.test.js +18 -0
  107. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/index.js +17 -0
  108. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/inventoryFilter.scss +28 -0
  109. data/webpack/ForemanInventoryUpload/Components/InventorySettings/InventorySettings.js +15 -0
  110. data/webpack/ForemanInventoryUpload/Components/InventorySettings/__tests__/InventorySettings.test.js +13 -0
  111. data/webpack/ForemanInventoryUpload/Components/InventorySettings/__tests__/__snapshots__/InventorySettings.test.js.snap +13 -0
  112. data/webpack/ForemanInventoryUpload/Components/InventorySettings/index.js +1 -0
  113. data/webpack/ForemanInventoryUpload/Components/InventorySettings/inventorySettings.scss +15 -0
  114. data/webpack/ForemanInventoryUpload/Components/PageHeader/PageHeader.js +40 -0
  115. data/webpack/ForemanInventoryUpload/Components/PageHeader/__tests__/PageHeader.test.js +13 -0
  116. data/webpack/ForemanInventoryUpload/Components/PageHeader/__tests__/__snapshots__/PageHeader.test.js.snap +61 -0
  117. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/DocsButton/DocsButton.js +17 -0
  118. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/DocsButton/__tests__/DocsButton.test.js +12 -0
  119. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/DocsButton/__tests__/__snapshots__/DocsButton.test.js.snap +20 -0
  120. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/DocsButton/index.js +1 -0
  121. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/HistoryButton/HistoryButton.js +18 -0
  122. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/HistoryButton/__tests__/HistoryButton.test.js +12 -0
  123. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/HistoryButton/__tests__/__snapshots__/HistoryButton.test.js.snap +21 -0
  124. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/HistoryButton/index.js +1 -0
  125. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/PageDescription/PageDescription.js +24 -0
  126. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/PageDescription/__tests__/PageDescription.test.js +11 -0
  127. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/PageDescription/__tests__/__snapshots__/PageDescription.test.js.snap +17 -0
  128. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/PageDescription/index.js +1 -0
  129. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/ToolbarButtons/ToolbarButtons.js +13 -0
  130. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/ToolbarButtons/__tests__/ToolbarButtons.test.js +12 -0
  131. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/ToolbarButtons/__tests__/__snapshots__/ToolbarButtons.test.js.snap +10 -0
  132. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/ToolbarButtons/index.js +1 -0
  133. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/ToolbarButtons/toolbarButtons.scss +7 -0
  134. data/webpack/ForemanInventoryUpload/Components/PageHeader/index.js +1 -0
  135. data/webpack/ForemanInventoryUpload/Components/PageHeader/pageHeader.scss +3 -0
  136. data/webpack/ForemanInventoryUpload/Components/ScheduledRun/ScheduledRun.fixtures.js +1 -0
  137. data/webpack/ForemanInventoryUpload/Components/ScheduledRun/ScheduledRun.js +4 -2
  138. data/webpack/ForemanInventoryUpload/Components/ScheduledRun/__tests__/ScheduledRun.test.js +0 -1
  139. data/webpack/ForemanInventoryUpload/Components/ScheduledRun/__tests__/__snapshots__/ScheduledRun.test.js.snap +0 -2
  140. data/webpack/ForemanInventoryUpload/Components/ScheduledRun/index.js +12 -1
  141. data/webpack/ForemanInventoryUpload/Components/TabBody/__tests__/__snapshots__/TabBody.test.js.snap +1 -1
  142. data/webpack/ForemanInventoryUpload/ForemanInventoryConstants.js +7 -0
  143. data/webpack/ForemanInventoryUpload/ForemanInventoryHelpers.js +17 -0
  144. data/webpack/ForemanInventoryUpload/ForemanInventoryUpload.js +18 -9
  145. data/webpack/ForemanInventoryUpload/ForemanInventoryUploadReducers.js +4 -4
  146. data/webpack/ForemanInventoryUpload/SubscriptionsPageExtension/SubscriptionsPageExtensionActions.js +34 -0
  147. data/webpack/ForemanInventoryUpload/__tests__/ForemanInventoryHelpers.test.js +10 -0
  148. data/webpack/ForemanInventoryUpload/{ForemanInventoryUpload.test.js → __tests__/ForemanInventoryUpload.test.js} +1 -1
  149. data/webpack/ForemanInventoryUpload/__tests__/__snapshots__/ForemanInventoryHelpers.test.js.snap +5 -0
  150. data/webpack/ForemanInventoryUpload/{__snapshots__ → __tests__/__snapshots__}/ForemanInventoryUpload.test.js.snap +6 -5
  151. data/webpack/ForemanRhCloudHelpers.js +6 -0
  152. data/webpack/ForemanRhCloudReducers.js +10 -0
  153. data/webpack/ForemanRhCloudSelectors.js +5 -0
  154. data/webpack/ForemanRhCloudTestHelpers.js +6 -0
  155. data/webpack/InsightsCloudSync/InsightsCloudSync.js +55 -0
  156. data/webpack/InsightsCloudSync/InsightsCloudSync.test.js +16 -0
  157. data/webpack/InsightsCloudSync/InsightsCloudSyncActions.js +23 -0
  158. data/webpack/InsightsCloudSync/InsightsCloudSyncConstants.js +6 -0
  159. data/webpack/InsightsCloudSync/InsightsCloudSyncHelpers.js +3 -0
  160. data/webpack/InsightsCloudSync/InsightsCloudSyncReducers.js +3 -0
  161. data/webpack/InsightsCloudSync/__snapshots__/InsightsCloudSync.test.js.snap +62 -0
  162. data/webpack/InsightsCloudSync/__tests__/InsightsCloudSyncHelpers.test.js +9 -0
  163. data/webpack/InsightsCloudSync/__tests__/__snapshots__/InsightsCloudSyncHelpers.test.js.snap +3 -0
  164. data/webpack/InsightsCloudSync/index.js +17 -0
  165. data/webpack/__mocks__/foremanReact/components/Layout/LayoutConstants.js +1 -0
  166. data/webpack/__tests__/ForemanRhCloudHelpers.test.js +11 -0
  167. data/webpack/__tests__/ForemanRhCloudSelectors.test.js +19 -0
  168. data/webpack/__tests__/ForemanRhCloudTestHelpers.test.js +10 -0
  169. data/webpack/__tests__/__snapshots__/ForemanRhCloudHelpers.test.js.snap +3 -0
  170. data/webpack/__tests__/__snapshots__/ForemanRhCloudSelectors.test.js.snap +24 -0
  171. data/webpack/__tests__/__snapshots__/ForemanRhCloudTestHelpers.test.js.snap +14 -0
  172. data/webpack/index.js +8 -1
  173. data/webpack/subscriptions_extension_index.js +8 -0
  174. metadata +124 -7
  175. data/app/controllers/foreman_inventory_upload/react_controller.rb +0 -7
  176. data/webpack/ForemanInventoryUpload/ForemanInventoryUploadSelectors.js +0 -4
@@ -1,6 +1,6 @@
1
1
  import { noop } from 'patternfly-react';
2
2
 
3
- export const API_SUCCESS_RESPONSE = {
3
+ export const accounts = {
4
4
  Account1: {
5
5
  label: 'test_org1',
6
6
  upload_report_status: 'running',
@@ -18,7 +18,9 @@ export const API_SUCCESS_RESPONSE = {
18
18
  },
19
19
  };
20
20
 
21
- export const accounts = API_SUCCESS_RESPONSE;
21
+ export const accountIDs = Object.keys(accounts);
22
+
23
+ export const API_SUCCESS_RESPONSE = accounts;
22
24
 
23
25
  export const pollingProcessID = 0;
24
26
 
@@ -28,6 +30,12 @@ export const accountID = 'user@redhat.com';
28
30
 
29
31
  export const processStatusName = 'upload_report_status';
30
32
 
33
+ export const autoUploadEnabled = true;
34
+
35
+ export const hostObfuscationEnabled = true;
36
+
37
+ export const filterTerm = 'some_filter';
38
+
31
39
  export const props = {
32
40
  accounts,
33
41
  fetchAccountsStatus: noop,
@@ -35,3 +43,7 @@ export const props = {
35
43
  stopAccountStatusPolling: noop,
36
44
  pollingProcessID,
37
45
  };
46
+
47
+ export const fetchAccountsStatusResponse = {
48
+ data: { accounts, autoUploadEnabled, hostObfuscationEnabled },
49
+ };
@@ -4,6 +4,8 @@ import PropTypes from 'prop-types';
4
4
  import ListItem from './Components/ListItem';
5
5
  import EmptyState from './Components/EmptyState';
6
6
  import ErrorState from './Components/ErrorState';
7
+ import EmptyResults from './Components/EmptyResults';
8
+ import { filterAccounts } from './AccountListHelper';
7
9
  import './accountList.scss';
8
10
 
9
11
  class AccountList extends Component {
@@ -20,8 +22,9 @@ class AccountList extends Component {
20
22
  }
21
23
 
22
24
  render() {
23
- const { accounts, error } = this.props;
25
+ const { accounts, error, filterTerm } = this.props;
24
26
  const accountIds = Object.keys(accounts);
27
+ const filteredAccountIds = filterAccounts(accounts, accountIds, filterTerm);
25
28
 
26
29
  if (error) {
27
30
  return <ErrorState error={error} />;
@@ -30,16 +33,14 @@ class AccountList extends Component {
30
33
  if (accountIds.length === 0) {
31
34
  return <EmptyState />;
32
35
  }
33
- const items = accountIds.map((accountID, index) => {
36
+
37
+ if (filteredAccountIds.length === 0) {
38
+ return <EmptyResults />;
39
+ }
40
+
41
+ const items = filteredAccountIds.map((accountID, index) => {
34
42
  const account = accounts[accountID];
35
- return (
36
- <ListItem
37
- key={index}
38
- accountID={accountID}
39
- account={account}
40
- initExpanded={index === 0}
41
- />
42
- );
43
+ return <ListItem key={index} accountID={accountID} account={account} />;
43
44
  });
44
45
  return <ListView className="account_list">{items}</ListView>;
45
46
  }
@@ -56,6 +57,7 @@ AccountList.propTypes = {
56
57
  }),
57
58
  accounts: PropTypes.object,
58
59
  error: PropTypes.string,
60
+ filterTerm: PropTypes.string,
59
61
  };
60
62
 
61
63
  AccountList.defaultProps = {
@@ -69,6 +71,7 @@ AccountList.defaultProps = {
69
71
  },
70
72
  accounts: {},
71
73
  error: '',
74
+ filterTerm: null,
72
75
  };
73
76
 
74
77
  export default AccountList;
@@ -1,4 +1,5 @@
1
1
  import API from 'foremanReact/API';
2
+ import { inventoryUrl } from '../../ForemanInventoryHelpers';
2
3
  import {
3
4
  INVENTORY_ACCOUNT_STATUS_POLLING,
4
5
  INVENTORY_ACCOUNT_STATUS_POLLING_ERROR,
@@ -10,12 +11,14 @@ import {
10
11
  export const fetchAccountsStatus = () => async dispatch => {
11
12
  try {
12
13
  const {
13
- data: { accounts },
14
- } = await API.get('accounts');
14
+ data: { accounts, autoUploadEnabled, hostObfuscationEnabled },
15
+ } = await API.get(inventoryUrl('accounts'));
15
16
  dispatch({
16
17
  type: INVENTORY_ACCOUNT_STATUS_POLLING,
17
18
  payload: {
18
19
  accounts,
20
+ autoUploadEnabled,
21
+ hostObfuscationEnabled,
19
22
  },
20
23
  });
21
24
  } catch (error) {
@@ -54,7 +57,7 @@ export const restartProcess = (accountID, activeTab) => dispatch => {
54
57
  processStatusName = 'generate_report_status';
55
58
  }
56
59
 
57
- API.post(`${accountID}/${processController}`);
60
+ API.post(inventoryUrl(`${accountID}/${processController}`));
58
61
  dispatch({
59
62
  type: INVENTORY_PROCESS_RESTART,
60
63
  payload: {
@@ -0,0 +1,10 @@
1
+ export const filterAccounts = (accounts, accountIds, filterTerm) => {
2
+ if (!filterTerm || !accountIds.length) {
3
+ return accountIds;
4
+ }
5
+
6
+ const filterTermLowerCased = filterTerm.toLowerCase();
7
+ return accountIds.filter(id =>
8
+ accounts[id].label.toLowerCase().includes(filterTermLowerCased)
9
+ );
10
+ };
@@ -1,4 +1,6 @@
1
1
  import Immutable from 'seamless-immutable';
2
+ import { AUTO_UPLOAD_TOGGLE } from '../AutoUploadSwitcher/AutoUploadSwitcherConstants';
3
+ import { HOST_OBFUSCATION_TOGGLE } from '../HostObfuscationSwitcher/HostObfuscationSwitcherConstants';
2
4
  import {
3
5
  INVENTORY_ACCOUNT_STATUS_POLLING,
4
6
  INVENTORY_ACCOUNT_STATUS_POLLING_ERROR,
@@ -20,6 +22,8 @@ export default (state = initialState, action) => {
20
22
  accounts,
21
23
  accountID,
22
24
  processStatusName,
25
+ autoUploadEnabled,
26
+ hostObfuscationEnabled,
23
27
  } = {},
24
28
  } = action;
25
29
 
@@ -28,6 +32,8 @@ export default (state = initialState, action) => {
28
32
  return state.merge({
29
33
  ...state,
30
34
  accounts,
35
+ autoUploadEnabled,
36
+ hostObfuscationEnabled,
31
37
  error: null,
32
38
  });
33
39
  case INVENTORY_ACCOUNT_STATUS_POLLING_ERROR:
@@ -49,6 +55,16 @@ export default (state = initialState, action) => {
49
55
  [processStatusName]: 'Restarting...',
50
56
  },
51
57
  });
58
+ case AUTO_UPLOAD_TOGGLE:
59
+ return state.merge({
60
+ ...state,
61
+ autoUploadEnabled,
62
+ });
63
+ case HOST_OBFUSCATION_TOGGLE:
64
+ return state.merge({
65
+ ...state,
66
+ hostObfuscationEnabled,
67
+ });
52
68
  default:
53
69
  return state;
54
70
  }
@@ -1,8 +1,17 @@
1
- import { selectForemanInventoryUpload } from '../../ForemanInventoryUploadSelectors';
1
+ import { selectForemanInventoryUpload } from '../../../ForemanRhCloudSelectors';
2
2
 
3
3
  export const selectAccountsList = state =>
4
4
  selectForemanInventoryUpload(state).accountsList;
5
+
5
6
  export const selectAccounts = state => selectAccountsList(state).accounts;
7
+
6
8
  export const selectPollingProcessID = state =>
7
9
  selectAccountsList(state).pollingProcessID;
10
+
8
11
  export const selectError = state => selectAccountsList(state).error;
12
+
13
+ export const selectAutoUploadEnabled = state =>
14
+ selectAccountsList(state).autoUploadEnabled;
15
+
16
+ export const selectHostObfuscationEnabled = state =>
17
+ selectAccountsList(state).hostObfuscationEnabled;
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { EmptyState, Icon } from 'patternfly-react';
3
+ import { translate as __ } from 'foremanReact/common/I18n';
4
+ import './emptyResults.scss';
5
+
6
+ const inventoryEmptyResults = () => (
7
+ <EmptyState>
8
+ <EmptyState.Title>
9
+ <Icon className="no_results_icon" name="meh-o" />
10
+ {__("Oops! Couldn't find organization that matches your query")}
11
+ </EmptyState.Title>
12
+ </EmptyState>
13
+ );
14
+
15
+ export default inventoryEmptyResults;
@@ -0,0 +1,13 @@
1
+ import { testComponentSnapshotsWithFixtures } from '@theforeman/test';
2
+
3
+ import EmptyResults from '../EmptyResults';
4
+
5
+ const fixtures = {
6
+ 'render without Props': {},
7
+ /** fixtures, props for the component */
8
+ };
9
+
10
+ describe('EmptyResults', () => {
11
+ describe('rendering', () =>
12
+ testComponentSnapshotsWithFixtures(EmptyResults, fixtures));
13
+ });
@@ -0,0 +1,18 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`EmptyResults rendering render without Props 1`] = `
4
+ <EmptyState
5
+ className=""
6
+ >
7
+ <EmptyStateTitle
8
+ className=""
9
+ >
10
+ <Icon
11
+ className="no_results_icon"
12
+ name="meh-o"
13
+ type="fa"
14
+ />
15
+ Oops! Couldn't find organization that matches your query
16
+ </EmptyStateTitle>
17
+ </EmptyState>
18
+ `;
@@ -0,0 +1,7 @@
1
+ .blank-slate-pf {
2
+ margin-top: 100px;
3
+
4
+ .no_results_icon {
5
+ margin-right: 5px;
6
+ }
7
+ }
@@ -0,0 +1 @@
1
+ export { default } from './EmptyResults';
@@ -4,7 +4,7 @@ import PropTypes from 'prop-types';
4
4
  import ListItemStatus from '../ListItemStatus';
5
5
  import Dashboard from '../../../Dashboard';
6
6
 
7
- const ListItem = ({ accountID, account, initExpanded }) => (
7
+ const ListItem = ({ accountID, account }) => (
8
8
  <ListView.Item
9
9
  leftContent={<ListView.Icon name="user" />}
10
10
  heading={account.label}
@@ -13,7 +13,6 @@ const ListItem = ({ accountID, account, initExpanded }) => (
13
13
  ]}
14
14
  stacked
15
15
  hideCloseIcon
16
- initExpanded={initExpanded}
17
16
  >
18
17
  <Dashboard accountID={accountID} account={account} />
19
18
  </ListView.Item>
@@ -26,7 +25,6 @@ ListItem.propTypes = {
26
25
  upload_report_status: PropTypes.string,
27
26
  label: PropTypes.string,
28
27
  }),
29
- initExpanded: PropTypes.bool,
30
28
  };
31
29
 
32
30
  ListItem.defaultProps = {
@@ -35,7 +33,6 @@ ListItem.defaultProps = {
35
33
  upload_report_status: 'unknown',
36
34
  label: 'default_org_name',
37
35
  },
38
- initExpanded: false,
39
36
  };
40
37
 
41
38
  export default ListItem;
@@ -5,6 +5,7 @@ import { props } from '../AccountList.fixtures';
5
5
 
6
6
  const fixtures = {
7
7
  'render with props': props,
8
+ 'show empty results': { ...props, filterTerm: 'not_matching_term' },
8
9
  };
9
10
 
10
11
  describe('AccountList', () => {
@@ -1,13 +1,20 @@
1
1
  import { testActionSnapshotWithFixtures } from '@theforeman/test';
2
+ import API from 'foremanReact/API';
2
3
  import {
3
4
  fetchAccountsStatus,
4
5
  startAccountStatusPolling,
5
6
  stopAccountStatusPolling,
6
7
  restartProcess,
7
8
  } from '../AccountListActions';
8
- import { pollingProcessID } from '../AccountList.fixtures';
9
+ import {
10
+ pollingProcessID,
11
+ fetchAccountsStatusResponse,
12
+ } from '../AccountList.fixtures';
9
13
  import { accountID, activeTab } from '../../Dashboard/Dashboard.fixtures';
10
14
 
15
+ jest.mock('foremanReact/API');
16
+ API.get.mockImplementation(async () => fetchAccountsStatusResponse);
17
+
11
18
  const fixtures = {
12
19
  'should fetchAccountsStatus': () => fetchAccountsStatus(),
13
20
  'should startAccountStatusPolling': () =>
@@ -0,0 +1,12 @@
1
+ import { filterAccounts } from '../AccountListHelper';
2
+ import { accounts, accountIDs } from '../AccountList.fixtures';
3
+
4
+ describe('AccountList helpers', () => {
5
+ it('account ids filter should return all accounts where label contains "test"', () => {
6
+ expect(filterAccounts(accounts, accountIDs, 'test')).toEqual(accountIDs);
7
+ });
8
+
9
+ it('account ids filter should not match', () => {
10
+ expect(filterAccounts(accounts, accountIDs, 'no_match')).toEqual([]);
11
+ });
12
+ });
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import { IntegrationTestHelper } from '@theforeman/test';
3
3
 
4
4
  import AccountList from '../index';
5
- import reducers from '../../../ForemanInventoryUploadReducers';
5
+ import reducers from '../../../../ForemanRhCloudReducers';
6
6
 
7
7
  describe('AccountList integration test', () => {
8
8
  it('should flow', async () => {
@@ -14,7 +14,11 @@ import {
14
14
  pollingProcessID,
15
15
  accountID,
16
16
  processStatusName,
17
+ autoUploadEnabled,
18
+ hostObfuscationEnabled,
17
19
  } from '../AccountList.fixtures';
20
+ import { AUTO_UPLOAD_TOGGLE } from '../../AutoUploadSwitcher/AutoUploadSwitcherConstants';
21
+ import { HOST_OBFUSCATION_TOGGLE } from '../../HostObfuscationSwitcher/HostObfuscationSwitcherConstants';
18
22
 
19
23
  const fixtures = {
20
24
  'should return the initial state': {},
@@ -23,6 +27,8 @@ const fixtures = {
23
27
  type: INVENTORY_ACCOUNT_STATUS_POLLING,
24
28
  payload: {
25
29
  accounts,
30
+ autoUploadEnabled,
31
+ hostObfuscationEnabled,
26
32
  },
27
33
  },
28
34
  },
@@ -54,6 +60,22 @@ const fixtures = {
54
60
  },
55
61
  },
56
62
  },
63
+ 'should handle AUTO_UPLOAD_TOGGLE': {
64
+ action: {
65
+ type: AUTO_UPLOAD_TOGGLE,
66
+ payload: {
67
+ autoUploadEnabled,
68
+ },
69
+ },
70
+ },
71
+ 'should handle HOST_OBFUSCATION_TOGGLE': {
72
+ action: {
73
+ type: HOST_OBFUSCATION_TOGGLE,
74
+ payload: {
75
+ hostObfuscationEnabled,
76
+ },
77
+ },
78
+ },
57
79
  };
58
80
 
59
81
  describe('AccountList reducer', () =>
@@ -3,23 +3,35 @@ import {
3
3
  selectAccountsList,
4
4
  selectAccounts,
5
5
  selectPollingProcessID,
6
+ selectAutoUploadEnabled,
7
+ selectHostObfuscationEnabled,
6
8
  } from '../AccountListSelectors';
7
- import { pollingProcessID, accounts } from '../AccountList.fixtures';
9
+ import {
10
+ pollingProcessID,
11
+ accounts,
12
+ autoUploadEnabled,
13
+ hostObfuscationEnabled,
14
+ } from '../AccountList.fixtures';
15
+ import { rhCloudStateWrapper } from '../../../../ForemanRhCloudTestHelpers';
8
16
 
9
- const state = {
10
- ForemanInventoryUpload: {
11
- accountsList: {
12
- accounts,
13
- pollingProcessID,
14
- },
17
+ const state = rhCloudStateWrapper({
18
+ accountsList: {
19
+ accounts,
20
+ pollingProcessID,
21
+ autoUploadEnabled,
22
+ hostObfuscationEnabled,
15
23
  },
16
- };
24
+ });
17
25
 
18
26
  const fixtures = {
19
27
  'should return AccountsList': () => selectAccountsList(state),
20
28
  'should return AccountList accounts': () => selectAccounts(state),
21
29
  'should return AccountList pollingProcessID': () =>
22
30
  selectPollingProcessID(state),
31
+ 'should return AccountList autoUploadEnabled': () =>
32
+ selectAutoUploadEnabled(state),
33
+ 'should return AccountList hostObfuscationEnabled': () =>
34
+ selectHostObfuscationEnabled(state),
23
35
  };
24
36
 
25
37
  describe('AccountList selectors', () =>
@@ -13,7 +13,6 @@ exports[`AccountList rendering render with props 1`] = `
13
13
  }
14
14
  }
15
15
  accountID="Account1"
16
- initExpanded={true}
17
16
  key="0"
18
17
  />
19
18
  <ListItem
@@ -25,7 +24,6 @@ exports[`AccountList rendering render with props 1`] = `
25
24
  }
26
25
  }
27
26
  accountID="Account2"
28
- initExpanded={false}
29
27
  key="1"
30
28
  />
31
29
  <ListItem
@@ -37,8 +35,9 @@ exports[`AccountList rendering render with props 1`] = `
37
35
  }
38
36
  }
39
37
  accountID="Account3"
40
- initExpanded={false}
41
38
  key="2"
42
39
  />
43
40
  </ListView>
44
41
  `;
42
+
43
+ exports[`AccountList rendering show empty results 1`] = `<inventoryEmptyResults />`;