foreman_puppet 4.1.0 → 5.0.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.
- checksums.yaml +4 -4
- data/README.md +2 -3
- data/app/graphgl/concerns/foreman_puppet/mutations/hosts/create_extensions.rb +9 -5
- data/app/models/foreman_puppet/puppetclass.rb +2 -2
- data/lib/foreman_puppet/register.rb +6 -4
- data/lib/foreman_puppet/version.rb +1 -1
- data/test/graphql/mutations/hosts/create_mutation_test.rb +39 -1
- data/webpack/src/Extends/Host/PuppetTab/Routes.js +2 -4
- data/webpack/src/Extends/Host/PuppetTab/SubTabs/Reports/components/DescriptionCard.js +48 -72
- data/webpack/src/Extends/Host/PuppetTab/constants.js +4 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad8bedb9a6b0aa20d769da8ad51d57891e3c77da03ed70f2a90cdf9fe7af3ffa
|
4
|
+
data.tar.gz: 17d3af41d610400ba081936f7b151d9329ae26b1fd311c81eaf5925a23366841
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a87e47f5a35f3a45bb6ac4a77f591ee0b85c37f6736972afd97559d35f4c752a7647c0958b3f7a131ef45b75b54b0f1f2cc104b6a6e4d78a847162a54de73d8f
|
7
|
+
data.tar.gz: 3a9c0f4ef48ce2e69e46dd1bbe54a488911e9d97261429f2d6d1f01fb48f53679a651beebb5e94a6bcc1c8159319241d260e342327ff018b9e9c3c8f1bb93281
|
data/README.md
CHANGED
@@ -37,9 +37,8 @@ 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
|
-
|
|
41
|
-
|
|
42
|
-
| ~> 3.2 | ~> 3.0 | Required |
|
40
|
+
| >= 3.3 | ~> 4.0 | Required |
|
41
|
+
| >= 3.2 | ~> 3.0 | Required |
|
43
42
|
| ~> 3.1 | ~> 2.0 | Required |
|
44
43
|
| ~> 3.0 | ~> 1.0 | Required |
|
45
44
|
| >= 2.5 | ~> 0.1 | Optional; replaces Core features |
|
@@ -4,16 +4,20 @@ module ForemanPuppet
|
|
4
4
|
module Mutations
|
5
5
|
module Hosts
|
6
6
|
module CreateExtensions
|
7
|
-
PUPPET_PARAMS = %i[
|
8
|
-
environment
|
9
|
-
puppetclasses
|
10
|
-
].freeze
|
11
|
-
|
12
7
|
extend ActiveSupport::Concern
|
13
8
|
|
14
9
|
included do
|
10
|
+
prepend PatchMethods
|
11
|
+
|
15
12
|
argument :environment_id, GraphQL::Types::ID, loads: ForemanPuppet::Types::Environment
|
16
13
|
argument :puppetclass_ids, [GraphQL::Types::ID], loads: ForemanPuppet::Types::Puppetclass, as: :puppetclasses
|
14
|
+
end
|
15
|
+
|
16
|
+
module PatchMethods
|
17
|
+
PUPPET_PARAMS = %i[
|
18
|
+
environment
|
19
|
+
puppetclasses
|
20
|
+
].freeze
|
17
21
|
|
18
22
|
private
|
19
23
|
|
@@ -15,8 +15,8 @@ module ForemanPuppet
|
|
15
15
|
before_destroy EnsureNotUsedBy.new(:hosts, :hostgroups)
|
16
16
|
has_many :environment_classes, dependent: :destroy, inverse_of: :puppetclass
|
17
17
|
has_many :environments, -> { distinct }, through: :environment_classes
|
18
|
-
has_many :organizations, -> { distinct.reorder(
|
19
|
-
has_many :locations, -> { distinct.reorder(
|
18
|
+
has_many :organizations, -> { distinct.reorder(nil) }, through: :environments
|
19
|
+
has_many :locations, -> { distinct.reorder(nil) }, through: :environments
|
20
20
|
|
21
21
|
# rubocop:disable Rails/HasAndBelongsToMany
|
22
22
|
has_and_belongs_to_many :operatingsystems
|
@@ -1,5 +1,5 @@
|
|
1
1
|
Foreman::Plugin.register :foreman_puppet do
|
2
|
-
requires_foreman '>= 3.
|
2
|
+
requires_foreman '>= 3.5.0'
|
3
3
|
# Add Global JS file for extending foreman-core components and routes
|
4
4
|
register_global_js_file 'global'
|
5
5
|
|
@@ -225,8 +225,10 @@ Foreman::Plugin.register :foreman_puppet do
|
|
225
225
|
priority: 100
|
226
226
|
end
|
227
227
|
end
|
228
|
-
extend_page 'hosts/_list' do |
|
229
|
-
|
230
|
-
|
228
|
+
extend_page 'hosts/_list' do |context|
|
229
|
+
context.with_profile :puppet, _('Puppet'), default: true do
|
230
|
+
add_pagelet :hosts_table_column_header, key: :environment, label: s_('Environment name'), sortable: true, width: '10%', class: 'hidden-xs'
|
231
|
+
add_pagelet :hosts_table_column_content, key: :environment, callback: ->(host) { host.environment }, class: 'hidden-xs ellipsis'
|
232
|
+
end
|
231
233
|
end
|
232
234
|
end
|
@@ -6,7 +6,18 @@ module ForemanPuppet
|
|
6
6
|
class CreateMutationTest < GraphQLQueryTestCase
|
7
7
|
let(:hostname) { 'my-graphql-host' }
|
8
8
|
let(:tax_location) { FactoryBot.create(:location) }
|
9
|
+
let(:location_id) { Foreman::GlobalId.for(tax_location) }
|
9
10
|
let(:organization) { FactoryBot.create(:organization) }
|
11
|
+
let(:organization_id) { Foreman::GlobalId.for(organization) }
|
12
|
+
let(:domain) { FactoryBot.create(:domain) }
|
13
|
+
let(:domain_id) { Foreman::GlobalId.for(domain) }
|
14
|
+
let(:operatingsystem) { FactoryBot.create(:operatingsystem, :with_grub, :with_associations) }
|
15
|
+
let(:operatingsystem_id) { Foreman::GlobalId.for(operatingsystem) }
|
16
|
+
let(:ptable_id) { Foreman::GlobalId.for(operatingsystem.ptables.first) }
|
17
|
+
let(:medium_id) { Foreman::GlobalId.for(operatingsystem.media.first) }
|
18
|
+
let(:architecture_id) { Foreman::GlobalId.for(operatingsystem.architectures.first) }
|
19
|
+
let(:ip) { '192.0.2.1' }
|
20
|
+
|
10
21
|
let(:environment) { FactoryBot.create(:environment, locations: [tax_location], organizations: [organization]) }
|
11
22
|
let(:environment_id) { Foreman::GlobalId.for(environment) }
|
12
23
|
let(:puppetclass) { FactoryBot.create(:puppetclass) }
|
@@ -16,6 +27,14 @@ module ForemanPuppet
|
|
16
27
|
{
|
17
28
|
name: hostname,
|
18
29
|
environmentId: environment_id,
|
30
|
+
ip: ip,
|
31
|
+
locationId: location_id,
|
32
|
+
organizationId: organization_id,
|
33
|
+
domainId: domain_id,
|
34
|
+
operatingsystemId: operatingsystem_id,
|
35
|
+
ptableId: ptable_id,
|
36
|
+
mediumId: medium_id,
|
37
|
+
architectureId: architecture_id,
|
19
38
|
puppetclassIds: [puppetclass_id],
|
20
39
|
interfacesAttributes: [
|
21
40
|
{
|
@@ -37,12 +56,29 @@ module ForemanPuppet
|
|
37
56
|
mutation createHostMutation(
|
38
57
|
$name: String!,
|
39
58
|
$environmentId: ID,
|
59
|
+
$ip: String,
|
60
|
+
$locationId: ID!,
|
61
|
+
$organizationId: ID!,
|
62
|
+
$domainId: ID,
|
63
|
+
$operatingsystemId: ID,
|
64
|
+
$architectureId: ID,
|
65
|
+
$ptableId: ID,
|
66
|
+
$mediumId: ID,
|
40
67
|
$puppetclassIds: [ID!],
|
41
68
|
$interfacesAttributes: [InterfaceAttributesInput!]
|
42
69
|
) {
|
43
70
|
createHost(input: {
|
44
71
|
name: $name,
|
45
72
|
environmentId: $environmentId,
|
73
|
+
ip: $ip,
|
74
|
+
architectureId: $architectureId,
|
75
|
+
locationId: $locationId,
|
76
|
+
organizationId: $organizationId,
|
77
|
+
domainId: $domainId,
|
78
|
+
operatingsystemId: $operatingsystemId,
|
79
|
+
architectureId: $architectureId,
|
80
|
+
ptableId: $ptableId,
|
81
|
+
mediumId: $mediumId,
|
46
82
|
puppetclassIds: $puppetclassIds,
|
47
83
|
interfacesAttributes: $interfacesAttributes,
|
48
84
|
}) {
|
@@ -72,12 +108,14 @@ module ForemanPuppet
|
|
72
108
|
assert_equal 1, host.interfaces.count
|
73
109
|
interface = host.interfaces.first
|
74
110
|
assert_equal 'Nic::Bond', interface.type
|
75
|
-
|
111
|
+
assert_equal 'eth0, eth1', interface.attached_to
|
76
112
|
assert_equal 'bond0', interface.identifier
|
77
113
|
assert interface.primary
|
78
114
|
assert interface.provision
|
79
115
|
assert interface.managed
|
80
116
|
|
117
|
+
assert_not_nil host.pxe_loader
|
118
|
+
|
81
119
|
assert_not_nil data
|
82
120
|
end
|
83
121
|
end
|
@@ -1,9 +1,7 @@
|
|
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';
|
5
4
|
import { route } from './helpers';
|
6
|
-
import EmptyPage from './SubTabs/EmptyPage';
|
7
5
|
import Reports from './SubTabs/Reports';
|
8
6
|
import ENCPreview from './SubTabs/ENCPreview';
|
9
7
|
|
@@ -12,7 +10,7 @@ const SecondaryTabRoutes = ({ hostName, hostInfo, status }) => (
|
|
12
10
|
<Route path={route('reports')}>
|
13
11
|
<Reports hostName={hostName} hostInfo={hostInfo} status={status} />
|
14
12
|
</Route>
|
15
|
-
<Route path={route('assigned')}>
|
13
|
+
{/* <Route path={route('assigned')}>
|
16
14
|
<EmptyPage
|
17
15
|
header={__('Assigned classes')}
|
18
16
|
description={__('This tab is still a work in progress')}
|
@@ -23,7 +21,7 @@ const SecondaryTabRoutes = ({ hostName, hostInfo, status }) => (
|
|
23
21
|
header={__('Smart class parameters')}
|
24
22
|
description={__('This tab is still a work in progress')}
|
25
23
|
/>
|
26
|
-
</Route>
|
24
|
+
</Route> */}
|
27
25
|
<Route path={route('yaml')}>
|
28
26
|
<ENCPreview hostName={hostName} />
|
29
27
|
</Route>
|
@@ -1,11 +1,7 @@
|
|
1
1
|
import PropTypes from 'prop-types';
|
2
2
|
import React from 'react';
|
3
|
+
import CardTemplate from 'foremanReact/components/HostDetails/Templates/CardItem/CardTemplate';
|
3
4
|
import {
|
4
|
-
Card,
|
5
|
-
CardBody,
|
6
|
-
CardHeader,
|
7
|
-
CardTitle,
|
8
|
-
CardExpandableContent,
|
9
5
|
DescriptionList,
|
10
6
|
DescriptionListTerm,
|
11
7
|
DescriptionListGroup,
|
@@ -23,73 +19,53 @@ const DescriptionCard = ({
|
|
23
19
|
caProxyId,
|
24
20
|
env,
|
25
21
|
status,
|
26
|
-
}) =>
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
<
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
<
|
38
|
-
{
|
39
|
-
</
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
</DescriptionListTerm>
|
74
|
-
<DescriptionListDescription>
|
75
|
-
<SkeletonLoader
|
76
|
-
emptyState={<DefaultLoaderEmptyState />}
|
77
|
-
status={status}
|
78
|
-
>
|
79
|
-
{caProxy && (
|
80
|
-
<a href={`/smart_proxies/${caProxyId}#puppet-ca`}>
|
81
|
-
{caProxy}
|
82
|
-
</a>
|
83
|
-
)}
|
84
|
-
</SkeletonLoader>
|
85
|
-
</DescriptionListDescription>
|
86
|
-
</DescriptionListGroup>
|
87
|
-
</DescriptionList>
|
88
|
-
</CardBody>
|
89
|
-
</CardExpandableContent>
|
90
|
-
</Card>
|
91
|
-
);
|
92
|
-
};
|
22
|
+
}) => (
|
23
|
+
<CardTemplate header={__('Puppet details')} expandable>
|
24
|
+
<DescriptionList isCompact>
|
25
|
+
<DescriptionListGroup>
|
26
|
+
<DescriptionListTerm>{__('Puppet environment')}</DescriptionListTerm>
|
27
|
+
<DescriptionListDescription>
|
28
|
+
<SkeletonLoader
|
29
|
+
emptyState={<DefaultLoaderEmptyState />}
|
30
|
+
status={status}
|
31
|
+
>
|
32
|
+
{env && (
|
33
|
+
<a href={`/foreman_puppet/environments/?search=name+%3D+${env}`}>
|
34
|
+
{env}
|
35
|
+
</a>
|
36
|
+
)}
|
37
|
+
</SkeletonLoader>
|
38
|
+
</DescriptionListDescription>
|
39
|
+
</DescriptionListGroup>
|
40
|
+
<DescriptionListGroup>
|
41
|
+
<DescriptionListTerm>{__('Puppet Smart Proxy')}</DescriptionListTerm>
|
42
|
+
<DescriptionListDescription>
|
43
|
+
<SkeletonLoader
|
44
|
+
emptyState={<DefaultLoaderEmptyState />}
|
45
|
+
status={status}
|
46
|
+
>
|
47
|
+
{proxyName && (
|
48
|
+
<a href={`/smart_proxies/${proxyId}#puppet`}>{proxyName}</a>
|
49
|
+
)}
|
50
|
+
</SkeletonLoader>
|
51
|
+
</DescriptionListDescription>
|
52
|
+
</DescriptionListGroup>
|
53
|
+
<DescriptionListGroup>
|
54
|
+
<DescriptionListTerm>{__('Puppet CA Smart Proxy')}</DescriptionListTerm>
|
55
|
+
<DescriptionListDescription>
|
56
|
+
<SkeletonLoader
|
57
|
+
emptyState={<DefaultLoaderEmptyState />}
|
58
|
+
status={status}
|
59
|
+
>
|
60
|
+
{caProxy && (
|
61
|
+
<a href={`/smart_proxies/${caProxyId}#puppet-ca`}>{caProxy}</a>
|
62
|
+
)}
|
63
|
+
</SkeletonLoader>
|
64
|
+
</DescriptionListDescription>
|
65
|
+
</DescriptionListGroup>
|
66
|
+
</DescriptionList>
|
67
|
+
</CardTemplate>
|
68
|
+
);
|
93
69
|
|
94
70
|
DescriptionCard.propTypes = {
|
95
71
|
caProxy: PropTypes.string,
|
@@ -2,7 +2,9 @@ import { translate as __ } from 'foremanReact/common/I18n';
|
|
2
2
|
|
3
3
|
export const SECONDARY_TABS = [
|
4
4
|
{ key: 'reports', title: __('Reports') },
|
5
|
-
|
6
|
-
|
5
|
+
/** Hiding the two tabs since they were not implemented yet and shouldn't be part of the release.
|
6
|
+
* { key: 'assigned', title: __('Assigned classes') },
|
7
|
+
* { key: 'smart-classes', title: __('Smart class parameters') },
|
8
|
+
*/
|
7
9
|
{ key: 'yaml', title: __('ENC Preview') },
|
8
10
|
];
|
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
|
+
version: 5.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-
|
12
|
+
date: 2022-11-22 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Allow assigning Puppet environments and classes to the Foreman Hosts.
|
15
15
|
email:
|