foreman_hdm 0.1.0

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.
@@ -0,0 +1,81 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { STATUS } from 'foremanReact/constants';
4
+ import { Divider, EmptyStateIcon, Grid, GridItem, Menu, MenuContent, MenuList, MenuItem} from '@patternfly/react-core';
5
+ import { ExclamationCircleIcon } from '@patternfly/react-icons';
6
+ import EmptyState from 'foremanReact/components/common/EmptyState/EmptyStatePattern';
7
+ import { global_danger_color_200 as dangerColor } from '@patternfly/react-tokens';
8
+ import Skeleton from 'react-loading-skeleton';
9
+ import { useAPI } from 'foremanReact/common/hooks/API/APIHooks';
10
+ import Hierarchies from './Hierarchies';
11
+
12
+ const HdmTab = ({ response: tabResponse, status: tabStatus, location: { pathname } }) => {
13
+ const hostname = tabResponse.name;
14
+ const url = `${window.location.origin.toString()}/foreman_hdm/hosts/${hostname}/keys`;
15
+ const { response, status } = useAPI('get', url);
16
+ const [activeItem, setActiveItem] = React.useState(0);
17
+
18
+ if (status === STATUS.PENDING) {
19
+ return <Skeleton count={5} />;
20
+ }
21
+
22
+ if (status === STATUS.ERROR) {
23
+ const description = __('Could not fetch HDM data.');
24
+ const icon = (
25
+ <EmptyStateIcon icon={ExclamationCircleIcon} color={dangerColor.value} />
26
+ );
27
+ return (
28
+ <EmptyState header={__('Error!')} icon={icon} description={description} />
29
+ );
30
+ }
31
+
32
+ const onSelect = (event, itemId) => {
33
+ setActiveItem(itemId);
34
+ };
35
+
36
+ let menuItems = [];
37
+ if (Array.isArray(response)) {
38
+ menuItems = response.map((item) => {
39
+ return (
40
+ <div key={item.name}>
41
+ <MenuItem itemId={item.name}>
42
+ {item.name}
43
+ </MenuItem>
44
+ <Divider component="li" />
45
+ </div>
46
+ );
47
+ });
48
+ }
49
+
50
+ return (
51
+ <div>
52
+ <Grid hasGutter>
53
+ <GridItem span={6}>
54
+ <Menu onSelect={onSelect} activeItemId={activeItem}>
55
+ <MenuContent>
56
+ <MenuList>{menuItems}</MenuList>
57
+ </MenuContent>
58
+ </Menu>
59
+ </GridItem>
60
+ <GridItem span={6}>
61
+ <Hierarchies hostname={hostname} keyName={activeItem} />
62
+ </GridItem>
63
+ </Grid>
64
+ </div>
65
+ );
66
+ };
67
+
68
+ HdmTab.propTypes = {
69
+ response: PropTypes.object,
70
+ status: PropTypes.string,
71
+ location: PropTypes.shape({
72
+ pathname: PropTypes.string,
73
+ }),
74
+ };
75
+ HdmTab.defaultProps = {
76
+ location: { pathname: '' },
77
+ response: { name: '' },
78
+ status: STATUS.PENDING,
79
+ };
80
+
81
+ export default HdmTab;
@@ -0,0 +1,15 @@
1
+ // This is an example of extending foreman-core's component via slot&fill
2
+ // http://foreman.surge.sh/?path=/docs/introduction-slot-and-fill--page
3
+ /*
4
+ import React from 'react';
5
+ import { addGlobalFill } from 'foremanReact/components/common/Fill/GlobalFill';
6
+
7
+ addGlobalFill('slotId', 'fillId', <SomeComponent key="some-key" />, 300);
8
+
9
+ addGlobalFill(
10
+ 'slotId',
11
+ 'fillId',
12
+ { someProp: 'this is an override prop' },
13
+ 300
14
+ );
15
+ */
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+
3
+ // const routes = [
4
+ // {
5
+ // path: '/foreman_hdm/welcome',
6
+ // exact: true,
7
+ // render: (props) => <WelcomePage {...props} />,
8
+ // },
9
+ // ];
10
+
11
+ const routes = [];
12
+ export default routes;
@@ -0,0 +1,7 @@
1
+ import { combineReducers } from 'redux';
2
+
3
+ const reducers = {
4
+ foremanHdm: combineReducers({}),
5
+ };
6
+
7
+ export default reducers;
@@ -0,0 +1,17 @@
1
+ import 'core-js/shim';
2
+ import 'regenerator-runtime/runtime';
3
+ import MutationObserver from '@sheerun/mutationobserver-shim';
4
+
5
+ import { configure } from 'enzyme';
6
+ import Adapter from 'enzyme-adapter-react-16';
7
+
8
+ configure({ adapter: new Adapter() });
9
+
10
+ // Mocking translation function
11
+ global.__ = text => text; // eslint-disable-line
12
+
13
+ // Mocking locales to prevent unnecessary fallback messages
14
+ window.locales = { en: { domain: 'app', locale_data: { app: { '': {} } } } };
15
+
16
+ // see https://github.com/testing-library/dom-testing-library/releases/tag/v7.0.0
17
+ window.MutationObserver = MutationObserver;
metadata ADDED
@@ -0,0 +1,193 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: foreman_hdm
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - betadots GmbH
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-06-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '13.0'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 13.0.6
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '13.0'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 13.0.6
33
+ - !ruby/object:Gem::Dependency
34
+ name: rdoc
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '6.5'
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '6.5'
47
+ - !ruby/object:Gem::Dependency
48
+ name: rubocop
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '1.52'
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: 1.52.1
57
+ type: :development
58
+ prerelease: false
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '1.52'
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: 1.52.1
67
+ - !ruby/object:Gem::Dependency
68
+ name: rubocop-minitest
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: 0.31.0
74
+ type: :development
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: 0.31.0
81
+ - !ruby/object:Gem::Dependency
82
+ name: rubocop-performance
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '1.18'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '1.18'
95
+ - !ruby/object:Gem::Dependency
96
+ name: rubocop-rails
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: '2.19'
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: 2.19.1
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: '2.19'
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: 2.19.1
115
+ - !ruby/object:Gem::Dependency
116
+ name: rubocop-rake
117
+ requirement: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - "~>"
120
+ - !ruby/object:Gem::Version
121
+ version: 0.6.0
122
+ type: :development
123
+ prerelease: false
124
+ version_requirements: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - "~>"
127
+ - !ruby/object:Gem::Version
128
+ version: 0.6.0
129
+ description: Get hiera data from HDM and display alongside hosts in Foreman
130
+ email:
131
+ - info@betadots.de
132
+ executables: []
133
+ extensions: []
134
+ extra_rdoc_files: []
135
+ files:
136
+ - LICENSE
137
+ - README.md
138
+ - Rakefile
139
+ - app/controllers/foreman_hdm/keys_controller.rb
140
+ - app/services/proxy_api/hdm.rb
141
+ - config/routes.rb
142
+ - db/migrate/20230519125201_add_hdm_proxy_id_to_hosts.rb
143
+ - db/seeds.d/75-hdm_seeds.rb
144
+ - lib/foreman_hdm.rb
145
+ - lib/foreman_hdm/engine.rb
146
+ - lib/foreman_hdm/version.rb
147
+ - lib/tasks/foreman_hdm_tasks.rake
148
+ - locale/Makefile
149
+ - locale/en/foreman_hdm.po
150
+ - locale/foreman_hdm.pot
151
+ - locale/gemspec.rb
152
+ - package.json
153
+ - test/factories/foreman_hdm_factories.rb
154
+ - test/test_plugin_helper.rb
155
+ - test/unit/foreman_hdm_test.rb
156
+ - webpack/global_index.js
157
+ - webpack/global_test_setup.js
158
+ - webpack/index.js
159
+ - webpack/src/Extends/Host/HdmTab/Hierarchies.js
160
+ - webpack/src/Extends/Host/HdmTab/Hierarchy.js
161
+ - webpack/src/Extends/Host/HdmTab/index.js
162
+ - webpack/src/Extends/index.js
163
+ - webpack/src/Router/routes.js
164
+ - webpack/src/reducers.js
165
+ - webpack/test_setup.js
166
+ homepage: https://github.com/betadots/foreman_hdm
167
+ licenses:
168
+ - GPL-3.0
169
+ metadata:
170
+ is_foreman_plugin: 'true'
171
+ post_install_message:
172
+ rdoc_options: []
173
+ require_paths:
174
+ - lib
175
+ required_ruby_version: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: '2.7'
180
+ required_rubygems_version: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - ">="
183
+ - !ruby/object:Gem::Version
184
+ version: '0'
185
+ requirements: []
186
+ rubygems_version: 3.2.33
187
+ signing_key:
188
+ specification_version: 4
189
+ summary: Display hiera data in Foreman using HDM
190
+ test_files:
191
+ - test/factories/foreman_hdm_factories.rb
192
+ - test/test_plugin_helper.rb
193
+ - test/unit/foreman_hdm_test.rb