kapacitor-ruby 1.0.2 → 1.0.7

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 97fd28ae0c38ca2649dc1aa6caf64d93486148ab
4
- data.tar.gz: 87c38785fbf478b9c4bb5bcb1aed5f983173da63
2
+ SHA256:
3
+ metadata.gz: 4855f87f3ec102488bb9c853b8f7a9d1d9e161d759ec62617859a784b8b521ac
4
+ data.tar.gz: a7875fdb26ce45b801297caec2ebc17946a6b8e1932f07c11e73fced251e03cd
5
5
  SHA512:
6
- metadata.gz: 976de61620d4e124b53d5acfc26fcf711ff2fdcb0c9e936fbc85d2cd652262a94f9bf67078205ae6afb88d53fa34733373490617c2a0e7de166821710628e0c4
7
- data.tar.gz: 6c2fe44b7f27e0bf7b40b1ce636c057bf3b0fe876c17b51b7e140a3d70ce6ce03c007603401b1332fa60d4238abd0ba1279670d7aea5a12545d6049c6e2a8ca8
6
+ metadata.gz: 6a7c13869776805389686060b8e3a47abda670b81d1adf2c8ff2690774af85d61dda6cf83c3ad35fb21f286b37f01d62c668253403e7c45d405dc76148f196c8
7
+ data.tar.gz: 321f5d4263ae5ec53fde9bb28ea158a4881967643e0071edaee2778ac37485cdf5db72de58503c6659fe06da362786a6f5d1cc667726e21bcac6708053502780
@@ -13,9 +13,9 @@ module Kapacitor
13
13
  # @param url [String] Kapacitor REST API's URL (defaults to `http://localhost:9092`)
14
14
  # @param version [Integer] API version (defaults to `v1preview`)
15
15
  #
16
- def initialize(url: 'http://localhost:9092/kapacitor', version: 'v1preview')
17
- @url = URI.join(url, version)
16
+ def initialize(url: 'http://localhost:9092/kapacitor', version: 'v1')
18
17
  @http = HTTPClient.new
18
+ @url = [url, version].join('/')
19
19
  end
20
20
 
21
21
  # Define a Kapacitor template
@@ -33,7 +33,7 @@ module Kapacitor
33
33
  'script' => script
34
34
  }
35
35
 
36
- api_post(endpoint: '/templates', data: req)
36
+ api_post(endpoint: 'templates', data: req)
37
37
  end
38
38
 
39
39
  # Update a Kapacitor template
@@ -50,7 +50,7 @@ module Kapacitor
50
50
  raise ArgumentError, "Kapacitor template type can be either 'batch' or 'stream'" unless opts[:type] == 'batch' or opts[:type] == 'stream'
51
51
  end
52
52
 
53
- api_patch(endpoint: "/templates/#{id}", data: req) unless req.empty?
53
+ api_patch(endpoint: "templates/#{id}", data: req) unless req.empty?
54
54
  end
55
55
 
56
56
  # Delete a Kapacitor template
@@ -58,7 +58,16 @@ module Kapacitor
58
58
  # @param id [String] Template ID
59
59
  #
60
60
  def delete_template(id:)
61
- api_delete(endpoint: "/templates/#{id}")
61
+ api_delete(endpoint: "templates/#{id}")
62
+ end
63
+
64
+ # Retrieve Kapacitor topic
65
+ #
66
+ # @return [List[String]] List of topics
67
+ #
68
+ def topics()
69
+ res = api_get(endpoint: "alerts/topics")
70
+ return res['topics'].map { |v| v['id'] }
62
71
  end
63
72
 
64
73
  # Retrieve Kapacitor templates
@@ -89,7 +98,7 @@ module Kapacitor
89
98
  def define_task(id:, dbrps:, **opts)
90
99
  if (opts[:template_id].nil? && opts[:type].nil? && opts[:script].nil?) || (opts[:template_id] && (opts[:type] || opts[:script]))
