foreman_rh_cloud 1.0.7 → 2.0.8

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 (146) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +8 -0
  3. data/app/controllers/foreman_inventory_upload/accounts_controller.rb +1 -0
  4. data/app/controllers/foreman_inventory_upload/uploads_controller.rb +22 -3
  5. data/app/controllers/foreman_rh_cloud/react_controller.rb +3 -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 +1 -0
  11. data/app/overrides/hosts_list.rb +13 -0
  12. data/app/views/foreman_rh_cloud/react/insights_cloud.html.erb +1 -0
  13. data/config/routes.rb +7 -0
  14. data/db/migrate/20191215104806_create_insights_hits.foreman_inventory_upload.rb +14 -0
  15. data/db/migrate/20191216062008_create_insights_facets.foreman_inventory_upload.rb +7 -0
  16. data/lib/foreman_inventory_upload/async/upload_report_job.rb +1 -5
  17. data/lib/foreman_inventory_upload/generators/fact_helpers.rb +1 -1
  18. data/lib/foreman_inventory_upload/generators/slice.rb +1 -0
  19. data/lib/foreman_inventory_upload/notifications/manifest_import_success_notification_override.rb +19 -0
  20. data/lib/foreman_rh_cloud/engine.rb +22 -10
  21. data/lib/foreman_rh_cloud/version.rb +1 -1
  22. data/lib/insights_cloud.rb +15 -0
  23. data/lib/insights_cloud/async/insights_full_sync.rb +92 -0
  24. data/package.json +20 -100
  25. data/test/factories/inventory_upload_factories.rb +13 -13
  26. data/test/jobs/insights_full_sync_test.rb +62 -0
  27. data/test/unit/slice_generator_test.rb +10 -3
  28. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountList.fixtures.js +6 -0
  29. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountList.stories.js +5 -14
  30. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListActions.js +2 -1
  31. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListReducer.js +9 -1
  32. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListSelectors.js +7 -0
  33. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/EmptyResults/__tests__/EmptyResults.test.js +1 -1
  34. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/EmptyState/__tests__/EmptyState.test.js +1 -1
  35. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/ErrorState/__tests__/ErrorState.test.js +1 -1
  36. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/ListItem/__tests__/ListItem.test.js +1 -1
  37. data/webpack/ForemanInventoryUpload/Components/AccountList/Components/ListItemStatus/__tests__/ListItemStatus.test.js +1 -1
  38. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountList.test.js +1 -1
  39. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListActions.test.js +9 -2
  40. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListIntegration.test.js +1 -1
  41. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListReducer.test.js +12 -1
  42. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListSelectors.test.js +8 -3
  43. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListActions.test.js.snap +20 -2
  44. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListReducer.test.js.snap +10 -0
  45. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListSelectors.test.js.snap +3 -0
  46. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcher.js +6 -6
  47. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/AutoUploadSwitcher.test.js +1 -1
  48. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/AutoUploadSwitcherActions.test.js +1 -1
  49. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/__snapshots__/AutoUploadSwitcher.test.js.snap +9 -9
  50. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/autoUploadSwitcher.scss +1 -1
  51. data/webpack/ForemanInventoryUpload/Components/Dashboard/Dashboard.fixtures.js +13 -9
  52. data/webpack/ForemanInventoryUpload/Components/Dashboard/Dashboard.stories.js +5 -15
  53. data/webpack/ForemanInventoryUpload/Components/Dashboard/__tests__/Dashboard.test.js +1 -2
  54. data/webpack/ForemanInventoryUpload/Components/Dashboard/__tests__/DashboardActions.test.js +17 -4
  55. data/webpack/ForemanInventoryUpload/Components/Dashboard/__tests__/DashboardIntegration.test.js +1 -1
  56. data/webpack/ForemanInventoryUpload/Components/Dashboard/__tests__/DashboardReducer.test.js +1 -1
  57. data/webpack/ForemanInventoryUpload/Components/Dashboard/__tests__/DashboardSelectors.test.js +3 -3
  58. data/webpack/ForemanInventoryUpload/Components/FileDownload/__tests__/FileDownload.test.js +1 -1
  59. data/webpack/ForemanInventoryUpload/Components/FullScreenModal/__tests__/FullScreenModal.test.js +1 -1
  60. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcher.fixtures.js +1 -0
  61. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcher.js +29 -0
  62. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcherActions.js +30 -0
  63. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcherConstants.js +3 -0
  64. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/__tests__/HostObfuscationSwitcher.test.js +14 -0
  65. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/__tests__/HostObfuscationSwitcherActions.test.js +14 -0
  66. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/__tests__/__snapshots__/HostObfuscationSwitcher.test.js.snap +38 -0
  67. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/__tests__/__snapshots__/HostObfuscationSwitcherActions.test.js.snap +14 -0
  68. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/hostObfuscationSwitcher.scss +0 -0
  69. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/index.js +20 -0
  70. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/__tests__/InventoryFilter.test.js +1 -1
  71. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/__tests__/InventoryFilterActions.test.js +1 -1
  72. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/__tests__/InventoryFilterReducer.test.js +1 -1
  73. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/__tests__/InventoryFilterSelectors.test.js +3 -3
  74. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/__tests__/integration.test.js +1 -1
  75. data/webpack/ForemanInventoryUpload/Components/InventorySettings/InventorySettings.js +15 -0
  76. data/webpack/ForemanInventoryUpload/Components/InventorySettings/__tests__/InventorySettings.test.js +13 -0
  77. data/webpack/ForemanInventoryUpload/Components/InventorySettings/__tests__/__snapshots__/InventorySettings.test.js.snap +13 -0
  78. data/webpack/ForemanInventoryUpload/Components/InventorySettings/index.js +1 -0
  79. data/webpack/ForemanInventoryUpload/Components/InventorySettings/inventorySettings.scss +15 -0
  80. data/webpack/ForemanInventoryUpload/Components/NavContainer/NavContainer.fixtures.js +5 -2
  81. data/webpack/ForemanInventoryUpload/Components/NavContainer/__tests__/NavContainer.test.js +1 -2
  82. data/webpack/ForemanInventoryUpload/Components/NavContainer/__tests__/__snapshots__/NavContainer.test.js.snap +1 -1
  83. data/webpack/ForemanInventoryUpload/Components/PageHeader/PageHeader.js +14 -4
  84. data/webpack/ForemanInventoryUpload/Components/PageHeader/__tests__/PageHeader.test.js +1 -1
  85. data/webpack/ForemanInventoryUpload/Components/PageHeader/__tests__/__snapshots__/PageHeader.test.js.snap +22 -3
  86. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/DocsButton/DocsButton.js +17 -0
  87. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/DocsButton/__tests__/DocsButton.test.js +12 -0
  88. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/DocsButton/__tests__/__snapshots__/DocsButton.test.js.snap +20 -0
  89. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/DocsButton/index.js +1 -0
  90. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/HistoryButton/HistoryButton.js +18 -0
  91. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/HistoryButton/__tests__/HistoryButton.test.js +12 -0
  92. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/HistoryButton/__tests__/__snapshots__/HistoryButton.test.js.snap +21 -0
  93. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/HistoryButton/index.js +1 -0
  94. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/PageDescription/PageDescription.js +24 -0
  95. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/PageDescription/__tests__/PageDescription.test.js +11 -0
  96. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/PageDescription/__tests__/__snapshots__/PageDescription.test.js.snap +17 -0
  97. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/PageDescription/index.js +1 -0
  98. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/ToolbarButtons/ToolbarButtons.js +13 -0
  99. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/ToolbarButtons/__tests__/ToolbarButtons.test.js +12 -0
  100. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/ToolbarButtons/__tests__/__snapshots__/ToolbarButtons.test.js.snap +10 -0
  101. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/ToolbarButtons/index.js +1 -0
  102. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/ToolbarButtons/toolbarButtons.scss +7 -0
  103. data/webpack/ForemanInventoryUpload/Components/ReportGenerate/__tests__/ReportGenerate.test.js +1 -1
  104. data/webpack/ForemanInventoryUpload/Components/ReportUpload/__tests__/ReportUpload.test.js +1 -1
  105. data/webpack/ForemanInventoryUpload/Components/ScheduledRun/__tests__/ScheduledRun.test.js +1 -1
  106. data/webpack/ForemanInventoryUpload/Components/StatusChart/__tests__/StatusChart.test.js +1 -1
  107. data/webpack/ForemanInventoryUpload/Components/TabBody/__tests__/TabBody.test.js +1 -1
  108. data/webpack/ForemanInventoryUpload/Components/TabContainer/__tests__/TabContainer.test.js +1 -1
  109. data/webpack/ForemanInventoryUpload/Components/TabFooter/__tests__/TabFooter.test.js +1 -1
  110. data/webpack/ForemanInventoryUpload/Components/TabHeader/__tests__/TabHeader.test.js +1 -1
  111. data/webpack/ForemanInventoryUpload/Components/Terminal/Terminal.js +1 -1
  112. data/webpack/ForemanInventoryUpload/Components/Terminal/__tests__/Terminal.test.js +1 -2
  113. data/webpack/ForemanInventoryUpload/ForemanInventoryConstants.js +4 -0
  114. data/webpack/ForemanInventoryUpload/ForemanInventoryHelpers.js +13 -0
  115. data/webpack/ForemanInventoryUpload/SubscriptionsPageExtension/SubscriptionsPageExtensionActions.js +34 -0
  116. data/webpack/ForemanInventoryUpload/__tests__/ForemanInventoryHelpers.test.js +3 -4
  117. data/webpack/ForemanInventoryUpload/__tests__/ForemanInventoryUpload.test.js +1 -1
  118. data/webpack/ForemanInventoryUpload/__tests__/__snapshots__/ForemanInventoryHelpers.test.js.snap +2 -0
  119. data/webpack/ForemanRhCloudReducers.js +2 -0
  120. data/webpack/ForemanRhCloudSelectors.js +2 -0
  121. data/webpack/ForemanRhCloudTestHelpers.js +2 -1
  122. data/webpack/InsightsCloudSync/InsightsCloudSync.js +26 -0
  123. data/webpack/InsightsCloudSync/InsightsCloudSync.test.js +13 -0
  124. data/webpack/InsightsCloudSync/InsightsCloudSyncActions.js +23 -0
  125. data/webpack/InsightsCloudSync/InsightsCloudSyncConstants.js +6 -0
  126. data/webpack/InsightsCloudSync/InsightsCloudSyncHelpers.js +3 -0
  127. data/webpack/InsightsCloudSync/InsightsCloudSyncReducers.js +3 -0
  128. data/webpack/InsightsCloudSync/__snapshots__/InsightsCloudSync.test.js.snap +25 -0
  129. data/webpack/InsightsCloudSync/__tests__/InsightsCloudSyncHelpers.test.js +9 -0
  130. data/webpack/InsightsCloudSync/__tests__/__snapshots__/InsightsCloudSyncHelpers.test.js.snap +3 -0
  131. data/webpack/InsightsCloudSync/index.js +17 -0
  132. data/webpack/__tests__/ForemanRhCloudHelpers.test.js +1 -1
  133. data/webpack/__tests__/ForemanRhCloudSelectors.test.js +5 -3
  134. data/webpack/__tests__/ForemanRhCloudTestHelpers.test.js +3 -3
  135. data/webpack/__tests__/__snapshots__/ForemanRhCloudSelectors.test.js.snap +9 -0
  136. data/webpack/__tests__/__snapshots__/ForemanRhCloudTestHelpers.test.js.snap +3 -0
  137. data/webpack/index.js +7 -0
  138. data/webpack/subscriptions_extension_index.js +8 -0
  139. metadata +59 -9
  140. data/webpack/stories/ForemanInventoryUploadReducers.js +0 -3
  141. data/webpack/stories/configureStore.js +0 -15
  142. data/webpack/stories/decorators/index.js +0 -1
  143. data/webpack/stories/decorators/withCardsDecorator.js +0 -14
  144. data/webpack/stories/index.js +0 -10
  145. data/webpack/stories/index.scss +0 -7
  146. data/webpack/test_setup.js +0 -6
