foreman_puppet 3.0.7 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/lib/foreman_puppet/register.rb +3 -4
  3. data/lib/foreman_puppet/version.rb +1 -1
  4. data/locale/en/foreman_puppet.edit.po +0 -998
  5. data/package.json +7 -7
  6. data/test/controllers/foreman_puppet/api/v2/override_values_controller_test.rb +6 -2
  7. data/test/models/foreman_puppet/host_test.rb +6 -0
  8. data/webpack/global_index.js +11 -0
  9. data/webpack/index.js +0 -7
  10. data/webpack/legacy.js +31 -0
  11. data/webpack/src/Extends/Fills/index.js +26 -0
  12. data/webpack/src/Extends/Host/PuppetTab/Routes.js +42 -0
  13. data/webpack/src/Extends/Host/PuppetTab/SubTabs/EmptyPage.js +19 -0
  14. data/webpack/src/Extends/Host/PuppetTab/SubTabs/Reports/components/DescriptionCard.js +71 -0
  15. data/webpack/src/Extends/Host/PuppetTab/SubTabs/Reports/index.js +45 -0
  16. data/webpack/src/Extends/Host/PuppetTab/SubTabs/Reports/styles.scss +7 -0
  17. data/webpack/src/Extends/Host/PuppetTab/constants.js +8 -0
  18. data/webpack/src/Extends/Host/PuppetTab/helpers.js +3 -0
  19. data/webpack/src/Extends/Host/PuppetTab/index.js +51 -0
  20. metadata +13 -40
  21. data/locale/ca/foreman_puppet.edit.po +0 -1221
  22. data/locale/ca/foreman_puppet.po.time_stamp +0 -0
  23. data/locale/cs_CZ/foreman_puppet.edit.po +0 -1208
  24. data/locale/cs_CZ/foreman_puppet.po.time_stamp +0 -0
  25. data/locale/de/foreman_puppet.edit.po +0 -1300
  26. data/locale/de/foreman_puppet.po.time_stamp +0 -0
  27. data/locale/en/foreman_puppet.po.time_stamp +0 -0
  28. data/locale/en/foreman_puppet.pox +0 -0
  29. data/locale/en_GB/foreman_puppet.edit.po +0 -1197
  30. data/locale/en_GB/foreman_puppet.po.time_stamp +0 -0
  31. data/locale/es/foreman_puppet.edit.po +0 -1275
  32. data/locale/es/foreman_puppet.po.time_stamp +0 -0
  33. data/locale/fr/foreman_puppet.edit.po +0 -1290
  34. data/locale/fr/foreman_puppet.po.time_stamp +0 -0
  35. data/locale/gl/foreman_puppet.edit.po +0 -1203
  36. data/locale/gl/foreman_puppet.po.time_stamp +0 -0
  37. data/locale/it/foreman_puppet.edit.po +0 -1233
  38. data/locale/it/foreman_puppet.po.time_stamp +0 -0
  39. data/locale/ja/foreman_puppet.edit.po +0 -1223
  40. data/locale/ja/foreman_puppet.po.time_stamp +0 -0
  41. data/locale/ko/foreman_puppet.edit.po +0 -1197
  42. data/locale/ko/foreman_puppet.po.time_stamp +0 -0
  43. data/locale/messages.mo +0 -0
  44. data/locale/nl_NL/foreman_puppet.edit.po +0 -1228
  45. data/locale/nl_NL/foreman_puppet.po.time_stamp +0 -0
  46. data/locale/pl/foreman_puppet.edit.po +0 -1238
  47. data/locale/pl/foreman_puppet.po.time_stamp +0 -0
  48. data/locale/pt_BR/foreman_puppet.edit.po +0 -1281
  49. data/locale/pt_BR/foreman_puppet.po.time_stamp +0 -0
  50. data/locale/ru/foreman_puppet.edit.po +0 -1240
  51. data/locale/ru/foreman_puppet.po.time_stamp +0 -0
  52. data/locale/sv_SE/foreman_puppet.edit.po +0 -1205
  53. data/locale/sv_SE/foreman_puppet.po.time_stamp +0 -0
  54. data/locale/zh_CN/foreman_puppet.edit.po +0 -1212
  55. data/locale/zh_CN/foreman_puppet.po.time_stamp +0 -0
  56. data/locale/zh_TW/foreman_puppet.edit.po +0 -1197
  57. data/locale/zh_TW/foreman_puppet.po.time_stamp +0 -0
  58. data/webpack/fills_index.js +0 -30