91
100
  raise ArgumentError, "Must specify either a Template ID or a script and type"
92
- elsif opts['template_id'].nil? && (opts['type'].nil? || opts['script'].nil?)
101
+ elsif opts[:template_id].nil? && (opts[:type].nil? || opts[:script].nil?)
93
102
  raise ArgumentError, "Must specify both task type and script when not using a Template ID"
94
103
  end
95
104
 
@@ -116,7 +125,7 @@ module Kapacitor
116
125
 
117
126
  req['vars'] = opts[:vars] if opts[:vars]
118
127
 
119
- api_post(endpoint: '/tasks', data: req)
128
+ api_post(endpoint: 'tasks', data: req)
120
129
  end
121
130
 
122
131
  # Update a Kapacitor task
@@ -141,7 +150,7 @@ module Kapacitor
141
150
  raise ArgumentError, "Kapacitor task status can be either 'enabled' or 'disabled'" unless opts[:status] == 'enabled' || opts[:status] == 'disabled'
142
151
  end
143
152
 
144
- api_patch(endpoint: "/tasks/#{id}", data: req) unless req.empty?
153
+ api_patch(endpoint: "tasks/#{id}", data: req) unless req.empty?
145
154
  end
146
155
 
147
156
  # Delete a Kapacitor task
@@ -149,7 +158,7 @@ module Kapacitor
149
158
  # @param id [String] Task ID
150
159
  #
151
160
  def delete_task(id:)
152
- api_delete(endpoint: "/tasks/#{id}")
161
+ api_delete(endpoint: "tasks/#{id}")
153
162
  end
154
163
 
155
164
  # Retrieve Kapacitor tasks
@@ -179,37 +188,36 @@ module Kapacitor
179
188
  #
180
189
  # @param id [String] Handler ID
181
190
  # @param topic [String] Topic name
182
- # @param actions [Array[Hash]] Handler actions
191
+ # @param kind [String] Kind of handler
192
+ # @param match [String] Lambda expression
193
+ # @param options [Hash] Handler options
183
194
  #
184
- def define_topic_handler(id:, topic:, actions:)
185
- req = {}
186
- req['id'] = id
187
-
188
- actions = [actions] unless actions.is_a?(Array)
189
- raise ArgumentError, "Kapacitor topic handler requires one or more actions" unless actions.size > 0
190
-
191
- actions.each do |action|
192
- raise ArgumentError, "Missing required kind attribute for action #{action}"
193
- end
194
-
195
- req['actions'] = actions
196
- api_post(endpoint: "/alerts/topics/#{topic}/handlers", data: req)
195
+ def define_topic_handler(id:, topic:, kind:, match: nil, options: {})
196
+ req = {
197
+ 'id': id,
198
+ 'kind': kind
199
+ }
200
+ req['match'] = match unless match.nil?
201
+ req['options'] = options
202
+ api_post(endpoint: "alerts/topics/#{topic}/handlers", data: req)
197
203
  end
198
204
 
199
205
  # Update a topic handler
200
206
  #
201
207
  # @param id [String] Handler ID
202
208
  # @param topic [String] Topic name
203
- # @param actions [Array[Hash]] Handler actions
209
+ # @param kind [String] Kind of handler
210
+ # @param match [String] Lambda expression
211
+ # @param options [Hash] Handler options
204
212
  #
205
- def update_topic_handler(id:, topic:, actions:)
206
- req = {}
207
-
208
- actions = [actions] unless actions.is_a?(Array)
209
- raise ArgumentError, "Kapacitor topic handler requires one or more actions" unless actions.size > 0
210
-
211
- req['actions'] = actions
212
- api_put(endpoint: "/alerts/topics/#{topic}/handlers/#{id}", data: req) unless req.empty?
213
+ def update_topic_handler(id:, topic:, kind:, match: nil, options: {})
214
+ req = {
215
+ 'id': id,
216
+ 'kind': kind
217
+ }
218
+ req['match'] = match unless match.nil?
219
+ req['options'] = options
220
+ api_put(endpoint: "alerts/topics/#{topic}/handlers/#{id}", data: req) unless req.empty?
213
221
  end
