wavefront-sdk 0.1.3 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f37a97bd03c5522bb5dbbfcb25e13645ae724d60
4
- data.tar.gz: 1649e2709f06702ef3dc459157dfbe67c920eb01
3
+ metadata.gz: d40567787f9b9712aec60c01fc49a6efb30d31ae
4
+ data.tar.gz: db8147e94b8589d1bd06aed17b6624b19729c3a9
5
5
  SHA512:
6
- metadata.gz: 9af27034b0984bbb7f3eb02d5ef254c8a57a497bddc6dc8d6585795b8c49e8009dfce6839cb9b6c45baf6d9ba113bed2b895d047aef3bca45065ae62375464ab
7
- data.tar.gz: 6189ac5bc2267c07050940ce83ca5f77c89a0c6ce20f6476d0dbe2817f84223c17b8a8e4d89fae35dc0106bef39025417dd3700953b8637c7265d8f93ddbf7bf
6
+ metadata.gz: cdb83339828a884226d9df89c3376245aebf8d68c2f2cdc3cafb07a73d2cf12ecba6c5faf2bbdc793f11dd7f99423a8e86c941f9ba26b0d54b21f27f2a1a52ac
7
+ data.tar.gz: c901b39875e0828471bce2c59be8db34ca97d05d459dcb6f7405d58f748241e2e13fc0104f6d5090fcfc74d44ec6a378bf16425a6ddc172c73495989b4aade7c
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- wavefront-sdk (0.1.3)
4
+ wavefront-sdk (0.1.5)
5
5
  addressable (~> 2.4)
6
6
  faraday (>= 0.12.1, < 0.13)
7
7
  inifile (>= 3.0.0)
@@ -12,7 +12,7 @@ module Wavefront
12
12
  #
13
13
  # @param offset [Int] integration at which the list begins
14
14
  # @param limit [Int] the number of integration to return
15
- # @return [Hash]
15
+ # @return [Wavefront::Response]
16
16
  #
17
17
  def list(offset = 0, limit = 100)
18
18
  api_get('', { offset: offset, limit: limit })
@@ -23,7 +23,7 @@ module Wavefront
23
23
  # valid keys.
24
24
  #
25
25
  # @param body [Hash] description of integration
26
- # @return [Hash]
26
+ # @return [Wavefront::Response]
27
27
  #
28
28
  def create(body)
29
29
  raise ArgumentError unless body.is_a?(Hash)
@@ -38,7 +38,7 @@ module Wavefront
38
38
  # integration in 'trash' removes it for ever.
39
39
  #
40
40
  # @param id [String] ID of the integration
41
- # @return [Hash]
41
+ # @return [Wavefront::Response]
42
42
  #
43
43
  def delete(id)
44
44
  wf_cloudintegration_id?(id)
@@ -49,7 +49,7 @@ module Wavefront
49
49
  # Get a specific cloud integration
50
50
  #
51
51
  # @param id [String] ID of the integration
52
- # @return [Hash]
52
+ # @return [Wavefront::Response]
53
53
  #
54
54
  def describe(id)
55
55
  wf_cloudintegration_id?(id)
@@ -60,7 +60,7 @@ module Wavefront
60
60
  # Update a specific cloud integration
61
61
  #
62
62
  # @param id [String] ID of the integration
63
- # @param body [Hash] description of integration
63
+ # @param body [Wavefront::Response]
64
64
  #
65
65
  def update(id, body)
66
66
  wf_cloudintegration_id?(id)
@@ -72,7 +72,7 @@ module Wavefront
72
72
  # Undelete a specific cloud integration
73
73
  #
74
74
  # @param id [String] ID of the integration
75
- # @return [Hash]
75
+ # @return [Wavefront::Response]
76
76
  #
77
77
  def undelete(id)
78
78
  wf_cloudintegration_id?(id)
@@ -5,13 +5,16 @@ module Wavefront
5
5
  # View and manage dashboards.
6
6
  #
7
7
  class Dashboard < Base
8
+ def update_keys
9
+ %i(id name url description sections)
10
+ end
8
11
 
9
12
  # GET /api/v2/dashboard
10
13
  # Get all dashboards for a customer.
11
14
  #
12
15
  # @param offset [Int] dashboard at which the list begins
13
16
  # @param limit [Int] the number of dashboard to return
14
- # @return [Hash]
17
+ # @return [Wavefront::Response]
15
18
  #
16
19
  def list(offset = 0, limit = 100)
17
20
  api_get('', { offset: offset, limit: limit })
@@ -22,7 +25,7 @@ module Wavefront
22
25
  # Refer to the Swagger API docs for valid keys.
23
26
  #
24
27
  # @param body [Hash] description of dashboard
25
- # @return [Hash]
28
+ # @return [Wavefront::Response]
26
29
  #
27
30
  def create(body)
