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
@@ -1,11 +1,10 @@
1
1
  module ForemanSalt
2
- # rubocop:disable ClassLength
3
2
  class ReportImporter
4
- delegate :logger, :to => :Rails
3
+ delegate :logger, to: :Rails
5
4
  attr_reader :report
6
5
 
7
6
  def self.import(raw, proxy_id = nil)
8
- fail ::Foreman::Exception.new(_('Invalid report')) unless raw.is_a?(Hash)
7
+ raise ::Foreman::Exception, _('Invalid report') unless raw.is_a?(Hash)
9
8
 
10
9
  raw.map do |host, report|
11
10
  importer = ForemanSalt::ReportImporter.new(host, report, proxy_id)
@@ -41,9 +40,9 @@ module ForemanSalt
41
40
  process_normal
42
41
  end
43
42
 
44
- @host.save(:validate => false)
43
+ @host.save(validate: false)
45
44
  @host.reload
46
- @host.refresh_statuses([HostStatus.find_status_by_humanized_name("configuration")])
45
+ @host.refresh_statuses([HostStatus.find_status_by_humanized_name('configuration')])
47
46
 
48
47
  logger.info("Imported report for #{@host} in #{(Time.zone.now - start_time).round(2)} seconds")
49
48
  end
@@ -51,11 +50,11 @@ module ForemanSalt
51
50
  private
52
51
 
53
52
  def find_or_create_host(host)
54
- @host ||= Host::Managed.find_by_name(host)
53
+ @host ||= Host::Managed.find_by(name: host)
55
54
 
56
55
  unless @host
57
- new = Host::Managed.new(:name => host)
58
- new.save(:validate => false)
56
+ new = Host::Managed.new(name: host)
57
+ new.save(validate: false)
59
58
  @host = new
60
59
  end
61
60
 
@@ -73,11 +72,11 @@ module ForemanSalt
73
72
  :notice
74
73
  end
75
74
 
76
- source = Source.find_or_create(resource)
75
+ source = Source.find_or_create_by(value: resource)
77
76
 
78
77
  message = if result['changes']['diff']
79
78
  result['changes']['diff']
80
- elsif !result['pchanges'].blank? && result['pchanges'].include?('diff')
79
+ elsif result['pchanges'].present? && result['pchanges'].include?('diff')
81
80
  result['pchanges']['diff']
82
81
  elsif result['comment'].presence
83
82
  result['comment']
@@ -85,12 +84,11 @@ module ForemanSalt
85
84
  'No message available'
86
85
  end
87
86
 
88
- message = Message.find_or_create(message)
89
- Log.create(:message_id => message.id, :source_id => source.id, :report => @report, :level => level)
87
+ message = Message.find_or_create_by(value: message)
88
+ Log.create(message_id: message.id, source_id: source.id, report: @report, level: level)
90
89
  end
91
90
  end
92
91
 
93
- # rubocop:disable Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity,Metrics/AbcSize,Metrics/MethodLength
94
92
  def calculate_metrics
95
93
  success = 0
96
94
  failed = 0
@@ -108,13 +106,13 @@ module ForemanSalt
108
106
  success += 1
109
107
  if resource.match(/^service_/) && result['comment'].include?('restarted')
110
108
  restarted += 1
111
- elsif !result['changes'].blank?
109
+ elsif result['changes'].present?
112
110
  changed += 1
113
- elsif !result['pchanges'].blank?
111
+ elsif result['pchanges'].present?
114
112
  pending += 1
115
113
  end
116
114
  elsif result['result'].nil?
117
- pending += 1
115
+ pending += 1
118
116
  elsif !result['result']
119
117
  if resource.match(/^service_/) && result['comment'].include?('restarted')
120
118
  restarted_failed += 1
@@ -124,7 +122,11 @@ module ForemanSalt
124
122
  end
125
123
 
126
124
  duration = if result['duration'].is_a? String
127
- Float(result['duration'].delete(' ms')) rescue nil
125
+ begin
126
+ Float(result['duration'].delete(' ms'))
127
+ rescue StandardError
128
+ nil
129
+ end
128
130
  else
129
131
  result['duration']
