foreman_salt 14.0.0 → 14.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) 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 -9
  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 +16 -10
  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 +47 -46
  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/models/setting/salt.rb +12 -10
  42. data/app/overrides/salt_environment_host_selector.rb +4 -4
  43. data/app/overrides/salt_environment_hostgroup_selector.rb +4 -4
  44. data/app/overrides/salt_modules_selector.rb +16 -16
  45. data/app/overrides/salt_proxy_selector.rb +11 -9
  46. data/app/services/foreman_salt/report_importer.rb +26 -26
  47. data/app/services/foreman_salt/smart_proxies/salt_keys.rb +47 -45
  48. data/app/views/foreman_salt/api/v2/salt_autosign/create.json.rabl +1 -1
  49. data/app/views/foreman_salt/api/v2/salt_environments/create.json.rabl +1 -1
  50. data/app/views/foreman_salt/api/v2/salt_environments/show.json.rabl +1 -1
  51. data/app/views/foreman_salt/api/v2/salt_hostgroups/base.json.rabl +7 -0
  52. data/app/views/foreman_salt/api/v2/salt_hostgroups/show.json.rabl +3 -0
  53. data/app/views/foreman_salt/api/v2/salt_hostgroups/update.json.rabl +3 -0
  54. data/app/views/foreman_salt/api/v2/salt_keys/update.json.rabl +1 -1
  55. data/app/views/foreman_salt/api/v2/salt_minions/show.json.rabl +3 -4
  56. data/app/views/foreman_salt/api/v2/salt_states/create.json.rabl +1 -1
  57. data/app/views/foreman_salt/api/v2/salt_states/show.json.rabl +0 -1
  58. data/app/views/foreman_salt/api/v2/salt_variables/create.json.rabl +1 -1
  59. data/app/views/foreman_salt/api/v2/salt_variables/destroy.json.rabl +1 -1
  60. data/app/views/foreman_salt/api/v2/salt_variables/show.json.rabl +8 -8
  61. data/config/api_routes.rb +31 -0
  62. data/config/routes.rb +16 -44
  63. data/db/migrate/20140817210214_create_salt_modules.rb +4 -4
  64. data/db/migrate/20140829210214_add_salt_modules_to_hostgroups.rb +1 -1
  65. data/db/migrate/20140920232200_create_salt_environments.rb +3 -3
  66. data/db/migrate/20150220122707_fix_incorrect_report_metrics.rb +6 -2
  67. data/db/migrate/20211108211312_add_missing_permissions.rb +9 -0
  68. data/db/seeds.d/75-salt_seeds.rb +1 -1
  69. data/db/seeds.d/76-job_templates.rb +3 -3
  70. data/lib/foreman_salt/engine.rb +24 -16
  71. data/lib/foreman_salt/extensions.rb +8 -8
  72. data/lib/foreman_salt/plugin.rb +120 -114
  73. data/lib/foreman_salt/version.rb +1 -1
  74. data/lib/foreman_salt.rb +1 -1
  75. data/lib/tasks/foreman_salt_tasks.rake +3 -5
  76. data/locale/action_names.rb +4 -4
  77. data/test/factories/foreman_salt_factories.rb +5 -5
  78. data/test/functional/api/v2/salt_autosign_controller_test.rb +26 -20
  79. data/test/functional/api/v2/salt_environments_controller_test.rb +29 -23
  80. data/test/functional/api/v2/salt_hostgroups_controller_test.rb +76 -0
  81. data/test/functional/api/v2/salt_keys_controller_test.rb +25 -19
  82. data/test/functional/api/v2/salt_states_controller_test.rb +72 -66
  83. data/test/functional/api/v2/salt_variables_controller_test.rb +4 -4
  84. data/test/functional/hosts_controller_test.rb +26 -26
  85. data/test/functional/minions_controller_test.rb +22 -22
  86. data/test/functional/salt_modules_controller_test.rb +3 -3
  87. data/test/functional/salt_variables_controller_test.rb +5 -5
  88. data/test/integration/hosts_js_test.rb +11 -11
  89. data/test/integration/salt_autosign_test.rb +5 -5
  90. data/test/integration/salt_environment_test.rb +2 -2
  91. data/test/integration/salt_keys_test.rb +7 -7
  92. data/test/integration/salt_module_test.rb +9 -9
  93. data/test/integration/salt_variable_test.rb +2 -2
  94. data/test/test_plugin_helper.rb +1 -1
  95. data/test/unit/grains_importer_test.rb +12 -12
  96. data/test/unit/host_extensions_test.rb +19 -19
  97. data/test/unit/hostgroup_extensions_test.rb +13 -13
  98. data/test/unit/report_importer_test.rb +9 -9
  99. data/test/unit/salt_keys_test.rb +2 -2
  100. data/test/unit/salt_modules_test.rb +2 -2
  101. data/test/unit/salt_variables_test.rb +10 -10
  102. metadata +22 -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: '083d09f673c4a240a307a4392a31ce92f1c17c7a11706f751caa13482059ebcb'
4
+ data.tar.gz: ffd19624c13fc45f5c68c280e0700c16d8ef0d60a9df88371e5b14f783d63212
5
5
  SHA512:
6
- metadata.gz: '08395ab98cb79f8dfc725268cfcb9dc8b11c015562625ea56f90315edaa9bcf1c76601d123481d57eed865212cc7212cfa36be6ea1506d8e59d1ac15afaa5f2b'
7
- data.tar.gz: f7a59b6f52e80340520a8ed4523e39727659612a737fb848c33731013684f09dcbe83e27c02c928a22614f18842120ce3d53908bc2ec4176a153bb69c2124527
6
+ metadata.gz: 2ed29a4e256bc28f857fc6c3597f6b25a1d828b44ee4e50f851dcf3928b21b9d2d6f13c93848e06ca630f55bf3f824ea33a71c2e641591ae28925e1f6b73aa26
7
+ data.tar.gz: ba3b5cefb64dd18a6c3817fd6abf8016ecbfa86111e52349ebd68676225a003093998265deea497f57c14000971c06c074224f55d646721384cabf2c22173740
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