dogapi 1.37.1 → 1.42.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 (90) hide show
  1. checksums.yaml +4 -4
  2. data/.azure-pipelines/all.yml +16 -7
  3. data/.github/CODEOWNERS +10 -0
  4. data/.github/ISSUE_TEMPLATE/bug_report.md +36 -0
  5. data/.github/ISSUE_TEMPLATE/feature_request.md +23 -0
  6. data/.github/PULL_REQUEST_TEMPLATE.md +77 -0
  7. data/.github/labeler.yml +5 -0
  8. data/.github/workflows/labeler.yml +11 -0
  9. data/.github/workflows/stale.yml +39 -0
  10. data/.rubocop_todo.yml +51 -71
  11. data/CHANGELOG.md +37 -0
  12. data/CONTRIBUTING.md +111 -0
  13. data/DEVELOPMENT.md +11 -0
  14. data/Gemfile +2 -0
  15. data/Gemfile_1.9 +13 -0
  16. data/LICENSE +21 -20
  17. data/LICENSE-3rdparty.csv +6 -0
  18. data/README.rdoc +14 -0
  19. data/RELEASING.md +46 -0
  20. data/SUPPORT.md +9 -0
  21. data/dogapi.gemspec +2 -0
  22. data/examples/custom_metric.rb +1 -1
  23. data/lib/capistrano/README.md +4 -1
  24. data/lib/capistrano/datadog.rb +8 -4
  25. data/lib/capistrano/datadog/v2.rb +9 -1
  26. data/lib/capistrano/datadog/v3.rb +10 -1
  27. data/lib/dogapi.rb +4 -0
  28. data/lib/dogapi/common.rb +90 -35
  29. data/lib/dogapi/event.rb +4 -0
  30. data/lib/dogapi/facade.rb +212 -10
  31. data/lib/dogapi/metric.rb +4 -0
  32. data/lib/dogapi/v1.rb +10 -0
  33. data/lib/dogapi/v1/alert.rb +4 -0
  34. data/lib/dogapi/v1/aws_integration.rb +117 -0
  35. data/lib/dogapi/v1/aws_logs.rb +107 -0
  36. data/lib/dogapi/v1/azure_integration.rb +85 -0
  37. data/lib/dogapi/v1/comment.rb +4 -0
  38. data/lib/dogapi/v1/dash.rb +10 -4
  39. data/lib/dogapi/v1/dashboard.rb +16 -0
  40. data/lib/dogapi/v1/dashboard_list.rb +4 -0
  41. data/lib/dogapi/v1/embed.rb +4 -0
  42. data/lib/dogapi/v1/event.rb +4 -0
  43. data/lib/dogapi/v1/gcp_integration.rb +76 -0
  44. data/lib/dogapi/v1/hosts.rb +4 -0
  45. data/lib/dogapi/v1/integration.rb +4 -0
  46. data/lib/dogapi/v1/metadata.rb +4 -0
  47. data/lib/dogapi/v1/metric.rb +4 -0
  48. data/lib/dogapi/v1/monitor.rb +20 -7
  49. data/lib/dogapi/v1/screenboard.rb +4 -0
  50. data/lib/dogapi/v1/search.rb +4 -0
  51. data/lib/dogapi/v1/service_check.rb +4 -0
  52. data/lib/dogapi/v1/service_level_objective.rb +113 -0
  53. data/lib/dogapi/v1/snapshot.rb +4 -0
  54. data/lib/dogapi/v1/synthetics.rb +80 -0
  55. data/lib/dogapi/v1/tag.rb +4 -0
  56. data/lib/dogapi/v1/usage.rb +4 -0
  57. data/lib/dogapi/v1/user.rb +4 -0
  58. data/lib/dogapi/v2.rb +4 -0
  59. data/lib/dogapi/v2/dashboard_list.rb +4 -0
  60. data/lib/dogapi/version.rb +5 -1
  61. data/spec/integration/alert_spec.rb +4 -0
  62. data/spec/integration/aws_integration_spec.rb +55 -0
  63. data/spec/integration/aws_logs_spec.rb +59 -0
  64. data/spec/integration/azure_integration_spec.rb +63 -0
  65. data/spec/integration/comment_spec.rb +5 -0
  66. data/spec/integration/common_spec.rb +4 -0
  67. data/spec/integration/dash_spec.rb +7 -1
  68. data/spec/integration/dashboard_list_spec.rb +4 -0
  69. data/spec/integration/dashboard_spec.rb +15 -1
  70. data/spec/integration/embed_spec.rb +4 -0
  71. data/spec/integration/event_spec.rb +5 -0
  72. data/spec/integration/gcp_integration_spec.rb +57 -0
  73. data/spec/integration/integration_spec.rb +4 -0
  74. data/spec/integration/metadata_spec.rb +4 -0
  75. data/spec/integration/metric_spec.rb +4 -0
  76. data/spec/integration/monitor_spec.rb +30 -1
  77. data/spec/integration/screenboard_spec.rb +4 -0
  78. data/spec/integration/search_spec.rb +4 -0
  79. data/spec/integration/service_check_spec.rb +4 -0
  80. data/spec/integration/service_level_objective_spec.rb +73 -0
  81. data/spec/integration/snapshot_spec.rb +4 -0
  82. data/spec/integration/synthetics_spec.rb +131 -0
  83. data/spec/integration/tag_spec.rb +4 -0
  84. data/spec/integration/usage_spec.rb +4 -0
  85. data/spec/integration/user_spec.rb +4 -0
  86. data/spec/spec_helper.rb +21 -0
  87. data/spec/unit/capistrano_spec.rb +4 -0
  88. data/spec/unit/common_spec.rb +64 -7
  89. data/spec/unit/facade_spec.rb +4 -0
  90. metadata +37 -7