130
132
  end
@@ -134,36 +136,35 @@ module ForemanSalt
134
136
  time[resource] = duration || 0
135
137
  end
136
138
 
137
- time[:total] = time.values.compact.inject(&:+) || 0
138
- events = { :total => changed + failed + restarted + restarted_failed, :success => success + restarted, :failure => failed + restarted_failed }
139
+ time[:total] = time.values.compact.sum || 0
140
+ events = { total: changed + failed + restarted + restarted_failed, success: success + restarted, failure: failed + restarted_failed }
139
141
 
140
- changes = { :total => changed + restarted }
142
+ changes = { total: changed + restarted }
141
143
 
142
144
  resources = { 'total' => @raw.size, 'applied' => changed, 'restarted' => restarted, 'failed' => failed,
143
145
  'failed_restarts' => restarted_failed, 'skipped' => 0, 'scheduled' => 0, 'pending' => pending }
144
146
 
145
- { :events => events, :resources => resources, :changes => changes, :time => time }
147
+ { events: events, resources: resources, changes: changes, time: time }
146
148
  end
147
- # rubocop:enable Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity,Metrics/AbcSize,Metrics/MethodLength
148
149
 
149
150
  def process_normal
150
151
  metrics = calculate_metrics
151
- status = ConfigReportStatusCalculator.new(:counters => metrics[:resources].slice(*::ConfigReport::METRIC)).calculate
152
+ status = ConfigReportStatusCalculator.new(counters: metrics[:resources].slice(*::ConfigReport::METRIC)).calculate
152
153
 
153
- @report = ConfigReport.new(:host => @host, :reported_at => start_time, :status => status, :metrics => metrics)
154
+ @report = ConfigReport.new(host: @host, reported_at: start_time, status: status, metrics: metrics)
154
155
  return @report unless @report.save
155
156
 
156
157
  import_log_messages
157
158
  end
158
159
 
159
160
  def process_failures
160
- status = ConfigReportStatusCalculator.new(:counters => { 'failed' => @raw.size }).calculate
161
- @report = ConfigReport.create(:host => @host, :reported_at => Time.zone.now, :status => status, :metrics => {})
161
+ status = ConfigReportStatusCalculator.new(counters: { 'failed' => @raw.size }).calculate
162
+ @report = ConfigReport.create(host: @host, reported_at: Time.zone.now, status: status, metrics: {})
162
163
 
163
- source = Source.find_or_create('Salt')
164
+ source = Source.find_or_create_by(value: 'Salt')
164
165
  @raw.each do |failure|
165
- message = Message.find_or_create(failure)
166
- Log.create(:message_id => message.id, :source_id => source.id, :report => @report, :level => :err)
166
+ message = Message.find_or_create_by(value: failure)
167
+ Log.create(message_id: message.id, source_id: source.id, report: @report, level: :err)
167
168
  end
168
169
  end
169
170
 
@@ -171,5 +172,4 @@ module ForemanSalt
171
172
  @start_time ||= Time.zone.now
172
173
  end
173
174
  end
174
- # rubocop:enable ClassLength
175
175
  end
@@ -1,63 +1,65 @@
1
1
  module ForemanSalt
2
- class SmartProxies::SaltKeys
3
- attr_reader :name, :state, :fingerprint, :smart_proxy_id
2
+ module SmartProxies
3
+ class SaltKeys
4
+ attr_reader :name, :state, :fingerprint, :smart_proxy_id
4
5
 
5
- def initialize(opts)
6
- @name, @state, @fingerprint, @smart_proxy_id = opts.flatten
7
- end
6
+ def initialize(opts)
7
+ @name, @state, @fingerprint, @smart_proxy_id = opts.flatten
8
+ end
8
9
 
9
- class << self
10
- def all(proxy)
11
- fail ::Foreman::Exception.new(N_('Must specify a Smart Proxy to use')) if proxy.nil?
10
+ class << self
11
+ def all(proxy)
12
+ raise ::Foreman::Exception, N_('Must specify a Smart Proxy to use') if proxy.nil?
12
13
 
