foreman_salt 14.0.0 → 15.1.0

Sign up to get free protection for your applications and to get access to all the features.
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