@@ -1,3 +1,7 @@
1
+ # Unless explicitly stated otherwise all files in this repository are licensed under the BSD-3-Clause License.
2
+ # This product includes software developed at Datadog (https://www.datadoghq.com/).
3
+ # Copyright 2011-Present Datadog, Inc.
4
+
1
5
  require 'dogapi/common'
2
6
  require 'dogapi/facade'
3
7
  require 'dogapi/event'
@@ -1,5 +1,10 @@
1
+ # Unless explicitly stated otherwise all files in this repository are licensed under the BSD-3-Clause License.
2
+ # This product includes software developed at Datadog (https://www.datadoghq.com/).
3
+ # Copyright 2011-Present Datadog, Inc.
4
+
1
5
  require 'cgi'
2
6
  require 'net/https'
7
+ require 'rbconfig'
3
8
  require 'socket'
4
9
  require 'uri'
5
10
  require 'English'
@@ -7,8 +12,18 @@ require 'English'
7
12
  require 'rubygems'
8
13
  require 'multi_json'
9
14
  require 'set'
15
+ require 'open3'
16
+
17
+ require 'dogapi/version'
10
18
 
11
19
  module Dogapi
20
+ USER_AGENT = format(
21
+ 'dogapi-rb/%<version>s (ruby %<ruver>s; os %<os>s; arch %<arch>s)',
22
+ version: VERSION,
23
+ ruver: RUBY_VERSION,
24
+ os: RbConfig::CONFIG['host_os'].downcase,
25
+ arch: RbConfig::CONFIG['host_cpu']
26
+ )
12
27
 
13
28
  # Metadata class to hold the scope of an API call
14
29
  class Scope
@@ -83,13 +98,12 @@ module Dogapi
83
98
  def connect
84
99
  connection = Net::HTTP
85
100
 
86
- # After ruby 2.0 Net::HTTP looks for the env variable but not ruby 1.9
87
- if RUBY_VERSION < '2.0.0'
88
- proxy = ENV['HTTPS_PROXY'] || ENV['https_proxy'] || ENV['HTTP_PROXY'] || ENV['http_proxy']
89
- if proxy
90
- proxy_uri = URI.parse(proxy)
91
- connection = Net::HTTP::Proxy(proxy_uri.host, proxy_uri.port, proxy_uri.user, proxy_uri.password)
92
- end
101
+ # Expose using a proxy without setting the HTTPS_PROXY or HTTP_PROXY variables
102
+ proxy = Dogapi.find_proxy()
103
+
104
+ if proxy
105
+ proxy_uri = URI.parse(proxy)
106
+ connection = Net::HTTP::Proxy(proxy_uri.host, proxy_uri.port, proxy_uri.user, proxy_uri.password)
93
107
  end