13
- unless (keys = Rails.cache.read("saltkeys_#{proxy.id}"))
14
- api = ProxyAPI::Salt.new(:url => proxy.url)
15
- keys = api.key_list.map do |name, properties|
16
- new([name.strip, properties['state'], properties['fingerprint'], proxy.id])
17
- end.compact
14
+ unless (keys = Rails.cache.read("saltkeys_#{proxy.id}"))
15
+ api = ProxyAPI::Salt.new(url: proxy.url)
16
+ keys = api.key_list.map do |name, properties|
17
+ new([name.strip, properties['state'], properties['fingerprint'], proxy.id])
18
+ end.compact
18
19
 
19
- Rails.cache.write("saltkeys_#{proxy.id}", keys, :expires_in => 1.minute) if Rails.env.production?
20
+ Rails.cache.write("saltkeys_#{proxy.id}", keys, expires_in: 1.minute) if Rails.env.production?
21
+ end
22
+ keys
20
23
  end
21
- keys
22
- end
23
24
 
24
- def find(proxy, name)
25
- all(proxy).find { |c| c.name == name }
26
- end
25
+ def find(proxy, name)
26
+ all(proxy).find { |c| c.name == name }
27
+ end
27
28
 
28
- def find_by_state(proxy, state)
29
- all(proxy).select { |c| c.state == state }
29
+ def find_by_state(proxy, state)
30
+ all(proxy).select { |c| c.state == state }
31
+ end
30
32
  end
31
- end
32
33
 
33
- def accept
34
- proxy = SmartProxy.find(smart_proxy_id)
35
- Rails.cache.delete("saltkeys_#{proxy.id}") if Rails.env.production?
36
- ProxyAPI::Salt.new(:url => proxy.url).key_accept name
37
- end
34
+ def accept
35
+ proxy = SmartProxy.find(smart_proxy_id)
36
+ Rails.cache.delete("saltkeys_#{proxy.id}") if Rails.env.production?
37
+ ProxyAPI::Salt.new(url: proxy.url).key_accept name
38
+ end
38
39
 
39
- def reject
40
- proxy = SmartProxy.find(smart_proxy_id)
41
- Rails.cache.delete("saltkeys_#{proxy.id}") if Rails.env.production?
42
- ProxyAPI::Salt.new(:url => proxy.url).key_reject name
43
- end
40
+ def reject
41
+ proxy = SmartProxy.find(smart_proxy_id)
42
+ Rails.cache.delete("saltkeys_#{proxy.id}") if Rails.env.production?
43
+ ProxyAPI::Salt.new(url: proxy.url).key_reject name
44
+ end
44
45
 
45
- def delete
46
- proxy = SmartProxy.find(smart_proxy_id)
47
- Rails.cache.delete("saltkeys_#{proxy.id}") if Rails.env.production?
48
- ProxyAPI::Salt.new(:url => proxy.url).key_delete name
49
- end
46
+ def delete
47
+ proxy = SmartProxy.find(smart_proxy_id)
48
+ Rails.cache.delete("saltkeys_#{proxy.id}") if Rails.env.production?
49
+ ProxyAPI::Salt.new(url: proxy.url).key_delete name
50
+ end
50
51
 
51
- def to_param
52
- name
53
- end
52
+ def to_param
53
+ name
54
+ end
54
55
 
55
- def to_s
56
- name
57
- end
56
+ def to_s
57
+ name
58
+ end
58
59
 
59
- def <=>(other)
60
- name <=> other.name
60
+ def <=>(other)
61
+ name <=> other.name
62
+ end
61
63
  end
62
64
  end
63
65
  end
@@ -1,3 +1,3 @@
1
1
  object @salt_autosign
2
2
 
3
- extends "foreman_salt/api/v2/salt_autosign/main"
3
+ extends 'foreman_salt/api/v2/salt_autosign/main'
@@ -1,3 +1,3 @@
1
1
  object @salt_environment
2
2
 
3
- extends "foreman_salt/api/v2/salt_environments/main"
3
+ extends 'foreman_salt/api/v2/salt_environments/main'
@@ -2,6 +2,6 @@ object @salt_environment
2
2
 
3
3
  extends 'foreman_salt/api/v2/salt_environments/base'
