foreman_puppet 1.0.0 → 2.0.0.alpha.2
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/api_hostgroups_controller.rb +14 -16
- data/app/controllers/concerns/foreman_puppet/{api/import_puppetclasses_common_controller.rb → extensions/api_smart_proxies_controller.rb} +9 -3
- data/app/controllers/concerns/foreman_puppet/extensions/api_template_combinations_controller.rb +23 -1
- data/app/controllers/concerns/foreman_puppet/extensions/api_v2_hosts_controller.rb +15 -17
- data/app/controllers/concerns/foreman_puppet/extensions/hostgroups_controller_extensions.rb +4 -2
- data/app/controllers/concerns/foreman_puppet/extensions/hosts_controller_extensions.rb +1 -2
- data/app/controllers/concerns/foreman_puppet/extensions/parameters_hostgroup.rb +2 -8
- data/app/controllers/foreman_puppet/api/v2/environments_controller.rb +0 -1
- data/app/controllers/foreman_puppet/puppetclasses_controller.rb +1 -1
- data/app/helpers/foreman_puppet/hosts_and_hostgroups_helper.rb +0 -5
- data/app/helpers/foreman_puppet/hosts_helper.rb +6 -10
- data/app/helpers/foreman_puppet/puppet_smart_proxies_helper.rb +4 -0
- data/app/models/concerns/foreman_puppet/extensions/host.rb +2 -16
- data/app/models/concerns/foreman_puppet/extensions/hostgroup.rb +2 -7
- data/app/models/concerns/foreman_puppet/extensions/provisioning_template.rb +7 -12
- data/app/models/concerns/foreman_puppet/extensions/template_combination.rb +5 -10
- data/app/services/concerns/foreman_puppet/extensions/host_counter.rb +17 -0
- data/app/services/foreman_puppet/puppet_class_importer.rb +0 -6
- data/app/views/foreman_puppet/api/v2/host_puppet_facets/host_list.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/hostgroup_puppet_facets/base.json.rabl +2 -0
- data/app/views/foreman_puppet/api/v2/hostgroup_puppet_facets/hostgroup_list.json.rabl +3 -0
- data/app/views/hosts/_form_puppet_enc_tab.html.erb +3 -4
- data/config/api_routes.rb +1 -9
- data/config/initializers/api_reroute.rb +73 -5
- data/db/migrate/20101121140000_add_environment_to_template_combinations.foreman_puppet.rb +1 -1
- data/db/migrate/20200803113803_migrate_environment_to_puppet_facet.foreman_puppet.rb +4 -2
- data/db/migrate/20210924103241_remove_katello_id_from_environments.foreman_puppet.rb +5 -0
- data/db/migrate_foreman/20090722141107_create_environments.rb +2 -2
- data/db/migrate_foreman/20090802062223_create_puppetclasses.rb +28 -0
- data/db/migrate_foreman/20090905150132_create_hostgroups_puppetclasses.rb +12 -0
- data/db/migrate_foreman/20110412103238_remove_unused_fields_from_puppet_classes.rb +9 -0
- data/db/migrate_foreman/20110712070522_create_host_class.rb +11 -0
- data/db/migrate_foreman/20120824142048_add_some_indexes.rb +14 -0
- data/db/migrate_foreman/20121018152459_create_hostgroup_classes.rb +11 -0
- data/db/migrate_foreman/20161205142618_delete_orphaned_smart_class_parameters.rb +1 -1
- data/db/migrate_foreman/20180816134832_cast_lookup_key_values.rb +1 -31
- data/db/migrate_foreman/20180831115634_add_uniqueness_to_puppetclass_name.rb +24 -0
- data/db/migrate_foreman/20181023112532_add_environment_puppetclass_id.rb +1 -1
- data/lib/foreman_puppet/engine.rb +6 -36
- data/lib/foreman_puppet/register.rb +16 -47
- data/lib/foreman_puppet/version.rb +1 -1
- data/lib/foreman_puppet.rb +1 -6
- data/locale/en/LC_MESSAGES/foreman_puppet.mo +0 -0
- data/locale/en/foreman_puppet.po +62 -8
- data/locale/foreman_puppet.pot +215 -133
- data/locale/gemspec.rb +1 -1
- data/package.json +8 -11
- data/test/controllers/foreman_puppet/api/v2/environments_controller_test.rb +0 -231
- data/test/controllers/foreman_puppet/api/v2/smart_proxies_controller_test.rb +255 -0
- data/test/controllers/foreman_puppet/environments_controller_test.rb +2 -2
- data/test/controllers/foreman_puppet/hostgroups_controller_test.rb +72 -52
- data/test/controllers/foreman_puppet/hosts_controller_test.rb +0 -1
- data/test/factories/foreman_puppet_factories.rb +0 -2
- data/test/factories/host_puppet_enhancements.rb +3 -0
- data/test/integration/foreman_puppet/host_js_test.rb +0 -1
- data/test/integration/foreman_puppet/puppetclass_js_test.rb +1 -1
- data/test/models/foreman_puppet/host_test.rb +26 -0
- data/test/models/foreman_puppet/user_test.rb +1 -5
- data/test/services/foreman_puppet/host_counter_test.rb +17 -0
- data/test/unit/foreman_puppet/puppet_class_importer_test.rb +1 -1
- data/webpack/src/Components/Environments/Welcome.js +2 -2
- metadata +22 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 61b910e24e11c9bd100021c5b87cc45b03eab68bc68260985f90d3510496d016
|
4
|
+
data.tar.gz: '08fa8d3c7bdf23231daf2e14332f68be4d2a79fe33195260de1c1b276924c2de'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cb6a6d40b42d741a4f4010aa81b9bbfa7e0b330473637036522d0a8d7e2fa983cee353ee0a59c3eacd1a64314d3edb17dfa29ee95adb7d47f08938f2380e822a
|
7
|
+
data.tar.gz: 1e2f6b9ac9b996cbb368612dfb22d3adc03c89201d3d1931ca7920baf58090769160ded784c5094a3cfd1043ba22bf93b2926ff6de0075294630a7376179be6b
|
@@ -6,25 +6,23 @@ module ForemanPuppet
|
|
6
6
|
included do
|
7
7
|
prepend PatchMethods
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
method_desc.apis << Apipie::MethodDescription::Api.new(:GET, '/puppetclasses/:puppetclass_id/hostgroups', N_('List all host groups for a Puppet class'), {})
|
9
|
+
method_desc = Apipie.get_method_description(self, :index)
|
10
|
+
method_desc.apis << Apipie::MethodDescription::Api.new(:GET, '/puppetclasses/:puppetclass_id/hostgroups', N_('List all host groups for a Puppet class'), {})
|
12
11
|
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
apipie_update_methods([:index]) do
|
13
|
+
param :puppetclass_id, String, desc: N_('ID of Puppetclass')
|
14
|
+
end
|
16
15
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
16
|
+
apipie_update_methods(%i[create update]) do
|
17
|
+
param :hostgroup, Hash do
|
18
|
+
param :environment_id, String, desc: N_('Deprecated in favor of hostgroup/puppet_attributes/environment_id')
|
19
|
+
param :puppetclass_ids, Array, desc: N_('Deprecated in favor of hostgroup/puppet_attributes/puppetclass_ids')
|
20
|
+
param :config_group_ids, Array, desc: N_('Deprecated in favor of hostgroup/puppet_attributes/config_group_ids')
|
22
21
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
end
|
22
|
+
param :puppet_attributes, Hash do
|
23
|
+
param :environment_id, String, desc: N_('ID of associated puppet Environment')
|
24
|
+
param :puppetclass_ids, Array, desc: N_('IDs of associated Puppetclasses')
|
25
|
+
param :config_group_ids, Array, desc: N_('IDs of associated ConfigGroups')
|
28
26
|
end
|
29
27
|
end
|
30
28
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module ForemanPuppet
|
2
|
-
module
|
3
|
-
module
|
2
|
+
module Extensions
|
3
|
+
module ApiSmartProxiesController
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
6
|
included do
|
@@ -74,7 +74,13 @@ module ForemanPuppet
|
|
74
74
|
end
|
75
75
|
|
76
76
|
unless @environments.any?
|
77
|
-
|
77
|
+
# check if environment id/name was valid at all
|
78
|
+
if @env_id && \
|
79
|
+
Environment.authorized(:view_environments).where(name: @env_id).or(Environment.authorized(:view_environments).where(id: @env_id)).empty?
|
80
|
+
render_message(_('The requested environment cannot be found.'))
|
81
|
+
else
|
82
|
+
render_message(_('No changes to your environments detected'))
|
83
|
+
end
|
78
84
|
return false
|
79
85
|
end
|
80
86
|
|
data/app/controllers/concerns/foreman_puppet/extensions/api_template_combinations_controller.rb
CHANGED
@@ -4,7 +4,29 @@ module ForemanPuppet
|
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
6
|
included do
|
7
|
-
if
|
7
|
+
if Gem::Dependency.new('', '>= 3.1').match?('', SETTINGS[:version].notag)
|
8
|
+
index_desc = Apipie.get_method_description(self, :index)
|
9
|
+
index_desc.apis << Apipie::MethodDescription::Api.new(:GET, '/environments/:environment_id/template_combinations', N_('List template combination'), {})
|
10
|
+
|
11
|
+
create_desc = Apipie.get_method_description(self, :create)
|
12
|
+
create_desc.apis << Apipie::MethodDescription::Api.new(:POST, '/environments/:environment_id/template_combinations', N_('Add a template combination'), {})
|
13
|
+
|
14
|
+
show_desc = Apipie.get_method_description(self, :show)
|
15
|
+
show_desc.apis << Apipie::MethodDescription::Api.new(:GET, '/environments/:environment_id/template_combinations/:id', N_('Show template combination'), {})
|
16
|
+
|
17
|
+
update_desc = Apipie.get_method_description(self, :update)
|
18
|
+
update_desc.apis << Apipie::MethodDescription::Api.new(:PUT, '/environments/:environment_id/template_combinations/:id', N_('Update template combination'), {})
|
19
|
+
|
20
|
+
apipie_update_methods(%i[index create show update]) do
|
21
|
+
param :environment_id, String, desc: N_('ID of Puppet environment')
|
22
|
+
end
|
23
|
+
|
24
|
+
apipie_update_methods(%i[create update]) do
|
25
|
+
param :template_combination, Hash do
|
26
|
+
param :environment_id, :number, allow_nil: true, desc: N_('environment id')
|
27
|
+
end
|
28
|
+
end
|
29
|
+
elsif ForemanPuppet.extracted_from_core?
|
8
30
|
apipie_update_methods(%i[index create show update]) do
|
9
31
|
param :environment_id, nil, desc: N_('ID of environment')
|
10
32
|
end
|
@@ -6,25 +6,23 @@ module ForemanPuppet
|
|
6
6
|
included do
|
7
7
|
prepend PatchMethods
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
method_desc.apis << Apipie::MethodDescription::Api.new(:GET, '/environments/:environment_id/hosts', N_('List hosts per environment'), {})
|
9
|
+
method_desc = Apipie.get_method_description(self, :index)
|
10
|
+
method_desc.apis << Apipie::MethodDescription::Api.new(:GET, '/environments/:environment_id/hosts', N_('List hosts per environment'), {})
|
12
11
|
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
apipie_update_methods([:index]) do
|
13
|
+
param :environment_id, String, desc: N_('ID of puppet environment')
|
14
|
+
end
|
16
15
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
16
|
+
apipie_update_methods(%i[create update]) do
|
17
|
+
param :host, Hash do
|
18
|
+
param :environment_id, String, desc: N_('Deprecated in favor of host/puppet_attributes/environment_id')
|
19
|
+
param :puppetclass_ids, Array, desc: N_('Deprecated in favor of host/puppet_attributes/puppetclass_ids')
|
20
|
+
param :config_group_ids, Array, desc: N_('Deprecated in favor of host/puppet_attributes/config_group_ids')
|
22
21
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
end
|
22
|
+
param :puppet_attributes, Hash do
|
23
|
+
param :environment_id, String, desc: N_('ID of associated puppet Environment')
|
24
|
+
param :puppetclass_ids, Array, desc: N_('IDs of associated Puppetclasses')
|
25
|
+
param :config_group_ids, Array, desc: N_('IDs of associated ConfigGroups')
|
28
26
|
end
|
29
27
|
end
|
30
28
|
end
|
@@ -39,7 +37,7 @@ module ForemanPuppet
|
|
39
37
|
|
40
38
|
def allowed_nested_id
|
41
39
|
ids = super
|
42
|
-
ids << 'environment_id'
|
40
|
+
ids << 'environment_id'
|
43
41
|
ids.uniq
|
44
42
|
end
|
45
43
|
end
|
@@ -23,7 +23,9 @@ module ForemanPuppet
|
|
23
23
|
module Actions
|
24
24
|
def nest
|
25
25
|
super
|
26
|
-
|
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: {
|
41
|
+
render partial: 'hosts/form_puppet_enc_tab', locals: { subject: @hostgroup, resource_type: :hostgroup }
|
40
42
|
end
|
41
43
|
|
42
44
|
def puppetclass_parameters
|
@@ -31,7 +31,6 @@ module ForemanPuppet
|
|
31
31
|
helper ForemanPuppet::PuppetclassLookupKeysHelper
|
32
32
|
end
|
33
33
|
|
34
|
-
# TODO: unless ForemanPuppet.extracted_from_core?
|
35
34
|
def select_multiple_puppet_proxy_hosts_path(*args)
|
36
35
|
foreman_puppet.select_multiple_puppet_proxy_hosts_path(*args)
|
37
36
|
end
|
@@ -41,7 +40,7 @@ module ForemanPuppet
|
|
41
40
|
set_class_variables(@host)
|
42
41
|
::Taxonomy.as_taxonomy @organization, @location do
|
43
42
|
if @environment || @hostgroup
|
44
|
-
render partial: 'hosts/form_puppet_enc_tab', locals: {
|
43
|
+
render partial: 'hosts/form_puppet_enc_tab', locals: { subject: @host, resource_type: :host }
|
45
44
|
else
|
46
45
|
logger.info 'environment_id or hostgroup_id is required to render puppetclasses'
|
47
46
|
end
|
@@ -34,14 +34,8 @@ module ForemanPuppet
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def process_deprecated_hostgroup_environment_params!(params)
|
37
|
-
env_id =
|
38
|
-
|
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
|
37
|
+
env_id = params.delete(:environment_id)
|
38
|
+
env_name = params.delete(:environment_name)
|
45
39
|
|
46
40
|
return unless env_id || env_name
|
47
41
|
::Foreman::Deprecation.api_deprecation_warning('param hostgroup[environment_*] has been deprecated in favor of hostgroup[puppet_attributes][environment_*]')
|
@@ -14,7 +14,7 @@ module ForemanPuppet
|
|
14
14
|
|
15
15
|
helper ForemanPuppet::PuppetclassLookupKeysHelper
|
16
16
|
|
17
|
-
# TODO:
|
17
|
+
# TODO: filter for facets needs improving
|
18
18
|
def host_params(top_level_hash = controller_name.singularize)
|
19
19
|
filter = self.class.host_params_filter
|
20
20
|
filter.permit(puppet_attributes: {})
|
@@ -1,10 +1,5 @@
|
|
1
1
|
module ForemanPuppet
|
2
2
|
module HostsAndHostgroupsHelper
|
3
|
-
# TODO: remove me - prevents the puppetclass tab duplication
|
4
|
-
# unless ForemanPuppet.extracted_from_core?
|
5
|
-
def puppetclasses_tab(puppetclasses_receiver)
|
6
|
-
end
|
7
|
-
|
8
3
|
def environment_inherited_by_default?(host)
|
9
4
|
return false unless host.hostgroup && host.hostgroup_id_was.nil?
|
10
5
|
return false if params[:action] == 'clone'
|
@@ -3,20 +3,16 @@ module ForemanPuppet
|
|
3
3
|
UI.register_host_description do
|
4
4
|
multiple_actions_provider :puppet_host_multiple_actions
|
5
5
|
# otherwise registered twice
|
6
|
-
overview_buttons_provider :puppet_host_overview_buttons
|
7
|
-
overview_fields_provider :puppet_host_overview_fields
|
6
|
+
overview_buttons_provider :puppet_host_overview_buttons
|
7
|
+
overview_fields_provider :puppet_host_overview_fields
|
8
8
|
end
|
9
9
|
|
10
10
|
def puppet_host_multiple_actions
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
actions << { action: [_('Change Puppet Master'), foreman_puppet.select_multiple_puppet_proxy_hosts_path], priority: 1050 }
|
15
|
-
end
|
16
|
-
actions
|
17
|
-
else
|
18
|
-
[]
|
11
|
+
actions = [{ action: [_('Change Environment'), foreman_puppet.select_multiple_environment_hosts_path], priority: 200 }]
|
12
|
+
if authorized_for(controller: :hosts, action: :edit) && SmartProxy.unscoped.authorized.with_features('Puppet').exists?
|
13
|
+
actions << { action: [_('Change Puppet Master'), foreman_puppet.select_multiple_puppet_proxy_hosts_path], priority: 1050 }
|
19
14
|
end
|
15
|
+
actions
|
20
16
|
end
|
21
17
|
|
22
18
|
def puppet_host_overview_buttons(host)
|
@@ -3,20 +3,12 @@ module ForemanPuppet
|
|
3
3
|
module Host
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
|
-
include ForemanPuppet::Extensions::HostCommon
|
6
|
+
include ForemanPuppet::Extensions::HostCommon
|
7
7
|
|
8
8
|
included do
|
9
9
|
prepend PrependedMethods
|
10
10
|
|
11
|
-
|
12
|
-
has_one :environment, through: :puppet, class_name: 'ForemanPuppet::Environment'
|
13
|
-
else
|
14
|
-
env_assoc = reflect_on_association(:environment)
|
15
|
-
env_assoc&.instance_variable_set(:@class_name, 'ForemanPuppet::Environment')
|
16
|
-
|
17
|
-
host_classes_assoc = reflect_on_association(:host_classes)
|
18
|
-
host_classes_assoc&.instance_variable_set(:@class_name, 'ForemanPuppet::HostClass')
|
19
|
-
end
|
11
|
+
has_one :environment, through: :puppet, class_name: 'ForemanPuppet::Environment'
|
20
12
|
|
21
13
|
include_in_clone puppet: %i[config_groups host_config_groups host_classes]
|
22
14
|
|
@@ -70,12 +62,6 @@ module ForemanPuppet
|
|
70
62
|
end
|
71
63
|
|
72
64
|
module PrependedMethods
|
73
|
-
# TODO: we can drop this once extracted_from_core?
|
74
|
-
def validate_association_taxonomy(association_name)
|
75
|
-
return if association_name.to_sym == :environment
|
76
|
-
super
|
77
|
-
end
|
78
|
-
|
79
65
|
def provisioning_template(opts = {})
|
80
66
|
opts[:environment_id] ||= puppet&.environment_id
|
81
67
|
super(opts)
|
@@ -3,19 +3,14 @@ module ForemanPuppet
|
|
3
3
|
module Hostgroup
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
|
-
include ForemanPuppet::Extensions::HostCommon
|
6
|
+
include ForemanPuppet::Extensions::HostCommon
|
7
7
|
|
8
8
|
included do
|
9
9
|
class << self
|
10
10
|
prepend PatchedClassMethods
|
11
11
|
end
|
12
12
|
|
13
|
-
|
14
|
-
has_one :environment, through: :puppet, class_name: 'ForemanPuppet::Environment'
|
15
|
-
else
|
16
|
-
env_assoc = reflect_on_association(:environment)
|
17
|
-
env_assoc&.instance_variable_set(:@class_name, 'ForemanPuppet::Environment')
|
18
|
-
end
|
13
|
+
has_one :environment, through: :puppet, class_name: 'ForemanPuppet::Environment'
|
19
14
|
|
20
15
|
include_in_clone puppet: %i[host_config_groups config_groups hostgroup_classes]
|
21
16
|
|
@@ -4,21 +4,16 @@ module ForemanPuppet
|
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
6
|
included do
|
7
|
-
|
8
|
-
|
9
|
-
before_destroy ActiveRecord::Base::EnsureNotUsedBy.new(:environments)
|
7
|
+
has_many :environments, through: :template_combinations
|
8
|
+
before_destroy ActiveRecord::Base::EnsureNotUsedBy.new(:environments)
|
10
9
|
|
11
|
-
|
10
|
+
scoped_search relation: :environments, on: :name, rename: :environment, complete_value: true
|
12
11
|
|
13
|
-
|
14
|
-
|
15
|
-
end
|
16
|
-
|
17
|
-
prepend PrependedMethods
|
18
|
-
else
|
19
|
-
env_assoc = reflect_on_association(:environments)
|
20
|
-
env_assoc&.instance_variable_set(:@class_name, 'ForemanPuppet::Environment')
|
12
|
+
class << self
|
13
|
+
prepend PrependedClassMethods
|
21
14
|
end
|
15
|
+
|
16
|
+
prepend PrependedMethods
|
22
17
|
end
|
23
18
|
|
24
19
|
module PrependedClassMethods
|
@@ -4,19 +4,14 @@ module ForemanPuppet
|
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
6
|
included do
|
7
|
-
|
8
|
-
belongs_to :environment, class_name: 'ForemanPuppet::Environment'
|
7
|
+
belongs_to :environment, class_name: 'ForemanPuppet::Environment'
|
9
8
|
|
10
|
-
|
9
|
+
validates :environment_id, uniqueness: { scope: %i[hostgroup_id provisioning_template_id] }
|
11
10
|
|
12
|
-
|
13
|
-
|
14
|
-
end
|
15
|
-
callback.filter.options[:scope] << :environment_id
|
16
|
-
else
|
17
|
-
env_assoc = reflect_on_association(:environment)
|
18
|
-
env_assoc&.instance_variable_set(:@class_name, 'ForemanPuppet::Environment')
|
11
|
+
callback = __callbacks[:validate].detect do |v|
|
12
|
+
v.filter.is_a?(ActiveRecord::Validations::UniquenessValidator) && v.filter.attributes.include?(:hostgroup_id)
|
19
13
|
end
|
14
|
+
callback.filter.options[:scope] << :environment_id
|
20
15
|
end
|
21
16
|
end
|
22
17
|
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
|
@@ -308,12 +308,6 @@ module ForemanPuppet
|
|
308
308
|
env.puppetclasses.destroy classes
|
309
309
|
# remove all old classes from hosts
|
310
310
|
HostClass.joins(host: :puppet).where(HostPuppetFacet.arel_table[:environment_id].eq(env.id)).where(puppetclass_id: classes).destroy_all
|
311
|
-
unless ForemanPuppet.extracted_from_core?
|
312
|
-
# rubocop:disable Rails/SkipsModelValidations
|
313
|
-
Host.where(environment_id: env).update_all(environment_id: nil)
|
314
|
-
Hostgroup.where(environment_id: env).update_all(environment_id: nil)
|
315
|
-
# rubocop:enable Rails/SkipsModelValidations
|
316
|
-
end
|
317
311
|
# we can't guaranty that the env would be removed as it might have hosts attached to it.
|
318
312
|
env.destroy if klasses.include? '_destroy_'
|
319
313
|
# remove all klasses that have no environment now
|
@@ -1,6 +1,5 @@
|
|
1
1
|
<% resource_type ||= pagelet.opts[:resource_type] %>
|
2
|
-
<%
|
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:
|
22
|
+
<%= render 'foreman_puppet/puppetclasses/classes_parameters', obj: subject %>
|
24
23
|
</fieldset>
|
data/config/api_routes.rb
CHANGED
@@ -2,14 +2,6 @@ ForemanPuppet::Engine.routes.draw do
|
|
2
2
|
namespace :api, defaults: { format: 'json' } do
|
3
3
|
scope '(:apiv)', module: :v2, defaults: { apiv: 'v2' }, apiv: /v1|v2/, constraints: ApiConstraints.new(version: 2, default: true) do
|
4
4
|
constraints(id: %r{[^/]+}) do
|
5
|
-
resources :puppet_smart_proxies, only: [] do
|
6
|
-
post :import_puppetclasses, on: :member, controller: 'environments'
|
7
|
-
|
8
|
-
resources :environments, only: [] do
|
9
|
-
post :import_puppetclasses, on: :member
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
5
|
resources :config_groups, except: %i[new edit]
|
14
6
|
|
15
7
|
resources :hosts, only: [] do
|
@@ -40,7 +32,7 @@ ForemanPuppet::Engine.routes.draw do
|
|
40
32
|
end
|
41
33
|
end
|
42
34
|
resources :hosts, only: %i[index show], controller: '/api/v2/hosts'
|
43
|
-
resources :template_combinations, only: %i[index], controller: '/api/v2/template_combinations'
|
35
|
+
resources :template_combinations, only: %i[index show create update], controller: '/api/v2/template_combinations'
|
44
36
|
end
|
45
37
|
|
46
38
|
resources :puppetclasses, except: %i[new edit] do
|
@@ -1,13 +1,81 @@
|
|
1
1
|
Foreman::Application.routes.prepend do
|
2
2
|
namespace :api, defaults: { format: 'json' } do
|
3
3
|
scope '(:apiv)', module: :v2, defaults: { apiv: 'v2' }, apiv: /v2/, constraints: ApiConstraints.new(version: 2, default: true) do
|
4
|
-
resources :
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
resources :smart_proxies, only: [] do
|
5
|
+
post :import_puppetclasses, on: :member
|
6
|
+
resources :environments, only: [] do
|
7
|
+
post :import_puppetclasses, on: :member, controller: '/api/v2/smart_proxies'
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
8
11
|
resources :config_groups, controller: '/foreman_puppet/api/v2/config_groups', except: %i[new edit]
|
9
|
-
|
12
|
+
|
13
|
+
resources :hosts, only: [] do
|
14
|
+
resources :puppetclasses, controller: '/foreman_puppet/api/v2/puppetclasses', except: %i[new edit]
|
15
|
+
resources :smart_class_parameters, controller: '/foreman_puppet/api/v2/smart_class_parameters', except: %i[new edit create] do
|
16
|
+
resources :override_values, controller: '/foreman_puppet/api/v2/override_values', except: %i[new edit]
|
17
|
+
end
|
18
|
+
resources :host_classes, path: :puppetclass_ids, controller: '/foreman_puppet/api/v2/host_classes', only: %i[index create destroy]
|
19
|
+
end
|
20
|
+
|
21
|
+
resources :hostgroups, only: [] do
|
22
|
+
resources :puppetclasses, controller: '/foreman_puppet/api/v2/puppetclasses', except: %i[new edit]
|
23
|
+
resources :smart_class_parameters, controller: '/foreman_puppet/api/v2/smart_class_parameters', except: %i[new edit create] do
|
24
|
+
resources :override_values, controller: '/foreman_puppet/api/v2/override_values', except: %i[new edit]
|
25
|
+
end
|
26
|
+
resources :hostgroup_classes, path: :puppetclass_ids, controller: '/foreman_puppet/api/v2/hostgroup_classes', only: %i[index create destroy]
|
27
|
+
end
|
28
|
+
|
29
|
+
resources :environments, controller: '/foreman_puppet/api/v2/environments', except: %i[new edit] do
|
30
|
+
resources :locations, only: %i[index show]
|
31
|
+
resources :organizations, only: %i[index show]
|
32
|
+
resources :smart_proxies, only: [] do
|
33
|
+
post :import_puppetclasses, on: :member
|
34
|
+
end
|
35
|
+
resources :smart_class_parameters, controller: '/foreman_puppet/api/v2/smart_class_parameters', except: %i[new edit create] do
|
36
|
+
resources :override_values, controller: '/foreman_puppet/api/v2/override_values', except: %i[new edit]
|
37
|
+
end
|
38
|
+
resources :puppetclasses, controller: '/foreman_puppet/api/v2/puppetclasses', except: %i[new edit] do
|
39
|
+
resources :smart_class_parameters, controller: '/foreman_puppet/api/v2/smart_class_parameters', except: %i[new edit create] do
|
40
|
+
resources :override_values, controller: '/foreman_puppet/api/v2/override_values', except: %i[new edit destroy]
|
41
|
+
end
|
42
|
+
end
|
43
|
+
resources :hosts, only: %i[index show]
|
44
|
+
resources :template_combinations, only: %i[index show create update]
|
45
|
+
end
|
46
|
+
|
47
|
+
resources :puppetclasses, controller: '/foreman_puppet/api/v2/puppetclasses', except: %i[new edit] do
|
48
|
+
resources :smart_class_parameters, controller: '/foreman_puppet/api/v2/smart_class_parameters', except: %i[new edit create] do
|
49
|
+
resources :override_values, controller: '/foreman_puppet/api/v2/override_values', except: %i[new edit]
|
50
|
+
end
|
51
|
+
resources :environments, controller: '/foreman_puppet/api/v2/environments', only: %i[index show] do
|
52
|
+
resources :smart_class_parameters, controller: '/foreman_puppet/api/v2/smart_class_parameters', except: %i[new edit create] do
|
53
|
+
resources :override_values, controller: '/foreman_puppet/api/v2/override_values', except: %i[new edit]
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
resources :smart_class_parameters, controller: '/foreman_puppet/api/v2/smart_class_parameters', except: %i[new edit create destroy] do
|
59
|
+
resources :override_values, controller: '/foreman_puppet/api/v2/override_values', except: %i[new edit]
|
60
|
+
end
|
61
|
+
|
10
62
|
resources :override_values, controller: '/foreman_puppet/api/v2/override_values', except: %i[new edit]
|
63
|
+
|
64
|
+
resources :locations, only: [] do
|
65
|
+
resources :environments, controller: '/foreman_puppet/api/v2/environments', only: %i[index show]
|
66
|
+
|
67
|
+
resources :organizations, only: [] do
|
68
|
+
resources :environments, controller: '/foreman_puppet/api/v2/environments', only: %i[index show]
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
resources :organizations, only: [] do
|
73
|
+
resources :environments, controller: '/foreman_puppet/api/v2/environments', only: %i[index show]
|
74
|
+
|
75
|
+
resources :locations, only: [] do
|
76
|
+
resources :environments, controller: '/foreman_puppet/api/v2/environments', only: %i[index show]
|
77
|
+
end
|
78
|
+
end
|
11
79
|
end
|
12
80
|
end
|
13
81
|
end
|
@@ -4,6 +4,6 @@ class AddEnvironmentToTemplateCombinations < ActiveRecord::Migration[4.2]
|
|
4
4
|
end
|
5
5
|
|
6
6
|
def down
|
7
|
-
remove_reference :template_combinations, :environment, foreign_key: true
|
7
|
+
remove_reference :template_combinations, :environment, foreign_key: true
|
8
8
|
end
|
9
9
|
end
|
@@ -1,15 +1,17 @@
|
|
1
1
|
class MigrateEnvironmentToPuppetFacet < ActiveRecord::Migration[6.0]
|
2
2
|
def up
|
3
|
+
return true unless column_exists?(:hosts, :environment_id)
|
3
4
|
puppet_hostgroups = ::Hostgroup.unscoped.where.not(environment_id: nil).pluck(:id, :environment_id)
|
4
5
|
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?
|
6
|
+
ForemanPuppet::HostgroupPuppetFacet.insert_all!(puppet_hostgroups) if puppet_hostgroups.any?
|
6
7
|
|
7
8
|
puppet_hosts = Host::Managed.unscoped.where.not(environment_id: nil).pluck(:id, :environment_id)
|
8
9
|
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?
|
10
|
+
ForemanPuppet::HostPuppetFacet.insert_all!(puppet_hosts) if puppet_hosts.any?
|
10
11
|
end
|
11
12
|
|
12
13
|
def down
|
14
|
+
return true unless column_exists?(:hosts, :environment_id)
|
13
15
|
hostgroup_facet_ids = ForemanPuppet::HostgroupPuppetFacet.all.pluck(:hostgroup_id, :environment_id)
|
14
16
|
hostgroup_facet_ids.each do |hostgroup_id, env_id|
|
15
17
|
::Hostgroup.unscoped.where(id: hostgroup_id).update_all(environment_id: env_id)
|