94
108
 
95
109
  uri = URI.parse(@api_host)
@@ -118,17 +132,12 @@ module Dogapi
118
132
  resp = nil
119
133
  connect do |conn|
120
134
  begin
121
- current_url = url + prepare_params(extra_params, url, with_app_key)
122
- req = method.new(current_url)
123
- req['DD-API-KEY'] = @api_key
124
- req['DD-APPLICATION-KEY'] = @application_key if with_app_key
125
-
126
- if send_json
127
- req.content_type = 'application/json'
128
- req.body = MultiJson.dump(body)
129
- end
130
-
135
+ params = prepare_params(extra_params, url, with_app_key)
136
+ req = prepare_request(method, url, params, body, send_json, with_app_key)
131
137
  resp = conn.request(req)
138
+ if resp.code.to_i / 100 == 3
139
+ resp = handle_redirect(conn, req, resp)
140
+ end
132
141
  return handle_response(resp)
133
142
  rescue Exception => e
134
143
  suppress_error_if_silent e
@@ -136,29 +145,37 @@ module Dogapi
136
145
  end
137
146
  end
138
147
 
139
- def prepare_params(extra_params, url, with_app_key)
140
- params = set_api_and_app_keys_in_params(url, with_app_key)
141
- params = extra_params.merge params unless extra_params.nil?
142
- qs_params = params.map { |k, v| CGI.escape(k.to_s) + '=' + CGI.escape(v.to_s) }
143
- qs = '?' + qs_params.join('&')
144
- qs
148
+ def prepare_request(method, url, params, body, send_json, with_app_key)
149
+ url_with_params = url + params
150
+ req = method.new(url_with_params)
151
+ req['User-Agent'] = USER_AGENT
152
+ unless should_set_api_and_app_keys_in_params?(url)
153
+ req['DD-API-KEY'] = @api_key
154
+ req['DD-APPLICATION-KEY'] = @application_key if with_app_key
155
+ end
156
+ if send_json
157
+ req.content_type = 'application/json'
158
+ req.body = MultiJson.dump(body)
159
+ end
160
+ return req
145
161
  end
146
162
 
147
- def set_api_and_app_keys_in_params(url, with_app_key)
148
- set_of_urls = Set.new ['/api/v1/series',
149
- '/api/v1/check_run',
150
- '/api/v1/events',
151
- '/api/v1/screen']
152
-
153
- include_in_params = set_of_urls.include?(url)
154
-
155
- if include_in_params
163
+ def prepare_params(extra_params, url, with_app_key)
164
+ if should_set_api_and_app_keys_in_params?(url)
156
165
  params = { api_key: @api_key }
157
166
  params[:application_key] = @application_key if with_app_key
158
167
  else
159
168
  params = {}
160
169
  end
161
- return params
170
+ params = extra_params.merge params unless extra_params.nil?
171
+ qs_params = params.map { |k, v| CGI.escape(k.to_s) + '=' + CGI.escape(v.to_s) }
172
+ qs = '?' + qs_params.join('&')
173
+ qs
174
+ end
175
+
176
+ def should_set_api_and_app_keys_in_params?(url)
177
+ set_of_urls = Set.new ['/api/v1/series', '/api/v1/check_run', '/api/v1/events', '/api/v1/screen']
178
+ return set_of_urls.include?(url)
162
179
  end
163
180
 
164
181
  def handle_response(resp)
@@ -173,6 +190,15 @@ module Dogapi
173
190
  raise 'Invalid JSON Response: ' + resp.body
174
191
  end
175
192
  end
193
+
194
+ def handle_redirect(conn, req, resp, retries=10)
195
+ req.uri = URI.parse(resp.header['location'])
196
+ new_response = conn.request(req)
197
+ if retries > 1 && new_response.code / 100 == 3
198
+ new_response = handle_redirect(conn, req, new_response, retries - 1)
199
+ end
200
+ new_response
201
+ end
176
202
  end