@@ -0,0 +1,10 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`ToolbarButtons rendering render without Props 1`] = `
4
+ <div
5
+ className="inventory_toolbar_buttons"
6
+ >
7
+ <HistoryButton />
8
+ <DocsButton />
9
+ </div>
10
+ `;
@@ -0,0 +1 @@
1
+ export { default } from './ToolbarButtons';
@@ -0,0 +1,7 @@
1
+ .inventory_toolbar_buttons {
2
+ float: right;
3
+
4
+ .tasks_history_button {
5
+ margin-right: 5px;
6
+ }
7
+ }
@@ -1,4 +1,4 @@
1
- import { testComponentSnapshotsWithFixtures } from 'react-redux-test-utils';
1
+ import { testComponentSnapshotsWithFixtures } from '@theforeman/test';
2
2
 
3
3
  import ReportGenerate from '../ReportGenerate';
4
4
  import { props } from '../ReportGenerate.fixtures';
@@ -1,4 +1,4 @@
1
- import { testComponentSnapshotsWithFixtures } from 'react-redux-test-utils';
1
+ import { testComponentSnapshotsWithFixtures } from '@theforeman/test';
2
2
 
3
3
  import ReportUpload from '../ReportUpload';
4
4
  import { props } from '../ReportUpload.fixtures';