28
31
  raise ArgumentError unless body.is_a?(Hash)
@@ -36,7 +39,7 @@ module Wavefront
36
39
  # 'trash' removes it for ever.
37
40
  #
38
41
  # @param id [String] ID of the dashboard
39
- # @return [Hash]
42
+ # @return [Wavefront::Response]
40
43
  #
41
44
  def delete(id)
42
45
  wf_dashboard_id?(id)
@@ -49,7 +52,7 @@ module Wavefront
49
52
  #
50
53
  # @param id [String] ID of the dashboard
51
54
  # @param version [Integer] version of dashboard
52
- # @return [Hash]
55
+ # @return [Wavefront::Response]
53
56
  #
54
57
  def describe(id, version = nil)
55
58
  wf_dashboard_id?(id)
@@ -62,22 +65,30 @@ module Wavefront
62
65
  # PUT /api/v2/dashboard/id
63
66
  # Update a specific dashboard.
64
67
  #
65
- # Refer to the Swagger API docs for valid keys.
66
- #
67
- # @param body [Hash] description of dashboard
68
- # @return [Hash]
69
- #
70
- def update(id, body)
68
+ # @param id [String] a Wavefront alert ID
69
+ # @param body [Hash] key-value hash of the parameters you wish
70
+ # to change
71
+ # @param modify [true, false] if true, use {#describe()} to get
72
+ # a hash describing the existing object, and modify that with
73
+ # the new body. If false, pass the new body straight through.
74
+ # @return [Wavefront::Response]
75
+
76
+ def update(id, body, modify = true)
71
77
  wf_dashboard_id?(id)
72
78
  raise ArgumentError unless body.is_a?(Hash)
73
- api_put(id, body)
79
+
80
+ return api_put(id, body, 'application/json') unless modify
81
+
82
+ api_put(id, hash_for_update(describe(id).response, body),
83
+ 'application/json')
74
84
  end
75
85
 
86
+
76
87
  # GET /api/v2/dashboard/id/history
77
88
  # Get the version history of an dashboard.
78
89
  #
79
90
  # @param id [String] ID of the dashboard
80
- # @return [Hash]
91
+ # @return [Wavefront::Response]
81
92
  #
82
93
  def history(id)
83
94
  wf_dashboard_id?(id)
@@ -88,7 +99,7 @@ module Wavefront
88
99
  # Get all tags associated with a specific dashboard.
89
100
  #
90
101
  # @param id [String] ID of the dashboard
91
- # @return [Hash] object describing the dashboard with status and
102
+ # @return [Wavefront::Response]
92
103
  # response keys
93
104
  #
94
105
  def tags(id)
@@ -101,7 +112,7 @@ module Wavefront
101
112
  #
102
113
  # @param id [String] ID of the dashboard
103
114
  # @param tags [Array] list of tags to set.
104
- # @return [Hash] object describing the dashboard with status and
115
+ # @return [Wavefront::Response]
105
116
  # response keys
106
117
  #
107
118
  def tag_set(id, tags)
@@ -116,7 +127,7 @@ module Wavefront
116
127
  #
117
128
  # @param id [String] ID of the dashboard
118
129
  # @param tag [String] tag to delete
119
- # @return [Hash] object with 'status' key and empty 'repsonse'
130
+ # @return [Wavefront::Response]
120
131
  #
121
132
  def tag_delete(id, tag)
122
133
  wf_dashboard_id?(id)
@@ -129,7 +140,7 @@ module Wavefront
129
140
  #
130
141
  # @param id [String] ID of the dashboard
131
142
  # @param tag [String] tag to set.
132
- # @return [Hash] object with 'status' key and empty 'repsonse'
143
+ # @return [Wavefront::Response]
133
144
  #
134
145
  def tag_add(id, tag)
135
146
  wf_dashboard_id?(id)
@@ -141,7 +152,7 @@ module Wavefront
141
152
  # Move an dashboard from 'trash' back into active service.
142
153
  #
143
154
  # @param id [String] ID of the dashboard
144
- # @return [Hash]
155
+ # @return [Wavefront::Response]
145
156
  #
146
157
  def undelete(id)
147
158
  wf_dashboard_id?(id)
@@ -21,7 +21,7 @@ module Wavefront
21
21
  # current time.
22
22
  # @param cursor [String] I think this must start with a timestamp.
23
23
  # @param limit [Integer] the number of events to return
24
- # @return [Hash]
24
+ # @return [Wavefront::Response]
25
25
  #
26
26
  def list(from = nil, to = nil, limit = 100, cursor = nil)
27
27
  raise ArgumentError unless from && to
@@ -46,7 +46,7 @@ module Wavefront
46
46
  # Refer to the Swagger docs for more information.
47
47
  #
48
48
  # @param body [Hash] description of event
49
- # @return [Hash]
49
+ # @return [Wavefront::Response]
50
50
  #