4
4
 
5
- child :salt_modules => :salt_states do
5
+ child salt_modules: :salt_states do
6
6
  extends 'foreman_salt/api/v2/salt_states/base'
7
7
  end
@@ -0,0 +1,7 @@
1
+ object @salt_hostgroup
2
+
3
+ attributes :id, :name, :salt_master, :salt_environment
4
+
5
+ child salt_modules: :salt_states do
6
+ extends 'foreman_salt/api/v2/salt_states/base'
7
+ end
@@ -0,0 +1,3 @@
1
+ object @salt_hostgroup
2
+
3
+ extends 'foreman_salt/api/v2/salt_hostgroups/base'
@@ -0,0 +1,3 @@
1
+ object @salt_hostgroup
2
+
3
+ extends 'foreman_salt/api/v2/salt_hostgroups/base'
@@ -1,3 +1,3 @@
1
1
  object @salt_key
2
2
 
3
- extends "foreman_salt/api/v2/salt_keys/main"
3
+ extends 'foreman_salt/api/v2/salt_keys/main'
@@ -1,8 +1,7 @@
1
1
  object @salt_minion
2
2
 
3
- extends "foreman_salt/api/v2/salt_minions/main"
3
+ extends 'foreman_salt/api/v2/salt_minions/main'
4
4
 
5
- child :salt_modules => :salt_states do
6
- extends "foreman_salt/api/v2/salt_states/base"
5
+ child salt_modules: :salt_states do
6
+ extends 'foreman_salt/api/v2/salt_states/base'
7
7
  end
8
-
@@ -1,3 +1,3 @@
1
1
  object @salt_state
2
2
 
3
- extends "foreman_salt/api/v2/salt_states/main"
3
+ extends 'foreman_salt/api/v2/salt_states/main'
@@ -9,4 +9,3 @@ end
9
9
  child :salt_environments do
10
10
  extends 'foreman_salt/api/v2/salt_environments/base'
11
11
  end
12
-
@@ -1,3 +1,3 @@
1
1
  object @salt_variable
2
2
 
3
- extends "foreman_salt/api/v2/salt_variables/show"
3
+ extends 'foreman_salt/api/v2/salt_variables/show'
@@ -1,3 +1,3 @@
1
1
  object @salt_variable
2
2
 
3
- extends "foreman_salt/api/v2/salt_variables/show"
3
+ extends 'foreman_salt/api/v2/salt_variables/show'
@@ -2,17 +2,17 @@ object @salt_variable
2
2
 
3
3
  attribute :parameter
4
4
  attributes :id, :variable, :salt_state, :salt_state_id, :description, :override,
5
- :variable_type, :hidden_value?, :validator_type,
6
- :validator_rule, :merge_overrides, :merge_default,
7
- :avoid_duplicates, :override_value_order, :created_at, :updated_at,
8
- :default_value
5
+ :variable_type, :hidden_value?, :validator_type,
6
+ :validator_rule, :merge_overrides, :merge_default,
7
+ :avoid_duplicates, :override_value_order, :created_at, :updated_at,
8
+ :default_value
9
9
 
10
10
  node do |salt_variable|
11
11
  {
12
- :override_values => partial(
13
- 'api/v2/override_values/index',
14
- :object => salt_variable.lookup_values
15
- )
12
+ override_values: partial(
13
+ 'api/v2/override_values/main',
14
+ object: salt_variable.lookup_values
15
+ ),
16
16
  }
17
17
  end
18
18
 
@@ -17,5 +17,4 @@
17
17
  <% end %>
18
18
  </table>
19
19
 
20
- <%= page_entries_info @autosign %>
21
- <%= will_paginate @autosign %>
20
+ <%= will_paginate_with_info @autosign %>
@@ -24,6 +24,4 @@
24
24
  <% end %>
25
25
  </table>
26
26
 
27
- <%= page_entries_info @salt_environments %>
28
- <%= will_paginate @salt_environments %>
29
-
27
+ <%= will_paginate_with_info @salt_environments %>
@@ -29,6 +29,4 @@
29
29
  <% end %>
30
30
  </table>
