foreman_salt 9.0.1 → 10.0.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/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
|