214
222
 
215
223
  # Delete a topic handler
@@ -218,7 +226,7 @@ module Kapacitor
218
226
  # @param topic [String] Topic name
219
227
  #
220
228
  def delete_topic_handler(id:, topic:)
221
- api_delete(endpoint: "/alerts/topics/#{topic}/handlers/#{id}")
229
+ api_delete(endpoint: "alerts/topics/#{topic}/handlers/#{id}")
222
230
  end
223
231
 
224
232
  # Retrieve topic's handlers
@@ -240,14 +248,14 @@ private
240
248
  def api_get(endpoint:, query: nil)
241
249
  begin
242
250
  resp = self.http.get([self.url, endpoint].join('/'), query, {'Content-type' => 'application/json', 'Accept' => 'application/json'})
243
- if resp.status == 200
244
- begin
245
- data = JSON.parse(resp.body)
246
- rescue JSON::ParserError
247
- raise Exception, "Failed to decode response message"
248
- end
249
- else
250
- raise Exception, "Query returned a non successful HTTP code (Status: #{resp.status}, Reason: #{resp.reason})"
251
+ begin
252
+ data = JSON.parse(resp.body) unless resp.body.empty?
253
+ rescue JSON::ParserError
254
+ raise Exception, "Failed to decode response message"
255
+ end
256
+ if resp.status != 200
257
+ error = data.include?('error') ? data['error'] : data.inspect if data
258
+ raise Exception, "Query returned a non successful HTTP code (Status: #{resp.status}, Reason: #{resp.reason}#{", Error: #{error}" if error}"
251
259
  end
252
260
  rescue
253
261
  raise Exception, "Failed to execute GET request to Kapacitor REST API (#{$!})"
@@ -264,14 +272,14 @@ private
264
272
  def api_post(endpoint:, data:)
265
273
  begin
266
274
  resp = self.http.post([self.url, endpoint].join('/'), data.to_json, {'Content-Type' => 'application/json', 'Accept' => 'application/json'})
267
- if resp.status == 200
268
- begin
269
- data = JSON.parse(resp.body)
270
- rescue JSON::ParserError
271
- raise Exception, "Failed to decode response message"
272
- end
273
- else
274
- raise Exception, "Query returned a non successful HTTP code (Status: #{resp.status}, Reason: #{resp.reason})"
275
+ begin
276
+ data = JSON.parse(resp.body) unless resp.body.empty?
277
+ rescue JSON::ParserError
278
+ raise Exception, "Failed to decode response message"
279
+ end
280
+ if resp.status != 200
281
+ error = data.include?('error') ? data['error'] : data.inspect if data
282
+ raise Exception, "Query returned a non successful HTTP code (Status: #{resp.status}, Reason: #{resp.reason}#{", Error: #{error}" if error}"
275
283
  end
276
284
  rescue
277
285
  raise Exception, "Failed to execute POST request to Kapacitor REST API (#{$!})"
@@ -287,16 +295,14 @@ private
287
295
  def api_delete(endpoint:)
288
296
  begin
289
297
  resp = self.http.delete([self.url, endpoint].join('/'), {'Content-type' => 'application/json', 'Accept' => 'application/json'})
290
- if resp.status == 204
291
- if resp.body
292
- begin
293
- data = JSON.parse(resp.body)
294
- rescue JSON::ParserError
295
- raise Exception, "Failed to decode response message"
296
- end
297
- end
298
- else
299
- raise Exception, "Query returned a non successful HTTP code (Status: #{resp.status}, Reason: #{resp.reason})"
298
+ begin
299
+ data = JSON.parse(resp.body) unless resp.body.empty?
300
+ rescue JSON::ParserError
301
+ raise Exception, "Failed to decode response message"
302
+ end
303
+ if resp.status != 204
304
+ error = data.include?('error') ? data['error'] : data.inspect if data
305
+ raise Exception, "Query returned a non successful HTTP code (Status: #{resp.status}, Reason: #{resp.reason}#{", Error: #{error}" if error}"
300
306
  end