51
51
  def create(body)
52
52
  raise ArgumentError unless body.is_a?(Hash)
@@ -57,7 +57,7 @@ module Wavefront
57
57
  # Delete a specific event.
58
58
  #
59
59
  # @param id [String] ID of the alert
60
- # @return [Hash]
60
+ # @return [Wavefront::Response]
61
61
  #
62
62
  def delete(id)
63
63
  wf_event_id?(id)
@@ -70,7 +70,7 @@ module Wavefront
70
70
  #
71
71
  # @param id [String] ID of the event
72
72
  # @param version [Integer] version of event
73
- # @return [Hash]
73
+ # @return [Wavefront::Response]
74
74
  #
75
75
  def describe(id, version = nil)
76
76
  wf_event_id?(id)
@@ -91,7 +91,7 @@ module Wavefront
91
91
  # object will be fetched and merged with the user-supplied body.
92
92
  # The resulting object will be passed to the API. If this is
93
93
  # false, the body will be passed through unmodified.
94
- # @return [Hash]
94
+ # @return [Wavefront::Response]
95
95
  #
96
96
  def update(id, body, modify = true)
97
97
  wf_event_id?(id)
@@ -116,7 +116,7 @@ module Wavefront
116
116
  # Get all tags associated with a specific event
117
117
  #
118
118
  # @param id [String] ID of the event
119
- # @return [Hash] object describing the event with status and
119
+ # @return [Wavefront::Response]
120
120
  # response keys
121
121
  #
122
122
  def tags(id)
@@ -129,7 +129,7 @@ module Wavefront
129
129
  #
130
130
  # @param id [String] ID of the event
131
131
  # @param tags [Array] list of tags to set.
132
- # @return [Hash] object describing the event with status and
132
+ # @return [Wavefront::Response]
133
133
  # response keys
134
134
  #
135
135
  def tag_set(id, tags)
@@ -144,7 +144,7 @@ module Wavefront
144
144
  #
145
145
  # @param id [String] ID of the event
146
146
  # @param tag [String] tag to delete
147
- # @return [Hash] object with 'status' key and empty 'repsonse'
147
+ # @return [Wavefront::Response]
148
148
  #
149
149
  def tag_delete(id, tag)
150
150
  wf_event_id?(id)
@@ -157,7 +157,7 @@ module Wavefront
157
157
  #
158
158
  # @param id [String] ID of the event
159
159
  # @param tag [String] tag to set.
160
- # @return [Hash] object with 'status' key and empty 'repsonse'
160
+ # @return [Wavefront::Response]
161
161
  #
162
162
  def tag_add(id, tag)
163
163
  wf_event_id?(id)
@@ -9,6 +9,10 @@ module Wavefront
9
9
  '/extlink'
10
10
  end
11
11
 
12
+ def update_keys
13
+ %i(name template description)
14
+ end
15
+
12
16
  # GET /api/v2/extlink
13
17
  # Get all external links for a customer
14
18
  #
@@ -23,7 +27,7 @@ module Wavefront
23
27
  # Create a specific external link.
24
28
  #
25
29
  # @param body [Hash] a description of the external link.
26
- # @return [Hash]
30
+ # @return [Wavefront::Response]
27
31
  #
28
32
  def create(body)
29
33
  raise ArgumentError unless body.is_a?(Hash)
@@ -34,7 +38,7 @@ module Wavefront
34
38
  # Delete a specific external link.
35
39
  #
36
40
  # @param id [String] ID of the link
37
- # @return [Hash]
41
+ # @return [Wavefront::Response]
38
42
  #
39
43
  def delete(id)
40
44
  wf_link_id?(id)
@@ -45,7 +49,7 @@ module Wavefront
45
49
  # Get a specific external link.
46
50
  #
47
51
  # @param id [String] ID of the limnk
48
- # @return [Hash]
52
+ # @return [Wavefront::Response]
49
53
  #
50
54
  def describe(id)
51
55
  wf_link_id?(id)
@@ -55,15 +59,22 @@ module Wavefront
55
59
  # PUT /api/v2/extlink/id
56
60
  # Update a specific external link.
57
61
  #
58
- # @param id [String] ID of the link
59
- # @param body [Hash] a key:value hash where the key is the
60
- # property to change and the value is its desired value
61
- # @return [Hash]
62
- #
63
- def update(id, body)
62
+ # @param id [String] a Wavefront external link ID
63
+ # @param body [Hash] key-value hash of the parameters you wish
64
+ # to change
65
+ # @param modify [true, false] if true, use {#describe()} to get
66
+ # a hash describing the existing object, and modify that with
67
+ # the new body. If false, pass the new body straight through.
68
+ # @return [Wavefront::Response]
69
+
70
+ def update(id, body, modify = true)
64
71
  wf_link_id?(id)
65
72
  raise ArgumentError unless body.is_a?(Hash)