data/package.json CHANGED
@@ -21,17 +21,17 @@
21
21
  "url": "http://projects.theforeman.org/projects/foreman_puppet/issues"
22
22
  },
23
23
  "peerDependencies": {
24
- "@theforeman/vendor": "^8.15.0"
24
+ "@theforeman/vendor": "^10.1.0"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@babel/core": "^7.7.0",
28
28
  "@sheerun/mutationobserver-shim": "^0.3.3",
29
- "@theforeman/builder": "^8.15.0",
30
- "@theforeman/eslint-plugin-foreman": "^8.15.0",
31
- "@theforeman/find-foreman": "^8.15.0",
32
- "@theforeman/stories": "^8.15.0",
33
- "@theforeman/test": "^8.15.0",
34
- "@theforeman/vendor-dev": "^8.15.0",
29
+ "@theforeman/builder": "^10.1.0",
30
+ "@theforeman/eslint-plugin-foreman": "^10.1.0",
31
+ "@theforeman/find-foreman": "^10.1.0",
32
+ "@theforeman/stories": "^10.1.0",
33
+ "@theforeman/test": "^10.1.0",
34
+ "@theforeman/vendor-dev": "^10.1.0",
35
35
  "babel-eslint": "^10.0.3",
36
36
  "eslint": "^6.7.2",
37
37
  "jed": "^1.1.1",
@@ -75,8 +75,12 @@ module ForemanPuppet
75
75
  post :create, params: { smart_class_parameter_id: lookup_key.id, override_value: override_value }
76
76
  end
77
77
  response = ActiveSupport::JSON.decode(@response.body)
78
- param_not_posted = (override_value.keys.first.to_s == 'match') ? 'Value' : 'Match' # The opposite of override_value is missing
79
- assert_match(/Validation failed: #{param_not_posted} can't be blank/, response['error']['message'])
78
+ if override_value.keys.first.to_s == 'match'
79
+ # The opposite of override_value is missing and should fail
80
+ assert_match(/Validation failed: Value can't be blank/, response['error']['message'])
81
+ else # match is missing
82
+ assert_match(/Failed to save the record/, response['error']['message'])
83
+ end
80
84
  assert_response :error
81
85
  end
82
86
  end
@@ -110,6 +110,12 @@ module ForemanPuppet
110
110
  end
111
111
 
112
112
  describe '#info puppet bits' do
113
+ test 'ENC YAML omits environment if no puppet facet' do
114
+ host = FactoryBot.build_stubbed(:host)
115
+ enc = host.info
116
+ assert_not_includes enc.keys, 'environment'
117
+ end
118
+
113
119
  test 'ENC YAML uses Classification::ClassParam for parameterized output' do
114
120
  skip 'No idea whats wrong here'
115
121
  host = FactoryBot.build_stubbed(:host, :with_environment)
@@ -0,0 +1,11 @@
1
+ import { registerReducer } from 'foremanReact/common/MountingService';
2
+ import reducers from './src/reducers';
3
+ import { registerFills } from './src/Extends/Fills';
4
+ import { registerLegacy } from './legacy';
5
+
6
+ // register reducers
7
+ registerReducer('puppet', reducers);
8
+ // add fills
9
+ registerFills();
10
+ // TODO: the checkForUnavailablePuppetclasses is very nasty
11
+ registerLegacy();
data/webpack/index.js CHANGED
@@ -2,16 +2,9 @@
2
2
  /* eslint-disable import/no-extraneous-dependencies */
3
3
  /* eslint-disable import/extensions */
4
4
  import componentRegistry from 'foremanReact/components/componentRegistry';
5
- import { registerReducer } from 'foremanReact/common/MountingService';
6
- import reducers from './src/reducers';
7
5
  import ForemanPuppet from './src/ForemanPuppet';
8
6
  import { WelcomeEnv } from './src/Components/Environments/Welcome';
9
7
 
10
- // register reducers
11
- Object.entries(reducers).forEach(([key, reducer]) =>
12
- registerReducer(key, reducer)
13
- );
14
-
15
8
  // register components for erb mounting
16
9
  componentRegistry.register({ name: 'WelcomeEnv', type: WelcomeEnv });
17
10
  componentRegistry.register({ name: 'ForemanPuppet', type: ForemanPuppet });
data/webpack/legacy.js ADDED
@@ -0,0 +1,31 @@
1
+ import $ from 'jquery';
2
+ import * as classEditor from './src/foreman_class_edit';
3
+ import * as hostForm from './src/foreman_puppet_host_form';
4
+
5
+ export const registerLegacy = () => {
6
+ window.tfm = Object.assign(window.tfm || {}, {
7
+ classEditor,
8
+ puppetEnc: {
9
+ hostForm,
10
+ },
11
+ });
12
+
13
+ // TODO: the checkForUnavailablePuppetclasses is very nasty
14
+ $(document)
15
+ .on('change', '.hostgroup-select', evt => {
16
+ const form = $('form.host-form')[0];
17
+ if (form && form.dataset.id) hostForm.updatePuppetclasses(evt.target);
18
+ })
19
+ .on('change', '.interface_domain', evt => {
20
+ hostForm.reloadPuppetclassParams();
21
+ })
22
+ .on('change', '.host-architecture-os-select', evt => {
23
+ hostForm.reloadPuppetclassParams();
24
+ })
25
+ .on('ContentLoad', evt => {
26
+ hostForm.checkForUnavailablePuppetclasses();
27
+ });
28
+ $(window).on('load', evt => {
29
+ hostForm.checkForUnavailablePuppetclasses();
30
+ });
31
+ };
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ import { translate as __ } from 'foremanReact/common/I18n';
3
+ import { addGlobalFill } from 'foremanReact/components/common/Fill/GlobalFill';
4
+ import PuppetTab from '../Host/PuppetTab';
5
+
6
+ const fills = [
7
+ {
8
+ slot: 'host-details-page-tabs',
9
+ name: 'Puppet',
10
+ component: props => <PuppetTab {...props} />,
11
+ weight: 500,
12
+ metadata: { title: __('Puppet') },
13
+ },
14
+ ];
15
+
16
+ export const registerFills = () => {
17
+ fills.forEach(({ slot, name, component: Component, weight, metadata }) =>
18
+ addGlobalFill(
19
+ slot,
20
+ name,
21
+ <Component key={`puppet-fill-${name}`} />,
22
+ weight,
23
+ metadata
24
+ )
25
+ );
26
+ };
@@ -0,0 +1,42 @@
1
+ import PropTypes from 'prop-types';
2
+ import React from 'react';
3
+ import { Route, Switch, Redirect } from 'react-router-dom';
4
+ import { route } from './helpers';
5
+ import EmptyPage from './SubTabs/EmptyPage';
6
+ import Reports from './SubTabs/Reports';
7
+
8
+ const SecondaryTabRoutes = ({ hostName, hostInfo, status }) => (
9
+ <Switch>
10
+ <Route path={route('reports')}>
11
+ {hostName ? (
12
+ <Reports hostName={hostName} hostInfo={hostInfo} status={status} />
13
+ ) : (
14
+ <EmptyPage header="Reports" />
15
+ )}
16
+ </Route>
17
+ <Route path={route('assigned')}>
18
+ <EmptyPage header="Assigned classes" />
19
+ </Route>
20
+ <Route path={route('smart-classes')}>
21
+ <EmptyPage header="Smart class parameters" />
22
+ </Route>
23
+ <Route path={route('yaml')}>
24
+ <EmptyPage header="YAML" />
25
+ </Route>
26
+ <Redirect to={route('reports')} />
27
+ </Switch>
28
+ );
29
+
30
+ SecondaryTabRoutes.propTypes = {
31
+ hostName: PropTypes.string,
32
+ hostInfo: PropTypes.object,
33
+ status: PropTypes.string,
34
+ };
35
+
36
+ SecondaryTabRoutes.defaultProps = {
37
+ hostName: '',
38
+ hostInfo: {},
39
+ status: undefined,
40
+ };
41
+
42
+ export default SecondaryTabRoutes;
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import PFEmptyPage from 'foremanReact/components/common/EmptyState/EmptyStatePattern';
4
+
5
+ const EmptyPage = ({ header }) => (
6
+ <div className="host-details-tab-item">
7
+ <PFEmptyPage
8
+ icon="enterprise"
9
+ header={header}
10
+ description="This is a demo for adding content to the new host page"
11
+ />
12
+ </div>
13
+ );
14
+
15
+ EmptyPage.propTypes = {
16
+ header: PropTypes.string.isRequired,
17
+ };
18
+
19
+ export default EmptyPage;
@@ -0,0 +1,71 @@
1
+ import PropTypes from 'prop-types';
2
+ import React from 'react';
3
+ import CardTemplate from 'foremanReact/components/HostDetails/Templates/CardItem/CardTemplate';
4
+ import {
5
+ DescriptionList,
6
+ DescriptionListTerm,
7
+ DescriptionListGroup,
8
+ DescriptionListDescription,
9
+ } from '@patternfly/react-core';
10
+ import SkeletonLoader from 'foremanReact/components/common/SkeletonLoader';
11
+ import DefaultLoaderEmptyState from 'foremanReact/components/HostDetails/DetailsCard/DefaultLoaderEmptyState';
12
+ import { STATUS } from 'foremanReact/constants';
13
+ import { translate as __ } from 'foremanReact/common/I18n';
14
+
15
+ const DescriptionCard = ({ proxyName, caProxy, env, status }) => (
16
+ <CardTemplate header={__('Puppet details')} expandable>
17
+ <DescriptionList isCompact>
18
+ <DescriptionListGroup>
19
+ <DescriptionListTerm>{__('Puppet environment')}</DescriptionListTerm>
20
+ <DescriptionListDescription>
21
+ <SkeletonLoader
22
+ emptyState={<DefaultLoaderEmptyState />}
23
+ status={status}
24
+ >
25
+ {env && (
26
+ <a href={`/foreman_puppet/environments/${env}/edit`}>{env}</a>
27
+ )}
28
+ </SkeletonLoader>
29
+ </DescriptionListDescription>
30
+ </DescriptionListGroup>
31
+ <DescriptionListGroup>
32
+ <DescriptionListTerm>{__('Puppet smart proxy')}</DescriptionListTerm>
33
+ <DescriptionListDescription>
34
+ <SkeletonLoader
35
+ emptyState={<DefaultLoaderEmptyState />}
36
+ status={status}
37
+ >
38
+ {proxyName}
39
+ </SkeletonLoader>
40
+ </DescriptionListDescription>
41
+ </DescriptionListGroup>
42
+ <DescriptionListGroup>
43
+ <DescriptionListTerm>{__('Puppet server CA')}</DescriptionListTerm>
44
+ <DescriptionListDescription>
45
+ <SkeletonLoader
46
+ emptyState={<DefaultLoaderEmptyState />}
47
+ status={status}
48
+ >
49
+ {caProxy}
50
+ </SkeletonLoader>
51
+ </DescriptionListDescription>
52
+ </DescriptionListGroup>
53
+ </DescriptionList>
54
+ </CardTemplate>
55
+ );
56
+
57
+ DescriptionCard.propTypes = {
58
+ caProxy: PropTypes.string,
59
+ env: PropTypes.string,
60
+ proxyName: PropTypes.string,
61
+ status: PropTypes.string,
62
+ };
63
+
64
+ DescriptionCard.defaultProps = {
65
+ caProxy: undefined,
66
+ env: undefined,
67
+ proxyName: undefined,
68
+ status: STATUS.PENDING,
69
+ };
70
+
71
+ export default DescriptionCard;
@@ -0,0 +1,45 @@
1
+ import PropTypes from 'prop-types';
2
+ import React from 'react';
3
+ import { Grid, GridItem } from '@patternfly/react-core';
4
+ import ReportsTab from 'foremanReact/components/HostDetails/Tabs/ReportsTab';
5
+ import DescriptionCard from './components/DescriptionCard';
6
+ import './styles.scss';
7
+
8
+ const Reports = ({
9
+ hostName,
10
+ status,
11
+ hostInfo: {
12
+ puppet_proxy_name: proxyName,
13
+ puppet_ca_proxy_name: caProxy,
14
+ environment_name: env,
15
+ },
16
+ }) => (
17
+ <div className="report-tab">
18
+ <Grid hasGutter>
19
+ <GridItem span={4}>
20
+ <DescriptionCard
21
+ proxyName={proxyName}
22
+ caProxy={caProxy}
23
+ env={env}
24
+ status={status}
25
+ />
26
+ </GridItem>
27
+ <GridItem span={12}>
28
+ <ReportsTab hostName={hostName} origin="Puppet" />
29
+ </GridItem>
30
+ </Grid>
31
+ </div>
32
+ );
33
+
34
+ Reports.propTypes = {
35
+ hostName: PropTypes.string.isRequired,
36
+ hostInfo: PropTypes.object,
37
+ status: PropTypes.string,
38
+ };
39
+
40
+ Reports.defaultProps = {
41
+ hostInfo: {},
42
+ status: undefined,
43
+ };
44
+
45
+ export default Reports;
@@ -0,0 +1,7 @@
1
+ .report-tab {
2
+ padding: 16px 24px;
3
+
4
+ .pf-c-card {
5
+ height: 100%;
6
+ }
7
+ }
@@ -0,0 +1,8 @@
1
+ import { translate as __ } from 'foremanReact/common/I18n';
2
+
3
+ export const SECONDARY_TABS = [
4
+ { key: 'reports', title: __('Reports') },
5
+ { key: 'assigned', title: __('Assigned classes') },
6
+ { key: 'smart-classes', title: __('Smart class parameters') },
7
+ { key: 'yaml', title: __('YAML') },
8
+ ];
@@ -0,0 +1,3 @@
1
+ export const hashRoute = subpath => `#/Puppet/${subpath}`;
2
+ export const route = subpath => hashRoute(subpath).substring(1);
3
+ export const activeTab = path => path.split('/')[2];
@@ -0,0 +1,51 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { useHistory } from 'react-router-dom';
4
+ import { Tabs, Tab, TabTitleText } from '@patternfly/react-core';
5
+ import { STATUS } from 'foremanReact/constants';
6
+
7
+ import SecondaryTabRoutes from './Routes';
8
+ import { activeTab } from './helpers';
9
+ import { SECONDARY_TABS } from './constants';
10
+
11
+ const PuppetTab = ({ response, status, location: { pathname } }) => {
12
+ const hashHistory = useHistory();
13
+ return (
14
+ <>
15
+ <Tabs
16
+ className="margin-0-24"
17
+ onSelect={(evt, subTab) => hashHistory.push(subTab)}
18
+ isSecondary
19
+ activeKey={activeTab(pathname)}
20
+ >
21
+ {SECONDARY_TABS.map(({ key, title }) => (
22
+ <Tab
23
+ key={key}
24
+ eventKey={key}
25
+ title={<TabTitleText>{title}</TabTitleText>}
26
+ />
27
+ ))}
28
+ </Tabs>
29
+ <SecondaryTabRoutes
30
+ hostName={response.name}
31
+ hostInfo={response}
32
+ status={status}
33
+ />
34
+ </>
35
+ );
36
+ };
37
+
38
+ PuppetTab.propTypes = {
39
+ response: PropTypes.object,
40
+ status: PropTypes.string,
41
+ location: PropTypes.shape({
42
+ pathname: PropTypes.string,
43
+ }),
44
+ };
45
+ PuppetTab.defaultProps = {
46
+ location: { pathname: '' },
47
+ response: { name: '' },
48
+ status: STATUS.PENDING,
49
+ };
50
+
51
+ export default PuppetTab;
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_puppet
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.7
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ondřej Ezr
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-06-03 00:00:00.000000000 Z
12
+ date: 2022-05-25 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Allow assigning Puppet environments and classes to the Foreman Hosts.
15
15
  email:
@@ -218,81 +218,44 @@ files:
218
218
  - locale/Makefile
219
219
  - locale/action_names.rb
220
220
  - locale/ca/LC_MESSAGES/foreman_puppet.mo
221
- - locale/ca/foreman_puppet.edit.po
222
221
  - locale/ca/foreman_puppet.po
223
- - locale/ca/foreman_puppet.po.time_stamp
224
222
  - locale/cs_CZ/LC_MESSAGES/foreman_puppet.mo
225
- - locale/cs_CZ/foreman_puppet.edit.po
226
223
  - locale/cs_CZ/foreman_puppet.po
227
- - locale/cs_CZ/foreman_puppet.po.time_stamp
228
224
  - locale/de/LC_MESSAGES/foreman_puppet.mo
229
- - locale/de/foreman_puppet.edit.po
230
225
  - locale/de/foreman_puppet.po
231
- - locale/de/foreman_puppet.po.time_stamp
232
226
  - locale/en/LC_MESSAGES/foreman_puppet.mo
233
227
  - locale/en/foreman_puppet.edit.po
234
228
  - locale/en/foreman_puppet.po
235
- - locale/en/foreman_puppet.po.time_stamp
236
- - locale/en/foreman_puppet.pox
237
229
  - locale/en_GB/LC_MESSAGES/foreman_puppet.mo
238
- - locale/en_GB/foreman_puppet.edit.po
239
230
  - locale/en_GB/foreman_puppet.po
240
- - locale/en_GB/foreman_puppet.po.time_stamp
241
231
  - locale/es/LC_MESSAGES/foreman_puppet.mo
242
- - locale/es/foreman_puppet.edit.po
243
232
  - locale/es/foreman_puppet.po
244
- - locale/es/foreman_puppet.po.time_stamp
245
233
  - locale/foreman_puppet.pot
246
234
  - locale/fr/LC_MESSAGES/foreman_puppet.mo
247
- - locale/fr/foreman_puppet.edit.po
248
235
  - locale/fr/foreman_puppet.po
249
- - locale/fr/foreman_puppet.po.time_stamp
250
236
  - locale/gemspec.rb
251
237
  - locale/gl/LC_MESSAGES/foreman_puppet.mo
252
- - locale/gl/foreman_puppet.edit.po
253
238
  - locale/gl/foreman_puppet.po
254
- - locale/gl/foreman_puppet.po.time_stamp
255
239
  - locale/it/LC_MESSAGES/foreman_puppet.mo
256
- - locale/it/foreman_puppet.edit.po
257
240
  - locale/it/foreman_puppet.po
258
- - locale/it/foreman_puppet.po.time_stamp
259
241
  - locale/ja/LC_MESSAGES/foreman_puppet.mo
260
- - locale/ja/foreman_puppet.edit.po
261
242
  - locale/ja/foreman_puppet.po
262
- - locale/ja/foreman_puppet.po.time_stamp
263
243
  - locale/ko/LC_MESSAGES/foreman_puppet.mo
264
- - locale/ko/foreman_puppet.edit.po
265
244
  - locale/ko/foreman_puppet.po
266
- - locale/ko/foreman_puppet.po.time_stamp
267
- - locale/messages.mo
268
245
  - locale/nl_NL/LC_MESSAGES/foreman_puppet.mo
269
- - locale/nl_NL/foreman_puppet.edit.po
270
246
  - locale/nl_NL/foreman_puppet.po
271
- - locale/nl_NL/foreman_puppet.po.time_stamp
272
247
  - locale/pl/LC_MESSAGES/foreman_puppet.mo
273
- - locale/pl/foreman_puppet.edit.po
274
248
  - locale/pl/foreman_puppet.po
275
- - locale/pl/foreman_puppet.po.time_stamp
276
249
  - locale/pt_BR/LC_MESSAGES/foreman_puppet.mo
277
- - locale/pt_BR/foreman_puppet.edit.po
278
250
  - locale/pt_BR/foreman_puppet.po
279
- - locale/pt_BR/foreman_puppet.po.time_stamp
280
251
  - locale/ru/LC_MESSAGES/foreman_puppet.mo
281
- - locale/ru/foreman_puppet.edit.po
282
252
  - locale/ru/foreman_puppet.po
283
- - locale/ru/foreman_puppet.po.time_stamp
284
253
  - locale/sv_SE/LC_MESSAGES/foreman_puppet.mo
285
- - locale/sv_SE/foreman_puppet.edit.po
286
254
  - locale/sv_SE/foreman_puppet.po
287
- - locale/sv_SE/foreman_puppet.po.time_stamp
288
255
  - locale/zh_CN/LC_MESSAGES/foreman_puppet.mo
289
- - locale/zh_CN/foreman_puppet.edit.po
290
256
  - locale/zh_CN/foreman_puppet.po
291
- - locale/zh_CN/foreman_puppet.po.time_stamp
292
257
  - locale/zh_TW/LC_MESSAGES/foreman_puppet.mo
293
- - locale/zh_TW/foreman_puppet.edit.po
294
258
  - locale/zh_TW/foreman_puppet.po
295
- - locale/zh_TW/foreman_puppet.po.time_stamp
296
259
  - package.json
297
260
  - test/controllers/foreman_puppet/api/v2/config_groups_controller_test.rb
298
261
  - test/controllers/foreman_puppet/api/v2/environments_controller_test.rb
@@ -369,9 +332,19 @@ files:
369
332
  - webpack/__mocks__/foremanReact/redux/actions/toasts.js
370
333
  - webpack/__mocks__/foremanReact/redux/index.js
371
334
  - webpack/__mocks__/foremanReact/redux/middlewares/IntervalMiddleware.js
372
- - webpack/fills_index.js
335
+ - webpack/global_index.js
373
336
  - webpack/index.js
337
+ - webpack/legacy.js
374
338
  - webpack/src/Components/Environments/Welcome.js
339
+ - webpack/src/Extends/Fills/index.js
340
+ - webpack/src/Extends/Host/PuppetTab/Routes.js
341
+ - webpack/src/Extends/Host/PuppetTab/SubTabs/EmptyPage.js
342
+ - webpack/src/Extends/Host/PuppetTab/SubTabs/Reports/components/DescriptionCard.js
343
+ - webpack/src/Extends/Host/PuppetTab/SubTabs/Reports/index.js
344
+ - webpack/src/Extends/Host/PuppetTab/SubTabs/Reports/styles.scss
345
+ - webpack/src/Extends/Host/PuppetTab/constants.js
346
+ - webpack/src/Extends/Host/PuppetTab/helpers.js
347
+ - webpack/src/Extends/Host/PuppetTab/index.js
375
348
  - webpack/src/ForemanPuppet.js
376
349
  - webpack/src/Router/__snapshots__/routes.test.js.snap
377
350
  - webpack/src/Router/index.js