31
31
 
32
- <%= page_entries_info @keys %>
33
- <%= will_paginate @keys %>
34
-
32
+ <%= will_paginate_with_info @keys %>
@@ -39,5 +39,4 @@
39
39
  <% end %>
40
40
  </table>
41
41
 
42
- <%= page_entries_info @salt_modules %>
43
- <%= will_paginate @salt_modules %>
42
+ <%= will_paginate_with_info @salt_modules %>
@@ -0,0 +1,31 @@
1
+ Rails.application.routes.draw do
2
+ scope :salt, path: '/salt' do
3
+ namespace :api, defaults: { format: 'json' } do
4
+ scope '(:apiv)', module: :v2, defaults: { apiv: 'v2' }, apiv: /v1|v2/, constraints: ApiConstraints.new(version: 2, default: true) do
5
+ match '/jobs/upload' => '/foreman_salt/api/v2/jobs#upload', :via => :post
6
+ match '/salt_autosign_auth' => '/foreman_salt/api/v2/salt_autosign#auth', :via => :put
7
+
8
+ constraints(smart_proxy_id: /[\w.-]+/, name: /[\w.-]+/, record: %r{[^/]+}) do
9
+ match '/salt_keys/:smart_proxy_id' => '/foreman_salt/api/v2/salt_keys#index', :via => :get
10
+ match '/salt_keys/:smart_proxy_id/:name' => '/foreman_salt/api/v2/salt_keys#update', :via => :put
11
+ match '/salt_keys/:smart_proxy_id/:name' => '/foreman_salt/api/v2/salt_keys#destroy', :via => :delete
12
+
13
+ match '/salt_autosign/:smart_proxy_id' => '/foreman_salt/api/v2/salt_autosign#index', :via => :get
14
+ match '/salt_autosign/:smart_proxy_id' => '/foreman_salt/api/v2/salt_autosign#create', :via => :post
15
+ match '/salt_autosign/:smart_proxy_id/:record' => '/foreman_salt/api/v2/salt_autosign#destroy', :via => :delete
16
+
17
+ match '/salt_states/import/:smart_proxy_id' => '/foreman_salt/api/v2/salt_states#import', :via => :post
18
+ end
19
+
20
+ constraints(id: /[\w.-]+/) do
21
+ resources :salt_environments, only: %i[show index create destroy], controller: '/foreman_salt/api/v2/salt_environments'
22
+ resources :salt_minions, only: %i[show index update], controller: '/foreman_salt/api/v2/salt_minions'
23
+ resources :salt_states, only: %i[show index create destroy], controller: '/foreman_salt/api/v2/salt_states'
24
+ resources :hostgroups, only: %i[show update], controller: '/foreman_salt/api/v2/salt_hostgroups'
25
+ end
26
+
27
+ resources :salt_variables, only: %i[show index destroy update create], controller: '/foreman_salt/api/v2/salt_variables'
28
+ end
29
+ end
30
+ end
31
+ end
data/config/routes.rb CHANGED
@@ -1,25 +1,25 @@
1
1
  Rails.application.routes.draw do
2
- scope :salt, :path => '/salt' do
3
- constraints(:id => /[\w\.-]+/) do
4
- match '/node/:id' => 'foreman_salt/minions#node', :via => :get
5
- match '/run/:id' => 'foreman_salt/minions#run', :via => :get
2
+ scope :salt, path: '/salt' do
3
+ constraints(id: /[\w.-]+/) do
4
+ get '/node/:id' => 'foreman_salt/minions#node'
5
+ get '/run/:id' => 'foreman_salt/minions#run'
6
6
  end
7
7
 
8
- resources :minions, :controller => 'foreman_salt/minions', :only => [] do
8
+ resources :minions, controller: 'foreman_salt/minions', only: [] do
9
9
  collection do
10
- constraints(:id => /[^\/]+/) do
10
+ constraints(id: %r{[^/]+}) do
11
11
  put 'salt_environment_selected'
12
12
  end
13
13
  end
14
14
  end
15
15
 
16
- resources :salt_environments, :controller => 'foreman_salt/salt_environments' do
16
+ resources :salt_environments, controller: 'foreman_salt/salt_environments' do
17
17
  collection do
