foreman_patch 1.2.0.alpha1 → 1.2.1

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 (19) hide show
  1. checksums.yaml +4 -4
  2. data/app/lib/actions/foreman_patch/window/publish.rb +1 -1
  3. data/app/services/foreman_patch/ticket/affected_items.rb +25 -4
  4. data/app/services/foreman_patch/ticket/api.rb +10 -19
  5. data/app/services/foreman_patch/ticket/change_request.rb +24 -25
  6. data/lib/foreman_patch/version.rb +1 -1
  7. data/public/assets/foreman_patch/cycle_plans-ff3d252119622a68828ff70f4a97328303963002237dbf850e92d6a706e93667.scss.gz +0 -0
  8. data/public/assets/foreman_patch/foreman_patch-be2e2ba89548f4a490612e8a6cd1cdebc0473be89f8023a3df7612f05a75d301.css.gz +0 -0
  9. data/public/assets/foreman_patch/foreman_patch.json +1 -1
  10. data/public/assets/foreman_patch/plan_edit_windows-9ba20f84f3ecf2c4eb903acd57d30ee3e16f023a79db30bc614aa22f26442ce3.js.gz +0 -0
  11. data/public/webpack/foreman_patch/vendor-4b77c91f1e9103179596.js.map +1 -1
  12. data/public/webpack/foreman_patch/vendor-4b77c91f1e9103179596.js.map.gz +0 -0
  13. metadata +7 -13
  14. data/public/assets/foreman_patch/cycle_plans-e5667e178ba389908f5c815b24ec0ea77c340849d56bc39c5ce72bb626bd446a.scss +0 -6
  15. data/public/assets/foreman_patch/cycle_plans-e5667e178ba389908f5c815b24ec0ea77c340849d56bc39c5ce72bb626bd446a.scss.gz +0 -0
  16. data/public/assets/foreman_patch/foreman_patch-ce5805a60c0d5f896f557ff5246e5a09172043004c850b39bea54e618df1c485.css +0 -1
  17. data/public/assets/foreman_patch/foreman_patch-ce5805a60c0d5f896f557ff5246e5a09172043004c850b39bea54e618df1c485.css.gz +0 -0
  18. data/public/assets/foreman_patch/plan_edit_windows-e656ba411642a7f983b51958ab30ac49c056322d19295a603cff4d5e6c71c8ed.js +0 -1
  19. data/public/assets/foreman_patch/plan_edit_windows-e656ba411642a7f983b51958ab30ac49c056322d19295a603cff4d5e6c71c8ed.js.gz +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 900b05514ac7bb3e7cec9d95b0ad2b982feea0081dd73be23ab17041cb44c95d
4
- data.tar.gz: ebdd75375aaf6acebd342f0f00e7be6658ec5399c9172f84b50263fe2b22573a
3
+ metadata.gz: 0e085e0af8a761e81fc5c3cddd51588babe0e0e6397d2f2448cbb7c346ef8b42
4
+ data.tar.gz: 752762b8b5a4f034e348500315e5a962ffd9e87b3875cc3943e4fbbeaad79a60
5
5
  SHA512:
6
- metadata.gz: d01c259cd2d57f7e4febcac38b3d9161c5ae3bd9fa84df2ef3f8cb9443a79350b7f6cc007c47aab787478f5516a70661fdae4777e13e95f8e4f25b459da0b449
7
- data.tar.gz: 78a7fd36dd08a76f613bbf839ebbff94d5e7e7d31766276ff3f1a4b42f4a2555a316cbf377a8ec6e63610914f51f37447f5b7446b987c29efb310a7fffc5dd7a
6
+ metadata.gz: 054e1ea317df4617f8c6748239c80401c45c3c61efb8f666e6495e7f502346bf612d55c9dca07f70ff5d3fafde7ec357e441dabe7721f67a566de965e28b33b3
7
+ data.tar.gz: 3c07b4f6f0d4b0fb154819a3f1f0c7e931bbe59beacfe4bdca42de9b3ca53b45a6864c5c855b011dc0d4947144e8ca58dbca4100c9a1db9b822010bca0a3d56e
@@ -15,7 +15,7 @@ module Actions
15
15
 
16
16
  ticket.save
17
17
 
18
- output.update(response: ticket.response)
18
+ output.update(response: ticket.to_h)
19
19
  end
20
20
 
21
21
  def window
@@ -38,15 +38,36 @@ module ForemanPatch
38
38
  private