177
203
 
178
204
  def Dogapi.find_datadog_host
@@ -184,9 +210,38 @@ module Dogapi
184
210
  @@hostname = nil
185
211
 
186
212
  def Dogapi.find_localhost
187
- @@hostname ||= %x[hostname -f].strip
213
+ unless @@hostname
214
+ out, status = Open3.capture2('hostname', '-f', err: File::NULL)
215
+ # Get status to check if the call was successful
216
+ raise SystemCallError, 'Could not get hostname with `hostname -f`' unless status.exitstatus.zero?
217
+ @@hostname = out.strip
218
+ end
188
219
  rescue SystemCallError
189
- raise $ERROR_INFO unless $ERROR_INFO.class.name == 'Errno::ENOENT'
190
220
  @@hostname = Addrinfo.getaddrinfo(Socket.gethostname, nil, nil, nil, nil, Socket::AI_CANONNAME).first.canonname
191
221
  end
222
+
223
+ def Dogapi.find_proxy
224
+ ENV['DD_PROXY_HTTPS'] || ENV['dd_proxy_https'] ||
225
+ ENV['DD_PROXY_HTTP'] || ENV['dd_proxy_http'] ||
226
+ ENV['HTTPS_PROXY'] || ENV['https_proxy'] || ENV['HTTP_PROXY'] || ENV['http_proxy']
227
+ end
228
+
229
+ def Dogapi.validate_tags(tags)
230
+ unless tags.is_a? Array
231
+ raise ArgumentError, "The tags parameter needs to be an array of string. Current value: #{tags}"
232
+ end
233
+ tags.each do |tag|
234
+ raise ArgumentError, "Each tag needs to be a string. Current value: #{tag}" unless tag.is_a? String
235
+ end
236
+ end
237
+
238
+ # Very simplified hash with indifferent access - access to string or symbol
239
+ # keys via symbols. E.g.:
240
+ # my_hash = { 'foo' => 1 }
241
+ # Dogapi.symbolized_access(my_hash)
242
+ # my_hash[:foo] # => 1
243
+ def Dogapi.symbolized_access(hash)
244
+ hash.default_proc = proc { |h, k| h.key?(k.to_s) ? h[k.to_s] : nil }
245
+ hash
246
+ end
192
247
  end
@@ -1,3 +1,7 @@
1
+ # Unless explicitly stated otherwise all files in this repository are licensed under the BSD-3-Clause License.
2
+ # This product includes software developed at Datadog (https://www.datadoghq.com/).
3
+ # Copyright 2011-Present Datadog, Inc.
4
+
1
5
  require 'net/http'
2
6
 
3
7
  require 'rubygems'
@@ -1,3 +1,7 @@
1
+ # Unless explicitly stated otherwise all files in this repository are licensed under the BSD-3-Clause License.
2
+ # This product includes software developed at Datadog (https://www.datadoghq.com/).
3
+ # Copyright 2011-Present Datadog, Inc.
4
+
1
5
  require 'time'
2
6
  require 'dogapi/v1'
3
7
  require 'dogapi/v2'
@@ -59,6 +63,7 @@ module Dogapi
59
63
  attr_accessor :v2
60
64
  # Support for API version 2.
61
65
 
66
+ # rubocop:disable Metrics/MethodLength, Metrics/LineLength
62
67
  def initialize(api_key, application_key=nil, host=nil, device=nil, silent=true, timeout=nil, endpoint=nil)
63
68
 
64
69
  if api_key
@@ -89,17 +94,25 @@ module Dogapi
89
94
  @embed_svc = Dogapi::V1::EmbedService.new(@api_key, @application_key, silent, timeout, @datadog_host)
90
95
  @screenboard_svc = Dogapi::V1::ScreenboardService.new(@api_key, @application_key, silent, timeout, @datadog_host)
91
96
  @monitor_svc = Dogapi::V1::MonitorService.new(@api_key, @application_key, silent, timeout, @datadog_host)