66
- api_put(id, body)
73
+
74
+ return api_put(id, body, 'application/json') unless modify
75
+
76
+ api_put(id, hash_for_update(describe(id).response, body),
77
+ 'application/json')
67
78
  end
68
79
  end
69
80
  end
@@ -5,6 +5,10 @@ module Wavefront
5
5
  # Manage and query Wavefront maintenance windows
6
6
  #
7
7
  class MaintenanceWindow < Base
8
+ def update_keys
9
+ %i(reason title startTimeInSeconds endTimeInSeconds
10
+ relevantCustomerTags relevantHostTags)
11
+ end
8
12
 
9
13
  # GET /api/v2/maintenancewindow
10
14
  # Get all maintenance windows for a customer.
@@ -24,7 +28,7 @@ module Wavefront
24
28
  # @param body [Hash] a hash of parameters describing the window.
25
29
  # Please refer to the Wavefront Swagger docs for key:value
26
30
  # information
27
- # @return [Hash]
31
+ # @return [Wavefront::Response]
28
32
  #
29
33
  def create(body)
30
34
  raise ArgumentError unless body.is_a?(Hash)
@@ -35,7 +39,7 @@ module Wavefront
35
39
  # Delete a specific maintenance window.
36
40
  #
37
41
  # @param id [String, Integer] ID of the maintenance window
38
- # @return [Hash]
42
+ # @return [Wavefront::Response]
39
43
  #
40
44
  def delete(id)
41
45
  wf_maintenance_window_id?(id)
@@ -46,7 +50,7 @@ module Wavefront
46
50
  # Get a specific maintenance window.
47
51
  #
48
52
  # @param id [String, Integer] ID of the maintenance window
49
- # @return [Hash]
53
+ # @return [Wavefront::Response]
50
54
  #
51
55
  def describe(id)
52
56
  wf_maintenance_window_id?(id)
@@ -56,14 +60,22 @@ module Wavefront
56
60
  # PUT /api/v2/maintenancewindow/id
57
61
  # Update a specific maintenance window.
58
62
  #
59
- # @param body [Hash] a hash of parameters describing the window.
60
- # @return [Hash]
61
- # @raise any validation errors from body
62
- #
63
- def update(id, body)
63
+ # @param id [String] a Wavefront maintenance window ID
64
+ # @param body [Hash] key-value hash of the parameters you wish
65
+ # to change
66
+ # @param modify [true, false] if true, use {#describe()} to get
67
+ # a hash describing the existing object, and modify that with
68
+ # the new body. If false, pass the new body straight through.
69
+ # @return [Wavefront::Response]
70
+
71
+ def update(id, body, modify = true)
64
72
  wf_maintenance_window_id?(id)
65
73
  raise ArgumentError unless body.is_a?(Hash)
66
- api_put(id, body)
74
+
75
+ return api_put(id, body, 'application/json') unless modify
76
+
77
+ api_put(id, hash_for_update(describe(id).response, body),
78
+ 'application/json')
67
79
  end
68
80
  end
69
81
  end
@@ -24,7 +24,7 @@ module Wavefront
24
24
  # in 'trash' removes it for ever.
25
25
  #
26
26
  # @param id [String] ID of the proxy
27
- # @return [Hash]
27
+ # @return [Wavefront::Response]
28
28
  #
29
29
  def delete(id)
30
30
  wf_proxy_id?(id)
@@ -35,7 +35,7 @@ module Wavefront
35
35
  # Get a specific proxy
36
36
  #
37
37
  # @param id [String] ID of the proxy
38
- # @return [Hash]
38
+ # @return [Wavefront::Response]
39
39
  #
40
40
  def describe(id)
41
41
  wf_proxy_id?(id)
@@ -48,7 +48,7 @@ module Wavefront
48
48
  # Move an proxy from 'trash' back into active service.
49
49
  #
50
50
  # @param id [String] ID of the proxy
51
- # @return [Hash]
51
+ # @return [Wavefront::Response]
52
52
  #
53
53
  def undelete(id)
54
54
  wf_proxy_id?(id)
@@ -63,7 +63,7 @@ module Wavefront
63
63
  #
64
64
  # @param id [String] ID of the proxy
65
65
  # @param name [String] new name
66
- # @return [Hash]
66
+ # @return [Wavefront::Response]
67
67
  #
68
68
  def rename(id, name)
69
69
  wf_proxy_id?(id)
@@ -79,7 +79,7 @@ module Wavefront
79
79
  # @param payload [Hash] a key: value hash, where the key is the
80
80
  # property to change and the value is its desired value. No
81
81
  # validation is performed on any part of the payload.
82
- # @return [Hash]
82
+ # @return [Wavefront::Response]
83
83
  #
84
84
  def update(id, payload)
85
85
  wf_proxy_id?(id)
