foreman_puppet 1.0.1 → 1.0.5

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.
Files changed (25) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/concerns/foreman_puppet/extensions/hostgroups_controller_extensions.rb +4 -2
  3. data/app/controllers/concerns/foreman_puppet/extensions/hosts_controller_extensions.rb +1 -1
  4. data/app/controllers/concerns/foreman_puppet/extensions/parameters_host.rb +41 -32
  5. data/app/controllers/concerns/foreman_puppet/extensions/parameters_hostgroup.rb +42 -33
  6. data/app/helpers/foreman_puppet/puppet_smart_proxies_helper.rb +4 -0
  7. data/app/models/foreman_puppet/host_puppet_facet.rb +1 -1
  8. data/app/models/foreman_puppet/hostgroup_puppet_facet.rb +2 -0
  9. data/app/services/concerns/foreman_puppet/extensions/host_counter.rb +17 -0
  10. data/app/views/hosts/_form_puppet_enc_tab.html.erb +3 -4
  11. data/db/migrate/20200803113803_migrate_environment_to_puppet_facet.foreman_puppet.rb +2 -2
  12. data/db/migrate/20200803113903_migrate_host_type_in_host_config_groups.foreman_puppet.rb +36 -20
  13. data/db/migrate/20211112130803_cleanup_environment_from_core_tables.foreman_puppet.rb +10 -0
  14. data/lib/foreman_puppet/engine.rb +2 -0
  15. data/lib/foreman_puppet/version.rb +1 -1
  16. data/locale/cs_CZ/foreman_puppet.edit.po +1085 -0
  17. data/locale/cs_CZ/foreman_puppet.po.time_stamp +0 -0
  18. data/locale/en/foreman_puppet.edit.po +317 -162
  19. data/test/controllers/foreman_puppet/hostgroups_controller_test.rb +72 -52
  20. data/test/factories/host_puppet_enhancements.rb +3 -0
  21. data/test/helpers/foreman_puppet/hosts_and_hostgroups_helper_test.rb +70 -31
  22. data/test/models/foreman_puppet/host_puppet_facet_test.rb +7 -1
  23. data/test/services/foreman_puppet/host_counter_test.rb +17 -0
  24. data/webpack/src/Components/Environments/Welcome.js +2 -2
  25. metadata +11 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8c94283a315fba5f8c4f0d7cca627639f595cbbeb09a6806ab363762ba1b0334
4
- data.tar.gz: 6a503f11d1be7297370f7d34557024e1a9186f579710ca73a902acb81b766ef8
3
+ metadata.gz: 7f8a5c7b68f8d77f54787c4c9de924bc02f27d7a0f957fc6539b5b4aa6c64b49
4
+ data.tar.gz: 6cd563d9cc2f56c22186bbbb0fb9d3c9679c8718e965d7fd952bbed3efacf222
5
5
  SHA512:
6
- metadata.gz: be25708b1c38b99dfa4b2bee8d2e1f7da8f3f546a88a4a54b666673de28b08770b274e6cb098fa4eead33dc6770a93c4c1bba3e38dc45721ecbe148dbc9671b2
7
- data.tar.gz: fa689ed7f12f34fc33fa7a0f9a7ca658ede1ca947cd4d37c77c10a015b5f933fd0d1116d0574bb308e743d4d9739990396005b5ff8ba9109d89df052f3332394
6
+ metadata.gz: 1a09cf7ff50545983f0e472b3c03f0708087dddf8d2136dc32978f49a1fd76ba7ca4c716db6e6b3add3055279745754b2d2eddf2cd1630a91e75187ba9683c1e
7
+ data.tar.gz: 5c4bb18d77784e2a9c43c7f102adc9df6469b739525fee007d1c89bf635713e1dd051140489101ebeb9d66298100195f56571fa5fb55a1a179c8381cac56a65b
@@ -23,7 +23,9 @@ module ForemanPuppet
23
23
  module Actions
24
24
  def nest
25
25
  super
26
- @hostgroup.puppetclasses = @parent.puppetclasses
26
+ return unless @parent.puppet
27
+ puppet = @hostgroup.puppet || @hostgroup.build_puppet
28
+ puppet.puppetclasses = @parent.puppet.puppetclasses
27
29
  end
28
30
 
29
31
  def environment_selected
@@ -36,7 +38,7 @@ module ForemanPuppet
36
38
 