97
+ @synthetics_svc = Dogapi::V1::SyntheticsService.new(@api_key, @application_key, silent, timeout, @datadog_host)
92
98
  @service_check_svc = Dogapi::V1::ServiceCheckService.new(@api_key, @application_key, silent, timeout, @datadog_host)
93
99
  @metadata_svc = Dogapi::V1::MetadataService.new(@api_key, @application_key, silent, timeout, @datadog_host)
94
100
  @legacy_event_svc = Dogapi::EventService.new(@datadog_host)
95
101
  @hosts_svc = Dogapi::V1::HostsService.new(@api_key, @application_key, silent, timeout, @datadog_host)
96
102
  @integration_svc = Dogapi::V1::IntegrationService.new(@api_key, @application_key, silent, timeout, @datadog_host)
103
+ @aws_integration_svc = Dogapi::V1::AwsIntegrationService.new(@api_key, @application_key, silent, timeout, @datadog_host)
104
+ @aws_logs_svc = Dogapi::V1::AwsLogsService.new(@api_key, @application_key, silent, timeout, @datadog_host)
97
105
  @usage_svc = Dogapi::V1::UsageService.new(@api_key, @application_key, silent, timeout, @datadog_host)
106
+ @azure_integration_svc = Dogapi::V1::AzureIntegrationService.new(@api_key, @application_key, silent, timeout, @datadog_host)
107
+ @gcp_integration_svc = Dogapi::V1::GcpIntegrationService.new(@api_key, @application_key, silent, timeout, @datadog_host)
108
+ @service_level_objective_svc = Dogapi::V1::ServiceLevelObjectiveService.new(@api_key, @application_key, silent,
109
+ timeout, @datadog_host)
98
110
 
99
111
  # Support for Dashboard List API v2.
100
112
  @v2 = Dogapi::ClientV2.new(@api_key, @application_key, true, true, @datadog_host)
101
113
 
102
114
  end
115
+ # rubocop:enable Metrics/MethodLength, Metrics/LineLength
103
116
 
104
117
  #
105
118
  # METRICS
@@ -112,7 +125,7 @@ module Dogapi
112
125
  # :device => String
113
126
  # :options => Map
114
127
  #
115
- # options[:type] = "counter" to specify a counter metric
128
+ # options[:type] = "count" to specify a counter metric
116
129
  # options[:tags] = ["tag1", "tag2"] to tag the point
117
130
  def emit_point(metric, value, options= {})
118
131
  defaults = { :timestamp => Time.now }
@@ -134,7 +147,7 @@ module Dogapi
134
147
  # :device => String
135
148
  # :options => Map
136
149
  #
137
- # options[:type] = "counter" to specify a counter metric
150
+ # options[:type] = "count" to specify a counter metric
138
151
  # options[:tags] = ["tag1", "tag2"] to tag the point
139
152
  def emit_points(metric, points, options= {})
140
153
  scope = override_scope options
@@ -311,13 +324,13 @@ module Dogapi
311
324
  #
312
325
 
313
326
  # Create a dashboard.
314
- def create_dashboard(title, description, graphs, template_variables=nil)
315
- @dash_service.create_dashboard(title, description, graphs, template_variables)
327
+ def create_dashboard(title, description, graphs, template_variables = nil, read_only = false)
328
+ @dash_service.create_dashboard(title, description, graphs, template_variables, read_only)
316
329
  end
317
330
 
318
331
  # Update a dashboard.
319
- def update_dashboard(dash_id, title, description, graphs, template_variables=nil)
320
- @dash_service.update_dashboard(dash_id, title, description, graphs, template_variables)
332
+ def update_dashboard(dash_id, title, description, graphs, template_variables = nil, read_only = false)
333
+ @dash_service.update_dashboard(dash_id, title, description, graphs, template_variables, read_only)
321
334
  end
322
335
 
323
336
  # Fetch the given dashboard.
@@ -520,6 +533,49 @@ module Dogapi
520
533
  @screenboard_svc.revoke_screenboard(board_id)
521
534
  end
522
535
 
