foreman_salt 9.0.1 → 10.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/foreman_salt/concerns/hostgroups_controller_extensions.rb +18 -18
- data/app/controllers/foreman_salt/concerns/hosts_controller_extensions.rb +22 -21
- data/app/helpers/concerns/foreman_salt/hosts_helper_extensions.rb +23 -23
- data/app/helpers/concerns/foreman_salt/smart_proxies_helper_extensions.rb +11 -9
- data/app/models/foreman_salt/concerns/host_managed_extensions.rb +25 -26
- data/db/migrate/20140813081913_add_salt_proxy_to_host_and_host_group.rb +1 -1
- data/db/migrate/20140817210214_create_salt_modules.rb +2 -2
- data/db/migrate/20140829210214_add_salt_modules_to_hostgroups.rb +1 -1
- data/db/migrate/20140920232200_create_salt_environments.rb +2 -2
- data/db/migrate/20150220122707_fix_incorrect_report_metrics.rb +1 -1
- data/db/migrate/20150411003302_add_environments_to_modules.rb +1 -1
- data/db/migrate/20150509094409_rename_join_tables.rb +1 -1
- data/db/migrate/20150509101505_add_primary_keys.rb +1 -1
- data/db/migrate/20161103104146_add_index_to_join_tables.rb +1 -1
- data/lib/foreman_salt/version.rb +1 -1
- data/test/factories/foreman_salt_factories.rb +6 -6
- data/test/functional/api/v2/salt_autosign_controller_test.rb +4 -4
- data/test/functional/api/v2/salt_environments_controller_test.rb +4 -4
- data/test/functional/api/v2/salt_keys_controller_test.rb +4 -4
- data/test/functional/api/v2/salt_states_controller_test.rb +13 -13
- data/test/functional/minions_controller_test.rb +3 -3
- data/test/integration/salt_autosign_test.rb +1 -1
- data/test/integration/salt_environment_test.rb +2 -2
- data/test/integration/salt_keys_test.rb +1 -1
- data/test/integration/salt_module_test.rb +5 -5
- data/test/test_plugin_helper.rb +3 -3
- data/test/unit/grains_importer_test.rb +3 -0
- data/test/unit/host_extensions_test.rb +12 -12
- data/test/unit/hostgroup_extensions_test.rb +17 -17
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c6a5c38ada1b7092ea56ff7da05ebdfd13bff174ddd00b04d61813ea3f18b367
|
4
|
+
data.tar.gz: c559363f1e3a18b955b3707dc410cb094e6b4e4556ca99c4ae059c7cad09adb1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 240c3e9a0d46d6cf4ddebe976129af37917a108d55be3aeb434262a9cddd824b06e0266f41cc528703acef7e0f6c4ea7db013fa9c5262de6004ed1820c0927f3
|
7
|
+
data.tar.gz: 9eeb42cebc16d142a157c12e11da6121974516cd022e0efcdef841dc94d30b740f532ab730e491c0bb7e7eb6fb1b3dc366ecffcad749732c574d0d1d896c82d9
|
@@ -3,8 +3,25 @@ module ForemanSalt
|
|
3
3
|
module HostgroupsControllerExtensions
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
|
+
module Overrides
|
7
|
+
def load_vars_for_ajax
|
8
|
+
super
|
9
|
+
@obj = @hostgroup
|
10
|
+
@salt_environment ||= @hostgroup.salt_environment
|
11
|
+
|
12
|
+
if @salt_environment
|
13
|
+
@inherited_salt_modules = @salt_environment.salt_modules.where(:id => @hostgroup.inherited_salt_modules)
|
14
|
+
@salt_modules = @salt_environment.salt_modules - @inherited_salt_modules
|
15
|
+
else
|
16
|
+
@inherited_salt_modules = @salt_modules = []
|
17
|
+
end
|
18
|
+
|
19
|
+
@selected = @hostgroup.salt_modules || []
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
6
23
|
included do
|
7
|
-
|
24
|
+
prepend Overrides
|
8
25
|
end
|
9
26
|
|
10
27
|
def salt_environment_selected
|
@@ -18,23 +35,6 @@ module ForemanSalt
|
|
18
35
|
logger.info 'environment_id is required to render states'
|
19
36
|
end
|
20
37
|
end
|
21
|
-
|
22
|
-
private
|
23
|
-
|
24
|
-
def load_vars_for_ajax_with_salt_modules
|
25
|
-
load_vars_for_ajax_without_salt_modules
|
26
|
-
@obj = @hostgroup
|
27
|
-
@salt_environment ||= @hostgroup.salt_environment
|
28
|
-
|
29
|
-
if @salt_environment
|
30
|
-
@inherited_salt_modules = @salt_environment.salt_modules.where(:id => @hostgroup.inherited_salt_modules)
|
31
|
-
@salt_modules = @salt_environment.salt_modules - @inherited_salt_modules
|
32
|
-
else
|
33
|
-
@inherited_salt_modules = @salt_modules = []
|
34
|
-
end
|
35
|
-
|
36
|
-
@selected = @hostgroup.salt_modules || []
|
37
|
-
end
|
38
38
|
end
|
39
39
|
end
|
40
40
|
end
|
@@ -3,31 +3,32 @@ module ForemanSalt
|
|
3
3
|
module HostsControllerExtensions
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
module Overrides
|
7
|
+
def process_hostgroup
|
8
|
+
@hostgroup = Hostgroup.find(params[:host][:hostgroup_id]) if params[:host][:hostgroup_id].to_i > 0
|
9
|
+
return head(:not_found) unless @hostgroup
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
@salt_modules = @host.salt_modules if @host
|
12
|
+
@salt_environment = @host.salt_environment if @host
|
13
|
+
@inherited_salt_modules = @hostgroup.all_salt_modules
|
14
|
+
super
|
15
|
+
end
|
14
16
|
|
15
|
-
|
16
|
-
@salt_environment = @host.salt_environment if @host
|
17
|
-
@inherited_salt_modules = @hostgroup.all_salt_modules
|
18
|
-
process_hostgroup_without_salt_modules
|
19
|
-
end
|
17
|
+
private
|
20
18
|
|
21
|
-
|
19
|
+
def load_vars_for_ajax
|
20
|
+
return unless @host
|
21
|
+
@obj = @host
|
22
|
+
@salt_environment = @host.salt_environment if @host
|
23
|
+
@selected = @host.salt_modules
|
24
|
+
@salt_modules = @host.salt_environment ? @salt_environment.salt_modules : []
|
25
|
+
@inherited_salt_modules = @host.hostgroup.all_salt_modules if @host.hostgroup
|
26
|
+
super
|
27
|
+
end
|
28
|
+
end
|
22
29
|
|
23
|
-
|
24
|
-
|
25
|
-
@obj = @host
|
26
|
-
@salt_environment = @host.salt_environment if @host
|
27
|
-
@selected = @host.salt_modules
|
28
|
-
@salt_modules = @host.salt_environment ? @salt_environment.salt_modules : []
|
29
|
-
@inherited_salt_modules = @host.hostgroup.all_salt_modules if @host.hostgroup
|
30
|
-
load_vars_for_ajax_without_salt_modules
|
30
|
+
included do
|
31
|
+
prepend Overrides
|
31
32
|
end
|
32
33
|
end
|
33
34
|
end
|
@@ -2,37 +2,37 @@ module ForemanSalt
|
|
2
2
|
module HostsHelperExtensions
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
alias_method_chain :overview_fields, :salt
|
9
|
-
end
|
10
|
-
|
11
|
-
def show_appropriate_host_buttons_with_salt(host)
|
12
|
-
(show_appropriate_host_buttons_without_salt(host) +
|
5
|
+
module Overrides
|
6
|
+
def show_appropriate_host_buttons(host)
|
7
|
+
(super(host) +
|
13
8
|
[(link_to_if_authorized(_('Salt ENC'), { :controller => :'foreman_salt/minions', :action => :node, :id => host },
|
14
9
|
:title => _('Salt external nodes YAML dump'), :class => 'btn btn-default') unless host.salt_master.blank?)]).flatten.compact
|
15
|
-
|
10
|
+
end
|
16
11
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
12
|
+
def host_title_actions(host)
|
13
|
+
title_actions(
|
14
|
+
button_group(
|
15
|
+
if host.try(:salt_proxy)
|
16
|
+
link_to_if_authorized(_('Run Salt'), { :controller => :'foreman_salt/minions', :action => :run, :id => host },
|
17
|
+
:title => _('Trigger a state.highstate run on a node'), :class => 'btn btn-primary')
|
23
18
|
end
|
19
|
+
)
|
24
20
|
)
|
25
|
-
|
26
|
-
|
27
|
-
|
21
|
+
super(host)
|
22
|
+
end
|
23
|
+
|
24
|
+
def overview_fields(host)
|
25
|
+
fields = super(host)
|
28
26
|
|
29
|
-
|
30
|
-
|
27
|
+
fields.insert(5, [_('Salt Master'), (link_to(host.salt_proxy, hosts_path(:search => "saltmaster = #{host.salt_proxy}")) if host.salt_proxy)])
|
28
|
+
fields.insert(6, [_('Salt Environment'), (link_to(host.salt_environment, hosts_path(:search => "salt_environment = #{host.salt_environment}")) if host.salt_environment)])
|
31
29
|
|
32
|
-
|
33
|
-
|
30
|
+
fields
|
31
|
+
end
|
32
|
+
end
|
34
33
|
|
35
|
-
|
34
|
+
included do
|
35
|
+
prepend Overrides
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
@@ -2,19 +2,21 @@ module ForemanSalt
|
|
2
2
|
module SmartProxiesHelperExtensions
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
module Overrides
|
6
|
+
def proxy_actions(proxy, authorizer)
|
7
|
+
actions = super
|
8
8
|
|
9
|
-
|
10
|
-
|
9
|
+
if proxy.has_feature?('Salt')
|
10
|
+
actions << display_link_if_authorized(_('Salt Keys'), :controller => 'foreman_salt/salt_keys', :action => 'index', :smart_proxy_id => proxy)
|
11
|
+
actions << display_link_if_authorized(_('Salt Autosign'), :controller => 'foreman_salt/salt_autosign', :action => 'index', :smart_proxy_id => proxy)
|
12
|
+
end
|
11
13
|
|
12
|
-
|
13
|
-
actions << display_link_if_authorized(_('Salt Keys'), :controller => 'foreman_salt/salt_keys', :action => 'index', :smart_proxy_id => proxy)
|
14
|
-
actions << display_link_if_authorized(_('Salt Autosign'), :controller => 'foreman_salt/salt_autosign', :action => 'index', :smart_proxy_id => proxy)
|
14
|
+
actions
|
15
15
|
end
|
16
|
+
end
|
16
17
|
|
17
|
-
|
18
|
+
included do
|
19
|
+
prepend Overrides
|
18
20
|
end
|
19
21
|
end
|
20
22
|
end
|
@@ -3,6 +3,30 @@ module ForemanSalt
|
|
3
3
|
module HostManagedExtensions
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
|
+
module Overrides
|
7
|
+
def configuration
|
8
|
+
super || !!salt_proxy
|
9
|
+
end
|
10
|
+
|
11
|
+
def params
|
12
|
+
params = super
|
13
|
+
params['salt_master'] = salt_master unless salt_master.blank?
|
14
|
+
params
|
15
|
+
end
|
16
|
+
|
17
|
+
def smart_proxy_ids
|
18
|
+
ids = super
|
19
|
+
[salt_proxy, hostgroup.try(:salt_proxy)].compact.each do |proxy|
|
20
|
+
ids << proxy.id
|
21
|
+
end
|
22
|
+
ids
|
23
|
+
end
|
24
|
+
|
25
|
+
def inherited_attributes
|
26
|
+
super + %w(salt_proxy_id salt_environment_id)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
6
30
|
included do
|
7
31
|
has_many :host_salt_modules, :foreign_key => :host_id, :class_name => '::ForemanSalt::HostSaltModule'
|
8
32
|
has_many :salt_modules, :through => :host_salt_modules, :class_name => '::ForemanSalt::SaltModule'
|
@@ -10,10 +34,7 @@ module ForemanSalt
|
|
10
34
|
belongs_to :salt_proxy, :class_name => 'SmartProxy'
|
11
35
|
belongs_to :salt_environment, :class_name => 'ForemanSalt::SaltEnvironment'
|
12
36
|
|
13
|
-
|
14
|
-
alias_method_chain :smart_proxy_ids, :salt_proxy
|
15
|
-
alias_method_chain :inherited_attributes, :salt
|
16
|
-
alias_method_chain :configuration?, :salt
|
37
|
+
prepend Overrides
|
17
38
|
|
18
39
|
scoped_search :relation => :salt_modules, :on => :name, :complete_value => true, :rename => :salt_state
|
19
40
|
scoped_search :relation => :salt_environment, :on => :name, :complete_value => true, :rename => :salt_environment
|
@@ -26,16 +47,6 @@ module ForemanSalt
|
|
26
47
|
before_destroy :delete_salt_key, :if => ->(host) { host.salt_proxy }
|
27
48
|
end
|
28
49
|
|
29
|
-
def configuration_with_salt?
|
30
|
-
configuration_without_salt? || !!salt_proxy
|
31
|
-
end
|
32
|
-
|
33
|
-
def params_with_salt_proxy
|
34
|
-
params = params_without_salt_proxy
|
35
|
-
params['salt_master'] = salt_master unless salt_master.blank?
|
36
|
-
params
|
37
|
-
end
|
38
|
-
|
39
50
|
def salt_modules_for_enc
|
40
51
|
return [] unless salt_environment
|
41
52
|
modules = salt_modules + (hostgroup ? hostgroup.all_salt_modules : [])
|
@@ -58,18 +69,6 @@ module ForemanSalt
|
|
58
69
|
false
|
59
70
|
end
|
60
71
|
|
61
|
-
def inherited_attributes_with_salt
|
62
|
-
inherited_attributes_without_salt + %w(salt_proxy_id salt_environment_id)
|
63
|
-
end
|
64
|
-
|
65
|
-
def smart_proxy_ids_with_salt_proxy
|
66
|
-
ids = smart_proxy_ids_without_salt_proxy
|
67
|
-
[salt_proxy, hostgroup.try(:salt_proxy)].compact.each do |proxy|
|
68
|
-
ids << proxy.id
|
69
|
-
end
|
70
|
-
ids
|
71
|
-
end
|
72
|
-
|
73
72
|
def salt_modules_in_host_environment
|
74
73
|
return unless self.salt_modules.any?
|
75
74
|
|
@@ -1,8 +1,8 @@
|
|
1
|
-
class CreateSaltModules < ActiveRecord::Migration
|
1
|
+
class CreateSaltModules < ActiveRecord::Migration[4.2]
|
2
2
|
def self.up
|
3
3
|
create_table :salt_modules do |t|
|
4
4
|
t.string :name, :default => '', :null => false
|
5
|
-
t.timestamps
|
5
|
+
t.timestamps :null => true
|
6
6
|
end
|
7
7
|
|
8
8
|
create_table 'hosts_salt_modules', :id => false do |t|
|
@@ -1,8 +1,8 @@
|
|
1
|
-
class CreateSaltEnvironments < ActiveRecord::Migration
|
1
|
+
class CreateSaltEnvironments < ActiveRecord::Migration[4.2]
|
2
2
|
def self.up
|
3
3
|
create_table :salt_environments do |t|
|
4
4
|
t.string :name, :default => '', :null => false
|
5
|
-
t.timestamps
|
5
|
+
t.timestamps :null => true
|
6
6
|
end
|
7
7
|
|
8
8
|
add_column :hosts, :salt_environment_id, :integer
|
data/lib/foreman_salt/version.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
FactoryBot.define do
|
2
2
|
factory :salt_module, :class => 'ForemanSalt::SaltModule' do
|
3
3
|
sequence(:name) { |n| "module#{n}" }
|
4
4
|
end
|
@@ -8,21 +8,21 @@ FactoryGirl.define do
|
|
8
8
|
end
|
9
9
|
end
|
10
10
|
|
11
|
-
|
11
|
+
FactoryBot.modify do
|
12
12
|
factory :host do
|
13
13
|
trait :with_salt_proxy do
|
14
|
-
salt_proxy {
|
14
|
+
salt_proxy { FactoryBot.build :smart_proxy, :with_salt_feature }
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
18
|
factory :hostgroup do
|
19
19
|
trait :with_salt_proxy do
|
20
|
-
salt_proxy {
|
20
|
+
salt_proxy { FactoryBot.build :smart_proxy, :with_salt_feature }
|
21
21
|
end
|
22
22
|
|
23
23
|
trait :with_salt_modules do
|
24
|
-
salt_environment {
|
25
|
-
salt_modules {
|
24
|
+
salt_environment { FactoryBot.build :salt_environment }
|
25
|
+
salt_modules { FactoryBot.create_list :salt_module, 10, :salt_environments => [self.salt_environment] }
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
@@ -2,24 +2,24 @@ require 'test_plugin_helper'
|
|
2
2
|
|
3
3
|
class ::ForemanSalt::Api::V2::SaltAutosignControllerTest < ActionController::TestCase
|
4
4
|
setup do
|
5
|
-
@proxy =
|
5
|
+
@proxy = FactoryBot.create(:smart_proxy, :with_salt_feature)
|
6
6
|
ProxyAPI::Salt.any_instance.stubs(:autosign_list).returns((%w(foo bar baz)))
|
7
7
|
end
|
8
8
|
|
9
9
|
test 'should get index' do
|
10
|
-
get :index, :smart_proxy_id => @proxy.id
|
10
|
+
get :index, params: { :smart_proxy_id => @proxy.id }
|
11
11
|
assert_response :success
|
12
12
|
end
|
13
13
|
|
14
14
|
test 'should create autosign' do
|
15
15
|
ProxyAPI::Salt.any_instance.expects(:autosign_create).once.returns(true)
|
16
|
-
post :create, :smart_proxy_id => @proxy.id, :record => 'unicorn.example.com'
|
16
|
+
post :create, params: { :smart_proxy_id => @proxy.id, :record => 'unicorn.example.com' }
|
17
17
|
assert_response :success
|
18
18
|
end
|
19
19
|
|
20
20
|
test 'should delete autosign' do
|
21
21
|
ProxyAPI::Salt.any_instance.expects(:autosign_remove).once.returns(true)
|
22
|
-
delete :destroy, :smart_proxy_id => @proxy.id, :record => 'unicorn.example.com'
|
22
|
+
delete :destroy, params: { :smart_proxy_id => @proxy.id, :record => 'unicorn.example.com' }
|
23
23
|
assert_response :success
|
24
24
|
end
|
25
25
|
end
|
@@ -2,20 +2,20 @@ require 'test_plugin_helper'
|
|
2
2
|
|
3
3
|
class ::ForemanSalt::Api::V2::SaltEnvironmentsControllerTest < ActionController::TestCase
|
4
4
|
test 'should get index' do
|
5
|
-
get :index
|
5
|
+
get :index
|
6
6
|
assert_response :success
|
7
7
|
assert_template 'api/v2/salt_environments/index'
|
8
8
|
end
|
9
9
|
|
10
10
|
test 'should show environment' do
|
11
11
|
environment = ForemanSalt::SaltEnvironment.create(:name => 'foo')
|
12
|
-
get :show, :id => environment.id
|
12
|
+
get :show, params: { :id => environment.id }
|
13
13
|
assert_response :success
|
14
14
|
assert_template 'api/v2/salt_environments/show'
|
15
15
|
end
|
16
16
|
|
17
17
|
test 'should create environment' do
|
18
|
-
post :create, :environment => { :name => 'unicorn' }
|
18
|
+
post :create, params: { :environment => { :name => 'unicorn' } }
|
19
19
|
assert_response :success
|
20
20
|
assert ForemanSalt::SaltEnvironment.find_by_name('unicorn')
|
21
21
|
assert_template 'api/v2/salt_environments/create'
|
@@ -24,7 +24,7 @@ class ::ForemanSalt::Api::V2::SaltEnvironmentsControllerTest < ActionController:
|
|
24
24
|
test 'should delete environment' do
|
25
25
|
environment = ForemanSalt::SaltEnvironment.create(:name => 'foo.bar.baz')
|
26
26
|
assert_difference('ForemanSalt::SaltEnvironment.count', -1) do
|
27
|
-
delete :destroy, :id => environment.id
|
27
|
+
delete :destroy, params: { :id => environment.id }
|
28
28
|
end
|
29
29
|
assert_response :success
|
30
30
|
end
|
@@ -2,26 +2,26 @@ require 'test_plugin_helper'
|
|
2
2
|
|
3
3
|
class ::ForemanSalt::Api::V2::SaltKeysControllerTest < ActionController::TestCase
|
4
4
|
setup do
|
5
|
-
@proxy =
|
5
|
+
@proxy = FactoryBot.create(:smart_proxy, :with_salt_feature)
|
6
6
|
|
7
7
|
ProxyAPI::Salt.any_instance.stubs(:key_list).returns('saltstack.example.com' => { 'state' => 'unaccepted',
|
8
8
|
'fingerprint' => '98:c2:63:c1:57:59:bc:bd:f1:ef:5a:38:b2:e9:71:c0' })
|
9
9
|
end
|
10
10
|
|
11
11
|
test 'should get index' do
|
12
|
-
get :index, :smart_proxy_id => @proxy.id
|
12
|
+
get :index, params: { :smart_proxy_id => @proxy.id }
|
13
13
|
assert_response :success
|
14
14
|
end
|
15
15
|
|
16
16
|
test 'should update keys' do
|
17
17
|
ProxyAPI::Salt.any_instance.expects(:key_accept).once.returns(true)
|
18
|
-
put :update, :smart_proxy_id => @proxy.id, :name => 'saltstack.example.com', :key => { :state => 'accepted' }
|
18
|
+
put :update, params: { :smart_proxy_id => @proxy.id, :name => 'saltstack.example.com', :key => { :state => 'accepted' } }
|
19
19
|
assert_response :success
|
20
20
|
end
|
21
21
|
|
22
22
|
test 'should delete keys' do
|
23
23
|
ProxyAPI::Salt.any_instance.expects(:key_delete).once.returns(true)
|
24
|
-
delete :destroy, :smart_proxy_id => @proxy.id, :name => 'saltstack.example.com'
|
24
|
+
delete :destroy, params: { :smart_proxy_id => @proxy.id, :name => 'saltstack.example.com' }
|
25
25
|
assert_response :success
|
26
26
|
end
|
27
27
|
end
|
@@ -2,20 +2,20 @@ require 'test_plugin_helper'
|
|
2
2
|
|
3
3
|
class ::ForemanSalt::Api::V2::SaltStatesControllerTest < ActionController::TestCase
|
4
4
|
test 'should get index' do
|
5
|
-
get :index
|
5
|
+
get :index
|
6
6
|
assert_response :success
|
7
7
|
assert_template 'api/v2/salt_states/index'
|
8
8
|
end
|
9
9
|
|
10
10
|
test 'should show state' do
|
11
11
|
state = ForemanSalt::SaltModule.create(:name => 'foo.bar.baz')
|
12
|
-
get :show, :id => state.id
|
12
|
+
get :show, params: { :id => state.id }
|
13
13
|
assert_response :success
|
14
14
|
assert_template 'api/v2/salt_states/show'
|
15
15
|
end
|
16
16
|
|
17
17
|
test 'should create state' do
|
18
|
-
post :create, :state => { :name => 'unicorn' }
|
18
|
+
post :create, params: { :state => { :name => 'unicorn' } }
|
19
19
|
assert_response :success
|
20
20
|
assert ForemanSalt::SaltModule.find_by_name('unicorn')
|
21
21
|
assert_template 'api/v2/salt_states/create'
|
@@ -24,14 +24,14 @@ class ::ForemanSalt::Api::V2::SaltStatesControllerTest < ActionController::TestC
|
|
24
24
|
test 'should delete state' do
|
25
25
|
state = ForemanSalt::SaltModule.create(:name => 'foo.bar.baz')
|
26
26
|
assert_difference('ForemanSalt::SaltModule.count', -1) do
|
27
|
-
delete :destroy, :id => state.id
|
27
|
+
delete :destroy, params: { :id => state.id }
|
28
28
|
end
|
29
29
|
assert_response :success
|
30
30
|
end
|
31
31
|
|
32
32
|
context 'importing' do
|
33
33
|
setup do
|
34
|
-
@proxy =
|
34
|
+
@proxy = FactoryBot.create :smart_proxy, :with_salt_feature
|
35
35
|
@states = { 'env1' => %w(state1 state2 state3),
|
36
36
|
'env2' => %w(state1 state2) }
|
37
37
|
|
@@ -39,7 +39,7 @@ class ::ForemanSalt::Api::V2::SaltStatesControllerTest < ActionController::TestC
|
|
39
39
|
end
|
40
40
|
|
41
41
|
test 'should import' do
|
42
|
-
post :import, :smart_proxy_id => @proxy.id
|
42
|
+
post :import, params: { :smart_proxy_id => @proxy.id }
|
43
43
|
|
44
44
|
assert_response :success
|
45
45
|
|
@@ -50,32 +50,32 @@ class ::ForemanSalt::Api::V2::SaltStatesControllerTest < ActionController::TestC
|
|
50
50
|
end
|
51
51
|
|
52
52
|
test 'should import only from a given environment' do
|
53
|
-
post :import, :smart_proxy_id => @proxy.id, :salt_environments => ['env2']
|
53
|
+
post :import, params: { :smart_proxy_id => @proxy.id, :salt_environments => ['env2'] }
|
54
54
|
assert_response :success
|
55
55
|
refute ::ForemanSalt::SaltEnvironment.where(:name => 'env1').first
|
56
56
|
assert ::ForemanSalt::SaltEnvironment.where(:name => 'env2').first
|
57
57
|
end
|
58
58
|
|
59
59
|
test 'should limit actions to add' do
|
60
|
-
env =
|
61
|
-
state =
|
60
|
+
env = FactoryBot.create :salt_environment
|
61
|
+
state = FactoryBot.create :salt_module, :salt_environments => [env]
|
62
62
|
|
63
|
-
post :import, :smart_proxy_id => @proxy.id, :actions => ['add']
|
63
|
+
post :import, params: { :smart_proxy_id => @proxy.id, :actions => ['add'] }
|
64
64
|
assert_response :success
|
65
65
|
assert ::ForemanSalt::SaltModule.where(:id => state).first
|
66
66
|
assert ::ForemanSalt::SaltModule.where(:name => 'state1').first
|
67
67
|
end
|
68
68
|
|
69
69
|
test 'should limit actions to remove' do
|
70
|
-
state =
|
71
|
-
post :import, :smart_proxy_id => @proxy.id, :actions => ['remove']
|
70
|
+
state = FactoryBot.create :salt_module
|
71
|
+
post :import, params: { :smart_proxy_id => @proxy.id, :actions => ['remove'] }
|
72
72
|
assert_response :success
|
73
73
|
refute ::ForemanSalt::SaltModule.where(:id => state).first
|
74
74
|
refute ::ForemanSalt::SaltModule.where(:name => 'state1').first
|
75
75
|
end
|
76
76
|
|
77
77
|
test 'dryrun should do nothing' do
|
78
|
-
post :import, :smart_proxy_id => @proxy.id, :dryrun => true
|
78
|
+
post :import, params: { :smart_proxy_id => @proxy.id, :dryrun => true }
|
79
79
|
assert_response :success
|
80
80
|
refute ::ForemanSalt::SaltModule.all.any?
|
81
81
|
refute ::ForemanSalt::SaltEnvironment.all.any?
|
@@ -7,11 +7,11 @@ module ForemanSalt
|
|
7
7
|
Setting[:restrict_registered_smart_proxies] = true
|
8
8
|
Setting[:require_ssl_smart_proxies] = false
|
9
9
|
|
10
|
-
proxy =
|
10
|
+
proxy = FactoryBot.create :smart_proxy, :with_salt_feature
|
11
11
|
Resolv.any_instance.stubs(:getnames).returns([proxy.to_s])
|
12
12
|
|
13
|
-
host =
|
14
|
-
get :node, :id => host, :format => 'yml'
|
13
|
+
host = FactoryBot.create :host
|
14
|
+
get :node, params: { :id => host, :format => 'yml' }
|
15
15
|
assert_response :success
|
16
16
|
end
|
17
17
|
end
|
@@ -4,7 +4,7 @@ require 'integration_test_helper'
|
|
4
4
|
module ForemanSalt
|
5
5
|
class SaltKeysTest < ActionDispatch::IntegrationTest
|
6
6
|
setup do
|
7
|
-
@proxy =
|
7
|
+
@proxy = FactoryBot.create :smart_proxy, :with_salt_feature
|
8
8
|
|
9
9
|
::ProxyAPI::Salt.any_instance.stubs(:autosign_list).returns(
|
10
10
|
['foo.example.com']
|
@@ -4,7 +4,7 @@ require 'integration_test_helper'
|
|
4
4
|
module ForemanSalt
|
5
5
|
class SaltEnvironmentTest < ActionDispatch::IntegrationTest
|
6
6
|
test 'index page' do
|
7
|
-
|
7
|
+
FactoryBot.create_list :salt_environment, 5
|
8
8
|
assert_index_page(salt_environments_path, 'Salt Environment', 'New Salt Environment')
|
9
9
|
end
|
10
10
|
|
@@ -16,7 +16,7 @@ module ForemanSalt
|
|
16
16
|
end
|
17
17
|
|
18
18
|
test 'edit page' do
|
19
|
-
salt_environment =
|
19
|
+
salt_environment = FactoryBot.create :salt_environment
|
20
20
|
visit salt_environments_path
|
21
21
|
click_link salt_environment.name
|
22
22
|
fill_in 'foreman_salt_salt_environment_name', :with => 'some_other_name'
|
@@ -4,7 +4,7 @@ require 'integration_test_helper'
|
|
4
4
|
module ForemanSalt
|
5
5
|
class SaltKeysTest < ActionDispatch::IntegrationTest
|
6
6
|
setup do
|
7
|
-
@proxy =
|
7
|
+
@proxy = FactoryBot.create :smart_proxy, :with_salt_feature
|
8
8
|
|
9
9
|
::ProxyAPI::Salt.any_instance.stubs(:key_list).returns(
|
10
10
|
'saltstack.example.com' => { 'state' => 'accepted', 'fingerprint' => '98:c2:63:c1:57:59:bc:bd:f1:ef:5a:38:b2:e9:71:c0' },
|
@@ -12,12 +12,12 @@ module ForemanSalt
|
|
12
12
|
::ProxyAPI::Salt.any_instance.stubs(:states_list).returns(state_list)
|
13
13
|
|
14
14
|
# FIXME #12143
|
15
|
-
|
15
|
+
FactoryBot.create(:permission, :name => 'view_salt_environments',
|
16
16
|
:resource_type => 'ForemanSalt::SaltEnvironment')
|
17
17
|
end
|
18
18
|
|
19
19
|
test 'index page' do
|
20
|
-
|
20
|
+
FactoryBot.create_list :salt_module, 5
|
21
21
|
assert_index_page(salt_modules_path, 'Salt State', 'New Salt State')
|
22
22
|
end
|
23
23
|
|
@@ -29,7 +29,7 @@ module ForemanSalt
|
|
29
29
|
end
|
30
30
|
|
31
31
|
test 'edit page' do
|
32
|
-
salt_module =
|
32
|
+
salt_module = FactoryBot.create :salt_module
|
33
33
|
visit salt_modules_path
|
34
34
|
click_link salt_module.name
|
35
35
|
fill_in :foreman_salt_salt_module_name, :with => 'some_other_name'
|
@@ -38,8 +38,8 @@ module ForemanSalt
|
|
38
38
|
end
|
39
39
|
|
40
40
|
test 'import states' do
|
41
|
-
proxy =
|
42
|
-
state =
|
41
|
+
proxy = FactoryBot.create :smart_proxy, :with_salt_feature
|
42
|
+
state = FactoryBot.create :salt_module, :salt_environments => [FactoryBot.create(:salt_environment)]
|
43
43
|
|
44
44
|
visit salt_modules_path
|
45
45
|
click_link "Import from #{proxy.name}"
|
data/test/test_plugin_helper.rb
CHANGED
@@ -9,6 +9,6 @@ def assert_row_button(index_path, link_text, button_text, dropdown = false)
|
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
|
-
# Add plugin to
|
13
|
-
|
14
|
-
|
12
|
+
# Add plugin to FactoryBot's paths
|
13
|
+
FactoryBot.definition_file_paths << File.join(File.dirname(__FILE__), 'factories')
|
14
|
+
FactoryBot.reload
|
@@ -2,6 +2,9 @@ require 'test_plugin_helper'
|
|
2
2
|
|
3
3
|
module ForemanSalt
|
4
4
|
class GrainsImporterTest < ActiveSupport::TestCase
|
5
|
+
include FactImporterIsolation
|
6
|
+
allow_transactions_for_any_importer
|
7
|
+
|
5
8
|
setup do
|
6
9
|
User.current = User.find_by_login 'admin'
|
7
10
|
Setting[:create_new_host_when_facts_are_uploaded] = true
|
@@ -7,36 +7,36 @@ module ForemanSalt
|
|
7
7
|
end
|
8
8
|
|
9
9
|
test 'host has a salt smart proxy' do
|
10
|
-
host =
|
10
|
+
host = FactoryBot.create :host, :with_salt_proxy
|
11
11
|
assert host.salt_proxy.has_feature? 'Salt'
|
12
12
|
end
|
13
13
|
|
14
14
|
test 'smart_proxy_ids returns salt smart proxy' do
|
15
|
-
host =
|
15
|
+
host = FactoryBot.create :host, :with_salt_proxy
|
16
16
|
assert host.smart_proxy_ids.include? host.salt_proxy_id
|
17
17
|
end
|
18
18
|
|
19
19
|
test 'host params includes salt_master' do
|
20
|
-
host =
|
20
|
+
host = FactoryBot.create :host, :with_salt_proxy
|
21
21
|
assert host.params.key? 'salt_master'
|
22
22
|
assert_equal host.params['salt_master'], host.salt_master
|
23
23
|
end
|
24
24
|
|
25
25
|
test 'host inherits salt proxy from host group' do
|
26
|
-
hostgroup =
|
27
|
-
host =
|
26
|
+
hostgroup = FactoryBot.create :hostgroup, :with_salt_proxy
|
27
|
+
host = FactoryBot.create :host, :hostgroup => hostgroup
|
28
28
|
host.set_hostgroup_defaults
|
29
29
|
assert_equal host.salt_proxy, hostgroup.salt_proxy
|
30
30
|
end
|
31
31
|
|
32
32
|
test 'host does not accept salt modules outside its environment' do
|
33
|
-
hosts_environment =
|
34
|
-
other_environment =
|
33
|
+
hosts_environment = FactoryBot.create :salt_environment
|
34
|
+
other_environment = FactoryBot.create :salt_environment
|
35
35
|
|
36
|
-
state =
|
36
|
+
state = FactoryBot.create :salt_module
|
37
37
|
other_environment.salt_modules << state
|
38
38
|
|
39
|
-
host =
|
39
|
+
host = FactoryBot.create :host, :with_salt_proxy, :salt_environment => hosts_environment
|
40
40
|
host.salt_modules = [state]
|
41
41
|
|
42
42
|
refute host.save
|
@@ -44,8 +44,8 @@ module ForemanSalt
|
|
44
44
|
end
|
45
45
|
|
46
46
|
test '#configuration? considers salt' do
|
47
|
-
host =
|
48
|
-
proxy =
|
47
|
+
host = FactoryBot.build(:host)
|
48
|
+
proxy = FactoryBot.build(:smart_proxy)
|
49
49
|
|
50
50
|
refute host.configuration?
|
51
51
|
host.salt_proxy = proxy
|
@@ -54,7 +54,7 @@ module ForemanSalt
|
|
54
54
|
|
55
55
|
context 'key handling' do
|
56
56
|
before do
|
57
|
-
@host =
|
57
|
+
@host = FactoryBot.create(:host, :with_salt_proxy, :managed, :build => true)
|
58
58
|
@key_stub = stub("key")
|
59
59
|
ForemanSalt::SmartProxies::SaltKeys.expects(:find).at_least_once.with(@host.salt_proxy, @host.fqdn).returns(@key_stub)
|
60
60
|
end
|
@@ -7,49 +7,49 @@ module ForemanSalt
|
|
7
7
|
end
|
8
8
|
|
9
9
|
test 'host group has a salt smart proxy' do
|
10
|
-
hostgroup =
|
10
|
+
hostgroup = FactoryBot.create :hostgroup, :with_salt_proxy
|
11
11
|
assert hostgroup.salt_proxy.features.map(&:name).include? 'Salt'
|
12
12
|
end
|
13
13
|
|
14
14
|
test 'nested host group inherits salt modules from parent' do
|
15
|
-
parent =
|
16
|
-
child =
|
15
|
+
parent = FactoryBot.create :hostgroup, :with_salt_modules
|
16
|
+
child = FactoryBot.create :hostgroup, :parent => parent
|
17
17
|
assert_equal [], parent.all_salt_modules - child.all_salt_modules
|
18
18
|
end
|
19
19
|
|
20
20
|
test 'child host group inherits salt proxy from child parent' do
|
21
|
-
parent =
|
22
|
-
child_one =
|
23
|
-
child_two =
|
21
|
+
parent = FactoryBot.create :hostgroup
|
22
|
+
child_one = FactoryBot.create :hostgroup, :with_salt_proxy, :parent => parent
|
23
|
+
child_two = FactoryBot.create :hostgroup, :parent => child_one
|
24
24
|
assert_equal child_two.salt_proxy, child_one.salt_proxy
|
25
25
|
end
|
26
26
|
|
27
27
|
test 'child and parent salt modules are combined' do
|
28
|
-
environment =
|
29
|
-
parent =
|
30
|
-
child =
|
28
|
+
environment = FactoryBot.create :salt_environment
|
29
|
+
parent = FactoryBot.create :hostgroup, :with_salt_modules, :salt_environment => environment
|
30
|
+
child = FactoryBot.create :hostgroup, :with_salt_modules, :salt_environment => environment, :parent => parent
|
31
31
|
|
32
32
|
total = parent.salt_modules.count + child.salt_modules.count
|
33
33
|
assert_equal total, child.all_salt_modules.count
|
34
34
|
end
|
35
35
|
|
36
36
|
test 'child doesnt get modules from outside its environment' do
|
37
|
-
parent =
|
38
|
-
child =
|
37
|
+
parent = FactoryBot.create :hostgroup, :with_salt_modules
|
38
|
+
child = FactoryBot.create :hostgroup, :with_salt_modules, :parent => parent
|
39
39
|
assert_equal child.salt_modules.count, child.all_salt_modules.count
|
40
40
|
end
|
41
41
|
|
42
42
|
test 'inheritance when only parent has modules' do
|
43
|
-
parent =
|
44
|
-
child_one =
|
45
|
-
child_two =
|
43
|
+
parent = FactoryBot.create :hostgroup, :with_salt_modules
|
44
|
+
child_one = FactoryBot.create :hostgroup, :parent => parent
|
45
|
+
child_two = FactoryBot.create :hostgroup, :parent => child_one
|
46
46
|
assert_empty parent.all_salt_modules - child_two.all_salt_modules
|
47
47
|
end
|
48
48
|
|
49
49
|
test 'inheritance when no parents have modules' do
|
50
|
-
parent =
|
51
|
-
child_one =
|
52
|
-
child_two =
|
50
|
+
parent = FactoryBot.create :hostgroup
|
51
|
+
child_one = FactoryBot.create :hostgroup, :parent => parent
|
52
|
+
child_two = FactoryBot.create :hostgroup, :with_salt_modules, :parent => child_one
|
53
53
|
assert child_two.all_salt_modules.any?
|
54
54
|
end
|
55
55
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman_salt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 10.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen Benjamin
|
@@ -202,8 +202,8 @@ test_files:
|
|
202
202
|
- test/unit/highstate.json
|
203
203
|
- test/unit/salt_keys_test.rb
|
204
204
|
- test/unit/salt_modules_test.rb
|
205
|
-
- test/unit/report_importer_test.rb
|
206
205
|
- test/unit/grains_importer_test.rb
|
207
206
|
- test/unit/host_extensions_test.rb
|
208
207
|
- test/unit/hostgroup_extensions_test.rb
|
208
|
+
- test/unit/report_importer_test.rb
|
209
209
|
- test/test_plugin_helper.rb
|