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
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'test_plugin_helper'
|
2
|
+
|
3
|
+
module ForemanSalt
|
4
|
+
module Api
|
5
|
+
module V2
|
6
|
+
class SaltHostgroupsControllerTest < ActionController::TestCase
|
7
|
+
setup do
|
8
|
+
@proxy = FactoryBot.create(:smart_proxy, :with_salt_feature)
|
9
|
+
@env = ForemanSalt::SaltEnvironment.create(name: 'basement')
|
10
|
+
@state = ForemanSalt::SaltModule.create(name: 'motd')
|
11
|
+
end
|
12
|
+
|
13
|
+
test 'should show host group' do
|
14
|
+
hostgroup = FactoryBot.create(:hostgroup)
|
15
|
+
get :show, params: { id: hostgroup.id }
|
16
|
+
|
17
|
+
assert_response :success
|
18
|
+
assert_template 'foreman_salt/api/v2/salt_hostgroups/show'
|
19
|
+
end
|
20
|
+
|
21
|
+
test 'should set proxy' do
|
22
|
+
hostgroup = FactoryBot.create(:hostgroup)
|
23
|
+
put :update, params: { id: hostgroup.id, hostgroup: { salt_proxy_id: @proxy.id } }
|
24
|
+
response_json = ActiveSupport::JSON.decode(response.body)
|
25
|
+
# remove protocol and port
|
26
|
+
clean_url = @proxy.url[8..-6]
|
27
|
+
|
28
|
+
assert_response :success
|
29
|
+
assert_template 'foreman_salt/api/v2/salt_hostgroups/update'
|
30
|
+
assert_equal clean_url, response_json['salt_master']
|
31
|
+
end
|
32
|
+
|
33
|
+
test 'should not find proxy' do
|
34
|
+
hostgroup = FactoryBot.create(:hostgroup)
|
35
|
+
put :update, params: { id: hostgroup.id, hostgroup: { salt_proxy_id: -2 } }
|
36
|
+
|
37
|
+
assert_response 422 # unprocessable entity
|
38
|
+
end
|
39
|
+
|
40
|
+
test 'should set environment' do
|
41
|
+
hostgroup = FactoryBot.create(:hostgroup)
|
42
|
+
put :update, params: { id: hostgroup.id, hostgroup: { salt_environment_id: @env.id } }
|
43
|
+
response_json = ActiveSupport::JSON.decode(response.body)
|
44
|
+
|
45
|
+
assert_response :success
|
46
|
+
assert_template 'foreman_salt/api/v2/salt_hostgroups/update'
|
47
|
+
assert_equal @env.name, response_json['salt_environment']
|
48
|
+
end
|
49
|
+
|
50
|
+
test 'should not find environment' do
|
51
|
+
hostgroup = FactoryBot.create(:hostgroup)
|
52
|
+
put :update, params: { id: hostgroup.id, hostgroup: { salt_environment_id: -12 } }
|
53
|
+
|
54
|
+
assert_response 422 # unprocessable entity
|
55
|
+
end
|
56
|
+
|
57
|
+
test 'should set states' do
|
58
|
+
hostgroup = FactoryBot.create(:hostgroup)
|
59
|
+
put :update, params: { id: hostgroup.id, hostgroup: { salt_state_ids: [@state.id] } }
|
60
|
+
response_json = ActiveSupport::JSON.decode(response.body)
|
61
|
+
|
62
|
+
assert_response :success
|
63
|
+
assert_template 'foreman_salt/api/v2/salt_hostgroups/update'
|
64
|
+
assert_equal @state.name, response_json['salt_states'][0]['name']
|
65
|
+
end
|
66
|
+
|
67
|
+
test 'should not find states' do
|
68
|
+
hostgroup = FactoryBot.create(:hostgroup)
|
69
|
+
put :update, params: { id: hostgroup.id, hostgroup: { salt_state_ids: [-5] } }
|
70
|
+
|
71
|
+
assert_response 422 # unprocessable entity
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -1,27 +1,33 @@
|
|
1
1
|
require 'test_plugin_helper'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
module ForemanSalt
|
4
|
+
module Api
|
5
|
+
module V2
|
6
|
+
class SaltKeysControllerTest < ActionController::TestCase
|
7
|
+
setup do
|
8
|
+
@proxy = FactoryBot.create(:smart_proxy, :with_salt_feature)
|
6
9
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
+
ProxyAPI::Salt.any_instance.stubs(:key_list).returns('saltstack.example.com' => { 'state' => 'unaccepted',
|
11
|
+
'fingerprint' => '98:c2:63:c1:57:59:bc:bd:f1:ef:5a:38:b2:e9:71:c0' })
|
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 update keys' do
|
20
|
+
ProxyAPI::Salt.any_instance.expects(:key_accept).once.returns(true)
|
21
|
+
put :update, params: { smart_proxy_id: @proxy.id, name: 'saltstack.example.com', state: 'accepted' }
|
22
|
+
assert_response :success
|
23
|
+
end
|
21
24
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
25
|
+
test 'should delete keys' do
|
26
|
+
ProxyAPI::Salt.any_instance.expects(:key_delete).once.returns(true)
|
27
|
+
delete :destroy, params: { smart_proxy_id: @proxy.id, name: 'saltstack.example.com' }
|
28
|
+
assert_response :success
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
26
32
|
end
|
27
33
|
end
|
@@ -1,84 +1,90 @@
|
|
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 SaltStatesControllerTest < ActionController::TestCase
|
7
|
+
test 'should get index' do
|
8
|
+
get :index
|
9
|
+
assert_response :success
|
10
|
+
assert_template 'api/v2/salt_states/index'
|
11
|
+
end
|
9
12
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
test 'should show state' do
|
14
|
+
state = ForemanSalt::SaltModule.create(name: 'foo.bar.baz')
|
15
|
+
get :show, params: { id: state.id }
|
16
|
+
assert_response :success
|
17
|
+
assert_template 'api/v2/salt_states/show'
|
18
|
+
end
|
16
19
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
20
|
+
test 'should create state' do
|
21
|
+
post :create, params: { state: { name: 'unicorn' } }
|
22
|
+
assert_response :success
|
23
|
+
assert ForemanSalt::SaltModule.find_by(name: 'unicorn')
|
24
|
+
assert_template 'api/v2/salt_states/create'
|
25
|
+
end
|
23
26
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
27
|
+
test 'should delete state' do
|
28
|
+
state = ForemanSalt::SaltModule.create(name: 'foo.bar.baz')
|
29
|
+
assert_difference('ForemanSalt::SaltModule.count', -1) do
|
30
|
+
delete :destroy, params: { id: state.id }
|
31
|
+
end
|
32
|
+
assert_response :success
|
33
|
+
end
|
31
34
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
35
|
+
context 'importing' do
|
36
|
+
setup do
|
37
|
+
@proxy = FactoryBot.create :smart_proxy, :with_salt_feature
|
38
|
+
@states = { 'env1' => %w[state1 state2 state3],
|
39
|
+
'env2' => %w[state1 state2] }
|
37
40
|
|
38
|
-
|
39
|
-
|
41
|
+
ProxyAPI::Salt.any_instance.stubs(:states_list).returns(@states)
|
42
|
+
end
|
40
43
|
|
41
|
-
|
42
|
-
|
44
|
+
test 'should import' do
|
45
|
+
post :import, params: { smart_proxy_id: @proxy.id }
|
43
46
|
|
44
|
-
|
47
|
+
assert_response :success
|
45
48
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
49
|
+
@states.each do |env, states|
|
50
|
+
environment = ::ForemanSalt::SaltEnvironment.find_by(name: env)
|
51
|
+
assert_empty environment.salt_modules.map(&:name) - states
|
52
|
+
end
|
53
|
+
end
|
51
54
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
55
|
+
test 'should import only from a given environment' do
|
56
|
+
post :import, params: { smart_proxy_id: @proxy.id, salt_environments: ['env2'] }
|
57
|
+
assert_response :success
|
58
|
+
assert_not ::ForemanSalt::SaltEnvironment.where(name: 'env1').first
|
59
|
+
assert ::ForemanSalt::SaltEnvironment.where(name: 'env2').first
|
60
|
+
end
|
58
61
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
+
test 'should limit actions to add' do
|
63
|
+
env = FactoryBot.create :salt_environment
|
64
|
+
state = FactoryBot.create :salt_module, salt_environments: [env]
|
62
65
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
66
|
+
post :import, params: { smart_proxy_id: @proxy.id, actions: ['add'] }
|
67
|
+
assert_response :success
|
68
|
+
assert ::ForemanSalt::SaltModule.where(id: state).first
|
69
|
+
assert ::ForemanSalt::SaltModule.where(name: 'state1').first
|
70
|
+
end
|
68
71
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
72
|
+
test 'should limit actions to remove' do
|
73
|
+
state = FactoryBot.create :salt_module
|
74
|
+
post :import, params: { smart_proxy_id: @proxy.id, actions: ['remove'] }
|
75
|
+
assert_response :success
|
76
|
+
assert_not ::ForemanSalt::SaltModule.where(id: state).first
|
77
|
+
assert_not ::ForemanSalt::SaltModule.where(name: 'state1').first
|
78
|
+
end
|
76
79
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
80
|
+
test 'dryrun should do nothing' do
|
81
|
+
post :import, params: { smart_proxy_id: @proxy.id, dryrun: true }
|
82
|
+
assert_response :success
|
83
|
+
assert_not ::ForemanSalt::SaltModule.all.any?
|
84
|
+
assert_not ::ForemanSalt::SaltEnvironment.all.any?
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
82
88
|
end
|
83
89
|
end
|
84
90
|
end
|
@@ -12,21 +12,21 @@ module ForemanSalt
|
|
12
12
|
end
|
13
13
|
|
14
14
|
test 'should get index' do
|
15
|
-
get :index, :
|
15
|
+
get :index, session: set_session_user
|
16
16
|
response = JSON.parse(@response.body)
|
17
17
|
assert_not_empty response['results']
|
18
18
|
assert_response :success
|
19
19
|
end
|
20
20
|
|
21
21
|
test 'should destroy' do
|
22
|
-
delete :destroy, :
|
22
|
+
delete :destroy, params: { id: @variable.id }, session: set_session_user
|
23
23
|
assert_response :ok
|
24
24
|
assert_not SaltVariable.exists?(@variable.id)
|
25
25
|
end
|
26
26
|
|
27
27
|
test 'should create' do
|
28
|
-
params = { :
|
29
|
-
post :create, :
|
28
|
+
params = { key: 'test name', salt_state_id: FactoryBot.create(:salt_module).id }
|
29
|
+
post :create, params: params, session: set_session_user
|
30
30
|
assert_response :success
|
31
31
|
end
|
32
32
|
end
|
@@ -4,9 +4,9 @@ module ForemanSalt
|
|
4
4
|
class HostsControllerExtensionsTest < ActionController::TestCase
|
5
5
|
tests ::HostsController
|
6
6
|
|
7
|
-
describe
|
7
|
+
describe 'setting salt master proxy on multiple hosts' do
|
8
8
|
before do
|
9
|
-
setup_user
|
9
|
+
setup_user 'edit'
|
10
10
|
as_admin do
|
11
11
|
@hosts = FactoryBot.create_list(:host, 2)
|
12
12
|
@proxy = FactoryBot.create(:smart_proxy, :with_salt_feature)
|
@@ -16,22 +16,22 @@ module ForemanSalt
|
|
16
16
|
test 'user without edit permission should not be able to change salt master' do
|
17
17
|
@request.env['HTTP_REFERER'] = hosts_path
|
18
18
|
|
19
|
-
params = { :
|
20
|
-
:
|
19
|
+
params = { host_ids: @hosts.map(&:id),
|
20
|
+
proxy: { proxy_id: '' } }
|
21
21
|
|
22
22
|
post :update_multiple_salt_master, params: params,
|
23
|
-
|
23
|
+
session: set_session_user.merge(user: users(:one).id)
|
24
24
|
assert_response :forbidden
|
25
25
|
end
|
26
26
|
|
27
|
-
test
|
27
|
+
test 'should change the salt master proxy' do
|
28
28
|
@request.env['HTTP_REFERER'] = hosts_path
|
29
29
|
|
30
|
-
params = { :
|
31
|
-
:
|
30
|
+
params = { host_ids: @hosts.map(&:id),
|
31
|
+
proxy: { proxy_id: @proxy.id } }
|
32
32
|
|
33
33
|
post :update_multiple_salt_master, params: params,
|
34
|
-
|
34
|
+
session: set_session_user.merge(user: users(:admin).id)
|
35
35
|
|
36
36
|
assert_empty flash[:error]
|
37
37
|
|
@@ -42,14 +42,14 @@ module ForemanSalt
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
-
test
|
45
|
+
test 'should clear the salt master proxy of multiple hosts' do
|
46
46
|
@request.env['HTTP_REFERER'] = hosts_path
|
47
47
|
|
48
|
-
params = { :
|
49
|
-
:
|
48
|
+
params = { host_ids: @hosts.map(&:id),
|
49
|
+
proxy: { proxy_id: '' } }
|
50
50
|
|
51
51
|
post :update_multiple_salt_master, params: params,
|
52
|
-
|
52
|
+
session: set_session_user.merge(user: users(:admin).id)
|
53
53
|
|
54
54
|
assert_empty flash[:error]
|
55
55
|
|
@@ -61,9 +61,9 @@ module ForemanSalt
|
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
|
-
describe
|
64
|
+
describe 'setting salt environment on multiple hosts' do
|
65
65
|
before do
|
66
|
-
setup_user
|
66
|
+
setup_user 'edit'
|
67
67
|
as_admin do
|
68
68
|
@hosts = FactoryBot.create_list(:host, 2)
|
69
69
|
@proxy = FactoryBot.create(:smart_proxy, :with_salt_feature)
|
@@ -74,22 +74,22 @@ module ForemanSalt
|
|
74
74
|
test 'user without edit permission should not be able to change salt environment' do
|
75
75
|
@request.env['HTTP_REFERER'] = hosts_path
|
76
76
|
|
77
|
-
params = { :
|
78
|
-
:
|
77
|
+
params = { host_ids: @hosts.map(&:id),
|
78
|
+
salt_environment: { id: @salt_environment.id } }
|
79
79
|
|
80
80
|
post :update_multiple_salt_environment, params: params,
|
81
|
-
|
81
|
+
session: set_session_user.merge(user: users(:one).id)
|
82
82
|
assert_response :forbidden
|
83
83
|
end
|
84
84
|
|
85
|
-
test
|
85
|
+
test 'should change the salt environment' do
|
86
86
|
@request.env['HTTP_REFERER'] = hosts_path
|
87
87
|
|
88
|
-
params = { :
|
89
|
-
:
|
88
|
+
params = { host_ids: @hosts.map(&:id),
|
89
|
+
salt_environment: { id: @salt_environment.id } }
|
90
90
|
|
91
91
|
post :update_multiple_salt_environment, params: params,
|
92
|
-
|
92
|
+
session: set_session_user.merge(user: users(:admin).id)
|
93
93
|
|
94
94
|
assert_empty flash[:error]
|
95
95
|
|
@@ -100,14 +100,14 @@ module ForemanSalt
|
|
100
100
|
end
|
101
101
|
end
|
102
102
|
|
103
|
-
test
|
103
|
+
test 'should clear the salt environment of multiple hosts' do
|
104
104
|
@request.env['HTTP_REFERER'] = hosts_path
|
105
105
|
|
106
|
-
params = { :
|
107
|
-
:
|
106
|
+
params = { host_ids: @hosts.map(&:id),
|
107
|
+
salt_environment: { id: '' } }
|
108
108
|
|
109
109
|
post :update_multiple_salt_environment, params: params,
|
110
|
-
|
110
|
+
session: set_session_user.merge(user: users(:admin).id)
|
111
111
|
|
112
112
|
assert_empty flash[:error]
|
113
113
|
|
@@ -13,26 +13,26 @@ module ForemanSalt
|
|
13
13
|
|
14
14
|
@hostgroup = FactoryBot.create(:hostgroup)
|
15
15
|
@host = FactoryBot.create(:host, salt_environment: FactoryBot.create(:salt_environment), salt_proxy: @proxy)
|
16
|
-
@host2 = FactoryBot.create(:host, :
|
17
|
-
FactoryBot.create(:host_parameter, name:
|
16
|
+
@host2 = FactoryBot.create(:host, hostgroup: @hostgroup, salt_environment: FactoryBot.create(:salt_environment), salt_proxy: @proxy)
|
17
|
+
FactoryBot.create(:host_parameter, name: 'parameter1', value: 'different', host: @host)
|
18
18
|
end
|
19
19
|
|
20
20
|
test 'salt smart proxy should get salt external node' do
|
21
|
-
get :node, params: { :
|
21
|
+
get :node, params: { id: @host, format: 'yml' }
|
22
22
|
assert_response :success
|
23
23
|
|
24
24
|
res = YAML.safe_load(@response.body)
|
25
|
-
assert_equal res['parameters']['parameter1']
|
25
|
+
assert_equal('different', res['parameters']['parameter1'])
|
26
26
|
end
|
27
27
|
|
28
28
|
test 'setting salt_namespace_pillars is considered' do
|
29
29
|
Setting['salt_namespace_pillars'] = true
|
30
30
|
|
31
|
-
get :node, params: { :
|
31
|
+
get :node, params: { id: @host, format: 'yml' }
|
32
32
|
assert_response :success
|
33
33
|
|
34
34
|
res = YAML.safe_load(@response.body)
|
35
|
-
assert_equal res['parameters']['foreman']['parameter1']
|
35
|
+
assert_equal('different', res['parameters']['foreman']['parameter1'])
|
36
36
|
end
|
37
37
|
|
38
38
|
test 'salt variable is available' do
|
@@ -40,7 +40,7 @@ module ForemanSalt
|
|
40
40
|
var.salt_module.salt_environments << @host.salt_environment
|
41
41
|
@host.salt_modules << var.salt_module
|
42
42
|
|
43
|
-
get :node, params: { :
|
43
|
+
get :node, params: { id: @host, format: 'yml' }
|
44
44
|
assert_response :success
|
45
45
|
|
46
46
|
res = YAML.safe_load(@response.body)
|
@@ -52,7 +52,7 @@ module ForemanSalt
|
|
52
52
|
var.salt_module.salt_environments << @host.salt_environment
|
53
53
|
@host.salt_modules << var.salt_module
|
54
54
|
|
55
|
-
get :node, params: { :
|
55
|
+
get :node, params: { id: @host, format: 'yml' }
|
56
56
|
assert_response :success
|
57
57
|
|
58
58
|
res = YAML.safe_load(@response.body)
|
@@ -60,17 +60,17 @@ module ForemanSalt
|
|
60
60
|
end
|
61
61
|
|
62
62
|
test 'salt variable matching host with host specific value' do
|
63
|
-
var = FactoryBot.create(:salt_variable, key: 'parameter1', value:
|
63
|
+
var = FactoryBot.create(:salt_variable, key: 'parameter1', value: 'default', override: true)
|
64
64
|
# rubocop:disable Lint/UselessAssignment
|
65
|
-
value1 = LookupValue.create(:
|
66
|
-
value2 = LookupValue.create(:
|
67
|
-
value3 = LookupValue.create(:
|
65
|
+
value1 = LookupValue.create(lookup_key: var, match: 'os=debian', value: 'aaa')
|
66
|
+
value2 = LookupValue.create(lookup_key: var, match: "fqdn=#{@host.fqdn}", value: 'myval')
|
67
|
+
value3 = LookupValue.create(lookup_key: var, match: 'hostgroup=Unusual', value: 'bbbb')
|
68
68
|
# rubocop:enable Lint/UselessAssignment
|
69
69
|
|
70
70
|
var.salt_module.salt_environments << @host.salt_environment
|
71
71
|
@host.salt_modules << var.salt_module
|
72
72
|
|
73
|
-
get :node, params: { :
|
73
|
+
get :node, params: { id: @host, format: 'yml' }
|
74
74
|
assert_response :success
|
75
75
|
|
76
76
|
res = YAML.safe_load(@response.body)
|
@@ -78,16 +78,16 @@ module ForemanSalt
|
|
78
78
|
end
|
79
79
|
|
80
80
|
test 'salt variable matching host with hostgroup specific value' do
|
81
|
-
var = FactoryBot.create(:salt_variable, key: 'parameter1', value:
|
81
|
+
var = FactoryBot.create(:salt_variable, key: 'parameter1', value: 'default', override: true)
|
82
82
|
# rubocop:disable Lint/UselessAssignment
|
83
|
-
value1 = LookupValue.create(:
|
84
|
-
value2 = LookupValue.create(:
|
83
|
+
value1 = LookupValue.create(lookup_key: var, match: 'os=debian', value: 'aaa')
|
84
|
+
value2 = LookupValue.create(lookup_key: var, match: @hostgroup.lookup_value_matcher, value: 'bbbb')
|
85
85
|
# rubocop:enable Lint/UselessAssignment
|
86
86
|
|
87
87
|
var.salt_module.salt_environments << @host2.salt_environment
|
88
88
|
@host2.salt_modules << var.salt_module
|
89
89
|
|
90
|
-
get :node, params: { :
|
90
|
+
get :node, params: { id: @host2, format: 'yml' }
|
91
91
|
assert_response :success
|
92
92
|
|
93
93
|
res = YAML.safe_load(@response.body)
|
@@ -95,16 +95,16 @@ module ForemanSalt
|
|
95
95
|
end
|
96
96
|
|
97
97
|
test 'salt variable matching host with default value' do
|
98
|
-
var = FactoryBot.create(:salt_variable, key: 'parameter1', value:
|
98
|
+
var = FactoryBot.create(:salt_variable, key: 'parameter1', value: 'default', override: true)
|
99
99
|
# rubocop:disable Lint/UselessAssignment
|
100
|
-
value1 = LookupValue.create(:
|
101
|
-
value2 = LookupValue.create(:
|
102
|
-
value3 = LookupValue.create(:
|
100
|
+
value1 = LookupValue.create(lookup_key: var, match: 'os=debian', value: 'aaa')
|
101
|
+
value2 = LookupValue.create(lookup_key: var, match: "fqdn=#{@host.fqdn}", value: 'myval')
|
102
|
+
value3 = LookupValue.create(lookup_key: var, match: 'hostgroup=Unusual', value: 'bbbb')
|
103
103
|
# rubocop:enable Lint/UselessAssignment
|
104
104
|
|
105
105
|
var.salt_module.salt_environments << @host2.salt_environment
|
106
106
|
@host2.salt_modules << var.salt_module
|
107
|
-
get :node, params: { :
|
107
|
+
get :node, params: { id: @host2, format: 'yml' }
|
108
108
|
assert_response :success
|
109
109
|
|
110
110
|
res = YAML.safe_load(@response.body)
|
@@ -8,13 +8,13 @@ module ForemanSalt
|
|
8
8
|
@model = FactoryBot.create(:salt_module)
|
9
9
|
end
|
10
10
|
|
11
|
-
basic_index_test
|
11
|
+
basic_index_test 'salt_modules'
|
12
12
|
basic_new_test
|
13
|
-
basic_edit_test
|
13
|
+
basic_edit_test 'salt_module'
|
14
14
|
|
15
15
|
test 'should destroy module' do
|
16
16
|
assert_difference('SaltModule.count', -1) do
|
17
|
-
delete :destroy, :
|
17
|
+
delete :destroy, params: { id: @model.id }, session: set_session_user
|
18
18
|
end
|
19
19
|
assert_redirected_to salt_modules_url
|
20
20
|
end
|
@@ -9,23 +9,23 @@ module ForemanSalt
|
|
9
9
|
@proxy = FactoryBot.create(:smart_proxy, :with_salt_feature)
|
10
10
|
end
|
11
11
|
|
12
|
-
basic_index_test
|
12
|
+
basic_index_test 'salt_variables'
|
13
13
|
basic_new_test
|
14
|
-
basic_edit_test
|
14
|
+
basic_edit_test 'salt_variable'
|
15
15
|
basic_pagination_per_page_test
|
16
16
|
basic_pagination_rendered_test
|
17
17
|
|
18
18
|
test 'should destroy variable' do
|
19
19
|
assert_difference('SaltVariable.count', -1) do
|
20
|
-
delete :destroy, :
|
20
|
+
delete :destroy, params: { id: @model.id }, session: set_session_user
|
21
21
|
end
|
22
22
|
assert_redirected_to salt_variables_url
|
23
23
|
end
|
24
24
|
|
25
25
|
test 'should create salt variable' do
|
26
|
-
params = { :
|
26
|
+
params = { foreman_salt_salt_variable: { key: 'great name', salt_module_id: FactoryBot.create(:salt_module).id } }
|
27
27
|
assert_difference('SaltVariable.count', 1) do
|
28
|
-
post :create, :
|
28
|
+
post :create, params: params, session: set_session_user
|
29
29
|
end
|
30
30
|
assert_redirected_to salt_variables_url
|
31
31
|
end
|