icinga2 0.5.2 → 0.6.1

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