icinga2 0.9.2.1 → 0.9.2.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +25 -22
  3. data/doc/Array.html +4 -6
  4. data/doc/Boolean.html +4 -6
  5. data/doc/FalseClass.html +4 -6
  6. data/doc/Hash.html +126 -8
  7. data/doc/Icinga2.html +7 -9
  8. data/doc/Logging.html +5 -7
  9. data/doc/Object.html +8 -10
  10. data/doc/Time.html +4 -6
  11. data/doc/TrueClass.html +4 -6
  12. data/doc/_index.html +20 -7
  13. data/doc/class_list.html +1 -1
  14. data/doc/file.README.html +32 -30
  15. data/doc/frames.html +1 -1
  16. data/doc/index.html +32 -30
  17. data/doc/method_list.html +34 -2
  18. data/doc/services.md +45 -62
  19. data/doc/top-level-namespace.html +4 -6
  20. data/examples/_blank.rb +2 -2
  21. data/examples/config.rb +23 -0
  22. data/examples/downtimes.rb +4 -33
  23. data/examples/hostgroups.rb +4 -33
  24. data/examples/hosts.rb +18 -33
  25. data/examples/informations.rb +4 -33
  26. data/examples/notifications.rb +4 -33
  27. data/examples/servicegroups.rb +4 -25
  28. data/examples/services.rb +46 -67
  29. data/examples/statistics.rb +4 -33
  30. data/examples/test.rb +7 -28
  31. data/examples/usergroups.rb +4 -33
  32. data/examples/users.rb +4 -33
  33. data/lib/icinga2/client.rb +16 -42
  34. data/lib/icinga2/converts.rb +16 -54
  35. data/lib/icinga2/downtimes.rb +46 -44
  36. data/lib/icinga2/hostgroups.rb +35 -35
  37. data/lib/icinga2/hosts.rb +235 -228
  38. data/lib/icinga2/network.rb +53 -125
  39. data/lib/icinga2/notifications.rb +37 -46
  40. data/lib/icinga2/servicegroups.rb +31 -41
  41. data/lib/icinga2/services.rb +211 -236
  42. data/lib/icinga2/tools.rb +10 -9
  43. data/lib/icinga2/usergroups.rb +22 -32
  44. data/lib/icinga2/users.rb +64 -59
  45. data/lib/icinga2/validator.rb +59 -0
  46. data/lib/icinga2/version.rb +1 -1
  47. metadata +78 -7
  48. data/lib/icinga2/network.rb-SAVE +0 -1004
@@ -1,1004 +0,0 @@
1
-
2
- # frozen_string_literal: true
3
- module Icinga2
4
-
5
- # namespace for network handling
6
- module Network
7
-
8
- def self.api_data( params = {} )
9
-
10
- host = params.dig(:host)
11
- url = params.dig(:url)
12
- headers = params.dig(:headers)
13
- options = params.dig(:options)
14
- payload = params.dig(:payload) || {}
15
-
16
- # puts params
17
-
18
- rest_client = RestClient::Resource.new( URI.encode( url ), options )
19
-
20
- max_retries = 10
21
- retried = 0
22
-
23
- begin
24
- if payload
25
- headers["X-HTTP-Method-Override"] = "GET"
26
- payload = JSON.generate(payload)
27
- res = rest_client.post(payload, headers)
28
- else
29
- res = rest_client.get(headers)
30
- end
31
-
32
- rescue RestClient::Unauthorized => e
33
-
34
- return {
35
- status: 401,
36
- message: 'unauthorized'
37
- }
38
-
39
- rescue RestClient::NotFound => e
40
-
41
- message = format( "not found (request %s)", url )
42
-
43
- $stderr.puts( message )
44
-
45
- return {
46
- status: 404,
47
- message: message
48
- }
49
-
50
- rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH => e
51
-
52
- if (retried < max_retries)
53
- retried += 1
54
- $stderr.puts(format("Cannot execute request against '%s': '%s' (retry %d / %d)", url, e, retried, max_retries))
55
- sleep(2)
56
- retry
57
- else
58
-
59
- message = format( "Maximum retries (%d) against '%s' reached. Giving up ...", max_retries, url )
60
- $stderr.puts( message )
61
-
62
- return {
63
- status: 500,
64
- message: message
65
- }
66
-
67
- end
68
- end
69
-
70
- body = res.body
71
- data = JSON.parse(body)
72
-
73
- return data
74
- end
75
-
76
-
77
- def self.application_data( params = {} )
78
-
79
- url = params.dig(:url)
80
- headers = params.dig(:headers)
81
- options = params.dig(:options)
82
-
83
- # puts params
84
-
85
- data = Network.api_data( url: url, headers: headers, options: options )
86
-
87
- status = data.dig(:status)
88
-
89
- if( status.nil? )
90
-
91
- results = data.dig('results')
92
-
93
- unless( results.nil? )
94
-
95
- return results.first.dig('status')
96
- end
97
- end
98
-
99
- return nil
100
-
101
- # if not data or not data.has_key?('results') or data['results'].empty? or not data['results'][0].has_key?('status')
102
- # return nil
103
- # end
104
- #
105
- # return data['results'][0]['status'] #there's only one row
106
- end
107
-
108
-
109
-
110
- # static function for POST Requests
111
- #
112
- # @param [Hash] params
113
- # @option params [String] :url
114
- # @option params [String] :headers
115
- # @option params [String] :options
116
- # @option params [Hash] :payload
117
- #
118
- #
119
- # @return [Hash]
120
- #
121
- def self.post( params = {} )
122
-
123
- url = params.dig(:url)
124
- headers = params.dig(:headers)
125
- options = params.dig(:options)
126
- payload = params.dig(:payload)
127
- max_retries = 30
128
- times_retried = 0
129
-
130
- headers['X-HTTP-Method-Override'] = 'POST'
131
-
132
- result = {}
133
-
134
- rest_client = RestClient::Resource.new(
135
- URI.encode( url ),
136
- options
137
- )
138
-
139
- begin
140
-
141
- data = rest_client.post(
142
- JSON.generate( payload ),
143
- headers
144
- )
145
-
146
- data = JSON.parse( data )
147
- results = data.dig('results').first
148
-
149
- unless( results.nil? )
150
-
151
- result = {
152
- status: results.dig('code').to_i,
153
- name: results.dig('name'),
154
- message: results.dig('status')
155
- }
156
-
157
- end
158
-
159
- rescue RestClient::ExceptionWithResponse => e
160
-
161
- error = e.response ? e.response : nil
162
- error = JSON.parse( error ) if error.is_a?( String )
163
-
164
- results = error.dig( 'results' )
165
-
166
- if( !results.nil? )
167
-
168
- result = result.first
169
-
170
- result = {
171
- status: results.dig('code').to_i,
172
- name: results.dig('name'),
173
- message: results.dig('status'),
174
- error: results.dig('errors')
175
- }
176
- else
177
- result = {
178
- status: error.dig( 'error' ).to_i,
179
- message: error.dig( 'status' )
180
- }
181
- end
182
-
183
- rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH => e
184
-
185
- if( times_retried < max_retries )
186
-
187
- times_retried += 1
188
- $stderr.puts(format( 'Cannot execute request %s', url ))
189
- $stderr.puts(format( ' cause: %s', e ))
190
- $stderr.puts(format( ' retry %d / %d', times_retried, max_retries ))
191
-
192
- sleep( 4 )
193
- retry
194
- else
195
- $stderr.puts( 'Exiting request ...' )
196
-
197
- return {
198
- status: 500,
199
- message: format( 'Errno::ECONNREFUSED for request: %s', url )
200
- }
201
- end
202
- end
203
-
204
- result
205
- end
206
-
207
- # static function for PUT Requests
208
- #
209
- # @param [Hash] params
210
- # @option params [String] :host
211
- # @option params [String] :url
212
- # @option params [String] :headers
213
- # @option params [String] :options
214
- # @option params [Hash] :payload
215
- #
216
- #
217
- # @return [Hash]
218
- #
219
- def self.put( params = {} )
220
-
221
- host = params.dig(:host)
222
- url = params.dig(:url)
223
- headers = params.dig(:headers)
224
- options = params.dig(:options)
225
- payload = params.dig(:payload)
226
- max_retries = 30
227
- times_retried = 0
228
-
229
- headers['X-HTTP-Method-Override'] = 'PUT'
230
-
231
- result = {}
232
-
233
- rest_client = RestClient::Resource.new(
234
- URI.encode( url ),
235
- options
236
- )
237
-
238
- begin
239
-
240
- data = rest_client.put(
241
- JSON.generate( payload ),
242
- headers
243
- )
244
-
245
- data = JSON.parse( data )
246
- results = data.dig('results').first
247
-
248
- unless( results.nil? )
249
-
250
- result = {
251
- status: results.dig('code').to_i,
252
- name: results.dig('name'),
253
- message: results.dig('status')
254
- }
255
-
256
- end
257
-
258
- rescue RestClient::ExceptionWithResponse => e
259
-
260
- error = e.response ? e.response : nil
261
-
262
- error = JSON.parse( error ) if error.is_a?( String )
263
-
264
- results = error.dig( 'results' )
265
-
266
- if( !results.nil? )
267
-
268
- if( result.is_a?( Hash ) && result.count != 0 )
269
-
270
- result = result.first
271
-
272
- result = {
273
- status: results.dig('code').to_i,
274
- name: results.dig('name'),
275
- message: results.dig('status'),
276
- error: results.dig('errors')
277
- }
278
-
279
- else
280
-
281
- result = {
282
- status: 204,
283
- name: host,
284
- message: 'unknown result'
285
- }
286
- end
287
-
288
- else
289
-
290
- result = {
291
- status: error.dig( 'error' ).to_i,
292
- message: error.dig( 'status' )
293
- }
294
-
295
- end
296
-
297
- rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH => e
298
-
299
- if( times_retried < max_retries )
300
-
301
- times_retried += 1
302
- $stderr.puts(format( 'Cannot execute request %s', url ))
303
- $stderr.puts(format( ' cause: %s', e ))
304
- $stderr.puts(format( ' retry %d / %d', times_retried, max_retries ))
305
-
306
- sleep( 4 )
307
- retry
308
- else
309
- $stderr.puts( 'Exiting request ...' )
310
-
311
- return {
312
- status: 500,
313
- message: format( 'Errno::ECONNREFUSED for request: %s', url )
314
- }
315
- end
316
- end
317
-
318
- result
319
- end
320
-
321
- # static function for DELETE Requests
322
- #
323
- # @param [Hash] params
324
- # @option params [String] :url
325
- # @option params [String] :headers
326
- # @option params [String] :options
327
- #
328
- #
329
- # @return [Hash]
330
- #
331
- def self.delete( params = {} )
332
-
333
- url = params.dig(:url)
334
- headers = params.dig(:headers)
335
- options = params.dig(:options)
336
- max_retries = 3
337
- times_retried = 0
338
-
339
- headers['X-HTTP-Method-Override'] = 'DELETE'
340
-
341
- result = {}
342
-
343
- rest_client = RestClient::Resource.new(
344
- URI.encode( url ),
345
- options
346
- )
347
-
348
- begin
349
- data = rest_client.get( headers )
350
-
351
- if( data )
352
-
353
- data = JSON.parse( data ) #.body )
354
- results = data.dig('results').first
355
-
356
- unless( results.nil? )
357
-
358
- result = {
359
- status: results.dig('code').to_i,
360
- name: results.dig('name'),
361
- message: results.dig('status')
362
- }
363
-
364
- end
365
- end
366
-
367
- rescue RestClient::ExceptionWithResponse => e
368
-
369
- error = e.response ? e.response : nil
370
-
371
- error = JSON.parse( error ) if error.is_a?( String )
372
-
373
- results = error.dig('results')
374
-
375
- result = if( !results.nil? )
376
-
377
- {
378
- status: results.dig('code').to_i,
379
- name: results.dig('name'),
380
- message: results.dig('status')
381
- }
382
-
383
- else
384
-
385
- {
386
- status: error.dig( 'error' ).to_i,
387
- # :name => results.dig('name'),
388
- message: error.dig( 'status' )
389
- }
390
-
391
- end
392
- rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH => e
393
-
394
- if( times_retried < max_retries )
395
-
396
- times_retried += 1
397
- $stderr.puts(format( 'Cannot execute request %s', url ))
398
- $stderr.puts(format( ' cause: %s', e ))
399
- $stderr.puts(format( ' retry %d / %d', times_retried, max_retries ))
400
-
401
- sleep( 4 )
402
- retry
403
- else
404
- $stderr.puts( 'Exiting request ...' )
405
-
406
- return {
407
- status: 500,
408
- message: format( 'Errno::ECONNREFUSED for request: %s', url )
409
- }
410
- end
411
- end
412
-
413
- result
414
- end
415
-
416
- end
417
-
418
- # namespace for network handling
419
- module NetworkOld
420
-
421
- # static function for GET Requests
422
- #
423
- # @param [Hash] params
424
- # @option params [String] :host
425
- # @option params [String] :url
426
- # @option params [String] :headers
427
- # @option params [String] :options
428
- # @option params [Hash] :payload
429
- #
430
- #
431
- # @return [Hash]
432
- #
433
- def self.get( params = {} )
434
-
435
- host = params.dig(:host)
436
- url = params.dig(:url)
437
- headers = params.dig(:headers)
438
- options = params.dig(:options)
439
- payload = params.dig(:payload) || {}
440
- result = {}
441
- max_retries = 30
442
- times_retried = 0
443
-
444
- return get_with_payload( params ) if payload.count >= 1
445
-
446
- headers.delete( 'X-HTTP-Method-Override' )
447
-
448
- result = {}
449
-
450
- rest_client = RestClient::Resource.new(
451
- URI.encode( url ),
452
- options
453
- )
454
-
455
- begin
456
-
457
- data = rest_client.get( headers )
458
- results = JSON.parse( data.body )
459
- results = results.dig('results')
460
-
461
- result[:status] = 200
462
- result[:data] ||={}
463
-
464
- results.each do |r|
465
- attrs = r.dig('attrs')
466
- if( !attrs.nil? )
467
- result[:data][attrs['name']] = {
468
- name: attrs['name'],
469
- display_name: attrs['display_name'],
470
- type: attrs['type']
471
- }
472
- else
473
- result = r
474
- end
475
-
476
- end
477
- rescue RestClient::Unauthorized => e
478
-
479
- result = {
480
- status: 401,
481
- name: host,
482
- message: 'unauthorized'
483
- }
484
-
485
- rescue RestClient::ExceptionWithResponse => e
486
-
487
- error = e.response ? e.response : nil
488
- error = JSON.parse( error )
489
-
490
- result = {
491
- status: error['error'].to_i,
492
- name: host,
493
- message: error['status']
494
- }
495
- rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH => e
496
-
497
- if( times_retried < max_retries )
498
-
499
- times_retried += 1
500
- $stderr.puts(format( 'Cannot execute request %s', url ))
501
- $stderr.puts(format( ' cause: %s', e ))
502
- $stderr.puts(format( ' retry %d / %d', times_retried, max_retries ))
503
-
504
- sleep( 4 )
505
- retry
506
- else
507
- $stderr.puts(format( "Maximum retries (%d) against '%s' reached. Giving up ...", max_retries, url ))
508
-
509
- return {
510
- status: 500,
511
- message: format( "Maximum retries (%d) against '%s' reached. Giving up ...", max_retries, url )
512
- }
513
- end
514
- end
515
-
516
- result
517
- end
518
-
519
- # static function for GET Requests without filters
520
- #
521
- # @param [Hash] params
522
- # @option params [String] :host
523
- # @option params [String] :url
524
- # @option params [String] :headers
525
- # @option params [String] :options
526
- # @option params [Hash] :payload
527
- #
528
- #
529
- # @return [Hash]
530
- #
531
- def self.get_raw( params = {} )
532
-
533
- host = params.dig(:host)
534
- url = params.dig(:url)
535
- headers = params.dig(:headers)
536
- options = params.dig(:options)
537
- payload = params.dig(:payload) || {}
538
- result = {}
539
- max_retries = 30
540
- times_retried = 0
541
-
542
- return get_with_payload( params ) if payload.count >= 1
543
-
544
- headers.delete( 'X-HTTP-Method-Override' )
545
-
546
- result = {}
547
-
548
- rest_client = RestClient::Resource.new(
549
- URI.encode( url ),
550
- options
551
- )
552
-
553
- begin
554
-
555
- data = rest_client.get( headers )
556
- results = JSON.parse( data.body )
557
- results = results.dig('results')
558
-
559
- result[:status] = 200
560
- result[:data] ||={}
561
-
562
- results.each do |r|
563
-
564
- r.reject! { |x| x == 'perfdata' }
565
- result[:data][r.dig('name')] = r.dig('status')
566
- end
567
-
568
- rescue RestClient::ExceptionWithResponse => e
569
-
570
- error = e.response ? e.response : nil
571
- error = JSON.parse( error )
572
-
573
- result = {
574
- status: error['error'].to_i,
575
- name: host,
576
- message: error['status']
577
- }
578
- rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH => e
579
-
580
- if( times_retried < max_retries )
581
-
582
- times_retried += 1
583
- $stderr.puts(format( 'Cannot execute request %s', url ))
584
- $stderr.puts(format( ' cause: %s', e ))
585
- $stderr.puts(format( ' retry %d / %d', times_retried, max_retries ))
586
-
587
- sleep( 4 )
588
- retry
589
- else
590
- $stderr.puts(format( "Maximum retries (%d) against '%s' reached. Giving up ...", max_retries, url ))
591
-
592
- return {
593
- status: 500,
594
- message: format( "Maximum retries (%d) against '%s' reached. Giving up ...", max_retries, url )
595
- }
596
- end
597
- end
598
-
599
- result
600
- end
601
-
602
-
603
- # static function for GET Requests with payload
604
- # internal we use here an POST Request and overwrite a http header
605
- #
606
- # @param [Hash] params
607
- # @option params [String] :host
608
- # @option params [String] :url
609
- # @option params [String] :headers
610
- # @option params [String] :options
611
- # @option params [Hash] :payload
612
- #
613
- #
614
- # @return [Hash]
615
- #
616
- def self.get_with_payload( params = {} )
617
-
618
- host = params.dig(:host)
619
- url = params.dig(:url)
620
- headers = params.dig(:headers)
621
- options = params.dig(:options)
622
- payload = params.dig(:payload) || {}
623
- result = {}
624
- max_retries = 30
625
- times_retried = 0
626
-
627
- headers['X-HTTP-Method-Override'] = 'GET'
628
-
629
- rest_client = RestClient::Resource.new(
630
- URI.encode( url ),
631
- options
632
- )
633
-
634
- begin
635
-
636
- response = rest_client.post(
637
- JSON.generate( payload ),
638
- headers
639
- )
640
-
641
- response_code = response.code
642
- response_body = response.body
643
- node = {}
644
-
645
- data = JSON.parse( response_body )
646
- results = data.dig('results')
647
-
648
- unless( results.nil? )
649
-
650
- results.each do |r|
651
- node[r.dig('name')] = r
652
- end
653
-
654
- result = {
655
- status: response_code,
656
- nodes: node
657
- }
658
- end
659
-
660
- rescue RestClient::ExceptionWithResponse => e
661
-
662
- error = e.response ? e.response : nil
663
- error = JSON.parse( error )
664
-
665
- result = {
666
- status: error['error'].to_i,
667
- name: host,
668
- message: error['status']
669
- }
670
- rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH => e
671
-
672
- if( times_retried < max_retries )
673
-
674
- times_retried += 1
675
- $stderr.puts(format( 'Cannot execute request %s', url ))
676
- $stderr.puts(format( ' cause: %s', e ))
677
- $stderr.puts(format( ' retry %d / %d', times_retried, max_retries ))
678
-
679
- sleep( 4 )
680
- retry
681
- else
682
- $stderr.puts( 'Exiting request ...' )
683
-
684
- return {
685
- status: 500,
686
- message: format( 'Errno::ECONNREFUSED for request: %s', url )
687
- }
688
- end
689
- end
690
-
691
- result
692
-
693
- end
694
-
695
- # static function for POST Requests
696
- #
697
- # @param [Hash] params
698
- # @option params [String] :url
699
- # @option params [String] :headers
700
- # @option params [String] :options
701
- # @option params [Hash] :payload
702
- #
703
- #
704
- # @return [Hash]
705
- #
706
- def self.post( params = {} )
707
-
708
- url = params.dig(:url)
709
- headers = params.dig(:headers)
710
- options = params.dig(:options)
711
- payload = params.dig(:payload)
712
- max_retries = 30
713
- times_retried = 0
714
-
715
- headers['X-HTTP-Method-Override'] = 'POST'
716
-
717
- result = {}
718
-
719
- rest_client = RestClient::Resource.new(
720
- URI.encode( url ),
721
- options
722
- )
723
-
724
- begin
725
-
726
- data = rest_client.post(
727
- JSON.generate( payload ),
728
- headers
729
- )
730
-
731
- data = JSON.parse( data )
732
- results = data.dig('results').first
733
-
734
- unless( results.nil? )
735
-
736
- result = {
737
- status: results.dig('code').to_i,
738
- name: results.dig('name'),
739
- message: results.dig('status')
740
- }
741
-
742
- end
743
-
744
- rescue RestClient::ExceptionWithResponse => e
745
-
746
- error = e.response ? e.response : nil
747
- error = JSON.parse( error ) if error.is_a?( String )
748
-
749
- results = error.dig( 'results' )
750
-
751
- if( !results.nil? )
752
-
753
- result = result.first
754
-
755
- result = {
756
- status: results.dig('code').to_i,
757
- name: results.dig('name'),
758
- message: results.dig('status'),
759
- error: results.dig('errors')
760
- }
761
- else
762
- result = {
763
- status: error.dig( 'error' ).to_i,
764
- message: error.dig( 'status' )
765
- }
766
- end
767
-
768
- rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH => e
769
-
770
- if( times_retried < max_retries )
771
-
772
- times_retried += 1
773
- $stderr.puts(format( 'Cannot execute request %s', url ))
774
- $stderr.puts(format( ' cause: %s', e ))
775
- $stderr.puts(format( ' retry %d / %d', times_retried, max_retries ))
776
-
777
- sleep( 4 )
778
- retry
779
- else
780
- $stderr.puts( 'Exiting request ...' )
781
-
782
- return {
783
- status: 500,
784
- message: format( 'Errno::ECONNREFUSED for request: %s', url )
785
- }
786
- end
787
- end
788
-
789
- result
790
- end
791
-
792
- # static function for PUT Requests
793
- #
794
- # @param [Hash] params
795
- # @option params [String] :host
796
- # @option params [String] :url
797
- # @option params [String] :headers
798
- # @option params [String] :options
799
- # @option params [Hash] :payload
800
- #
801
- #
802
- # @return [Hash]
803
- #
804
- def self.put( params = {} )
805
-
806
- host = params.dig(:host)
807
- url = params.dig(:url)
808
- headers = params.dig(:headers)
809
- options = params.dig(:options)
810
- payload = params.dig(:payload)
811
- max_retries = 30
812
- times_retried = 0
813
-
814
- headers['X-HTTP-Method-Override'] = 'PUT'
815
-
816
- result = {}
817
-
818
- rest_client = RestClient::Resource.new(
819
- URI.encode( url ),
820
- options
821
- )
822
-
823
- begin
824
-
825
- data = rest_client.put(
826
- JSON.generate( payload ),
827
- headers
828
- )
829
-
830
- data = JSON.parse( data )
831
- results = data.dig('results').first
832
-
833
- unless( results.nil? )
834
-
835
- result = {
836
- status: results.dig('code').to_i,
837
- name: results.dig('name'),
838
- message: results.dig('status')
839
- }
840
-
841
- end
842
-
843
- rescue RestClient::ExceptionWithResponse => e
844
-
845
- error = e.response ? e.response : nil
846
-
847
- error = JSON.parse( error ) if error.is_a?( String )
848
-
849
- results = error.dig( 'results' )
850
-
851
- if( !results.nil? )
852
-
853
- if( result.is_a?( Hash ) && result.count != 0 )
854
-
855
- result = result.first
856
-
857
- result = {
858
- status: results.dig('code').to_i,
859
- name: results.dig('name'),
860
- message: results.dig('status'),
861
- error: results.dig('errors')
862
- }
863
-
864
- else
865
-
866
- result = {
867
- status: 204,
868
- name: host,
869
- message: 'unknown result'
870
- }
871
- end
872
-
873
- else
874
-
875
- result = {
876
- status: error.dig( 'error' ).to_i,
877
- message: error.dig( 'status' )
878
- }
879
-
880
- end
881
-
882
- rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH => e
883
-
884
- if( times_retried < max_retries )
885
-
886
- times_retried += 1
887
- $stderr.puts(format( 'Cannot execute request %s', url ))
888
- $stderr.puts(format( ' cause: %s', e ))
889
- $stderr.puts(format( ' retry %d / %d', times_retried, max_retries ))
890
-
891
- sleep( 4 )
892
- retry
893
- else
894
- $stderr.puts( 'Exiting request ...' )
895
-
896
- return {
897
- status: 500,
898
- message: format( 'Errno::ECONNREFUSED for request: %s', url )
899
- }
900
- end
901
- end
902
-
903
- result
904
- end
905
-
906
- # static function for DELETE Requests
907
- #
908
- # @param [Hash] params
909
- # @option params [String] :url
910
- # @option params [String] :headers
911
- # @option params [String] :options
912
- #
913
- #
914
- # @return [Hash]
915
- #
916
- def self.delete( params = {} )
917
-
918
- url = params.dig(:url)
919
- headers = params.dig(:headers)
920
- options = params.dig(:options)
921
- max_retries = 3
922
- times_retried = 0
923
-
924
- headers['X-HTTP-Method-Override'] = 'DELETE'
925
-
926
- result = {}
927
-
928
- rest_client = RestClient::Resource.new(
929
- URI.encode( url ),
930
- options
931
- )
932
-
933
- begin
934
- data = rest_client.get( headers )
935
-
936
- if( data )
937
-
938
- data = JSON.parse( data ) #.body )
939
- results = data.dig('results').first
940
-
941
- unless( results.nil? )
942
-
943
- result = {
944
- status: results.dig('code').to_i,
945
- name: results.dig('name'),
946
- message: results.dig('status')
947
- }
948
-
949
- end
950
- end
951
-
952
- rescue RestClient::ExceptionWithResponse => e
953
-
954
- error = e.response ? e.response : nil
955
-
956
- error = JSON.parse( error ) if error.is_a?( String )
957
-
958
- results = error.dig('results')
959
-
960
- result = if( !results.nil? )
961
-
962
- {
963
- status: results.dig('code').to_i,
964
- name: results.dig('name'),
965
- message: results.dig('status')
966
- }
967
-
968
- else
969
-
970
- {
971
- status: error.dig( 'error' ).to_i,
972
- # :name => results.dig('name'),
973
- message: error.dig( 'status' )
974
- }
975
-
976
- end
977
- rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH => e
978
-
979
- if( times_retried < max_retries )
980
-
981
- times_retried += 1
982
- $stderr.puts(format( 'Cannot execute request %s', url ))
983
- $stderr.puts(format( ' cause: %s', e ))
984
- $stderr.puts(format( ' retry %d / %d', times_retried, max_retries ))
985
-
986
- sleep( 4 )
987
- retry
988
- else
989
- $stderr.puts( 'Exiting request ...' )
990
-
991
- return {
992
- status: 500,
993
- message: format( 'Errno::ECONNREFUSED for request: %s', url )
994
- }
995
- end
996
- end
997
-
998
- result
999
- end
1000
-
1001
- end
1002
- end
1003
-
1004
-