foreman_salt 14.0.0 → 15.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -2
  3. data/Rakefile +2 -2
  4. data/app/controllers/foreman_salt/api/v2/jobs_controller.rb +9 -9
  5. data/app/controllers/foreman_salt/api/v2/salt_autosign_controller.rb +15 -14
  6. data/app/controllers/foreman_salt/api/v2/salt_environments_controller.rb +6 -6
  7. data/app/controllers/foreman_salt/api/v2/salt_hostgroups_controller.rb +42 -0
  8. data/app/controllers/foreman_salt/api/v2/salt_keys_controller.rb +14 -14
  9. data/app/controllers/foreman_salt/api/v2/salt_minions_controller.rb +8 -8
  10. data/app/controllers/foreman_salt/api/v2/salt_states_controller.rb +24 -26
  11. data/app/controllers/foreman_salt/api/v2/salt_variables_controller.rb +22 -21
  12. data/app/controllers/foreman_salt/concerns/hostgroups_controller_extensions.rb +3 -3
  13. data/app/controllers/foreman_salt/concerns/hosts_controller_extensions.rb +4 -4
  14. data/app/controllers/foreman_salt/concerns/salt_environment_parameters.rb +1 -1
  15. data/app/controllers/foreman_salt/concerns/salt_hostgroup_parameters.rb +25 -0
  16. data/app/controllers/foreman_salt/concerns/salt_module_parameters.rb +1 -1
  17. data/app/controllers/foreman_salt/concerns/salt_override_value.rb +4 -4
  18. data/app/controllers/foreman_salt/concerns/salt_variable_parameters.rb +5 -5
  19. data/app/controllers/foreman_salt/minions_controller.rb +9 -20
  20. data/app/controllers/foreman_salt/salt_autosign_controller.rb +8 -8
  21. data/app/controllers/foreman_salt/salt_environments_controller.rb +4 -4
  22. data/app/controllers/foreman_salt/salt_keys_controller.rb +11 -11
  23. data/app/controllers/foreman_salt/salt_modules_controller.rb +10 -11
  24. data/app/controllers/foreman_salt/salt_variables_controller.rb +5 -4
  25. data/app/controllers/foreman_salt/state_importer.rb +12 -13
  26. data/app/helpers/concerns/foreman_salt/hosts_helper_extensions.rb +13 -21
  27. data/app/helpers/concerns/foreman_salt/smart_proxies_helper_extensions.rb +2 -2
  28. data/app/helpers/foreman_salt/salt_keys_helper.rb +2 -1
  29. data/app/helpers/foreman_salt/salt_modules_helper.rb +11 -11
  30. data/app/helpers/foreman_salt/salt_reports_helper.rb +0 -1
  31. data/app/lib/actions/foreman_salt/report_import.rb +2 -2
  32. data/app/lib/proxy_api/salt.rb +17 -17
  33. data/app/models/foreman_salt/concerns/host_managed_extensions.rb +46 -56
  34. data/app/models/foreman_salt/concerns/hostgroup_extensions.rb +14 -11
  35. data/app/models/foreman_salt/host_salt_module.rb +1 -1
  36. data/app/models/foreman_salt/salt_environment.rb +8 -8
  37. data/app/models/foreman_salt/salt_module.rb +15 -13
  38. data/app/models/foreman_salt/salt_module_environment.rb +1 -1
  39. data/app/models/foreman_salt/salt_provider.rb +7 -4
  40. data/app/models/foreman_salt/salt_variable.rb +8 -8
  41. data/app/overrides/salt_environment_host_selector.rb +4 -4
  42. data/app/overrides/salt_environment_hostgroup_selector.rb +4 -4
  43. data/app/overrides/salt_modules_selector.rb +16 -16
  44. data/app/overrides/salt_proxy_selector.rb +11 -9
  45. data/app/services/foreman_salt/report_importer.rb +30 -30
  46. data/app/services/foreman_salt/smart_proxies/salt_keys.rb +47 -45
  47. data/app/views/foreman_salt/api/v2/salt_autosign/create.json.rabl +1 -1
  48. data/app/views/foreman_salt/api/v2/salt_environments/create.json.rabl +1 -1
  49. data/app/views/foreman_salt/api/v2/salt_environments/show.json.rabl +1 -1
  50. data/app/views/foreman_salt/api/v2/salt_hostgroups/base.json.rabl +7 -0
  51. data/app/views/foreman_salt/api/v2/salt_hostgroups/show.json.rabl +3 -0
  52. data/app/views/foreman_salt/api/v2/salt_hostgroups/update.json.rabl +3 -0
  53. data/app/views/foreman_salt/api/v2/salt_keys/update.json.rabl +1 -1
  54. data/app/views/foreman_salt/api/v2/salt_minions/show.json.rabl +3 -4
  55. data/app/views/foreman_salt/api/v2/salt_states/create.json.rabl +1 -1
  56. data/app/views/foreman_salt/api/v2/salt_states/show.json.rabl +0 -1
  57. data/app/views/foreman_salt/api/v2/salt_variables/create.json.rabl +1 -1
  58. data/app/views/foreman_salt/api/v2/salt_variables/destroy.json.rabl +1 -1
  59. data/app/views/foreman_salt/api/v2/salt_variables/show.json.rabl +8 -8
  60. data/app/views/foreman_salt/salt_autosign/index.html.erb +1 -2
  61. data/app/views/foreman_salt/salt_environments/index.html.erb +1 -3
  62. data/app/views/foreman_salt/salt_keys/index.erb +1 -3
  63. data/app/views/foreman_salt/salt_modules/index.html.erb +1 -2
  64. data/config/api_routes.rb +31 -0
  65. data/config/routes.rb +16 -44
  66. data/db/migrate/20140817210214_create_salt_modules.rb +4 -4
  67. data/db/migrate/20140829210214_add_salt_modules_to_hostgroups.rb +1 -1
  68. data/db/migrate/20140920232200_create_salt_environments.rb +3 -3
  69. data/db/migrate/20150220122707_fix_incorrect_report_metrics.rb +6 -2
  70. data/db/migrate/20211108211312_add_missing_permissions.rb +9 -0
  71. data/db/migrate/20220118160349_drop_salt_hide_run_salt_button_setting.rb +5 -0
  72. data/db/migrate/20220406185204_fix_salt_setting_category_to_dsl.rb +5 -0
  73. data/db/seeds.d/75-salt_seeds.rb +1 -1
  74. data/db/seeds.d/76-job_templates.rb +7 -5
  75. data/lib/foreman_salt/engine.rb +17 -19
  76. data/lib/foreman_salt/extensions.rb +8 -8
  77. data/lib/foreman_salt/plugin.rb +130 -114
  78. data/lib/foreman_salt/version.rb +1 -1
  79. data/lib/foreman_salt.rb +1 -1
  80. data/lib/tasks/foreman_salt_tasks.rake +3 -5
  81. data/locale/action_names.rb +4 -4
  82. data/test/factories/foreman_salt_factories.rb +5 -5
  83. data/test/functional/api/v2/salt_autosign_controller_test.rb +26 -20
  84. data/test/functional/api/v2/salt_environments_controller_test.rb +29 -23
  85. data/test/functional/api/v2/salt_hostgroups_controller_test.rb +76 -0
  86. data/test/functional/api/v2/salt_keys_controller_test.rb +25 -19
  87. data/test/functional/api/v2/salt_states_controller_test.rb +72 -66
  88. data/test/functional/api/v2/salt_variables_controller_test.rb +4 -4
  89. data/test/functional/hosts_controller_test.rb +26 -26
  90. data/test/functional/minions_controller_test.rb +23 -24
  91. data/test/functional/salt_modules_controller_test.rb +3 -3
  92. data/test/functional/salt_variables_controller_test.rb +5 -5
  93. data/test/integration/hosts_js_test.rb +7 -23
  94. data/test/integration/salt_autosign_test.rb +5 -6
  95. data/test/integration/salt_environment_test.rb +2 -2
  96. data/test/integration/salt_keys_test.rb +7 -8
  97. data/test/integration/salt_module_test.rb +9 -9
  98. data/test/integration/salt_variable_test.rb +2 -2
  99. data/test/test_plugin_helper.rb +1 -1
  100. data/test/unit/grains_importer_test.rb +13 -13
  101. data/test/unit/host_extensions_test.rb +21 -19
  102. data/test/unit/hostgroup_extensions_test.rb +13 -13
  103. data/test/unit/report_importer_test.rb +9 -9
  104. data/test/unit/salt_keys_test.rb +2 -2
  105. data/test/unit/salt_modules_test.rb +2 -2
  106. data/test/unit/salt_variables_test.rb +10 -10
  107. metadata +24 -14
  108. data/app/models/setting/salt.rb +0 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 287507e11ca2f63bc8341eae5bc832e7d95ad5b848922b9eba44b85486fd9dc3
