foreman_hdm 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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