18
18
  get 'auto_complete_search'
19
19
  end
20
20
  end
21
21
 
22
- resources :salt_modules, :controller => 'foreman_salt/salt_modules' do
22
+ resources :salt_modules, controller: 'foreman_salt/salt_modules' do
23
23
  collection do
24
24
  get 'import'
25
25
  get 'auto_complete_search'
@@ -27,43 +27,15 @@ Rails.application.routes.draw do
27
27
  end
28
28
  end
29
29
 
30
- resources :salt_variables, :controller => 'foreman_salt/salt_variables', :except => [:show] do
31
- resources :lookup_values, :only => [:index, :create, :update, :destroy]
30
+ resources :salt_variables, controller: 'foreman_salt/salt_variables', except: [:show] do
31
+ resources :lookup_values, only: %i[index create update destroy]
32
32
  collection do
33
33
  get 'auto_complete_search'
34
34
  end
35
35
  end
36
-
37
- scope :api, :path => '/api', :defaults => { :format => 'json' } do
38
- scope '(:apiv)', :defaults => { :apiv => 'v2' },
39
- :apiv => /v1|v2/, :constraints => ApiConstraints.new(:version => 2) do
40
- match '/jobs/upload' => 'foreman_salt/api/v2/jobs#upload', :via => :post
41
- match '/salt_autosign_auth' => 'foreman_salt/api/v2/salt_autosign#auth', :via => :put
42
-
43
- constraints(:smart_proxy_id => /[\w\.-]+/, :name => /[\w\.-]+/, :record => /[^\/]+/) do
44
- match '/salt_keys/:smart_proxy_id' => 'foreman_salt/api/v2/salt_keys#index', :via => :get
45
- match '/salt_keys/:smart_proxy_id/:name' => 'foreman_salt/api/v2/salt_keys#update', :via => :put
46
- match '/salt_keys/:smart_proxy_id/:name' => 'foreman_salt/api/v2/salt_keys#destroy', :via => :delete
47
-
48
- match '/salt_autosign/:smart_proxy_id' => 'foreman_salt/api/v2/salt_autosign#index', :via => :get
49
- match '/salt_autosign/:smart_proxy_id' => 'foreman_salt/api/v2/salt_autosign#create', :via => :post
50
- match '/salt_autosign/:smart_proxy_id/:record' => 'foreman_salt/api/v2/salt_autosign#destroy', :via => :delete
51
-
52
- match '/salt_states/import/:smart_proxy_id' => 'foreman_salt/api/v2/salt_states#import', :via => :post
53
- end
54
-
55
- constraints(:id => /[\w\.-]+/) do
56
- resources :salt_environments, :only => [:show, :index, :create, :destroy], :controller => 'foreman_salt/api/v2/salt_environments'
57
- resources :salt_minions, :only => [:show, :index, :update], :controller => 'foreman_salt/api/v2/salt_minions'
58
- resources :salt_states, :only => [:show, :index, :create, :destroy], :controller => 'foreman_salt/api/v2/salt_states'
59
- end
60
-
61
- resources :salt_variables, :only => [:show, :index, :destroy, :update, :create], :controller => 'foreman_salt/api/v2/salt_variables'
62
- end
63
- end
64
36
  end
65
37
 
66
- constraints(:id => /[^\/]+/) do
38
+ constraints(id: %r{[^/]+}) do
67
39
  resources :hosts do
68
40
  collection do
69
41
  post 'select_multiple_salt_master'
@@ -74,11 +46,11 @@ Rails.application.routes.draw do
74
46
  end
75
47
  end
76
48
 
77
- constraints(:smart_proxy_id => /[^\/]+/) do
78
- resources :smart_proxies, :except => [:show] do
79
- constraints(:id => /[^\/]+/) do
80
- resources :salt_autosign, :only => [:index, :destroy, :create, :new], :controller => 'foreman_salt/salt_autosign'
81
- resources :salt_keys, :only => [:index, :destroy], :controller => 'foreman_salt/salt_keys' do
49
+ constraints(smart_proxy_id: %r{[^/]+}) do
50
+ resources :smart_proxies, except: [:show] do
51
+ constraints(id: %r{[^/]+}) do
52
+ resources :salt_autosign, only: %i[index destroy create new], controller: 'foreman_salt/salt_autosign'
53
+ resources :salt_keys, only: %i[index destroy], controller: 'foreman_salt/salt_keys' do
82
54
  get :accept