4
- data.tar.gz: e1a70ace048abbcf30d57e0631f8b1ad1627bbad3c5261b2196d0a92663ef833
3
+ metadata.gz: dceadd793e7c98f49fff2d4c176995a0ed11def096c54133e9d3c8d12368c1f6
4
+ data.tar.gz: 0cc545f144919677a951bdb770a8eb2a3834c8e16fe3ab4c8c7760372b70ba42
5
5
  SHA512:
6
- metadata.gz: '08395ab98cb79f8dfc725268cfcb9dc8b11c015562625ea56f90315edaa9bcf1c76601d123481d57eed865212cc7212cfa36be6ea1506d8e59d1ac15afaa5f2b'
7
- data.tar.gz: f7a59b6f52e80340520a8ed4523e39727659612a737fb848c33731013684f09dcbe83e27c02c928a22614f18842120ce3d53908bc2ec4176a153bb69c2124527
6
+ metadata.gz: 13143280af923e4f4e5cadc8ca97988383d8562eafe139adcdce0712bf088c1d2159e1733e8ac17f730abc626642124708ad7399262b0b456f1b404eed04c4ac
7
+ data.tar.gz: 3154c9e3e6000fad2c96f4ceaaa88801bd49acd7088ee0f76ae82b11b4dc3a1416f9b5f606af2de8dedc979d82a86db216f773f8912b0aed345460ed164762d7
data/README.md CHANGED
@@ -21,7 +21,7 @@ This plug-in adds support for Salt to Foreman.
21
21
 
