foreman_salt 14.0.0 → 14.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 -9
- 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 +16 -10
- 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 +47 -46
- 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/models/setting/salt.rb +12 -10
- 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 +26 -26
- 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/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/seeds.d/75-salt_seeds.rb +1 -1
- data/db/seeds.d/76-job_templates.rb +3 -3
- data/lib/foreman_salt/engine.rb +24 -16
- data/lib/foreman_salt/extensions.rb +8 -8
- data/lib/foreman_salt/plugin.rb +120 -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 +22 -22
- 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 +11 -11
- data/test/integration/salt_autosign_test.rb +5 -5
- data/test/integration/salt_environment_test.rb +2 -2
- data/test/integration/salt_keys_test.rb +7 -7
- 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 +12 -12
- data/test/unit/host_extensions_test.rb +19 -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 +22 -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,7 +73,7 @@ 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
|
@@ -81,22 +81,22 @@ module ForemanSalt
|
|
81
81
|
end
|
82
82
|
|
83
83
|
def saltrun!
|
84
|
-
|
84
|
+
if salt_proxy.blank?
|
85
85
|
errors.add(:base, _("No Salt master defined - can't continue"))
|
86
86
|
logger.warn 'Unable to execute salt run, no salt proxies defined'
|
87
87
|
return false
|
88
88
|
end
|
89
|
-
ProxyAPI::Salt.new(:
|
90
|
-
rescue => e
|
89
|
+
ProxyAPI::Salt.new(url: salt_proxy.url).highstate name
|
90
|
+
rescue StandardError => e
|
91
91
|
errors.add(:base, _('Failed to execute state.highstate: %s') % e)
|
92
92
|
false
|
93
93
|
end
|
94
94
|
|
95
95
|
def salt_modules_in_host_environment
|
96
|
-
return unless
|
96
|
+
return unless salt_modules.any?
|
97
97
|
|
98
|
-
if
|
99
|
-
errors.add(:base, _('Salt states must be in the environment of the host')) unless (
|
98
|
+
if salt_environment
|
99
|
+
errors.add(:base, _('Salt states must be in the environment of the host')) unless (salt_modules - salt_environment.salt_modules).empty?
|
100
100
|
else
|
101
101
|
errors.add(:base, _('Host must have an environment in order to set salt states'))
|
102
102
|
end
|
@@ -105,10 +105,10 @@ module ForemanSalt
|
|
105
105
|
def derive_salt_grains(use_autosign: False)
|
106
106
|
grains = {}
|
107
107
|
begin
|
108
|
-
Rails.logger.info(
|
108
|
+
Rails.logger.info('Derive Salt Grains from host_params and autosign_key')
|
109
109
|
grains[autosign_grain_name] = salt_autosign_key if use_autosign && !salt_autosign_key.nil?
|
110
110
|
unless host_params[host_params_grains_name].nil? ||
|
111
|
-
|
111
|
+
host_params[host_params_grains_name].class != Hash
|
112
112
|
grains.merge!(host_params[host_params_grains_name])
|
113
113
|
end
|
114
114
|
rescue Foreman::Exception => e
|
@@ -131,43 +131,44 @@ module ForemanSalt
|
|
131
131
|
|
132
132
|
def remove_salt_key
|
133
133
|
Rails.logger.info("Remove salt key for host #{fqdn}")
|
134
|
-
api = ProxyAPI::Salt.new(:
|
134
|
+
api = ProxyAPI::Salt.new(url: salt_proxy.url)
|
135
135
|
api.key_delete(name)
|
136
136
|
end
|
137
137
|
|
138
138
|
def remove_salt_autosign
|
139
|
-
key =
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
end
|
139
|
+
key = salt_autosign_key
|
140
|
+
return if key.nil?
|
141
|
+
Rails.logger.info("Remove salt autosign key for host #{fqdn}")
|
142
|
+
begin
|
143
|
+
api = ProxyAPI::Salt.new(url: salt_proxy.url)
|
144
|
+
api.autosign_remove_key(key)
|
145
|
+
rescue Foreman::Exception => e
|
146
|
+
Rails.logger.warn("Unable to remove salt autosign for #{fqdn}: #{e}")
|
148
147
|
end
|
149
148
|
end
|
150
149
|
|
151
150
|
def generate_provisioning_key
|
152
|
-
|
151
|
+
SecureRandom.hex(10)
|
153
152
|
end
|
154
153
|
|
155
154
|
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
|
155
|
+
Rails.logger.info("Create salt autosign key for host #{fqdn}")
|
156
|
+
api = ProxyAPI::Salt.new(url: salt_proxy.url)
|
157
|
+
key = generate_provisioning_key
|
158
|
+
api.autosign_create_key(key)
|
159
|
+
update(salt_autosign_key: key)
|
160
|
+
update(salt_status: ForemanSalt::SaltStatus.minion_auth_waiting)
|
161
|
+
rescue Foreman::Exception => e
|
162
|
+
Rails.logger.warn("Unable to create salt autosign for #{fqdn}: #{e}")
|
166
163
|
end
|
167
164
|
end
|
168
165
|
end
|
169
166
|
end
|
170
167
|
|
171
|
-
|
172
|
-
|
168
|
+
# rubocop:disable Style/ClassAndModuleChildren
|
169
|
+
class Host::Managed
|
170
|
+
class Jail < ::Safemode::Jail
|
171
|
+
allow :salt_environment, :salt_master, :derive_salt_grains
|
172
|
+
end
|
173
173
|
end
|
174
|
+
# 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
|
data/app/models/setting/salt.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
|
-
class Setting
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
1
|
+
class Setting
|
2
|
+
class Salt < ::Setting
|
3
|
+
def self.default_settings
|
4
|
+
[
|
5
|
+
set('salt_namespace_pillars', N_("Namespace Foreman pillars under 'foreman' key"), false),
|
6
|
+
set('salt_hide_run_salt_button', N_('Hide the Run Salt state.highstate button on the host details page'), false),
|
7
|
+
]
|
8
|
+
end
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
|
10
|
+
def self.load_defaults
|
11
|
+
super
|
12
|
+
Setting['salt_hide_run_salt_button'] = true if ForemanSalt.with_remote_execution?
|
13
|
+
end
|
12
14
|
end
|
13
15
|
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
|
)
|