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
@@ -15,13 +15,15 @@ if ForemanSalt.with_remote_execution?
|
|
15
15
|
ForemanSalt.register_rex_feature
|
16
16
|
end
|
17
17
|
JobTemplate.without_auditing do
|
18
|
-
Dir[File.join("#{ForemanSalt::Engine.root}/app/views/foreman_salt/"\
|
19
|
-
'job_templates/**/*.erb')]
|
18
|
+
templates = Dir[File.join("#{ForemanSalt::Engine.root}/app/views/foreman_salt/"\
|
19
|
+
'job_templates/**/*.erb')]
|
20
|
+
first = templates.select { |d| File.basename(d).start_with?('salt_run_function') }
|
21
|
+
(first + (templates - first)).each do |template|
|
20
22
|
sync = !Rails.env.test? && Setting[:remote_execution_sync_templates]
|
21
23
|
template = JobTemplate.import_raw!(File.read(template),
|
22
|
-
|
23
|
-
|
24
|
-
|
24
|
+
default: true,
|
25
|
+
lock: true,
|
26
|
+
update: sync)
|
25
27
|
template.organizations = organizations if template.present?
|
26
28
|
template.locations = locations if template.present?
|
27
29
|
end
|
data/lib/foreman_salt/engine.rb
CHANGED
@@ -12,18 +12,14 @@ module ForemanSalt
|
|
12
12
|
config.autoload_paths += Dir["#{config.root}/app/services"]
|
13
13
|
config.autoload_paths += Dir["#{config.root}/app/lib"]
|
14
14
|
|
15
|
-
|
16
|
-
ForemanTasks.dynflow.require!
|
17
|
-
end
|
15
|
+
config.paths['config/routes.rb'].unshift('config/api_routes.rb')
|
18
16
|
|
19
|
-
initializer 'foreman_salt.
|
20
|
-
|
21
|
-
require_dependency File.expand_path('../../../app/models/setting/salt.rb', __FILE__)
|
22
|
-
end
|
17
|
+
initializer 'foreman_salt.require_dynflow', before: 'foreman_tasks.initialize_dynflow' do
|
18
|
+
ForemanTasks.dynflow.require!
|
23
19
|
end
|
24
20
|
|
25
21
|
initializer 'foreman_salt.register_gettext',
|
26
|
-
|
22
|
+
after: :load_config_initializers do
|
27
23
|
locale_dir = File.join(File.expand_path('../..', __dir__), 'locale')
|
28
24
|
locale_domain = 'foreman_salt'
|
29
25
|
|
@@ -37,16 +33,16 @@ module ForemanSalt
|
|
37
33
|
end
|
38
34
|
|
39
35
|
initializer 'foreman_salt.assets.precompile' do |app|
|
40
|
-
app.config.assets.precompile += %w
|
36
|
+
app.config.assets.precompile += %w[foreman_salt/states.js]
|
41
37
|
app.config.assets.precompile += %w[foreman_salt/Salt.png]
|
42
38
|
end
|
43
39
|
|
44
|
-
initializer 'foreman_salt.configure_assets', :
|
40
|
+
initializer 'foreman_salt.configure_assets', group: :assets do
|
45
41
|
SETTINGS[:foreman_salt] = {
|
46
|
-
:
|
47
|
-
:
|
48
|
-
|
49
|
-
}
|
42
|
+
assets: {
|
43
|
+
precompile: ['foreman_salt/Salt.png',
|
44
|
+
'foreman_salt/states.js'],
|
45
|
+
},
|
50
46
|
}
|
51
47
|
end
|
52
48
|
|
@@ -54,7 +50,7 @@ module ForemanSalt
|
|
54
50
|
Apipie.configuration.checksum_path += ['/salt/api/']
|
55
51
|
end
|
56
52
|
|
57
|
-
initializer 'foreman_salt.register_plugin', :
|
53
|
+
initializer 'foreman_salt.register_plugin', before: :finisher_hook do
|
58
54
|
require 'foreman_salt/plugin'
|
59
55
|
end
|
60
56
|
|
@@ -68,15 +64,17 @@ module ForemanSalt
|
|
68
64
|
|
69
65
|
# check whether foreman_remote_execution to integrate is available in the system
|
70
66
|
def self.with_remote_execution?
|
71
|
-
RemoteExecutionFeature
|
67
|
+
RemoteExecutionFeature
|
68
|
+
rescue StandardError
|
69
|
+
false
|
72
70
|
end
|
73
71
|
|
74
72
|
def self.register_rex_feature
|
75
73
|
options = {
|
76
|
-
:
|
77
|
-
:
|
74
|
+
description: N_('Run Salt state.highstate'),
|
75
|
+
host_action_button: true,
|
78
76
|
}
|
79
77
|
|
80
|
-
RemoteExecutionFeature.register(:foreman_salt_run_state_highstate, N_(
|
78
|
+
RemoteExecutionFeature.register(:foreman_salt_run_state_highstate, N_('Run Salt'), options)
|
81
79
|
end
|
82
80
|
end
|
@@ -1,15 +1,15 @@
|
|
1
1
|
begin
|
2
2
|
# Helper Extensions
|
3
|
-
::HostsHelper.
|
4
|
-
::SmartProxiesHelper.
|
3
|
+
::HostsHelper.include ForemanSalt::HostsHelperExtensions
|
4
|
+
::SmartProxiesHelper.include ForemanSalt::SmartProxiesHelperExtensions
|
5
5
|
|
6
6
|
# Model Extensions
|
7
|
-
::Host::Managed.
|
8
|
-
::Hostgroup.
|
7
|
+
::Host::Managed.include ForemanSalt::Concerns::HostManagedExtensions
|
8
|
+
::Hostgroup.include ForemanSalt::Concerns::HostgroupExtensions
|
9
9
|
|
10
10
|
# Controller Extensions
|
11
|
-
::HostsController.
|
12
|
-
::HostgroupsController.
|
13
|
-
rescue => e
|
14
|
-
|
11
|
+
::HostsController.include ForemanSalt::Concerns::HostsControllerExtensions
|
12
|
+
::HostgroupsController.include ForemanSalt::Concerns::HostgroupsControllerExtensions
|
13
|
+
rescue StandardError => e
|
14
|
+
Rails.logger.error "ForemanSalt: skipping engine hook (#{e})"
|
15
15
|
end
|
data/lib/foreman_salt/plugin.rb
CHANGED
@@ -1,183 +1,199 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# rubocop:disable BlockLength
|
4
3
|
Foreman::Plugin.register :foreman_salt do
|
5
4
|
requires_foreman '>= 1.24'
|
6
5
|
|
6
|
+
settings do
|
7
|
+
category(:cfgmgmt, N_('Config Management')) do
|
8
|
+
setting('salt_namespace_pillars',
|
9
|
+
type: :boolean,
|
10
|
+
description: N_("Namespace Foreman pillars under 'foreman' key"),
|
11
|
+
default: false,
|
12
|
+
full_name: N_('Salt namespace pillars'))
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
7
16
|
apipie_documented_controllers ["#{ForemanSalt::Engine.root}/app/controllers/foreman_salt/api/v2/*.rb"]
|
8
17
|
|
9
18
|
# Menus
|
10
|
-
divider :top_menu, :
|
19
|
+
divider :top_menu, parent: :configure_menu, caption: 'Salt'
|
11
20
|
menu :top_menu, :salt_environments,
|
12
|
-
|
13
|
-
|
14
|
-
|
21
|
+
url_hash: { controller: :'foreman_salt/salt_environments', action: :index },
|
22
|
+
caption: 'Environments',
|
23
|
+
parent: :configure_menu
|
15
24
|
|
16
25
|
menu :top_menu, :salt_modules,
|
17
|
-
|
18
|
-
|
19
|
-
|
26
|
+
url_hash: { controller: :'foreman_salt/salt_modules', action: :index },
|
27
|
+
caption: 'States',
|
28
|
+
parent: :configure_menu
|
20
29
|
|
21
30
|
menu :top_menu, :salt_variables,
|
22
|
-
|
23
|
-
|
24
|
-
|
31
|
+
url_hash: { controller: :'foreman_salt/salt_variables', action: :index },
|
32
|
+
caption: N_('Variables'),
|
33
|
+
parent: :configure_menu
|
34
|
+
|
35
|
+
# Existing permissions
|
36
|
+
p = Foreman::AccessControl.permission(:edit_hostgroups)
|
37
|
+
p.actions << 'foreman_salt/api/v2/salt_hostgroups/update'
|
38
|
+
p.actions << 'hostgroups/salt_environment_selected'
|
25
39
|
|
40
|
+
p = Foreman::AccessControl.permission(:view_hostgroups)
|
41
|
+
p.actions << 'foreman_salt/api/v2/salt_hostgroups/show'
|
26
42
|
|
27
|
-
#
|
43
|
+
# New permissions
|
28
44
|
security_block :foreman_salt do
|
45
|
+
permission :auth_smart_proxies_salt_autosign,
|
46
|
+
{ 'foreman_salt/api/v2/salt_autosign': [:auth] },
|
47
|
+
resource_type: 'SmartProxy'
|
48
|
+
|
29
49
|
permission :destroy_smart_proxies_salt_autosign,
|
30
|
-
|
31
|
-
|
32
|
-
|
50
|
+
{ 'foreman_salt/salt_autosign': [:destroy],
|
51
|
+
'foreman_salt/api/v2/salt_autosign': [:destroy] },
|
52
|
+
resource_type: 'SmartProxy'
|
33
53
|
|
34
54
|
permission :create_smart_proxies_salt_autosign,
|
35
|
-
|
36
|
-
|
37
|
-
|
55
|
+
{ 'foreman_salt/salt_autosign': %i[new create],
|
56
|
+
'foreman_salt/api/v2/salt_autosign': [:create] },
|
57
|
+
resource_type: 'SmartProxy'
|
38
58
|
|
39
59
|
permission :view_smart_proxies_salt_autosign,
|
40
|
-
|
41
|
-
|
42
|
-
|
60
|
+
{ 'foreman_salt/salt_autosign': [:index],
|
61
|
+
'foreman_salt/api/v2/salt_autosign': [:index] },
|
62
|
+
resource_type: 'SmartProxy'
|
43
63
|
|
44
64
|
permission :create_salt_environments,
|
45
|
-
|
46
|
-
|
47
|
-
|
65
|
+
{ 'foreman_salt/salt_environments': %i[new create],
|
66
|
+
'foreman_salt/api/v2/salt_environments': [:create] },
|
67
|
+
resource_type: 'ForemanSalt::SaltEnvironment'
|
48
68
|
|
49
69
|
permission :view_salt_environments,
|
50
|
-
|
51
|
-
|
52
|
-
|
70
|
+
{ 'foreman_salt/salt_environments': %i[index show auto_complete_search],
|
71
|
+
'foreman_salt/api/v2/salt_environments': %i[index show] },
|
72
|
+
resource_type: 'ForemanSalt::SaltEnvironment'
|
53
73
|
|
54
74
|
permission :edit_salt_environments,
|
55
|
-
|
56
|
-
|
75
|
+
{ 'foreman_salt/salt_environments': %i[update edit] },
|
76
|
+
resource_type: 'ForemanSalt::SaltEnvironment'
|
57
77
|
|
58
78
|
permission :destroy_salt_environments,
|
59
|
-
|
60
|
-
|
61
|
-
|
79
|
+
{ 'foreman_salt/salt_environments': [:destroy],
|
80
|
+
'foreman_salt/api/v2/salt_environments': [:destroy] },
|
81
|
+
resource_type: 'ForemanSalt::SaltEnvironment'
|
62
82
|
|
63
83
|
permission :view_salt_variables,
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
:resource_type => 'ForemanSalt::SaltVariable'
|
84
|
+
{ 'foreman_salt/salt_variables': %i[index auto_complete_search],
|
85
|
+
'foreman_salt/api/v2/salt_variables': %i[index show],
|
86
|
+
'lookup_values': [:index] },
|
87
|
+
resource_type: 'ForemanSalt::SaltVariable'
|
69
88
|
|
70
89
|
permission :edit_salt_variables,
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
90
|
+
{ 'foreman_salt/salt_variables': %i[edit update],
|
91
|
+
'foreman_salt/api/v2/salt_variables': [:update],
|
92
|
+
'lookup_values': [:update] },
|
93
|
+
resource_type: 'ForemanSalt::SaltVariable'
|
75
94
|
|
76
95
|
permission :destroy_salt_variables,
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
96
|
+
{ 'foreman_salt/salt_variables': [:destroy],
|
97
|
+
'foreman_salt/api/v2/salt_variables': [:destroy],
|
98
|
+
'foreman_salt/api/v2/salt_override_values': [:destroy],
|
99
|
+
'lookup_values': [:destroy] },
|
100
|
+
resource_type: 'ForemanSalt::SaltVariable'
|
82
101
|
|
83
102
|
permission :create_salt_variables,
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
103
|
+
{ 'foreman_salt/salt_variables': %i[new create],
|
104
|
+
'foreman_salt/api/v2/salt_variables': [:create],
|
105
|
+
'foreman_salt/api/v2/salt_override_values': [:create],
|
106
|
+
'lookup_values': [:create] },
|
107
|
+
resource_type: 'ForemanSalt::SaltVariable'
|
89
108
|
|
90
109
|
permission :create_reports,
|
91
|
-
|
92
|
-
|
110
|
+
{ 'foreman_salt/api/v2/jobs': [:upload] },
|
111
|
+
resource_type: 'Report'
|
93
112
|
|
94
113
|
permission :saltrun_hosts,
|
95
|
-
|
96
|
-
|
114
|
+
{ 'foreman_salt/minions': [:run] },
|
115
|
+
resource_type: 'Host'
|
97
116
|
|
98
117
|
permission :edit_hosts,
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
118
|
+
{ 'foreman_salt/api/v2/salt_minions': [:update],
|
119
|
+
'foreman_salt/minions': [:salt_environment_selected],
|
120
|
+
hosts: %i[select_multiple_salt_master update_multiple_salt_master
|
121
|
+
select_multiple_salt_environment update_multiple_salt_environment] },
|
122
|
+
resource_type: 'Host'
|
104
123
|
|
105
124
|
permission :view_hosts,
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
permission :edit_hostgroups,
|
111
|
-
{ :hostgroups => [:salt_environment_selected] },
|
112
|
-
:resource_type => 'Hostgroup'
|
125
|
+
{ 'foreman_salt/minions': [:node],
|
126
|
+
'foreman_salt/api/v2/salt_minions': %i[index show] },
|
127
|
+
resource_type: 'Host'
|
113
128
|
|
114
129
|
permission :view_smart_proxies_salt_keys,
|
115
|
-
|
116
|
-
|
117
|
-
|
130
|
+
{ 'foreman_salt/salt_keys': [:index],
|
131
|
+
'foreman_salt/api/v2/salt_keys': [:index] },
|
132
|
+
resource_type: 'SmartProxy'
|
118
133
|
|
119
134
|
permission :destroy_smart_proxies_salt_keys,
|
120
|
-
|
121
|
-
|
122
|
-
|
135
|
+
{ 'foreman_salt/salt_keys': [:destroy],
|
136
|
+
'foreman_salt/api/v2/salt_keys': [:destroy] },
|
137
|
+
resource_type: 'SmartProxy'
|
123
138
|
|
124
139
|
permission :edit_smart_proxies_salt_keys,
|
125
|
-
|
126
|
-
|
127
|
-
|
140
|
+
{ 'foreman_salt/salt_keys': %i[accept reject],
|
141
|
+
'foreman_salt/api/v2/salt_keys': [:update] },
|
142
|
+
resource_type: 'SmartProxy'
|
128
143
|
|
129
144
|
permission :create_salt_modules,
|
130
|
-
|
131
|
-
|
132
|
-
|
145
|
+
{ 'foreman_salt/salt_modules': %i[new create],
|
146
|
+
'foreman_salt/api/v2/salt_states': [:create] },
|
147
|
+
resource_type: 'ForemanSalt::SaltModule'
|
133
148
|
|
134
149
|
permission :import_salt_modules,
|
135
|
-
|
136
|
-
|
137
|
-
|
150
|
+
{ 'foreman_salt/salt_modules': %i[import apply_changes],
|
151
|
+
'foreman_salt/api/v2/salt_states': [:import] },
|
152
|
+
resource_type: 'ForemanSalt::SaltModule'
|
138
153
|
|
139
154
|
permission :view_salt_modules,
|
140
|
-
|
141
|
-
|
142
|
-
|
155
|
+
{ 'foreman_salt/salt_modules': %i[index show auto_complete_search],
|
156
|
+
'foreman_salt/api/v2/salt_states': %i[index show] },
|
157
|
+
resource_type: 'ForemanSalt::SaltModule'
|
143
158
|
|
144
159
|
permission :edit_salt_modules,
|
145
|
-
|
146
|
-
|
160
|
+
{ 'foreman_salt/salt_modules': %i[update edit] },
|
161
|
+
resource_type: 'ForemanSalt::SaltModule'
|
147
162
|
|
148
163
|
permission :destroy_salt_modules,
|
149
|
-
|
150
|
-
|
151
|
-
|
164
|
+
{ 'foreman_salt/salt_modules': [:destroy],
|
165
|
+
'foreman_salt/api/v2/salt_states': [:destroy] },
|
166
|
+
resource_type: 'ForemanSalt::SaltModule'
|
152
167
|
end
|
153
168
|
|
154
169
|
# Roles
|
155
|
-
role 'Salt admin', [
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
170
|
+
role 'Salt admin', %i[saltrun_hosts
|
171
|
+
create_salt_modules view_salt_modules
|
172
|
+
edit_salt_modules destroy_salt_modules
|
173
|
+
import_salt_modules
|
174
|
+
view_smart_proxies_salt_keys
|
175
|
+
edit_smart_proxies_salt_keys destroy_smart_proxies_salt_keys
|
176
|
+
create_smart_proxies_salt_autosign view_smart_proxies_salt_autosign
|
177
|
+
destroy_smart_proxies_salt_autosign auth_smart_proxies_salt_autosign
|
178
|
+
create_salt_environments view_salt_environments
|
179
|
+
edit_salt_environments destroy_salt_environments
|
180
|
+
create_salt_variables view_salt_variables
|
181
|
+
edit_salt_variables destroy_salt_variables
|
182
|
+
view_hostgroups edit_hostgroups]
|
183
|
+
|
184
|
+
role 'Salt viewer', %i[view_smart_proxies_salt_keys
|
185
|
+
view_smart_proxies_salt_autosign
|
186
|
+
view_salt_variables
|
187
|
+
view_salt_environments
|
188
|
+
view_salt_modules
|
189
|
+
view_hostgroups]
|
173
190
|
|
174
191
|
# Parameter filters
|
175
192
|
parameter_filter Hostgroup,
|
176
|
-
|
177
|
-
|
193
|
+
:salt_proxy_id, :salt_proxy_name, :salt_environment_id,
|
194
|
+
:salt_environment_name, salt_modules: [], salt_module_ids: []
|
178
195
|
parameter_filter Host::Managed,
|
179
|
-
|
180
|
-
|
181
|
-
|
196
|
+
:salt_proxy_id, :salt_proxy_name,
|
197
|
+
:salt_environment_id, :salt_environment_name, salt_modules: [],
|
198
|
+
salt_module_ids: []
|
182
199
|
end
|
183
|
-
# rubocop:enable BlockLength
|
data/lib/foreman_salt/version.rb
CHANGED
data/lib/foreman_salt.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
namespace :foreman_salt do
|
2
|
-
task :
|
2
|
+
task rubocop: :environment do
|
3
3
|
begin
|
4
4
|
require 'rubocop/rake_task'
|
5
5
|
RuboCop::RakeTask.new(:rubocop_salt) do |task|
|
@@ -7,7 +7,7 @@ namespace :foreman_salt do
|
|
7
7
|
"#{ForemanSalt::Engine.root}/lib/**/*.rb",
|
8
8
|
"#{ForemanSalt::Engine.root}/test/**/*.rb"]
|
9
9
|
end
|
10
|
-
rescue
|
10
|
+
rescue StandardError
|
11
11
|
puts 'Rubocop not loaded.'
|
12
12
|
end
|
13
13
|
|
@@ -29,6 +29,4 @@ end
|
|
29
29
|
Rake::Task[:test].enhance ['test:foreman_salt']
|
30
30
|
|
31
31
|
load 'tasks/jenkins.rake'
|
32
|
-
if Rake::Task.task_defined?(:'jenkins:unit')
|
33
|
-
Rake::Task['jenkins:unit'].enhance ['test:foreman_salt', 'foreman_salt:rubocop']
|
34
|
-
end
|
32
|
+
Rake::Task['jenkins:unit'].enhance ['test:foreman_salt', 'foreman_salt:rubocop'] if Rake::Task.task_defined?(:'jenkins:unit')
|
data/locale/action_names.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# Autogenerated!
|
2
|
-
_(
|
3
|
-
_(
|
4
|
-
_(
|
5
|
-
_(
|
2
|
+
_('Action with sub plans')
|
3
|
+
_('Import facts')
|
4
|
+
_('Import Puppet classes')
|
5
|
+
_('Remote action:')
|
@@ -1,13 +1,13 @@
|
|
1
1
|
FactoryBot.define do
|
2
|
-
factory :salt_module, :
|
2
|
+
factory :salt_module, class: 'ForemanSalt::SaltModule' do
|
3
3
|
sequence(:name) { |n| "module#{n}" }
|
4
4
|
end
|
5
5
|
|
6
|
-
factory :salt_environment, :
|
6
|
+
factory :salt_environment, class: 'ForemanSalt::SaltEnvironment' do
|
7
7
|
sequence(:name) { |n| "environment#{n}" }
|
8
8
|
end
|
9
9
|
|
10
|
-
factory :salt_variable, :
|
10
|
+
factory :salt_variable, class: 'ForemanSalt::SaltVariable' do
|
11
11
|
sequence(:key) { |n| "salt_variable_#{n}" }
|
12
12
|
sequence(:default_value) { |n| "default_value_#{n}" }
|
13
13
|
salt_module
|
@@ -18,13 +18,13 @@ FactoryBot.modify do
|
|
18
18
|
factory :hostgroup do
|
19
19
|
trait :with_salt_modules do
|
20
20
|
salt_environment { FactoryBot.build :salt_environment }
|
21
|
-
salt_modules { FactoryBot.create_list :salt_module, 10, :
|
21
|
+
salt_modules { FactoryBot.create_list :salt_module, 10, salt_environments: [salt_environment] }
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
25
|
factory :smart_proxy do
|
26
26
|
trait :with_salt_feature do
|
27
|
-
features { [::Feature.find_or_create_by(:
|
27
|
+
features { [::Feature.find_or_create_by(name: 'Salt')] }
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
@@ -1,27 +1,33 @@
|
|
1
1
|
require 'test_plugin_helper'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
3
|
+
module ForemanSalt
|
4
|
+
module Api
|
5
|
+
module V2
|
6
|
+
class SaltAutosignControllerTest < ActionController::TestCase
|
7
|
+
setup do
|
8
|
+
@proxy = FactoryBot.create(:smart_proxy, :with_salt_feature)
|
9
|
+
@host = FactoryBot.create(:host, :managed)
|
10
|
+
@host.salt_proxy = @proxy
|
11
|
+
ProxyAPI::Salt.any_instance.stubs(:autosign_list).returns(%w[foo bar baz])
|
12
|
+
end
|
10
13
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
14
|
+
test 'should get index' do
|
15
|
+
get :index, params: { smart_proxy_id: @proxy.id }
|
16
|
+
assert_response :success
|
17
|
+
end
|
15
18
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
19
|
+
test 'should create autosign' do
|
20
|
+
ProxyAPI::Salt.any_instance.expects(:autosign_create).once.returns(true)
|
21
|
+
post :create, params: { smart_proxy_id: @proxy.id, record: 'unicorn.example.com' }
|
22
|
+
assert_response :success
|
23
|
+
end
|
21
24
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
25
|
+
test 'should delete autosign' do
|
26
|
+
ProxyAPI::Salt.any_instance.expects(:autosign_remove).once.returns(true)
|
27
|
+
delete :destroy, params: { smart_proxy_id: @proxy.id, record: 'unicorn.example.com' }
|
28
|
+
assert_response :success
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
26
32
|
end
|
27
33
|
end
|