37
39
  puppet.puppetclasses = ForemanPuppet::Puppetclass.where(id: params[:hostgroup][:puppetclass_ids])
38
40
  puppet.config_groups = ForemanPuppet::ConfigGroup.where(id: params[:hostgroup][:config_group_ids])
39
- render partial: 'hosts/form_puppet_enc_tab', locals: { host_or_hostgroup: @hostgroup, resource_type: :hostgroup }
41
+ render partial: 'hosts/form_puppet_enc_tab', locals: { subject: @hostgroup, resource_type: :hostgroup }
40
42
  end
41
43
 
42
44
  def puppetclass_parameters
@@ -41,7 +41,7 @@ module ForemanPuppet
41
41
  set_class_variables(@host)
42
42
  ::Taxonomy.as_taxonomy @organization, @location do
43
43
  if @environment || @hostgroup
44
- render partial: 'hosts/form_puppet_enc_tab', locals: { host_or_hostgroup: @host, resource_type: :host }
44
+ render partial: 'hosts/form_puppet_enc_tab', locals: { subject: @host, resource_type: :host }
45
45
  else
46
46
  logger.info 'environment_id or hostgroup_id is required to render puppetclasses'
47
47
  end
@@ -14,12 +14,7 @@ module ForemanPuppet
14
14
  module PatchedClassMethods
15
15
  def host_params_filter
16
16
  super.tap do |filter|
17
- filter.permit :environment_id, :environment_name, :environment,
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
- def process_deprecated_environment_params!(params)
37
- env_id = params.delete(:environment_id)
38
- env_name = params.delete(:environment_name)
39
- env = params.delete(:environment)
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
- params[:puppet_attributes] ||= {}
45
- params[:puppet_attributes][:environment_id] ||= env_id if env_id
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
- def process_deprecated_attributes!(params)
51
- %w[puppetclass config_group].each do |relation|
52
- ids = params.delete("#{relation}_ids".to_sym)
53
- names = params.delete("#{relation}_names".to_sym)
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
- next unless ids || names || plains
57
- ::Foreman::Deprecation.api_deprecation_warning("param host[#{relation}_*] has been deprecated in favor of host[puppet_attributes][#{relation}_*]")
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
- params[:puppet_attributes] ||= {}
60
- params[:puppet_attributes]["#{relation}_ids".to_sym] ||= ids if ids
61
- params[:puppet_attributes]["#{relation}_names".to_sym] ||= names if names
62
- params[:puppet_attributes][relation.pluralize.to_sym] ||= plains if plains
63
- end
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.permit :environment_id, :environment_name,
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
- def process_deprecated_hostgroup_environment_params!(params)
37
- env_id = env_name = nil
38
- if ForemanPuppet.extracted_from_core?
39
- env_id = params.delete(:environment_id)
40
- env_name = params.delete(:environment_name)
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
- return unless env_id || env_name
47
- ::Foreman::Deprecation.api_deprecation_warning('param hostgroup[environment_*] has been deprecated in favor of hostgroup[puppet_attributes][environment_*]')
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
- params[:puppet_attributes] ||= {}
50
- params[:puppet_attributes][:environment_id] ||= env_id if env_id
51
- params[:puppet_attributes][:environment_name] ||= env_name if env_name
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
- def process_deprecated_hostgroup_attributes!(params)
55
- %w[puppetclass config_group].each do |relation|
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
- next unless ids || names
60
- ::Foreman::Deprecation.api_deprecation_warning("param hostgroup[#{relation}_*] has been deprecated in favor of hostgroup[puppet_attributes][#{relation}_*]")
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
- params[:puppet_attributes] ||= {}
63
- params[:puppet_attributes]["#{relation}_ids".to_sym] ||= ids if ids
64
- params[:puppet_attributes]["#{relation}_names".to_sym] ||= names if names
65
- end
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
@@ -4,5 +4,9 @@ module ForemanPuppet
4
4
  def hosts_path(*attrs)
5
5
  main_app.hosts_path(*attrs)
6
6
  end
7
+
8
+ def host_config_reports_path(*attrs)
9
+ main_app.host_config_reports_path(*attrs)
10
+ end
7
11
  end
8
12
  end
@@ -48,7 +48,7 @@ module ForemanPuppet
48
48
 
49
49
  def parent_config_groups
50
50
  return [] unless host.hostgroup
