foreman_salt 13.2.2 → 14.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -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 +41 -10
- 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 +29 -15
- data/app/models/foreman_salt/concerns/host_managed_extensions.rb +83 -33
- 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_status.rb +12 -0
- 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 -43
- 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/20210312150333_add_salt_autosign_to_host.rb +6 -0
- 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 -18
- data/lib/foreman_salt/extensions.rb +8 -11
- 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/locale/ca/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/ca/foreman_salt.po +541 -0
- data/locale/cs_CZ/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/cs_CZ/foreman_salt.po +541 -0
- data/locale/de/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/de/foreman_salt.po +0 -18
- data/locale/en/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/en/foreman_salt.po +0 -18
- data/locale/en_GB/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/en_GB/foreman_salt.po +541 -0
- data/locale/es/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/es/foreman_salt.po +541 -0
- data/locale/foreman_salt.pot +22 -46
- data/locale/fr/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/fr/foreman_salt.po +541 -0
- data/locale/gl/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/gl/foreman_salt.po +541 -0
- data/locale/it/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/it/foreman_salt.po +541 -0
- data/locale/ja/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/ja/foreman_salt.po +541 -0
- data/locale/ko/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/ko/foreman_salt.po +541 -0
- data/locale/nl_NL/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/nl_NL/foreman_salt.po +541 -0
- data/locale/pl/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/pl/foreman_salt.po +542 -0
- data/locale/pt_BR/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/pt_BR/foreman_salt.po +541 -0
- data/locale/ru/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/ru/foreman_salt.po +542 -0
- data/locale/sv_SE/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/sv_SE/foreman_salt.po +541 -0
- data/locale/zh_CN/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/zh_CN/foreman_salt.po +541 -0
- data/locale/zh_TW/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/zh_TW/foreman_salt.po +541 -0
- data/test/factories/foreman_salt_factories.rb +5 -5
- data/test/functional/api/v2/salt_autosign_controller_test.rb +26 -18
- 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 +7 -7
- data/test/integration/salt_environment_test.rb +2 -2
- data/test/integration/salt_keys_test.rb +9 -10
- 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 +59 -15
- 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 +56 -22
- data/app/models/foreman_salt/fact_name.rb +0 -14
- data/app/services/foreman_salt/fact_importer.rb +0 -15
- data/app/services/foreman_salt/fact_parser.rb +0 -114
- data/test/unit/grains_centos.json +0 -113
- data/test/unit/salt_fact_importer_test.rb +0 -24
- data/test/unit/salt_fact_parser_test.rb +0 -44
@@ -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
|