@@ -26,7 +26,7 @@ module Wavefront
26
26
  # May be a Ruby Time object, or epoch milliseconds.
27
27
  # @param options [Hash] any other options defined in the API
28
28
  # @raise [ArgumentError] if query is not a string
29
- # @return [Wavefront::Response::Query]
29
+ # @return [Wavefront::Response]
30
30
  #
31
31
  def query(query, granularity = nil, t_start = nil, t_end = nil,
32
32
  options = {})
@@ -75,5 +75,16 @@ module Wavefront
75
75
 
76
76
  api_get('raw', options)
77
77
  end
78
+
79
+ # Fake a response which looks like we get from all the other
80
+ # paths. The default response is a single array.
81
+ #
82
+ def response_shim(body, status)
83
+ { response: JSON.parse(body),
84
+ status: { result: status == 200 ? 'OK' : 'ERROR',
85
+ message: '',
86
+ code: status },
87
+ }.to_json
88
+ end
78
89
  end
79
90
  end
@@ -31,7 +31,11 @@ module Wavefront
31
31
  # has changed underneath us.
32
32
  #
33
33
  def initialize(json, status, debug = false)
34
- raw = json.empty? {} || JSON.parse(json, symbolize_names: true)
34
+ begin
35
+ raw = json.empty? ? {} : JSON.parse(json, symbolize_names: true)
36
+ rescue
37
+ raw = { message: json, code: status }
38
+ end
35
39
 
36
40
  @status = build_status(raw, status)
37
41
  @response = build_response(raw)
@@ -47,7 +51,15 @@ module Wavefront
47
51
  end
48
52
 
49
53
  def build_response(raw)
50
- Map(raw.is_a?(Hash) && raw.key?(:response) ? raw[:response] : {})
54
+ if raw.is_a?(Hash)
55
+ if raw.key?(:response)
56
+ Map(raw[:response])
57
+ else
58
+ Map.new
59
+ end
60
+ else
61
+ Map.new
62
+ end
51
63
  end
52
64
  end
53
65
 
@@ -75,9 +87,16 @@ module Wavefront
75
87
  def initialize(raw, status)
76
88
  obj = raw.key?(:status) ? raw[:status] : raw
77
89
 
78
- @result = obj[:result] || nil
79
90
  @message = obj[:message] || nil
80
91
  @code = obj[:code] || status
92
+
93
+ @result = if obj[:result]
94
+ obj[:result]
95
+ elsif status == 200
96
+ 'OK'
97
+ else
98
+ 'ERROR'
99
+ end
81
100
  end
82
101
  end
83
102
  end
@@ -12,7 +12,7 @@ module Wavefront
12
12
  #
13
13
  # @param offset [Int] saved search at which the list begins
14
14
  # @param limit [Int] the number of saved searches to return
15
- # @return [Hash]
15
+ # @return [Wavefront::Response]
16
16
  #
17
17
  def list(offset = 0, limit = 100)
18
18
  api_get('', { offset: offset, limit: limit })
@@ -23,7 +23,7 @@ module Wavefront
23
23
  # valid keys.
24
24
  #
25
25
  # @param body [Hash] description of saved search
26
- # @return [Hash]
26
+ # @return [Wavefront::Response]
27
27
  #
28
28
  def create(body)
29
29
  raise ArgumentError unless body.is_a?(Hash)
@@ -34,7 +34,7 @@ module Wavefront
34
34
  # Delete a specific saved search.
35
35
  #
36
36
  # @param id [String] ID of the saved search
37
- # @return [Hash]
37
+ # @return [Wavefront::Response]
38
38
  #
39
39
  def delete(id)
40
40
  wf_savedsearch_id?(id)
@@ -45,7 +45,7 @@ module Wavefront
45
45
  # Get a specific saved search.
46
46
  #
47
47
  # @param id [String] ID of the saved search
48
- # @return [Hash]
48
+ # @return [Wavefront::Response]
49
49
  #
50
50
  def describe(id)
51
51
  wf_savedsearch_id?(id)
@@ -56,7 +56,7 @@ module Wavefront
56
56
  # Update a specific saved search.
57
57
  #
58
58
  # @param id [String] ID of the saved search
59
- # @param body [Hash] description of saved search
59
+ # @param body [Wavefront::Response]
60
60
  #
61
61
  def update(id, body)
62
62
  wf_savedsearch_id?(id)
@@ -70,7 +70,7 @@ module Wavefront
70
70
  # @param entitytype [String] type of entity to retrieve
71
71
  # @param offset [Int] saved search at which the list begins
72
72
  # @param limit [Int] the number of saved searches to return
73
- # @return [Hash]
73
+ # @return [Wavefront::Response]
74
74
  #
75
75
  def entity(entitytype, offset = 0, limit = 100)
76
76
  wf_savedsearch_entity?(entitytype)
