foreman_discovery 16.3.6 → 17.0.3
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/api/v2/discovered_hosts_controller.rb +1 -0
- data/app/controllers/discovered_hosts_controller.rb +24 -35
- data/app/controllers/discovery_rules_controller.rb +12 -1
- data/app/helpers/discovered_hosts_helper.rb +3 -4
- data/app/helpers/discovery_rules_helper.rb +1 -0
- data/app/models/discovery_rule.rb +10 -5
- data/app/services/foreman_discovery/fact_to_category_resolver.rb +106 -0
- data/app/services/foreman_discovery/ui_notifications/failed_discovery.rb +34 -0
- data/app/services/foreman_discovery/ui_notifications/new_host.rb +2 -1
- data/app/views/discovered_hosts/_discovered_hosts_list.html.erb +44 -40
- data/app/views/discovered_hosts/welcome.html.erb +1 -1
- data/app/views/discovery_rules/clone.erb +3 -0
- data/app/views/discovery_rules/index.html.erb +4 -0
- data/app/views/discovery_rules/welcome.html.erb +15 -0
- data/config/routes.rb +2 -0
- data/db/seeds.d/80_discovery_ui_notification.rb +11 -5
- data/lib/foreman_discovery/engine.rb +3 -7
- data/lib/foreman_discovery/version.rb +1 -1
- data/locale/ca/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ca/foreman_discovery.edit.po +44 -40
- data/locale/ca/foreman_discovery.po +36 -9
- data/locale/de/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/de/foreman_discovery.edit.po +42 -38
- data/locale/de/foreman_discovery.po +45 -18
- data/locale/en/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/en/foreman_discovery.edit.po +37 -29
- data/locale/en/foreman_discovery.po +31 -4
- data/locale/en_GB/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/en_GB/foreman_discovery.edit.po +39 -35
- data/locale/en_GB/foreman_discovery.po +36 -9
- data/locale/es/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/es/foreman_discovery.edit.po +42 -38
- data/locale/es/foreman_discovery.po +70 -41
- data/locale/foreman_discovery.pot +142 -97
- data/locale/fr/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/fr/foreman_discovery.edit.po +88 -84
- data/locale/fr/foreman_discovery.po +76 -49
- data/locale/gl/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/gl/foreman_discovery.edit.po +42 -38
- data/locale/gl/foreman_discovery.po +32 -5
- data/locale/it/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/it/foreman_discovery.edit.po +42 -38
- data/locale/it/foreman_discovery.po +44 -17
- data/locale/ja/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ja/foreman_discovery.edit.po +74 -70
- data/locale/ja/foreman_discovery.po +79 -54
- data/locale/ko/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ko/foreman_discovery.edit.po +42 -38
- data/locale/ko/foreman_discovery.po +43 -16
- data/locale/pt_BR/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/pt_BR/foreman_discovery.edit.po +42 -38
- data/locale/pt_BR/foreman_discovery.po +69 -39
- data/locale/ru/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/ru/foreman_discovery.edit.po +46 -42
- data/locale/ru/foreman_discovery.po +43 -16
- data/locale/sv_SE/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/sv_SE/foreman_discovery.edit.po +42 -38
- data/locale/sv_SE/foreman_discovery.po +34 -7
- data/locale/zh_CN/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/zh_CN/foreman_discovery.edit.po +90 -86
- data/locale/zh_CN/foreman_discovery.po +114 -90
- data/locale/zh_TW/LC_MESSAGES/foreman_discovery.mo +0 -0
- data/locale/zh_TW/foreman_discovery.edit.po +42 -38
- data/locale/zh_TW/foreman_discovery.po +43 -16
- data/package.json +6 -6
- data/test/functional/api/v2/discovered_hosts_controller_test.rb +9 -0
- data/test/functional/discovery_rules_controller_test.rb +6 -1
- data/test/integration/discovered_hosts_test.rb +53 -5
- data/test/test_helper_discovery.rb +5 -0
- data/test/unit/discovery_rule_test.rb +24 -2
- data/test/unit/fact_to_category_resolver_test.rb +41 -0
- data/test/unit/ui_notifications/destroy_host_test.rb +2 -9
- data/test/unit/ui_notifications/new_host_test.rb +3 -3
- data/webpack/__mocks__/foremanReact/common/I18n.js +3 -0
- data/webpack/__mocks__/foremanReact/common/helpers.js +1 -0
- data/webpack/__mocks__/foremanReact/common/index.js +5 -0
- data/webpack/__mocks__/foremanReact/components/common/EmptyState/DefaultEmptyState.js +69 -0
- data/webpack/__mocks__/foremanReact/components/common/EmptyState/EmptyStatePattern.js +77 -0
- data/webpack/__mocks__/foremanReact/components/common/EmptyState/EmptyStatePropTypes.js +29 -0
- data/webpack/__mocks__/foremanReact/components/common/EmptyState/index.js +5 -0
- data/webpack/index.js +9 -8
- data/webpack/src/ForemanDiscovery/DiscoveredHosts/Components/EmptyState/EmptyState.js +7 -7
- data/webpack/src/ForemanDiscovery/DiscoveredHosts/Components/EmptyState/__test__/EmptyState.test.js +12 -0
- data/webpack/src/ForemanDiscovery/DiscoveredHosts/Components/EmptyState/__test__/__snapshots__/EmptyState.test.js.snap +16 -0
- data/webpack/src/ForemanDiscovery/DiscoveredHosts/Components/EmptyState/index.js +1 -1
- data/webpack/src/ForemanDiscovery/DiscoveredHosts/index.js +3 -3
- data/webpack/src/ForemanDiscovery/DiscoveryRules/Components/EmptyState/EmptyState.js +34 -0
- data/webpack/src/ForemanDiscovery/DiscoveryRules/Components/EmptyState/index.js +1 -0
- data/webpack/src/ForemanDiscovery/DiscoveryRules/Components/__test__/EmptyState.test.js +19 -0
- data/webpack/src/ForemanDiscovery/DiscoveryRules/Components/__test__/__snapshots__/EmptyState.test.js.snap +22 -0
- data/webpack/src/ForemanDiscovery/DiscoveryRules/index.js +6 -0
- data/webpack/src/reducers.js +0 -2
- metadata +31 -9
@@ -21,13 +21,6 @@ class DestroyHostNotificationTest < ActiveSupport::TestCase
|
|
21
21
|
ForemanDiscovery::UINotifications::NewHost.deliver!(host)
|
22
22
|
end
|
23
23
|
assert_equal 1, blueprint.notifications.count
|
24
|
-
assert_no_difference('blueprint.notifications.count') do
|
25
|
-
host = FactoryBot.create(:discovered_host)
|
26
|
-
ForemanDiscovery::UINotifications::NewHost.deliver!(host)
|
27
|
-
end
|
28
|
-
assert_no_difference('blueprint.notifications.count') do
|
29
|
-
Host::Discovered.all.last.destroy
|
30
|
-
end
|
31
24
|
Host::Discovered.destroy_all
|
32
25
|
assert_equal 0, blueprint.notifications.count
|
33
26
|
end
|
@@ -55,9 +48,9 @@ class DestroyHostNotificationTest < ActiveSupport::TestCase
|
|
55
48
|
ForemanDiscovery::UINotifications::NewHost.deliver!(host1)
|
56
49
|
host2 = FactoryBot.create(:discovered_host)
|
57
50
|
ForemanDiscovery::UINotifications::NewHost.deliver!(host2)
|
58
|
-
assert_equal
|
51
|
+
assert_equal 2, blueprint.notifications.count
|
59
52
|
new_host = ::ForemanDiscovery::HostConverter.to_managed(host1, false, false)
|
60
53
|
assert new_host.save!
|
61
|
-
assert_equal
|
54
|
+
assert_equal 2, blueprint.notifications.count
|
62
55
|
end
|
63
56
|
end
|
@@ -16,14 +16,14 @@ class NewHostNotificationTest < ActiveSupport::TestCase
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
-
test 'multiple discovered hosts should generate
|
19
|
+
test 'multiple discovered hosts should generate multiple notifications' do
|
20
20
|
host1 = FactoryBot.create :discovered_host
|
21
21
|
ForemanDiscovery::UINotifications::NewHost.deliver!(host1)
|
22
22
|
expired_at = blueprint.notifications.first.expired_at
|
23
23
|
Time.any_instance.stubs(:utc).returns(expired_at + 1.hour)
|
24
24
|
host2 = FactoryBot.create :discovered_host
|
25
25
|
ForemanDiscovery::UINotifications::NewHost.deliver!(host2)
|
26
|
-
assert_equal
|
27
|
-
assert_not_equal expired_at, blueprint.notifications.
|
26
|
+
assert_equal 2, blueprint.notifications.count
|
27
|
+
assert_not_equal expired_at, blueprint.notifications.last.expired_at
|
28
28
|
end
|
29
29
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
export const foremanUrl = path => `${window.URL_PREFIX}${path}`;
|
@@ -0,0 +1,69 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { useDispatch } from 'react-redux';
|
3
|
+
import { push } from 'connected-react-router';
|
4
|
+
import { Button } from '@patternfly/react-core';
|
5
|
+
import EmptyStatePattern from './EmptyStatePattern';
|
6
|
+
import { defaultEmptyStatePropTypes } from './EmptyStatePropTypes';
|
7
|
+
|
8
|
+
const DefaultEmptyState = props => {
|
9
|
+
const {
|
10
|
+
icon,
|
11
|
+
iconType,
|
12
|
+
header,
|
13
|
+
description,
|
14
|
+
documentation,
|
15
|
+
action,
|
16
|
+
secondaryActions,
|
17
|
+
} = props;
|
18
|
+
|
19
|
+
const dispatch = useDispatch();
|
20
|
+
const actionButtonClickHandler = ({ url, onClick }) => {
|
21
|
+
if (onClick) onClick();
|
22
|
+
else if (url) dispatch(push(url));
|
23
|
+
};
|
24
|
+
|
25
|
+
const ActionButton = action ? (
|
26
|
+
<Button
|
27
|
+
component="a"
|
28
|
+
onClick={() => actionButtonClickHandler(action)}
|
29
|
+
variant="primary"
|
30
|
+
>
|
31
|
+
{action.title}
|
32
|
+
</Button>
|
33
|
+
) : null;
|
34
|
+
|
35
|
+
const SecondaryButton = secondaryActions
|
36
|
+
? secondaryActions.map(({ title, url, onClick }) => (
|
37
|
+
<Button
|
38
|
+
component="a"
|
39
|
+
key={`sec-button-${title}`}
|
40
|
+
onClick={() => actionButtonClickHandler({ url, onClick })}
|
41
|
+
variant="secondary"
|
42
|
+
>
|
43
|
+
{title}
|
44
|
+
</Button>
|
45
|
+
))
|
46
|
+
: null;
|
47
|
+
|
48
|
+
return (
|
49
|
+
<EmptyStatePattern
|
50
|
+
icon={icon}
|
51
|
+
iconType={iconType}
|
52
|
+
header={header}
|
53
|
+
description={description}
|
54
|
+
documentation={documentation}
|
55
|
+
action={ActionButton}
|
56
|
+
secondaryActions={SecondaryButton}
|
57
|
+
/>
|
58
|
+
);
|
59
|
+
};
|
60
|
+
|
61
|
+
DefaultEmptyState.propTypes = defaultEmptyStatePropTypes;
|
62
|
+
|
63
|
+
DefaultEmptyState.defaultProps = {
|
64
|
+
icon: 'add-circle-o',
|
65
|
+
secondaryActions: [],
|
66
|
+
iconType: 'pf',
|
67
|
+
};
|
68
|
+
|
69
|
+
export default DefaultEmptyState;
|
@@ -0,0 +1,77 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { Icon } from 'patternfly-react';
|
3
|
+
import {
|
4
|
+
Title,
|
5
|
+
EmptyState,
|
6
|
+
EmptyStateVariant,
|
7
|
+
EmptyStateBody,
|
8
|
+
EmptyStateSecondaryActions,
|
9
|
+
} from '@patternfly/react-core';
|
10
|
+
import { emptyStatePatternPropTypes } from './EmptyStatePropTypes';
|
11
|
+
import { translate as __ } from '../../../common/I18n';
|
12
|
+
|
13
|
+
const EmptyStatePattern = props => {
|
14
|
+
const {
|
15
|
+
documentation,
|
16
|
+
action,
|
17
|
+
secondaryActions,
|
18
|
+
iconType,
|
19
|
+
icon,
|
20
|
+
header,
|
21
|
+
description,
|
22
|
+
} = props;
|
23
|
+
|
24
|
+
const DocumentationBlock = () => {
|
25
|
+
if (!documentation) {
|
26
|
+
return null;
|
27
|
+
}
|
28
|
+
// The documentation prop can also be a customized node
|
29
|
+
if (React.isValidElement(documentation)) {
|
30
|
+
return documentation;
|
31
|
+
}
|
32
|
+
const {
|
33
|
+
label = __('For more information please see '), // eslint-disable-line react/prop-types
|
34
|
+
buttonLabel = __('documentation'), // eslint-disable-line react/prop-types
|
35
|
+
url, // eslint-disable-line react/prop-types
|
36
|
+
} = documentation;
|
37
|
+
return (
|
38
|
+
<span>
|
39
|
+
{label}
|
40
|
+
<a href={url}>{buttonLabel}</a>
|
41
|
+
</span>
|
42
|
+
);
|
43
|
+
};
|
44
|
+
|
45
|
+
return (
|
46
|
+
<EmptyState variant={EmptyStateVariant.xl}>
|
47
|
+
<span className="empty-state-icon">
|
48
|
+
{/* TODO: Add pf4 icons, Redmine issue: #30865 */}
|
49
|
+
<Icon name={icon} type={iconType} size="2x" />
|
50
|
+
</span>
|
51
|
+
<Title headingLevel="h5" size="4xl">
|
52
|
+
{header}
|
53
|
+
</Title>
|
54
|
+
<EmptyStateBody>
|
55
|
+
<div className="empty-state-description">{description}</div>
|
56
|
+
<DocumentationBlock />
|
57
|
+
</EmptyStateBody>
|
58
|
+
{action}
|
59
|
+
<EmptyStateSecondaryActions>
|
60
|
+
{secondaryActions}
|
61
|
+
</EmptyStateSecondaryActions>
|
62
|
+
</EmptyState>
|
63
|
+
);
|
64
|
+
};
|
65
|
+
|
66
|
+
EmptyStatePattern.propTypes = emptyStatePatternPropTypes;
|
67
|
+
|
68
|
+
EmptyStatePattern.defaultProps = {
|
69
|
+
icon: 'add-circle-o',
|
70
|
+
secondaryActions: [],
|
71
|
+
documentation: {
|
72
|
+
url: '#',
|
73
|
+
},
|
74
|
+
iconType: 'pf',
|
75
|
+
};
|
76
|
+
|
77
|
+
export default EmptyStatePattern;
|
@@ -0,0 +1,29 @@
|
|
1
|
+
import PropTypes from 'prop-types';
|
2
|
+
|
3
|
+
export const actionButtonPropTypes = {
|
4
|
+
title: PropTypes.node.isRequired,
|
5
|
+
url: PropTypes.string,
|
6
|
+
onChange: PropTypes.func,
|
7
|
+
};
|
8
|
+
|
9
|
+
export const emptyStatePatternPropTypes = {
|
10
|
+
icon: PropTypes.string.isRequired,
|
11
|
+
header: PropTypes.string.isRequired,
|
12
|
+
documentation: PropTypes.oneOfType([
|
13
|
+
PropTypes.shape({
|
14
|
+
label: PropTypes.string,
|
15
|
+
buttonLabel: PropTypes.string,
|
16
|
+
url: PropTypes.string.isRequired,
|
17
|
+
}),
|
18
|
+
PropTypes.node,
|
19
|
+
]),
|
20
|
+
description: PropTypes.string.isRequired,
|
21
|
+
action: PropTypes.node,
|
22
|
+
secondaryActions: PropTypes.node,
|
23
|
+
};
|
24
|
+
|
25
|
+
export const defaultEmptyStatePropTypes = {
|
26
|
+
...emptyStatePatternPropTypes,
|
27
|
+
action: PropTypes.shape(actionButtonPropTypes),
|
28
|
+
secondaryActions: PropTypes.arrayOf(PropTypes.shape(actionButtonPropTypes)),
|
29
|
+
};
|
data/webpack/index.js
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
/* eslint import/no-unresolved: [2, { ignore: [foremanReact/*] }] */
|
2
2
|
/* eslint-disable import/no-extraneous-dependencies */
|
3
3
|
/* eslint-disable import/extensions */
|
4
|
-
import componentRegistry from
|
5
|
-
import { registerReducer } from
|
6
|
-
import reducers from
|
7
|
-
import DiscoveredHosts from
|
4
|
+
import componentRegistry from 'foremanReact/components/componentRegistry';
|
5
|
+
import { registerReducer } from 'foremanReact/common/MountingService';
|
6
|
+
import reducers from './src/reducers';
|
7
|
+
import DiscoveredHosts from './src/ForemanDiscovery/DiscoveredHosts';
|
8
|
+
import DiscoveryRules from './src/ForemanDiscovery/DiscoveryRules';
|
8
9
|
|
9
10
|
// register reducers
|
10
11
|
Object.entries(reducers).forEach(([key, reducer]) =>
|
@@ -12,7 +13,7 @@ Object.entries(reducers).forEach(([key, reducer]) =>
|
|
12
13
|
);
|
13
14
|
|
14
15
|
// register components for erb mounting
|
15
|
-
componentRegistry.
|
16
|
-
name:
|
17
|
-
type:
|
18
|
-
|
16
|
+
componentRegistry.registerMultiple([
|
17
|
+
{ name: 'DiscoveredHosts', type: DiscoveredHosts },
|
18
|
+
{ name: 'DiscoveryRules', type: DiscoveryRules },
|
19
|
+
]);
|
@@ -1,11 +1,11 @@
|
|
1
|
-
import React from
|
2
|
-
import PropTypes from
|
3
|
-
import { translate as __ } from
|
4
|
-
import ForemanEmptyState from
|
1
|
+
import React from 'react';
|
2
|
+
import PropTypes from 'prop-types';
|
3
|
+
import { translate as __ } from 'foremanReact/common/I18n';
|
4
|
+
import ForemanEmptyState from 'foremanReact/components/common/EmptyState';
|
5
5
|
|
6
|
-
const EmptyState =
|
6
|
+
const EmptyState = props => {
|
7
7
|
const description = __(
|
8
|
-
|
8
|
+
'No discovered hosts found in this context. This page shows discovered bare-metal or virtual nodes waiting to be provisioned.'
|
9
9
|
);
|
10
10
|
const documentation = {
|
11
11
|
url: props.docUrl,
|
@@ -22,7 +22,7 @@ const EmptyState = (props) => {
|
|
22
22
|
};
|
23
23
|
|
24
24
|
EmptyState.propTypes = {
|
25
|
-
docUrl: PropTypes.string,
|
25
|
+
docUrl: PropTypes.string.isRequired,
|
26
26
|
};
|
27
27
|
|
28
28
|
export default EmptyState;
|
data/webpack/src/ForemanDiscovery/DiscoveredHosts/Components/EmptyState/__test__/EmptyState.test.js
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
import { testComponentSnapshotsWithFixtures } from '@theforeman/test';
|
2
|
+
|
3
|
+
import ForemanEmptyState from '../EmptyState';
|
4
|
+
|
5
|
+
const fixtures = {
|
6
|
+
'render with Props': { docUrl: 'https://foreman.example.com' },
|
7
|
+
};
|
8
|
+
|
9
|
+
describe('ForemanEmptyState', () => {
|
10
|
+
describe('rendering', () =>
|
11
|
+
testComponentSnapshotsWithFixtures(ForemanEmptyState, fixtures));
|
12
|
+
});
|
@@ -0,0 +1,16 @@
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
2
|
+
|
3
|
+
exports[`ForemanEmptyState rendering render with Props 1`] = `
|
4
|
+
<DefaultEmptyState
|
5
|
+
description="No discovered hosts found in this context. This page shows discovered bare-metal or virtual nodes waiting to be provisioned."
|
6
|
+
documentation={
|
7
|
+
Object {
|
8
|
+
"url": "https://foreman.example.com",
|
9
|
+
}
|
10
|
+
}
|
11
|
+
header="Foreman Discovery"
|
12
|
+
icon="gears"
|
13
|
+
iconType="fa"
|
14
|
+
secondaryActions={Array []}
|
15
|
+
/>
|
16
|
+
`;
|
@@ -1 +1 @@
|
|
1
|
-
export { default } from
|
1
|
+
export { default } from './EmptyState';
|
@@ -1,6 +1,6 @@
|
|
1
|
-
import React from
|
2
|
-
import EmptyState from
|
1
|
+
import React from 'react';
|
2
|
+
import EmptyState from './Components/EmptyState';
|
3
3
|
|
4
|
-
const DiscoveredHosts =
|
4
|
+
const DiscoveredHosts = props => <EmptyState {...props} />;
|
5
5
|
|
6
6
|
export default DiscoveredHosts;
|
@@ -0,0 +1,34 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import PropTypes from 'prop-types';
|
3
|
+
import { translate as __ } from 'foremanReact/common/I18n';
|
4
|
+
import ForemanEmptyState from 'foremanReact/components/common/EmptyState';
|
5
|
+
import { foremanUrl } from 'foremanReact/common/helpers';
|
6
|
+
|
7
|
+
const EmptyState = props => {
|
8
|
+
const action = {
|
9
|
+
title: __('Create Rule'),
|
10
|
+
url: foremanUrl('/discovery_rules/new'),
|
11
|
+
};
|
12
|
+
const description = __(
|
13
|
+
'No Discovery Rules found in this context. Create Discovery Rules to perform automated provisioning on Discovered Hosts'
|
14
|
+
);
|
15
|
+
const documentation = {
|
16
|
+
url: props.docUrl,
|
17
|
+
};
|
18
|
+
return (
|
19
|
+
<ForemanEmptyState
|
20
|
+
header="Discovery Rules"
|
21
|
+
description={description}
|
22
|
+
icon="gavel"
|
23
|
+
iconType="fa"
|
24
|
+
documentation={documentation}
|
25
|
+
action={action}
|
26
|
+
/>
|
27
|
+
);
|
28
|
+
};
|
29
|
+
|
30
|
+
EmptyState.propTypes = {
|
31
|
+
docUrl: PropTypes.string.isRequired,
|
32
|
+
};
|
33
|
+
|
34
|
+
export default EmptyState;
|
@@ -0,0 +1 @@
|
|
1
|
+
export { default } from './EmptyState';
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import { testComponentSnapshotsWithFixtures } from '@theforeman/test';
|
2
|
+
import ForemanEmptyState from '../EmptyState';
|
3
|
+
|
4
|
+
const action = {
|
5
|
+
title: 'action-title',
|
6
|
+
url: `action-url`,
|
7
|
+
};
|
8
|
+
|
9
|
+
const fixtures = {
|
10
|
+
'render with Props': {
|
11
|
+
docUrl: 'https://foreman.example.com',
|
12
|
+
action,
|
13
|
+
},
|
14
|
+
};
|
15
|
+
|
16
|
+
describe('ForemanEmptyState', () => {
|
17
|
+
describe('rendering', () =>
|
18
|
+
testComponentSnapshotsWithFixtures(ForemanEmptyState, fixtures));
|
19
|
+
});
|
@@ -0,0 +1,22 @@
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
2
|
+
|
3
|
+
exports[`ForemanEmptyState rendering render with Props 1`] = `
|
4
|
+
<DefaultEmptyState
|
5
|
+
action={
|
6
|
+
Object {
|
7
|
+
"title": "Create Rule",
|
8
|
+
"url": "/discovery_rules/new",
|
9
|
+
}
|
10
|
+
}
|
11
|
+
description="No Discovery Rules found in this context. Create Discovery Rules to perform automated provisioning on Discovered Hosts"
|
12
|
+
documentation={
|
13
|
+
Object {
|
14
|
+
"url": "https://foreman.example.com",
|
15
|
+
}
|
16
|
+
}
|
17
|
+
header="Discovery Rules"
|
18
|
+
icon="gavel"
|
19
|
+
iconType="fa"
|
20
|
+
secondaryActions={Array []}
|
21
|
+
/>
|
22
|
+
`;
|
data/webpack/src/reducers.js
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman_discovery
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 17.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aditi Puntambekar
|
@@ -21,6 +21,7 @@ authors:
|
|
21
21
|
- David Davis
|
22
22
|
- Djebran Lezzoum
|
23
23
|
- Dominic Cleal
|
24
|
+
- Dominik Matoulek
|
24
25
|
- Eric D. Helms
|
25
26
|
- Ewoud Kohl van Wijngaarden
|
26
27
|
- Frank Wall
|
@@ -55,6 +56,7 @@ authors:
|
|
55
56
|
- Phirince Philip
|
56
57
|
- Rahul Bajaj
|
57
58
|
- Robert Antoni Buj Gelonch
|
59
|
+
- Ron Lavi
|
58
60
|
- Scubafloyd
|
59
61
|
- Sean O\'Keeffe
|
60
62
|
- Sebastian Gräßl
|
@@ -71,7 +73,7 @@ authors:
|
|
71
73
|
autorequire:
|
72
74
|
bindir: bin
|
73
75
|
cert_chain: []
|
74
|
-
date: 2021-
|
76
|
+
date: 2021-09-29 00:00:00.000000000 Z
|
75
77
|
dependencies: []
|
76
78
|
description: MaaS Discovery Plugin engine for Foreman
|
77
79
|
email: gsutclif@redhat.com
|
@@ -105,6 +107,7 @@ files:
|
|
105
107
|
- app/models/nic/managed_extensions.rb
|
106
108
|
- app/models/setting/discovered.rb
|
107
109
|
- app/services/foreman_discovery/fact_parser.rb
|
110
|
+
- app/services/foreman_discovery/fact_to_category_resolver.rb
|
108
111
|
- app/services/foreman_discovery/host_converter.rb
|
109
112
|
- app/services/foreman_discovery/host_fact_importer.rb
|
110
113
|
- app/services/foreman_discovery/import_hook.rb
|
@@ -120,6 +123,7 @@ files:
|
|
120
123
|
- app/services/foreman_discovery/node_api/power_service.rb
|
121
124
|
- app/services/foreman_discovery/subnet_suggestion.rb
|
122
125
|
- app/services/foreman_discovery/ui_notifications/destroy_host.rb
|
126
|
+
- app/services/foreman_discovery/ui_notifications/failed_discovery.rb
|
123
127
|
- app/services/foreman_discovery/ui_notifications/new_host.rb
|
124
128
|
- app/views/api/v2/discovered_hosts/base.json.rabl
|
125
129
|
- app/views/api/v2/discovered_hosts/index.json.rabl
|
@@ -152,9 +156,11 @@ files:
|
|
152
156
|
- app/views/discovered_mailer/discovered_summary.text.erb
|
153
157
|
- app/views/discovery_rules/_form.html.erb
|
154
158
|
- app/views/discovery_rules/_template_inline.erb
|
159
|
+
- app/views/discovery_rules/clone.erb
|
155
160
|
- app/views/discovery_rules/edit.html.erb
|
156
161
|
- app/views/discovery_rules/index.html.erb
|
157
162
|
- app/views/discovery_rules/new.html.erb
|
163
|
+
- app/views/discovery_rules/welcome.html.erb
|
158
164
|
- app/views/foreman_discovery/debian_kexec.erb
|
159
165
|
- app/views/foreman_discovery/redhat_kexec.erb
|
160
166
|
- config/as_deprecation_whitelist.yaml
|
@@ -274,16 +280,31 @@ files:
|
|
274
280
|
- test/unit/discovery_rule_test.rb
|
275
281
|
- test/unit/discovery_taxonomy_extensions_test.rb
|
276
282
|
- test/unit/fact_parser_test.rb
|
283
|
+
- test/unit/fact_to_category_resolver_test.rb
|
277
284
|
- test/unit/host_discovered_test.rb
|
278
285
|
- test/unit/lldp_neighbors_test.rb
|
279
286
|
- test/unit/managed_extensions_test.rb
|
280
287
|
- test/unit/setting_discovered_test.rb
|
281
288
|
- test/unit/ui_notifications/destroy_host_test.rb
|
282
289
|
- test/unit/ui_notifications/new_host_test.rb
|
290
|
+
- webpack/__mocks__/foremanReact/common/I18n.js
|
291
|
+
- webpack/__mocks__/foremanReact/common/helpers.js
|
292
|
+
- webpack/__mocks__/foremanReact/common/index.js
|
293
|
+
- webpack/__mocks__/foremanReact/components/common/EmptyState/DefaultEmptyState.js
|
294
|
+
- webpack/__mocks__/foremanReact/components/common/EmptyState/EmptyStatePattern.js
|
295
|
+
- webpack/__mocks__/foremanReact/components/common/EmptyState/EmptyStatePropTypes.js
|
296
|
+
- webpack/__mocks__/foremanReact/components/common/EmptyState/index.js
|
283
297
|
- webpack/index.js
|
284
298
|
- webpack/src/ForemanDiscovery/DiscoveredHosts/Components/EmptyState/EmptyState.js
|
299
|
+
- webpack/src/ForemanDiscovery/DiscoveredHosts/Components/EmptyState/__test__/EmptyState.test.js
|
300
|
+
- webpack/src/ForemanDiscovery/DiscoveredHosts/Components/EmptyState/__test__/__snapshots__/EmptyState.test.js.snap
|
285
301
|
- webpack/src/ForemanDiscovery/DiscoveredHosts/Components/EmptyState/index.js
|
286
302
|
- webpack/src/ForemanDiscovery/DiscoveredHosts/index.js
|
303
|
+
- webpack/src/ForemanDiscovery/DiscoveryRules/Components/EmptyState/EmptyState.js
|
304
|
+
- webpack/src/ForemanDiscovery/DiscoveryRules/Components/EmptyState/index.js
|
305
|
+
- webpack/src/ForemanDiscovery/DiscoveryRules/Components/__test__/EmptyState.test.js
|
306
|
+
- webpack/src/ForemanDiscovery/DiscoveryRules/Components/__test__/__snapshots__/EmptyState.test.js.snap
|
307
|
+
- webpack/src/ForemanDiscovery/DiscoveryRules/index.js
|
287
308
|
- webpack/src/reducers.js
|
288
309
|
homepage: https://github.com/theforeman/foreman_discovery
|
289
310
|
licenses:
|
@@ -328,25 +349,26 @@ test_files:
|
|
328
349
|
- test/facts/only-ipv6.json
|
329
350
|
- test/facts/skylake-ipv6.json
|
330
351
|
- test/functional/api/v2/discovery_rules_controller_test.rb
|
352
|
+
- test/functional/api/v2/discovered_hosts_controller_test.rb
|
331
353
|
- test/functional/api/v2/fact_value_extensions_test.rb
|
332
354
|
- test/functional/api/v2/settings_controller_test.rb
|
333
|
-
- test/functional/api/v2/discovered_hosts_controller_test.rb
|
334
355
|
- test/functional/foreman_discovery/concerns/hosts_controller_extensions_test.rb
|
335
356
|
- test/functional/discovered_hosts_controller_test.rb
|
336
357
|
- test/functional/discovery_rules_controller_test.rb
|
337
358
|
- test/integration/discovered_hosts_test.rb
|
338
|
-
- test/models/setting_test.rb
|
339
359
|
- test/unit/ui_notifications/destroy_host_test.rb
|
340
360
|
- test/unit/ui_notifications/new_host_test.rb
|
341
361
|
- test/unit/discovered_mailer_test.rb
|
342
362
|
- test/unit/discovery_taxonomy_extensions_test.rb
|
343
|
-
- test/unit/fact_parser_test.rb
|
344
363
|
- test/unit/lldp_neighbors_test.rb
|
345
|
-
- test/unit/
|
364
|
+
- test/unit/discovery_rule_test.rb
|
365
|
+
- test/unit/fact_to_category_resolver_test.rb
|
346
366
|
- test/unit/discovered_extensions_test.rb
|
347
367
|
- test/unit/discovery_attribute_set_test.rb
|
348
|
-
- test/unit/
|
368
|
+
- test/unit/fact_parser_test.rb
|
349
369
|
- test/unit/managed_extensions_test.rb
|
350
|
-
- test/unit/
|
351
|
-
- test/
|
370
|
+
- test/unit/setting_discovered_test.rb
|
371
|
+
- test/unit/host_discovered_test.rb
|
372
|
+
- test/models/setting_test.rb
|
352
373
|
- test/test_helper_discovery.rb
|
374
|
+
- test/test_plugin_helper.rb
|