foreman_salt 14.0.0 → 14.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 (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
@@ -12,18 +12,24 @@ 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
15
+ config.paths['config/routes.rb'].unshift('config/api_routes.rb')
16
+
17
+ initializer 'foreman_salt.require_dynflow', before: 'foreman_tasks.initialize_dynflow' do
16
18
  ForemanTasks.dynflow.require!
17
19
  end
18
20
 
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__)
21
+ initializer 'foreman_salt.load_default_settings', before: :load_config_initializers do
22
+ if begin
23
+ Setting.table_exists?
24
+ rescue StandardError
25
+ (false)
26
+ end
27
+ require_dependency File.expand_path('../../app/models/setting/salt.rb', __dir__)
22
28
  end
23
29
  end
24
30
 
25
31
  initializer 'foreman_salt.register_gettext',
26
- :after => :load_config_initializers do
32
+ after: :load_config_initializers do
27
33
  locale_dir = File.join(File.expand_path('../..', __dir__), 'locale')
28
34
  locale_domain = 'foreman_salt'
29
35
 
@@ -37,16 +43,16 @@ module ForemanSalt
37
43
  end
38
44
 
39
45
  initializer 'foreman_salt.assets.precompile' do |app|
40
- app.config.assets.precompile += %w(foreman_salt/states.js)
46
+ app.config.assets.precompile += %w[foreman_salt/states.js]
41
47
  app.config.assets.precompile += %w[foreman_salt/Salt.png]
42
48
  end
43
49
 
44
- initializer 'foreman_salt.configure_assets', :group => :assets do
50
+ initializer 'foreman_salt.configure_assets', group: :assets do
45
51
  SETTINGS[:foreman_salt] = {
46
- :assets => {
47
- :precompile => ['foreman_salt/Salt.png',
48
- 'foreman_salt/states.js']
49
- }
52
+ assets: {
53
+ precompile: ['foreman_salt/Salt.png',
54
+ 'foreman_salt/states.js'],
55
+ },
50
56
  }
51
57
  end
52
58
 
@@ -54,7 +60,7 @@ module ForemanSalt
54
60
  Apipie.configuration.checksum_path += ['/salt/api/']
55
61
  end
56
62
 
57
- initializer 'foreman_salt.register_plugin', :before => :finisher_hook do
63
+ initializer 'foreman_salt.register_plugin', before: :finisher_hook do
58
64
  require 'foreman_salt/plugin'
59
65
  end
60
66
 
@@ -68,15 +74,17 @@ module ForemanSalt
68
74
 
69
75
  # check whether foreman_remote_execution to integrate is available in the system
70
76
  def self.with_remote_execution?
71
- RemoteExecutionFeature rescue false
77
+ RemoteExecutionFeature
78
+ rescue StandardError
79
+ false
72
80
  end
73
81
 
74
82
  def self.register_rex_feature
75
83
  options = {
76
- :description => N_("Run Salt state.highstate"),
77
- :host_action_button => true
84
+ description: N_('Run Salt state.highstate'),
85
+ host_action_button: true,
78
86
  }
79
87
 
80
- RemoteExecutionFeature.register(:foreman_salt_run_state_highstate, N_("Run Salt"), options)
88
+ RemoteExecutionFeature.register(:foreman_salt_run_state_highstate, N_('Run Salt'), options)
81
89
  end
82
90
  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,189 @@
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
 
7
6
  apipie_documented_controllers ["#{ForemanSalt::Engine.root}/app/controllers/foreman_salt/api/v2/*.rb"]
8
7
 
9
8
  # Menus
10
- divider :top_menu, :parent => :configure_menu, :caption => 'Salt'
9
+ divider :top_menu, parent: :configure_menu, caption: 'Salt'
11
10
  menu :top_menu, :salt_environments,
12
- :url_hash => { :controller => :'foreman_salt/salt_environments', :action => :index },
13
- :caption => 'Environments',
14
- :parent => :configure_menu
11
+ url_hash: { controller: :'foreman_salt/salt_environments', action: :index },
12
+ caption: 'Environments',
13
+ parent: :configure_menu
15
14
 
16
15
  menu :top_menu, :salt_modules,
17
- :url_hash => { :controller => :'foreman_salt/salt_modules', :action => :index },
18
- :caption => 'States',
19
- :parent => :configure_menu
16
+ url_hash: { controller: :'foreman_salt/salt_modules', action: :index },
17
+ caption: 'States',
18
+ parent: :configure_menu
20
19
 
21
20
  menu :top_menu, :salt_variables,