22
22
  ## Documentation
23
23
 
24
- See the [Foreman Salt manuals](http://theforeman.org/plugins/foreman_salt/) on the Foreman web site.
24
+ [Using Salt for Configuration Management](https://docs.theforeman.org/nightly/Managing_Hosts/index-foreman-el.html#using-salt-for-configuration-management_managing-hosts)
25
25
 
26
26
  ## Contributing
27
27
 
@@ -43,4 +43,3 @@ GNU General Public License for more details.
43
43
 
44
44
  You should have received a copy of the GNU General Public License
45
45
  along with this program. If not, see <http://www.gnu.org/licenses/>.
46
-
data/Rakefile CHANGED
@@ -20,7 +20,7 @@ RDoc::Task.new(:rdoc) do |rdoc|
20
20
  rdoc.rdoc_files.include('lib/**/*.rb')
21
21
  end
22
22
 
23
- APP_RAKEFILE = File.expand_path('../test/dummy/Rakefile', __FILE__)
23
+ APP_RAKEFILE = File.expand_path('test/dummy/Rakefile', __dir__)
24
24
  load 'rails/tasks/engine.rake'
25
25
 
26
26
  Bundler::GemHelper.install_tasks
@@ -34,4 +34,4 @@ Rake::TestTask.new(:test) do |t|
34
34
  t.verbose = false
35
35
  end
36
36
 
37
- task :default => :test
37
+ task default: :test
@@ -5,21 +5,21 @@ module ForemanSalt
5
5
  module V2
6
6
  class JobsController < ::ForemanSalt::Api::V2::BaseController
7
7
  include ::Foreman::Controller::SmartProxyAuth
8
- add_smart_proxy_filters :upload, :features => 'Salt'
8
+ add_smart_proxy_filters :upload, features: 'Salt'
9
9
 
10
10
  include ::Foreman::Controller::FilterParameters
11
11
  filter_parameters :job
12
12
 
13
13
  def_param_group :job do
14
- param :job, Hash, :required => true, :action_aware => true do
15
- param :job_id, Integer, :required => true, :desc => N_('JID')
16
- param :function, String, :required => true, :desc => N_('Function')
17
- param :result, Hash, :required => true, :desc => N_('Result')
14
+ param :job, Hash, required: true, action_aware: true do
15
+ param :job_id, Integer, required: true, desc: N_('JID')
16
+ param :function, String, required: true, desc: N_('Function')
17
+ param :result, Hash, required: true, desc: N_('Result')
18
18
  end
19
19
  end
20
20
 
21
21
  api :POST, '/upload', N_('Upload a Job')
22
- param_group :job, :as => :upload
22
+ param_group :job, as: :upload
23
23
 
24
24
  def upload
25
25
  params[:job].permit!
@@ -27,12 +27,12 @@ module ForemanSalt
27
27
  case params[:job][:function]
28
28
  when 'state.highstate'
29
29
  task = ForemanTasks.async_task(::Actions::ForemanSalt::ReportImport, params[:job], detected_proxy.try(:id))
30
- render :json => { :task_id => task.id }
30
+ render json: { task_id: task.id }
31
31
  else
32
- render :json => { :message => 'Unsupported function' }, :status => :unprocessable_entity
32
+ render json: { message: 'Unsupported function' }, status: :unprocessable_entity
33
33
  end
34
34
  rescue ::Foreman::Exception => e
35
- render :json => { :message => e.to_s }, :status => :unprocessable_entity
35
+ render json: { message: e.to_s }, status: :unprocessable_entity
36
36
  end
37
37
 
38
38
  def resource_class
@@ -15,37 +15,38 @@ module ForemanSalt
15
15
  before_action :setup_proxy
16
16
 
17
17
  api :GET, '/salt_autosign/:smart_proxy_id', N_('List all autosign records')
18
- param :smart_proxy_id, :identifier_dottable, :required => true
18
+ param :smart_proxy_id, :identifier_dottable, required: true
19
19
  def index
20
20
  @salt_autosigns = all_autosign
21
21
  end
22
22
 
23
23
  api :POST, '/salt_autosign/:smart_proxy_id', N_('Create an autosign record')
24
- param :smart_proxy_id, :identifier_dottable, :required => true
25
- param :record, String, :required => true, :desc => N_('Autosign record')
24
+ param :smart_proxy_id, :identifier_dottable, required: true
25
+ param :record, String, required: true, desc: N_('Autosign record')
26
26
  def create
27
27
  @api.autosign_create params[:record]
28
- @salt_autosign = { :record => params[:record] }
28
+ @salt_autosign = { record: params[:record] }
29
29
  end
30
30
 
31
31
  api :DELETE, '/salt_autosign/:smart_proxy_id/:record', N_('Delete an autosign record')
32
- param :smart_proxy_id, :identifier_dottable, :required => true
33
- param :record, String, :required => true, :desc => N_('Autosign record')
32
+ param :smart_proxy_id, :identifier_dottable, required: true
33
+ param :record, String, required: true, desc: N_('Autosign record')
34
34
  def destroy
35
35
  @api.autosign_remove params[:record]
36
- render :json => { root_node_name => _('Record deleted.') }
36
+ render json: { root_node_name => _('Record deleted.') }
37
37
  end
38
38
 
39
- api :PUT, '/salt_autosign_auth', N_("Set the salt_status as \'successful authentication\' and remove the corresponding autosign key from the Smart Proxy")
40
- param :name, String, :required => true
39
+ api :PUT, '/salt_autosign_auth',
40
+ N_("Set the salt_status as \'successful authentication\' and remove the corresponding autosign key from the Smart Proxy")
41
+ param :name, String, required: true
41
42
  def auth
42
43
  Rails.logger.info("Removing Salt autosign key and update status for host #{@host}")
43
44
  @api.autosign_remove_key(@host.salt_autosign_key) unless @host.salt_autosign_key.nil?
44
- @host.update(:salt_status => ForemanSalt::SaltStatus.minion_auth_success)
45
- render :json => { :message => "Removed autosign key and updated status succesfully" }, :status => 204
45
+ @host.update(salt_status: ForemanSalt::SaltStatus.minion_auth_success)
46
+ render json: { message: 'Removed autosign key and updated status succesfully' }, status: :no_content
46
47
  rescue ::Foreman::Exception => e
47
48
  Rails.logger.warn("Cannot delete autosign key of host (id => #{params[:name]}) state: #{e}")
48
- render :json => { :message => e.to_s }, :status => :unprocessable_entity
49
+ render json: { message: e.to_s }, status: :unprocessable_entity
49
50
  end
50
51
 
51
52
  def metadata_total
@@ -67,7 +68,7 @@ module ForemanSalt
67
68
  private
68
69
 
69
70
  def all_autosign
70
- @_autosigns ||= @api.autosign_list.map { |record| OpenStruct.new(:record => record) }
71
+ @_autosigns ||= @api.autosign_list.map { |record| OpenStruct.new(record: record) }
71
72
  end
72
73
 
73
74
  def find_host
@@ -86,7 +87,7 @@ module ForemanSalt
86
87
  end
87
88
 
88
89
  def setup_proxy
89
- @api = ProxyAPI::Salt.new(:url => @proxy.url)
90
+ @api = ProxyAPI::Salt.new(url: @proxy.url)
90
91
  end
91
92
  end
92
93
  end
@@ -4,7 +4,7 @@ module ForemanSalt
4
4
  class SaltEnvironmentsController < ::ForemanSalt::Api::V2::BaseController
5
5
  include ::ForemanSalt::Concerns::SaltEnvironmentParameters
6
6
 
7
- before_action :find_resource, :except => [:index, :create]
7
+ before_action :find_resource, except: %i[index create]
8
8
 
9
9
  api :GET, '/salt_environments', N_('List all Salt environments')
10
10
  param_group :search_and_pagination, ::Api::V2::BaseController
@@ -13,25 +13,25 @@ module ForemanSalt
13
13
  end
14
14
 
15
15
  api :GET, '/salt_environments/:id/', N_('Show a Salt environment')
16
- param :id, :identifier_dottable, :required => true
16
+ param :id, :identifier_dottable, required: true
17
17
  def show
18
18
  end
19
19
 
20
20
  def_param_group :environment do
21
- param :environment, Hash, :required => true, :action_aware => true do
22
- param :name, String, :required => true
21
+ param :environment, Hash, required: true, action_aware: true do
22
+ param :name, String, required: true
23
23
  end
24
24
  end
25
25
 
26
26
  api :POST, '/salt_environments', N_('Create a Salt environment')
27
- param_group :environment, :as => :create
27
+ param_group :environment, as: :create
28
28
  def create
29
29
  @salt_environment = SaltEnvironment.new(salt_environment_params)
30
30
  process_response @salt_environment.save
31
31
  end
32
32
 
33
33
  api :DELETE, '/salt_environments/:id/', N_('Destroy a Salt environment')
34
- param :id, :identifier, :required => true
34
+ param :id, :identifier, required: true
35
35
  def destroy
36
36
  process_response @salt_environment.destroy
37
37
  end
@@ -0,0 +1,42 @@
1
+ module ForemanSalt
2
+ module Api
3
+ module V2
4
+ class SaltHostgroupsController < ::ForemanSalt::Api::V2::BaseController
5
+ include ::ForemanSalt::Concerns::SaltHostgroupParameters
6
+
7
+ before_action :find_resource
8
+
9
+ api :GET, '/hostgroups/:id', N_('Show the Salt parameters of a host group')
10
+ param :id, :identifier_dottable, required: true, desc: N_('ID of host group')
11
+ def show
12
+ @salt_hostgroup
13
+ end
14
+
15
+ def_param_group :salt_attributes do
16
+ param :hostgroup, Hash, required: true, action_aware: true do
17
+ param :salt_environment_id, :number, desc: N_('Salt environment ID')
18
+ param :salt_proxy_id, :number, desc: N_('Salt master/smart proxy ID')
19
+ param :salt_state_ids, Array, desc: N_('Array of Salt state IDs')
20
+ end
21
+ end
22
+
23
+ api :PUT, '/hostgroups/:id', N_('Update the Salt parameters of a host group')
24
+ param :id, :identifier_dottable, required: true, desc: N_('ID of host group')
25
+ param_group :salt_attributes
26
+ def update
27
+ params.extract!(:salt_hostgroup) if params[:salt_hostgroup]
28
+ params[:hostgroup][:salt_module_ids] = params[:hostgroup].delete(:salt_state_ids) if params[:hostgroup][:salt_state_ids]
29
+ process_response @salt_hostgroup.update(salt_hostgroup_params)
30
+ end
31
+
32
+ def controller_permission
33
+ 'hostgroups'
34
+ end
35
+
36
+ def resource_class
37
+ Hostgroup
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -3,23 +3,23 @@ module ForemanSalt
3
3
  module V2
4
4
  class SaltKeysController < ::ForemanSalt::Api::V2::BaseController
5
5
  before_action :find_proxy
6
- before_action :find_key, :only => [:update, :destroy]
6
+ before_action :find_key, only: %i[update destroy]
7
7
 
8
8
  api :GET, '/salt_keys/:smart_proxy_id', N_('List all Salt keys')
9
- param :smart_proxy_id, :identifier_dottable, :required => true
9
+ param :smart_proxy_id, :identifier_dottable, required: true
10
10
  def index
11
11
  @salt_keys = all_keys
12
12
  end
13
13
 
14
14
  def_param_group :key do
15
- param :smart_proxy_id, :identifier_dottable, :required => true
16
- param :name, String, :required => true, :desc => N_('FQDN of host that key belongs to')
15
+ param :smart_proxy_id, :identifier_dottable, required: true
16
+ param :name, String, required: true, desc: N_('FQDN of host that key belongs to')
17
17
  end
18
18
 
19
19
  api :PUT, '/salt_keys/:smart_proxy_id/:name', N_('Update a Salt Key')
20
- param :name, :identifier_dottable, :required => true
21
- param :smart_proxy_id, :identifier_dottable, :required => true
22
- param :state, String, :required => true, :desc => N_('State can be "accepted" or "rejected"')
20
+ param :name, :identifier_dottable, required: true
21
+ param :smart_proxy_id, :identifier_dottable, required: true
22
+ param :state, String, required: true, desc: N_('State can be "accepted" or "rejected"')
23
23
  def update
24
24
  case params[:salt_key][:state]
25
25
  when 'accepted'
@@ -32,14 +32,14 @@ module ForemanSalt
32
32
  end
33
33
 
34
34
  api :DELETE, '/salt_keys/:smart_proxy_id/:name', N_('Delete a Salt Key')
35
- param_group :key, :as => :destroy
35
+ param_group :key, as: :destroy
36
36
  def destroy
37
- if @key.delete
38
- message = 'Key successfully deleted.'
39
- else
40
- message = 'Unable to delete key.'
41
- end
42
- render :json => { root_node_name => message }
37
+ message = if @key.delete
38
+ 'Key successfully deleted.'
39
+ else
40
+ 'Unable to delete key.'
41
+ end
42
+ render json: { root_node_name => message }
43
43
  end
44
44
 
45
45
  def metadata_total
@@ -2,7 +2,7 @@ module ForemanSalt
2
2
  module Api
3
3
  module V2
4
4
  class SaltMinionsController < ::ForemanSalt::Api::V2::BaseController
5
- before_action :find_resource, :except => [:index]
5
+ before_action :find_resource, except: [:index]
6
6
 
7
7
  api :GET, '/salt_minions', N_('List all Salt Minions')
8
8
  param_group :search_and_pagination, ::Api::V2::BaseController
@@ -11,25 +11,25 @@ module ForemanSalt
11
11
  end
12
12
 
13
13
  api :GET, '/salt_minions/:id', N_('Show a minion')
14
- param :id, :identifier_dottable, :required => true
14
+ param :id, :identifier_dottable, required: true
15
15
  def show
16
16
  @salt_states = @salt_minion.salt_modules
17
17
  end
18
18
 
19
19
  def_param_group :minion do
20
- param :minion, Hash, :required => true, :action_aware => true do
21
- param :salt_environment_id, :number, :desc => N_('Salt environment ID')
22
- param :salt_proxy_id, :number, :desc => N_('ID of Salt Proxy')
23
- param :salt_state_ids, Array, :desc => N_('Array of State ids')
20
+ param :minion, Hash, required: true, action_aware: true do
21
+ param :salt_environment_id, :number, desc: N_('Salt environment ID')
22
+ param :salt_proxy_id, :number, desc: N_('ID of Salt Proxy')
23
+ param :salt_state_ids, Array, desc: N_('Array of State ids')
24
24
  end
25
25
  end
26
26
 
27
27
  api :PUT, '/salt_minions/:id/', N_('Update a minion')
28
- param :id, :identifier_dottable, :required => true
28
+ param :id, :identifier_dottable, required: true
29
29
  param_group :minion
30
30
  def update
31
31
  params[:minion][:salt_module_ids] = params[:minion].delete(:salt_state_ids) if params[:minion]
32
- process_response @salt_minion.update_attributes(params.require(:minion).permit(:salt_proxy_id, :salt_environment_id, :salt_module_ids => []))
32
+ process_response @salt_minion.update(params.require(:minion).permit(:salt_proxy_id, :salt_environment_id, salt_module_ids: []))
33
33
  end
34
34
 
35
35
  def controller_permission
@@ -5,60 +5,59 @@ module ForemanSalt
5
5
  include ::ForemanSalt::Concerns::SaltModuleParameters
6
6
  include StateImporter
7
7
 
8
- before_action :find_resource, :except => [:index, :create, :import]
9
- before_action :find_proxy, :only => :import
10
- before_action :find_environment, :only => :index
8
+ before_action :find_resource, except: %i[index create import]
9
+ before_action :find_proxy, only: :import
10
+ before_action :find_environment, only: :index
11
11
 
12
12
  api :GET, '/salt_states', N_('List all Salt states')
13
- param :salt_environment_id, :identifier_dottable, :required => false, :desc => N_('Limit to a specific environment')
13
+ param :salt_environment_id, :identifier_dottable, required: false, desc: N_('Limit to a specific environment')
14
14
  param_group :search_and_pagination, ::Api::V2::BaseController
15
15
  def index
16
- if @salt_environment
17
- @salt_states = resource_scope_for_index.joins(:salt_environments).where('salt_module_environments.salt_environment_id' => @salt_environment)
18
- else
19
- @salt_states = resource_scope_for_index
20
- end
16
+ @salt_states = if @salt_environment
17
+ resource_scope_for_index.joins(:salt_environments)
18
+ .where('salt_module_environments.salt_environment_id' => @salt_environment)
19
+ else
20
+ resource_scope_for_index
21
+ end
21
22
 
22
23
  @subtotal = @salt_states.count
23
24
  end
24
25
 
25
26
  api :GET, '/salt_states/:id/', N_('Show a state')
26
- param :id, :identifier_dottable, :required => true
27
+ param :id, :identifier_dottable, required: true
27
28
  def show
28
29
  end
29
30
 
30
31
  def_param_group :state do
31
- param :state, Hash, :required => true, :action_aware => true do
32
- param :name, String, :required => true, :desc => N_('Name of the Salt state')
32
+ param :state, Hash, required: true, action_aware: true do
33
+ param :name, String, required: true, desc: N_('Name of the Salt state')
33
34
  end
34
35
  end
35
36
 
36
37
  api :POST, '/salt_states', N_('Create a state')
37
- param_group :state, :as => :create
38
+ param_group :state, as: :create
38
39
  def create
39
40
  @salt_state = SaltModule.new(salt_module_params)
40
41
  process_response @salt_state.save
41
42
  end
42
43
 
43
44
  api :DELETE, '/salt_states/:id/', N_('Destroy a state')
44
- param :id, :identifier_dottable, :required => true
45
+ param :id, :identifier_dottable, required: true
45
46
  def destroy
46
47
  process_response @salt_state.destroy
47
48
  end
48
49
 
49
50
  api :POST, '/salt_states/import/:smart_proxy_id', N_('Import states from a salt master')
50
- param :smart_proxy_id, :identifier_dottable, :required => true, :desc => N_('Salt Smart Proxy ID')
51
- param :salt_environments, Array, :required => false, :desc => N_('Limit to a specific environments')
52
- param :actions, Array, :required => false, :desc => N_('Limit to specific actions: i.e. add, remove')
53
- param :dryrun, :bool, :required => false, :desc => N_('Dryrun only')
51
+ param :smart_proxy_id, :identifier_dottable, required: true, desc: N_('Salt Smart Proxy ID')
52
+ param :salt_environments, Array, required: false, desc: N_('Limit to a specific environments')
53
+ param :actions, Array, required: false, desc: N_('Limit to specific actions: i.e. add, remove')
54
+ param :dryrun, :bool, required: false, desc: N_('Dryrun only')
54
55
  def import
55
56
  states = fetch_states_from_proxy(@proxy, params[:salt_environments])
56
57
 
57
58
  unless params[:dryrun]
58
59
  states[:changes].each do |environment, state|
59
- if state[:add].present? && (params[:actions].blank? || params[:actions].include?('add'))
60
- add_to_environment(state[:add], environment)
61
- end
60
+ add_to_environment(state[:add], environment) if state[:add].present? && (params[:actions].blank? || params[:actions].include?('add'))
62
61
 
63
62
  if state[:remove].present? && (params[:actions].blank? || params[:actions].include?('remove'))
64
63
  remove_from_environment(state[:remove], environment)
@@ -66,7 +65,7 @@ module ForemanSalt
66
65
  end
67
66
  clean_orphans
68
67
  end
69
- render :plain => states.to_json
68
+ render plain: states.to_json
70
69
  end
71
70
 
72
71
  def controller_permission
@@ -89,10 +88,9 @@ module ForemanSalt
89
88
  private
90
89
 
91
90
  def find_environment
92
- if params[:salt_environment_id]
93
- @salt_environment = ForemanSalt::SaltEnvironment.friendly.find(params[:salt_environment_id])
94
- fail _('Could not find salt environment with id %s') % params[:salt_environment_id] unless @salt_environment
95
- end
91
+ return unless params[:salt_environment_id]
92
+ @salt_environment = ForemanSalt::SaltEnvironment.friendly.find(params[:salt_environment_id])
93
+ raise _('Could not find salt environment with id %s') % params[:salt_environment_id] unless @salt_environment
96
94
  end
97
95
  end
98
96
  end
@@ -7,12 +7,13 @@ module ForemanSalt
7
7
  class SaltVariablesController < ::ForemanSalt::Api::V2::BaseController
8
8
  include ::ForemanSalt::Concerns::SaltVariableParameters
9
9
 
10
- wrap_parameters :salt_variable, :include => salt_variable_params_filter.accessible_attributes(parameter_filter_context) + ['salt_state_id']
11
- before_action :find_resource, :only => [:show, :destroy, :update]
10
+ wrap_parameters :salt_variable, include: salt_variable_params_filter.accessible_attributes(parameter_filter_context) + ['salt_state_id']
11
+ before_action :find_resource, only: %i[show destroy update]
12
12
 
13
13
  api :GET, '/salt_variables/:id', N_('Show variable')
14
- param :id, :identifier, :required => true
15
- def show; end
14
+ param :id, :identifier, required: true
15
+ def show
16
+ end
16
17
 
17
18
  api :GET, '/salt_variables', N_('List Salt variables')
18
19
  param_group :search_and_pagination, ::Api::V2::BaseController
@@ -21,31 +22,31 @@ module ForemanSalt
21
22
  end
22
23
 
23
24
  api :DELETE, '/salt_variables/:id', N_('Deletes Salt variable')
24
- param :id, :identifier, :required => true
25
+ param :id, :identifier, required: true
25
26
  def destroy
26
27
  @salt_variable.destroy
27
28
  render 'foreman_salt/api/v2/salt_variables/destroy'
28
29
  end
29
30
 
30
31
  def_param_group :salt_variable do
31
- param :salt_variable, Hash, :required => true, :action_aware => true do
32
- param :variable, String, :required => true, :desc => N_("Name of variable")
33
- param :salt_state_id, :number, :required => true, :desc => N_("State ID")
34
- param :default_value, :any_type, :of => LookupKey::KEY_TYPES, :desc => N_("Default value of variable")
35
- param :hidden_value, :bool, :desc => N_("When enabled the parameter is hidden in the UI")
36
- param :override_value_order, String, :desc => N_("The order in which values are resolved")
37
- param :description, String, :desc => N_("Description of variable")
38
- param :validator_type, LookupKey::VALIDATOR_TYPES, :desc => N_("Types of validation values")
39
- param :validator_rule, String, :desc => N_("Used to enforce certain values for the parameter values")
40
- param :variable_type, LookupKey::KEY_TYPES, :desc => N_("Types of variable values")
41
- param :merge_overrides, :bool, :desc => N_("Merge all matching values (only array/hash type)")
42
- param :merge_default, :bool, :desc => N_("Include default value when merging all matching values")
43
- param :avoid_duplicates, :bool, :desc => N_("Remove duplicate values (only array type)")
32
+ param :salt_variable, Hash, required: true, action_aware: true do
33
+ param :variable, String, required: true, desc: N_('Name of variable')
34
+ param :salt_state_id, :number, required: true, desc: N_('State ID')
35
+ param :default_value, :any_type, of: LookupKey::KEY_TYPES, desc: N_('Default value of variable')
36
+ param :hidden_value, :bool, desc: N_('When enabled the parameter is hidden in the UI')
37
+ param :override_value_order, String, desc: N_('The order in which values are resolved')
38
+ param :description, String, desc: N_('Description of variable')
39
+ param :validator_type, LookupKey::VALIDATOR_TYPES, desc: N_('Types of validation values')
40
+ param :validator_rule, String, desc: N_('Used to enforce certain values for the parameter values')
41
+ param :variable_type, LookupKey::KEY_TYPES, desc: N_('Types of variable values')
42
+ param :merge_overrides, :bool, desc: N_('Merge all matching values (only array/hash type)')
43
+ param :merge_default, :bool, desc: N_('Include default value when merging all matching values')
44
+ param :avoid_duplicates, :bool, desc: N_('Remove duplicate values (only array type)')
44
45
  end
45
46
  end
46
47
 
47
48
  api :POST, '/salt_variables', N_('Create Salt variable')
48
- param_group :salt_variable, :as => :create
49
+ param_group :salt_variable, as: :create
49
50
  def create
50
51
  params[:salt_variable][:salt_module_id] = params[:salt_variable].delete(:salt_state_id) if params[:salt_variable]
51
52
  @salt_variable = SaltVariable.new(salt_variable_params)
@@ -53,8 +54,8 @@ module ForemanSalt
53
54
  end
54
55
 
55
56
  api :PUT, '/salt_variables/:id', N_('Updates Salt variable')
56
- param :id, :identifier, :required => true
57
- param_group :salt_variable, :as => :update
57
+ param :id, :identifier, required: true
58
+ param_group :salt_variable, as: :update
58
59
 
59
60
  def update
60
61
  @salt_variable.update!(salt_variable_params)
@@ -10,7 +10,7 @@ module ForemanSalt
10
10
  @salt_environment ||= @hostgroup.salt_environment
11
11
 
12
12
  if @salt_environment
13
- @inherited_salt_modules = @salt_environment.salt_modules.where(:id => @hostgroup.inherited_salt_modules)
13
+ @inherited_salt_modules = @salt_environment.salt_modules.where(id: @hostgroup.inherited_salt_modules)
14
14
  @salt_modules = @salt_environment.salt_modules - @inherited_salt_modules
15
15
  else
16
16
  @inherited_salt_modules = @salt_modules = []
@@ -25,12 +25,12 @@ module ForemanSalt
25
25
  end
26
26
 
27
27
  def salt_environment_selected
28
- @hostgroup = Hostgroup.authorized(:view_hostgroups, Hostgroup).find_by_id(params[:hostgroup_id]) || Hostgroup.new(params[:hostgroup])
28
+ @hostgroup = Hostgroup.authorized(:view_hostgroups, Hostgroup).find_by(id: params[:hostgroup_id]) || Hostgroup.new(params[:hostgroup])
29
29
 
30
30
  if params[:hostgroup][:salt_environment_id].present?
31
31
  @salt_environment = ::ForemanSalt::SaltEnvironment.friendly.find(params[:hostgroup][:salt_environment_id])
32
32
  load_vars_for_ajax
33
- render :partial => 'foreman_salt/salt_modules/host_tab_pane'
33
+ render partial: 'foreman_salt/salt_modules/host_tab_pane'
34
34
  else
35
35
  logger.info 'environment_id is required to render states'
36
36
  end
@@ -2,8 +2,8 @@ module ForemanSalt
2
2
  module Concerns
3
3
  module HostsControllerExtensions
4
4
  extend ActiveSupport::Concern
5
- MULTIPLE_EDIT_ACTIONS = %w(select_multiple_salt_environment update_multiple_salt_environment
6
- select_multiple_salt_master update_multiple_salt_master)
5
+ MULTIPLE_EDIT_ACTIONS = %w[select_multiple_salt_environment update_multiple_salt_environment
6
+ select_multiple_salt_master update_multiple_salt_master].freeze
7
7
 
8
8
  module Overrides
9
9
  def process_hostgroup
@@ -57,12 +57,12 @@ module ForemanSalt
57
57
  end
58
58
 
59
59
  find_multiple
60
- ev = ForemanSalt::SaltEnvironment.find_by_id(id)
60
+ ev = ForemanSalt::SaltEnvironment.find_by(id: id)
61
61
 
62
62
  # update the hosts
63
63
  @hosts.each do |host|
64
64
  host.salt_environment = ev
65
- host.save(:validate => false)
65
+ host.save(validate: false)
66
66
  end
67
67
 
68
68
  success _('Updated hosts: changed salt environment')
@@ -6,7 +6,7 @@ module ForemanSalt
6
6
  class_methods do
7
7
  def salt_environment_params_filter
8
8
  Foreman::ParameterFilter.new(::ForemanSalt::SaltEnvironment).tap do |filter|
9
- filter.permit(:name, :salt_modules => [], :salt_module_ids => [])
9
+ filter.permit(:name, salt_modules: [], salt_module_ids: [])
10
10
  end
11
11
  end
12
12
  end
@@ -0,0 +1,25 @@
1
+ module ForemanSalt
2
+ module Concerns
3
+ module SaltHostgroupParameters
4
+ extend ActiveSupport::Concern
5
+ include Foreman::Controller::Parameters::LookupKey
6
+
7
+ class_methods do
8
+ def salt_hostgroup_params_filter
9
+ Foreman::ParameterFilter.new(Hostgroup).tap do |filter|
10
+ filter.permit hostgroup: [:salt_environment_id, :salt_proxy_id, { salt_module_ids: [] }]
11
+ filter.permit_by_context :required, nested: true
12
+ filter.permit_by_context :id, ui: false, api: true, nested: true
13
+
14
+ add_lookup_key_params_filter(filter)
15
+ end
16
+ end
17
+ end
18
+
19
+ def salt_hostgroup_params
20
+ param_name = parameter_filter_context.api? ? 'hostgroup' : 'foreman_salt_salt_hostgroup'
21
+ self.class.salt_hostgroup_params_filter.filter_params(params, parameter_filter_context, param_name)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -6,7 +6,7 @@ module ForemanSalt
6
6
  class_methods do
7
7
  def salt_module_params_filter
8
8
  Foreman::ParameterFilter.new(::ForemanSalt::SaltEnvironment).tap do |filter|
9
- filter.permit(:name, :salt_environments => [], :salt_environment_ids => [])
9
+ filter.permit(:name, salt_environments: [], salt_environment_ids: [])
10
10
  end
11
11
  end
12
12
  end
@@ -9,13 +9,13 @@ module ForemanSalt
9
9
  class_methods do
10
10
  def lookup_value_params_filter
11
11
  Foreman::ParameterFilter.new(::LookupValue).tap do |filter|
12
- filter.permit :salt_variable_id, :override_value => {}
12
+ filter.permit :salt_variable_id, override_value: {}
13
13
 
14
14
  filter.permit_by_context :hidden_value, :host_or_hostgroup, :lookup_key, :lookup_key_id,
15
- :match, :omit, :value, :nested => true
15
+ :match, :omit, :value, nested: true
16
16
 
17
- filter.permit_by_context :id, :_destroy, :ui => false,
18
- :api => false, :nested => true
17
+ filter.permit_by_context :id, :_destroy, ui: false,
18
+ api: false, nested: true
19
19
  end
20
20
  end
21
21
  end