foreman_rh_cloud 1.0.7 → 1.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 (98) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/foreman_inventory_upload/accounts_controller.rb +1 -0
  3. data/app/controllers/foreman_inventory_upload/uploads_controller.rb +22 -3
  4. data/app/controllers/foreman_rh_cloud/react_controller.rb +3 -0
  5. data/app/controllers/insights_cloud/tasks_controller.rb +8 -0
  6. data/app/helpers/foreman_inventory_upload_host_helper.rb +11 -0
  7. data/app/models/insights_facet.rb +3 -0
  8. data/app/models/insights_hit.rb +6 -0
  9. data/app/models/setting/rh_cloud.rb +1 -0
  10. data/app/overrides/hosts_list.rb +13 -0
  11. data/app/views/foreman_rh_cloud/react/insights_cloud.html.erb +1 -0
  12. data/config/routes.rb +7 -0
  13. data/db/migrate/20191215104806_create_insights_hits.foreman_inventory_upload.rb +14 -0
  14. data/db/migrate/20191216062008_create_insights_facets.foreman_inventory_upload.rb +7 -0
  15. data/lib/foreman_inventory_upload/generators/fact_helpers.rb +1 -1
  16. data/lib/foreman_inventory_upload/generators/slice.rb +1 -0
  17. data/lib/foreman_inventory_upload/notifications/manifest_import_success_notification_override.rb +19 -0
  18. data/lib/foreman_rh_cloud/engine.rb +21 -9
  19. data/lib/foreman_rh_cloud/version.rb +1 -1
  20. data/lib/insights_cloud.rb +15 -0
  21. data/lib/insights_cloud/async/insights_full_sync.rb +92 -0
  22. data/test/jobs/insights_full_sync_test.rb +62 -0
  23. data/test/unit/slice_generator_test.rb +8 -1
  24. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountList.fixtures.js +6 -0
  25. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListActions.js +2 -1
  26. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListReducer.js +9 -1
  27. data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListSelectors.js +7 -0
  28. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListActions.test.js +8 -1
  29. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListReducer.test.js +11 -0
  30. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListSelectors.test.js +7 -2
  31. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListActions.test.js.snap +20 -2
  32. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListReducer.test.js.snap +10 -0
  33. data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListSelectors.test.js.snap +3 -0
  34. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcher.js +6 -6
  35. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/__snapshots__/AutoUploadSwitcher.test.js.snap +9 -9
  36. data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/autoUploadSwitcher.scss +1 -1
  37. data/webpack/ForemanInventoryUpload/Components/Dashboard/__tests__/DashboardActions.test.js +2 -2
  38. data/webpack/ForemanInventoryUpload/Components/Dashboard/__tests__/DashboardSelectors.test.js +2 -2
  39. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcher.fixtures.js +1 -0
  40. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcher.js +29 -0
  41. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcherActions.js +30 -0
  42. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcherConstants.js +3 -0
  43. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/__tests__/HostObfuscationSwitcher.test.js +14 -0
  44. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/__tests__/HostObfuscationSwitcherActions.test.js +14 -0
  45. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/__tests__/__snapshots__/HostObfuscationSwitcher.test.js.snap +38 -0
  46. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/__tests__/__snapshots__/HostObfuscationSwitcherActions.test.js.snap +14 -0
  47. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/hostObfuscationSwitcher.scss +0 -0
  48. data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/index.js +20 -0
  49. data/webpack/ForemanInventoryUpload/Components/InventoryFilter/__tests__/InventoryFilterSelectors.test.js +2 -2
  50. data/webpack/ForemanInventoryUpload/Components/InventorySettings/InventorySettings.js +15 -0
  51. data/webpack/ForemanInventoryUpload/Components/InventorySettings/__tests__/InventorySettings.test.js +13 -0
  52. data/webpack/ForemanInventoryUpload/Components/InventorySettings/__tests__/__snapshots__/InventorySettings.test.js.snap +13 -0
  53. data/webpack/ForemanInventoryUpload/Components/InventorySettings/index.js +1 -0
  54. data/webpack/ForemanInventoryUpload/Components/InventorySettings/inventorySettings.scss +15 -0
  55. data/webpack/ForemanInventoryUpload/Components/PageHeader/PageHeader.js +14 -4
  56. data/webpack/ForemanInventoryUpload/Components/PageHeader/__tests__/__snapshots__/PageHeader.test.js.snap +22 -3
  57. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/DocsButton/DocsButton.js +17 -0
  58. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/DocsButton/__tests__/DocsButton.test.js +13 -0
  59. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/DocsButton/__tests__/__snapshots__/DocsButton.test.js.snap +20 -0
  60. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/DocsButton/index.js +1 -0
  61. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/HistoryButton/HistoryButton.js +18 -0
  62. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/HistoryButton/__tests__/HistoryButton.test.js +14 -0
  63. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/HistoryButton/__tests__/__snapshots__/HistoryButton.test.js.snap +21 -0
  64. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/HistoryButton/index.js +1 -0
  65. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/PageDescription/PageDescription.js +24 -0
  66. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/PageDescription/__tests__/PageDescription.test.js +11 -0
  67. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/PageDescription/__tests__/__snapshots__/PageDescription.test.js.snap +17 -0
  68. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/PageDescription/index.js +1 -0
  69. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/ToolbarButtons/ToolbarButtons.js +13 -0
  70. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/ToolbarButtons/__tests__/ToolbarButtons.test.js +12 -0
  71. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/ToolbarButtons/__tests__/__snapshots__/ToolbarButtons.test.js.snap +10 -0
  72. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/ToolbarButtons/index.js +1 -0
  73. data/webpack/ForemanInventoryUpload/Components/PageHeader/components/ToolbarButtons/toolbarButtons.scss +7 -0
  74. data/webpack/ForemanInventoryUpload/ForemanInventoryConstants.js +4 -0
  75. data/webpack/ForemanInventoryUpload/ForemanInventoryHelpers.js +8 -0
  76. data/webpack/ForemanInventoryUpload/SubscriptionsPageExtension/SubscriptionsPageExtensionActions.js +34 -0
  77. data/webpack/ForemanInventoryUpload/__tests__/ForemanInventoryHelpers.test.js +2 -1
  78. data/webpack/ForemanInventoryUpload/__tests__/__snapshots__/ForemanInventoryHelpers.test.js.snap +2 -0
  79. data/webpack/ForemanRhCloudReducers.js +2 -0
  80. data/webpack/ForemanRhCloudSelectors.js +2 -0
  81. data/webpack/ForemanRhCloudTestHelpers.js +2 -1
  82. data/webpack/InsightsCloudSync/InsightsCloudSync.js +26 -0
  83. data/webpack/InsightsCloudSync/InsightsCloudSync.test.js +13 -0
  84. data/webpack/InsightsCloudSync/InsightsCloudSyncActions.js +23 -0
  85. data/webpack/InsightsCloudSync/InsightsCloudSyncConstants.js +6 -0
  86. data/webpack/InsightsCloudSync/InsightsCloudSyncHelpers.js +3 -0
  87. data/webpack/InsightsCloudSync/InsightsCloudSyncReducers.js +3 -0
  88. data/webpack/InsightsCloudSync/__snapshots__/InsightsCloudSync.test.js.snap +25 -0
  89. data/webpack/InsightsCloudSync/__tests__/InsightsCloudSyncHelpers.test.js +11 -0
  90. data/webpack/InsightsCloudSync/__tests__/__snapshots__/InsightsCloudSyncHelpers.test.js.snap +3 -0
  91. data/webpack/InsightsCloudSync/index.js +17 -0
  92. data/webpack/__tests__/ForemanRhCloudSelectors.test.js +4 -2
  93. data/webpack/__tests__/ForemanRhCloudTestHelpers.test.js +2 -2
  94. data/webpack/__tests__/__snapshots__/ForemanRhCloudSelectors.test.js.snap +9 -0
  95. data/webpack/__tests__/__snapshots__/ForemanRhCloudTestHelpers.test.js.snap +3 -0
  96. data/webpack/index.js +7 -0
  97. data/webpack/subscriptions_extension_index.js +8 -0
  98. metadata +59 -2
@@ -32,6 +32,8 @@ export const processStatusName = 'upload_report_status';
32
32
 
33
33
  export const autoUploadEnabled = true;
34
34
 
35
+ export const hostObfuscationEnabled = true;
36
+
35
37
  export const filterTerm = 'some_filter';
36
38
 
37
39
  export const props = {
@@ -41,3 +43,7 @@ export const props = {
41
43
  stopAccountStatusPolling: noop,
42
44
  pollingProcessID,
43
45
  };
46
+
47
+ export const fetchAccountsStatusResponse = {
48
+ data: { accounts, autoUploadEnabled, hostObfuscationEnabled },
49
+ };
@@ -11,13 +11,14 @@ import {
11
11
  export const fetchAccountsStatus = () => async dispatch => {
12
12
  try {
13
13
  const {
14
- data: { accounts, autoUploadEnabled },
14
+ data: { accounts, autoUploadEnabled, hostObfuscationEnabled },
15
15
  } = await API.get(inventoryUrl('accounts'));
16
16
  dispatch({
17
17
  type: INVENTORY_ACCOUNT_STATUS_POLLING,
18
18
  payload: {
19
19
  accounts,
20
20
  autoUploadEnabled,
21
+ hostObfuscationEnabled,
21
22
  },
22
23
  });
23
24
  } catch (error) {
@@ -1,11 +1,12 @@
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,
5
7
  INVENTORY_ACCOUNT_STATUS_POLLING_START,
6
8
  INVENTORY_PROCESS_RESTART,
7
9
  } from './AccountListConstants';
8
- import { AUTO_UPLOAD_TOGGLE } from '../AutoUploadSwitcher/AutoUploadSwitcherConstants';
9
10
 
10
11
  const initialState = Immutable({
11
12
  accounts: {},
@@ -22,6 +23,7 @@ export default (state = initialState, action) => {
22
23
  accountID,
23
24
  processStatusName,
24
25
  autoUploadEnabled,
26
+ hostObfuscationEnabled,
25
27
  } = {},
26
28
  } = action;
27
29
 
@@ -31,6 +33,7 @@ export default (state = initialState, action) => {
31
33
  ...state,
32
34
  accounts,
33
35
  autoUploadEnabled,
36
+ hostObfuscationEnabled,
34
37
  error: null,
35
38
  });
36
39
  case INVENTORY_ACCOUNT_STATUS_POLLING_ERROR:
@@ -57,6 +60,11 @@ export default (state = initialState, action) => {
57
60
  ...state,
58
61
  autoUploadEnabled,
59
62
  });
63
+ case HOST_OBFUSCATION_TOGGLE:
64
+ return state.merge({
65
+ ...state,
66
+ hostObfuscationEnabled,
67
+ });
60
68
  default:
61
69
  return state;
62
70
  }
@@ -2,9 +2,16 @@ 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
+
9
13
  export const selectAutoUploadEnabled = state =>
10
14
  selectAccountsList(state).autoUploadEnabled;
15
+
16
+ export const selectHostObfuscationEnabled = state =>
17
+ selectAccountsList(state).hostObfuscationEnabled;
@@ -1,13 +1,20 @@
1
1
  import { testActionSnapshotWithFixtures } from 'react-redux-test-utils';
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': () =>
@@ -15,8 +15,10 @@ import {
15
15
  accountID,
16
16
  processStatusName,
17
17
  autoUploadEnabled,
18
+ hostObfuscationEnabled,
18
19
  } from '../AccountList.fixtures';
19
20
  import { AUTO_UPLOAD_TOGGLE } from '../../AutoUploadSwitcher/AutoUploadSwitcherConstants';
21
+ import { HOST_OBFUSCATION_TOGGLE } from '../../HostObfuscationSwitcher/HostObfuscationSwitcherConstants';
20
22
 
21
23
  const fixtures = {
22
24
  'should return the initial state': {},
@@ -26,6 +28,7 @@ const fixtures = {
26
28
  payload: {
27
29
  accounts,
28
30
  autoUploadEnabled,
31
+ hostObfuscationEnabled,
29
32
  },
30
33
  },
31
34
  },
@@ -65,6 +68,14 @@ const fixtures = {
65
68
  },
66
69
  },