22
- :url_hash => { :controller => :'foreman_salt/salt_variables', :action => :index },
23
- :caption => N_('Variables'),
24
- :parent => :configure_menu
21
+ url_hash: { controller: :'foreman_salt/salt_variables', action: :index },
22
+ caption: N_('Variables'),
23
+ parent: :configure_menu
25
24
 
25
+ # Existing permissions
26
+ p = Foreman::AccessControl.permission(:edit_hostgroups)
27
+ p.actions << 'foreman_salt/api/v2/salt_hostgroups/update'
28
+ p.actions << 'hostgroups/salt_environment_selected'
26
29
 
27
- # Permissions
30
+ p = Foreman::AccessControl.permission(:view_hostgroups)
31
+ p.actions << 'foreman_salt/api/v2/salt_hostgroups/show'
32
+
33
+ # New permissions
28
34
  security_block :foreman_salt do
35
+ permission :auth_smart_proxies_salt_autosign,
36
+ { 'foreman_salt/api/v2/salt_autosign': [:auth] },
37
+ resource_type: 'SmartProxy'
38
+
29
39
  permission :destroy_smart_proxies_salt_autosign,
30
- { :'foreman_salt/salt_autosign' => [:destroy],
31
- :'foreman_salt/api/v2/salt_autosign' => [:destroy] },
32
- :resource_type => 'SmartProxy'
40
+ { 'foreman_salt/salt_autosign': [:destroy],
41
+ 'foreman_salt/api/v2/salt_autosign': [:destroy] },
42
+ resource_type: 'SmartProxy'
33
43
 
34
44
  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'
45
+ { 'foreman_salt/salt_autosign': %i[new create],
46
+ 'foreman_salt/api/v2/salt_autosign': [:create] },
47
+ resource_type: 'SmartProxy'
38
48
 
39
49
  permission :view_smart_proxies_salt_autosign,
40
- { :'foreman_salt/salt_autosign' => [:index],
41
- :'foreman_salt/api/v2/salt_autosign' => [:index] },
42
- :resource_type => 'SmartProxy'
50
+ { 'foreman_salt/salt_autosign': [:index],
51
+ 'foreman_salt/api/v2/salt_autosign': [:index] },
52
+ resource_type: 'SmartProxy'
43
53
 
44
54
  permission :create_salt_environments,
45
- { :'foreman_salt/salt_environments' => [:new, :create],
46
- :'foreman_salt/api/v2/salt_environments' => [:create] },
47
- :resource_type => 'ForemanSalt::SaltEnvironment'
55
+ { 'foreman_salt/salt_environments': %i[new create],
56
+ 'foreman_salt/api/v2/salt_environments': [:create] },
57
+ resource_type: 'ForemanSalt::SaltEnvironment'
48
58
 
49
59
  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'
60
+ { 'foreman_salt/salt_environments': %i[index show auto_complete_search],
61
+ 'foreman_salt/api/v2/salt_environments': %i[index show] },
62
+ resource_type: 'ForemanSalt::SaltEnvironment'
53
63
 
54
64
  permission :edit_salt_environments,
55
- { :'foreman_salt/salt_environments' => [:update, :edit] },
56
- :resource_type => 'ForemanSalt::SaltEnvironment'
65
+ { 'foreman_salt/salt_environments': %i[update edit] },
66
+ resource_type: 'ForemanSalt::SaltEnvironment'
57
67
 
58
68
  permission :destroy_salt_environments,
59
- { :'foreman_salt/salt_environments' => [:destroy],
60
- :'foreman_salt/api/v2/salt_environments' => [:destroy] },
61
- :resource_type => 'ForemanSalt::SaltEnvironment'
69
+ { 'foreman_salt/salt_environments': [:destroy],
70
+ 'foreman_salt/api/v2/salt_environments': [:destroy] },
71
+ resource_type: 'ForemanSalt::SaltEnvironment'
62
72
 
63
73
  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'
74
+ { 'foreman_salt/salt_variables': %i[index auto_complete_search],
75
+ 'foreman_salt/api/v2/salt_variables': %i[index show],
76
+ 'lookup_values': [:index] },
77
+ resource_type: 'ForemanSalt::SaltVariable'
69
78
 
70
79
  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'
80
+ { 'foreman_salt/salt_variables': %i[edit update],
81
+ 'foreman_salt/api/v2/salt_variables': [:update],
82
+ 'lookup_values': [:update] },
83
+ resource_type: 'ForemanSalt::SaltVariable'
75
84
 
76
85
  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'
86
+ { 'foreman_salt/salt_variables': [:destroy],
87
+ 'foreman_salt/api/v2/salt_variables': [:destroy],
88
+ 'foreman_salt/api/v2/salt_override_values': [:destroy],
89
+ 'lookup_values': [:destroy] },
90
+ resource_type: 'ForemanSalt::SaltVariable'
82
91
 