51
- host.hostgroup.puppet&.all_config_groups
51
+ host.hostgroup.puppet&.all_config_groups || []
52
52
  end
53
53
 
54
54
  def ensure_puppet_associations
@@ -48,6 +48,8 @@ module ForemanPuppet
48
48
  Hostgroup.sort_by_ancestry(hostgroup.ancestors.joins(:puppet).where(HostgroupPuppetFacet.arel_table[attr.to_sym].not_eq(nil))).last&.puppet.try(attr)
49
49
  end
50
50
 
51
+ delegate :parent_id, to: :hostgroup
52
+
51
53
  # and helpers
52
54
  def parent_facet_id
53
55
  parent_facet&.id
@@ -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
@@ -1,6 +1,5 @@
1
1
  <% resource_type ||= pagelet.opts[:resource_type] %>
2
- <% host_or_hostgroup ||= local_assigns[resource_type] %>
3
- <% obj = (host_or_hostgroup.puppet || host_or_hostgroup.build_puppet) if %i[host hostgroup].include?(resource_type) %>
2
+ <% obj = (subject.puppet || subject.build_puppet) if %i[host hostgroup].include?(resource_type) %>
4
3
  <% if resource_type == :host %>
5
4
  <span id="puppet_klasses_reload_url" data-url="<%= foreman_puppet.hostgroup_or_environment_selected_hosts_path %>"></span>
6
5
  <% elsif resource_type == :hostgroup %>
@@ -18,7 +17,7 @@
18
17
  text: _('Please select an environment first')) %>
19
18
  <% end %>
20
19
 
21
- <fieldset id="puppet_klasses_parameters" data-url="<%= foreman_puppet.url_for(action: :puppetclass_parameters, only_path: true) %>">
20
+ <fieldset id="puppet_klasses_parameters" data-url="<%= foreman_puppet.url_for(controller: resource_type.to_s.pluralize.to_sym, action: :puppetclass_parameters, only_path: true) %>">
22
21
  <h2><%= _('Puppet Class Parameters') %></h2>
23
- <%= render 'foreman_puppet/puppetclasses/classes_parameters', obj: host_or_hostgroup %>
22
+ <%= render 'foreman_puppet/puppetclasses/classes_parameters', obj: subject %>
24
23
  </fieldset>
@@ -2,11 +2,11 @@ class MigrateEnvironmentToPuppetFacet < ActiveRecord::Migration[6.0]
2
2
  def up
3
3
  puppet_hostgroups = ::Hostgroup.unscoped.where.not(environment_id: nil).pluck(:id, :environment_id)
4
4
  puppet_hostgroups.map! { |hg_id, env_id| { hostgroup_id: hg_id, environment_id: env_id } }
5
- ForemanPuppet::HostgroupPuppetFacet.insert_all(puppet_hostgroups) if puppet_hostgroups.any?
5
+ ForemanPuppet::HostgroupPuppetFacet.insert_all!(puppet_hostgroups) if puppet_hostgroups.any?
6
6
 
7
7
  puppet_hosts = Host::Managed.unscoped.where.not(environment_id: nil).pluck(:id, :environment_id)
8
8
  puppet_hosts.map! { |host_id, env_id| { host_id: host_id, environment_id: env_id } }
9
- ForemanPuppet::HostPuppetFacet.insert_all(puppet_hosts) if puppet_hosts.any?
9
+ ForemanPuppet::HostPuppetFacet.insert_all!(puppet_hosts) if puppet_hosts.any?
10
10
  end
11
11
 
12
12
  def down
@@ -13,26 +13,8 @@ class MigrateHostTypeInHostConfigGroups < ActiveRecord::Migration[6.0]
13
13
  end
14
14
 
15
15
  def up