67
70
  },
71
+ 'should handle HOST_OBFUSCATION_TOGGLE': {
72
+ action: {
73
+ type: HOST_OBFUSCATION_TOGGLE,
74
+ payload: {
75
+ hostObfuscationEnabled,
76
+ },
77
+ },
78
+ },
68
79
  };
69
80
 
70
81
  describe('AccountList reducer', () =>
@@ -4,19 +4,22 @@ import {
4
4
  selectAccounts,
5
5
  selectPollingProcessID,
6
6
  selectAutoUploadEnabled,
7
+ selectHostObfuscationEnabled,
7
8
  } from '../AccountListSelectors';
8
9
  import {
9
10
  pollingProcessID,
10
11
  accounts,
11
12
  autoUploadEnabled,
13
+ hostObfuscationEnabled,
12
14
  } from '../AccountList.fixtures';
13
- import { inventoryStateWrapper } from '../../../../ForemanRhCloudTestHelpers';
15
+ import { rhCloudStateWrapper } from '../../../../ForemanRhCloudTestHelpers';
14
16
 
15
- const state = inventoryStateWrapper({
17
+ const state = rhCloudStateWrapper({
16
18
  accountsList: {
17
19
  accounts,
18
20
  pollingProcessID,
19
21
  autoUploadEnabled,
22
+ hostObfuscationEnabled,
20
23
  },
21
24
  });
22
25
 
@@ -27,6 +30,8 @@ const fixtures = {
27
30
  selectPollingProcessID(state),
28
31
  'should return AccountList autoUploadEnabled': () =>
29
32
  selectAutoUploadEnabled(state),
33
+ 'should return AccountList hostObfuscationEnabled': () =>
34
+ selectHostObfuscationEnabled(state),
30
35
  };
31
36
 
32
37
  describe('AccountList selectors', () =>
@@ -5,9 +5,27 @@ Array [
5
5
  Array [
6
6
  Object {
7
7
  "payload": Object {
8
- "error": "Cannot read property 'data' of undefined",
8
+ "accounts": Object {
9
+ "Account1": Object {
10
+ "generate_report_status": "running",
11
+ "label": "test_org1",
12
+ "upload_report_status": "running",
13
+ },
14
+ "Account2": Object {
15
+ "generate_report_status": "failure",
16
+ "label": "test_org2",
17
+ "upload_report_status": "unknown",
18
+ },
19
+ "Account3": Object {
20
+ "generate_report_status": "running",
21
+ "label": "test_org3",
22
+ "upload_report_status": "success",
23
+ },
24
+ },
25
+ "autoUploadEnabled": true,
26
+ "hostObfuscationEnabled": true,
9
27
  },
10
- "type": "INVENTORY_ACCOUNT_STATUS_POLLING_ERROR",
28
+ "type": "INVENTORY_ACCOUNT_STATUS_POLLING",
11
29
  },
12
30
  ],
13
31
  ]
@@ -9,6 +9,15 @@ Object {
9
9
  }
10
10
  `;
11
11
 
12
+ exports[`AccountList reducer should handle HOST_OBFUSCATION_TOGGLE 1`] = `
13
+ Object {
14
+ "accounts": Object {},
15
+ "error": null,
16
+ "hostObfuscationEnabled": true,
17
+ "pollingProcessID": 0,
18
+ }
19
+ `;
20
+
12
21
  exports[`AccountList reducer should handle INVENTORY_ACCOUNT_STATUS_POLLING 1`] = `
13
22
  Object {
14
23
  "accounts": Object {
@@ -30,6 +39,7 @@ Object {
30
39
  },
31
40
  "autoUploadEnabled": true,
32
41
  "error": null,
42
+ "hostObfuscationEnabled": true,
33
43
  "pollingProcessID": 0,
34
44
  }
35
45
  `;
@@ -22,6 +22,8 @@ Object {
22
22
 
23
23
  exports[`AccountList selectors should return AccountList autoUploadEnabled 1`] = `true`;
24
24
 
25
+ exports[`AccountList selectors should return AccountList hostObfuscationEnabled 1`] = `true`;
26
+
25
27
  exports[`AccountList selectors should return AccountList pollingProcessID 1`] = `0`;
26
28
 
27
29
  exports[`AccountList selectors should return AccountsList 1`] = `
@@ -44,6 +46,7 @@ Object {
44
46
  },
45
47
  },
46
48
  "autoUploadEnabled": true,
49
+ "hostObfuscationEnabled": true,
47
50
  "pollingProcessID": 0,
48
51
  }
49
52
  `;
@@ -6,17 +6,17 @@ import './autoUploadSwitcher.scss';
6
6
 
7
7
  const AutoUploadSwitcher = ({ autoUploadEnabled, handleToggle }) => (
8
8
  <div className="auto_upload_switcher">
9
- <Switch
10
- size="mini"
11
- value={autoUploadEnabled}
12
- onChange={() => handleToggle(autoUploadEnabled)}
13
- />
9
+ <span>Auto upload</span>
14
10
  <FieldLevelHelp
15
11
  content={__(
16
12
  'Enable automatic upload of your host inventory to the Red Hat cloud'
17
13
  )}
18
14
  />
19
- <span>Allow Auto Upload</span>
15
+ <Switch
16
+ size="mini"
17
+ value={autoUploadEnabled}
18
+ onChange={() => handleToggle(autoUploadEnabled)}
19
+ />
20
20
  </div>
21
21
  );
22
22
 
@@ -4,6 +4,15 @@ exports[`AutoUploadSwitcher rendering render with props 1`] = `
4
4
  <div
5
5
  className="auto_upload_switcher"
6
6
  >
7
+ <span>
8
+ Auto upload
9
+ </span>
10
+ <FieldLevelHelp
11
+ buttonClass=""
12
+ content="Enable automatic upload of your host inventory to the Red Hat cloud"
13
+ placement="top"
14
+ rootClose={true}
15
+ />
7
16
  <Switch
8
17
  animate={true}
9
18
  baseClass="bootstrap-switch"
@@ -25,14 +34,5 @@ exports[`AutoUploadSwitcher rendering render with props 1`] = `
25
34
  value={true}
26
35
  wrapperClass="wrapper"
27
36
  />
28
- <FieldLevelHelp
29
- buttonClass=""
30
- content="Enable automatic upload of your host inventory to the Red Hat cloud"
31
- placement="top"
32
- rootClose={true}
33
- />
34
- <span>
35
- Allow Auto Upload
36
- </span>
37
37
  </div>
38
38
  `;
@@ -1,3 +1,3 @@
1
1
  .auto_upload_switcher {
2
- float: right;
2
+ margin-bottom: 5px;
3
3
  }
@@ -14,13 +14,13 @@ import {
14
14
  activeTab,
15
15
  accountID,
16
16
  } from '../Dashboard.fixtures';
17
- import { inventoryStateWrapper } from '../../../../ForemanRhCloudTestHelpers';
17
+ import { rhCloudStateWrapper } from '../../../../ForemanRhCloudTestHelpers';
18
18
 
19
19
  jest.mock('foremanReact/API');
20
20
  API.get.mockImplementation(() => serverMock);
21
21
 
22
22
  const runWithGetState = (state, action, params) => dispatch => {
23
- const getState = () => inventoryStateWrapper({ dashboard: state });
23
+ const getState = () => rhCloudStateWrapper({ dashboard: state });
24
24
  action(params)(dispatch, getState);
25
25
  };
26
26
 
@@ -13,9 +13,9 @@ import {
13
13
  activeTab,
14
14
  accountID,
15
15
  } from '../Dashboard.fixtures';
16
- import { inventoryStateWrapper } from '../../../../ForemanRhCloudTestHelpers';
16
+ import { rhCloudStateWrapper } from '../../../../ForemanRhCloudTestHelpers';
17
17
 
18
- const state = inventoryStateWrapper({
18
+ const state = rhCloudStateWrapper({
19
19
  dashboard: {
20
20
  [accountID]: {
21
21
  generating: {
@@ -0,0 +1 @@
1
+ export const handleToggleResponse = { data: { autoUploadEnabled: true } };
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { Switch, FieldLevelHelp } from 'patternfly-react';
4
+ import { translate as __ } from 'foremanReact/common/I18n';
5
+
6
+ const HostObfuscationSwitcher = ({ hostObfuscationEnabled, handleToggle }) => (
7
+ <div className="host_obfuscation_switcher">
8
+ <span>Obfuscate host names</span>
9
+ <FieldLevelHelp
10
+ content={__('Obfuscate host names sent to the Red Hat cloud')}
11
+ />
12
+ <Switch
13
+ size="mini"
14
+ value={hostObfuscationEnabled}
15
+ onChange={() => handleToggle(hostObfuscationEnabled)}
16
+ />
17
+ </div>
18
+ );
19
+
20
+ HostObfuscationSwitcher.propTypes = {
21
+ hostObfuscationEnabled: PropTypes.bool,
22
+ handleToggle: PropTypes.func.isRequired,
23
+ };
24
+
25
+ HostObfuscationSwitcher.defaultProps = {
26
+ hostObfuscationEnabled: false,
27
+ };
28
+
29
+ export default HostObfuscationSwitcher;
@@ -0,0 +1,30 @@
1
+ import API from 'foremanReact/API';
2
+ import { inventoryUrl } from '../../ForemanInventoryHelpers';
3
+ import {
4
+ HOST_OBFUSCATION_TOGGLE,
5
+ HOST_OBFUSCATION_TOGGLE_ERROR,
6
+ } from './HostObfuscationSwitcherConstants';
7
+
8
+ export const handleToggle = currentHostObfuscationEnabled => async dispatch => {
9
+ const toggledHostObfuscationEnabled = !currentHostObfuscationEnabled;
10
+ try {
11
+ const {
12
+ data: { hostObfuscationEnabled },
13
+ } = await API.post(inventoryUrl('host_obfuscation'), {
14
+ value: toggledHostObfuscationEnabled,
15
+ });
16
+ dispatch({
17
+ type: HOST_OBFUSCATION_TOGGLE,
18
+ payload: {
19
+ hostObfuscationEnabled,
20
+ },
21
+ });
22
+ } catch (error) {
23
+ dispatch({
24
+ type: HOST_OBFUSCATION_TOGGLE_ERROR,
25
+ payload: {
26
+ error: error.message,
27
+ },
28
+ });
29
+ }
30
+ };
@@ -0,0 +1,3 @@
1
+ export const HOST_OBFUSCATION_TOGGLE = 'HOST_OBFUSCATION_TOGGLE';
2
+
3
+ export const HOST_OBFUSCATION_TOGGLE_ERROR = 'HOST_OBFUSCATION_TOGGLE_ERROR';
@@ -0,0 +1,14 @@
1
+ import { testComponentSnapshotsWithFixtures } from 'react-redux-test-utils';
2
+ import { noop } from 'patternfly-react';
3
+
4
+ import HostObfuscationSwitcher from '../HostObfuscationSwitcher';
5
+
6
+ const fixtures = {
7
+ 'render with props': { hostObfuscationEnabled: true, handleToggle: noop },
8
+ /** fixtures, props for the component */
9
+ };
10
+
11
+ describe('HostObfuscationSwitcher', () => {
12
+ describe('rendering', () =>
13
+ testComponentSnapshotsWithFixtures(HostObfuscationSwitcher, fixtures));
14
+ });
@@ -0,0 +1,14 @@
1
+ import { testActionSnapshotWithFixtures } from 'react-redux-test-utils';
2
+ import API from 'foremanReact/API';
3
+ import { handleToggle } from '../HostObfuscationSwitcherActions';
4
+ import { handleToggleResponse } from '../HostObfuscationSwitcher.fixtures';
5
+
6
+ jest.mock('foremanReact/API');
7
+ API.post.mockImplementation(async () => handleToggleResponse);
8
+
9
+ const fixtures = {
10
+ 'should handleToggle': () => handleToggle(),
11
+ };
12
+
13
+ describe('HostObfuscationSwitcher actions', () =>
14
+ testActionSnapshotWithFixtures(fixtures));