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.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/api/v2/discovered_hosts_controller.rb +1 -0
  3. data/app/controllers/discovered_hosts_controller.rb +24 -35
  4. data/app/controllers/discovery_rules_controller.rb +12 -1
  5. data/app/helpers/discovered_hosts_helper.rb +3 -4
  6. data/app/helpers/discovery_rules_helper.rb +1 -0
  7. data/app/models/discovery_rule.rb +10 -5
  8. data/app/services/foreman_discovery/fact_to_category_resolver.rb +106 -0
  9. data/app/services/foreman_discovery/ui_notifications/failed_discovery.rb +34 -0
  10. data/app/services/foreman_discovery/ui_notifications/new_host.rb +2 -1
  11. data/app/views/discovered_hosts/_discovered_hosts_list.html.erb +44 -40
  12. data/app/views/discovered_hosts/welcome.html.erb +1 -1
  13. data/app/views/discovery_rules/clone.erb +3 -0
  14. data/app/views/discovery_rules/index.html.erb +4 -0
  15. data/app/views/discovery_rules/welcome.html.erb +15 -0
  16. data/config/routes.rb +2 -0
  17. data/db/seeds.d/80_discovery_ui_notification.rb +11 -5
  18. data/lib/foreman_discovery/engine.rb +3 -7
  19. data/lib/foreman_discovery/version.rb +1 -1
  20. data/locale/ca/LC_MESSAGES/foreman_discovery.mo +0 -0
  21. data/locale/ca/foreman_discovery.edit.po +44 -40
  22. data/locale/ca/foreman_discovery.po +36 -9
  23. data/locale/de/LC_MESSAGES/foreman_discovery.mo +0 -0
  24. data/locale/de/foreman_discovery.edit.po +42 -38
  25. data/locale/de/foreman_discovery.po +45 -18
  26. data/locale/en/LC_MESSAGES/foreman_discovery.mo +0 -0
  27. data/locale/en/foreman_discovery.edit.po +37 -29
  28. data/locale/en/foreman_discovery.po +31 -4
  29. data/locale/en_GB/LC_MESSAGES/foreman_discovery.mo +0 -0
  30. data/locale/en_GB/foreman_discovery.edit.po +39 -35
  31. data/locale/en_GB/foreman_discovery.po +36 -9
  32. data/locale/es/LC_MESSAGES/foreman_discovery.mo +0 -0
  33. data/locale/es/foreman_discovery.edit.po +42 -38
  34. data/locale/es/foreman_discovery.po +70 -41
  35. data/locale/foreman_discovery.pot +142 -97
  36. data/locale/fr/LC_MESSAGES/foreman_discovery.mo +0 -0
  37. data/locale/fr/foreman_discovery.edit.po +88 -84
  38. data/locale/fr/foreman_discovery.po +76 -49
  39. data/locale/gl/LC_MESSAGES/foreman_discovery.mo +0 -0
  40. data/locale/gl/foreman_discovery.edit.po +42 -38
  41. data/locale/gl/foreman_discovery.po +32 -5
  42. data/locale/it/LC_MESSAGES/foreman_discovery.mo +0 -0
  43. data/locale/it/foreman_discovery.edit.po +42 -38
  44. data/locale/it/foreman_discovery.po +44 -17
  45. data/locale/ja/LC_MESSAGES/foreman_discovery.mo +0 -0
  46. data/locale/ja/foreman_discovery.edit.po +74 -70
  47. data/locale/ja/foreman_discovery.po +79 -54
  48. data/locale/ko/LC_MESSAGES/foreman_discovery.mo +0 -0
  49. data/locale/ko/foreman_discovery.edit.po +42 -38
  50. data/locale/ko/foreman_discovery.po +43 -16
  51. data/locale/pt_BR/LC_MESSAGES/foreman_discovery.mo +0 -0
  52. data/locale/pt_BR/foreman_discovery.edit.po +42 -38
  53. data/locale/pt_BR/foreman_discovery.po +69 -39
  54. data/locale/ru/LC_MESSAGES/foreman_discovery.mo +0 -0
  55. data/locale/ru/foreman_discovery.edit.po +46 -42
  56. data/locale/ru/foreman_discovery.po +43 -16
  57. data/locale/sv_SE/LC_MESSAGES/foreman_discovery.mo +0 -0
  58. data/locale/sv_SE/foreman_discovery.edit.po +42 -38
  59. data/locale/sv_SE/foreman_discovery.po +34 -7
  60. data/locale/zh_CN/LC_MESSAGES/foreman_discovery.mo +0 -0
  61. data/locale/zh_CN/foreman_discovery.edit.po +90 -86
  62. data/locale/zh_CN/foreman_discovery.po +114 -90
  63. data/locale/zh_TW/LC_MESSAGES/foreman_discovery.mo +0 -0
  64. data/locale/zh_TW/foreman_discovery.edit.po +42 -38
  65. data/locale/zh_TW/foreman_discovery.po +43 -16
  66. data/package.json +6 -6
  67. data/test/functional/api/v2/discovered_hosts_controller_test.rb +9 -0
  68. data/test/functional/discovery_rules_controller_test.rb +6 -1
  69. data/test/integration/discovered_hosts_test.rb +53 -5
  70. data/test/test_helper_discovery.rb +5 -0
  71. data/test/unit/discovery_rule_test.rb +24 -2
  72. data/test/unit/fact_to_category_resolver_test.rb +41 -0
  73. data/test/unit/ui_notifications/destroy_host_test.rb +2 -9
  74. data/test/unit/ui_notifications/new_host_test.rb +3 -3
  75. data/webpack/__mocks__/foremanReact/common/I18n.js +3 -0
  76. data/webpack/__mocks__/foremanReact/common/helpers.js +1 -0
  77. data/webpack/__mocks__/foremanReact/common/index.js +5 -0
  78. data/webpack/__mocks__/foremanReact/components/common/EmptyState/DefaultEmptyState.js +69 -0
  79. data/webpack/__mocks__/foremanReact/components/common/EmptyState/EmptyStatePattern.js +77 -0
  80. data/webpack/__mocks__/foremanReact/components/common/EmptyState/EmptyStatePropTypes.js +29 -0
  81. data/webpack/__mocks__/foremanReact/components/common/EmptyState/index.js +5 -0
  82. data/webpack/index.js +9 -8
  83. data/webpack/src/ForemanDiscovery/DiscoveredHosts/Components/EmptyState/EmptyState.js +7 -7
  84. data/webpack/src/ForemanDiscovery/DiscoveredHosts/Components/EmptyState/__test__/EmptyState.test.js +12 -0
  85. data/webpack/src/ForemanDiscovery/DiscoveredHosts/Components/EmptyState/__test__/__snapshots__/EmptyState.test.js.snap +16 -0
  86. data/webpack/src/ForemanDiscovery/DiscoveredHosts/Components/EmptyState/index.js +1 -1
  87. data/webpack/src/ForemanDiscovery/DiscoveredHosts/index.js +3 -3
  88. data/webpack/src/ForemanDiscovery/DiscoveryRules/Components/EmptyState/EmptyState.js +34 -0
  89. data/webpack/src/ForemanDiscovery/DiscoveryRules/Components/EmptyState/index.js +1 -0
  90. data/webpack/src/ForemanDiscovery/DiscoveryRules/Components/__test__/EmptyState.test.js +19 -0
  91. data/webpack/src/ForemanDiscovery/DiscoveryRules/Components/__test__/__snapshots__/EmptyState.test.js.snap +22 -0
  92. data/webpack/src/ForemanDiscovery/DiscoveryRules/index.js +6 -0
  93. data/webpack/src/reducers.js +0 -2
  94. 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 1, blueprint.notifications.count
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 1, blueprint.notifications.count
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 only one notification' do
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 1, blueprint.notifications.count
27
- assert_not_equal expired_at, blueprint.notifications.first.expired_at
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,3 @@
1
+ export const translate = s => s;
2
+
3
+ export const ngettext = s => s;
@@ -0,0 +1 @@
1
+ export const foremanUrl = path => `${window.URL_PREFIX}${path}`;
@@ -0,0 +1,5 @@
1
+ import EmptyStatePattern from '../components/common/EmptyState/EmptyStatePattern';
2
+ import DefaultEmptyState from '../components/common/EmptyState/DefaultEmptyState';
3
+
4
+ export default DefaultEmptyState;
5
+ export { EmptyStatePattern };
@@ -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
+ };
@@ -0,0 +1,5 @@
1
+ import EmptyStatePattern from './EmptyStatePattern';
2
+ import DefaultEmptyState from './DefaultEmptyState';
3
+
4
+ export default DefaultEmptyState;
5
+ export { EmptyStatePattern };
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 "foremanReact/components/componentRegistry";
5
- import { registerReducer } from "foremanReact/common/MountingService";
6
- import reducers from "./src/reducers";
7
- import DiscoveredHosts from "./src/ForemanDiscovery/DiscoveredHosts";
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.register({
16
- name: "DiscoveredHosts",
17
- type: DiscoveredHosts,
18
- });
16
+ componentRegistry.registerMultiple([
17
+ { name: 'DiscoveredHosts', type: DiscoveredHosts },
18
+ { name: 'DiscoveryRules', type: DiscoveryRules },
19
+ ]);
@@ -1,11 +1,11 @@
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";
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 = (props) => {
6
+ const EmptyState = props => {
7
7
  const description = __(
8
- "No discovered hosts found in this context. This page shows discovered bare-metal or virtual nodes waiting to be provisioned."
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;
@@ -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 "./EmptyState";
1
+ export { default } from './EmptyState';
@@ -1,6 +1,6 @@
1
- import React from "react";
2
- import EmptyState from "./Components/EmptyState";
1
+ import React from 'react';
2
+ import EmptyState from './Components/EmptyState';
3
3
 
4
- const DiscoveredHosts = ({ docUrl }) => <EmptyState docUrl={docUrl} />;
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
+ `;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import EmptyState from './Components/EmptyState';
3
+
4
+ const DiscoveryRules = props => <EmptyState {...props} />;
5
+
6
+ export default DiscoveryRules;
@@ -1,5 +1,3 @@
1
- import { combineReducers } from "redux";
2
-
3
1
  const reducers = {
4
2
  foremanDiscovery: {},
5
3
  };
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: 16.3.6
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-06-16 00:00:00.000000000 Z
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/setting_discovered_test.rb
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/host_discovered_test.rb
368
+ - test/unit/fact_parser_test.rb
349
369
  - test/unit/managed_extensions_test.rb
350
- - test/unit/discovery_rule_test.rb
351
- - test/test_plugin_helper.rb
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