wavefront-sdk 0.0.1 → 0.1.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.
- checksums.yaml +4 -4
- data/Gemfile.lock +4 -1
- data/README.md +32 -10
- data/lib/wavefront-sdk/alert.rb +21 -26
- data/lib/wavefront-sdk/base.rb +20 -16
- data/lib/wavefront-sdk/cloudintegration.rb +5 -11
- data/lib/wavefront-sdk/credentials.rb +14 -4
- data/lib/wavefront-sdk/dashboard.rb +14 -20
- data/lib/wavefront-sdk/event.rb +15 -22
- data/lib/wavefront-sdk/exception.rb +1 -1
- data/lib/wavefront-sdk/externallink.rb +6 -14
- data/lib/wavefront-sdk/maintenancewindow.rb +4 -10
- data/lib/wavefront-sdk/message.rb +3 -9
- data/lib/wavefront-sdk/metric.rb +4 -20
- data/lib/wavefront-sdk/proxy.rb +5 -11
- data/lib/wavefront-sdk/query.rb +4 -21
- data/lib/wavefront-sdk/response.rb +65 -37
- data/lib/wavefront-sdk/savedsearch.rb +5 -11
- data/lib/wavefront-sdk/search.rb +1 -7
- data/lib/wavefront-sdk/source.rb +12 -18
- data/lib/wavefront-sdk/user.rb +14 -23
- data/lib/wavefront-sdk/validators.rb +2 -2
- data/lib/wavefront-sdk/version.rb +1 -1
- data/lib/wavefront-sdk/webhook.rb +4 -10
- data/lib/wavefront-sdk/write.rb +25 -15
- data/spec/wavefront-sdk/credentials_spec.rb +12 -12
- data/spec/wavefront-sdk/response_spec.rb +10 -10
- data/spec/wavefront-sdk/validators_spec.rb +1 -1
- data/wavefront-sdk.gemspec +2 -0
- metadata +31 -3
data/lib/wavefront-sdk/event.rb
CHANGED
@@ -5,7 +5,7 @@ module Wavefront
|
|
5
5
|
# View and manage events. Events are identified by their millisecond
|
6
6
|
# epoch timestamp.
|
7
7
|
#
|
8
|
-
class Event <
|
8
|
+
class Event < Base
|
9
9
|
@update_keys = [:startTime, :endTime, :name, :annotations]
|
10
10
|
|
11
11
|
# GET /api/v2/event
|
@@ -17,9 +17,8 @@ module Wavefront
|
|
17
17
|
# @param to [Time, Integer] end ot time range. Can be epoch
|
18
18
|
# millisecods or a Ruby time. If not supplied, defaults to the
|
19
19
|
# current time.
|
20
|
-
# @cursor [String] I think this
|
21
|
-
#
|
22
|
-
# @limit [Integer] the number of events to return
|
20
|
+
# @param cursor [String] I think this must start with a timestamp.
|
21
|
+
# @param limit [Integer] the number of events to return
|
23
22
|
# @return [Hash]
|
24
23
|
#
|
25
24
|
def list(from = nil, to = nil, limit = 100, cursor = nil)
|
@@ -52,7 +51,7 @@ module Wavefront
|
|
52
51
|
api_post('', body, 'application/json')
|
53
52
|
end
|
54
53
|
|
55
|
-
# DELETE /api/v2/event/
|
54
|
+
# DELETE /api/v2/event/id
|
56
55
|
# Delete a specific event.
|
57
56
|
#
|
58
57
|
# @param id [String] ID of the alert
|
@@ -63,7 +62,7 @@ module Wavefront
|
|
63
62
|
api_delete(id)
|
64
63
|
end
|
65
64
|
|
66
|
-
# GET /api/v2/event/
|
65
|
+
# GET /api/v2/event/id
|
67
66
|
# Get a specific event / Get a specific historical version of a
|
68
67
|
# specific event.
|
69
68
|
#
|
@@ -79,7 +78,7 @@ module Wavefront
|
|
79
78
|
api_get(fragments.uri_concat)
|
80
79
|
end
|
81
80
|
|
82
|
-
# PUT /api/v2/event/
|
81
|
+
# PUT /api/v2/event/id
|
83
82
|
# Update a specific event
|
84
83
|
#
|
85
84
|
# This method helps you update one or more properties of an event.
|
@@ -101,7 +100,7 @@ module Wavefront
|
|
101
100
|
api_put(id, hash_for_update(describe(id), body), 'application/json')
|
102
101
|
end
|
103
102
|
|
104
|
-
# POST /api/v2/event/
|
103
|
+
# POST /api/v2/event/id/close
|
105
104
|
# Close a specific event.
|
106
105
|
#
|
107
106
|
# @param id [String] the ID of the event
|
@@ -111,11 +110,11 @@ module Wavefront
|
|
111
110
|
api_post([id, 'close'].uri_concat)
|
112
111
|
end
|
113
112
|
|
114
|
-
# GET /api/v2/event/
|
113
|
+
# GET /api/v2/event/id/tag
|
115
114
|
# Get all tags associated with a specific event
|
116
115
|
#
|
117
116
|
# @param id [String] ID of the event
|
118
|
-
# @
|
117
|
+
# @return [Hash] object describing the event with status and
|
119
118
|
# response keys
|
120
119
|
#
|
121
120
|
def tags(id)
|
@@ -123,12 +122,12 @@ module Wavefront
|
|
123
122
|
api_get([id, 'tag'].uri_concat)
|
124
123
|
end
|
125
124
|
|
126
|
-
# POST /api/v2/event/
|
125
|
+
# POST /api/v2/event/id/tag
|
127
126
|
# Set all tags associated with a specific event.
|
128
127
|
#
|
129
128
|
# @param id [String] ID of the event
|
130
129
|
# @param tags [Array] list of tags to set.
|
131
|
-
# @
|
130
|
+
# @return [Hash] object describing the event with status and
|
132
131
|
# response keys
|
133
132
|
#
|
134
133
|
def tag_set(id, tags)
|
@@ -138,12 +137,12 @@ module Wavefront
|
|
138
137
|
api_post([id, 'tag'].uri_concat, tags, 'application/json')
|
139
138
|
end
|
140
139
|
|
141
|
-
# DELETE /api/v2/event/
|
140
|
+
# DELETE /api/v2/event/id/tag/tagValue
|
142
141
|
# Remove a tag from a specific event.
|
143
142
|
#
|
144
143
|
# @param id [String] ID of the event
|
145
144
|
# @param tag [String] tag to delete
|
146
|
-
# @
|
145
|
+
# @return [Hash] object with 'status' key and empty 'repsonse'
|
147
146
|
#
|
148
147
|
def tag_delete(id, tag)
|
149
148
|
wf_event_id?(id)
|
@@ -151,12 +150,12 @@ module Wavefront
|
|
151
150
|
api_delete([id, 'tag', tag].uri_concat)
|
152
151
|
end
|
153
152
|
|
154
|
-
# PUT /api/v2/event/
|
153
|
+
# PUT /api/v2/event/id/tag/tagValue
|
155
154
|
# Add a tag to a specific event.
|
156
155
|
#
|
157
156
|
# @param id [String] ID of the event
|
158
157
|
# @param tag [String] tag to set.
|
159
|
-
# @
|
158
|
+
# @return [Hash] object with 'status' key and empty 'repsonse'
|
160
159
|
#
|
161
160
|
def tag_add(id, tag)
|
162
161
|
wf_event_id?(id)
|
@@ -164,10 +163,4 @@ module Wavefront
|
|
164
163
|
api_put([id, 'tag', tag].uri_concat)
|
165
164
|
end
|
166
165
|
end
|
167
|
-
|
168
|
-
# A standard response.
|
169
|
-
#
|
170
|
-
class Response
|
171
|
-
class Event < Base; end
|
172
|
-
end
|
173
166
|
end
|
@@ -21,7 +21,6 @@ module Wavefront
|
|
21
21
|
class InvalidPoint < ::Exception; end
|
22
22
|
class InvalidPrefixLength < ::Exception; end
|
23
23
|
class InvalidProxyId < ::Exception; end
|
24
|
-
class InvalidResponse < ::Exception; end
|
25
24
|
class InvalidSavedSearchId < ::Exception; end
|
26
25
|
class InvalidSavedSearchEntity < ::Exception; end
|
27
26
|
class InvalidSourceId < ::Exception; end
|
@@ -34,6 +33,7 @@ module Wavefront
|
|
34
33
|
class InvalidWebhookId < ::Exception; end
|
35
34
|
class InvalidVersion < ::Exception; end
|
36
35
|
class NotImplemented < ::Exception; end
|
36
|
+
class UnparseableResponse < ::Exception; end
|
37
37
|
class ValueOutOfRange < ::Exception; end
|
38
38
|
end
|
39
39
|
end
|
@@ -4,7 +4,7 @@ module Wavefront
|
|
4
4
|
#
|
5
5
|
# Manage and query Wavefront external links.
|
6
6
|
#
|
7
|
-
class ExternalLink <
|
7
|
+
class ExternalLink < Base
|
8
8
|
def api_base
|
9
9
|
'/extlink'
|
10
10
|
end
|
@@ -22,9 +22,7 @@ module Wavefront
|
|
22
22
|
# POST /api/v2/extlink
|
23
23
|
# Create a specific external link.
|
24
24
|
#
|
25
|
-
# @param
|
26
|
-
# @param template [String] a mustache template for the link target
|
27
|
-
# @param description [String] a plaintext description of the link
|
25
|
+
# @param body [Hash] a description of the external link.
|
28
26
|
# @return [Hash]
|
29
27
|
#
|
30
28
|
def create(body)
|
@@ -32,7 +30,7 @@ module Wavefront
|
|
32
30
|
api_post('', body, 'application/json')
|
33
31
|
end
|
34
32
|
|
35
|
-
# DELETE /api/v2/extlink/
|
33
|
+
# DELETE /api/v2/extlink/id
|
36
34
|
# Delete a specific external link.
|
37
35
|
#
|
38
36
|
# @param id [String] ID of the link
|
@@ -43,7 +41,7 @@ module Wavefront
|
|
43
41
|
api_delete(id)
|
44
42
|
end
|
45
43
|
|
46
|
-
# GET /api/v2/extlink/
|
44
|
+
# GET /api/v2/extlink/id
|
47
45
|
# Get a specific external link.
|
48
46
|
#
|
49
47
|
# @param id [String] ID of the limnk
|
@@ -54,11 +52,11 @@ module Wavefront
|
|
54
52
|
api_get(id)
|
55
53
|
end
|
56
54
|
|
57
|
-
# PUT /api/v2/extlink/
|
55
|
+
# PUT /api/v2/extlink/id
|
58
56
|
# Update a specific external link.
|
59
57
|
#
|
60
58
|
# @param id [String] ID of the link
|
61
|
-
# @param
|
59
|
+
# @param body [Hash] a key:value hash where the key is the
|
62
60
|
# property to change and the value is its desired value
|
63
61
|
# @return [Hash]
|
64
62
|
#
|
@@ -68,10 +66,4 @@ module Wavefront
|
|
68
66
|
api_put(id, body)
|
69
67
|
end
|
70
68
|
end
|
71
|
-
|
72
|
-
# A standard response.
|
73
|
-
#
|
74
|
-
class Response
|
75
|
-
class ExternalLink < Base; end
|
76
|
-
end
|
77
69
|
end
|
@@ -4,7 +4,7 @@ module Wavefront
|
|
4
4
|
#
|
5
5
|
# Manage and query Wavefront maintenance windows
|
6
6
|
#
|
7
|
-
class MaintenanceWindow <
|
7
|
+
class MaintenanceWindow < Base
|
8
8
|
|
9
9
|
# GET /api/v2/maintenancewindow
|
10
10
|
# Get all maintenance windows for a customer.
|
@@ -31,7 +31,7 @@ module Wavefront
|
|
31
31
|
api_post('', body, 'application/json')
|
32
32
|
end
|
33
33
|
|
34
|
-
# DELETE /api/v2/maintenancewindow/
|
34
|
+
# DELETE /api/v2/maintenancewindow/id
|
35
35
|
# Delete a specific maintenance window.
|
36
36
|
#
|
37
37
|
# @param id [String, Integer] ID of the maintenance window
|
@@ -42,7 +42,7 @@ module Wavefront
|
|
42
42
|
api_delete(id)
|
43
43
|
end
|
44
44
|
|
45
|
-
# GET /api/v2/maintenancewindow/
|
45
|
+
# GET /api/v2/maintenancewindow/id
|
46
46
|
# Get a specific maintenance window.
|
47
47
|
#
|
48
48
|
# @param id [String, Integer] ID of the maintenance window
|
@@ -53,7 +53,7 @@ module Wavefront
|
|
53
53
|
api_get(id)
|
54
54
|
end
|
55
55
|
|
56
|
-
# PUT /api/v2/maintenancewindow/
|
56
|
+
# PUT /api/v2/maintenancewindow/id
|
57
57
|
# Update a specific maintenance window.
|
58
58
|
#
|
59
59
|
# @param body [Hash] a hash of parameters describing the window.
|
@@ -66,10 +66,4 @@ module Wavefront
|
|
66
66
|
api_put(id, body)
|
67
67
|
end
|
68
68
|
end
|
69
|
-
|
70
|
-
# A standard response.
|
71
|
-
#
|
72
|
-
class Response
|
73
|
-
class MaintenanceWindow < Base; end
|
74
|
-
end
|
75
69
|
end
|
@@ -4,7 +4,7 @@ module Wavefront
|
|
4
4
|
#
|
5
5
|
# Manage and query Wavefront messages.
|
6
6
|
#
|
7
|
-
class Message <
|
7
|
+
class Message < Base
|
8
8
|
|
9
9
|
# GET /api/v2/message
|
10
10
|
# Gets messages applicable to the current user, i.e. within time
|
@@ -17,20 +17,14 @@ module Wavefront
|
|
17
17
|
api_get('', { offset: offset, limit: limit, unreadOnly: unread_only })
|
18
18
|
end
|
19
19
|
|
20
|
-
# POST /api/v2/message/
|
20
|
+
# POST /api/v2/message/id/read
|
21
21
|
# Mark a specific message as read
|
22
22
|
#
|
23
|
-
# @param [
|
23
|
+
# @param id [String] message ID to mark as read
|
24
24
|
#
|
25
25
|
def read(id)
|
26
26
|
wf_message_id?(id)
|
27
27
|
api_post([id, 'read'].uri_concat)
|
28
28
|
end
|
29
29
|
end
|
30
|
-
|
31
|
-
# A standard response.
|
32
|
-
#
|
33
|
-
class Response
|
34
|
-
class Message < Base; end
|
35
|
-
end
|
36
30
|
end
|
data/lib/wavefront-sdk/metric.rb
CHANGED
@@ -4,7 +4,7 @@ module Wavefront
|
|
4
4
|
#
|
5
5
|
# Query Wavefront metrics.
|
6
6
|
#
|
7
|
-
class Metric <
|
7
|
+
class Metric < Base
|
8
8
|
def api_base
|
9
9
|
'chart/metric'
|
10
10
|
end
|
@@ -13,8 +13,9 @@ module Wavefront
|
|
13
13
|
# Get more details on a metric, including reporting sources and
|
14
14
|
# approximate last time reported
|
15
15
|
#
|
16
|
-
# @param
|
17
|
-
# @param
|
16
|
+
# @param metric [String] the metric to fetch
|
17
|
+
# @param sources [Array[String]] a list of sources to check.
|
18
|
+
# @param cursor [String] optionally begin from this result
|
18
19
|
#
|
19
20
|
def detail(metric, sources = [], cursor = nil)
|
20
21
|
raise ArgumentError unless metric.is_a?(String)
|
@@ -32,21 +33,4 @@ module Wavefront
|
|
32
33
|
api_get('detail', q)
|
33
34
|
end
|
34
35
|
end
|
35
|
-
|
36
|
-
class Response
|
37
|
-
|
38
|
-
# The Metric response forges status and response methods to look
|
39
|
-
# like other classes and create a more consistent interface.
|
40
|
-
#
|
41
|
-
class Metric < Base
|
42
|
-
def populate(raw, status)
|
43
|
-
@response = Struct.new(*raw.keys).new(*raw.values).freeze
|
44
|
-
|
45
|
-
result = status == 200 ? 'OK' : 'ERROR'
|
46
|
-
|
47
|
-
@status = Struct.new(:result, :message, :code).
|
48
|
-
new(result, raw[:message] || raw[:error], status)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
36
|
end
|
data/lib/wavefront-sdk/proxy.rb
CHANGED
@@ -4,7 +4,7 @@ module Wavefront
|
|
4
4
|
#
|
5
5
|
# Manage and query Wavefront proxies.
|
6
6
|
#
|
7
|
-
class Proxy <
|
7
|
+
class Proxy < Base
|
8
8
|
|
9
9
|
# GET /api/v2/proxy
|
10
10
|
# Get all proxies for a customer
|
@@ -16,7 +16,7 @@ module Wavefront
|
|
16
16
|
api_get('', { offset: offset, limit: limit })
|
17
17
|
end
|
18
18
|
|
19
|
-
# DELETE /api/v2/proxy/
|
19
|
+
# DELETE /api/v2/proxy/id
|
20
20
|
# Delete a specific proxy
|
21
21
|
#
|
22
22
|
# Deleting an active proxy moves it to 'trash', from where it
|
@@ -31,7 +31,7 @@ module Wavefront
|
|
31
31
|
api_delete(id)
|
32
32
|
end
|
33
33
|
|
34
|
-
# GET /api/v2/proxy/
|
34
|
+
# GET /api/v2/proxy/id
|
35
35
|
# Get a specific proxy
|
36
36
|
#
|
37
37
|
# @param id [String] ID of the proxy
|
@@ -42,7 +42,7 @@ module Wavefront
|
|
42
42
|
api_get(id)
|
43
43
|
end
|
44
44
|
|
45
|
-
# POST /api/v2/proxy/
|
45
|
+
# POST /api/v2/proxy/id/undelete
|
46
46
|
# Undelete a specific proxy
|
47
47
|
#
|
48
48
|
# Move an proxy from 'trash' back into active service.
|
@@ -55,7 +55,7 @@ module Wavefront
|
|
55
55
|
api_post([id, 'undelete'].uri_concat)
|
56
56
|
end
|
57
57
|
|
58
|
-
# PUT /api/v2/proxy/
|
58
|
+
# PUT /api/v2/proxy/id
|
59
59
|
# Update the name of a specific proxy
|
60
60
|
#
|
61
61
|
# Rename an proxy. This changes the human-readable name, not the
|
@@ -86,10 +86,4 @@ module Wavefront
|
|
86
86
|
api_put(id, payload)
|
87
87
|
end
|
88
88
|
end
|
89
|
-
|
90
|
-
# A standard response
|
91
|
-
#
|
92
|
-
class Response
|
93
|
-
class Proxy < Base; end
|
94
|
-
end
|
95
89
|
end
|
data/lib/wavefront-sdk/query.rb
CHANGED
@@ -4,7 +4,7 @@ module Wavefront
|
|
4
4
|
#
|
5
5
|
# Query Wavefront metrics.
|
6
6
|
#
|
7
|
-
class Query <
|
7
|
+
class Query < Base
|
8
8
|
def api_base
|
9
9
|
'chart'
|
10
10
|
end
|
@@ -25,6 +25,8 @@ module Wavefront
|
|
25
25
|
# @param t_end [Time, Integer] The end of the query window.
|
26
26
|
# May be a Ruby Time object, or epoch milliseconds.
|
27
27
|
# @param options [Hash] any other options defined in the API
|
28
|
+
# @raise [ArgumentError] if query is not a string
|
29
|
+
# @return [Wavefront::Response::Query]
|
28
30
|
#
|
29
31
|
def query(query, granularity = nil, t_start = nil, t_end = nil,
|
30
32
|
options = {})
|
@@ -55,7 +57,7 @@ module Wavefront
|
|
55
57
|
# (cannot contain wildcards).
|
56
58
|
# @param t_start [Time, Integer] start time of window: defaults
|
57
59
|
# to one hour before t_end
|
58
|
-
# @param
|
60
|
+
# @param t_end [Time, Integer] end time of window: defaults
|
59
61
|
# to now
|
60
62
|
#
|
61
63
|
def raw(metric, source = nil, t_start = nil, t_end = nil)
|
@@ -74,23 +76,4 @@ module Wavefront
|
|
74
76
|
api_get('raw', options)
|
75
77
|
end
|
76
78
|
end
|
77
|
-
|
78
|
-
class Response
|
79
|
-
|
80
|
-
# The Query response forges status and response methods to look
|
81
|
-
# like other classes and create a more consistent interface
|
82
|
-
#
|
83
|
-
class Query < Base
|
84
|
-
def populate(raw, status)
|
85
|
-
@response = Struct.new(*raw.keys).new(*raw.values).freeze
|
86
|
-
|
87
|
-
result = status == 200 ? 'OK' : 'ERROR'
|
88
|
-
|
89
|
-
if raw.key?(:warnings) || raw.key?(:error)
|
90
|
-
@status = Struct.new(:result, :message, :code).
|
91
|
-
new(result, raw[:message] || raw[:error], status)
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
96
79
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'json'
|
2
|
+
require 'map'
|
2
3
|
require_relative './exception'
|
3
4
|
|
4
5
|
module Wavefront
|
@@ -6,50 +7,77 @@ module Wavefront
|
|
6
7
|
# Every API path has its own response class, which allows us to
|
7
8
|
# provide a stable interface. If the API changes underneath us,
|
8
9
|
# the SDK will break in a predictable way, throwing a
|
9
|
-
# Wavefront::Exception::
|
10
|
+
# Wavefront::Exception::UnparseableResponse exception.
|
10
11
|
#
|
11
12
|
# Most Wavefront::Response classes present the returned data in
|
12
13
|
# two parts, each accessible by dot notation.
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
14
|
+
#
|
15
|
+
# @!attribute [r] status
|
16
|
+
# @return [Wavefront::Types::Status]
|
17
|
+
# @!attribute [r] response
|
18
|
+
# @return [Map] the response from the API turned into a Map,
|
19
|
+
# which allows
|
17
20
|
#
|
18
21
|
class Response
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
22
|
+
attr_reader :status, :response
|
23
|
+
|
24
|
+
# Create and return a Wavefront::Response object
|
25
|
+
# @param json [String] a raw response body from the Wavefront API
|
26
|
+
# @param status [Integer] HTTP return code from the API
|
27
|
+
# @param debug [Boolean] whether or not to print the exception
|
28
|
+
# message if one is thrown
|
29
|
+
# @raise [Wavefront::Exception::UnparseableResponse] if the
|
30
|
+
# response cannot be parsed. This may be because the API
|
31
|
+
# has changed underneath us.
|
32
|
+
#
|
33
|
+
def initialize(json, status, debug = false)
|
34
|
+
raw = json.empty? {} || JSON.parse(json, symbolize_names: true)
|
35
|
+
|
36
|
+
@status = build_status(raw, status)
|
37
|
+
@response = build_response(raw)
|
38
|
+
p self if debug
|
39
|
+
rescue => e
|
40
|
+
puts "could not parse:\n#{json}" if debug
|
41
|
+
puts e.message if debug
|
42
|
+
raise Wavefront::Exception::UnparseableResponse
|
43
|
+
end
|
44
|
+
|
45
|
+
def build_status(raw, status)
|
46
|
+
Wavefront::Type::Status.new(raw, status)
|
47
|
+
end
|
48
|
+
|
49
|
+
def build_response(raw)
|
50
|
+
Map(raw.is_a?(Hash) && raw.key?(:response) ? raw[:response] : raw)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
class Type
|
55
|
+
#
|
56
|
+
# An object which provides information about whether the request
|
57
|
+
# was successful or not. Ordinarily this is easy to construct
|
58
|
+
# from the API's JSON response, but some classes, for instance
|
59
|
+
# Wavefront::Write fake it by constructing their own.
|
60
|
+
#
|
61
|
+
# @!attribute [r] result
|
62
|
+
# @return [OK, ERROR] a string telling us how the request went
|
63
|
+
# @!attribute [r] message
|
64
|
+
# @return [String] Any informational message from the API
|
65
|
+
# @!attribute [r] code
|
66
|
+
# @return [Integer] the HTTP response code from the API
|
67
|
+
# request
|
68
|
+
#
|
69
|
+
class Status
|
70
|
+
attr_reader :result, :message, :code
|
71
|
+
|
72
|
+
# @param raw [Hash] the API response, turned into a hash
|
73
|
+
# @param status [Integer] HTTP status code
|
30
74
|
#
|
31
|
-
def initialize(
|
32
|
-
|
33
|
-
populate(JSON.parse(json, symbolize_names: true), status)
|
34
|
-
rescue => e
|
35
|
-
puts e.message if debug
|
36
|
-
raise Wavefront::Exception::InvalidResponse
|
37
|
-
end
|
75
|
+
def initialize(raw, status)
|
76
|
+
obj = raw.key?(:status) ? raw[:status] : raw
|
38
77
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
new(*raw[:status].values).freeze
|
43
|
-
end
|
44
|
-
|
45
|
-
if raw.key?(:response)
|
46
|
-
if raw[:response].key?(:items)
|
47
|
-
@response = Struct.new(*raw[:response].keys).
|
48
|
-
new(*raw[:response].values).freeze
|
49
|
-
else
|
50
|
-
@response = raw[:response]
|
51
|
-
end
|
52
|
-
end
|
78
|
+
@result = obj[:result] || nil
|
79
|
+
@message = obj[:message] || nil
|
80
|
+
@code = obj[:code] || status
|
53
81
|
end
|
54
82
|
end
|
55
83
|
end
|
@@ -5,7 +5,7 @@ module Wavefront
|
|
5
5
|
# View and manage Cloud Integrations. These are identified by
|
6
6
|
# a UUID.
|
7
7
|
#
|
8
|
-
class SavedSearch <
|
8
|
+
class SavedSearch < Base
|
9
9
|
|
10
10
|
# GET /api/v2/savedsearch
|
11
11
|
# Get all saved searches for a user.
|
@@ -30,7 +30,7 @@ module Wavefront
|
|
30
30
|
api_post('', body, 'application/json')
|
31
31
|
end
|
32
32
|
|
33
|
-
# DELETE /api/v2/savedsearch/
|
33
|
+
# DELETE /api/v2/savedsearch/id
|
34
34
|
# Delete a specific saved search.
|
35
35
|
#
|
36
36
|
# @param id [String] ID of the saved search
|
@@ -41,7 +41,7 @@ module Wavefront
|
|
41
41
|
api_delete(id)
|
42
42
|
end
|
43
43
|
|
44
|
-
# GET /api/v2/savedsearch/
|
44
|
+
# GET /api/v2/savedsearch/id
|
45
45
|
# Get a specific saved search.
|
46
46
|
#
|
47
47
|
# @param id [String] ID of the saved search
|
@@ -52,7 +52,7 @@ module Wavefront
|
|
52
52
|
api_get(id)
|
53
53
|
end
|
54
54
|
|
55
|
-
# PUT /api/v2/savedsearch/
|
55
|
+
# PUT /api/v2/savedsearch/id
|
56
56
|
# Update a specific saved search.
|
57
57
|
#
|
58
58
|
# @param id [String] ID of the saved search
|
@@ -64,7 +64,7 @@ module Wavefront
|
|
64
64
|
api_put(id, body)
|
65
65
|
end
|
66
66
|
|
67
|
-
# GET /api/v2/savedsearch/type/
|
67
|
+
# GET /api/v2/savedsearch/type/entitytype
|
68
68
|
# Get all saved searches for a specific entity type for a user.
|
69
69
|
#
|
70
70
|
# @param entitytype [String] type of entity to retrieve
|
@@ -79,10 +79,4 @@ module Wavefront
|
|
79
79
|
|
80
80
|
end
|
81
81
|
end
|
82
|
-
|
83
|
-
# A standard response
|
84
|
-
#
|
85
|
-
class Response
|
86
|
-
class SavedSearch < Base; end
|
87
|
-
end
|
88
82
|
end
|
data/lib/wavefront-sdk/search.rb
CHANGED
@@ -7,7 +7,7 @@ module Wavefront
|
|
7
7
|
# this class covers the whole API with two methods, but leaves a
|
8
8
|
# lot up to the user. It may grow, with convenience methods.
|
9
9
|
#
|
10
|
-
class Search <
|
10
|
+
class Search < Base
|
11
11
|
|
12
12
|
# POST /api/v2/search/agent
|
13
13
|
# POST /api/v2/search/agent/deleted
|
@@ -49,10 +49,4 @@ module Wavefront
|
|
49
49
|
api_post(path, body, 'application/json')
|
50
50
|
end
|
51
51
|
end
|
52
|
-
|
53
|
-
# A standard response
|
54
|
-
#
|
55
|
-
class Response
|
56
|
-
class Search < Base; end
|
57
|
-
end
|
58
52
|
end
|