@@ -1,4 +1,4 @@
1
- import { testComponentSnapshotsWithFixtures } from 'react-redux-test-utils';
1
+ import { testComponentSnapshotsWithFixtures } from '@theforeman/test';
2
2
 
3
3
  import ScheduledRun from '../ScheduledRun';
4
4
  import { props } from '../ScheduledRun.fixtures';
@@ -1,4 +1,4 @@
1
- import { testComponentSnapshotsWithFixtures } from 'react-redux-test-utils';
1
+ import { testComponentSnapshotsWithFixtures } from '@theforeman/test';
2
2
 
3
3
  import StatusChart from '../StatusChart';
4
4
 
@@ -1,4 +1,4 @@
1
- import { testComponentSnapshotsWithFixtures } from 'react-redux-test-utils';
1
+ import { testComponentSnapshotsWithFixtures } from '@theforeman/test';
2
2
 
3
3
  import TabBody from '../TabBody';
4
4
 
@@ -1,4 +1,4 @@
1
- import { testComponentSnapshotsWithFixtures } from 'react-redux-test-utils';
1
+ import { testComponentSnapshotsWithFixtures } from '@theforeman/test';
2
2
 
3
3
  import TabContainer from '../TabContainer';
4
4
 
@@ -1,4 +1,4 @@
1
- import { testComponentSnapshotsWithFixtures } from 'react-redux-test-utils';
1
+ import { testComponentSnapshotsWithFixtures } from '@theforeman/test';
2
2
 