@@ -5,13 +5,16 @@ module Wavefront
5
5
  # View and manage source metadata.
6
6
  #
7
7
  class Source < Base
8
+ def update_keys
9
+ %i(sourceName tags description)
10
+ end
8
11
 
9
12
  # GET /api/v2/source
10
13
  # Get all sources for a customer
11
14
  #
12
15
  # @param offset [Int] source at which the list begins
13
16
  # @param limit [Int] the number of sources to return
14
- # @return [Hash]
17
+ # @return [Wavefront::Response]
15
18
  #
16
19
  def list(offset = 0, limit = 100)
17
20
  api_get('', { offset: offset, limit: limit })
@@ -23,7 +26,7 @@ module Wavefront
23
26
  # Refer to the Swagger API docs for valid keys.
24
27
  #
25
28
  # @param body [Hash] description of source
26
- # @return [Hash]
29
+ # @return [Wavefront::Response]
27
30
  #
28
31
  def create(body)
29
32
  raise ArgumentError unless body.is_a?(Hash)
@@ -34,7 +37,7 @@ module Wavefront
34
37
  # Delete metadata (description and tags) for a specific source.
35
38
  #
36
39
  # @param id [String] ID of the source
37
- # @return [Hash]
40
+ # @return [Wavefront::Response]
38
41
  #
39
42
  def delete(id)
40
43
  wf_source_id?(id)
@@ -45,7 +48,7 @@ module Wavefront
45
48
  # Get a specific source for a customer.
46
49
  #
47
50
  # @param id [String] ID of the source
48
- # @return [Hash]
51
+ # @return [Wavefront::Response]
49
52
  #
50
53
  def describe(id, version = nil)
51
54
  wf_source_id?(id)
@@ -58,23 +61,29 @@ module Wavefront
58
61
  # PUT /api/v2/source/id
59
62
  # Update metadata (description or tags) for a specific source.
60
63
  #
61
- # Refer to the Swagger API docs for valid keys.
62
- #
63
- # @param body [Hash] description of source
64
- # @return [Hash]
65
- #
66
- def update(id, body)
64
+ # @param id [String] a Wavefront alert ID
65
+ # @param body [Hash] key-value hash of the parameters you wish
66
+ # to change
67
+ # @param modify [true, false] if true, use {#describe()} to get
68
+ # a hash describing the existing object, and modify that with
69
+ # the new body. If false, pass the new body straight through.
70
+ # @return [Wavefront::Response]
71
+
72
+ def update(id, body, modify = true)
67
73
  wf_source_id?(id)
68
74
  raise ArgumentError unless body.is_a?(Hash)
69
- api_put(id, body)
75
+
76
+ return api_put(id, body, 'application/json') unless modify
77
+
78
+ api_put(id, hash_for_update(describe(id).response, body),
79
+ 'application/json')
70
80
  end
71
81
 
72
82
  # GET /api/v2/source/id/tag
73
83
  # Get all tags associated with a specific source.
74
84
  #
75
85
  # @param id [String] ID of the source
76
- # @return [Hash] object describing the source with status and
77
- # response keys
86
+ # @return [Wavefront::Response]
78
87
  #
79
88
  def tags(id)
80
89
  wf_source_id?(id)
@@ -86,8 +95,7 @@ module Wavefront
86
95
  #
87
96
  # @param id [String] ID of the source
88
97
  # @param tags [Array] list of tags to set.
89
- # @return [Hash] object describing the source with status and
90
- # response keys
98
+ # @return [Wavefront::Response]
91
99
  #
92
100
  def tag_set(id, tags)
93
101
  wf_source_id?(id)
@@ -101,7 +109,7 @@ module Wavefront
101
109
  #
102
110
  # @param id [String] ID of the source
103
111
  # @param tag [String] tag to delete
104
- # @return [Hash] object with 'status' key and empty 'repsonse'
112
+ # @return [Wavefront::Response]
105
113
  #
106
114
  def tag_delete(id, tag)
107
115
  wf_source_id?(id)
@@ -114,7 +122,7 @@ module Wavefront
114
122
  #
115
123
  # @param id [String] ID of the source
116
124
  # @param tag [String] tag to set.
117
- # @return [Hash] object with 'status' key and empty 'repsonse'
125
+ # @return [Wavefront::Response]
118
126
  #
119
127
  def tag_add(id, tag)
120
128
  wf_source_id?(id)
@@ -19,7 +19,7 @@ module Wavefront
19
19
  # @param body [Hash] a hash of parameters describing the user.
20
20
  # Please refer to the Wavefront Swagger docs for key:value
21
21
  # information
22
- # @return [Hash]
22
+ # @return [Wavefront::Response]
23
23
  #
24
24
  def create(body, send_email = false)
25
25
  raise ArgumentError unless body.is_a?(Hash)
@@ -30,7 +30,7 @@ module Wavefront
30
30
  # Delete a specific user.
