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
@@ -15,13 +15,15 @@ if ForemanSalt.with_remote_execution?
15
15
  ForemanSalt.register_rex_feature
16
16
  end
17
17
  JobTemplate.without_auditing do
18
- Dir[File.join("#{ForemanSalt::Engine.root}/app/views/foreman_salt/"\
19
- 'job_templates/**/*.erb')].each do |template|
18
+ templates = Dir[File.join("#{ForemanSalt::Engine.root}/app/views/foreman_salt/"\
19
+ 'job_templates/**/*.erb')]
20
+ first = templates.select { |d| File.basename(d).start_with?('salt_run_function') }
21
+ (first + (templates - first)).each do |template|
20
22
  sync = !Rails.env.test? && Setting[:remote_execution_sync_templates]
21
23
  template = JobTemplate.import_raw!(File.read(template),
22
- :default => true,
23
- :lock => true,
24
- :update => sync)
24
+ default: true,
25
+ lock: true,
26
+ update: sync)
25
27
  template.organizations = organizations if template.present?
26
28
  template.locations = locations if template.present?
27
29
  end
@@ -12,18 +12,14 @@ module ForemanSalt
12
12
  config.autoload_paths += Dir["#{config.root}/app/services"]
13
13
  config.autoload_paths += Dir["#{config.root}/app/lib"]
14
14
 
15
- initializer 'foreman_salt.require_dynflow', :before => 'foreman_tasks.initialize_dynflow' do
16
- ForemanTasks.dynflow.require!
17
- end
15
+ config.paths['config/routes.rb'].unshift('config/api_routes.rb')
18
16
 
19
- initializer 'foreman_salt.load_default_settings', :before => :load_config_initializers do
20
- if (Setting.table_exists? rescue(false))
21
- require_dependency File.expand_path('../../../app/models/setting/salt.rb', __FILE__)
22
- end
17
+ initializer 'foreman_salt.require_dynflow', before: 'foreman_tasks.initialize_dynflow' do
18
+ ForemanTasks.dynflow.require!
23
19
  end
24
20
 
25
21
  initializer 'foreman_salt.register_gettext',
26
- :after => :load_config_initializers do
22
+ after: :load_config_initializers do
27
23
  locale_dir = File.join(File.expand_path('../..', __dir__), 'locale')
28
24
  locale_domain = 'foreman_salt'
29
25
 
@@ -37,16 +33,16 @@ module ForemanSalt
37
33
  end
38
34
 
39
35
  initializer 'foreman_salt.assets.precompile' do |app|
40
- app.config.assets.precompile += %w(foreman_salt/states.js)
36
+ app.config.assets.precompile += %w[foreman_salt/states.js]
41
37
  app.config.assets.precompile += %w[foreman_salt/Salt.png]
42
38
  end
43
39
 
44
- initializer 'foreman_salt.configure_assets', :group => :assets do
40
+ initializer 'foreman_salt.configure_assets', group: :assets do
45
41
  SETTINGS[:foreman_salt] = {
46
- :assets => {
47
- :precompile => ['foreman_salt/Salt.png',
48
- 'foreman_salt/states.js']
49
- }
42
+ assets: {
43
+ precompile: ['foreman_salt/Salt.png',
44
+ 'foreman_salt/states.js'],
45
+ },
50
46
  }
51
47
  end
52
48
 
@@ -54,7 +50,7 @@ module ForemanSalt
54
50
  Apipie.configuration.checksum_path += ['/salt/api/']
55
51
  end
56
52
 
57
- initializer 'foreman_salt.register_plugin', :before => :finisher_hook do
53
+ initializer 'foreman_salt.register_plugin', before: :finisher_hook do
58
54
  require 'foreman_salt/plugin'
59
55
  end
60
56
 
@@ -68,15 +64,17 @@ module ForemanSalt
68
64
 
69
65
  # check whether foreman_remote_execution to integrate is available in the system
70
66
  def self.with_remote_execution?
71
- RemoteExecutionFeature rescue false
67
+ RemoteExecutionFeature
68
+ rescue StandardError
69
+ false
72
70
  end
73
71
 
74
72
  def self.register_rex_feature
75
73
  options = {
76
- :description => N_("Run Salt state.highstate"),
77
- :host_action_button => true
74
+ description: N_('Run Salt state.highstate'),
75
+ host_action_button: true,
78
76
  }
79
77
 
80
- RemoteExecutionFeature.register(:foreman_salt_run_state_highstate, N_("Run Salt"), options)
78
+ RemoteExecutionFeature.register(:foreman_salt_run_state_highstate, N_('Run Salt'), options)
81
79
  end
82
80
  end
@@ -1,15 +1,15 @@
1
1
  begin
2
2
  # Helper Extensions
3
- ::HostsHelper.send :include, ForemanSalt::HostsHelperExtensions
4
- ::SmartProxiesHelper.send :include, ForemanSalt::SmartProxiesHelperExtensions
3
+ ::HostsHelper.include ForemanSalt::HostsHelperExtensions
4
+ ::SmartProxiesHelper.include ForemanSalt::SmartProxiesHelperExtensions
5
5
 
6
6
  # Model Extensions
7
- ::Host::Managed.send :include, ForemanSalt::Concerns::HostManagedExtensions
8
- ::Hostgroup.send :include, ForemanSalt::Concerns::HostgroupExtensions
7
+ ::Host::Managed.include ForemanSalt::Concerns::HostManagedExtensions
8
+ ::Hostgroup.include ForemanSalt::Concerns::HostgroupExtensions
9
9
 
10
10
  # Controller Extensions
11
- ::HostsController.send :include, ForemanSalt::Concerns::HostsControllerExtensions
12
- ::HostgroupsController.send :include, ForemanSalt::Concerns::HostgroupsControllerExtensions
13
- rescue => e
14
- puts "ForemanSalt: skipping engine hook (#{e})"
11
+ ::HostsController.include ForemanSalt::Concerns::HostsControllerExtensions
12
+ ::HostgroupsController.include ForemanSalt::Concerns::HostgroupsControllerExtensions
13
+ rescue StandardError => e
14
+ Rails.logger.error "ForemanSalt: skipping engine hook (#{e})"
15
15
  end
@@ -1,183 +1,199 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # rubocop:disable BlockLength
4
3
  Foreman::Plugin.register :foreman_salt do
5
4
  requires_foreman '>= 1.24'
6
5
 
6
+ settings do
7
+ category(:cfgmgmt, N_('Config Management')) do
8
+ setting('salt_namespace_pillars',
9
+ type: :boolean,
10
+ description: N_("Namespace Foreman pillars under 'foreman' key"),
11
+ default: false,
12
+ full_name: N_('Salt namespace pillars'))
13
+ end
14
+ end
15
+
7
16
  apipie_documented_controllers ["#{ForemanSalt::Engine.root}/app/controllers/foreman_salt/api/v2/*.rb"]
8
17
 
9
18
  # Menus
10
- divider :top_menu, :parent => :configure_menu, :caption => 'Salt'
19
+ divider :top_menu, parent: :configure_menu, caption: 'Salt'
11
20
  menu :top_menu, :salt_environments,
12
- :url_hash => { :controller => :'foreman_salt/salt_environments', :action => :index },
13
- :caption => 'Environments',
14
- :parent => :configure_menu
21
+ url_hash: { controller: :'foreman_salt/salt_environments', action: :index },
22
+ caption: 'Environments',
23
+ parent: :configure_menu
15
24
 
16
25
  menu :top_menu, :salt_modules,
17
- :url_hash => { :controller => :'foreman_salt/salt_modules', :action => :index },
18
- :caption => 'States',
19
- :parent => :configure_menu
26
+ url_hash: { controller: :'foreman_salt/salt_modules', action: :index },
27
+ caption: 'States',
28
+ parent: :configure_menu
20
29
 
21
30
  menu :top_menu, :salt_variables,
22
- :url_hash => { :controller => :'foreman_salt/salt_variables', :action => :index },
23
- :caption => N_('Variables'),
24
- :parent => :configure_menu
31
+ url_hash: { controller: :'foreman_salt/salt_variables', action: :index },
32
+ caption: N_('Variables'),
33
+ parent: :configure_menu
34
+
35
+ # Existing permissions
36
+ p = Foreman::AccessControl.permission(:edit_hostgroups)
37
+ p.actions << 'foreman_salt/api/v2/salt_hostgroups/update'
38
+ p.actions << 'hostgroups/salt_environment_selected'
25
39
 