301
307
  rescue
302
308
  raise Exception, "Failed to execute DELETE request to Kapacitor REST API (#{$!})"
@@ -313,14 +319,14 @@ private
313
319
  def api_patch(endpoint:, data:)
314
320
  begin
315
321
  resp = self.http.patch([self.url, endpoint].join('/'), data.to_json, {'Content-Type' => 'application/json', 'Accept' => 'application/json'})
316
- if resp.status == 200
317
- begin
318
- data = JSON.parse(resp.body)
319
- rescue JSON::ParserError
320
- raise Exception, "Failed to decode response message"
321
- end
322
- else
323
- raise Exception, "Query returned a non successful HTTP code (Code: #{resp.status}, Reason: #{resp.reason})"
322
+ begin
323
+ data = JSON.parse(resp.body) unless resp.body.empty?
324
+ rescue JSON::ParserError
325
+ raise Exception, "Failed to decode response message"
326
+ end
327
+ if resp.status != 200
328
+ error = data.include?('error') ? data['error'] : data.inspect if data
329
+ raise Exception, "Query returned a non successful HTTP code (Status: #{resp.status}, Reason: #{resp.reason}#{", Error: #{error}" if error}"
324
330
  end
325
331
  rescue
326
332
  raise Exception, "Failed to execute PATCH request to Kapacitor REST API (#{$!})"
@@ -337,14 +343,14 @@ private
337
343
  def api_put(endpoint:, data:)
338
344
  begin
339
345
  resp = self.http.put([self.url, endpoint].join('/'), data.to_json, {'Content-Type' => 'application/json', 'Accept' => 'application/json'})
340
- if resp.status == 200
341
- begin
342
- data = JSON.parse(resp.body)
343
- rescue JSON::ParserError
344
- raise Exception, "Failed to decode response message"
345
- end
346
- else
347
- raise Exception, "Query returned a non successful HTTP code (Status: #{resp.status}, Reason: #{resp.reason})"
346
+ begin
347
+ data = JSON.parse(resp.body) unless resp.body.empty?
348
+ rescue JSON::ParserError
349
+ raise Exception, "Failed to decode response message"
350
+ end
351
+ if resp.status != 200
352
+ error = data.include?('error') ? data['error'] : data.inspect if data
353
+ raise Exception, "Query returned a non successful HTTP code (Status: #{resp.status}, Reason: #{resp.reason}#{", Error: #{error}" if error}"
348
354
  end
349
355
  rescue
350
356
  raise Exception, "Failed to execute PUT request to Kapacitor REST API (#{$!})"
@@ -3,7 +3,7 @@
3
3
  #
4
4
 
5
5
  module Kapacitor
6
- VERSION = "1.0.2"
6
+ VERSION = "1.0.7"
7
7
 
8
8
  def self.version
9
9
  VERSION
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kapacitor-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matteo Cerutti
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-04 00:00:00.000000000 Z
11
+ date: 2020-11-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httpclient
@@ -52,7 +52,7 @@ homepage: https://github.com/m4ce/kapacitor-ruby
52
52
  licenses:
53
53
  - Apache 2.0
54
54
  metadata: {}
55
- post_install_message:
55
+ post_install_message:
56
56
  rdoc_options: []
57
57
  require_paths:
58
58
  - lib
@@ -67,9 +67,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  requirements: []
70
- rubyforge_project:
71
- rubygems_version: 2.6.8
72
- signing_key:
70
+ rubygems_version: 3.0.1
71
+ signing_key:
73
72
  specification_version: 4
74
73
  summary: Ruby client library that allows to interact with the Kapacitor JSON REST
75
74
  API