icinga2 0.5.2 → 0.6.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.
@@ -1,7 +1,15 @@
1
+
2
+ # frozen_string_literal: true
1
3
  module Icinga2
2
4
 
5
+ #
6
+ #
7
+ #
3
8
  module Network
4
9
 
10
+ #
11
+ #
12
+ #
5
13
  def self.get( params = {} )
6
14
 
7
15
  host = params.dig(:host)
@@ -10,25 +18,23 @@ module Icinga2
10
18
  options = params.dig(:options)
11
19
  payload = params.dig(:payload) || {}
12
20
  result = {}
21
+ max_retries = 3
22
+ times_retried = 0
13
23
 
14
- if( payload.count >= 1 )
15
-
16
- return self.get2( params )
17
- end
18
-
24
+ return get_with_payload( params ) if payload.count >= 1
19
25
 
20
26
  headers.delete( 'X-HTTP-Method-Override' )
21
27
 
22
28
  result = {}
23
29
 
24
- restClient = RestClient::Resource.new(
30
+ rest_client = RestClient::Resource.new(
25
31
  URI.encode( url ),
26
32
  options
27
33
  )
28
34
 
29
35
  begin
30
36
 
31
- data = restClient.get( headers )
37
+ data = rest_client.get( headers )
32
38
  results = JSON.parse( data.body )
33
39
  results = results.dig('results')
34
40
 
@@ -41,12 +47,12 @@ module Icinga2
41
47
  # name = r.dig('name')
42
48
  attrs = r.dig('attrs')
43
49
 
44
- if( attrs != nil )
50
+ if( !attrs.nil? )
45
51
 
46
52
  result[:data][attrs['name']] = {
47
- :name => attrs['name'],
48
- :display_name => attrs['display_name'],
49
- :type => attrs['type']
53
+ name: attrs['name'],
54
+ display_name: attrs['display_name'],
55
+ type: attrs['type']
50
56
  }
51
57
  else
52
58
  result = r
@@ -61,22 +67,38 @@ module Icinga2
61
67
  error = JSON.parse( error )
62
68
 
63
69
  result = {
64
- :status => error['error'].to_i,
65
- :name => host,
66
- :message => error['status']
70
+ status: error['error'].to_i,
71
+ name: host,
72
+ message: error['status']
67
73
  }
68
74
  rescue Errno::ECONNREFUSED => e
69
75
 
70
- $stderr.puts "Server refusing connection; retrying in 5s..."
76
+ if( times_retried < max_retries )
77
+
78
+ times_retried += 1
79
+ $stderr.puts( format( 'Cannot execute request to %s, cause: %s', url, e ) )
80
+ $stderr.puts( format( ' retry %d%d', times_retried, max_retries ) )
81
+
82
+ sleep( 2 )
83
+ retry
84
+ else
85
+ $stderr.puts( 'Exiting request ...' )
71
86
 
87
+ return {
88
+ status: 500,
89
+ message: format( 'Errno::ECONNREFUSED for request: %s', url )
90
+ }
91
+ end
72
92
  end
73
93
 
74
- return result
94
+ result
75
95
 
76
96
  end
77
97
 
78
-
79
- def self.get2( params = {} )
98
+ #
99
+ #
100
+ #
101
+ def self.get_with_payload( params = {} )
80
102
 
81
103
  host = params.dig(:host)
82
104
  url = params.dig(:url)
@@ -84,31 +106,31 @@ module Icinga2
84
106
  options = params.dig(:options)
85
107
  payload = params.dig(:payload) || {}
86
108
  result = {}
109
+ max_retries = 3
110
+ times_retried = 0
87
111
 
88
112
  headers['X-HTTP-Method-Override'] = 'GET'
89
113
 
90
- restClient = RestClient::Resource.new(
114
+ rest_client = RestClient::Resource.new(
91
115
  URI.encode( url ),
92
116
  options
93
117
  )
94
118
 
95
119
  begin
96
120
 
97
- response = restClient.post(
121
+ response = rest_client.post(
98
122
  JSON.generate( payload ),
99
123
  headers
100
124
  )
101
125
 
102
- responseCode = response.code
103
- responseBody = response.body
104
-
105
- node = Hash.new()
106
-
107
- data = JSON.parse( responseBody )
126
+ response_code = response.code
127
+ response_body = response.body
128
+ node = {}
108
129
 
130
+ data = JSON.parse( response_body )
109
131
  results = data.dig('results')
110
132
 
111
- if( results != nil )
133
+ unless( results.nil? )
112
134
 
113
135
  results.each do |r|
114
136
 
@@ -116,8 +138,8 @@ module Icinga2
116
138
  end
117
139
 
118
140
  result = {
119
- :status => responseCode,
120
- :nodes => node
141
+ status: response_code,
142
+ nodes: node
121
143
  }
122
144
  end
123
145
 
@@ -127,42 +149,58 @@ module Icinga2
127
149
  error = JSON.parse( error )
128
150
 
129
151
  result = {
130
- :status => error['error'].to_i,
131
- :name => host,
132
- :message => error['status']
152
+ status: error['error'].to_i,
153
+ name: host,
154
+ message: error['status']
133
155
  }
134
156
  rescue Errno::ECONNREFUSED => e
135
157
 
136
- $stderr.puts "Server refusing connection; retrying in 5s..."
158
+ if( times_retried < max_retries )
137
159
 
138
- end
160
+ times_retried += 1
161
+ $stderr.puts( format( 'Cannot execute request to %s, cause: %s', url, e ) )
162
+ $stderr.puts( format( ' retry %d%d', times_retried, max_retries ) )
139
163
 
140
- return result
164
+ sleep( 2 )
165
+ retry
166
+ else
167
+ $stderr.puts( 'Exiting request ...' )
141
168
 
142
- end
169
+ return {
170
+ status: 500,
171
+ message: format( 'Errno::ECONNREFUSED for request: %s', url )
172
+ }
173
+ end
174
+ end
143
175
 
176
+ result
144
177
 
178
+ end
145
179
 
180
+ #
181
+ #
182
+ #
146
183
  def self.post( params = {} )
147
184
 
148
- host = params.dig(:host)
149
185
  url = params.dig(:url)
150
186
  headers = params.dig(:headers)
151
187
  options = params.dig(:options)
152
188
  payload = params.dig(:payload)
189
+ max_retries = 3
190
+ times_retried = 0
153
191
 
154
192
  headers['X-HTTP-Method-Override'] = 'POST'
155
193
 
156
194
  result = {}
157
195
 
158
- restClient = RestClient::Resource.new(
196
+ rest_client = RestClient::Resource.new(
159
197
  URI.encode( url ),
160
198
  options
161
199
  )
162
200
 
163
201
  begin
164
202
 
165
- data = restClient.post(
203
+ data = rest_client.post(
166
204
  JSON.generate( payload ),
167
205
  headers
168
206
  )
@@ -170,12 +208,12 @@ module Icinga2
170
208
  data = JSON.parse( data )
171
209
  results = data.dig('results').first
172
210
 
173
- if( results != nil )
211
+ unless( results.nil? )
174
212
 
175
213
  result = {
176
- :status => results.dig('code').to_i,
177
- :name => results.dig('name'),
178
- :message => results.dig('status')
214
+ status: results.dig('code').to_i,
215
+ name: results.dig('name'),
216
+ message: results.dig('status')
179
217
  }
180
218
 
181
219
  end
@@ -183,52 +221,53 @@ module Icinga2
183
221
  rescue RestClient::ExceptionWithResponse => e
184
222
 
185
223
  error = e.response ? e.response : nil
186
-
187
- if( error.is_a?( String ) )
188
- error = JSON.parse( error )
189
- end
190
-
191
- $stderr.puts( JSON.pretty_generate( error ) )
224
+ error = JSON.parse( error ) if error.is_a?( String )
192
225
 
193
226
  results = error.dig( 'results' )
194
227
 
195
- if( results != nil )
228
+ if( !results.nil? )
196
229
 
197
230
  result = result.first
198
231
 
199
232
  result = {
200
- :status => results.dig('code').to_i,
201
- :name => results.dig('name'),
202
- :message => results.dig('status'),
203
- :error => results.dig('errors')
233
+ status: results.dig('code').to_i,
234
+ name: results.dig('name'),
235
+ message: results.dig('status'),
236
+ error: results.dig('errors')
204
237
  }
205
-
206
238
  else
207
-
208
239
  result = {
209
- :status => error.dig( 'error' ).to_i,
210
- :message => error.dig( 'status' )
240
+ status: error.dig( 'error' ).to_i,
241
+ message: error.dig( 'status' )
211
242
  }
212
-
213
243
  end
214
244
 
215
245
  rescue Errno::ECONNREFUSED => e
216
246
 
217
- $stderr.puts "Server refusing connection; retrying in 5s..."
247
+ if( times_retried < max_retries )
218
248
 
219
- rescue => e
249
+ times_retried += 1
250
+ $stderr.puts( format( 'Cannot execute request to %s, cause: %s', url, e ) )
251
+ $stderr.puts( format( ' retry %d%d', times_retried, max_retries ) )
220
252
 
221
- $stderr.puts e
253
+ sleep( 2 )
254
+ retry
255
+ else
256
+ $stderr.puts( 'Exiting request ...' )
222
257
 
258
+ return {
259
+ status: 500,
260
+ message: format( 'Errno::ECONNREFUSED for request: %s', url )
261
+ }
262
+ end
223
263
  end
224
264
 
225
- return result
226
-
227
-
228
-
265
+ result
229
266
  end
230
267
 
231
-
268
+ #
269
+ #
270
+ #
232
271
  def self.put( params = {} )
233
272
 
234
273
  host = params.dig(:host)
@@ -236,19 +275,21 @@ module Icinga2
236
275
  headers = params.dig(:headers)
237
276
  options = params.dig(:options)
238
277
  payload = params.dig(:payload)
278
+ max_retries = 3
279
+ times_retried = 0
239
280
 
240
281
  headers['X-HTTP-Method-Override'] = 'PUT'
241
282
 
242
283
  result = {}
243
284
 
244
- restClient = RestClient::Resource.new(
285
+ rest_client = RestClient::Resource.new(
245
286
  URI.encode( url ),
246
287
  options
247
288
  )
248
289
 
249
290
  begin
250
291
 
251
- data = restClient.put(
292
+ data = rest_client.put(
252
293
  JSON.generate( payload ),
253
294
  headers
254
295
  )
@@ -256,12 +297,12 @@ module Icinga2
256
297
  data = JSON.parse( data )
257
298
  results = data.dig('results').first
258
299
 
259
- if( results != nil )
300
+ unless( results.nil? )
260
301
 
261
302
  result = {
262
- :status => results.dig('code').to_i,
263
- :name => results.dig('name'),
264
- :message => results.dig('status')
303
+ status: results.dig('code').to_i,
304
+ name: results.dig('name'),
305
+ message: results.dig('status')
265
306
  }
266
307
 
267
308
  end
@@ -270,85 +311,98 @@ module Icinga2
270
311
 
271
312
  error = e.response ? e.response : nil
272
313
 
273
- if( error.is_a?( String ) )
274
- error = JSON.parse( error )
275
- end
314
+ error = JSON.parse( error ) if error.is_a?( String )
276
315
 
277
316
  results = error.dig( 'results' )
278
317
 
279
- if( results != nil )
318
+ if( !results.nil? )
280
319
 
281
- if( result.is_a?( Hash ) && result.count() != 0 )
320
+ if( result.is_a?( Hash ) && result.count != 0 )
282
321
 
283
322
  result = result.first
284
323
 
285
324
  result = {
286
- :status => results.dig('code').to_i,
287
- :name => results.dig('name'),
288
- :message => results.dig('status'),
289
- :error => results.dig('errors')
325
+ status: results.dig('code').to_i,
326
+ name: results.dig('name'),
327
+ message: results.dig('status'),
328
+ error: results.dig('errors')
290
329
  }
291
330
 
292
331
  else
293
332
 
294
333
  result = {
295
- :status => 204,
296
- :name => host,
297
- :message => 'unknown result'
334
+ status: 204,
335
+ name: host,
336
+ message: 'unknown result'
298
337
  }
299
338
  end
300
339
 
301
340
  else
302
341
 
303
342
  result = {
304
- :status => error.dig( 'error' ).to_i,
305
- :message => error.dig( 'status' )
343
+ status: error.dig( 'error' ).to_i,
344
+ message: error.dig( 'status' )
306
345
  }
307
346
 
308
347
  end
309
348
 
310
349
  rescue Errno::ECONNREFUSED => e
311
350
 
312
- $stderr.puts "Server refusing connection; retrying in 5s..."
351
+ if( times_retried < max_retries )
313
352
 
314
- end
353
+ times_retried += 1
354
+ $stderr.puts( format( 'Cannot execute request to %s, cause: %s', url, e ) )
355
+ $stderr.puts( format( ' retry %d%d', times_retried, max_retries ) )
315
356
 
316
- return result
357
+ sleep( 2 )
358
+ retry
359
+ else
360
+ $stderr.puts( 'Exiting request ...' )
317
361
 
318
- end
362
+ return {
363
+ status: 500,
364
+ message: format( 'Errno::ECONNREFUSED for request: %s', url )
365
+ }
366
+ end
367
+ end
319
368
 
369
+ result
370
+ end
320
371
 
372
+ #
373
+ #
374
+ #
321
375
  def self.delete( params = {} )
322
376
 
323
- host = params.dig(:host) || nil
324
- url = params.dig(:url) || nil
325
- headers = params.dig(:headers) || nil
326
- options = params.dig(:options) || nil
327
- payload = params.dig(:payload) || nil
377
+ url = params.dig(:url)
378
+ headers = params.dig(:headers)
379
+ options = params.dig(:options)
380
+ max_retries = 3
381
+ times_retried = 0
328
382
 
329
383
  headers['X-HTTP-Method-Override'] = 'DELETE'
330
384
 
331
385
  result = {}
332
386
 
333
- restClient = RestClient::Resource.new(
387
+ rest_client = RestClient::Resource.new(
334
388
  URI.encode( url ),
335
389
  options
336
390
  )
337
391
 
338
392
  begin
339
- data = restClient.get( headers )
393
+ data = rest_client.get( headers )
340
394
 
341
395
  if( data )
342
396
 
343
397
  data = JSON.parse( data ) #.body )
344
398
  results = data.dig('results').first
345
399
 
346
- if( results != nil )
400
+ unless( results.nil? )
347
401
 
348
402
  result = {
349
- :status => results.dig('code').to_i,
350
- :name => results.dig('name'),
351
- :message => results.dig('status')
403
+ status: results.dig('code').to_i,
404
+ name: results.dig('name'),
405
+ message: results.dig('status')
352
406
  }
353
407
 
354
408
  end
@@ -358,37 +412,48 @@ module Icinga2
358
412
 
359
413
  error = e.response ? e.response : nil
360
414
 
361
- if( error.is_a?( String ) )
362
- error = JSON.parse( error )
363
- end
415
+ error = JSON.parse( error ) if error.is_a?( String )
364
416
 
365
417
  results = error.dig('results')
366
418
 
367
- if( results != nil )
419
+ result = if( !results.nil? )
368
420
 
369
- result = {
370
- :status => results.dig('code').to_i,
371
- :name => results.dig('name'),
372
- :message => results.dig('status')
421
+ {
422
+ status: results.dig('code').to_i,
423
+ name: results.dig('name'),
424
+ message: results.dig('status')
373
425
  }
374
426
 
375
427
  else
376
428
 
377
- result = {
378
- :status => error.dig( 'error' ).to_i,
429
+ {
430
+ status: error.dig( 'error' ).to_i,
379
431
  # :name => results.dig('name'),
380
- :message => error.dig( 'status' )
432
+ message: error.dig( 'status' )
381
433
  }
382
434
 
383
- end
435
+ end
384
436
  rescue Errno::ECONNREFUSED => e
385
437
 
386
- $stderr.puts "Server refusing connection; retrying in 5s..."
438
+ if( times_retried < max_retries )
387
439
 
388
- end
440
+ times_retried += 1
441
+ $stderr.puts( format( 'Cannot execute request to %s, cause: %s', url, e ) )
442
+ $stderr.puts( format( ' retry %d%d', times_retried, max_retries ) )
443
+
444
+ sleep( 2 )
445
+ retry
446
+ else
447
+ $stderr.puts( 'Exiting request ...' )
389
448
 
390
- return result
449
+ return {
450
+ status: 500,
451
+ message: format( 'Errno::ECONNREFUSED for request: %s', url )
452
+ }
453
+ end
454
+ end
391
455
 
456
+ result
392
457
  end
393
458
 
394
459
  end