3
3
  import TabFooter from '../TabFooter';
4
4
 
@@ -1,4 +1,4 @@
1
- import { testComponentSnapshotsWithFixtures } from 'react-redux-test-utils';
1
+ import { testComponentSnapshotsWithFixtures } from '@theforeman/test';
2
2
 
3
3
  import TabHeader from '../TabHeader';
4
4
 
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { Grid, Spinner } from 'patternfly-react';
4
- import isEqual from 'lodash/isEqual';
4
+ import { isEqual } from 'lodash';
5
5
  import './terminal.scss';
6
6
  import { isTerminalScrolledDown } from './TerminalHelper';
7
7
 
@@ -1,6 +1,5 @@
1
1
  import React from 'react';
2
- import { testComponentSnapshotsWithFixtures } from 'react-redux-test-utils';
3
- import { mount } from 'enzyme';
2
+ import { mount, testComponentSnapshotsWithFixtures } from '@theforeman/test';
4
3
  import Terminal from '../Terminal';
5
4
  import { props, logs } from '../Terminal.fixtures';
6
5
 
@@ -1,3 +1,7 @@
1
1
  import { translate as __ } from 'foremanReact/common/I18n';
2
2
 
3
3
  export const INVENTORY_PAGE_TITLE = __('Red Hat Inventory Uploads');
4
+
5
+ export const DOCS_BUTTON_TEXT = __(' Documentation');
6
+
7
+ export const ACTIONS_HISTORY_BUTTON_TEXT = __(' Actions history');
@@ -1,4 +1,17 @@
1
+ import URI from 'urijs';
1
2
  import { foremanUrl } from '../ForemanRhCloudHelpers';
2
3
 
3
4
  export const inventoryUrl = path =>
4
5
  foremanUrl(`/foreman_inventory_upload/${path}`);
6
+
7
+ export const getInventoryDocsUrl = () =>
8
+ foremanUrl(
9
+ `/links/manual/+?root_url=${URI.encode(
10
+ 'https://access.redhat.com/products/subscription-central'
11
+ )}`
12
+ );
13
+
14
+ export const getActionsHistoryUrl = () =>
15
+ foremanUrl(
16
+ '/foreman_tasks/tasks?search=action++%3D++ForemanInventoryUpload%3A%3AAsync%3A%3AGenerateReportJob+or+action++%3D++ForemanInventoryUpload%3A%3AAsync%3A%3AGenerateAllReportsJob&page=1'
17
+ );
@@ -0,0 +1,34 @@
1
+ import API from 'foremanReact/API';
2
+ import { translate as __ } from 'foremanReact/common/I18n';
3
+ import { foremanUrl } from '../../ForemanRhCloudHelpers';
4
+ import { inventoryUrl } from '../ForemanInventoryHelpers';
5
+
6
+ export const subscriptionCountListener = (itemsCount, unsubscribe) => {
7
+ const showToast = autoUploadEnabled => {
8
+ !autoUploadEnabled &&
9
+ window.tfm.toastNotifications.notify({
10
+ message: __('Now you can enable Red Hat inventory upload'),
11
+ type: 'info',
12
+ link: {
13
+ children: __('Go to inventory upload settings'),
14
+ href: foremanUrl('foreman_rh_cloud/inventory_upload'),
15
+ },
16
+ });
17
+
18
+ unsubscribe();
19
+ };
20
+
21
+ itemsCount && fetchInventoryAutoUploadSetting(showToast);
22
+ };
23
+
24
+ const fetchInventoryAutoUploadSetting = async processApiResponse => {
25
+ let settingValue;
26
+ try {
27
+ const {
28
+ data: { autoUploadEnabled },
29
+ } = await API.get(inventoryUrl('auto_upload'));
30
+ settingValue = autoUploadEnabled;
31
+ } finally {
32
+ processApiResponse(settingValue);
33
+ }
34
+ };
@@ -1,10 +1,9 @@
1
- import { testSelectorsSnapshotWithFixtures } from 'react-redux-test-utils';
2
- import { inventoryUrl } from '../ForemanInventoryHelpers';
3
-
4
- global.URL_PREFIX = '';
1
+ import { testSelectorsSnapshotWithFixtures } from '@theforeman/test';
2
+ import { inventoryUrl, getInventoryDocsUrl } from '../ForemanInventoryHelpers';
5
3
 
6
4
  const fixtures = {
7
5
  'should return inventory Url': () => inventoryUrl('test_path'),
6
+ 'should return inventory docs url': () => getInventoryDocsUrl(),
8
7
  };
9
8
 