40
+ p = Foreman::AccessControl.permission(:view_hostgroups)
41
+ p.actions << 'foreman_salt/api/v2/salt_hostgroups/show'
26
42
 
27
- # Permissions
43
+ # New permissions
28
44
  security_block :foreman_salt do
45
+ permission :auth_smart_proxies_salt_autosign,
46
+ { 'foreman_salt/api/v2/salt_autosign': [:auth] },
47
+ resource_type: 'SmartProxy'
48
+
29
49
  permission :destroy_smart_proxies_salt_autosign,
30
- { :'foreman_salt/salt_autosign' => [:destroy],
31
- :'foreman_salt/api/v2/salt_autosign' => [:destroy] },
32
- :resource_type => 'SmartProxy'
50
+ { 'foreman_salt/salt_autosign': [:destroy],
51
+ 'foreman_salt/api/v2/salt_autosign': [:destroy] },
52
+ resource_type: 'SmartProxy'
33
53
 
34
54
  permission :create_smart_proxies_salt_autosign,
35
- { :'foreman_salt/salt_autosign' => [:new, :create],
36
- :'foreman_salt/api/v2/salt_autosign' => [:create] },
37
- :resource_type => 'SmartProxy'
55
+ { 'foreman_salt/salt_autosign': %i[new create],
56
+ 'foreman_salt/api/v2/salt_autosign': [:create] },
57
+ resource_type: 'SmartProxy'
38
58
 
39
59
  permission :view_smart_proxies_salt_autosign,
40
- { :'foreman_salt/salt_autosign' => [:index],
41
- :'foreman_salt/api/v2/salt_autosign' => [:index] },
42
- :resource_type => 'SmartProxy'
60
+ { 'foreman_salt/salt_autosign': [:index],
61
+ 'foreman_salt/api/v2/salt_autosign': [:index] },
62
+ resource_type: 'SmartProxy'
43
63
 
44
64
  permission :create_salt_environments,
45
- { :'foreman_salt/salt_environments' => [:new, :create],
46
- :'foreman_salt/api/v2/salt_environments' => [:create] },
47
- :resource_type => 'ForemanSalt::SaltEnvironment'
65
+ { 'foreman_salt/salt_environments': %i[new create],
66
+ 'foreman_salt/api/v2/salt_environments': [:create] },
67
+ resource_type: 'ForemanSalt::SaltEnvironment'
48
68
 
49
69
  permission :view_salt_environments,
50
- { :'foreman_salt/salt_environments' => [:index, :show, :auto_complete_search],
51
- :'foreman_salt/api/v2/salt_environments' => [:index, :show] },
52
- :resource_type => 'ForemanSalt::SaltEnvironment'
70
+ { 'foreman_salt/salt_environments': %i[index show auto_complete_search],
71
+ 'foreman_salt/api/v2/salt_environments': %i[index show] },
72
+ resource_type: 'ForemanSalt::SaltEnvironment'
53
73
 
54
74
  permission :edit_salt_environments,
55
- { :'foreman_salt/salt_environments' => [:update, :edit] },
56
- :resource_type => 'ForemanSalt::SaltEnvironment'
75
+ { 'foreman_salt/salt_environments': %i[update edit] },
76
+ resource_type: 'ForemanSalt::SaltEnvironment'
57
77
 
58
78
  permission :destroy_salt_environments,
59
- { :'foreman_salt/salt_environments' => [:destroy],
60
- :'foreman_salt/api/v2/salt_environments' => [:destroy] },
61
- :resource_type => 'ForemanSalt::SaltEnvironment'
79
+ { 'foreman_salt/salt_environments': [:destroy],
80
+ 'foreman_salt/api/v2/salt_environments': [:destroy] },
81
+ resource_type: 'ForemanSalt::SaltEnvironment'
62
82
 
63
83
  permission :view_salt_variables,
64
- {
65
- :'foreman_salt/salt_variables' => [:index, :auto_complete_search],
66
- :'foreman_salt/api/v2/salt_variables' => [:index, :show]
67
- },
68
- :resource_type => 'ForemanSalt::SaltVariable'
84
+ { 'foreman_salt/salt_variables': %i[index auto_complete_search],
85
+ 'foreman_salt/api/v2/salt_variables': %i[index show],
86
+ 'lookup_values': [:index] },
87
+ resource_type: 'ForemanSalt::SaltVariable'
69
88
 
70
89
  permission :edit_salt_variables,
71
- { :'foreman_salt/salt_variables' => [:edit, :update],
72
- :'foreman_salt/api/v2/salt_variables' => [:update],
73
- :'foreman_salt/api/v2/salt_override_values' => [:create, :destroy] },
74
- :resource_type => 'ForemanSalt::SaltVariable'
90
+ { 'foreman_salt/salt_variables': %i[edit update],
91
+ 'foreman_salt/api/v2/salt_variables': [:update],
92
+ 'lookup_values': [:update] },
93
+ resource_type: 'ForemanSalt::SaltVariable'
75
94
 
76
95
  permission :destroy_salt_variables,
77
- {
78
- :'foreman_salt/salt_variables' => [:destroy],
79
- :'foreman_salt/api/v2/salt_variables' => [:destroy]
80
- },
81
- :resource_type => 'ForemanSalt::SaltVariable'
96
+ { 'foreman_salt/salt_variables': [:destroy],
97
+ 'foreman_salt/api/v2/salt_variables': [:destroy],
98
+ 'foreman_salt/api/v2/salt_override_values': [:destroy],
99
+ 'lookup_values': [:destroy] },
100
+ resource_type: 'ForemanSalt::SaltVariable'
82
101
 
83
102
  permission :create_salt_variables,
84
- {
85
- :'foreman_salt/salt_variables' => [:new, :create],
86
- :'foreman_salt/api/v2/salt_variables' => [:create]
87
- },
88
- :resource_type => 'ForemanSalt::SaltVariable'
103
+ { 'foreman_salt/salt_variables': %i[new create],
104
+ 'foreman_salt/api/v2/salt_variables': [:create],
105
+ 'foreman_salt/api/v2/salt_override_values': [:create],
106
+ 'lookup_values': [:create] },
107
+ resource_type: 'ForemanSalt::SaltVariable'
89
108
 
90
109
  permission :create_reports,
91
- { :'foreman_salt/api/v2/jobs' => [:upload] },
92
- :resource_type => 'Report'
110
+ { 'foreman_salt/api/v2/jobs': [:upload] },
111
+ resource_type: 'Report'
93
112
 
94
113
  permission :saltrun_hosts,
95
- { :'foreman_salt/minions' => [:run] },
96
- :resource_type => 'Host'
114
+ { 'foreman_salt/minions': [:run] },
115
+ resource_type: 'Host'
97
116
 
98
117
  permission :edit_hosts,
99
- { :'foreman_salt/api/v2/salt_minions' => [:update],
100
- :'foreman_salt/minions' => [:salt_environment_selected],
101
- :hosts => [:select_multiple_salt_master, :update_multiple_salt_master,
102
- :select_multiple_salt_environment, :update_multiple_salt_environment] },
103
- :resource_type => 'Host'
118
+ { 'foreman_salt/api/v2/salt_minions': [:update],
119
+ 'foreman_salt/minions': [:salt_environment_selected],
120
+ hosts: %i[select_multiple_salt_master update_multiple_salt_master
121
+ select_multiple_salt_environment update_multiple_salt_environment] },
122
+ resource_type: 'Host'
104
123
 
105
124
  permission :view_hosts,
106
- { :'foreman_salt/minions' => [:node],
107
- :'foreman_salt/api/v2/salt_minions' => [:index, :show] },
108
- :resource_type => 'Host'
109
-
110
- permission :edit_hostgroups,
111
- { :hostgroups => [:salt_environment_selected] },
112
- :resource_type => 'Hostgroup'
125
+ { 'foreman_salt/minions': [:node],
126
+ 'foreman_salt/api/v2/salt_minions': %i[index show] },
127
+ resource_type: 'Host'
113
128
 
114
129
  permission :view_smart_proxies_salt_keys,
115
- { :'foreman_salt/salt_keys' => [:index],
116
- :'foreman_salt/api/v2/salt_keys' => [:index] },
117
- :resource_type => 'SmartProxy'
130
+ { 'foreman_salt/salt_keys': [:index],
131
+ 'foreman_salt/api/v2/salt_keys': [:index] },
132
+ resource_type: 'SmartProxy'
118
133
 
119
134
  permission :destroy_smart_proxies_salt_keys,
120
- { :'foreman_salt/salt_keys' => [:destroy],
121
- :'foreman_salt/api/v2/salt_keys' => [:destroy] },
122
- :resource_type => 'SmartProxy'
135
+ { 'foreman_salt/salt_keys': [:destroy],
136
+ 'foreman_salt/api/v2/salt_keys': [:destroy] },
137
+ resource_type: 'SmartProxy'
123
138
 
124
139
  permission :edit_smart_proxies_salt_keys,
125
- { :'foreman_salt/salt_keys' => [:accept, :reject],
126
- :'foreman_salt/api/v2/salt_keys' => [:update] },
127
- :resource_type => 'SmartProxy'
140
+ { 'foreman_salt/salt_keys': %i[accept reject],
141
+ 'foreman_salt/api/v2/salt_keys': [:update] },
142
+ resource_type: 'SmartProxy'
128
143
 
129
144
  permission :create_salt_modules,
130
- { :'foreman_salt/salt_modules' => [:new, :create],
131
- :'foreman_salt/api/v2/salt_states' => [:create] },
132
- :resource_type => 'ForemanSalt::SaltModule'
145
+ { 'foreman_salt/salt_modules': %i[new create],
146
+ 'foreman_salt/api/v2/salt_states': [:create] },
147
+ resource_type: 'ForemanSalt::SaltModule'
133
148
 
134
149
  permission :import_salt_modules,
135
- { :'foreman_salt/salt_modules' => [:import, :apply_changes],
136
- :'foreman_salt/api/v2/salt_states' => [:import] },
137
- :resource_type => 'ForemanSalt::SaltModule'
150
+ { 'foreman_salt/salt_modules': %i[import apply_changes],
151
+ 'foreman_salt/api/v2/salt_states': [:import] },
152
+ resource_type: 'ForemanSalt::SaltModule'
138
153
 
139
154
  permission :view_salt_modules,
140
- { :'foreman_salt/salt_modules' => [:index, :show, :auto_complete_search],
141
- :'foreman_salt/api/v2/salt_states' => [:index, :show] },
142
- :resource_type => 'ForemanSalt::SaltModule'
155
+ { 'foreman_salt/salt_modules': %i[index show auto_complete_search],
156
+ 'foreman_salt/api/v2/salt_states': %i[index show] },
157
+ resource_type: 'ForemanSalt::SaltModule'
143
158
 
144
159
  permission :edit_salt_modules,
145
- { :'foreman_salt/salt_modules' => [:update, :edit] },
146
- :resource_type => 'ForemanSalt::SaltModule'
160
+ { 'foreman_salt/salt_modules': %i[update edit] },
161
+ resource_type: 'ForemanSalt::SaltModule'
147
162
 
148
163
  permission :destroy_salt_modules,
149
- { :'foreman_salt/salt_modules' => [:destroy],
150
- :'foreman_salt/api/v2/salt_states' => [:destroy] },
151
- :resource_type => 'ForemanSalt::SaltModule'
164
+ { 'foreman_salt/salt_modules': [:destroy],
165
+ 'foreman_salt/api/v2/salt_states': [:destroy] },
166
+ resource_type: 'ForemanSalt::SaltModule'
152
167
  end
153
168
 
154
169
  # Roles
155
- role 'Salt admin', [:saltrun_hosts,
156
- :create_salt_modules, :view_salt_modules,
157
- :edit_salt_modules, :destroy_salt_modules,
158
- :import_salt_modules,
159
- :view_smart_proxies_salt_keys,
160
- :edit_smart_proxies_salt_keys, :destroy_smart_proxies_salt_keys,
161
- :create_smart_proxies_salt_autosign, :view_smart_proxies_salt_autosign,
162
- :destroy_smart_proxies_salt_autosign,
163
- :create_salt_environments, :view_salt_environments,
164
- :edit_salt_environments, :destroy_salt_environments,
165
- :create_salt_variables, :view_salt_variables,
166
- :edit_salt_variables, :destroy_salt_variables]
167
-
168
- role 'Salt viewer', [:view_smart_proxies_salt_keys,
169
- :view_smart_proxies_salt_autosign,
170
- :view_salt_variables,
171
- :view_salt_environments,
172
- :view_salt_modules]
170
+ role 'Salt admin', %i[saltrun_hosts
171
+ create_salt_modules view_salt_modules
172
+ edit_salt_modules destroy_salt_modules
173
+ import_salt_modules
174
+ view_smart_proxies_salt_keys
175
+ edit_smart_proxies_salt_keys destroy_smart_proxies_salt_keys
176
+ create_smart_proxies_salt_autosign view_smart_proxies_salt_autosign
177
+ destroy_smart_proxies_salt_autosign auth_smart_proxies_salt_autosign
178
+ create_salt_environments view_salt_environments
179
+ edit_salt_environments destroy_salt_environments
180
+ create_salt_variables view_salt_variables
181
+ edit_salt_variables destroy_salt_variables
182
+ view_hostgroups edit_hostgroups]
183
+
184
+ role 'Salt viewer', %i[view_smart_proxies_salt_keys
185
+ view_smart_proxies_salt_autosign
186
+ view_salt_variables
187
+ view_salt_environments
188
+ view_salt_modules
189
+ view_hostgroups]
173
190
 
174
191
  # Parameter filters
175
192
  parameter_filter Hostgroup,
176
- :salt_proxy_id, :salt_proxy_name, :salt_environment_id,
177
- :salt_environment_name, :salt_modules => [], :salt_module_ids => []
193
+ :salt_proxy_id, :salt_proxy_name, :salt_environment_id,
194
+ :salt_environment_name, salt_modules: [], salt_module_ids: []
178
195
  parameter_filter Host::Managed,
179
- :salt_proxy_id, :salt_proxy_name,
180
- :salt_environment_id, :salt_environment_name, :salt_modules => [],
181
- :salt_module_ids => []
196
+ :salt_proxy_id, :salt_proxy_name,
197
+ :salt_environment_id, :salt_environment_name, salt_modules: [],
198
+ salt_module_ids: []
182
199
  end
183
- # rubocop:enable BlockLength
@@ -1,3 +1,3 @@
1
1
  module ForemanSalt
2
- VERSION = '14.0.0'
2
+ VERSION = '15.1.0'.freeze
3
3
  end
data/lib/foreman_salt.rb CHANGED
@@ -3,7 +3,7 @@ require 'foreman_salt/engine'
3
3
  begin
4
4
  require 'foreman-tasks'
5
5
  rescue LoadError
6
- puts 'ForemanTasks is not available, async tasks disabled.'
6
+ Rails.logger.error('ForemanSalt: ForemanTasks is not available, async tasks disabled.')
7
7
  end
8
8
 
9
9
  module ForemanSalt
@@ -1,5 +1,5 @@
1
1
  namespace :foreman_salt do
2
- task :rubocop do
2
+ task rubocop: :environment do
3
3
  begin
4
4
  require 'rubocop/rake_task'
5
5
  RuboCop::RakeTask.new(:rubocop_salt) do |task|
@@ -7,7 +7,7 @@ namespace :foreman_salt do
7
7
  "#{ForemanSalt::Engine.root}/lib/**/*.rb",
8
8
  "#{ForemanSalt::Engine.root}/test/**/*.rb"]
9
9
  end
10
- rescue
10
+ rescue StandardError
11
11
  puts 'Rubocop not loaded.'
12
12
  end
13
13
 
@@ -29,6 +29,4 @@ end
29
29
  Rake::Task[:test].enhance ['test:foreman_salt']
30
30
 
31
31
  load 'tasks/jenkins.rake'
32
- if Rake::Task.task_defined?(:'jenkins:unit')
33
- Rake::Task['jenkins:unit'].enhance ['test:foreman_salt', 'foreman_salt:rubocop']
34
- end
32
+ Rake::Task['jenkins:unit'].enhance ['test:foreman_salt', 'foreman_salt:rubocop'] if Rake::Task.task_defined?(:'jenkins:unit')
@@ -1,5 +1,5 @@
1
1
  # Autogenerated!
2
- _("Action with sub plans")
3
- _("Import facts")
4
- _("Import Puppet classes")
5
- _("Remote action:")
2
+ _('Action with sub plans')
3
+ _('Import facts')
4
+ _('Import Puppet classes')
5
+ _('Remote action:')
@@ -1,13 +1,13 @@
1
1
  FactoryBot.define do
