foreman_rh_cloud 2.0.12 → 2.0.13
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.
- checksums.yaml +4 -4
- data/app/controllers/foreman_inventory_upload/accounts_controller.rb +2 -0
- data/app/controllers/foreman_inventory_upload/uploads_controller.rb +18 -0
- data/app/helpers/foreman_inventory_upload_host_helper.rb +2 -3
- data/app/models/concerns/rh_cloud_host.rb +4 -1
- data/app/models/insights_hit.rb +1 -1
- data/app/models/setting/rh_cloud.rb +2 -0
- data/app/overrides/hosts_list.rb +1 -1
- data/app/services/foreman_rh_cloud/cloud_auth.rb +28 -0
- data/app/views/foreman_rh_cloud/react/insights_cloud.html.erb +1 -6
- data/app/views/foreman_rh_cloud/react/inventory_upload.html.erb +1 -1
- data/app/views/hosts/_insights_tab.html.erb +1 -7
- data/app/views/layouts/foreman_rh_cloud/application.html.erb +0 -1
- data/config/routes.rb +2 -0
- data/db/migrate/20201007115752_add_hits_count_to_insights_facets_table.foreman_rh_cloud.rb +5 -0
- data/db/migrate/20201007121540_setup_hits_count_cache.foreman_rh_cloud.rb +10 -0
- data/lib/foreman_inventory_upload/generators/fact_helpers.rb +35 -0
- data/lib/foreman_inventory_upload/generators/json_stream.rb +7 -2
- data/lib/foreman_inventory_upload/generators/queries.rb +2 -0
- data/lib/foreman_inventory_upload/generators/slice.rb +26 -24
- data/lib/foreman_rh_cloud.rb +2 -1
- data/lib/foreman_rh_cloud/engine.rb +3 -2
- data/lib/foreman_rh_cloud/version.rb +1 -1
- data/lib/insights_cloud/async/insights_full_sync.rb +4 -25
- data/lib/inventory_sync/async/inventory_full_sync.rb +2 -23
- data/package.json +1 -1
- data/test/unit/fact_helpers_test.rb +22 -0
- data/test/unit/insights_facet_test.rb +7 -0
- data/test/unit/slice_generator_test.rb +106 -1
- data/webpack/ForemanInventoryUpload/Components/AccountList/AccountList.fixtures.js +14 -1
- data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListActions.js +22 -18
- data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListReducer.js +16 -0
- data/webpack/ForemanInventoryUpload/Components/AccountList/AccountListSelectors.js +6 -0
- data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListActions.test.js +7 -0
- data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListReducer.test.js +12 -8
- data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/AccountListSelectors.test.js +9 -0
- data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListActions.test.js.snap +19 -0
- data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListReducer.test.js.snap +11 -0
- data/webpack/ForemanInventoryUpload/Components/AccountList/__tests__/__snapshots__/AccountListSelectors.test.js.snap +6 -0
- data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcher.fixtures.js +2 -0
- data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcherActions.js +10 -11
- data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/AutoUploadSwitcherConstants.js +0 -1
- data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/AutoUploadSwitcherActions.test.js +12 -2
- data/webpack/ForemanInventoryUpload/Components/AutoUploadSwitcher/__tests__/__snapshots__/AutoUploadSwitcherActions.test.js.snap +17 -0
- data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/ExcludePackagesSwitcher.fixtures.js +1 -0
- data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/ExcludePackagesSwitcher.js +30 -0
- data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/ExcludePackagesSwitcherActions.js +29 -0
- data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/ExcludePackagesSwitcherConstants.js +1 -0
- data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/__tests__/ExcludePackagesSwitcher.test.js +13 -0
- data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/__tests__/ExcludePackagesSwitcherActions.test.js +21 -0
- data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/__tests__/__snapshots__/ExcludePackagesSwitcher.test.js.snap +38 -0
- data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/__tests__/__snapshots__/ExcludePackagesSwitcherActions.test.js.snap +31 -0
- data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/__tests__/__snapshots__/integration.test.js.snap +41 -0
- data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/__tests__/integration.test.js +36 -0
- data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/excludePackagesSwitcher.scss +3 -0
- data/webpack/ForemanInventoryUpload/Components/ExcludePackagesSwitcher/index.js +20 -0
- data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcher.fixtures.js +2 -1
- data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcher.js +1 -0
- data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcher.scss +3 -0
- data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcherActions.js +10 -11
- data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcherConstants.js +0 -2
- data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/__tests__/HostObfuscationSwitcherActions.test.js +12 -2
- data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/__tests__/__snapshots__/HostObfuscationSwitcherActions.test.js.snap +18 -1
- data/webpack/ForemanInventoryUpload/Components/InventorySettings/InventorySettings.js +4 -0
- data/webpack/ForemanInventoryUpload/Components/InventorySettings/__tests__/__snapshots__/InventorySettings.test.js.snap +2 -0
- data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/IpsObfuscationSwitcher.fixtures.js +1 -0
- data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/IpsObfuscationSwitcher.js +29 -0
- data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/IpsObfuscationSwitcherActions.js +29 -0
- data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/IpsObfuscationSwitcherConstants.js +1 -0
- data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/__tests__/IpsObfuscationSwitcher.test.js +13 -0
- data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/__tests__/IpsObfuscationSwitcherActions.test.js +21 -0
- data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/__tests__/__snapshots__/IpsObfuscationSwitcher.test.js.snap +38 -0
- data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/__tests__/__snapshots__/IpsObfuscationSwitcherActions.test.js.snap +31 -0
- data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/index.js +20 -0
- data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/SyncButton.js +8 -2
- data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/SyncButtonActions.js +9 -11
- data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/SyncButtonConstants.js +1 -1
- data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/SyncButtonReducer.js +2 -2
- data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/__tests__/SyncButtonActions.test.js +18 -0
- data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/__tests__/SyncButtonReducer.test.js +1 -8
- data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/__tests__/__snapshots__/SyncButtonActions.test.js.snap +62 -0
- data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/__tests__/__snapshots__/SyncButtonReducer.test.js.snap +0 -7
- data/webpack/ForemanInventoryUpload/Components/TabHeader/TabHeader.js +6 -1
- data/webpack/ForemanInventoryUpload/Components/Terminal/Terminal.js +2 -4
- data/webpack/ForemanInventoryUpload/ForemanInventoryHelpers.js +8 -0
- data/webpack/InsightsCloudSync/Components/InsightsSettings/InsightsSettingsActions.js +17 -20
- data/webpack/InsightsCloudSync/Components/InsightsSettings/InsightsSettingsConstants.js +0 -6
- data/webpack/InsightsCloudSync/Components/InsightsSettings/InsightsSettingsReducer.js +0 -4
- data/webpack/InsightsCloudSync/Components/InsightsSettings/__tests__/InsightsSettingsActions.test.js +16 -0
- data/webpack/InsightsCloudSync/Components/InsightsSettings/__tests__/InsightsSettingsReducer.test.js +1 -24
- data/webpack/InsightsCloudSync/Components/InsightsSettings/__tests__/__snapshots__/InsightsSettingsActions.test.js.snap +38 -4
- data/webpack/InsightsCloudSync/Components/InsightsSettings/__tests__/__snapshots__/InsightsSettingsReducer.test.js.snap +0 -14
- data/webpack/InsightsCloudSync/InsightsCloudSync.js +2 -4
- data/webpack/InsightsCloudSync/InsightsCloudSync.test.js +1 -3
- data/webpack/InsightsCloudSync/InsightsCloudSyncActions.js +10 -11
- data/webpack/InsightsCloudSync/InsightsCloudSyncConstants.js +0 -2
- data/webpack/InsightsHostDetailsTab/InsightsTab.js +8 -6
- data/webpack/InsightsHostDetailsTab/InsightsTab.scss +1 -1
- data/webpack/InsightsHostDetailsTab/InsightsTabActions.js +9 -8
- data/webpack/InsightsHostDetailsTab/InsightsTabConstants.js +0 -1
- data/webpack/InsightsHostDetailsTab/InsightsTabReducer.js +2 -9
- data/webpack/InsightsHostDetailsTab/__tests__/InsightsTabActions.test.js +7 -1
- data/webpack/InsightsHostDetailsTab/__tests__/InsightsTabReducer.test.js +0 -9
- data/webpack/InsightsHostDetailsTab/__tests__/__snapshots__/InsightsTab.test.js.snap +26 -22
- data/webpack/InsightsHostDetailsTab/__tests__/__snapshots__/InsightsTabActions.test.js.snap +40 -2
- data/webpack/InsightsHostDetailsTab/__tests__/__snapshots__/InsightsTabReducer.test.js.snap +0 -7
- metadata +39 -15
- data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/hostObfuscationSwitcher.scss +0 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { bindActionCreators } from 'redux';
|
|
2
|
+
import { connect } from 'react-redux';
|
|
3
|
+
|
|
4
|
+
import * as actions from './ExcludePackagesSwitcherActions';
|
|
5
|
+
import ExcludePackagesSwitcher from './ExcludePackagesSwitcher';
|
|
6
|
+
import { selectExcludePackages } from '../AccountList/AccountListSelectors';
|
|
7
|
+
|
|
8
|
+
// map state to props
|
|
9
|
+
const mapStateToProps = state => ({
|
|
10
|
+
excludePackages: selectExcludePackages(state),
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
// map action dispatchers to props
|
|
14
|
+
const mapDispatchToProps = dispatch => bindActionCreators(actions, dispatch);
|
|
15
|
+
|
|
16
|
+
// export connected component
|
|
17
|
+
export default connect(
|
|
18
|
+
mapStateToProps,
|
|
19
|
+
mapDispatchToProps
|
|
20
|
+
)(ExcludePackagesSwitcher);
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export const
|
|
1
|
+
export const currentHostObfuscationEnabled = false;
|
|
2
|
+
export const handleToggleResponse = { data: { hostObfuscationEnabled: true } };
|
data/webpack/ForemanInventoryUpload/Components/HostObfuscationSwitcher/HostObfuscationSwitcher.js
CHANGED
|
@@ -2,6 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import { Switch, FieldLevelHelp } from 'patternfly-react';
|
|
4
4
|
import { translate as __ } from 'foremanReact/common/I18n';
|
|
5
|
+
import './HostObfuscationSwitcher.scss';
|
|
5
6
|
|
|
6
7
|
const HostObfuscationSwitcher = ({ hostObfuscationEnabled, handleToggle }) => (
|
|
7
8
|
<div className="host_obfuscation_switcher">
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import API from 'foremanReact/API';
|
|
2
|
+
import { addToast } from 'foremanReact/redux/actions/toasts';
|
|
2
3
|
import { inventoryUrl } from '../../ForemanInventoryHelpers';
|
|
3
|
-
import {
|
|
4
|
-
HOST_OBFUSCATION_TOGGLE,
|
|
5
|
-
HOST_OBFUSCATION_TOGGLE_ERROR,
|
|
6
|
-
} from './HostObfuscationSwitcherConstants';
|
|
4
|
+
import { HOST_OBFUSCATION_TOGGLE } from './HostObfuscationSwitcherConstants';
|
|
7
5
|
|
|
8
6
|
export const handleToggle = currentHostObfuscationEnabled => async dispatch => {
|
|
9
7
|
const toggledHostObfuscationEnabled = !currentHostObfuscationEnabled;
|
|
@@ -19,12 +17,13 @@ export const handleToggle = currentHostObfuscationEnabled => async dispatch => {
|
|
|
19
17
|
hostObfuscationEnabled,
|
|
20
18
|
},
|
|
21
19
|
});
|
|
22
|
-
} catch (
|
|
23
|
-
dispatch(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
20
|
+
} catch ({ message }) {
|
|
21
|
+
dispatch(
|
|
22
|
+
addToast({
|
|
23
|
+
sticky: true,
|
|
24
|
+
type: 'error',
|
|
25
|
+
message,
|
|
26
|
+
})
|
|
27
|
+
);
|
|
29
28
|
}
|
|
30
29
|
};
|
|
@@ -1,13 +1,23 @@
|
|
|
1
1
|
import { testActionSnapshotWithFixtures } from '@theforeman/test';
|
|
2
2
|
import API from 'foremanReact/API';
|
|
3
3
|
import { handleToggle } from '../HostObfuscationSwitcherActions';
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
handleToggleResponse,
|
|
6
|
+
currentHostObfuscationEnabled,
|
|
7
|
+
} from '../HostObfuscationSwitcher.fixtures';
|
|
5
8
|
|
|
6
9
|
jest.mock('foremanReact/API');
|
|
7
10
|
API.post.mockImplementation(async () => handleToggleResponse);
|
|
8
11
|
|
|
9
12
|
const fixtures = {
|
|
10
|
-
'should handleToggle': () => handleToggle(),
|
|
13
|
+
'should handleToggle': () => handleToggle(currentHostObfuscationEnabled),
|
|
14
|
+
'should handleToggle with error': () => {
|
|
15
|
+
API.post.mockImplementationOnce(() =>
|
|
16
|
+
Promise.reject(new Error('Network error!'))
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
return handleToggle(currentHostObfuscationEnabled);
|
|
20
|
+
},
|
|
11
21
|
};
|
|
12
22
|
|
|
13
23
|
describe('HostObfuscationSwitcher actions', () =>
|
|
@@ -5,10 +5,27 @@ Array [
|
|
|
5
5
|
Array [
|
|
6
6
|
Object {
|
|
7
7
|
"payload": Object {
|
|
8
|
-
"hostObfuscationEnabled":
|
|
8
|
+
"hostObfuscationEnabled": true,
|
|
9
9
|
},
|
|
10
10
|
"type": "HOST_OBFUSCATION_TOGGLE",
|
|
11
11
|
},
|
|
12
12
|
],
|
|
13
13
|
]
|
|
14
14
|
`;
|
|
15
|
+
|
|
16
|
+
exports[`HostObfuscationSwitcher actions should handleToggle with error 1`] = `
|
|
17
|
+
Array [
|
|
18
|
+
Array [
|
|
19
|
+
Object {
|
|
20
|
+
"payload": Object {
|
|
21
|
+
"message": Object {
|
|
22
|
+
"message": "Network error!",
|
|
23
|
+
"sticky": true,
|
|
24
|
+
"type": "error",
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
"type": "TOASTS_ADD",
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
]
|
|
31
|
+
`;
|
|
@@ -2,13 +2,17 @@ import React from 'react';
|
|
|
2
2
|
import { translate as __ } from 'foremanReact/common/I18n';
|
|
3
3
|
import AutoUploadSwitcher from '../AutoUploadSwitcher';
|
|
4
4
|
import HostObfuscationSwitcher from '../HostObfuscationSwitcher';
|
|
5
|
+
import ExcludePackagesSwitcher from '../ExcludePackagesSwitcher';
|
|
6
|
+
import IpsObfuscationSwitcher from '../IpsObfuscationSwitcher';
|
|
5
7
|
import './inventorySettings.scss';
|
|
6
8
|
|
|
7
9
|
const InventorySettings = () => (
|
|
8
10
|
<div className="inventory_settings">
|
|
9
11
|
<h3>{__('Settings')}</h3>
|
|
10
12
|
<AutoUploadSwitcher />
|
|
13
|
+
<ExcludePackagesSwitcher />
|
|
11
14
|
<HostObfuscationSwitcher />
|
|
15
|
+
<IpsObfuscationSwitcher />
|
|
12
16
|
</div>
|
|
13
17
|
);
|
|
14
18
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const handleToggleResponse = { data: { ipsObfuscationEnabled: true } };
|
data/webpack/ForemanInventoryUpload/Components/IpsObfuscationSwitcher/IpsObfuscationSwitcher.js
ADDED
|
@@ -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 IpsObfuscationSwitcher = ({ ipsObfuscationEnabled, handleToggle }) => (
|
|
7
|
+
<div className="ips_obfuscation_switcher">
|
|
8
|
+
<span>Obfuscate host ipv4 addresses</span>
|
|
9
|
+
<FieldLevelHelp
|
|
10
|
+
content={__('Obfuscate ipv4 addresses sent to the Red Hat cloud')}
|
|
11
|
+
/>
|
|
12
|
+
<Switch
|
|
13
|
+
size="mini"
|
|
14
|
+
value={ipsObfuscationEnabled}
|
|
15
|
+
onChange={() => handleToggle(ipsObfuscationEnabled)}
|
|
16
|
+
/>
|
|
17
|
+
</div>
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
IpsObfuscationSwitcher.propTypes = {
|
|
21
|
+
ipsObfuscationEnabled: PropTypes.bool,
|
|
22
|
+
handleToggle: PropTypes.func.isRequired,
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
IpsObfuscationSwitcher.defaultProps = {
|
|
26
|
+
ipsObfuscationEnabled: false,
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export default IpsObfuscationSwitcher;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import API from 'foremanReact/API';
|
|
2
|
+
import { addToast } from 'foremanReact/redux/actions/toasts';
|
|
3
|
+
import { inventoryUrl } from '../../ForemanInventoryHelpers';
|
|
4
|
+
import { IPS_OBFUSCATION_TOGGLE } from './IpsObfuscationSwitcherConstants';
|
|
5
|
+
|
|
6
|
+
export const handleToggle = currentIpsObfuscationEnabled => async dispatch => {
|
|
7
|
+
const toggledIpsObfuscationEnabled = !currentIpsObfuscationEnabled;
|
|
8
|
+
try {
|
|
9
|
+
const {
|
|
10
|
+
data: { ipsObfuscationEnabled },
|
|
11
|
+
} = await API.post(inventoryUrl('ips_obfuscation'), {
|
|
12
|
+
value: toggledIpsObfuscationEnabled,
|
|
13
|
+
});
|
|
14
|
+
dispatch({
|
|
15
|
+
type: IPS_OBFUSCATION_TOGGLE,
|
|
16
|
+
payload: {
|
|
17
|
+
ipsObfuscationEnabled,
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
} catch (error) {
|
|
21
|
+
dispatch(
|
|
22
|
+
addToast({
|
|
23
|
+
sticky: true,
|
|
24
|
+
type: 'error',
|
|
25
|
+
message: error.message,
|
|
26
|
+
})
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const IPS_OBFUSCATION_TOGGLE = 'IPS_OBFUSCATION_TOGGLE';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { testComponentSnapshotsWithFixtures } from '@theforeman/test';
|
|
2
|
+
import { noop } from 'patternfly-react';
|
|
3
|
+
|
|
4
|
+
import IpsObfuscationSwitcher from '../IpsObfuscationSwitcher';
|
|
5
|
+
|
|
6
|
+
const fixtures = {
|
|
7
|
+
'render with props': { ipsObfuscationEnabled: true, handleToggle: noop },
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
describe('IpsObfuscationSwitcher', () => {
|
|
11
|
+
describe('rendering', () =>
|
|
12
|
+
testComponentSnapshotsWithFixtures(IpsObfuscationSwitcher, fixtures));
|
|
13
|
+
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { testActionSnapshotWithFixtures } from '@theforeman/test';
|
|
2
|
+
import API from 'foremanReact/API';
|
|
3
|
+
import { handleToggle } from '../IpsObfuscationSwitcherActions';
|
|
4
|
+
import { handleToggleResponse } from '../IpsObfuscationSwitcher.fixtures';
|
|
5
|
+
|
|
6
|
+
jest.mock('foremanReact/API');
|
|
7
|
+
API.post.mockImplementation(async () => handleToggleResponse);
|
|
8
|
+
|
|
9
|
+
const fixtures = {
|
|
10
|
+
'should handleToggle': () => handleToggle(false),
|
|
11
|
+
'should handleError': () => {
|
|
12
|
+
API.post.mockImplementationOnce(() =>
|
|
13
|
+
Promise.reject(new Error('test error'))
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
return handleToggle(false);
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
describe('IpsObfuscationSwitcher actions', () =>
|
|
21
|
+
testActionSnapshotWithFixtures(fixtures));
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`IpsObfuscationSwitcher rendering render with props 1`] = `
|
|
4
|
+
<div
|
|
5
|
+
className="ips_obfuscation_switcher"
|
|
6
|
+
>
|
|
7
|
+
<span>
|
|
8
|
+
Obfuscate host ipv4 addresses
|
|
9
|
+
</span>
|
|
10
|
+
<FieldLevelHelp
|
|
11
|
+
buttonClass=""
|
|
12
|
+
content="Obfuscate ipv4 addresses sent to the Red Hat cloud"
|
|
13
|
+
placement="top"
|
|
14
|
+
rootClose={true}
|
|
15
|
+
/>
|
|
16
|
+
<Switch
|
|
17
|
+
animate={true}
|
|
18
|
+
baseClass="bootstrap-switch"
|
|
19
|
+
bsSize={null}
|
|
20
|
+
defaultValue={true}
|
|
21
|
+
disabled={false}
|
|
22
|
+
handleWidth="auto"
|
|
23
|
+
inverse={false}
|
|
24
|
+
labelText=" "
|
|
25
|
+
labelWidth="auto"
|
|
26
|
+
offColor="default"
|
|
27
|
+
offText="OFF"
|
|
28
|
+
onChange={[Function]}
|
|
29
|
+
onColor="primary"
|
|
30
|
+
onText="ON"
|
|
31
|
+
readonly={false}
|
|
32
|
+
size="mini"
|
|
33
|
+
tristate={false}
|
|
34
|
+
value={true}
|
|
35
|
+
wrapperClass="wrapper"
|
|
36
|
+
/>
|
|
37
|
+
</div>
|
|
38
|
+
`;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`IpsObfuscationSwitcher actions should handleError 1`] = `
|
|
4
|
+
Array [
|
|
5
|
+
Array [
|
|
6
|
+
Object {
|
|
7
|
+
"payload": Object {
|
|
8
|
+
"message": Object {
|
|
9
|
+
"message": "test error",
|
|
10
|
+
"sticky": true,
|
|
11
|
+
"type": "error",
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
"type": "TOASTS_ADD",
|
|
15
|
+
},
|
|
16
|
+
],
|
|
17
|
+
]
|
|
18
|
+
`;
|
|
19
|
+
|
|
20
|
+
exports[`IpsObfuscationSwitcher actions should handleToggle 1`] = `
|
|
21
|
+
Array [
|
|
22
|
+
Array [
|
|
23
|
+
Object {
|
|
24
|
+
"payload": Object {
|
|
25
|
+
"ipsObfuscationEnabled": true,
|
|
26
|
+
},
|
|
27
|
+
"type": "IPS_OBFUSCATION_TOGGLE",
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
]
|
|
31
|
+
`;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { bindActionCreators } from 'redux';
|
|
2
|
+
import { connect } from 'react-redux';
|
|
3
|
+
|
|
4
|
+
import * as actions from './IpsObfuscationSwitcherActions';
|
|
5
|
+
import IpsObfuscationSwitcher from './IpsObfuscationSwitcher';
|
|
6
|
+
import { selectIpsObfuscationEnabled } from '../AccountList/AccountListSelectors';
|
|
7
|
+
|
|
8
|
+
// map state to props
|
|
9
|
+
const mapStateToProps = state => ({
|
|
10
|
+
ipsObfuscationEnabled: selectIpsObfuscationEnabled(state),
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
// map action dispatchers to props
|
|
14
|
+
const mapDispatchToProps = dispatch => bindActionCreators(actions, dispatch);
|
|
15
|
+
|
|
16
|
+
// export connected component
|
|
17
|
+
export default connect(
|
|
18
|
+
mapStateToProps,
|
|
19
|
+
mapDispatchToProps
|
|
20
|
+
)(IpsObfuscationSwitcher);
|
data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/SyncButton.js
CHANGED
|
@@ -21,7 +21,12 @@ class SyncButton extends React.Component {
|
|
|
21
21
|
return (
|
|
22
22
|
<React.Fragment>
|
|
23
23
|
<SyncModal show={this.state.showModal} toggleModal={this.toggleModal} />
|
|
24
|
-
<Button
|
|
24
|
+
<Button
|
|
25
|
+
className="sync_button"
|
|
26
|
+
onClick={handleClick}
|
|
27
|
+
bsSize="lg"
|
|
28
|
+
disabled={status === STATUS.PENDING}
|
|
29
|
+
>
|
|
25
30
|
{!cloudToken && (
|
|
26
31
|
<span>
|
|
27
32
|
<Icon name="warning" />{' '}
|
|
@@ -40,12 +45,13 @@ class SyncButton extends React.Component {
|
|
|
40
45
|
}
|
|
41
46
|
|
|
42
47
|
SyncButton.propTypes = {
|
|
43
|
-
cloudToken: PropTypes.string
|
|
48
|
+
cloudToken: PropTypes.string,
|
|
44
49
|
handleSync: PropTypes.func.isRequired,
|
|
45
50
|
status: PropTypes.string,
|
|
46
51
|
};
|
|
47
52
|
|
|
48
53
|
SyncButton.defaultProps = {
|
|
54
|
+
cloudToken: null,
|
|
49
55
|
status: null,
|
|
50
56
|
};
|
|
51
57
|
|
data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/SyncButtonActions.js
CHANGED
|
@@ -6,7 +6,7 @@ import Toast from './components/Toast';
|
|
|
6
6
|
import {
|
|
7
7
|
INVENTORY_SYNC_REQUEST,
|
|
8
8
|
INVENTORY_SYNC_SUCCESS,
|
|
9
|
-
|
|
9
|
+
INVENTORY_SYNC_ERROR,
|
|
10
10
|
} from './SyncButtonConstants';
|
|
11
11
|
|
|
12
12
|
export const handleSync = () => async dispatch => {
|
|
@@ -40,20 +40,18 @@ export const handleSync = () => async dispatch => {
|
|
|
40
40
|
response: { data: { message: toastMessage } = {} } = {},
|
|
41
41
|
}) {
|
|
42
42
|
dispatch({
|
|
43
|
-
type:
|
|
43
|
+
type: INVENTORY_SYNC_ERROR,
|
|
44
44
|
payload: {
|
|
45
45
|
error: message,
|
|
46
46
|
},
|
|
47
47
|
});
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
);
|
|
57
|
-
}
|
|
49
|
+
dispatch(
|
|
50
|
+
addToast({
|
|
51
|
+
sticky: true,
|
|
52
|
+
type: 'error',
|
|
53
|
+
message: toastMessage || message,
|
|
54
|
+
})
|
|
55
|
+
);
|
|
58
56
|
}
|
|
59
57
|
};
|
data/webpack/ForemanInventoryUpload/Components/PageHeader/components/SyncButton/SyncButtonReducer.js
CHANGED
|
@@ -3,7 +3,7 @@ import { STATUS } from 'foremanReact/constants';
|
|
|
3
3
|
import {
|
|
4
4
|
INVENTORY_SYNC_REQUEST,
|
|
5
5
|
INVENTORY_SYNC_SUCCESS,
|
|
6
|
-
|
|
6
|
+
INVENTORY_SYNC_ERROR,
|
|
7
7
|
} from './SyncButtonConstants';
|
|
8
8
|
|
|
9
9
|
export default (
|
|
@@ -24,7 +24,7 @@ export default (
|
|
|
24
24
|
syncHosts,
|
|
25
25
|
disconnectHosts,
|
|
26
26
|
});
|
|
27
|
-
case
|
|
27
|
+
case INVENTORY_SYNC_ERROR:
|
|
28
28
|
return state.merge({
|
|
29
29
|
...state,
|
|
30
30
|
status: STATUS.ERROR,
|