31
31
  #
32
32
  # @param id [String] ID of the user
33
- # @return [Hash]
33
+ # @return [Wavefront::Response]
34
34
  #
35
35
  def delete(id)
36
36
  wf_user_id?(id)
@@ -41,7 +41,7 @@ module Wavefront
41
41
  # Retrieves a user by identifier (email addr).
42
42
  #
43
43
  # @param id [String] ID of the user
44
- # @return [Hash]
44
+ # @return [Wavefront::Response]
45
45
  #
46
46
  def describe(id)
47
47
  wf_user_id?(id)
@@ -59,7 +59,7 @@ module Wavefront
59
59
  # embedded_charts, events_management,
60
60
  # external_links_management, host_tag_management,
61
61
  # metrics_management, user_management,
62
- # @return [Hash]
62
+ # @return [Wavefront::Response]
63
63
  #
64
64
  def grant(id, group)
65
65
  wf_user_id?(id)
@@ -75,7 +75,7 @@ module Wavefront
75
75
  # @param group [String] group to add user to. We do not validate
76
76
  # this so that changes to the API do not mandate changes to
77
77
  # the SDK. See #update for valid values.
78
- # @return [Hash]
78
+ # @return [Wavefront::Response]
79
79
  #
80
80
  def revoke(id, group)
81
81
  wf_user_id?(id)
@@ -1 +1 @@
1
- WF_SDK_VERSION = '0.1.3'.freeze
1
+ WF_SDK_VERSION = '0.1.5'.freeze
@@ -5,6 +5,9 @@ module Wavefront
5
5
  # Manage and query Wavefront webhooks
6
6
  #
7
7
  class Webhook < Base
8
+ def update_keys
9
+ %i(title description template title triggers recipient)
10
+ end
8
11
 
9
12
  # GET /api/v2/webhook
10
13
  # Get all webhooks for a customer.
@@ -22,7 +25,7 @@ module Wavefront
22
25
  # @param body [Hash] a hash of parameters describing the webhook.
23
26
  # Please refer to the Wavefront Swagger docs for key:value
24
27
  # information
25
- # @return [Hash]
28
+ # @return [Wavefront::Response]
26
29
  #
27
30
  def create(body)
28
31
  raise ArgumentError unless body.is_a?(Hash)
@@ -33,7 +36,7 @@ module Wavefront
33
36
  # Delete a specific webhook.
34
37
  #
35
38
  # @param id [String, Integer] ID of the webhook
36
- # @return [Hash]
39
+ # @return [Wavefront::Response]
37
40
  #
38
41
  def delete(id)
39
42
  wf_webhook_id?(id)
@@ -44,7 +47,7 @@ module Wavefront
44
47
  # Get a specific webhook.
45
48
  #
46
49
  # @param id [String, Integer] ID of the webhook
47
- # @return [Hash]
50
+ # @return [Wavefront::Response]
48
51
  #
49
52
  def describe(id)
50
53
  wf_webhook_id?(id)
@@ -54,14 +57,22 @@ module Wavefront
54
57
  # PUT /api/v2/webhook/id
55
58
  # Update a specific webhook.
56
59
  #
57
- # @param body [Hash] a hash of parameters describing the webhook.
58
- # @return [Hash]
59
- # @raise any validation errors from body
60
- #
61
- def update(id, body)
60
+ # @param id [String] a Wavefront webhook ID
61
+ # @param body [Hash] key-value hash of the parameters you wish
62
+ # to change
63
+ # @param modify [true, false] if true, use {#describe()} to get
64
+ # a hash describing the existing object, and modify that with
65
+ # the new body. If false, pass the new body straight through.
66
+ # @return [Wavefront::Response]
67
+
68
+ def update(id, body, modify = true)
62
69
  wf_webhook_id?(id)
63
70
  raise ArgumentError unless body.is_a?(Hash)
64
- api_put(id, body)
71
+
72
+ return api_put(id, body, 'application/json') unless modify
73
+
74
+ api_put(id, hash_for_update(describe(id).response, body),
75
+ 'application/json')
65
76
  end
66
77
  end
67
78
  end
@@ -211,25 +211,4 @@ module Wavefront
211
211
  @net = creds
212
212
  end
213
213
  end
214
-
215
- #class Response
216
- # The Write response forges status and response methods to look
217
- # like other classes and create a more consistent interface. As
218
- # the request does not happen over HTTP, there's not much to put
219
- # in the status object. The response object is the contents of
220
- # the summary variable.
221
- #
222
- # @response=#<struct sent=1, rejected=0, unsent=0>,
223
- # @status=#<struct result="OK", message=nil, code=nil>>
224
- #
225
- #class Write < Base
226
- #def populate(raw, status)
227
- #@response = Struct.new(*raw.keys).new(*raw.values).freeze
228
- #
229
- #ok = raw[:rejected] == 0 && raw[:unsent] == 0 ? 'OK' : 'ERROR'
230
- #
231
- #@status = Struct.new(:result, :message, :code).new(ok, nil, nil)
232
- #end
233
- #end
234
- #end
235
214
  end