2
- factory :salt_module, :class => 'ForemanSalt::SaltModule' do
2
+ factory :salt_module, class: 'ForemanSalt::SaltModule' do
3
3
  sequence(:name) { |n| "module#{n}" }
4
4
  end
5
5
 
6
- factory :salt_environment, :class => 'ForemanSalt::SaltEnvironment' do
6
+ factory :salt_environment, class: 'ForemanSalt::SaltEnvironment' do
7
7
  sequence(:name) { |n| "environment#{n}" }
8
8
  end
9
9
 
10
- factory :salt_variable, :class => 'ForemanSalt::SaltVariable' do
10
+ factory :salt_variable, class: 'ForemanSalt::SaltVariable' do
11
11
  sequence(:key) { |n| "salt_variable_#{n}" }
12
12
  sequence(:default_value) { |n| "default_value_#{n}" }
13
13
  salt_module
@@ -18,13 +18,13 @@ FactoryBot.modify do
18
18
  factory :hostgroup do
19
19
  trait :with_salt_modules do
20
20
  salt_environment { FactoryBot.build :salt_environment }
21
- salt_modules { FactoryBot.create_list :salt_module, 10, :salt_environments => [self.salt_environment] }
21
+ salt_modules { FactoryBot.create_list :salt_module, 10, salt_environments: [salt_environment] }
22
22
  end
23
23
  end
24
24
 
25
25
  factory :smart_proxy do
26
26
  trait :with_salt_feature do
27
- features { [::Feature.find_or_create_by(:name => 'Salt')] }
27
+ features { [::Feature.find_or_create_by(name: 'Salt')] }
28
28
  end
29
29
  end
30
30
  end
@@ -1,27 +1,33 @@
1
1
  require 'test_plugin_helper'
2
2
 
3
- class ::ForemanSalt::Api::V2::SaltAutosignControllerTest < ActionController::TestCase
4
- setup do
5
- @proxy = FactoryBot.create(:smart_proxy, :with_salt_feature)
6
- @host = FactoryBot.create(:host, :managed)
7
- @host.salt_proxy = @proxy
8
- ProxyAPI::Salt.any_instance.stubs(:autosign_list).returns((%w(foo bar baz)))
9
- end
3
+ module ForemanSalt
4
+ module Api
5
+ module V2
6
+ class SaltAutosignControllerTest < ActionController::TestCase
7
+ setup do
8
+ @proxy = FactoryBot.create(:smart_proxy, :with_salt_feature)
9
+ @host = FactoryBot.create(:host, :managed)
10
+ @host.salt_proxy = @proxy
11
+ ProxyAPI::Salt.any_instance.stubs(:autosign_list).returns(%w[foo bar baz])
12
+ end
10
13
 
11
- test 'should get index' do
12
- get :index, params: { :smart_proxy_id => @proxy.id }
13
- assert_response :success
14
- end
14
+ test 'should get index' do
15
+ get :index, params: { smart_proxy_id: @proxy.id }
16
+ assert_response :success
17
+ end
15
18
 
16
- test 'should create autosign' do
17
- ProxyAPI::Salt.any_instance.expects(:autosign_create).once.returns(true)
18
- post :create, params: { :smart_proxy_id => @proxy.id, :record => 'unicorn.example.com' }
19
- assert_response :success
20
- end
19
+ test 'should create autosign' do
20
+ ProxyAPI::Salt.any_instance.expects(:autosign_create).once.returns(true)
21
+ post :create, params: { smart_proxy_id: @proxy.id, record: 'unicorn.example.com' }
22
+ assert_response :success
23
+ end
21
24
 
22
- test 'should delete autosign' do
23
- ProxyAPI::Salt.any_instance.expects(:autosign_remove).once.returns(true)
24
- delete :destroy, params: { :smart_proxy_id => @proxy.id, :record => 'unicorn.example.com' }
25
- assert_response :success
25
+ test 'should delete autosign' do
26
+ ProxyAPI::Salt.any_instance.expects(:autosign_remove).once.returns(true)
27
+ delete :destroy, params: { smart_proxy_id: @proxy.id, record: 'unicorn.example.com' }
28
+ assert_response :success
29
+ end
30
+ end
31
+ end
26
32
  end
27
33
  end