83
92
  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'
93
+ { 'foreman_salt/salt_variables': %i[new create],
94
+ 'foreman_salt/api/v2/salt_variables': [:create],
95
+ 'foreman_salt/api/v2/salt_override_values': [:create],
96
+ 'lookup_values': [:create] },
97
+ resource_type: 'ForemanSalt::SaltVariable'
89
98
 
90
99
  permission :create_reports,
91
- { :'foreman_salt/api/v2/jobs' => [:upload] },
92
- :resource_type => 'Report'
100
+ { 'foreman_salt/api/v2/jobs': [:upload] },
101
+ resource_type: 'Report'
93
102
 
94
103
  permission :saltrun_hosts,
95
- { :'foreman_salt/minions' => [:run] },
96
- :resource_type => 'Host'
104
+ { 'foreman_salt/minions': [:run] },
105
+ resource_type: 'Host'
97
106
 
98
107
  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'
108
+ { 'foreman_salt/api/v2/salt_minions': [:update],
109
+ 'foreman_salt/minions': [:salt_environment_selected],
110
+ hosts: %i[select_multiple_salt_master update_multiple_salt_master
111
+ select_multiple_salt_environment update_multiple_salt_environment] },
112
+ resource_type: 'Host'
104
113
 
105
114
  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'
115
+ { 'foreman_salt/minions': [:node],
116
+ 'foreman_salt/api/v2/salt_minions': %i[index show] },
117
+ resource_type: 'Host'
113
118
 
114
119
  permission :view_smart_proxies_salt_keys,
115
- { :'foreman_salt/salt_keys' => [:index],
116
- :'foreman_salt/api/v2/salt_keys' => [:index] },
117
- :resource_type => 'SmartProxy'
120
+ { 'foreman_salt/salt_keys': [:index],
121
+ 'foreman_salt/api/v2/salt_keys': [:index] },
122
+ resource_type: 'SmartProxy'
118
123
 
119
124
  permission :destroy_smart_proxies_salt_keys,
120
- { :'foreman_salt/salt_keys' => [:destroy],
121
- :'foreman_salt/api/v2/salt_keys' => [:destroy] },
122
- :resource_type => 'SmartProxy'
125
+ { 'foreman_salt/salt_keys': [:destroy],
126
+ 'foreman_salt/api/v2/salt_keys': [:destroy] },
127
+ resource_type: 'SmartProxy'
123
128
 
124
129
  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'
130
+ { 'foreman_salt/salt_keys': %i[accept reject],
131
+ 'foreman_salt/api/v2/salt_keys': [:update] },
132
+ resource_type: 'SmartProxy'
128
133
 
129
134
  permission :create_salt_modules,
130
- { :'foreman_salt/salt_modules' => [:new, :create],
131
- :'foreman_salt/api/v2/salt_states' => [:create] },
132
- :resource_type => 'ForemanSalt::SaltModule'
135
+ { 'foreman_salt/salt_modules': %i[new create],
136
+ 'foreman_salt/api/v2/salt_states': [:create] },
137
+ resource_type: 'ForemanSalt::SaltModule'
133
138
 
134
139
  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'
140
+ { 'foreman_salt/salt_modules': %i[import apply_changes],
141
+ 'foreman_salt/api/v2/salt_states': [:import] },
142
+ resource_type: 'ForemanSalt::SaltModule'
138
143
 
139
144
  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'
145
+ { 'foreman_salt/salt_modules': %i[index show auto_complete_search],
146
+ 'foreman_salt/api/v2/salt_states': %i[index show] },
147
+ resource_type: 'ForemanSalt::SaltModule'
143
148
 
144
149
  permission :edit_salt_modules,
145
- { :'foreman_salt/salt_modules' => [:update, :edit] },
146
- :resource_type => 'ForemanSalt::SaltModule'
150
+ { 'foreman_salt/salt_modules': %i[update edit] },
151
+ resource_type: 'ForemanSalt::SaltModule'
147
152
 
148
153
  permission :destroy_salt_modules,
149
- { :'foreman_salt/salt_modules' => [:destroy],
150
- :'foreman_salt/api/v2/salt_states' => [:destroy] },
151
- :resource_type => 'ForemanSalt::SaltModule'
154
+ { 'foreman_salt/salt_modules': [:destroy],
155
+ 'foreman_salt/api/v2/salt_states': [:destroy] },
156
+ resource_type: 'ForemanSalt::SaltModule'
152
157
  end
153
158
 