16
- host_config_group_ids = FakeHostConfigGroup.for_host.pluck(:host_id).uniq
17
- host_config_group_ids.each do |host_id|
18
- host_facet_id = ForemanPuppet::HostPuppetFacet.where(host_id: host_id).pick(:id)
19
- host_groups = FakeHostConfigGroup.for_host.where(host_id: host_id)
20
- if host_facet_id
21
- host_groups.update_all(host_type: 'ForemanPuppet::HostPuppetFacet', host_id: host_facet_id)
22
- else
23
- deleted_groups = FakeConfigGroup.where(id: host_groups.pluck(:config_group_id)).pluck(:name)
24
- say "deleting groups #{deleted_groups.join(', ')} from Host (id=#{host_id}) because it has no environment"
25
- host_groups.delete_all
26
- end
27
- end
28
- hostgroup_config_group_ids = FakeHostConfigGroup.for_hostgroup.pluck(:host_id).uniq
29
- hostgroup_config_group_ids.each do |hostgroup_id|
30
- hostgroup_facet_id = ForemanPuppet::HostgroupPuppetFacet.where(hostgroup_id: hostgroup_id).pick(:id)
31
- hostgroup_facet_id ||= ForemanPuppet::HostgroupPuppetFacet.create!(hostgroup: Hostgroup.unscoped.find(hostgroup_id)).id
32
- FakeHostConfigGroup.for_hostgroup
33
- .where(host_id: hostgroup_id)
34
- .update_all(host_type: 'ForemanPuppet::HostgroupPuppetFacet', host_id: hostgroup_facet_id)
35
- end
16
+ migrate_host_data_to_facets
17
+ migrate_hostgroup_data_to_facets
36
18
  end
37
19
 
38
20
  def down
@@ -51,4 +33,38 @@ class MigrateHostTypeInHostConfigGroups < ActiveRecord::Migration[6.0]
51
33
  .update_all(host_type: 'Hostgroup', host_id: hostgroup_facet_ids[hostgroup_facet_id])
52
34
  end
53
35
  end
36
+
37
+ private
38
+
39
+ def migrate_host_data_to_facets
40
+ host_config_group_ids = FakeHostConfigGroup.for_host.pluck(:host_id).uniq
41
+ host_config_group_ids.each do |host_id|
42
+ host_facet_id = ForemanPuppet::HostPuppetFacet.where(host_id: host_id).pick(:id)
43
+ host_groups = FakeHostConfigGroup.for_host.where(host_id: host_id)
44
+ if host_facet_id
45
+ host_groups.update_all(host_type: 'ForemanPuppet::HostPuppetFacet', host_id: host_facet_id)
46
+ else
47
+ deleted_groups = FakeConfigGroup.where(id: host_groups.pluck(:config_group_id)).pluck(:name)
48
+ say "Deleting Config groups #{deleted_groups.join(', ')} from Host (id=#{host_id}) because the Host doesn't exist or has no environment"
49
+ host_groups.delete_all
50
+ end
51
+ end
52
+ end
53
+
54
+ def migrate_hostgroup_data_to_facets
55
+ hostgroup_config_group_ids = FakeHostConfigGroup.for_hostgroup.pluck(:host_id).uniq
56
+ hostgroup_config_group_ids.each do |hostgroup_id|
57
+ hostgroup = Hostgroup.unscoped.find_by(id: hostgroup_id)
58
+ hostgroup_groups = FakeHostConfigGroup.for_hostgroup.where(host_id: hostgroup_id)
59
+ if hostgroup
60
+ hostgroup_facet_id = ForemanPuppet::HostgroupPuppetFacet.where(hostgroup_id: hostgroup_id).pick(:id)
61
+ hostgroup_facet_id ||= ForemanPuppet::HostgroupPuppetFacet.create!(hostgroup: hostgroup).id
62
+ hostgroup_groups.update_all(host_type: 'ForemanPuppet::HostgroupPuppetFacet', host_id: hostgroup_facet_id)
63
+ else
64
+ deleted_groups = FakeConfigGroup.where(id: hostgroup_groups.pluck(:config_group_id)).pluck(:name)
65
+ say "Deleting Config groups #{deleted_groups.join(', ')} from Hostgroup (id=#{hostgroup_id}) because Hostgroup doesn't exist"
66
+ hostgroup_groups.delete_all
67
+ end
68
+ end
69
+ end
54
70
  end
@@ -0,0 +1,10 @@
1
+ class CleanupEnvironmentFromCoreTables < ActiveRecord::Migration[6.0]
2
+ def up
3
+ ::Hostgroup.update_all(environment_id: nil) if column_exists?(:hostgroups, :environment_id)
4
+ Host::Managed.update_all(environment_id: nil) if column_exists?(:hosts, :environment_id)
5
+ end
6
+
7
+ def down
8
+ # nothing to do
9
+ end
10
+ 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
@@ -1,3 +1,3 @@
1
1
  module ForemanPuppet
2
- VERSION = '1.0.1'.freeze
2
+ VERSION = '1.0.5'.freeze
3
3
  end