foreman_puppet 1.0.3 → 1.0.4
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/app/controllers/concerns/foreman_puppet/extensions/parameters_host.rb +41 -32
- data/app/controllers/concerns/foreman_puppet/extensions/parameters_hostgroup.rb +42 -33
- data/app/services/concerns/foreman_puppet/extensions/host_counter.rb +17 -0
- data/lib/foreman_puppet/engine.rb +2 -0
- data/lib/foreman_puppet/version.rb +1 -1
- data/test/services/foreman_puppet/host_counter_test.rb +17 -0
- data/webpack/src/Components/Environments/Welcome.js +2 -2
- metadata +8 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0f4ecdeb14e00d3daed1a47021174874190c39173dbcf50548f8652128cff8c9
|
|
4
|
+
data.tar.gz: ee23eb1076fbf0a2d5a6b95e7d066c4eb88a343b99d039903f9350233095bb89
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fa9df4333cfdf456010e4a67e5a7d67c7a198424b471c48a22a04f86ee8896e8be69ffcdcdc8b0b7df87d081cc7773dc13a489fd1586a5924329fbe3adc0742e
|
|
7
|
+
data.tar.gz: 4fc2f8dfccfb68519faed7519b65a8347e156dc776240d66d235c52c36bbed9736755b79bae5407b6bf67c5f8fd46628f126e075099a781b040d0d00a7a87f32
|
|
@@ -14,12 +14,7 @@ module ForemanPuppet
|
|
|
14
14
|
module PatchedClassMethods
|
|
15
15
|
def host_params_filter
|
|
16
16
|
super.tap do |filter|
|
|
17
|
-
filter
|
|
18
|
-
config_groups: [], config_group_ids: [], config_group_names: [],
|
|
19
|
-
puppetclasses: [], puppetclass_ids: [], puppetclass_names: []
|
|
20
|
-
|
|
21
|
-
# TODO: bring to core - this is what facets should do, but does not
|
|
22
|
-
filter.permit(puppet_attributes: {})
|
|
17
|
+
add_host_puppet_params_filter(filter)
|
|
23
18
|
end
|
|
24
19
|
end
|
|
25
20
|
end
|
|
@@ -27,40 +22,54 @@ module ForemanPuppet
|
|
|
27
22
|
module PatchedMethods
|
|
28
23
|
def host_params(*attrs)
|
|
29
24
|
params = super(*attrs)
|
|
30
|
-
|
|
31
|
-
process_deprecated_environment_params!(params)
|
|
32
|
-
process_deprecated_attributes!(params)
|
|
25
|
+
process_deprecated_puppet_params!(params)
|
|
33
26
|
params
|
|
34
27
|
end
|
|
28
|
+
end
|
|
35
29
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
return unless env_id || env_name || env
|
|
42
|
-
::Foreman::Deprecation.api_deprecation_warning('param host[environment_*] has been deprecated in favor of host[puppet_attributes][environment_*]')
|
|
30
|
+
class_methods do
|
|
31
|
+
def add_host_puppet_params_filter(filter)
|
|
32
|
+
filter.permit :environment_id, :environment_name, :environment,
|
|
33
|
+
config_groups: [], config_group_ids: [], config_group_names: [],
|
|
34
|
+
puppetclasses: [], puppetclass_ids: [], puppetclass_names: []
|
|
43
35
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
params[:puppet_attributes][:environment_name] ||= env_name if env_name
|
|
47
|
-
params[:puppet_attributes][:environment] ||= env if env
|
|
36
|
+
# TODO: bring to core - this is what facets should do, but does not
|
|
37
|
+
filter.permit(puppet_attributes: {})
|
|
48
38
|
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def process_deprecated_puppet_params!(params, top_level_hash = controller_name.singularize)
|
|
42
|
+
process_deprecated_environment_params!(params, top_level_hash)
|
|
43
|
+
process_deprecated_attributes!(params, top_level_hash)
|
|
44
|
+
end
|
|
49
45
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
plains = params.delete(relation.pluralize.to_sym)
|
|
46
|
+
def process_deprecated_environment_params!(params, top_level_hash = 'host')
|
|
47
|
+
env_id = params.delete(:environment_id)
|
|
48
|
+
env_name = params.delete(:environment_name)
|
|
49
|
+
env = params.delete(:environment)
|
|
55
50
|
|
|
56
|
-
|
|
57
|
-
|
|
51
|
+
return unless env_id || env_name || env
|
|
52
|
+
::Foreman::Deprecation.api_deprecation_warning("param #{top_level_hash}[environment_*] has been deprecated in favor of #{top_level_hash}[puppet_attributes][environment_*]")
|
|
58
53
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
54
|
+
params[:puppet_attributes] ||= {}
|
|
55
|
+
params[:puppet_attributes][:environment_id] ||= env_id if env_id
|
|
56
|
+
params[:puppet_attributes][:environment_name] ||= env_name if env_name
|
|
57
|
+
params[:puppet_attributes][:environment] ||= env if env
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def process_deprecated_attributes!(params, top_level_hash = 'host')
|
|
61
|
+
%w[puppetclass config_group].each do |relation|
|
|
62
|
+
ids = params.delete("#{relation}_ids".to_sym)
|
|
63
|
+
names = params.delete("#{relation}_names".to_sym)
|
|
64
|
+
plains = params.delete(relation.pluralize.to_sym)
|
|
65
|
+
|
|
66
|
+
next unless ids || names || plains
|
|
67
|
+
::Foreman::Deprecation.api_deprecation_warning("param #{top_level_hash}[#{relation}_*] has been deprecated in favor of #{top_level_hash}[puppet_attributes][#{relation}_*]")
|
|
68
|
+
|
|
69
|
+
params[:puppet_attributes] ||= {}
|
|
70
|
+
params[:puppet_attributes]["#{relation}_ids".to_sym] ||= ids if ids
|
|
71
|
+
params[:puppet_attributes]["#{relation}_names".to_sym] ||= names if names
|
|
72
|
+
params[:puppet_attributes][relation.pluralize.to_sym] ||= plains if plains
|
|
64
73
|
end
|
|
65
74
|
end
|
|
66
75
|
end
|
|
@@ -14,12 +14,7 @@ module ForemanPuppet
|
|
|
14
14
|
module PatchedClassMethods
|
|
15
15
|
def hostgroup_params_filter
|
|
16
16
|
super.tap do |filter|
|
|
17
|
-
filter
|
|
18
|
-
config_group_ids: [], config_group_names: [],
|
|
19
|
-
puppetclass_ids: [], puppetclass_names: []
|
|
20
|
-
|
|
21
|
-
# TODO: bring to core - this is what facets should do, but does not
|
|
22
|
-
filter.permit(puppet_attributes: {})
|
|
17
|
+
add_hostgroup_puppet_params_filter(filter)
|
|
23
18
|
end
|
|
24
19
|
end
|
|
25
20
|
end
|
|
@@ -27,42 +22,56 @@ module ForemanPuppet
|
|
|
27
22
|
module PatchedMethods
|
|
28
23
|
def hostgroup_params(*attrs)
|
|
29
24
|
params = super(*attrs)
|
|
30
|
-
|
|
31
|
-
process_deprecated_hostgroup_environment_params!(params)
|
|
32
|
-
process_deprecated_hostgroup_attributes!(params)
|
|
25
|
+
process_deprecated_hostgroup_puppet_params!(params)
|
|
33
26
|
params
|
|
34
27
|
end
|
|
28
|
+
end
|
|
35
29
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
else
|
|
42
|
-
env_id = params[:environment_id]
|
|
43
|
-
env_name = params[:environment_name]
|
|
44
|
-
end
|
|
30
|
+
class_methods do
|
|
31
|
+
def add_hostgroup_puppet_params_filter(filter)
|
|
32
|
+
filter.permit :environment_id, :environment_name,
|
|
33
|
+
config_group_ids: [], config_group_names: [],
|
|
34
|
+
puppetclass_ids: [], puppetclass_names: []
|
|
45
35
|
|
|
46
|
-
|
|
47
|
-
|
|
36
|
+
# TODO: bring to core - this is what facets should do, but does not
|
|
37
|
+
filter.permit(puppet_attributes: {})
|
|
38
|
+
end
|
|
39
|
+
end
|
|
48
40
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
41
|
+
def process_deprecated_hostgroup_puppet_params!(params, top_level_hash = 'hostgroup')
|
|
42
|
+
process_deprecated_hostgroup_environment_params!(params, top_level_hash)
|
|
43
|
+
process_deprecated_hostgroup_attributes!(params, top_level_hash)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def process_deprecated_hostgroup_environment_params!(params, top_level_hash = 'hostgroup')
|
|
47
|
+
env_id = env_name = nil
|
|
48
|
+
if ForemanPuppet.extracted_from_core?
|
|
49
|
+
env_id = params.delete(:environment_id)
|
|
50
|
+
env_name = params.delete(:environment_name)
|
|
51
|
+
else
|
|
52
|
+
env_id = params[:environment_id]
|
|
53
|
+
env_name = params[:environment_name]
|
|
52
54
|
end
|
|
53
55
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
ids = params.delete("#{relation}_ids")
|
|
57
|
-
names = params.delete("#{relation}_names")
|
|
56
|
+
return unless env_id || env_name
|
|
57
|
+
::Foreman::Deprecation.api_deprecation_warning("param #{top_level_hash}[environment_*] has been deprecated in favor of #{top_level_hash}[puppet_attributes][environment_*]")
|
|
58
58
|
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
params[:puppet_attributes] ||= {}
|
|
60
|
+
params[:puppet_attributes][:environment_id] ||= env_id if env_id
|
|
61
|
+
params[:puppet_attributes][:environment_name] ||= env_name if env_name
|
|
62
|
+
end
|
|
61
63
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
def process_deprecated_hostgroup_attributes!(params, top_level_hash = 'hostgroup')
|
|
65
|
+
%w[puppetclass config_group].each do |relation|
|
|
66
|
+
ids = params.delete("#{relation}_ids")
|
|
67
|
+
names = params.delete("#{relation}_names")
|
|
68
|
+
|
|
69
|
+
next unless ids || names
|
|
70
|
+
::Foreman::Deprecation.api_deprecation_warning("param #{top_level_hash}[#{relation}_*] has been deprecated in favor of #{top_level_hash}[puppet_attributes][#{relation}_*]")
|
|
71
|
+
|
|
72
|
+
params[:puppet_attributes] ||= {}
|
|
73
|
+
params[:puppet_attributes]["#{relation}_ids".to_sym] ||= ids if ids
|
|
74
|
+
params[:puppet_attributes]["#{relation}_names".to_sym] ||= names if names
|
|
66
75
|
end
|
|
67
76
|
end
|
|
68
77
|
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module ForemanPuppet
|
|
2
|
+
module Extensions
|
|
3
|
+
module HostCounter
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
|
|
6
|
+
def counted_hosts
|
|
7
|
+
case @association.to_s
|
|
8
|
+
when 'environment'
|
|
9
|
+
hosts_scope = ::Host::Managed.reorder('').joins(:puppet)
|
|
10
|
+
hosts_scope.authorized(:view_hosts).group(HostPuppetFacet.arel_table[:environment_id]).count
|
|
11
|
+
else
|
|
12
|
+
super
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -79,6 +79,8 @@ module ForemanPuppet
|
|
|
79
79
|
::TemplateCombination.include ForemanPuppet::Extensions::TemplateCombination
|
|
80
80
|
::ProvisioningTemplate.include ForemanPuppet::Extensions::ProvisioningTemplate
|
|
81
81
|
|
|
82
|
+
::HostCounter.prepend ForemanPuppet::Extensions::HostCounter
|
|
83
|
+
|
|
82
84
|
::Api::V2::BaseController.include ForemanPuppet::Extensions::ApiBaseController
|
|
83
85
|
::Api::V2::HostsController.include ForemanPuppet::Extensions::ApiV2HostsController
|
|
84
86
|
::Api::V2::HostgroupsController.include ForemanPuppet::Extensions::ApiHostgroupsController
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'test_puppet_helper'
|
|
2
|
+
|
|
3
|
+
module ForemanPuppet
|
|
4
|
+
class HostCounterTest < ActiveSupport::TestCase
|
|
5
|
+
def hosts_count(association)
|
|
6
|
+
::HostCounter.new(association)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
let(:environment) { FactoryBot.create(:environment) }
|
|
10
|
+
|
|
11
|
+
test 'it should get number of hosts associated to environment' do
|
|
12
|
+
FactoryBot.create(:host, :with_puppet_enc, environment: environment)
|
|
13
|
+
count = hosts_count(:environment)
|
|
14
|
+
assert_equal 1, count[environment]
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -7,11 +7,11 @@ import { foremanUrl, getManualURL } from 'foremanReact/common/helpers';
|
|
|
7
7
|
export const WelcomeEnv = ({ canCreate }) => {
|
|
8
8
|
const action = canCreate && {
|
|
9
9
|
title: __('Create Puppet Environment'),
|
|
10
|
-
url: foremanUrl('environments/new'),
|
|
10
|
+
url: foremanUrl('/foreman_puppet/environments/new'),
|
|
11
11
|
};
|
|
12
12
|
|
|
13
13
|
const content = __(`If you are planning to use Foreman as an external node classifier you should provide information about one or more environments.<br/>
|
|
14
|
-
This information is commonly imported from a pre-existing Puppet configuration by the use of the <a href=${getManualURL(
|
|
14
|
+
This information is commonly imported from a pre-existing Puppet configuration by the use of the <a target="_blank" href=${getManualURL(
|
|
15
15
|
'4.2.2Classes'
|
|
16
16
|
)}>Puppet classes and environment importer.</a>`);
|
|
17
17
|
return (
|
metadata
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: foreman_puppet
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ondřej Ezr
|
|
8
8
|
- Shira Maximov
|
|
9
|
-
autorequire:
|
|
9
|
+
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2021-
|
|
12
|
+
date: 2021-10-27 00:00:00.000000000 Z
|
|
13
13
|
dependencies: []
|
|
14
14
|
description: Allow assigning Puppet environmets and classes to the Foreman Hosts.
|
|
15
15
|
email:
|
|
@@ -94,6 +94,7 @@ files:
|
|
|
94
94
|
- app/models/foreman_puppet/puppetclass.rb
|
|
95
95
|
- app/models/foreman_puppet/puppetclass_lookup_key.rb
|
|
96
96
|
- app/prepend_views/api/v2/template_combinations/base.json.rabl
|
|
97
|
+
- app/services/concerns/foreman_puppet/extensions/host_counter.rb
|
|
97
98
|
- app/services/foreman_puppet/host_info_providers/config_groups_info.rb
|
|
98
99
|
- app/services/foreman_puppet/host_info_providers/puppet_info.rb
|
|
99
100
|
- app/services/foreman_puppet/input_type/puppet_parameter_input.rb
|
|
@@ -263,6 +264,7 @@ files:
|
|
|
263
264
|
- test/models/foreman_puppet/report_test.rb
|
|
264
265
|
- test/models/foreman_puppet/smart_proxy_test.rb
|
|
265
266
|
- test/models/foreman_puppet/user_test.rb
|
|
267
|
+
- test/services/foreman_puppet/host_counter_test.rb
|
|
266
268
|
- test/services/foreman_puppet/host_info_providers/config_groups_info_test.rb
|
|
267
269
|
- test/services/foreman_puppet/host_info_providers/puppet_info_test.rb
|
|
268
270
|
- test/services/foreman_puppet/input_type/puppet_parameter_input_test.rb
|
|
@@ -296,7 +298,7 @@ homepage: https://github.com/theforeman/foreman_puppet
|
|
|
296
298
|
licenses:
|
|
297
299
|
- GPL-3.0
|
|
298
300
|
metadata: {}
|
|
299
|
-
post_install_message:
|
|
301
|
+
post_install_message:
|
|
300
302
|
rdoc_options: []
|
|
301
303
|
require_paths:
|
|
302
304
|
- lib
|
|
@@ -312,13 +314,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
312
314
|
version: '0'
|
|
313
315
|
requirements: []
|
|
314
316
|
rubygems_version: 3.1.6
|
|
315
|
-
signing_key:
|
|
317
|
+
signing_key:
|
|
316
318
|
specification_version: 4
|
|
317
319
|
summary: Adds puppet ENC features
|
|
318
320
|
test_files:
|
|
319
321
|
- test/services/foreman_puppet/host_info_providers/config_groups_info_test.rb
|
|
320
322
|
- test/services/foreman_puppet/host_info_providers/puppet_info_test.rb
|
|
321
323
|
- test/services/foreman_puppet/input_type/puppet_parameter_input_test.rb
|
|
324
|
+
- test/services/foreman_puppet/host_counter_test.rb
|
|
322
325
|
- test/integration/foreman_puppet/smartclass_parameter_js_test.rb
|
|
323
326
|
- test/integration/foreman_puppet/puppetclass_js_test.rb
|
|
324
327
|
- test/integration/foreman_puppet/hostgroup_js_test.rb
|