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
data/lib/foreman_salt/engine.rb
CHANGED
@@ -12,18 +12,24 @@ 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
|
-
|
15
|
+
config.paths['config/routes.rb'].unshift('config/api_routes.rb')
|
16
|
+
|
17
|
+
initializer 'foreman_salt.require_dynflow', before: 'foreman_tasks.initialize_dynflow' do
|
16
18
|
ForemanTasks.dynflow.require!
|
17
19
|
end
|
18
20
|
|
19
|
-
initializer 'foreman_salt.load_default_settings', :
|
20
|
-
if
|
21
|
-
|
21
|
+
initializer 'foreman_salt.load_default_settings', before: :load_config_initializers do
|
22
|
+
if begin
|
23
|
+
Setting.table_exists?
|
24
|
+
rescue StandardError
|
25
|
+
(false)
|
26
|
+
end
|
27
|
+
require_dependency File.expand_path('../../app/models/setting/salt.rb', __dir__)
|
22
28
|
end
|
23
29
|
end
|
24
30
|
|
25
31
|
initializer 'foreman_salt.register_gettext',
|
26
|
-
|
32
|
+
after: :load_config_initializers do
|
27
33
|
locale_dir = File.join(File.expand_path('../..', __dir__), 'locale')
|
28
34
|
locale_domain = 'foreman_salt'
|
29
35
|
|
@@ -37,16 +43,16 @@ module ForemanSalt
|
|
37
43
|
end
|
38
44
|
|
39
45
|
initializer 'foreman_salt.assets.precompile' do |app|
|
40
|
-
app.config.assets.precompile += %w
|
46
|
+
app.config.assets.precompile += %w[foreman_salt/states.js]
|
41
47
|
app.config.assets.precompile += %w[foreman_salt/Salt.png]
|
42
48
|
end
|
43
49
|
|
44
|
-
initializer 'foreman_salt.configure_assets', :
|
50
|
+
initializer 'foreman_salt.configure_assets', group: :assets do
|
45
51
|
SETTINGS[:foreman_salt] = {
|
46
|
-
:
|
47
|
-
:
|
48
|
-
|
49
|
-
}
|
52
|
+
assets: {
|
53
|
+
precompile: ['foreman_salt/Salt.png',
|
54
|
+
'foreman_salt/states.js'],
|
55
|
+
},
|
50
56
|
}
|
51
57
|
end
|
52
58
|
|
@@ -54,7 +60,7 @@ module ForemanSalt
|
|
54
60
|
Apipie.configuration.checksum_path += ['/salt/api/']
|
55
61
|
end
|
56
62
|
|
57
|
-
initializer 'foreman_salt.register_plugin', :
|
63
|
+
initializer 'foreman_salt.register_plugin', before: :finisher_hook do
|
58
64
|
require 'foreman_salt/plugin'
|
59
65
|
end
|
60
66
|
|
@@ -68,15 +74,17 @@ module ForemanSalt
|
|
68
74
|
|
69
75
|
# check whether foreman_remote_execution to integrate is available in the system
|
70
76
|
def self.with_remote_execution?
|
71
|
-
RemoteExecutionFeature
|
77
|
+
RemoteExecutionFeature
|
78
|
+
rescue StandardError
|
79
|
+
false
|
72
80
|
end
|
73
81
|
|
74
82
|
def self.register_rex_feature
|
75
83
|
options = {
|
76
|
-
:
|
77
|
-
:
|
84
|
+
description: N_('Run Salt state.highstate'),
|
85
|
+
host_action_button: true,
|
78
86
|
}
|
79
87
|
|
80
|
-
RemoteExecutionFeature.register(:foreman_salt_run_state_highstate, N_(
|
88
|
+
RemoteExecutionFeature.register(:foreman_salt_run_state_highstate, N_('Run Salt'), options)
|
81
89
|
end
|
82
90
|
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,189 @@
|
|
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
|
|
7
6
|
apipie_documented_controllers ["#{ForemanSalt::Engine.root}/app/controllers/foreman_salt/api/v2/*.rb"]
|
8
7
|
|
9
8
|
# Menus
|
10
|
-
divider :top_menu, :
|
9
|
+
divider :top_menu, parent: :configure_menu, caption: 'Salt'
|
11
10
|
menu :top_menu, :salt_environments,
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
url_hash: { controller: :'foreman_salt/salt_environments', action: :index },
|
12
|
+
caption: 'Environments',
|
13
|
+
parent: :configure_menu
|
15
14
|
|
16
15
|
menu :top_menu, :salt_modules,
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
url_hash: { controller: :'foreman_salt/salt_modules', action: :index },
|
17
|
+
caption: 'States',
|
18
|
+
parent: :configure_menu
|
20
19
|
|
21
20
|
menu :top_menu, :salt_variables,
|
22
|
-
|
23
|
-
|
24
|
-
|
21
|
+
url_hash: { controller: :'foreman_salt/salt_variables', action: :index },
|
22
|
+
caption: N_('Variables'),
|
23
|
+
parent: :configure_menu
|
25
24
|
|
25
|
+
# Existing permissions
|
26
|
+
p = Foreman::AccessControl.permission(:edit_hostgroups)
|
27
|
+
p.actions << 'foreman_salt/api/v2/salt_hostgroups/update'
|
28
|
+
p.actions << 'hostgroups/salt_environment_selected'
|
26
29
|
|
27
|
-
|
30
|
+
p = Foreman::AccessControl.permission(:view_hostgroups)
|
31
|
+
p.actions << 'foreman_salt/api/v2/salt_hostgroups/show'
|
32
|
+
|
33
|
+
# New permissions
|
28
34
|
security_block :foreman_salt do
|
35
|
+
permission :auth_smart_proxies_salt_autosign,
|
36
|
+
{ 'foreman_salt/api/v2/salt_autosign': [:auth] },
|
37
|
+
resource_type: 'SmartProxy'
|
38
|
+
|
29
39
|
permission :destroy_smart_proxies_salt_autosign,
|
30
|
-
|
31
|
-
|
32
|
-
|
40
|
+
{ 'foreman_salt/salt_autosign': [:destroy],
|
41
|
+
'foreman_salt/api/v2/salt_autosign': [:destroy] },
|
42
|
+
resource_type: 'SmartProxy'
|
33
43
|
|
34
44
|
permission :create_smart_proxies_salt_autosign,
|
35
|
-
|
36
|
-
|
37
|
-
|
45
|
+
{ 'foreman_salt/salt_autosign': %i[new create],
|
46
|
+
'foreman_salt/api/v2/salt_autosign': [:create] },
|
47
|
+
resource_type: 'SmartProxy'
|
38
48
|
|
39
49
|
permission :view_smart_proxies_salt_autosign,
|
40
|
-
|
41
|
-
|
42
|
-
|
50
|
+
{ 'foreman_salt/salt_autosign': [:index],
|
51
|
+
'foreman_salt/api/v2/salt_autosign': [:index] },
|
52
|
+
resource_type: 'SmartProxy'
|
43
53
|
|
44
54
|
permission :create_salt_environments,
|
45
|
-
|
46
|
-
|
47
|
-
|
55
|
+
{ 'foreman_salt/salt_environments': %i[new create],
|
56
|
+
'foreman_salt/api/v2/salt_environments': [:create] },
|
57
|
+
resource_type: 'ForemanSalt::SaltEnvironment'
|
48
58
|
|
49
59
|
permission :view_salt_environments,
|
50
|
-
|
51
|
-
|
52
|
-
|
60
|
+
{ 'foreman_salt/salt_environments': %i[index show auto_complete_search],
|
61
|
+
'foreman_salt/api/v2/salt_environments': %i[index show] },
|
62
|
+
resource_type: 'ForemanSalt::SaltEnvironment'
|
53
63
|
|
54
64
|
permission :edit_salt_environments,
|
55
|
-
|
56
|
-
|
65
|
+
{ 'foreman_salt/salt_environments': %i[update edit] },
|
66
|
+
resource_type: 'ForemanSalt::SaltEnvironment'
|
57
67
|
|
58
68
|
permission :destroy_salt_environments,
|
59
|
-
|
60
|
-
|
61
|
-
|
69
|
+
{ 'foreman_salt/salt_environments': [:destroy],
|
70
|
+
'foreman_salt/api/v2/salt_environments': [:destroy] },
|
71
|
+
resource_type: 'ForemanSalt::SaltEnvironment'
|
62
72
|
|
63
73
|
permission :view_salt_variables,
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
:resource_type => 'ForemanSalt::SaltVariable'
|
74
|
+
{ 'foreman_salt/salt_variables': %i[index auto_complete_search],
|
75
|
+
'foreman_salt/api/v2/salt_variables': %i[index show],
|
76
|
+
'lookup_values': [:index] },
|
77
|
+
resource_type: 'ForemanSalt::SaltVariable'
|
69
78
|
|
70
79
|
permission :edit_salt_variables,
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
80
|
+
{ 'foreman_salt/salt_variables': %i[edit update],
|
81
|
+
'foreman_salt/api/v2/salt_variables': [:update],
|
82
|
+
'lookup_values': [:update] },
|
83
|
+
resource_type: 'ForemanSalt::SaltVariable'
|
75
84
|
|
76
85
|
permission :destroy_salt_variables,
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
86
|
+
{ 'foreman_salt/salt_variables': [:destroy],
|
87
|
+
'foreman_salt/api/v2/salt_variables': [:destroy],
|
88
|
+
'foreman_salt/api/v2/salt_override_values': [:destroy],
|
89
|
+
'lookup_values': [:destroy] },
|
90
|
+
resource_type: 'ForemanSalt::SaltVariable'
|
82
91
|
|
83
92
|
permission :create_salt_variables,
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
93
|
+
{ 'foreman_salt/salt_variables': %i[new create],
|
94
|
+
'foreman_salt/api/v2/salt_variables': [:create],
|
95
|
+
'foreman_salt/api/v2/salt_override_values': [:create],
|
96
|
+
'lookup_values': [:create] },
|
97
|
+
resource_type: 'ForemanSalt::SaltVariable'
|
89
98
|
|
90
99
|
permission :create_reports,
|
91
|
-
|
92
|
-
|
100
|
+
{ 'foreman_salt/api/v2/jobs': [:upload] },
|
101
|
+
resource_type: 'Report'
|
93
102
|
|
94
103
|
permission :saltrun_hosts,
|
95
|
-
|
96
|
-
|
104
|
+
{ 'foreman_salt/minions': [:run] },
|
105
|
+
resource_type: 'Host'
|
97
106
|
|
98
107
|
permission :edit_hosts,
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
108
|
+
{ 'foreman_salt/api/v2/salt_minions': [:update],
|
109
|
+
'foreman_salt/minions': [:salt_environment_selected],
|
110
|
+
hosts: %i[select_multiple_salt_master update_multiple_salt_master
|
111
|
+
select_multiple_salt_environment update_multiple_salt_environment] },
|
112
|
+
resource_type: 'Host'
|
104
113
|
|
105
114
|
permission :view_hosts,
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
permission :edit_hostgroups,
|
111
|
-
{ :hostgroups => [:salt_environment_selected] },
|
112
|
-
:resource_type => 'Hostgroup'
|
115
|
+
{ 'foreman_salt/minions': [:node],
|
116
|
+
'foreman_salt/api/v2/salt_minions': %i[index show] },
|
117
|
+
resource_type: 'Host'
|
113
118
|
|
114
119
|
permission :view_smart_proxies_salt_keys,
|
115
|
-
|
116
|
-
|
117
|
-
|
120
|
+
{ 'foreman_salt/salt_keys': [:index],
|
121
|
+
'foreman_salt/api/v2/salt_keys': [:index] },
|
122
|
+
resource_type: 'SmartProxy'
|
118
123
|
|
119
124
|
permission :destroy_smart_proxies_salt_keys,
|
120
|
-
|
121
|
-
|
122
|
-
|
125
|
+
{ 'foreman_salt/salt_keys': [:destroy],
|
126
|
+
'foreman_salt/api/v2/salt_keys': [:destroy] },
|
127
|
+
resource_type: 'SmartProxy'
|
123
128
|
|
124
129
|
permission :edit_smart_proxies_salt_keys,
|
125
|
-
|
126
|
-
|
127
|
-
|
130
|
+
{ 'foreman_salt/salt_keys': %i[accept reject],
|
131
|
+
'foreman_salt/api/v2/salt_keys': [:update] },
|
132
|
+
resource_type: 'SmartProxy'
|
128
133
|
|
129
134
|
permission :create_salt_modules,
|
130
|
-
|
131
|
-
|
132
|
-
|
135
|
+
{ 'foreman_salt/salt_modules': %i[new create],
|
136
|
+
'foreman_salt/api/v2/salt_states': [:create] },
|
137
|
+
resource_type: 'ForemanSalt::SaltModule'
|
133
138
|
|
134
139
|
permission :import_salt_modules,
|
135
|
-
|
136
|
-
|
137
|
-
|
140
|
+
{ 'foreman_salt/salt_modules': %i[import apply_changes],
|
141
|
+
'foreman_salt/api/v2/salt_states': [:import] },
|
142
|
+
resource_type: 'ForemanSalt::SaltModule'
|
138
143
|
|
139
144
|
permission :view_salt_modules,
|
140
|
-
|
141
|
-
|
142
|
-
|
145
|
+
{ 'foreman_salt/salt_modules': %i[index show auto_complete_search],
|
146
|
+
'foreman_salt/api/v2/salt_states': %i[index show] },
|
147
|
+
resource_type: 'ForemanSalt::SaltModule'
|
143
148
|
|
144
149
|
permission :edit_salt_modules,
|
145
|
-
|
146
|
-
|
150
|
+
{ 'foreman_salt/salt_modules': %i[update edit] },
|
151
|
+
resource_type: 'ForemanSalt::SaltModule'
|
147
152
|
|
148
153
|
permission :destroy_salt_modules,
|
149
|
-
|
150
|
-
|
151
|
-
|
154
|
+
{ 'foreman_salt/salt_modules': [:destroy],
|
155
|
+
'foreman_salt/api/v2/salt_states': [:destroy] },
|
156
|
+
resource_type: 'ForemanSalt::SaltModule'
|
152
157
|
end
|
153
158
|
|
154
159
|
# Roles
|
155
|
-
role 'Salt admin', [
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
160
|
+
role 'Salt admin', %i[saltrun_hosts
|
161
|
+
create_salt_modules view_salt_modules
|
162
|
+
edit_salt_modules destroy_salt_modules
|
163
|
+
import_salt_modules
|
164
|
+
view_smart_proxies_salt_keys
|
165
|
+
edit_smart_proxies_salt_keys destroy_smart_proxies_salt_keys
|
166
|
+
create_smart_proxies_salt_autosign view_smart_proxies_salt_autosign
|
167
|
+
destroy_smart_proxies_salt_autosign auth_smart_proxies_salt_autosign
|
168
|
+
create_salt_environments view_salt_environments
|
169
|
+
edit_salt_environments destroy_salt_environments
|
170
|
+
create_salt_variables view_salt_variables
|
171
|
+
edit_salt_variables destroy_salt_variables
|
172
|
+
view_hostgroups edit_hostgroups]
|
173
|
+
|
174
|
+
role 'Salt viewer', %i[view_smart_proxies_salt_keys
|
175
|
+
view_smart_proxies_salt_autosign
|
176
|
+
view_salt_variables
|
177
|
+
view_salt_environments
|
178
|
+
view_salt_modules
|
179
|
+
view_hostgroups]
|
173
180
|
|
174
181
|
# Parameter filters
|
175
182
|
parameter_filter Hostgroup,
|
176
|
-
|
177
|
-
|
183
|
+
:salt_proxy_id, :salt_proxy_name, :salt_environment_id,
|
184
|
+
:salt_environment_name, salt_modules: [], salt_module_ids: []
|
178
185
|
parameter_filter Host::Managed,
|
179
|
-
|
180
|
-
|
181
|
-
|
186
|
+
:salt_proxy_id, :salt_proxy_name,
|
187
|
+
:salt_environment_id, :salt_environment_name, salt_modules: [],
|
188
|
+
salt_module_ids: []
|
182
189
|
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
|
@@ -1,31 +1,37 @@
|
|
1
1
|
require 'test_plugin_helper'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
3
|
+
module ForemanSalt
|
4
|
+
module Api
|
5
|
+
module V2
|
6
|
+
class SaltEnvironmentsControllerTest < ActionController::TestCase
|
7
|
+
test 'should get index' do
|
8
|
+
get :index
|
9
|
+
assert_response :success
|
10
|
+
assert_template 'api/v2/salt_environments/index'
|
11
|
+
end
|
9
12
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
test 'should show environment' do
|
14
|
+
environment = ForemanSalt::SaltEnvironment.create(name: 'foo')
|
15
|
+
get :show, params: { id: environment.id }
|
16
|
+
assert_response :success
|
17
|
+
assert_template 'api/v2/salt_environments/show'
|
18
|
+
end
|
16
19
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
20
|
+
test 'should create environment' do
|
21
|
+
post :create, params: { environment: { name: 'unicorn' } }
|
22
|
+
assert_response :success
|
23
|
+
assert ForemanSalt::SaltEnvironment.find_by(name: 'unicorn')
|
24
|
+
assert_template 'api/v2/salt_environments/create'
|
25
|
+
end
|
23
26
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
27
|
+
test 'should delete environment' do
|
28
|
+
environment = ForemanSalt::SaltEnvironment.create(name: 'foo.bar.baz')
|
29
|
+
assert_difference('ForemanSalt::SaltEnvironment.count', -1) do
|
30
|
+
delete :destroy, params: { id: environment.id }
|
31
|
+
end
|
32
|
+
assert_response :success
|
33
|
+
end
|
34
|
+
end
|
28
35
|
end
|
29
|
-
assert_response :success
|
30
36
|
end
|
31
37
|
end
|