154
159
  # 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]
160
+ role 'Salt admin', %i[saltrun_hosts
161
+ create_salt_modules view_salt_modules
162
+ edit_salt_modules destroy_salt_modules
163
+ import_salt_modules
164
+ view_smart_proxies_salt_keys
165
+ edit_smart_proxies_salt_keys destroy_smart_proxies_salt_keys
166
+ create_smart_proxies_salt_autosign view_smart_proxies_salt_autosign
167
+ destroy_smart_proxies_salt_autosign auth_smart_proxies_salt_autosign
168
+ create_salt_environments view_salt_environments
169
+ edit_salt_environments destroy_salt_environments
170
+ create_salt_variables view_salt_variables
171
+ edit_salt_variables destroy_salt_variables
172
+ view_hostgroups edit_hostgroups]
173
+
174
+ role 'Salt viewer', %i[view_smart_proxies_salt_keys
175
+ view_smart_proxies_salt_autosign
176
+ view_salt_variables
177
+ view_salt_environments
178
+ view_salt_modules
179
+ view_hostgroups]
173
180
 
174
181
  # Parameter filters
175
182
  parameter_filter Hostgroup,
176
- :salt_proxy_id, :salt_proxy_name, :salt_environment_id,
177
- :salt_environment_name, :salt_modules => [], :salt_module_ids => []
183
+ :salt_proxy_id, :salt_proxy_name, :salt_environment_id,
184
+ :salt_environment_name, salt_modules: [], salt_module_ids: []
178
185
  parameter_filter Host::Managed,
179
- :salt_proxy_id, :salt_proxy_name,
180
- :salt_environment_id, :salt_environment_name, :salt_modules => [],
181
- :salt_module_ids => []
186
+ :salt_proxy_id, :salt_proxy_name,
187
+ :salt_environment_id, :salt_environment_name, salt_modules: [],
188
+ salt_module_ids: []
182
189
  end
183
- # rubocop:enable BlockLength
@@ -1,3 +1,3 @@
1
1
  module ForemanSalt
2
- VERSION = '14.0.0'
2
+ VERSION = '14.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
@@ -1,31 +1,37 @@
1
1
  require 'test_plugin_helper'
2
2
 
3
- class ::ForemanSalt::Api::V2::SaltEnvironmentsControllerTest < ActionController::TestCase
4
- test 'should get index' do
5
- get :index
6
- assert_response :success
7
- assert_template 'api/v2/salt_environments/index'
8
- end
3
+ module ForemanSalt
4
+ module Api
5
+ module V2
6
+ class SaltEnvironmentsControllerTest < ActionController::TestCase
7
+ test 'should get index' do
8
+ get :index
9
+ assert_response :success
10
+ assert_template 'api/v2/salt_environments/index'
11
+ end
9
12
 
10
- test 'should show environment' do
11
- environment = ForemanSalt::SaltEnvironment.create(:name => 'foo')
12
- get :show, params: { :id => environment.id }
13
- assert_response :success
14
- assert_template 'api/v2/salt_environments/show'
15
- end
13
+ test 'should show environment' do
14
+ environment = ForemanSalt::SaltEnvironment.create(name: 'foo')
15
+ get :show, params: { id: environment.id }
16
+ assert_response :success
17
+ assert_template 'api/v2/salt_environments/show'
18
+ end
16
19
 
17
- test 'should create environment' do
18
- post :create, params: { :environment => { :name => 'unicorn' } }
19
- assert_response :success
20
- assert ForemanSalt::SaltEnvironment.find_by_name('unicorn')
21
- assert_template 'api/v2/salt_environments/create'
22
- end
20
+ test 'should create environment' do
21
+ post :create, params: { environment: { name: 'unicorn' } }
22
+ assert_response :success
23
+ assert ForemanSalt::SaltEnvironment.find_by(name: 'unicorn')
24
+ assert_template 'api/v2/salt_environments/create'
25
+ end
23
26
 
24
- test 'should delete environment' do
25
- environment = ForemanSalt::SaltEnvironment.create(:name => 'foo.bar.baz')
26
- assert_difference('ForemanSalt::SaltEnvironment.count', -1) do
27
- delete :destroy, params: { :id => environment.id }
27
+ test 'should delete environment' do
28
+ environment = ForemanSalt::SaltEnvironment.create(name: 'foo.bar.baz')
29
+ assert_difference('ForemanSalt::SaltEnvironment.count', -1) do
30
+ delete :destroy, params: { id: environment.id }
31
+ end
32
+ assert_response :success
33
+ end
34
+ end
28
35
  end
29
- assert_response :success
30
36
  end
31
37
  end