83
55
  get :reject
84
56
  end
@@ -1,16 +1,16 @@
1
1
  class CreateSaltModules < ActiveRecord::Migration[4.2]
2
2
  def self.up
3
3
  create_table :salt_modules do |t|
4
- t.string :name, :default => '', :null => false
5
- t.timestamps :null => true
4
+ t.string :name, default: '', null: false
5
+ t.timestamps null: true
6
6
  end
7
7
 
8
- create_table 'hosts_salt_modules', :id => false do |t|
8
+ create_table 'hosts_salt_modules', id: false do |t|
9
9
  t.column :host_id, :integer
10
10
  t.column :salt_module_id, :integer
11
11
  end
12
12
 
13
- add_index :salt_modules, :name, :unique => true
13
+ add_index :salt_modules, :name, unique: true
14
14
  end
15
15
 
16
16
  def self.down
@@ -1,6 +1,6 @@
1
1
  class AddSaltModulesToHostgroups < ActiveRecord::Migration[4.2]
2
2
  def self.up
3
- create_table 'hostgroups_salt_modules', :id => false do |t|
3
+ create_table 'hostgroups_salt_modules', id: false do |t|
4
4
  t.column :hostgroup_id, :integer
5
5
  t.column :salt_module_id, :integer
6
6
  end
@@ -1,14 +1,14 @@
1
1
  class CreateSaltEnvironments < ActiveRecord::Migration[4.2]
2
2
  def self.up
3
3
  create_table :salt_environments do |t|
4
- t.string :name, :default => '', :null => false
5
- t.timestamps :null => true
4
+ t.string :name, default: '', null: false
5
+ t.timestamps null: true
6
6
  end
7
7
 
8
8
  add_column :hosts, :salt_environment_id, :integer
9
9
  add_column :hostgroups, :salt_environment_id, :integer
10
10
 
11
- add_index :salt_environments, :name, :unique => true
11
+ add_index :salt_environments, :name, unique: true
12
12
  end
13
13
 
14
14
  def self.down
@@ -7,13 +7,17 @@ class FixIncorrectReportMetrics < ActiveRecord::Migration[4.2]
7
7
 
8
8
  report.metrics['time'].each do |resource, time|
9
9
  metrics['time'][resource] = if time.is_a? String
10
- Float(time.delete(' ms')) rescue nil
10
+ begin
11
+ Float(time.delete(' ms'))
12
+ rescue StandardError
13
+ nil
14
+ end
11
15
  else
12
16
  time
13
17
  end
14
18
  end
15
19
 
16
- report.update_attributes(:metrics => metrics) if metrics != report.metrics
20
+ report.update(metrics: metrics) if metrics != report.metrics
17
21
  end
18
22
  end
19
23
 
@@ -0,0 +1,9 @@
1
+ class AddMissingPermissions < ActiveRecord::Migration[6.0]
2
+ def up
3
+ Permission.create!(name: 'auth_smart_proxies_salt_autosign', resource_type: 'SmartProxy')
4
+ end
5
+
6
+ def down
7
+ Permission.where(name: 'auth_smart_proxies_salt_autosign').destroy_all
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ class DropSaltHideRunSaltButtonSetting < ActiveRecord::Migration[6.0]
2
+ def up
3
+ Setting.where(name: 'salt_hide_run_salt_button').delete_all
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class FixSaltSettingCategoryToDsl < ActiveRecord::Migration[6.0]
2
+ def up
3
+ Setting.where(category: 'Setting::Salt').update_all(category: 'Setting')
4
+ end
5
+ end
@@ -1,2 +1,2 @@
1
1
  # Create feature for Smart Proxy
2
- Feature.where(:name => 'Salt').first_or_create
2
+ Feature.where(name: 'Salt').first_or_create