foreman_puppet 4.0.0 → 4.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -1
- data/db/migrate/20220208135305_migrate_environment_ignore_type.foreman_puppet.rb +2 -1
- data/lib/foreman_puppet/engine.rb +1 -0
- data/lib/foreman_puppet/register.rb +2 -1
- data/lib/foreman_puppet/version.rb +1 -1
- data/webpack/src/Extends/Host/PuppetTab/Routes.js +12 -8
- data/webpack/src/Extends/Host/PuppetTab/SubTabs/ENCPreview/ENCTab.js +61 -0
- data/webpack/src/Extends/Host/PuppetTab/SubTabs/ENCPreview/index.js +56 -0
- data/webpack/src/Extends/Host/PuppetTab/SubTabs/EmptyPage.js +7 -6
- data/webpack/src/Extends/Host/PuppetTab/SubTabs/Reports/components/DescriptionCard.js +23 -6
- data/webpack/src/Extends/Host/PuppetTab/SubTabs/Reports/index.js +6 -1
- data/webpack/src/Extends/Host/PuppetTab/constants.js +1 -1
- metadata +51 -50
- data/locale/en/foreman_puppet.edit.po +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 796b143175fddce006bbbca2b1cc835e53ef870b5efe03ace7d4826c7cf7a1da
|
4
|
+
data.tar.gz: 69dc252763e2625dbd25f6099b5474eea4ca566fa5a1b5161b780ff9c12b3b45
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bd64ee2f2f476cb19ec7bff88069d74a273ff7ba4035581ae197fda484f9fd42b9361fb5e1bade978201123b43ed09336e795af17455e44d5817fcf6570eedaa
|
7
|
+
data.tar.gz: 1ea07c0fd65f7b9d5a14ef2c8b4d6bd3b7c16ea1bc48edad123ba7acd5493891b879ad80ecf7fa8b40242c4114fdf48a4b1c8c9e6091928b8e286cfd90838609
|
data/README.md
CHANGED
@@ -37,6 +37,7 @@ You can install it on Foreman 2.5 to prepare for the Foreman update.
|
|
37
37
|
|
38
38
|
|Foreman version|Plugin version|Notes |
|
39
39
|
|---------------|--------------|------------------------------------------|
|
40
|
+
| >= 3.3 | ~> 4.0 | Required |
|
40
41
|
| >= 3.2 | ~> 3.0 | Required |
|
41
42
|
| ~> 3.1 | ~> 2.0 | Required |
|
42
43
|
| ~> 3.0 | ~> 1.0 | Required |
|
@@ -78,7 +79,7 @@ Fork and send a Pull Request. Thanks!
|
|
78
79
|
|
79
80
|
## Copyright
|
80
81
|
|
81
|
-
Copyright (c) *
|
82
|
+
Copyright (c) *2022* *The Foreman developers*
|
82
83
|
|
83
84
|
This program is free software: you can redistribute it and/or modify
|
84
85
|
it under the terms of the GNU General Public License as published by
|
@@ -7,7 +7,8 @@ class MigrateEnvironmentIgnoreType < ActiveRecord::Migration[6.0]
|
|
7
7
|
new_types = tax.ignore_types.reject { |type| type == 'Environment' }
|
8
8
|
tax.update_columns(ignore_types: new_types)
|
9
9
|
taxable_rows = environment_ids.map do |env_id|
|
10
|
-
{ taxable_id: env_id, taxable_type: 'ForemanPuppet::Environment', taxonomy_id: tax.id }
|
10
|
+
data = { taxable_id: env_id, taxable_type: 'ForemanPuppet::Environment', taxonomy_id: tax.id }
|
11
|
+
TaxableTaxonomy.column_names.include?('created_at') ? data.merge({ created_at: Time.zone.now, updated_at: Time.zone.now }) : data
|
11
12
|
end
|
12
13
|
TaxableTaxonomy.insert_all(taxable_rows) if taxable_rows.any?
|
13
14
|
end
|
@@ -58,6 +58,7 @@ module ForemanPuppet
|
|
58
58
|
::Api::V2::TemplateCombinationsController.include ForemanPuppet::Extensions::ApiTemplateCombinationsController
|
59
59
|
::Api::V2::HostsController.include ForemanPuppet::Extensions::ParametersHost
|
60
60
|
::Api::V2::HostgroupsController.include ForemanPuppet::Extensions::ParametersHostgroup
|
61
|
+
::ComputeResourcesVmsController.helper ForemanPuppet::HostsAndHostgroupsHelper
|
61
62
|
::OperatingsystemsController.prepend ForemanPuppet::Extensions::OperatingsystemsController
|
62
63
|
::HostsController.include ForemanPuppet::Extensions::HostsControllerExtensions
|
63
64
|
::HostsController.include ForemanPuppet::Extensions::ParametersHost
|
@@ -145,7 +145,8 @@ Foreman::Plugin.register :foreman_puppet do
|
|
145
145
|
'foreman_puppet/api/v2/puppetclasses' => [:destroy] },
|
146
146
|
resource_type: 'ForemanPuppet::Puppetclass'
|
147
147
|
permission :import_puppetclasses, { 'foreman_puppet/puppetclasses' => %i[import_environments obsolete_and_new],
|
148
|
-
'foreman_puppet/api/v2/environments' => [:import_puppetclasses]
|
148
|
+
'foreman_puppet/api/v2/environments' => [:import_puppetclasses],
|
149
|
+
'api/v2/smart_proxies' => [:import_puppetclasses] },
|
149
150
|
resource_type: 'ForemanPuppet::Puppetclass'
|
150
151
|
permission :edit_classes, { :host_editing => [:edit_classes],
|
151
152
|
'foreman_puppet/api/v2/host_classes' => %i[index create destroy] },
|
@@ -1,27 +1,31 @@
|
|
1
1
|
import PropTypes from 'prop-types';
|
2
2
|
import React from 'react';
|
3
3
|
import { Route, Switch, Redirect } from 'react-router-dom';
|
4
|
+
import { translate as __ } from 'foremanReact/common/I18n';
|
4
5
|
import { route } from './helpers';
|
5
6
|
import EmptyPage from './SubTabs/EmptyPage';
|
6
7
|
import Reports from './SubTabs/Reports';
|
8
|
+
import ENCPreview from './SubTabs/ENCPreview';
|
7
9
|
|
8
10
|
const SecondaryTabRoutes = ({ hostName, hostInfo, status }) => (
|
9
11
|
<Switch>
|
10
12
|
<Route path={route('reports')}>
|
11
|
-
{hostName
|
12
|
-
<Reports hostName={hostName} hostInfo={hostInfo} status={status} />
|
13
|
-
) : (
|
14
|
-
<EmptyPage header="Reports" />
|
15
|
-
)}
|
13
|
+
<Reports hostName={hostName} hostInfo={hostInfo} status={status} />
|
16
14
|
</Route>
|
17
15
|
<Route path={route('assigned')}>
|
18
|
-
<EmptyPage
|
16
|
+
<EmptyPage
|
17
|
+
header={__('Assigned classes')}
|
18
|
+
description={__('This tab is still a work in progress')}
|
19
|
+
/>
|
19
20
|
</Route>
|
20
21
|
<Route path={route('smart-classes')}>
|
21
|
-
<EmptyPage
|
22
|
+
<EmptyPage
|
23
|
+
header={__('Smart class parameters')}
|
24
|
+
description={__('This tab is still a work in progress')}
|
25
|
+
/>
|
22
26
|
</Route>
|
23
27
|
<Route path={route('yaml')}>
|
24
|
-
<
|
28
|
+
<ENCPreview hostName={hostName} />
|
25
29
|
</Route>
|
26
30
|
<Redirect to={route('reports')} />
|
27
31
|
</Switch>
|
@@ -0,0 +1,61 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import PropTypes from 'prop-types';
|
3
|
+
import {
|
4
|
+
CodeBlock,
|
5
|
+
CodeBlockAction,
|
6
|
+
CodeBlockCode,
|
7
|
+
ClipboardCopyButton,
|
8
|
+
} from '@patternfly/react-core';
|
9
|
+
|
10
|
+
export const ENCTab = ({ encData }) => {
|
11
|
+
const [copied, setCopied] = React.useState(false);
|
12
|
+
|
13
|
+
const code = `${encData}`;
|
14
|
+
|
15
|
+
const clipboardCopyFunc = (event, text) => {
|
16
|
+
const clipboard = event.currentTarget.parentElement;
|
17
|
+
const el = document.createElement('textarea');
|
18
|
+
el.value = text.toString();
|
19
|
+
clipboard.appendChild(el);
|
20
|
+
el.select();
|
21
|
+
document.execCommand('copy');
|
22
|
+
clipboard.removeChild(el);
|
23
|
+
};
|
24
|
+
|
25
|
+
const onClick = (event, text) => {
|
26
|
+
clipboardCopyFunc(event, text);
|
27
|
+
setCopied(true);
|
28
|
+
};
|
29
|
+
|
30
|
+
const actions = (
|
31
|
+
<CodeBlockAction>
|
32
|
+
<ClipboardCopyButton
|
33
|
+
id="copy-button"
|
34
|
+
textId="code-content"
|
35
|
+
aria-label="Copy to clipboard"
|
36
|
+
onClick={e => onClick(e, code)}
|
37
|
+
exitDelay={600}
|
38
|
+
maxWidth="110px"
|
39
|
+
variant="plain"
|
40
|
+
>
|
41
|
+
{copied ? 'Successfully copied to clipboard!' : 'Copy to clipboard'}
|
42
|
+
</ClipboardCopyButton>
|
43
|
+
</CodeBlockAction>
|
44
|
+
);
|
45
|
+
|
46
|
+
return (
|
47
|
+
<CodeBlock actions={actions}>
|
48
|
+
<CodeBlockCode id="code-content">{code}</CodeBlockCode>
|
49
|
+
</CodeBlock>
|
50
|
+
);
|
51
|
+
};
|
52
|
+
|
53
|
+
ENCTab.propTypes = {
|
54
|
+
encData: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),
|
55
|
+
};
|
56
|
+
|
57
|
+
ENCTab.defaultProps = {
|
58
|
+
encData: undefined,
|
59
|
+
};
|
60
|
+
|
61
|
+
export default ENCTab;
|
@@ -0,0 +1,56 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { useAPI } from 'foremanReact/common/hooks/API/APIHooks';
|
3
|
+
import PropTypes from 'prop-types';
|
4
|
+
|
5
|
+
import Skeleton from 'react-loading-skeleton';
|
6
|
+
import EmptyState from 'foremanReact/components/common/EmptyState/EmptyStatePattern';
|
7
|
+
import { STATUS } from 'foremanReact/constants';
|
8
|
+
import { EmptyStateIcon } from '@patternfly/react-core';
|
9
|
+
import { ExclamationCircleIcon } from '@patternfly/react-icons';
|
10
|
+
import { global_danger_color_200 as dangerColor } from '@patternfly/react-tokens';
|
11
|
+
import { translate as __ } from 'foremanReact/common/I18n';
|
12
|
+
import { ENCTab } from './ENCTab';
|
13
|
+
|
14
|
+
const ENCPreview = ({ hostName }) => {
|
15
|
+
const options = {
|
16
|
+
params: { name: hostName, format: 'yml' },
|
17
|
+
key: 'PUPPET_ENC_PREVIEW',
|
18
|
+
};
|
19
|
+
const url = `${window.location.origin.toString()}/foreman_puppet/hosts/${hostName}/externalNodes`;
|
20
|
+
const { response, status } = useAPI('get', url, options);
|
21
|
+
|
22
|
+
if (status === STATUS.PENDING) {
|
23
|
+
return <Skeleton count={5} />;
|
24
|
+
}
|
25
|
+
|
26
|
+
if (status === STATUS.ERROR || !hostName) {
|
27
|
+
const description = !hostName
|
28
|
+
? __("Couldn't find any ENC data for this host")
|
29
|
+
: response?.response?.data?.message;
|
30
|
+
const icon = (
|
31
|
+
<EmptyStateIcon icon={ExclamationCircleIcon} color={dangerColor.value} />
|
32
|
+
);
|
33
|
+
return (
|
34
|
+
<EmptyState header={__('Error!')} icon={icon} description={description} />
|
35
|
+
);
|
36
|
+
}
|
37
|
+
if (response !== '' || response !== undefined) {
|
38
|
+
return (
|
39
|
+
<div className="enc-preview-tab" padding="16px 24px">
|
40
|
+
<ENCTab encData={response} />
|
41
|
+
</div>
|
42
|
+
);
|
43
|
+
}
|
44
|
+
|
45
|
+
return null;
|
46
|
+
};
|
47
|
+
|
48
|
+
ENCPreview.propTypes = {
|
49
|
+
hostName: PropTypes.string,
|
50
|
+
};
|
51
|
+
|
52
|
+
ENCPreview.defaultProps = {
|
53
|
+
hostName: undefined,
|
54
|
+
};
|
55
|
+
|
56
|
+
export default ENCPreview;
|
@@ -2,18 +2,19 @@ import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
3
3
|
import PFEmptyPage from 'foremanReact/components/common/EmptyState/EmptyStatePattern';
|
4
4
|
|
5
|
-
const EmptyPage = ({ header }) => (
|
5
|
+
const EmptyPage = ({ header, description }) => (
|
6
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
|
-
/>
|
7
|
+
<PFEmptyPage icon="enterprise" header={header} description={description} />
|
12
8
|
</div>
|
13
9
|
);
|
14
10
|
|
15
11
|
EmptyPage.propTypes = {
|
16
12
|
header: PropTypes.string.isRequired,
|
13
|
+
description: PropTypes.string,
|
14
|
+
};
|
15
|
+
|
16
|
+
EmptyPage.defaultProps = {
|
17
|
+
description: null,
|
17
18
|
};
|
18
19
|
|
19
20
|
export default EmptyPage;
|
@@ -12,7 +12,14 @@ import DefaultLoaderEmptyState from 'foremanReact/components/HostDetails/Details
|
|
12
12
|
import { STATUS } from 'foremanReact/constants';
|
13
13
|
import { translate as __ } from 'foremanReact/common/I18n';
|
14
14
|
|
15
|
-
const DescriptionCard = ({
|
15
|
+
const DescriptionCard = ({
|
16
|
+
proxyName,
|
17
|
+
caProxy,
|
18
|
+
proxyId,
|
19
|
+
caProxyId,
|
20
|
+
env,
|
21
|
+
status,
|
22
|
+
}) => (
|
16
23
|
<CardTemplate header={__('Puppet details')} expandable>
|
17
24
|
<DescriptionList isCompact>
|
18
25
|
<DescriptionListGroup>
|
@@ -23,30 +30,36 @@ const DescriptionCard = ({ proxyName, caProxy, env, status }) => (
|
|
23
30
|
status={status}
|
24
31
|
>
|
25
32
|
{env && (
|
26
|
-
<a href={`/foreman_puppet/environments
|
33
|
+
<a href={`/foreman_puppet/environments/?search=name+%3D+${env}`}>
|
34
|
+
{env}
|
35
|
+
</a>
|
27
36
|
)}
|
28
37
|
</SkeletonLoader>
|
29
38
|
</DescriptionListDescription>
|
30
39
|
</DescriptionListGroup>
|
31
40
|
<DescriptionListGroup>
|
32
|
-
<DescriptionListTerm>{__('Puppet
|
41
|
+
<DescriptionListTerm>{__('Puppet Smart Proxy')}</DescriptionListTerm>
|
33
42
|
<DescriptionListDescription>
|
34
43
|
<SkeletonLoader
|
35
44
|
emptyState={<DefaultLoaderEmptyState />}
|
36
45
|
status={status}
|
37
46
|
>
|
38
|
-
{proxyName
|
47
|
+
{proxyName && (
|
48
|
+
<a href={`/smart_proxies/${proxyId}#puppet`}>{proxyName}</a>
|
49
|
+
)}
|
39
50
|
</SkeletonLoader>
|
40
51
|
</DescriptionListDescription>
|
41
52
|
</DescriptionListGroup>
|
42
53
|
<DescriptionListGroup>
|
43
|
-
<DescriptionListTerm>{__('Puppet
|
54
|
+
<DescriptionListTerm>{__('Puppet CA Smart Proxy')}</DescriptionListTerm>
|
44
55
|
<DescriptionListDescription>
|
45
56
|
<SkeletonLoader
|
46
57
|
emptyState={<DefaultLoaderEmptyState />}
|
47
58
|
status={status}
|
48
59
|
>
|
49
|
-
{caProxy
|
60
|
+
{caProxy && (
|
61
|
+
<a href={`/smart_proxies/${caProxyId}#puppet-ca`}>{caProxy}</a>
|
62
|
+
)}
|
50
63
|
</SkeletonLoader>
|
51
64
|
</DescriptionListDescription>
|
52
65
|
</DescriptionListGroup>
|
@@ -56,14 +69,18 @@ const DescriptionCard = ({ proxyName, caProxy, env, status }) => (
|
|
56
69
|
|
57
70
|
DescriptionCard.propTypes = {
|
58
71
|
caProxy: PropTypes.string,
|
72
|
+
caProxyId: PropTypes.number,
|
59
73
|
env: PropTypes.string,
|
74
|
+
proxyId: PropTypes.number,
|
60
75
|
proxyName: PropTypes.string,
|
61
76
|
status: PropTypes.string,
|
62
77
|
};
|
63
78
|
|
64
79
|
DescriptionCard.defaultProps = {
|
65
80
|
caProxy: undefined,
|
81
|
+
caProxyId: undefined,
|
66
82
|
env: undefined,
|
83
|
+
proxyId: undefined,
|
67
84
|
proxyName: undefined,
|
68
85
|
status: STATUS.PENDING,
|
69
86
|
};
|
@@ -12,6 +12,8 @@ const Reports = ({
|
|
12
12
|
puppet_proxy_name: proxyName,
|
13
13
|
puppet_ca_proxy_name: caProxy,
|
14
14
|
environment_name: env,
|
15
|
+
puppet_proxy_id: proxyId,
|
16
|
+
puppet_ca_proxy_id: caProxyId,
|
15
17
|
},
|
16
18
|
}) => (
|
17
19
|
<div className="report-tab">
|
@@ -20,6 +22,8 @@ const Reports = ({
|
|
20
22
|
<DescriptionCard
|
21
23
|
proxyName={proxyName}
|
22
24
|
caProxy={caProxy}
|
25
|
+
proxyId={proxyId}
|
26
|
+
caProxyId={caProxyId}
|
23
27
|
env={env}
|
24
28
|
status={status}
|
25
29
|
/>
|
@@ -32,12 +36,13 @@ const Reports = ({
|
|
32
36
|
);
|
33
37
|
|
34
38
|
Reports.propTypes = {
|
35
|
-
hostName: PropTypes.string
|
39
|
+
hostName: PropTypes.string,
|
36
40
|
hostInfo: PropTypes.object,
|
37
41
|
status: PropTypes.string,
|
38
42
|
};
|
39
43
|
|
40
44
|
Reports.defaultProps = {
|
45
|
+
hostName: undefined,
|
41
46
|
hostInfo: {},
|
42
47
|
status: undefined,
|
43
48
|
};
|
@@ -4,5 +4,5 @@ export const SECONDARY_TABS = [
|
|
4
4
|
{ key: 'reports', title: __('Reports') },
|
5
5
|
{ key: 'assigned', title: __('Assigned classes') },
|
6
6
|
{ key: 'smart-classes', title: __('Smart class parameters') },
|
7
|
-
{ key: 'yaml', title: __('
|
7
|
+
{ key: 'yaml', title: __('ENC Preview') },
|
8
8
|
];
|
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: 4.0.
|
4
|
+
version: 4.0.3
|
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-
|
12
|
+
date: 2022-08-31 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Allow assigning Puppet environments and classes to the Foreman Hosts.
|
15
15
|
email:
|
@@ -224,7 +224,6 @@ files:
|
|
224
224
|
- locale/de/LC_MESSAGES/foreman_puppet.mo
|
225
225
|
- locale/de/foreman_puppet.po
|
226
226
|
- locale/en/LC_MESSAGES/foreman_puppet.mo
|
227
|
-
- locale/en/foreman_puppet.edit.po
|
228
227
|
- locale/en/foreman_puppet.po
|
229
228
|
- locale/en_GB/LC_MESSAGES/foreman_puppet.mo
|
230
229
|
- locale/en_GB/foreman_puppet.po
|
@@ -338,6 +337,8 @@ files:
|
|
338
337
|
- webpack/src/Components/Environments/Welcome.js
|
339
338
|
- webpack/src/Extends/Fills/index.js
|
340
339
|
- webpack/src/Extends/Host/PuppetTab/Routes.js
|
340
|
+
- webpack/src/Extends/Host/PuppetTab/SubTabs/ENCPreview/ENCTab.js
|
341
|
+
- webpack/src/Extends/Host/PuppetTab/SubTabs/ENCPreview/index.js
|
341
342
|
- webpack/src/Extends/Host/PuppetTab/SubTabs/EmptyPage.js
|
342
343
|
- webpack/src/Extends/Host/PuppetTab/SubTabs/Reports/components/DescriptionCard.js
|
343
344
|
- webpack/src/Extends/Host/PuppetTab/SubTabs/Reports/index.js
|
@@ -379,70 +380,70 @@ signing_key:
|
|
379
380
|
specification_version: 4
|
380
381
|
summary: Add Puppet features to Foreman
|
381
382
|
test_files:
|
382
|
-
- test/
|
383
|
-
- test/unit/foreman_puppet/puppet_class_importer_test.rb
|
384
|
-
- test/unit/foreman_puppet/template_rendering_test.rb
|
385
|
-
- test/unit/foreman_puppet/access_permissions_test.rb
|
386
|
-
- test/helpers/foreman_puppet/puppetclass_lookup_keys_helper_test.rb
|
387
|
-
- test/helpers/foreman_puppet/hosts_and_hostgroups_helper_test.rb
|
388
|
-
- test/helpers/foreman_puppet/puppetclasses_helper_test.rb
|
389
|
-
- test/integration/foreman_puppet/dashboard_js_test.rb
|
390
|
-
- test/integration/foreman_puppet/host_js_test.rb
|
391
|
-
- test/integration/foreman_puppet/hostgroup_js_test.rb
|
392
|
-
- test/integration/foreman_puppet/smartclass_parameter_js_test.rb
|
393
|
-
- test/integration/foreman_puppet/puppetclass_js_test.rb
|
394
|
-
- test/integration/foreman_puppet/environment_js_test.rb
|
395
|
-
- test/factories/foreman_puppet_factories.rb
|
396
|
-
- test/factories/host_puppet_enhancements.rb
|
397
|
-
- test/factories/proxy_puppet_enhancements.rb
|
398
|
-
- test/integration_puppet_helper.rb
|
399
|
-
- test/models/foreman_puppet/config_group_test.rb
|
383
|
+
- test/test_puppet_helper.rb
|
400
384
|
- test/models/foreman_puppet/report_test.rb
|
401
|
-
- test/models/foreman_puppet/host_puppet_facet_test.rb
|
402
385
|
- test/models/foreman_puppet/host_test.rb
|
386
|
+
- test/models/foreman_puppet/smart_proxy_test.rb
|
403
387
|
- test/models/foreman_puppet/user_test.rb
|
404
|
-
- test/models/foreman_puppet/
|
388
|
+
- test/models/foreman_puppet/config_group_class_test.rb
|
389
|
+
- test/models/foreman_puppet/config_group_test.rb
|
390
|
+
- test/models/foreman_puppet/host_puppet_facet_test.rb
|
405
391
|
- test/models/foreman_puppet/host_config_group_test.rb
|
392
|
+
- test/models/foreman_puppet/puppetclass_test.rb
|
393
|
+
- test/models/foreman_puppet/provisioning_template_test.rb
|
406
394
|
- test/models/foreman_puppet/lookup_value_test.rb
|
407
|
-
- test/models/foreman_puppet/hostgroup_test.rb
|
408
|
-
- test/models/foreman_puppet/hostgroup_puppet_facet_test.rb
|
409
395
|
- test/models/foreman_puppet/puppetclass_lookup_key_test.rb
|
396
|
+
- test/models/foreman_puppet/hostgroup_puppet_facet_test.rb
|
410
397
|
- test/models/foreman_puppet/environment_test.rb
|
411
|
-
- test/models/foreman_puppet/
|
412
|
-
- test/
|
413
|
-
- test/
|
414
|
-
- test/
|
415
|
-
- test/
|
398
|
+
- test/models/foreman_puppet/hostgroup_test.rb
|
399
|
+
- test/services/foreman_puppet/host_counter_test.rb
|
400
|
+
- test/services/foreman_puppet/host_info_providers/config_groups_info_test.rb
|
401
|
+
- test/services/foreman_puppet/host_info_providers/puppet_info_test.rb
|
402
|
+
- test/services/foreman_puppet/input_type/puppet_parameter_input_test.rb
|
403
|
+
- test/factories/foreman_puppet_factories.rb
|
404
|
+
- test/factories/host_puppet_enhancements.rb
|
405
|
+
- test/factories/proxy_puppet_enhancements.rb
|
406
|
+
- test/unit/foreman_puppet/access_permissions_test.rb
|
407
|
+
- test/unit/foreman_puppet/template_rendering_test.rb
|
408
|
+
- test/unit/foreman_puppet/puppet_class_importer_test.rb
|
409
|
+
- test/unit/foreman_puppet_test.rb
|
410
|
+
- test/graphql/mutations/hosts/create_mutation_test.rb
|
411
|
+
- test/graphql/queries/environments_query_test.rb
|
416
412
|
- test/graphql/queries/location_query_test.rb
|
413
|
+
- test/graphql/queries/puppetclass_query_test.rb
|
417
414
|
- test/graphql/queries/organization_query_test.rb
|
418
|
-
- test/graphql/queries/puppetclasses_query_test.rb
|
419
|
-
- test/graphql/queries/environment_query_test.rb
|
420
|
-
- test/graphql/queries/environments_query_test.rb
|
421
415
|
- test/graphql/queries/host_puppet_query_test.rb
|
422
|
-
- test/graphql/
|
423
|
-
- test/
|
424
|
-
- test/
|
416
|
+
- test/graphql/queries/environment_query_test.rb
|
417
|
+
- test/graphql/queries/puppetclasses_query_test.rb
|
418
|
+
- test/graphql/queries/hostgroup_puppet_query_test.rb
|
425
419
|
- test/controllers/foreman_puppet/hostgroups_controller_test.rb
|
420
|
+
- test/controllers/foreman_puppet/config_groups_controller_test.rb
|
426
421
|
- test/controllers/foreman_puppet/puppetclass_lookup_keys_controller_test.rb
|
427
422
|
- test/controllers/foreman_puppet/environments_controller_test.rb
|
428
423
|
- test/controllers/foreman_puppet/puppet_smart_proxies_controller_test.rb
|
429
424
|
- test/controllers/foreman_puppet/hosts_controller_test.rb
|
430
|
-
- test/controllers/foreman_puppet/api/v2/template_combinations_controller_test.rb
|
431
|
-
- test/controllers/foreman_puppet/api/v2/smart_class_parameters_controller_test.rb
|
432
|
-
- test/controllers/foreman_puppet/api/v2/host_classes_controller_test.rb
|
433
425
|
- test/controllers/foreman_puppet/api/v2/hostgroups_controller_test.rb
|
434
|
-
- test/controllers/foreman_puppet/api/v2/lookups_common_controller_test.rb
|
435
|
-
- test/controllers/foreman_puppet/api/v2/environments_controller_test.rb
|
436
|
-
- test/controllers/foreman_puppet/api/v2/hosts_controller_test.rb
|
437
|
-
- test/controllers/foreman_puppet/api/v2/hostgroup_classes_controller_test.rb
|
438
|
-
- test/controllers/foreman_puppet/api/v2/puppetclasses_controller_test.rb
|
439
|
-
- test/controllers/foreman_puppet/api/v2/smart_proxies_controller_test.rb
|
440
426
|
- test/controllers/foreman_puppet/api/v2/override_values_controller_test.rb
|
441
427
|
- test/controllers/foreman_puppet/api/v2/config_groups_controller_test.rb
|
428
|
+
- test/controllers/foreman_puppet/api/v2/smart_proxies_controller_test.rb
|
429
|
+
- test/controllers/foreman_puppet/api/v2/environments_controller_test.rb
|
430
|
+
- test/controllers/foreman_puppet/api/v2/hosts_controller_test.rb
|
431
|
+
- test/controllers/foreman_puppet/api/v2/lookups_common_controller_test.rb
|
432
|
+
- test/controllers/foreman_puppet/api/v2/smart_class_parameters_controller_test.rb
|
442
433
|
- test/controllers/foreman_puppet/api/v2/provisioning_templates_controller_test.rb
|
434
|
+
- test/controllers/foreman_puppet/api/v2/template_combinations_controller_test.rb
|
435
|
+
- test/controllers/foreman_puppet/api/v2/host_classes_controller_test.rb
|
436
|
+
- test/controllers/foreman_puppet/api/v2/puppetclasses_controller_test.rb
|
437
|
+
- test/controllers/foreman_puppet/api/v2/hostgroup_classes_controller_test.rb
|
443
438
|
- test/controllers/foreman_puppet/puppetclasses_controller_test.rb
|
444
|
-
- test/controllers/
|
445
|
-
- test/
|
446
|
-
- test/
|
447
|
-
- test/
|
448
|
-
- test/
|
439
|
+
- test/controllers/provisioning_templates_controller_test.rb
|
440
|
+
- test/integration/foreman_puppet/puppetclass_js_test.rb
|
441
|
+
- test/integration/foreman_puppet/host_js_test.rb
|
442
|
+
- test/integration/foreman_puppet/environment_js_test.rb
|
443
|
+
- test/integration/foreman_puppet/dashboard_js_test.rb
|
444
|
+
- test/integration/foreman_puppet/smartclass_parameter_js_test.rb
|
445
|
+
- test/integration/foreman_puppet/hostgroup_js_test.rb
|
446
|
+
- test/helpers/foreman_puppet/puppetclass_lookup_keys_helper_test.rb
|
447
|
+
- test/helpers/foreman_puppet/puppetclasses_helper_test.rb
|
448
|
+
- test/helpers/foreman_puppet/hosts_and_hostgroups_helper_test.rb
|
449
|
+
- test/integration_puppet_helper.rb
|
File without changes
|