536
+ #
537
+ # SYNTHETICS
538
+ #
539
+ def create_synthetics_test(type, config, options = {})
540
+ @synthetics_svc.create_synthetics_test(type, config, options)
541
+ end
542
+
543
+ def update_synthetics_test(test_id, type, config, options = {})
544
+ @synthetics_svc.update_synthetics_test(test_id, type, config, options)
545
+ end
546
+
547
+ def delete_synthetics_tests(test_ids)
548
+ @synthetics_svc.delete_synthetics_tests(test_ids)
549
+ end
550
+
551
+ def start_pause_synthetics_test(test_id, new_status)
552
+ @synthetics_svc.start_pause_synthetics_test(test_id, new_status)
553
+ end
554
+
555
+ def get_all_synthetics_tests
556
+ @synthetics_svc.get_all_synthetics_tests()
557
+ end
558
+
559
+ def get_synthetics_test(test_id)
560
+ @synthetics_svc.get_synthetics_test(test_id)
561
+ end
562
+
563
+ def get_synthetics_results(test_id)
564
+ @synthetics_svc.get_synthetics_results(test_id)
565
+ end
566
+
567
+ def get_synthetics_result(test_id, result_id)
568
+ @synthetics_svc.get_synthetics_result(test_id, result_id)
569
+ end
570
+
571
+ def get_synthetics_devices
572
+ @synthetics_svc.get_synthetics_devices()
573
+ end
574
+
575
+ def get_synthetics_locations
576
+ @synthetics_svc.get_synthetics_locations()
577
+ end
578
+
523
579
  #
524
580
  # MONITORS
525
581
  #
@@ -536,8 +592,12 @@ module Dogapi
536
592
  @monitor_svc.get_monitor(monitor_id, options)
537
593
  end
538
594
 
539
- def delete_monitor(monitor_id)
540
- @monitor_svc.delete_monitor(monitor_id)
595
+ def can_delete_monitors(monitor_ids)
596
+ @monitor_svc.can_delete_monitors(monitor_ids)
597
+ end
598
+
599
+ def delete_monitor(monitor_id, options = {})
600
+ @monitor_svc.delete_monitor(monitor_id, options)
541
601
  end
542
602
 
543
603
  def get_all_monitors(options= {})
@@ -588,8 +648,8 @@ module Dogapi
588
648
  @monitor_svc.update_downtime(downtime_id, options)
589
649
  end
590
650
 
591
- def get_downtime(downtime_id)
592
- @monitor_svc.get_downtime(downtime_id)
651
+ def get_downtime(downtime_id, options = {})
652
+ @monitor_svc.get_downtime(downtime_id, options)
593
653
  end
594
654
 
595
655
  def cancel_downtime(downtime_id)
@@ -616,6 +676,46 @@ module Dogapi
616
676
  @monitor_svc.unmute_host(hostname)
617
677
  end
618
678
 
679
+ #
680
+ # SERVICE LEVEL OBJECTIVES
681
+ #
682
+
683
+ def create_service_level_objective(type, slo_name, thresholds, options = {})
684
+ @service_level_objective_svc.create_service_level_objective(type, slo_name, thresholds, options)
685
+ end
686
+
687
+ def update_service_level_objective(slo_id, type, options = {})
688
+ @service_level_objective_svc.update_service_level_objective(slo_id, type, options)
689
+ end
690
+
691
+ def get_service_level_objective(slo_id)
692
+ @service_level_objective_svc.get_service_level_objective(slo_id)
693
+ end
694
+
695
+ def get_service_level_objective_history(slo_id, from_ts, to_ts)
696
+ @service_level_objective_svc.get_service_level_objective_history(slo_id, from_ts, to_ts)
697
+ end
698
+
699
+ def search_service_level_objective(slo_ids = nil, query = nil, offset = nil, limit = nil)
700
+ @service_level_objective_svc.search_service_level_objective(slo_ids, query, offset, limit)
701
+ end
702
+
703
+ def can_delete_service_level_objective(slo_ids)
704
+ @service_level_objective_svc.can_delete_service_level_objective(slo_ids)
705
+ end
706
+
707
+ def delete_service_level_objective(slo_id)
708
+ @service_level_objective_svc.delete_service_level_objective(slo_id)
709
+ end
710
+
711
+ def delete_many_service_level_objective(slo_ids)
712
+ @service_level_objective_svc.delete_many_service_level_objective(slo_ids)
713
+ end
714
+
715
+ def delete_timeframes_service_level_objective(ops)
716
+ @service_level_objective_svc.delete_timeframes_service_level_objective(ops)
717
+ end
718
+
619
719
  #
