foreman_salt 14.0.0 → 15.1.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 +1 -2
- data/Rakefile +2 -2
- data/app/controllers/foreman_salt/api/v2/jobs_controller.rb +9 -9
- data/app/controllers/foreman_salt/api/v2/salt_autosign_controller.rb +15 -14
- data/app/controllers/foreman_salt/api/v2/salt_environments_controller.rb +6 -6
- data/app/controllers/foreman_salt/api/v2/salt_hostgroups_controller.rb +42 -0
- data/app/controllers/foreman_salt/api/v2/salt_keys_controller.rb +14 -14
- data/app/controllers/foreman_salt/api/v2/salt_minions_controller.rb +8 -8
- data/app/controllers/foreman_salt/api/v2/salt_states_controller.rb +24 -26
- data/app/controllers/foreman_salt/api/v2/salt_variables_controller.rb +22 -21
- data/app/controllers/foreman_salt/concerns/hostgroups_controller_extensions.rb +3 -3
- data/app/controllers/foreman_salt/concerns/hosts_controller_extensions.rb +4 -4
- data/app/controllers/foreman_salt/concerns/salt_environment_parameters.rb +1 -1
- data/app/controllers/foreman_salt/concerns/salt_hostgroup_parameters.rb +25 -0
- data/app/controllers/foreman_salt/concerns/salt_module_parameters.rb +1 -1
- data/app/controllers/foreman_salt/concerns/salt_override_value.rb +4 -4
- data/app/controllers/foreman_salt/concerns/salt_variable_parameters.rb +5 -5
- data/app/controllers/foreman_salt/minions_controller.rb +9 -20
- data/app/controllers/foreman_salt/salt_autosign_controller.rb +8 -8
- data/app/controllers/foreman_salt/salt_environments_controller.rb +4 -4
- data/app/controllers/foreman_salt/salt_keys_controller.rb +11 -11
- data/app/controllers/foreman_salt/salt_modules_controller.rb +10 -11
- data/app/controllers/foreman_salt/salt_variables_controller.rb +5 -4
- data/app/controllers/foreman_salt/state_importer.rb +12 -13
- data/app/helpers/concerns/foreman_salt/hosts_helper_extensions.rb +13 -21
- data/app/helpers/concerns/foreman_salt/smart_proxies_helper_extensions.rb +2 -2
- data/app/helpers/foreman_salt/salt_keys_helper.rb +2 -1
- data/app/helpers/foreman_salt/salt_modules_helper.rb +11 -11
- data/app/helpers/foreman_salt/salt_reports_helper.rb +0 -1
- data/app/lib/actions/foreman_salt/report_import.rb +2 -2
- data/app/lib/proxy_api/salt.rb +17 -17
- data/app/models/foreman_salt/concerns/host_managed_extensions.rb +46 -56
- data/app/models/foreman_salt/concerns/hostgroup_extensions.rb +14 -11
- data/app/models/foreman_salt/host_salt_module.rb +1 -1
- data/app/models/foreman_salt/salt_environment.rb +8 -8
- data/app/models/foreman_salt/salt_module.rb +15 -13
- data/app/models/foreman_salt/salt_module_environment.rb +1 -1
- data/app/models/foreman_salt/salt_provider.rb +7 -4
- data/app/models/foreman_salt/salt_variable.rb +8 -8
- data/app/overrides/salt_environment_host_selector.rb +4 -4
- data/app/overrides/salt_environment_hostgroup_selector.rb +4 -4
- data/app/overrides/salt_modules_selector.rb +16 -16
- data/app/overrides/salt_proxy_selector.rb +11 -9
- data/app/services/foreman_salt/report_importer.rb +30 -30
- data/app/services/foreman_salt/smart_proxies/salt_keys.rb +47 -45
- data/app/views/foreman_salt/api/v2/salt_autosign/create.json.rabl +1 -1
- data/app/views/foreman_salt/api/v2/salt_environments/create.json.rabl +1 -1
- data/app/views/foreman_salt/api/v2/salt_environments/show.json.rabl +1 -1
- data/app/views/foreman_salt/api/v2/salt_hostgroups/base.json.rabl +7 -0
- data/app/views/foreman_salt/api/v2/salt_hostgroups/show.json.rabl +3 -0
- data/app/views/foreman_salt/api/v2/salt_hostgroups/update.json.rabl +3 -0
- data/app/views/foreman_salt/api/v2/salt_keys/update.json.rabl +1 -1
- data/app/views/foreman_salt/api/v2/salt_minions/show.json.rabl +3 -4
- data/app/views/foreman_salt/api/v2/salt_states/create.json.rabl +1 -1
- data/app/views/foreman_salt/api/v2/salt_states/show.json.rabl +0 -1
- data/app/views/foreman_salt/api/v2/salt_variables/create.json.rabl +1 -1
- data/app/views/foreman_salt/api/v2/salt_variables/destroy.json.rabl +1 -1
- data/app/views/foreman_salt/api/v2/salt_variables/show.json.rabl +8 -8
- data/app/views/foreman_salt/salt_autosign/index.html.erb +1 -2
- data/app/views/foreman_salt/salt_environments/index.html.erb +1 -3
- data/app/views/foreman_salt/salt_keys/index.erb +1 -3
- data/app/views/foreman_salt/salt_modules/index.html.erb +1 -2
- data/config/api_routes.rb +31 -0
- data/config/routes.rb +16 -44
- data/db/migrate/20140817210214_create_salt_modules.rb +4 -4
- data/db/migrate/20140829210214_add_salt_modules_to_hostgroups.rb +1 -1
- data/db/migrate/20140920232200_create_salt_environments.rb +3 -3
- data/db/migrate/20150220122707_fix_incorrect_report_metrics.rb +6 -2
- data/db/migrate/20211108211312_add_missing_permissions.rb +9 -0
- data/db/migrate/20220118160349_drop_salt_hide_run_salt_button_setting.rb +5 -0
- data/db/migrate/20220406185204_fix_salt_setting_category_to_dsl.rb +5 -0
- data/db/seeds.d/75-salt_seeds.rb +1 -1
- data/db/seeds.d/76-job_templates.rb +7 -5
- data/lib/foreman_salt/engine.rb +17 -19
- data/lib/foreman_salt/extensions.rb +8 -8
- data/lib/foreman_salt/plugin.rb +130 -114
- data/lib/foreman_salt/version.rb +1 -1
- data/lib/foreman_salt.rb +1 -1
- data/lib/tasks/foreman_salt_tasks.rake +3 -5
- data/locale/action_names.rb +4 -4
- data/test/factories/foreman_salt_factories.rb +5 -5
- data/test/functional/api/v2/salt_autosign_controller_test.rb +26 -20
- data/test/functional/api/v2/salt_environments_controller_test.rb +29 -23
- data/test/functional/api/v2/salt_hostgroups_controller_test.rb +76 -0
- data/test/functional/api/v2/salt_keys_controller_test.rb +25 -19
- data/test/functional/api/v2/salt_states_controller_test.rb +72 -66
- data/test/functional/api/v2/salt_variables_controller_test.rb +4 -4
- data/test/functional/hosts_controller_test.rb +26 -26
- data/test/functional/minions_controller_test.rb +23 -24
- data/test/functional/salt_modules_controller_test.rb +3 -3
- data/test/functional/salt_variables_controller_test.rb +5 -5
- data/test/integration/hosts_js_test.rb +7 -23
- data/test/integration/salt_autosign_test.rb +5 -6
- data/test/integration/salt_environment_test.rb +2 -2
- data/test/integration/salt_keys_test.rb +7 -8
- data/test/integration/salt_module_test.rb +9 -9
- data/test/integration/salt_variable_test.rb +2 -2
- data/test/test_plugin_helper.rb +1 -1
- data/test/unit/grains_importer_test.rb +13 -13
- data/test/unit/host_extensions_test.rb +21 -19
- data/test/unit/hostgroup_extensions_test.rb +13 -13
- data/test/unit/report_importer_test.rb +9 -9
- data/test/unit/salt_keys_test.rb +2 -2
- data/test/unit/salt_modules_test.rb +2 -2
- data/test/unit/salt_variables_test.rb +10 -10
- metadata +24 -14
- data/app/models/setting/salt.rb +0 -13
@@ -10,7 +10,7 @@ module ForemanSalt
|
|
10
10
|
|
11
11
|
def params
|
12
12
|
params = super
|
13
|
-
params['salt_master'] = salt_master
|
13
|
+
params['salt_master'] = salt_master if salt_master.present?
|
14
14
|
params
|
15
15
|
end
|
16
16
|
|
@@ -23,31 +23,31 @@ module ForemanSalt
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def inherited_attributes
|
26
|
-
super + %w
|
26
|
+
super + %w[salt_proxy_id salt_environment_id]
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
30
|
included do
|
31
|
-
has_many :host_salt_modules, :
|
32
|
-
has_many :salt_modules, :
|
31
|
+
has_many :host_salt_modules, foreign_key: :host_id, class_name: '::ForemanSalt::HostSaltModule'
|
32
|
+
has_many :salt_modules, through: :host_salt_modules, class_name: '::ForemanSalt::SaltModule'
|
33
33
|
|
34
|
-
belongs_to :salt_proxy, :
|
35
|
-
belongs_to :salt_environment, :
|
34
|
+
belongs_to :salt_proxy, class_name: 'SmartProxy'
|
35
|
+
belongs_to :salt_environment, class_name: 'ForemanSalt::SaltEnvironment'
|
36
36
|
|
37
37
|
prepend Overrides
|
38
38
|
|
39
|
-
scoped_search :
|
40
|
-
scoped_search :
|
41
|
-
scoped_search :
|
39
|
+
scoped_search relation: :salt_modules, on: :name, complete_value: true, rename: :salt_state
|
40
|
+
scoped_search relation: :salt_environment, on: :name, complete_value: true, rename: :salt_environment
|
41
|
+
scoped_search relation: :salt_proxy, on: :name, complete_value: true, rename: :saltmaster
|
42
42
|
|
43
43
|
validate :salt_modules_in_host_environment
|
44
44
|
|
45
|
-
after_build :ensure_salt_autosign, :
|
46
|
-
before_destroy :remove_salt_minion, :
|
45
|
+
after_build :ensure_salt_autosign, if: ->(host) { host.salt_proxy }
|
46
|
+
before_destroy :remove_salt_minion, if: ->(host) { host.salt_proxy }
|
47
47
|
end
|
48
48
|
|
49
49
|
def salt_params
|
50
|
-
variables = ForemanSalt::SaltVariable.where(:
|
50
|
+
variables = ForemanSalt::SaltVariable.where(salt_module_id: all_salt_modules.pluck(:id), override: true)
|
51
51
|
values = variables.values_hash(self)
|
52
52
|
|
53
53
|
variables.each_with_object({}) do |var, memo|
|
@@ -58,11 +58,11 @@ module ForemanSalt
|
|
58
58
|
end
|
59
59
|
|
60
60
|
def host_params_grains_name
|
61
|
-
|
61
|
+
'salt_grains'
|
62
62
|
end
|
63
63
|
|
64
64
|
def autosign_grain_name
|
65
|
-
|
65
|
+
'autosign_key'
|
66
66
|
end
|
67
67
|
|
68
68
|
def salt_modules_for_enc
|
@@ -73,42 +73,30 @@ module ForemanSalt
|
|
73
73
|
return [] unless salt_environment
|
74
74
|
|
75
75
|
modules = salt_modules + (hostgroup ? hostgroup.all_salt_modules : [])
|
76
|
-
ForemanSalt::SaltModule.in_environment(salt_environment).where(:
|
76
|
+
ForemanSalt::SaltModule.in_environment(salt_environment).where(id: modules)
|
77
77
|
end
|
78
78
|
|
79
79
|
def salt_master
|
80
80
|
salt_proxy.to_s
|
81
81
|
end
|
82
82
|
|
83
|
-
def saltrun!
|
84
|
-
unless salt_proxy.present?
|
85
|
-
errors.add(:base, _("No Salt master defined - can't continue"))
|
86
|
-
logger.warn 'Unable to execute salt run, no salt proxies defined'
|
87
|
-
return false
|
88
|
-
end
|
89
|
-
ProxyAPI::Salt.new(:url => salt_proxy.url).highstate name
|
90
|
-
rescue => e
|
91
|
-
errors.add(:base, _('Failed to execute state.highstate: %s') % e)
|
92
|
-
false
|
93
|
-
end
|
94
|
-
|
95
83
|
def salt_modules_in_host_environment
|
96
|
-
return unless
|
84
|
+
return unless salt_modules.any?
|
97
85
|
|
98
|
-
if
|
99
|
-
errors.add(:base, _('Salt states must be in the environment of the host')) unless (
|
86
|
+
if salt_environment
|
87
|
+
errors.add(:base, _('Salt states must be in the environment of the host')) unless (salt_modules - salt_environment.salt_modules).empty?
|
100
88
|
else
|
101
89
|
errors.add(:base, _('Host must have an environment in order to set salt states'))
|
102
90
|
end
|
103
91
|
end
|
104
92
|
|
105
|
-
def derive_salt_grains(use_autosign:
|
93
|
+
def derive_salt_grains(use_autosign: false)
|
106
94
|
grains = {}
|
107
95
|
begin
|
108
|
-
Rails.logger.info(
|
96
|
+
Rails.logger.info('Derive Salt Grains from host_params and autosign_key')
|
109
97
|
grains[autosign_grain_name] = salt_autosign_key if use_autosign && !salt_autosign_key.nil?
|
110
98
|
unless host_params[host_params_grains_name].nil? ||
|
111
|
-
|
99
|
+
host_params[host_params_grains_name].class != Hash
|
112
100
|
grains.merge!(host_params[host_params_grains_name])
|
113
101
|
end
|
114
102
|
rescue Foreman::Exception => e
|
@@ -120,6 +108,7 @@ module ForemanSalt
|
|
120
108
|
private
|
121
109
|
|
122
110
|
def ensure_salt_autosign
|
111
|
+
remove_salt_key
|
123
112
|
remove_salt_autosign
|
124
113
|
create_salt_autosign
|
125
114
|
end
|
@@ -131,43 +120,44 @@ module ForemanSalt
|
|
131
120
|
|
132
121
|
def remove_salt_key
|
133
122
|
Rails.logger.info("Remove salt key for host #{fqdn}")
|
134
|
-
api = ProxyAPI::Salt.new(:
|
123
|
+
api = ProxyAPI::Salt.new(url: salt_proxy.url)
|
135
124
|
api.key_delete(name)
|
136
125
|
end
|
137
126
|
|
138
127
|
def remove_salt_autosign
|
139
|
-
key =
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
end
|
128
|
+
key = salt_autosign_key
|
129
|
+
return if key.nil?
|
130
|
+
Rails.logger.info("Remove salt autosign key for host #{fqdn}")
|
131
|
+
begin
|
132
|
+
api = ProxyAPI::Salt.new(url: salt_proxy.url)
|
133
|
+
api.autosign_remove_key(key)
|
134
|
+
rescue Foreman::Exception => e
|
135
|
+
Rails.logger.warn("Unable to remove salt autosign for #{fqdn}: #{e}")
|
148
136
|
end
|
149
137
|
end
|
150
138
|
|
151
139
|
def generate_provisioning_key
|
152
|
-
|
140
|
+
SecureRandom.hex(10)
|
153
141
|
end
|
154
142
|
|
155
143
|
def create_salt_autosign
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
Rails.logger.warn("Unable to create salt autosign for #{fqdn}: #{e}")
|
165
|
-
end
|
144
|
+
Rails.logger.info("Create salt autosign key for host #{fqdn}")
|
145
|
+
api = ProxyAPI::Salt.new(url: salt_proxy.url)
|
146
|
+
key = generate_provisioning_key
|
147
|
+
api.autosign_create_key(key)
|
148
|
+
update(salt_autosign_key: key)
|
149
|
+
update(salt_status: ForemanSalt::SaltStatus.minion_auth_waiting)
|
150
|
+
rescue Foreman::Exception => e
|
151
|
+
Rails.logger.warn("Unable to create salt autosign for #{fqdn}: #{e}")
|
166
152
|
end
|
167
153
|
end
|
168
154
|
end
|
169
155
|
end
|
170
156
|
|
171
|
-
|
172
|
-
|
157
|
+
# rubocop:disable Style/ClassAndModuleChildren
|
158
|
+
class Host::Managed
|
159
|
+
class Jail < ::Safemode::Jail
|
160
|
+
allow :salt_environment, :salt_master, :derive_salt_grains
|
161
|
+
end
|
173
162
|
end
|
163
|
+
# rubocop:enable Style/ClassAndModuleChildren
|
@@ -4,23 +4,26 @@ module ForemanSalt
|
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
6
|
included do
|
7
|
-
has_many :hostgroup_salt_modules, :
|
8
|
-
has_many :salt_modules, :
|
7
|
+
has_many :hostgroup_salt_modules, class_name: '::ForemanSalt::HostgroupSaltModule'
|
8
|
+
has_many :salt_modules, through: :hostgroup_salt_modules, class_name: '::ForemanSalt::SaltModule'
|
9
9
|
|
10
|
-
belongs_to :salt_proxy, :
|
11
|
-
belongs_to :salt_environment, :
|
10
|
+
belongs_to :salt_proxy, class_name: 'SmartProxy'
|
11
|
+
belongs_to :salt_environment, class_name: 'ForemanSalt::SaltEnvironment'
|
12
12
|
|
13
|
-
scoped_search :
|
14
|
-
scoped_search :
|
15
|
-
scoped_search :
|
13
|
+
scoped_search relation: :salt_modules, on: :name, complete_value: true, rename: :salt_state
|
14
|
+
scoped_search relation: :salt_environment, on: :name, complete_value: true, rename: :salt_environment
|
15
|
+
scoped_search relation: :salt_proxy, on: :name, complete_value: true, rename: :saltmaster
|
16
|
+
|
17
|
+
validates :salt_proxy, presence: true, unless: -> { salt_proxy_id.blank? }
|
18
|
+
validates :salt_environment, presence: true, unless: -> { salt_environment_id.blank? }
|
16
19
|
end
|
17
20
|
|
18
21
|
def all_salt_modules
|
19
|
-
ForemanSalt::SaltModule.in_environment(salt_environment).where(:
|
22
|
+
ForemanSalt::SaltModule.in_environment(salt_environment).where(id: salt_module_ids + inherited_salt_module_ids)
|
20
23
|
end
|
21
24
|
|
22
25
|
def inherited_salt_modules
|
23
|
-
ForemanSalt::SaltModule.where(:
|
26
|
+
ForemanSalt::SaltModule.where(id: inherited_salt_module_ids)
|
24
27
|
end
|
25
28
|
|
26
29
|
def inherited_salt_module_ids
|
@@ -29,7 +32,7 @@ module ForemanSalt
|
|
29
32
|
|
30
33
|
def salt_proxy
|
31
34
|
if ancestry.present?
|
32
|
-
SmartProxy.with_features('Salt').
|
35
|
+
SmartProxy.with_features('Salt').find_by(id: inherited_salt_proxy_id)
|
33
36
|
else
|
34
37
|
super
|
35
38
|
end
|
@@ -41,7 +44,7 @@ module ForemanSalt
|
|
41
44
|
|
42
45
|
def salt_environment
|
43
46
|
if ancestry.present?
|
44
|
-
ForemanSalt::SaltEnvironment.
|
47
|
+
ForemanSalt::SaltEnvironment.find_by(id: inherited_salt_environment_id)
|
45
48
|
else
|
46
49
|
super
|
47
50
|
end
|
@@ -5,17 +5,17 @@ module ForemanSalt
|
|
5
5
|
friendly_id :name
|
6
6
|
include Parameterizable::ByIdName
|
7
7
|
|
8
|
-
has_many :hosts, :
|
9
|
-
has_many :hostgroups, :
|
8
|
+
has_many :hosts, class_name: '::Host::Managed'
|
9
|
+
has_many :hostgroups, class_name: '::Hostgroup'
|
10
10
|
|
11
11
|
has_many :salt_module_environments
|
12
|
-
has_many :salt_modules, :
|
12
|
+
has_many :salt_modules, through: :salt_module_environments, before_remove: :remove_from_hosts
|
13
13
|
|
14
|
-
validates :name, :
|
14
|
+
validates :name, uniqueness: true, presence: true, format: { with: /\A[\w\d.]+\z/, message: N_('is alphanumeric and cannot contain spaces') }
|
15
15
|
|
16
|
-
scoped_search :
|
17
|
-
scoped_search :
|
18
|
-
scoped_search :
|
16
|
+
scoped_search on: :name, complete_value: true
|
17
|
+
scoped_search relation: :hostgroups, on: :name, complete_value: true, rename: :hostgroup
|
18
|
+
scoped_search relation: :hosts, on: :name, complete_value: true, rename: :host
|
19
19
|
|
20
20
|
def self.humanize_class_name(_name = nil)
|
21
21
|
_('Salt environment')
|
@@ -28,7 +28,7 @@ module ForemanSalt
|
|
28
28
|
private
|
29
29
|
|
30
30
|
def remove_from_hosts(state)
|
31
|
-
HostSaltModule.joins(:host).where(:
|
31
|
+
HostSaltModule.joins(:host).where(hosts: { salt_environment_id: id }, salt_module_id: state).destroy
|
32
32
|
end
|
33
33
|
end
|
34
34
|
end
|
@@ -7,19 +7,21 @@ module ForemanSalt
|
|
7
7
|
friendly_id :name
|
8
8
|
include Parameterizable::ByIdName
|
9
9
|
|
10
|
-
has_many :host_salt_modules
|
11
|
-
has_many :hosts, :
|
10
|
+
has_many :host_salt_modules
|
11
|
+
has_many :hosts, through: :host_salt_modules, class_name: '::Host::Managed'
|
12
12
|
|
13
|
-
has_many :hostgroup_salt_modules
|
14
|
-
has_many :hostgroups, :
|
13
|
+
has_many :hostgroup_salt_modules
|
14
|
+
has_many :hostgroups, through: :hostgroup_salt_modules
|
15
15
|
|
16
|
-
has_many :salt_variables, :
|
17
|
-
:
|
16
|
+
has_many :salt_variables, inverse_of: :salt_module,
|
17
|
+
dependent: :destroy
|
18
18
|
|
19
19
|
has_many :salt_module_environments
|
20
|
-
has_many :salt_environments, :
|
20
|
+
has_many :salt_environments, through: :salt_module_environments
|
21
21
|
|
22
|
-
validates :name, :
|
22
|
+
validates :name, uniqueness: true, presence: true,
|
23
|
+
format: { with: /\A(?:[\w\d\-]+\.{0,1})+[^.]\z/,
|
24
|
+
message: N_('must be alphanumeric, can contain periods, dashes, underscores and must not contain spaces') }
|
23
25
|
|
24
26
|
default_scope lambda {
|
25
27
|
order('salt_modules.name')
|
@@ -27,15 +29,15 @@ module ForemanSalt
|
|
27
29
|
|
28
30
|
scope :in_environment, ->(environment) { joins(:salt_environments).where('salt_module_environments.salt_environment_id' => environment) }
|
29
31
|
|
30
|
-
scoped_search :
|
31
|
-
scoped_search :
|
32
|
-
scoped_search :
|
33
|
-
scoped_search :
|
32
|
+
scoped_search on: :name, complete_value: true
|
33
|
+
scoped_search relation: :salt_environments, on: :name, complete_value: true, rename: :environment
|
34
|
+
scoped_search relation: :hostgroups, on: :name, complete_value: true, rename: :hostgroup
|
35
|
+
scoped_search relation: :hosts, on: :name, complete_value: true, rename: :host
|
34
36
|
|
35
37
|
def self.to_hash
|
36
38
|
states = {}
|
37
39
|
|
38
|
-
SaltEnvironment.all.
|
40
|
+
SaltEnvironment.all.find_each do |environment|
|
39
41
|
states[environment.name] = environment.salt_modules.map(&:name)
|
40
42
|
end
|
41
43
|
|
@@ -8,7 +8,7 @@ module ForemanSalt
|
|
8
8
|
private
|
9
9
|
|
10
10
|
def remove_from_hosts
|
11
|
-
HostSaltModule.joins(:host).where(:
|
11
|
+
HostSaltModule.joins(:host).where(hosts: { salt_environment_id: salt_environment_id }, salt_module_id: salt_module_id).destroy
|
12
12
|
end
|
13
13
|
end
|
14
14
|
end
|
@@ -14,14 +14,17 @@ module ForemanSalt
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def proxy_command_options(template_invocation, host)
|
17
|
-
super(template_invocation, host).merge(:
|
17
|
+
super(template_invocation, host).merge(name: host.name)
|
18
18
|
end
|
19
19
|
|
20
|
-
def ssh_password(_host)
|
20
|
+
def ssh_password(_host)
|
21
|
+
end
|
21
22
|
|
22
|
-
def ssh_key_passphrase(_host)
|
23
|
+
def ssh_key_passphrase(_host)
|
24
|
+
end
|
23
25
|
|
24
|
-
def sudo_password(_host)
|
26
|
+
def sudo_password(_host)
|
27
|
+
end
|
25
28
|
end
|
26
29
|
end
|
27
30
|
end
|
@@ -3,12 +3,12 @@
|
|
3
3
|
module ForemanSalt
|
4
4
|
# Represents the variables used in Salt
|
5
5
|
class SaltVariable < LookupKey
|
6
|
-
belongs_to :salt_module, :
|
7
|
-
validates :salt_module_id, :
|
8
|
-
before_validation :cast_default_value, :
|
9
|
-
scoped_search :
|
10
|
-
scoped_search :
|
11
|
-
:
|
6
|
+
belongs_to :salt_module, inverse_of: :salt_variables
|
7
|
+
validates :salt_module_id, presence: true
|
8
|
+
before_validation :cast_default_value, if: :override?
|
9
|
+
scoped_search on: :key, aliases: [:name], complete_value: true
|
10
|
+
scoped_search relation: :salt_module, on: :name,
|
11
|
+
complete_value: true, rename: :salt_module
|
12
12
|
|
13
13
|
def salt?
|
14
14
|
true
|
@@ -18,12 +18,12 @@ module ForemanSalt
|
|
18
18
|
if options.present?
|
19
19
|
super
|
20
20
|
else
|
21
|
-
|
21
|
+
'Salt variable'
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
25
|
def editable_by_user?
|
26
|
-
SaltVariable.authorized(:edit_external_parameters).
|
26
|
+
SaltVariable.authorized(:edit_external_parameters).exists?(id: id)
|
27
27
|
end
|
28
28
|
end
|
29
29
|
end
|
@@ -7,8 +7,8 @@ selector_text = "<%= select_f f, :salt_environment_id, ForemanSalt::SaltEnvironm
|
|
7
7
|
:help_inline => :indicator} %>"
|
8
8
|
|
9
9
|
Deface::Override.new(
|
10
|
-
:
|
11
|
-
:
|
12
|
-
:
|
13
|
-
:
|
10
|
+
virtual_path: 'hosts/_form',
|
11
|
+
name: 'add_salt_environment_to_host',
|
12
|
+
insert_bottom: 'div#primary',
|
13
|
+
text: selector_text
|
14
14
|
)
|
@@ -5,8 +5,8 @@ selector_text = "<%= select_f f, :salt_environment_id, ForemanSalt::SaltEnvironm
|
|
5
5
|
:'data-host-id' => (@host || @hostgroup).id, :help_inline => :indicator} %>"
|
6
6
|
|
7
7
|
Deface::Override.new(
|
8
|
-
:
|
9
|
-
:
|
10
|
-
:
|
11
|
-
:
|
8
|
+
virtual_path: 'hostgroups/_form',
|
9
|
+
name: 'add_salt_environment_to_hostgroup',
|
10
|
+
insert_bottom: 'div#primary',
|
11
|
+
text: selector_text
|
12
12
|
)
|
@@ -1,19 +1,19 @@
|
|
1
|
-
Deface::Override.new(:
|
2
|
-
:
|
3
|
-
:
|
4
|
-
:
|
1
|
+
Deface::Override.new(virtual_path: 'hosts/_form',
|
2
|
+
name: 'add_salt_modules_tab_to_host',
|
3
|
+
insert_after: 'li.active',
|
4
|
+
partial: 'foreman_salt/salt_modules/host_tab')
|
5
5
|
|
6
|
-
Deface::Override.new(:
|
7
|
-
:
|
8
|
-
:
|
9
|
-
:
|
6
|
+
Deface::Override.new(virtual_path: 'hosts/_form',
|
7
|
+
name: 'add_salt_modules_tab_pane_to_host',
|
8
|
+
insert_before: 'div#primary',
|
9
|
+
partial: 'foreman_salt/salt_modules/host_tab_pane')
|
10
10
|
|
11
|
-
Deface::Override.new(:
|
12
|
-
:
|
13
|
-
:
|
14
|
-
:
|
11
|
+
Deface::Override.new(virtual_path: 'hostgroups/_form',
|
12
|
+
name: 'add_salt_modules_tab_to_hg',
|
13
|
+
insert_after: 'li.active',
|
14
|
+
partial: 'foreman_salt/salt_modules/host_tab')
|
15
15
|
|
16
|
-
Deface::Override.new(:
|
17
|
-
:
|
18
|
-
:
|
19
|
-
:
|
16
|
+
Deface::Override.new(virtual_path: 'hostgroups/_form',
|
17
|
+
name: 'add_salt_modules_tab_pane_to_hg',
|
18
|
+
insert_before: 'div#primary',
|
19
|
+
partial: 'foreman_salt/salt_modules/host_tab_pane')
|
@@ -1,17 +1,19 @@
|
|
1
|
-
selector_text = "<%= select_f f, :salt_proxy_id,
|
1
|
+
selector_text = "<%= select_f f, :salt_proxy_id,
|
2
|
+
SmartProxy.unscoped.with_features('Salt').with_taxonomy_scope(@location,@organization, :path_ids),
|
3
|
+
:id, :name,
|
2
4
|
{ :include_blank => blank_or_inherit_f(f, :salt_proxy) },
|
3
5
|
{ :label => _('Salt Master') } %>"
|
4
6
|
|
5
7
|
Deface::Override.new(
|
6
|
-
:
|
7
|
-
:
|
8
|
-
:
|
9
|
-
:
|
8
|
+
virtual_path: 'hosts/_form',
|
9
|
+
name: 'add_salt_proxy_to_host',
|
10
|
+
insert_bottom: 'div#primary',
|
11
|
+
text: selector_text
|
10
12
|
)
|
11
13
|
|
12
14
|
Deface::Override.new(
|
13
|
-
:
|
14
|
-
:
|
15
|
-
:
|
16
|
-
:
|
15
|
+
virtual_path: 'hostgroups/_form',
|
16
|
+
name: 'add_salt_proxy_to_hostgroup',
|
17
|
+
insert_bottom: 'div#primary',
|
18
|
+
text: selector_text
|
17
19
|
)
|