@@ -56,8 +56,9 @@ class WavefrontDashboardTest < WavefrontTestBase
56
56
  end
57
57
 
58
58
  def test_update
59
- should_work(:update, [DASHBOARD, DASHBOARD_BODY], DASHBOARD, :put,
60
- JSON_POST_HEADERS, DASHBOARD_BODY.to_json)
59
+ should_work(:update, [DASHBOARD, DASHBOARD_BODY, false],
60
+ DASHBOARD, :put, JSON_POST_HEADERS,
61
+ DASHBOARD_BODY.to_json)
61
62
  should_be_invalid(:update, ['!invalid dash!', DASHBOARD_BODY])
62
63
  assert_raises(ArgumentError) { wf.update }
63
64
  end
@@ -50,11 +50,11 @@ class WavefrontExternalLinkTest < WavefrontTestBase
50
50
  end
51
51
 
52
52
  def test_update
53
- should_work(:update, [EXTERNAL_LINK, EXTERNAL_LINK_BODY],
53
+ should_work(:update, [EXTERNAL_LINK, EXTERNAL_LINK_BODY, false],
54
54
  EXTERNAL_LINK, :put, JSON_POST_HEADERS,
55
55
  EXTERNAL_LINK_BODY.to_json)
56
56
 
57
- should_work(:update, [EXTERNAL_LINK, EXTERNAL_LINK_BODY_2],
57
+ should_work(:update, [EXTERNAL_LINK, EXTERNAL_LINK_BODY_2, false],
58
58
  EXTERNAL_LINK, :put, JSON_POST_HEADERS,
59
59
  EXTERNAL_LINK_BODY_2.to_json)
60
60
 
@@ -40,7 +40,7 @@ class WavefrontMaintenanceWindowTest < WavefrontTestBase
40
40
  end
41
41
 
42
42
  def test_update
43
- should_work(:update, [WINDOW, WINDOW_BODY], WINDOW, :put,
43
+ should_work(:update, [WINDOW, WINDOW_BODY, false], WINDOW, :put,
44
44
  JSON_POST_HEADERS, WINDOW_BODY.to_json)
45
45
  should_be_invalid(:update, ['abcde', WINDOW_BODY])
46
46
  assert_raises(ArgumentError) { wf.update }
@@ -25,23 +25,5 @@ class WavefrontResponseTest < MiniTest::Test
25
25
  end
26
26
 
27
27
  def test_initialize_bad_data
28
- assert_raises(Wavefront::Exception::UnparseableResponse) do
29
- Wavefront::Response.new('merp', 200)
30
- end
31
-
32
- assert_raises(Wavefront::Exception::UnparseableResponse) do
33
- Wavefront::Response.new(
34
- '{"status":{"result":"OK","message":"","code":200}', 200)
35
- end
36
-
37
- assert_raises(Wavefront::Exception::UnparseableResponse) do
38
- Wavefront::Response.new(
39
- '{"status":{"result":"OK","message":"","code":200}', 200)
40
- end
41
-
42
- assert_raises(Wavefront::Exception::UnparseableResponse) do
43
- Wavefront::Response.new(
44
- '{"response":{"items":[{"name":"test agent"}],"offset":0 }', 200)
45
- end
46
28
  end
47
29
  end
@@ -36,7 +36,7 @@ class WavefrontSourceTest < WavefrontTestBase
36
36
  end
37
37
 
38
38
  def test_update
39
- should_work(:update, [SOURCE, SOURCE_BODY], SOURCE, :put,
39
+ should_work(:update, [SOURCE, SOURCE_BODY, false], SOURCE, :put,
40
40
  JSON_POST_HEADERS, SOURCE_BODY.to_json)
41
41
  should_be_invalid(:update, ['!invalid source!', SOURCE_BODY])
42
42
  assert_raises(ArgumentError) { wf.update }
@@ -42,7 +42,7 @@ class WavefrontWebhookTest < WavefrontTestBase
42
42
  end
43
43
 
44
44
  def test_update
45
- should_work(:update, [WEBHOOK, WEBHOOK_BODY], WEBHOOK, :put,
45
+ should_work(:update, [WEBHOOK, WEBHOOK_BODY, false], WEBHOOK, :put,
46
46
  JSON_POST_HEADERS, WEBHOOK_BODY.to_json)
47
47
  should_be_invalid(:update, ['abcde', WEBHOOK_BODY])
48
48
  assert_raises(ArgumentError) { wf.update }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wavefront-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Fisher
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-12 00:00:00.000000000 Z
11
+ date: 2017-06-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday