wavefront-sdk 1.6.2 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +6 -0
- data/HISTORY.md +39 -13
- data/README.md +75 -28
- data/Rakefile +1 -1
- data/lib/wavefront-sdk/alert.rb +113 -17
- data/lib/wavefront-sdk/cloudintegration.rb +8 -8
- data/lib/wavefront-sdk/core/api.rb +99 -0
- data/lib/wavefront-sdk/core/api_caller.rb +211 -0
- data/lib/wavefront-sdk/{exception.rb → core/exception.rb} +11 -6
- data/lib/wavefront-sdk/{logger.rb → core/logger.rb} +2 -3
- data/lib/wavefront-sdk/{response.rb → core/response.rb} +69 -52
- data/lib/wavefront-sdk/credentials.rb +6 -3
- data/lib/wavefront-sdk/dashboard.rb +14 -14
- data/lib/wavefront-sdk/{constants.rb → defs/constants.rb} +1 -0
- data/lib/wavefront-sdk/defs/version.rb +1 -0
- data/lib/wavefront-sdk/derivedmetric.rb +14 -14
- data/lib/wavefront-sdk/distribution.rb +75 -0
- data/lib/wavefront-sdk/event.rb +13 -13
- data/lib/wavefront-sdk/externallink.rb +8 -8
- data/lib/wavefront-sdk/integration.rb +9 -9
- data/lib/wavefront-sdk/maintenancewindow.rb +54 -8
- data/lib/wavefront-sdk/message.rb +4 -4
- data/lib/wavefront-sdk/metric.rb +3 -3
- data/lib/wavefront-sdk/notificant.rb +9 -9
- data/lib/wavefront-sdk/paginator/base.rb +148 -0
- data/lib/wavefront-sdk/paginator/delete.rb +11 -0
- data/lib/wavefront-sdk/paginator/get.rb +11 -0
- data/lib/wavefront-sdk/paginator/post.rb +64 -0
- data/lib/wavefront-sdk/paginator/put.rb +11 -0
- data/lib/wavefront-sdk/proxy.rb +7 -7
- data/lib/wavefront-sdk/query.rb +4 -4
- data/lib/wavefront-sdk/report.rb +9 -25
- data/lib/wavefront-sdk/savedsearch.rb +8 -8
- data/lib/wavefront-sdk/search.rb +16 -13
- data/lib/wavefront-sdk/source.rb +14 -14
- data/lib/wavefront-sdk/{mixins.rb → support/mixins.rb} +8 -2
- data/lib/wavefront-sdk/{parse_time.rb → support/parse_time.rb} +2 -0
- data/lib/wavefront-sdk/types/status.rb +52 -0
- data/lib/wavefront-sdk/user.rb +8 -8
- data/lib/wavefront-sdk/validators.rb +52 -3
- data/lib/wavefront-sdk/webhook.rb +8 -8
- data/lib/wavefront-sdk/write.rb +153 -52
- data/lib/wavefront-sdk/writers/api.rb +38 -0
- data/lib/wavefront-sdk/writers/core.rb +146 -0
- data/lib/wavefront-sdk/writers/http.rb +42 -0
- data/lib/wavefront-sdk/writers/socket.rb +66 -0
- data/lib/wavefront-sdk/writers/summary.rb +39 -0
- data/lib/wavefront_sdk.rb +9 -0
- data/spec/spec_helper.rb +3 -0
- data/spec/wavefront-sdk/alert_spec.rb +6 -0
- data/spec/wavefront-sdk/{base_spec.rb → core/api_caller_spec.rb} +28 -41
- data/spec/wavefront-sdk/core/api_spec.rb +31 -0
- data/spec/wavefront-sdk/{logger_spec.rb → core/logger_spec.rb} +3 -3
- data/spec/wavefront-sdk/core/response_spec.rb +77 -0
- data/spec/wavefront-sdk/credentials_spec.rb +15 -10
- data/spec/wavefront-sdk/distribution_spec.rb +78 -0
- data/spec/wavefront-sdk/paginator/base_spec.rb +67 -0
- data/spec/wavefront-sdk/paginator/post_spec.rb +53 -0
- data/spec/wavefront-sdk/report_spec.rb +3 -1
- data/spec/wavefront-sdk/search_spec.rb +25 -0
- data/spec/wavefront-sdk/stdlib/array_spec.rb +2 -1
- data/spec/wavefront-sdk/stdlib/hash_spec.rb +6 -1
- data/spec/wavefront-sdk/stdlib/string_spec.rb +2 -0
- data/spec/wavefront-sdk/{mixins_spec.rb → support/mixins_spec.rb} +2 -2
- data/spec/wavefront-sdk/{parse_time_spec.rb → support/parse_time_spec.rb} +2 -2
- data/spec/wavefront-sdk/validators_spec.rb +64 -1
- data/spec/wavefront-sdk/write_spec.rb +55 -77
- data/spec/wavefront-sdk/writers/api_spec.rb +45 -0
- data/spec/wavefront-sdk/writers/core_spec.rb +49 -0
- data/spec/wavefront-sdk/writers/http_spec.rb +69 -0
- data/spec/wavefront-sdk/writers/socket_spec.rb +104 -0
- data/spec/wavefront-sdk/writers/summary_spec.rb +38 -0
- data/wavefront-sdk.gemspec +1 -1
- metadata +52 -24
- data/lib/wavefront-sdk/base.rb +0 -264
- data/lib/wavefront-sdk/base_write.rb +0 -185
- data/lib/wavefront-sdk/stdlib.rb +0 -5
- data/lib/wavefront-sdk/version.rb +0 -1
- data/spec/wavefront-sdk/base_write_spec.rb +0 -82
- data/spec/wavefront-sdk/response_spec.rb +0 -39
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 78759a49a05aded24a69a8759c648c10c7e8f52857597a51ce73c3703d24b42a
|
4
|
+
data.tar.gz: cb66061865a11ecef526e726cb804ca2ab1f2a75ba72224be1c6c20ca2dabfc9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6be149c21dd32ce4a6f8dd56843331fe08f8b508fd0894139bf6d09279a0061fbb280553cdb35f33e546c3124f4d4ebfa4eca7bedfa26ef1489a4d5f178ca238
|
7
|
+
data.tar.gz: 41c617f4c39afd7e21965afe89521f17c2e8713c402c18259ca907b7dab09c29ba053f4497c14cbba5ec0601874a6aa37e18a81c5f26178dd85d737ef4d5df08
|
data/.rubocop.yml
CHANGED
data/HISTORY.md
CHANGED
@@ -1,10 +1,48 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 2.0.0
|
4
|
+
* Remove `#everything` method from all classes. (Breaking change.)
|
5
|
+
* Calling any method which takes the `limit` argument with `limit`
|
6
|
+
set to `:all` will automatically handle pagination, fetching all
|
7
|
+
matching objects.
|
8
|
+
* Calling with `limit` set to `:lazy` returns a lazy `Enumerable`
|
9
|
+
over which you can iterate. Every element is an object,
|
10
|
+
* Added one-word methods like `#snoozed`, `#active` and so-on to the
|
11
|
+
`Wavefront::Alert` class. These replicate the behaviour of similarly
|
12
|
+
named methods in the v1 SDK. (Though they use different underlying
|
13
|
+
API calls, as the alerts API has changed significantly.)
|
14
|
+
* Added `#pending` and `#ongoing` methods to
|
15
|
+
`Wavefront::MaintenanceWindow`.
|
16
|
+
* Added `MaintenanceWindow#summary` method, replicating the behaviour
|
17
|
+
of the `summary` v1 API call.
|
18
|
+
* Added `#ids`, `#names` and `#empty?` helper methods to
|
19
|
+
`Wavefront::Response`.
|
20
|
+
* Add `Distribution` class to help you write [Histogram
|
21
|
+
distributions](https://docs.wavefront.com/proxies_histograms.html).
|
22
|
+
* Writing points or distributions (or reporting points) shows the
|
23
|
+
wire-format point being sent if in `debug` or `verbose` mode.
|
24
|
+
* Broke up old write classes, moving the transport mechanism
|
25
|
+
into a separate class. The interface is backward-compatible,
|
26
|
+
though a new `:writer` constructor option lets you select the
|
27
|
+
transport mechanism.
|
28
|
+
* New transport mechanism class allows points to be HTTP POSTed to a
|
29
|
+
proxy rather than being written to a socket.
|
30
|
+
* The summary object returned when writing points is now a
|
31
|
+
standalone class.
|
32
|
+
* Use `wavefront` rather than `graphite_v2` as the `report` data
|
33
|
+
type.
|
34
|
+
* `Wavefront::Report` is now a shim around `Wavefront::Write`, left
|
35
|
+
in for backward-compatability. The "correct" way to send data via
|
36
|
+
the API is using `Wavefront::Write`, specifying the `:api` writer.
|
37
|
+
* `Wavefront::Credentials` object has new `all` method, which gives
|
38
|
+
a hash of proxy *and* API credentials. This is useful for passing
|
39
|
+
to `Wavefront::Write` as it means all writers will work without
|
40
|
+
modifying your code.
|
41
|
+
|
3
42
|
## 1.6.2 (22/08/2018)
|
4
43
|
* Drop log priority of write class messages.
|
5
44
|
|
6
45
|
## 1.6.1 (22/08/2018)
|
7
|
-
|
8
46
|
* Fix Ruby 2.2 bugs
|
9
47
|
* Improve unit test separation
|
10
48
|
* Allow updating of all external link parameters
|
@@ -15,27 +53,22 @@
|
|
15
53
|
* Improve README.
|
16
54
|
|
17
55
|
## 1.5.0 (25/06/2018)
|
18
|
-
|
19
56
|
* Add [derived
|
20
57
|
metric](https://docs.wavefront.com/derived_metrics.html) support.
|
21
58
|
* Add this changelog.
|
22
59
|
|
23
60
|
## 1.4.0 (10/04/2018)
|
24
|
-
|
25
61
|
* Add support for [direct
|
26
62
|
ingestion](https://docs.wavefront.com/direct_ingestion.html).
|
27
63
|
|
28
64
|
## 1.3.2 (03/04/2018)
|
29
|
-
|
30
65
|
* Fix regression in write class.
|
31
66
|
|
32
67
|
## 1.3.1 (03/04/2018)
|
33
|
-
|
34
68
|
* Fix Ruby 2.2 support.
|
35
69
|
* Code tidy and linting improvements.
|
36
70
|
|
37
71
|
## 1.3.0 (29/03/2018)
|
38
|
-
|
39
72
|
* Add support for delta metrics.
|
40
73
|
* Add automatic pagination support for long lists of objects.
|
41
74
|
Such lists can be treated as Ruby enumerables.
|
@@ -46,33 +79,26 @@
|
|
46
79
|
* Support Ruby 2.5.
|
47
80
|
|
48
81
|
## 1.2.1 (12/10/2017)
|
49
|
-
|
50
82
|
* Fix bug in relative time support.
|
51
83
|
* Fix Ruby 2.4 support.
|
52
84
|
|
53
85
|
## 1.2.0 (12/10/2017)
|
54
|
-
|
55
86
|
* Support relative times through mixin methods.
|
56
87
|
|
57
88
|
## 1.1.0 (09/10/2017)
|
58
|
-
|
59
89
|
* Add support for notificant (alert target) API path.
|
60
90
|
* Add support for integration API path.
|
61
91
|
* Support new source description set/delete API endpoint.
|
62
92
|
|
63
93
|
## 1.0.3 (20/09/2017)
|
64
|
-
|
65
94
|
* Gracefully handle tags with `nil` values.
|
66
95
|
* Bump dependencies.
|
67
96
|
|
68
97
|
## 1.0.2 (04/08/2017)
|
69
|
-
|
70
98
|
* Maintenance window bugfixes.
|
71
99
|
|
72
100
|
## 1.0.1 (31/07/2017)
|
73
|
-
|
74
101
|
* Fix message ID validator.
|
75
102
|
|
76
103
|
## 1.0.0 (11/06/2017)
|
77
|
-
|
78
104
|
First official release.
|
data/README.md
CHANGED
@@ -9,7 +9,8 @@ auto-generated SDK.
|
|
9
9
|
As well as complete API coverage, `wavefront-sdk` includes methods
|
10
10
|
which facilitate various common tasks, and provides non-API
|
11
11
|
features such as credential management, and writing points through a
|
12
|
-
proxy.
|
12
|
+
proxy. It also has methods mimicking the behaviour of useful v1 API
|
13
|
+
calls which did not make it into v2.
|
13
14
|
|
14
15
|
## Installation
|
15
16
|
|
@@ -35,7 +36,7 @@ rubydoc.info](http://www.rubydoc.info/gems/wavefront-sdk/).
|
|
35
36
|
|
36
37
|
## Examples
|
37
38
|
|
38
|
-
First, let's list the
|
39
|
+
First, let's list the Wavefront proxies in our account. The `list()`
|
39
40
|
method will return a `Wavefront::Response` object. This object has
|
40
41
|
`status` and `response` methods. `status` always yields a structure
|
41
42
|
containing `result`, `message` and `code` fields which can be
|
@@ -53,7 +54,7 @@ you to the same place.
|
|
53
54
|
CREDS = { endpoint: 'metrics.wavefront.com',
|
54
55
|
token: 'c7a1ff30-0dd8-fa60-e14d-f58f91bafc0e' }
|
55
56
|
|
56
|
-
require 'wavefront-sdk/
|
57
|
+
require 'wavefront-sdk/proxy'
|
57
58
|
|
58
59
|
# You can pass in a Ruby logger object, and tell the SDK to be
|
59
60
|
# verbose.
|
@@ -62,35 +63,62 @@ require 'logger'
|
|
62
63
|
log = Logger.new(STDOUT)
|
63
64
|
|
64
65
|
wf = Wavefront::User.new(CREDS, verbose: true, logger: log)
|
66
|
+
proxies = wf.list
|
67
|
+
|
68
|
+
puts proxies.class
|
69
|
+
# Wavefront::Response
|
65
70
|
|
66
|
-
# See how things went
|
71
|
+
# See how things went. How specific do you want to be?
|
67
72
|
|
68
|
-
|
69
|
-
|
73
|
+
puts proxies.ok?
|
74
|
+
# true
|
75
|
+
puts proxies.empty?
|
76
|
+
# false
|
77
|
+
puts proxies.status
|
78
|
+
# {:result=>"OK", :message=>"", :code=>200}
|
79
|
+
puts proxies.status.code
|
80
|
+
# 200
|
70
81
|
|
71
|
-
#
|
82
|
+
# Now print the proxy IDs
|
72
83
|
|
73
|
-
|
84
|
+
puts proxies.ids
|
85
|
+
# 1439acb2-ab07-4cf9-8397-2f2d758e52a0
|
86
|
+
# 87eca9df-fc47-4a24-88cf-6dd0bae245a9
|
87
|
+
# df77bd37-8f32-4e0c-b578-51eb42f22b6f
|
74
88
|
|
75
|
-
#
|
76
|
-
# response.
|
89
|
+
# Delete the first one.
|
77
90
|
|
78
|
-
wf.delete('
|
91
|
+
result = wf.delete('1439acb2-ab07-4cf9-8397-2f2d758e52a0')
|
92
|
+
puts result.ok?
|
93
|
+
# true
|
79
94
|
```
|
80
95
|
|
81
|
-
|
82
|
-
|
83
|
-
|
96
|
+
By default (because it's the default behaviour of the API),
|
97
|
+
all API classes (except `user`) will only return blocks of results
|
98
|
+
when you ask for a list of objects.
|
99
|
+
|
100
|
+
You can set an offset and a limit when you list, but setting the
|
101
|
+
limit to the magic value `:all` will return all items, without you
|
102
|
+
having to deal with pagination.
|
103
|
+
|
104
|
+
Calling a method with the limit set to `:lazy` returns a lazy
|
105
|
+
enumerable.
|
84
106
|
|
85
107
|
```ruby
|
86
|
-
Wavefront::Alert.new(
|
87
|
-
|
88
|
-
|
108
|
+
wf = Wavefront::Alert.new(creds.all)
|
109
|
+
|
110
|
+
# The first argument is how many object to get with each API call,
|
111
|
+
# the second gets us a lazy #Enumerable
|
112
|
+
wf.list(99, :lazy).each { |alert| puts alert.name }
|
113
|
+
# Point Rate
|
114
|
+
# Disk Error
|
115
|
+
# ...
|
89
116
|
```
|
90
117
|
|
91
|
-
|
92
|
-
|
93
|
-
|
118
|
+
We can easily write queries. Let's retrieve a timeseries over the
|
119
|
+
last 10 minutes, with one minute bucket granularity. We will
|
120
|
+
describe the time as a Ruby object, but could also use an epoch
|
121
|
+
timestamp. The SDK happily converts between the two.
|
94
122
|
|
95
123
|
|
96
124
|
```ruby
|
@@ -115,20 +143,39 @@ require 'wavefront-sdk/write'
|
|
115
143
|
|
116
144
|
W_CREDS = { proxy: 'wavefront.localnet', port: 2878 }
|
117
145
|
|
118
|
-
wf = Wavefront::Write.new(W_CREDS,
|
146
|
+
wf = Wavefront::Write.new(W_CREDS, verbose:true)
|
119
147
|
|
120
148
|
task = wf.write( [{ path: 'dev.test.sdk', value: 10 }])
|
121
|
-
|
122
|
-
|
123
|
-
#
|
124
|
-
puts task.
|
125
|
-
#
|
149
|
+
# SDK DEBUG: Connecting to wavefront.localnet:2878.
|
150
|
+
# SDK INFO: dev.test.sdk 10 source=box
|
151
|
+
# SDK DEBUG: Closing connection to proxy.
|
152
|
+
puts task.response
|
153
|
+
# {"sent"=>1, "rejected"=>0, "unsent"=>0}
|
154
|
+
puts task.ok?
|
155
|
+
# true
|
126
156
|
```
|
127
157
|
|
128
158
|
You can send delta metrics either by manually prefixing your metric
|
129
|
-
path with a delta symbol, or by using the `write_delta()` method
|
159
|
+
path with a delta symbol, or by using the `write_delta()` method.
|
160
|
+
There is even a class to help you write Wavefront distributions.
|
161
|
+
|
162
|
+
You can also send points to a local proxy over HTTP. Just specify
|
163
|
+
`:http` as the `writer` option when you create your write object.
|
164
|
+
|
165
|
+
```ruby
|
166
|
+
wf = Wavefront::Write.new(W_CREDS, writer: :http, verbose: true)
|
167
|
+
|
168
|
+
task = wf.write( [{ path: 'dev.test.sdk', value: 10 }])
|
169
|
+
# SDK INFO: dev.test.sdk 10 source=box
|
170
|
+
# SDK INFO: uri: POST http://wavefront.localnet:2878/
|
171
|
+
# SDK INFO: body: dev.test.sdk 10 source=box
|
172
|
+
p task.response
|
173
|
+
# {"sent"=>1, "rejected"=>0, "unsent"=>0}
|
174
|
+
puts task.ok?
|
175
|
+
# true
|
176
|
+
```
|
130
177
|
|
131
|
-
The SDK
|
178
|
+
The SDK provides a helper class for extracting credentials from a
|
132
179
|
configuration file. If you don't supply a file, defaults will be
|
133
180
|
used. You can even override things with environment variables.
|
134
181
|
|
data/Rakefile
CHANGED
data/lib/wavefront-sdk/alert.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'defs/constants'
|
2
|
+
require_relative 'core/api'
|
2
3
|
|
3
4
|
module Wavefront
|
4
5
|
#
|
5
6
|
# View and manage alerts. Alerts are identified by their millisecond
|
6
7
|
# epoch timestamp. Returns a Wavefront::Response::Alert object.
|
7
8
|
#
|
8
|
-
class Alert <
|
9
|
+
class Alert < CoreApi
|
9
10
|
def update_keys
|
10
11
|
%i[id name target condition displayExpression minutes
|
11
12
|
resolveAfterMinutes severity additionalInformation]
|
@@ -19,7 +20,7 @@ module Wavefront
|
|
19
20
|
# @return [Hash]
|
20
21
|
#
|
21
22
|
def list(offset = 0, limit = 100)
|
22
|
-
|
23
|
+
api.get('', offset: offset, limit: limit)
|
23
24
|
end
|
24
25
|
|
25
26
|
# POST /api/v2/alert
|
@@ -32,7 +33,7 @@ module Wavefront
|
|
32
33
|
#
|
33
34
|
def create(body)
|
34
35
|
raise ArgumentError unless body.is_a?(Hash)
|
35
|
-
|
36
|
+
api.post('', body, 'application/json')
|
36
37
|
end
|
37
38
|
|
38
39
|
# DELETE /api/v2/alert/id
|
@@ -47,7 +48,7 @@ module Wavefront
|
|
47
48
|
#
|
48
49
|
def delete(id)
|
49
50
|
wf_alert_id?(id)
|
50
|
-
|
51
|
+
api.delete(id)
|
51
52
|
end
|
52
53
|
|
53
54
|
# GET /api/v2/alert/id
|
@@ -64,7 +65,7 @@ module Wavefront
|
|
64
65
|
wf_version?(version) if version
|
65
66
|
fragments = [id]
|
66
67
|
fragments += ['history', version] if version
|
67
|
-
|
68
|
+
api.get(fragments.uri_concat)
|
68
69
|
end
|
69
70
|
|
70
71
|
# PUT /api/v2/alert/id
|
@@ -82,9 +83,9 @@ module Wavefront
|
|
82
83
|
wf_alert_id?(id)
|
83
84
|
raise ArgumentError unless body.is_a?(Hash)
|
84
85
|
|
85
|
-
return
|
86
|
+
return api.put(id, body, 'application/json') unless modify
|
86
87
|
|
87
|
-
|
88
|
+
api.put(id, hash_for_update(describe(id).response, body),
|
88
89
|
'application/json')
|
89
90
|
end
|
90
91
|
|
@@ -100,7 +101,7 @@ module Wavefront
|
|
100
101
|
qs[:offset] = offset if offset
|
101
102
|
qs[:limit] = limit if limit
|
102
103
|
|
103
|
-
|
104
|
+
api.get([id, 'history'].uri_concat, qs)
|
104
105
|
end
|
105
106
|
|
106
107
|
# POST /api/v2/alert/id/snooze
|
@@ -114,7 +115,7 @@ module Wavefront
|
|
114
115
|
def snooze(id, seconds = nil)
|
115
116
|
wf_alert_id?(id)
|
116
117
|
qs = seconds ? "?seconds=#{seconds}" : ''
|
117
|
-
|
118
|
+
api.post([id, "snooze#{qs}"].uri_concat, nil)
|
118
119
|
end
|
119
120
|
|
120
121
|
# GET /api/v2/alert/id/tag
|
@@ -125,7 +126,7 @@ module Wavefront
|
|
125
126
|
#
|
126
127
|
def tags(id)
|
127
128
|
wf_alert_id?(id)
|
128
|
-
|
129
|
+
api.get([id, 'tag'].uri_concat)
|
129
130
|
end
|
130
131
|
|
131
132
|
# POST /api/v2/alert/id/tag
|
@@ -139,7 +140,7 @@ module Wavefront
|
|
139
140
|
wf_alert_id?(id)
|
140
141
|
tags = Array(tags)
|
141
142
|
tags.each { |t| wf_string?(t) }
|
142
|
-
|
143
|
+
api.post([id, 'tag'].uri_concat, tags.to_json, 'application/json')
|
143
144
|
end
|
144
145
|
|
145
146
|
# DELETE /api/v2/alert/id/tag/tagValue
|
@@ -152,7 +153,7 @@ module Wavefront
|
|
152
153
|
def tag_delete(id, tag)
|
153
154
|
wf_alert_id?(id)
|
154
155
|
wf_string?(tag)
|
155
|
-
|
156
|
+
api.delete([id, 'tag', tag].uri_concat)
|
156
157
|
end
|
157
158
|
|
158
159
|
# PUT /api/v2/alert/id/tag/tagValue
|
@@ -165,7 +166,7 @@ module Wavefront
|
|
165
166
|
def tag_add(id, tag)
|
166
167
|
wf_alert_id?(id)
|
167
168
|
wf_string?(tag)
|
168
|
-
|
169
|
+
api.put([id, 'tag', tag].uri_concat)
|
169
170
|
end
|
170
171
|
|
171
172
|
# POST /api/v2/alert/id/undelete
|
@@ -176,7 +177,7 @@ module Wavefront
|
|
176
177
|
#
|
177
178
|
def undelete(id)
|
178
179
|
wf_alert_id?(id)
|
179
|
-
|
180
|
+
api.post([id, 'undelete'].uri_concat)
|
180
181
|
end
|
181
182
|
|
182
183
|
# POST /api/v2/alert/id/unsnooze
|
@@ -187,7 +188,7 @@ module Wavefront
|
|
187
188
|
#
|
188
189
|
def unsnooze(id)
|
189
190
|
wf_alert_id?(id)
|
190
|
-
|
191
|
+
api.post([id, 'unsnooze'].uri_concat)
|
191
192
|
end
|
192
193
|
|
193
194
|
# GET /api/v2/alert/summary
|
@@ -196,7 +197,102 @@ module Wavefront
|
|
196
197
|
# @return [Wavefront::Response]
|
197
198
|
#
|
198
199
|
def summary
|
199
|
-
|
200
|
+
api.get('summary')
|
201
|
+
end
|
202
|
+
|
203
|
+
# The following methods replicate similarly named ones in the v1
|
204
|
+
# SDK. The v2 API does not provide the level of alert-querying
|
205
|
+
# convenience v1 did, but we can still give our users those
|
206
|
+
# lovely simple methods. Note that these are constructions of
|
207
|
+
# the SDK and do not actually correspond to the underlying API.
|
208
|
+
|
209
|
+
# @return [Wavefront::Response] all currently firing alerts
|
210
|
+
#
|
211
|
+
def active
|
212
|
+
firing
|
213
|
+
end
|
214
|
+
|
215
|
+
# @return [Wavefront::Response] all alerts currently in a
|
216
|
+
# maintenance window.
|
217
|
+
#
|
218
|
+
def affected_by__maintenance
|
219
|
+
in_maintenance
|
220
|
+
end
|
221
|
+
|
222
|
+
# @return [Wavefront::Response] all alerts which have an invalid
|
223
|
+
# query.
|
224
|
+
#
|
225
|
+
def invalid
|
226
|
+
alerts_in_state(:invalid)
|
227
|
+
end
|
228
|
+
|
229
|
+
# For completeness, one-word methods like those above for all
|
230
|
+
# possible alert states.
|
231
|
+
|
232
|
+
# @return [Wavefront::Response] all alerts currently snoozed
|
233
|
+
#
|
234
|
+
def snoozed
|
235
|
+
alerts_in_state(:snoozed)
|
236
|
+
end
|
237
|
+
|
238
|
+
# @return [Wavefront::Response] all currently firing alerts.
|
239
|
+
#
|
240
|
+
def firing
|
241
|
+
alerts_in_state(:firing)
|
242
|
+
end
|
243
|
+
|
244
|
+
# @return [Wavefront::Response] all alerts currently in a
|
245
|
+
# maintenance window.
|
246
|
+
#
|
247
|
+
def in_maintenance
|
248
|
+
alerts_in_state(:in_maintenance)
|
249
|
+
end
|
250
|
+
|
251
|
+
# @return [Wavefront::Response] I honestly don't know what the
|
252
|
+
# NONE state denotes, but this will fetch alerts which have
|
253
|
+
# it.
|
254
|
+
#
|
255
|
+
def none
|
256
|
+
alerts_in_state(:none)
|
257
|
+
end
|
258
|
+
|
259
|
+
# @return [Wavefront::Response] all alerts being checked.
|
260
|
+
#
|
261
|
+
def checking
|
262
|
+
alerts_in_state(:checking)
|
263
|
+
end
|
264
|
+
|
265
|
+
# @return [Wavefront::Response] all alerts in the trash.
|
266
|
+
#
|
267
|
+
def trash
|
268
|
+
alerts_in_state(:trash)
|
269
|
+
end
|
270
|
+
|
271
|
+
# @return [Wavefront::Response] all alerts reporting NO_DATA.
|
272
|
+
#
|
273
|
+
def no_data
|
274
|
+
alerts_in_state(:no_data)
|
275
|
+
end
|
276
|
+
|
277
|
+
# @return [Wavefront::Response] all your alerts
|
278
|
+
#
|
279
|
+
def all
|
280
|
+
list(PAGE_SIZE, :all)
|
281
|
+
end
|
282
|
+
|
283
|
+
# Use a search to get all alerts in the given state. You would
|
284
|
+
# be better to use one of the wrapper methods like #firing,
|
285
|
+
# #snoozed etc, but I've left this method public in case new
|
286
|
+
# states are added before the SDK supports them.
|
287
|
+
# @param state [Symbol] state such as :firing, :snoozed etc. See
|
288
|
+
# the Alert Swagger documentation for a full list
|
289
|
+
# @return [Wavfront::Response]
|
290
|
+
#
|
291
|
+
def alerts_in_state(state)
|
292
|
+
require_relative 'search'
|
293
|
+
wfs = Wavefront::Search.new(creds, opts)
|
294
|
+
query = { key: 'status', value: state, matchingMethod: 'EXACT' }
|
295
|
+
wfs.search(:alert, query, limit: :all, offset: PAGE_SIZE)
|
200
296
|
end
|
201
297
|
end
|
202
298
|
end
|