39
39
 
40
40
  def get_configuration_items(hosts)
41
+ ###
42
+ # This needs to be batched as too many hostnames will excede most server url limits
43
+ ###
41
44
  params = {
42
- sysparm_query: "host_nameIN#{hosts.map(&:name).join(',')}",
43
45
  sysparm_exclude_reference_link: true,
44
46
  sysparm_fields: 'sys_id,host_name',
45
47
  }
46
48
 
47
- get('/api/now/table/cmdb_ci_server', params)
49
+ uri = URI.join(Setting[:ticket_api_host], '/api/now/table/cmdb_ci_server')
48
50
 
49
- response.nil? ? [] : response['result']
51
+ hosts.each_with_object([]) do |host, batches|
52
+ batches.push([]) if batches.empty?
53
+
54
+ batch = batches.last.push(host)
55
+
56
+ uri.query = URI.encode_www_form(params.merge({
57
+ sysparm_query: "host_nameIN#{batch.join(',')}",
58
+ }))
59
+
60
+ if uri.to_s.length > (Setting[:ticket_api_max_url_length] || 8000)
61
+ batch.pop
62
+ batches.push([host])
63
+ end
64
+ end.each_with_object([]) do |batch, items|
65
+ response = get(uri.path, params.merge({
66
+ sysparm_query: "host_nameIN#{batch.join(',')}",
67
+ }))
68
+
69
+ items.concat(response['result']) unless response.nil?
70
+ end
50
71
  end
51
72
 
52
73
  def get_affected_items
@@ -56,7 +77,7 @@ module ForemanPatch
56
77
  sysparm_fields: 'sys_id,task,ci_item',
57
78
  }
58
79
 
59
- get('/api/now/table/task_ci', params)
80
+ response = get('/api/now/table/task_ci', params)
60
81
 
61
82
  response.nil? ? [] : response['result']
62
83
  end
@@ -1,18 +1,12 @@
1
1
  module ForemanPatch
2
2
  module Ticket
3
3
  module API
4
- attr_reader :response, :errors
5
-
6
- private
4
+ attr_reader :request
7
5
 
8
6
  def host
9
7
  Setting[:ticket_api_host]
10
8
  end
11
9
 
12
- def url(path)
13
- host + path
14
- end
15
-
16
10
  def proxy
17
11
  return nil if Setting[:ticket_api_proxy].blank?
18
12
 
@@ -20,27 +14,27 @@ module ForemanPatch
20
14
  end
21
15
 
22
16
  def get(path, params = {})
23
- request(:get, path, params)
17
+ send_request(:get, path, params)
24
18
  end
25
19
 
26
20
  def post(path, payload, params = {})
27
- request(:post, path, params, payload)
21
+ send_request(:post, path, params, payload)
28
22
  end
29
23
 
30
24
  def put(path, payload, params = {})
31
- request(:put, path, params, payload)
25
+ send_request(:put, path, params, payload)
32
26
  end
33
27
 
34
28
  def delete(path)
35
- request(:delete, path)
29
+ send_request(:delete, path)
36
30
  end
37
31
 
