foreman_discovery 16.3.6 → 17.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) 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 +1 -1
  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/discovery_rules/clone.erb +3 -0
  13. data/app/views/discovery_rules/index.html.erb +4 -0
  14. data/app/views/discovery_rules/welcome.html.erb +15 -0
  15. data/app/views/foreman_discovery/debian_kexec.erb +1 -1
  16. data/app/views/foreman_discovery/redhat_kexec.erb +1 -1
  17. data/config/routes.rb +2 -0
  18. data/db/seeds.d/80_discovery_ui_notification.rb +11 -5
  19. data/lib/foreman_discovery/engine.rb +3 -7
  20. data/lib/foreman_discovery/version.rb +1 -1
  21. data/locale/ca/LC_MESSAGES/foreman_discovery.mo +0 -0
  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.po +45 -18
  25. data/locale/en/LC_MESSAGES/foreman_discovery.mo +0 -0
  26. data/locale/en/foreman_discovery.po +31 -4
  27. data/locale/en_GB/LC_MESSAGES/foreman_discovery.mo +0 -0
  28. data/locale/en_GB/foreman_discovery.po +36 -9
  29. data/locale/es/LC_MESSAGES/foreman_discovery.mo +0 -0
  30. data/locale/es/foreman_discovery.po +70 -41
  31. data/locale/foreman_discovery.pot +142 -97
  32. data/locale/fr/LC_MESSAGES/foreman_discovery.mo +0 -0
  33. data/locale/fr/foreman_discovery.po +76 -49
  34. data/locale/gl/LC_MESSAGES/foreman_discovery.mo +0 -0
  35. data/locale/gl/foreman_discovery.po +32 -5
  36. data/locale/it/LC_MESSAGES/foreman_discovery.mo +0 -0
  37. data/locale/it/foreman_discovery.po +44 -17
  38. data/locale/ja/LC_MESSAGES/foreman_discovery.mo +0 -0
  39. data/locale/ja/foreman_discovery.po +79 -54
  40. data/locale/ko/LC_MESSAGES/foreman_discovery.mo +0 -0
  41. data/locale/ko/foreman_discovery.po +43 -16
  42. data/locale/pt_BR/LC_MESSAGES/foreman_discovery.mo +0 -0
  43. data/locale/pt_BR/foreman_discovery.po +69 -39
  44. data/locale/ru/LC_MESSAGES/foreman_discovery.mo +0 -0
  45. data/locale/ru/foreman_discovery.po +43 -16
  46. data/locale/sv_SE/LC_MESSAGES/foreman_discovery.mo +0 -0
  47. data/locale/sv_SE/foreman_discovery.po +34 -7
  48. data/locale/zh_CN/LC_MESSAGES/foreman_discovery.mo +0 -0
  49. data/locale/zh_CN/foreman_discovery.po +114 -90
  50. data/locale/zh_TW/LC_MESSAGES/foreman_discovery.mo +0 -0
  51. data/locale/zh_TW/foreman_discovery.po +43 -16
  52. data/package.json +6 -6
  53. data/test/functional/api/v2/discovered_hosts_controller_test.rb +9 -0
  54. data/test/functional/discovery_rules_controller_test.rb +6 -1
  55. data/test/integration/discovered_hosts_test.rb +53 -5
  56. data/test/test_helper_discovery.rb +5 -0
  57. data/test/unit/discovery_rule_test.rb +24 -2
  58. data/test/unit/fact_to_category_resolver_test.rb +41 -0
  59. data/test/unit/ui_notifications/destroy_host_test.rb +2 -9
  60. data/test/unit/ui_notifications/new_host_test.rb +3 -3
  61. data/webpack/__mocks__/foremanReact/common/I18n.js +3 -0
  62. data/webpack/__mocks__/foremanReact/common/helpers.js +1 -0
  63. data/webpack/__mocks__/foremanReact/common/index.js +5 -0
  64. data/webpack/__mocks__/foremanReact/components/common/EmptyState/DefaultEmptyState.js +69 -0
  65. data/webpack/__mocks__/foremanReact/components/common/EmptyState/EmptyStatePattern.js +77 -0
  66. data/webpack/__mocks__/foremanReact/components/common/EmptyState/EmptyStatePropTypes.js +29 -0
  67. data/webpack/__mocks__/foremanReact/components/common/EmptyState/index.js +5 -0
  68. data/webpack/index.js +9 -8
  69. data/webpack/src/ForemanDiscovery/DiscoveredHosts/Components/EmptyState/EmptyState.js +7 -7
  70. data/webpack/src/ForemanDiscovery/DiscoveredHosts/Components/EmptyState/__test__/EmptyState.test.js +12 -0
  71. data/webpack/src/ForemanDiscovery/DiscoveredHosts/Components/EmptyState/__test__/__snapshots__/EmptyState.test.js.snap +16 -0
  72. data/webpack/src/ForemanDiscovery/DiscoveredHosts/Components/EmptyState/index.js +1 -1
  73. data/webpack/src/ForemanDiscovery/DiscoveredHosts/index.js +3 -3
  74. data/webpack/src/ForemanDiscovery/DiscoveryRules/Components/EmptyState/EmptyState.js +34 -0
  75. data/webpack/src/ForemanDiscovery/DiscoveryRules/Components/EmptyState/index.js +1 -0
  76. data/webpack/src/ForemanDiscovery/DiscoveryRules/Components/__test__/EmptyState.test.js +19 -0
  77. data/webpack/src/ForemanDiscovery/DiscoveryRules/Components/__test__/__snapshots__/EmptyState.test.js.snap +22 -0
  78. data/webpack/src/ForemanDiscovery/DiscoveryRules/index.js +6 -0
  79. data/webpack/src/reducers.js +0 -2
  80. metadata +25 -3
@@ -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.0
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-05-03 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:
@@ -345,8 +366,9 @@ test_files:
345
366
  - test/unit/setting_discovered_test.rb
346
367
  - test/unit/discovered_extensions_test.rb
347
368
  - test/unit/discovery_attribute_set_test.rb
348
- - test/unit/host_discovered_test.rb
349
369
  - test/unit/managed_extensions_test.rb
370
+ - test/unit/host_discovered_test.rb
350
371
  - test/unit/discovery_rule_test.rb
372
+ - test/unit/fact_to_category_resolver_test.rb
351
373
  - test/test_plugin_helper.rb
352
374
  - test/test_helper_discovery.rb