620
720
  # SERVICE CHECKS
621
721
  #
@@ -682,6 +782,108 @@ module Dogapi
682
782
  @integration_svc.delete_integration(source_type_name)
683
783
  end
684
784
 
785
+ #
786
+ # AWS INTEGRATION
787
+ #
788
+ def aws_integration_list
789
+ @aws_integration_svc.aws_integration_list
790
+ end
791
+
792
+ def aws_integration_create(config)
793
+ @aws_integration_svc.aws_integration_create(config)
794
+ end
795
+
796
+ def aws_integration_delete(config)
797
+ @aws_integration_svc.aws_integration_delete(config)
798
+ end
799
+
800
+ def aws_integration_list_namespaces
801
+ @aws_integration_svc.aws_integration_list_namespaces
802
+ end
803
+
804
+ def aws_integration_generate_external_id(config)
805
+ @aws_integration_svc.aws_integration_generate_external_id(config)
806
+ end
807
+
808
+ def aws_integration_update(config, new_config)
809
+ @aws_integration_svc.aws_integration_update(config, new_config)
810
+ end
811
+
812
+ #
813
+ # AWS Logs Integration
814
+ #
815
+
816
+ def aws_logs_add_lambda(config)
817
+ @aws_logs_svc.aws_logs_add_lambda(config)
818
+ end
819
+
820
+ def aws_logs_list_services
821
+ @aws_logs_svc.aws_logs_list_services
822
+ end
823
+
824
+ def aws_logs_save_services(config)
825
+ @aws_logs_svc.aws_logs_save_services(config)
826
+ end
827
+
828
+ def aws_logs_integrations_list
829
+ @aws_logs_svc.aws_logs_integrations_list
830
+ end
831
+
832
+ def aws_logs_integration_delete(config)
833
+ @aws_logs_svc.aws_logs_integration_delete(config)
834
+ end
835
+
836
+ def aws_logs_check_lambda(config)
837
+ @aws_logs_svc.aws_logs_check_lambda(config)
838
+ end
839
+
840
+ def aws_logs_check_services(config)
841
+ @aws_logs_svc.aws_logs_check_services(config)
842
+ end
843
+
844
+ #
845
+ # AZURE INTEGRATION
846
+ #
847
+
848
+ def azure_integration_list
849
+ @azure_integration_svc.azure_integration_list
850
+ end
851
+
852
+ def azure_integration_create(config)
853
+ @azure_integration_svc.azure_integration_create(config)
854
+ end
855
+
856
+ def azure_integration_delete(config)
857
+ @azure_integration_svc.azure_integration_delete(config)
858
+ end
859
+
860
+ def azure_integration_update_host_filters(config)
861
+ @azure_integration_svc.azure_integration_update_host_filters(config)
862
+ end
863
+
864
+ def azure_integration_update(config)
865
+ @azure_integration_svc.azure_integration_update(config)
866
+ end
867
+
868
+ #
869
+ # GCP INTEGRATION
870
+ #
871
+ def gcp_integration_list
872
+ @gcp_integration_svc.gcp_integration_list
873
+ end
874
+
875
+ def gcp_integration_delete(config)
876
+ @gcp_integration_svc.gcp_integration_delete(config)
877
+ end
878
+
879
+ def gcp_integration_create(config)
880
+ @gcp_integration_svc.gcp_integration_create(config)
881
+ end
882
+
883
+ def gcp_integration_update(config)
884
+ @gcp_integration_svc.gcp_integration_update(config)
885
+ end
886
+
685
887
  #
686
888
  # USAGE
687
889
  #