10
9
  describe('ForemanInventoryUpload helpers', () =>
@@ -1,4 +1,4 @@
1
- import { testComponentSnapshotsWithFixtures } from 'react-redux-test-utils';
1
+ import { testComponentSnapshotsWithFixtures } from '@theforeman/test';
2
2
 
3
3
  import ForemanInventoryUpload from '../../ForemanInventoryUpload';
4
4
 
@@ -1,3 +1,5 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
3
  exports[`ForemanInventoryUpload helpers should return inventory Url 1`] = `"/foreman_inventory_upload/test_path"`;
4
+
5
+ exports[`ForemanInventoryUpload helpers should return inventory docs url 1`] = `"/links/manual/+?root_url=https%3A%2F%2Faccess.redhat.com%2Fproducts%2Fsubscription-central"`;
@@ -1,8 +1,10 @@
1
1
  import { combineReducers } from 'redux';
2
2
  import inventoryUploadReducers from './ForemanInventoryUpload/ForemanInventoryUploadReducers';
3
+ import insightsReducers from './InsightsCloudSync/InsightsCloudSyncReducers';
3
4
 
4
5
  export default {
5
6
  ForemanRhCloud: combineReducers({
6
7
  ...inventoryUploadReducers,
8
+ ...insightsReducers,
7
9
  }),
8
10
  };
@@ -1,3 +1,5 @@
1
1
  export const selectForemanRhCloud = state => state.ForemanRhCloud;
2
2
  export const selectForemanInventoryUpload = state =>
3
3
  selectForemanRhCloud(state).inventoryUpload;
4
+ export const selectInsightsCloudSync = state =>
5
+ selectForemanRhCloud(state).InsightsCloudSync;
@@ -1,5 +1,6 @@
1
- export const inventoryStateWrapper = innerState => ({
1
+ export const rhCloudStateWrapper = innerState => ({
2
2
  ForemanRhCloud: {
3
3
  inventoryUpload: { ...innerState },
4
+ InsightsCloudSync: { ...innerState },
4
5
  },
5
6
  });
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ import { IntlProvider } from 'react-intl';
3
+ import PropTypes from 'prop-types';
4
+ import { translate as __ } from 'foremanReact/common/I18n';
5
+ import { Button } from 'patternfly-react';
6
+ import { INSIGHTS_SYNC_PAGE_TITLE } from './InsightsCloudSyncConstants';
7
+
8
+ const InsightsCloudSync = ({ syncInsights }) => {
9
+ document.title = INSIGHTS_SYNC_PAGE_TITLE;
10
+ return (
11
+ <IntlProvider locale={navigator.language}>
12
+ <div className="insights-cloud-sync">
13
+ <h1>{__('Red Hat Insights Sync')}</h1>
14
+ <Button bsStyle="primary" onClick={syncInsights}>
15
+ {__('Sync now')}
16
+ </Button>
17
+ </div>
18
+ </IntlProvider>
19
+ );
20
+ };
21
+
22
+ InsightsCloudSync.propTypes = {
23
+ syncInsights: PropTypes.func.isRequired,
24
+ };
25
+
26
+ export default InsightsCloudSync;
@@ -0,0 +1,13 @@
1
+ import { testComponentSnapshotsWithFixtures } from '@theforeman/test';
2
+ import { noop } from 'patternfly-react';
3
+
4
+ import InsightsCloudSync from './InsightsCloudSync';
5
+
6
+ const fixtures = {
7
+ render: {
8
+ syncInsights: noop,
9
+ },
10
+ };
11
+
12
+ describe('InsightsCloudSync', () =>
13
+ testComponentSnapshotsWithFixtures(InsightsCloudSync, fixtures));
@@ -0,0 +1,23 @@
1
+ import API from 'foremanReact/API';
2
+ import { insightsCloudUrl } from './InsightsCloudSyncHelpers';
3
+ import {
4
+ INSIGHTS_CLOUD_SYNC_SUCCESS,
5
+ INSIGHTS_CLOUD_SYNC_FAILURE,
6
+ } from './InsightsCloudSyncConstants';
7
+
8
+ export const syncInsights = () => async dispatch => {
9
+ try {
10
+ await API.post(insightsCloudUrl('tasks'));
11
+ dispatch({
12
+ type: INSIGHTS_CLOUD_SYNC_SUCCESS,
13
+ payload: {},
14
+ });
15
+ } catch (error) {
16
+ dispatch({
17
+ type: INSIGHTS_CLOUD_SYNC_FAILURE,
18
+ payload: {
19
+ error: error.message,
20
+ },
21
+ });
22
+ }
23
+ };
@@ -0,0 +1,6 @@
1
+ import { translate as __ } from 'foremanReact/common/I18n';
2
+
3
+ export const INSIGHTS_CLOUD_SYNC_SUCCESS = 'INSIGHTS_CLOUD_SYNC_SUCCESS';
4
+ export const INSIGHTS_CLOUD_SYNC_FAILURE = 'INSIGHTS_CLOUD_SYNC_FAILURE';
5
+
6
+ export const INSIGHTS_SYNC_PAGE_TITLE = __('Red Hat Insights cloud sync');
@@ -0,0 +1,3 @@
1
+ import { foremanUrl } from '../ForemanRhCloudHelpers';
2
+
3
+ export const insightsCloudUrl = path => foremanUrl(`/insights_cloud/${path}`);
@@ -0,0 +1,3 @@
1
+ const reducers = {};
2
+
3
+ export default reducers;
@@ -0,0 +1,25 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`InsightsCloudSync render 1`] = `
4
+ <IntlProvider
5
+ locale="en-US"
6
+ >
7
+ <div
8
+ className="insights-cloud-sync"
9
+ >
10
+ <h1>
11
+ Red Hat Insights Sync
12
+ </h1>
13
+ <Button
14
+ active={false}
15
+ block={false}
16
+ bsClass="btn"
17
+ bsStyle="primary"
18
+ disabled={false}
19
+ onClick={[Function]}
20
+ >
21
+ Sync now
22
+ </Button>
23
+ </div>
24
+ </IntlProvider>
25
+ `;
@@ -0,0 +1,9 @@
1
+ import { testSelectorsSnapshotWithFixtures } from '@theforeman/test';
2
+ import { insightsCloudUrl } from '../InsightsCloudSyncHelpers';
3
+
4
+ const fixtures = {
5
+ 'should return insights cloud Url': () => insightsCloudUrl('test_path'),
6
+ };
7
+
8
+ describe('InsightsCloudSync helpers', () =>
9
+ testSelectorsSnapshotWithFixtures(fixtures));
@@ -0,0 +1,3 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`InsightsCloudSync helpers should return insights cloud Url 1`] = `"/insights_cloud/test_path"`;
@@ -0,0 +1,17 @@
1
+ import { bindActionCreators } from 'redux';
2
+ import { connect } from 'react-redux';
3
+
4
+ import * as actions from './InsightsCloudSyncActions';
5
+ import InsightsCloudSync from './InsightsCloudSync';
6
+
7
+ // map state to props
8
+ const mapStateToProps = state => ({});
9
+
10
+ // map action dispatchers to props
11
+ const mapDispatchToProps = dispatch => bindActionCreators(actions, dispatch);
12
+
13
+ // export reducers
14
+ export const reducers = {};
15
+
16
+ // export connected component
17
+ export default connect(mapStateToProps, mapDispatchToProps)(InsightsCloudSync);
@@ -1,4 +1,4 @@
1
- import { testSelectorsSnapshotWithFixtures } from 'react-redux-test-utils';
1
+ import { testSelectorsSnapshotWithFixtures } from '@theforeman/test';
2
2
  import { foremanUrl } from '../ForemanRhCloudHelpers';
3
3
 
4
4
  global.URL_PREFIX = 'MY_TEST_URL_PREFIX.example.com';
@@ -1,16 +1,18 @@
1
- import { testSelectorsSnapshotWithFixtures } from 'react-redux-test-utils';
2
- import { inventoryStateWrapper } from '../ForemanRhCloudTestHelpers';
1
+ import { testSelectorsSnapshotWithFixtures } from '@theforeman/test';
2
+ import { rhCloudStateWrapper } from '../ForemanRhCloudTestHelpers';
3
3
  import {
4
4
  selectForemanRhCloud,
5
5
  selectForemanInventoryUpload,
6
+ selectInsightsCloudSync,
6
7
  } from '../ForemanRhCloudSelectors';
7
8
 
8
- const state = inventoryStateWrapper({ inventoryReducersNamespaces: {} });
9
+ const state = rhCloudStateWrapper({ inventoryReducersNamespaces: {} });
9
10
 
10
11
  const fixtures = {
11
12
  'should return ForemanRhCloud': () => selectForemanRhCloud(state),
12
13
  'should return ForemanInventoryUpload': () =>
13
14
  selectForemanInventoryUpload(state),
15
+ 'should return InsightsCloudSync': () => selectInsightsCloudSync(state),
14
16
  };
15
17
 
16
18
  describe('ForemanRhCloud selectors', () =>
@@ -1,9 +1,9 @@
1
- import { testSelectorsSnapshotWithFixtures } from 'react-redux-test-utils';
2
- import { inventoryStateWrapper } from '../ForemanRhCloudTestHelpers';
1
+ import { testSelectorsSnapshotWithFixtures } from '@theforeman/test';
2
+ import { rhCloudStateWrapper } from '../ForemanRhCloudTestHelpers';
3
3
 
4
4
  const fixtures = {
5
5
  'should return inventory wrapper': () =>
6
- inventoryStateWrapper({ inventoryChildren: null }),
6
+ rhCloudStateWrapper({ inventoryChildren: null }),
7
7
  };
8
8
 
9
9
  describe('ForemanRhCloud helpers', () =>
@@ -1,5 +1,11 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
+ exports[`ForemanRhCloud selectors should return InsightsCloudSync 1`] = `
4
+ Object {
5
+ "inventoryReducersNamespaces": Object {},
6
+ }
7
+ `;
8
+
3
9
  exports[`ForemanRhCloud selectors should return ForemanInventoryUpload 1`] = `
4
10
  Object {
5
11
  "inventoryReducersNamespaces": Object {},
@@ -8,6 +14,9 @@ Object {
8
14
 
9
15
  exports[`ForemanRhCloud selectors should return ForemanRhCloud 1`] = `
10
16
  Object {
17
+ "InsightsCloudSync": Object {
18
+ "inventoryReducersNamespaces": Object {},
19
+ },
11
20
  "inventoryUpload": Object {
12
21
  "inventoryReducersNamespaces": Object {},
13
22
  },
@@ -3,6 +3,9 @@
3
3
  exports[`ForemanRhCloud helpers should return inventory wrapper 1`] = `
4
4
  Object {
5
5
  "ForemanRhCloud": Object {
6
+ "InsightsCloudSync": Object {
7
+ "inventoryChildren": null,
8
+ },
6
9
  "inventoryUpload": Object {
7
10
  "inventoryChildren": null,
8
11
  },
@@ -5,6 +5,7 @@ import componentRegistry from 'foremanReact/components/componentRegistry';
5
5
  import { registerReducer } from 'foremanReact/common/MountingService';
6
6
  import reducers from './ForemanRhCloudReducers';
7
7
  import ForemanInventoryUpload from './ForemanInventoryUpload';
8
+ import InsightsCloudSync from './InsightsCloudSync';
8
9
 
9
10
  // register reducers
10
11
  Object.entries(reducers).forEach(([key, reducer]) =>
@@ -16,3 +17,9 @@ componentRegistry.register({
16
17
  name: 'ForemanInventoryUpload',
17
18
  type: ForemanInventoryUpload,
18
19
  });
20
+
21
+ // register components
22
+ componentRegistry.register({
23
+ name: 'InsightsCloudSync',
24
+ type: InsightsCloudSync,
25
+ });