38
- def request(method, path, params = {}, payload = nil)
39
- @response = nil
40
-
32
+ private
33
+
34
+ def send_request(method, path, params = {}, payload = nil)
41
35
  args = {
42
36
  method: method,
43
- url: url(path),
37
+ url: URI.join(Setting[:ticket_api_host], path).to_s,
44
38
  headers: {
45
39
  accept: :json,
46
40
  content_type: :json,
@@ -53,15 +47,12 @@ module ForemanPatch
53
47
  args[:payload] = payload.to_json unless payload.nil?
54
48
  args[:proxy] = proxy
55
49
 
56
- raw = RestClient::Request.execute(args)
57
-
58
- @response = JSON.parse(raw)
50
+ JSON.parse(RestClient::Request.execute(args))
59
51
  rescue RestClient::ExceptionWithResponse => error
60
52
  Rails.logger.error(error.response)
61
53
  rescue => error
62
54
  Rails.logger.error(error)
63
55
  end
64
-
65
56
  end
66
57
  end
67
58
  end
@@ -5,42 +5,43 @@ module ForemanPatch
5
5
 
6
6
  attr_reader :window, :response, :affected_items
7
7
 
8
- def self.publish(window)
9
- ticket = Ticket.new(window)
10
- ticket.save
11
- end
12
-
13
8
  def initialize(window)
14
9
  @window = window
15
- @hash = {}
10
+ @ticket = {}
16
11
  reload
17
12
  end
18
13
 
19
14
  def reload
20
15
  return if window.ticket_id.blank?
21
16
 
22
- get(path)
23
-
24
- @affected_items = AffectedItems.new(self)
17
+ response = get(path)
18
+ unless response.empty?
19
+ @ticket = response['result']
20
+
21
+ @affected_items = AffectedItems.new(self)
22
+ end
25
23
 
26
- ticket
24
+ @ticket
27
25
  end
28
26
 
29
27
  def save
28
+ response = {}
30
29
  if window.ticket_id.blank?
31
- post(path, payload)
30
+ response = post(path, payload)
32
31
  else
33
- put(path, payload)
32
+ response = put(path, payload)
34
33
  end
35
34
 
36
35
  unless response.empty?
36
+ @ticket = response['result']
37
+
38
+ window.update(ticket_id: id) if id != window.ticket_id
39
+
37
40
  @affected_items = AffectedItems.new(self)
38
41
  @affected_items.set(window.hosts)
39
42
  end
40
43
 
41
- window.update(ticket_id: id)
42
-
43
- ticket
44
+ @ticket
44
45
  end
45
46
 
46
47
  def payload
@@ -48,11 +49,11 @@ module ForemanPatch
48
49
  end
49
50
 
50
51
  def id
51
- ticket.fetch(Setting[:ticket_id_field], window.ticket_id)
52
+ @ticket.fetch(Setting[:ticket_id_field], window.ticket_id)
52
53
  end
53
54
 
54
55
  def label
55
- ticket.fetch(Setting[:ticket_label_field], window.name)
56
+ @ticket.fetch(Setting[:ticket_label_field], window.name)
56
57
  end
57
58
 
58
59
  def link
@@ -62,11 +63,15 @@ module ForemanPatch
62
63
  end
63
64
 
64
65
  def keys
65
- ticket.keys
66
+ @ticket.keys
66
67
  end
67
68
 
68
69
  def [](key)
69
- ticket[key]
70
+ @ticket[key]
71
+ end
72
+
73
+ def to_h
74
+ @ticket
70
75
  end
71
76
 
72
77
  class Jail < Safemode::Jail
@@ -75,12 +80,6 @@ module ForemanPatch
75
80
 
76
81
  private
77
82
 
78
- def ticket
79
- return {} if response.empty?
80
-
81
- response['result']
82
- end
83
-
84
83
  def path
85
84
  path = Setting[:ticket_api_path]
86
85
  path += "/#{window.ticket_id}" unless id.blank?
@@ -1,3 +1,3 @@
1
1
  module ForemanPatch
2
- VERSION = '1.2.0.alpha1'.freeze
2
+ VERSION = '1.2.1'.freeze
3
3
  end
@@ -1 +1 @@
1
- {"files":{"foreman_patch/foreman_patch-ce5805a60c0d5f896f557ff5246e5a09172043004c850b39bea54e618df1c485.css":{"logical_path":"foreman_patch/foreman_patch.css","mtime":"2024-11-21T20:30:22+00:00","size":87,"digest":"d6fdcb3359ce0ca3edd9a493467bc366b5f2b52a0d3e2fd2b5d1dec121ef31ff","integrity":"sha256-1v3LM1nODKPt2aSTRnvDZrXytSoNPi/StdHewSHvMf8="},"foreman_patch/cycle_plans-e5667e178ba389908f5c815b24ec0ea77c340849d56bc39c5ce72bb626bd446a.scss":{"logical_path":"foreman_patch/cycle_plans.scss","mtime":"2024-11-21T20:30:22+00:00","size":106,"digest":"aa7bb2d36a98d83776b4dd9dd93431ba648b84a37478f93c445eb9bda0f84006","integrity":"sha256-qnuy02qY2Dd2tN2d2TQxumSLhKN0ePk8RF65vaD4QAY="},"foreman_patch/plan_edit_windows-e656ba411642a7f983b51958ab30ac49c056322d19295a603cff4d5e6c71c8ed.js":{"logical_path":"foreman_patch/plan_edit_windows.js","mtime":"2024-11-21T20:30:22+00:00","size":144,"digest":"be5de0eef57205a38f90eda24c8f8aed707f5d30e8a5abbc3ce9f198ea55a620","integrity":"sha256-vl3g7vVyBaOPkO2iTI+K7XB/XTDopau8POnxmOpVpiA="},"foreman_patch/foreman_patch-be2e2ba89548f4a490612e8a6cd1cdebc0473be89f8023a3df7612f05a75d301.css":{"logical_path":"foreman_patch/foreman_patch.css","mtime":"2024-11-21T20:42:30+00:00","size":87,"digest":"d6fdcb3359ce0ca3edd9a493467bc366b5f2b52a0d3e2fd2b5d1dec121ef31ff","integrity":"sha256-1v3LM1nODKPt2aSTRnvDZrXytSoNPi/StdHewSHvMf8="},"foreman_patch/cycle_plans-ff3d252119622a68828ff70f4a97328303963002237dbf850e92d6a706e93667.scss":{"logical_path":"foreman_patch/cycle_plans.scss","mtime":"2024-11-21T20:42:30+00:00","size":106,"digest":"aa7bb2d36a98d83776b4dd9dd93431ba648b84a37478f93c445eb9bda0f84006","integrity":"sha256-qnuy02qY2Dd2tN2d2TQxumSLhKN0ePk8RF65vaD4QAY="},"foreman_patch/plan_edit_windows-9ba20f84f3ecf2c4eb903acd57d30ee3e16f023a79db30bc614aa22f26442ce3.js":{"logical_path":"foreman_patch/plan_edit_windows.js","mtime":"2024-11-21T20:42:30+00:00","size":144,"digest":"be5de0eef57205a38f90eda24c8f8aed707f5d30e8a5abbc3ce9f198ea55a620","integrity":"sha256-vl3g7vVyBaOPkO2iTI+K7XB/XTDopau8POnxmOpVpiA="}},"assets":{"foreman_patch/foreman_patch.css":"foreman_patch/foreman_patch-be2e2ba89548f4a490612e8a6cd1cdebc0473be89f8023a3df7612f05a75d301.css","foreman_patch/cycle_plans.scss":"foreman_patch/cycle_plans-ff3d252119622a68828ff70f4a97328303963002237dbf850e92d6a706e93667.scss","foreman_patch/plan_edit_windows.js":"foreman_patch/plan_edit_windows-9ba20f84f3ecf2c4eb903acd57d30ee3e16f023a79db30bc614aa22f26442ce3.js"}}
1
+ {"files":{"foreman_patch/cycle_plans-ff3d252119622a68828ff70f4a97328303963002237dbf850e92d6a706e93667.scss":{"logical_path":"foreman_patch/cycle_plans.scss","mtime":"2025-01-06T17:18:57+00:00","size":106,"digest":"aa7bb2d36a98d83776b4dd9dd93431ba648b84a37478f93c445eb9bda0f84006","integrity":"sha256-qnuy02qY2Dd2tN2d2TQxumSLhKN0ePk8RF65vaD4QAY="},"foreman_patch/foreman_patch-be2e2ba89548f4a490612e8a6cd1cdebc0473be89f8023a3df7612f05a75d301.css":{"logical_path":"foreman_patch/foreman_patch.css","mtime":"2025-01-06T17:18:57+00:00","size":87,"digest":"d6fdcb3359ce0ca3edd9a493467bc366b5f2b52a0d3e2fd2b5d1dec121ef31ff","integrity":"sha256-1v3LM1nODKPt2aSTRnvDZrXytSoNPi/StdHewSHvMf8="},"foreman_patch/plan_edit_windows-9ba20f84f3ecf2c4eb903acd57d30ee3e16f023a79db30bc614aa22f26442ce3.js":{"logical_path":"foreman_patch/plan_edit_windows.js","mtime":"2025-01-06T17:18:57+00:00","size":144,"digest":"be5de0eef57205a38f90eda24c8f8aed707f5d30e8a5abbc3ce9f198ea55a620","integrity":"sha256-vl3g7vVyBaOPkO2iTI+K7XB/XTDopau8POnxmOpVpiA="}},"assets":{"foreman_patch/cycle_plans.scss":"foreman_patch/cycle_plans-ff3d252119622a68828ff70f4a97328303963002237dbf850e92d6a706e93667.scss","foreman_patch/foreman_patch.css":"foreman_patch/foreman_patch-be2e2ba89548f4a490612e8a6cd1cdebc0473be89f8023a3df7612f05a75d301.css","foreman_patch/plan_edit_windows.js":"foreman_patch/plan_edit_windows-9ba20f84f3ecf2c4eb903acd57d30ee3e16f023a79db30bc614aa22f26442ce3.js"}}