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
@@ -1,10 +1,10 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'core/api'
|
2
2
|
|
3
3
|
module Wavefront
|
4
4
|
#
|
5
5
|
# Manage and query Wavefront integrations.
|
6
6
|
#
|
7
|
-
class Integration <
|
7
|
+
class Integration < CoreApi
|
8
8
|
# GET /api/v2/integration
|
9
9
|
# Gets a flat list of all Wavefront integrations available,
|
10
10
|
# along with their status
|
@@ -13,7 +13,7 @@ module Wavefront
|
|
13
13
|
# @param limit [Int] the number of proxies to return
|
14
14
|
#
|
15
15
|
def list(offset = 0, limit = 100)
|
16
|
-
|
16
|
+
api.get('', offset: offset, limit: limit)
|
17
17
|
end
|
18
18
|
|
19
19
|
# GET /api/v2/integration/id
|
@@ -25,7 +25,7 @@ module Wavefront
|
|
25
25
|
#
|
26
26
|
def describe(id)
|
27
27
|
wf_integration_id?(id)
|
28
|
-
|
28
|
+
api.get(id)
|
29
29
|
end
|
30
30
|
|
31
31
|
# POST /api/v2/integration/id/install
|
@@ -36,7 +36,7 @@ module Wavefront
|
|
36
36
|
#
|
37
37
|
def install(id)
|
38
38
|
wf_integration_id?(id)
|
39
|
-
|
39
|
+
api.post([id, 'install'].uri_concat, nil)
|
40
40
|
end
|
41
41
|
|
42
42
|
# POST /api/v2/integration/id/uninstall
|
@@ -47,7 +47,7 @@ module Wavefront
|
|
47
47
|
#
|
48
48
|
def uninstall(id)
|
49
49
|
wf_integration_id?(id)
|
50
|
-
|
50
|
+
api.post([id, 'uninstall'].uri_concat, nil)
|
51
51
|
end
|
52
52
|
|
53
53
|
# GET /api/v2/integration/id/status
|
@@ -58,7 +58,7 @@ module Wavefront
|
|
58
58
|
#
|
59
59
|
def status(id)
|
60
60
|
wf_integration_id?(id)
|
61
|
-
|
61
|
+
api.get([id, 'status'].uri_concat)
|
62
62
|
end
|
63
63
|
|
64
64
|
# GET /api/v2/integration/status
|
@@ -67,7 +67,7 @@ module Wavefront
|
|
67
67
|
# @return [Wavefront::Response]
|
68
68
|
#
|
69
69
|
def statuses
|
70
|
-
|
70
|
+
api.get('status')
|
71
71
|
end
|
72
72
|
|
73
73
|
# GET /api/v2/integration/manifests
|
@@ -75,7 +75,7 @@ module Wavefront
|
|
75
75
|
# integration manifests, along with their status
|
76
76
|
#
|
77
77
|
def manifests
|
78
|
-
|
78
|
+
api.get('manifests')
|
79
79
|
end
|
80
80
|
end
|
81
81
|
end
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'core/api'
|
2
2
|
|
3
3
|
module Wavefront
|
4
4
|
#
|
5
5
|
# Manage and query Wavefront maintenance windows
|
6
6
|
#
|
7
|
-
class MaintenanceWindow <
|
7
|
+
class MaintenanceWindow < CoreApi
|
8
8
|
def update_keys
|
9
9
|
%i[reason title startTimeInSeconds endTimeInSeconds
|
10
10
|
relevantCustomerTags relevantHostTags relevantHostNames]
|
@@ -17,7 +17,7 @@ module Wavefront
|
|
17
17
|
# @param limit [Integer] the number of window to return
|
18
18
|
#
|
19
19
|
def list(offset = 0, limit = 100)
|
20
|
-
|
20
|
+
api.get('', offset: offset, limit: limit)
|
21
21
|
end
|
22
22
|
|
23
23
|
# POST /api/v2/maintenancewindow
|
@@ -32,7 +32,7 @@ module Wavefront
|
|
32
32
|
#
|
33
33
|
def create(body)
|
34
34
|
raise ArgumentError unless body.is_a?(Hash)
|
35
|
-
|
35
|
+
api.post('', body, 'application/json')
|
36
36
|
end
|
37
37
|
|
38
38
|
# DELETE /api/v2/maintenancewindow/id
|
@@ -43,7 +43,7 @@ module Wavefront
|
|
43
43
|
#
|
44
44
|
def delete(id)
|
45
45
|
wf_maintenance_window_id?(id)
|
46
|
-
|
46
|
+
api.delete(id)
|
47
47
|
end
|
48
48
|
|
49
49
|
# GET /api/v2/maintenancewindow/id
|
@@ -54,7 +54,7 @@ module Wavefront
|
|
54
54
|
#
|
55
55
|
def describe(id)
|
56
56
|
wf_maintenance_window_id?(id)
|
57
|
-
|
57
|
+
api.get(id)
|
58
58
|
end
|
59
59
|
|
60
60
|
# PUT /api/v2/maintenancewindow/id
|
@@ -72,10 +72,56 @@ module Wavefront
|
|
72
72
|
wf_maintenance_window_id?(id)
|
73
73
|
raise ArgumentError unless body.is_a?(Hash)
|
74
74
|
|
75
|
-
return
|
75
|
+
return api.put(id, body, 'application/json') unless modify
|
76
76
|
|
77
|
-
|
77
|
+
api.put(id, hash_for_update(describe(id).response, body),
|
78
78
|
'application/json')
|
79
79
|
end
|
80
|
+
|
81
|
+
# Windows currently open.
|
82
|
+
# @return [Wavefront::Response]
|
83
|
+
#
|
84
|
+
def ongoing
|
85
|
+
windows_in_state(:ongoing)
|
86
|
+
end
|
87
|
+
|
88
|
+
# Get the windows which will be open in the next so-many hours
|
89
|
+
# @param hours [Numeric] how many hours to look ahead
|
90
|
+
# @return [Wavefront::Response]
|
91
|
+
#
|
92
|
+
def pending(hours = 24)
|
93
|
+
cutoff = Time.now.to_i + hours * 3600
|
94
|
+
|
95
|
+
windows_in_state(:pending).tap do |r|
|
96
|
+
r.response.items.delete_if { |w| w.startTimeInSeconds > cutoff }
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
# This method mimics the similarly named method from the v1 SDK,
|
101
|
+
# which called the 'GET /api/alert/maintenancewindow/summary'
|
102
|
+
# path.
|
103
|
+
# @return [Wavefront::Response]
|
104
|
+
#
|
105
|
+
def summary
|
106
|
+
ret = pending
|
107
|
+
|
108
|
+
items = { UPCOMING: ret.response.items,
|
109
|
+
CURRENT: ongoing.response.items }
|
110
|
+
|
111
|
+
ret.response.items = items
|
112
|
+
ret
|
113
|
+
end
|
114
|
+
|
115
|
+
# Return all maintenance windows in the given state. At the time
|
116
|
+
# of writing valid states are ONGOING, PENDING, and ENDED.
|
117
|
+
# @param state [Symbol]
|
118
|
+
# @return [Wavefront::Response]
|
119
|
+
#
|
120
|
+
def windows_in_state(state)
|
121
|
+
require_relative 'search'
|
122
|
+
wfs = Wavefront::Search.new(creds, opts)
|
123
|
+
query = { key: 'runningState', value: state, matchingMethod: 'EXACT' }
|
124
|
+
wfs.search(:maintenancewindow, query, limit: :all, offset: PAGE_SIZE)
|
125
|
+
end
|
80
126
|
end
|
81
127
|
end
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'core/api'
|
2
2
|
|
3
3
|
module Wavefront
|
4
4
|
#
|
5
5
|
# Manage and query Wavefront messages.
|
6
6
|
#
|
7
|
-
class Message <
|
7
|
+
class Message < CoreApi
|
8
8
|
# GET /api/v2/message
|
9
9
|
# Gets messages applicable to the current user, i.e. within time
|
10
10
|
# range and distribution scope
|
@@ -13,7 +13,7 @@ module Wavefront
|
|
13
13
|
# @param limit [Int] the number of agents to return
|
14
14
|
#
|
15
15
|
def list(offset = 0, limit = 100, unread_only = true)
|
16
|
-
|
16
|
+
api.get('', offset: offset, limit: limit, unreadOnly: unread_only)
|
17
17
|
end
|
18
18
|
|
19
19
|
# POST /api/v2/message/id/read
|
@@ -23,7 +23,7 @@ module Wavefront
|
|
23
23
|
#
|
24
24
|
def read(id)
|
25
25
|
wf_message_id?(id)
|
26
|
-
|
26
|
+
api.post([id, 'read'].uri_concat)
|
27
27
|
end
|
28
28
|
end
|
29
29
|
end
|
data/lib/wavefront-sdk/metric.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'core/api'
|
2
2
|
|
3
3
|
module Wavefront
|
4
4
|
#
|
5
5
|
# Query Wavefront metrics.
|
6
6
|
#
|
7
|
-
class Metric <
|
7
|
+
class Metric < CoreApi
|
8
8
|
def api_base
|
9
9
|
'chart/metric'
|
10
10
|
end
|
@@ -29,7 +29,7 @@ module Wavefront
|
|
29
29
|
|
30
30
|
sources.each { |source| query.<< [:h, source] }
|
31
31
|
|
32
|
-
|
32
|
+
api.get('detail', query)
|
33
33
|
end
|
34
34
|
end
|
35
35
|
end
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'core/api'
|
2
2
|
|
3
3
|
module Wavefront
|
4
4
|
#
|
5
5
|
# Manage and query Wavefront notification targets.
|
6
6
|
#
|
7
|
-
class Notificant <
|
7
|
+
class Notificant < CoreApi
|
8
8
|
# GET /api/v2/notificant
|
9
9
|
# Get all notification targets for a customer
|
10
10
|
#
|
@@ -12,7 +12,7 @@ module Wavefront
|
|
12
12
|
# @param limit [Int] the number of notification targets to return
|
13
13
|
#
|
14
14
|
def list(offset = 0, limit = 100)
|
15
|
-
|
15
|
+
api.get('', offset: offset, limit: limit)
|
16
16
|
end
|
17
17
|
|
18
18
|
# POST /api/v2/notificant
|
@@ -23,7 +23,7 @@ module Wavefront
|
|
23
23
|
#
|
24
24
|
def create(body)
|
25
25
|
raise ArgumentError unless body.is_a?(Hash)
|
26
|
-
|
26
|
+
api.post('', body, 'application/json')
|
27
27
|
end
|
28
28
|
|
29
29
|
# DELETE /api/v2/notificant/id
|
@@ -34,7 +34,7 @@ module Wavefront
|
|
34
34
|
#
|
35
35
|
def delete(id)
|
36
36
|
wf_notificant_id?(id)
|
37
|
-
|
37
|
+
api.delete(id)
|
38
38
|
end
|
39
39
|
|
40
40
|
# GET /api/v2/notificant/id
|
@@ -45,7 +45,7 @@ module Wavefront
|
|
45
45
|
#
|
46
46
|
def describe(id)
|
47
47
|
wf_notificant_id?(id)
|
48
|
-
|
48
|
+
api.get(id)
|
49
49
|
end
|
50
50
|
|
51
51
|
# PUT /api/v2/notificant/id
|
@@ -63,9 +63,9 @@ module Wavefront
|
|
63
63
|
wf_notificant_id?(id)
|
64
64
|
raise ArgumentError unless body.is_a?(Hash)
|
65
65
|
|
66
|
-
return
|
66
|
+
return api.put(id, body, 'application/json') unless modify
|
67
67
|
|
68
|
-
|
68
|
+
api.put(id, hash_for_update(describe(id).response, body),
|
69
69
|
'application/json')
|
70
70
|
end
|
71
71
|
|
@@ -77,7 +77,7 @@ module Wavefront
|
|
77
77
|
#
|
78
78
|
def test(id)
|
79
79
|
wf_notificant_id?(id)
|
80
|
-
|
80
|
+
api.post(['test', id].uri_concat, nil)
|
81
81
|
end
|
82
82
|
end
|
83
83
|
end
|
@@ -0,0 +1,148 @@
|
|
1
|
+
require_relative '../defs/constants'
|
2
|
+
|
3
|
+
module Wavefront
|
4
|
+
module Paginator
|
5
|
+
#
|
6
|
+
# Automatically handle pagination. This is an abstract class
|
7
|
+
# made concrete by an extension for each HTTP request type.
|
8
|
+
#
|
9
|
+
# This class and its children do slightly unpleasant things with
|
10
|
+
# the HTTP request passed to us by the user, extracting and
|
11
|
+
# changing values in the URI, query string, or POST/PUT body.
|
12
|
+
# The POST class is particularly onerous.
|
13
|
+
#
|
14
|
+
# Automatic pagination works by letting the user override the
|
15
|
+
# limit and offset values in API calls. Setting the limit to
|
16
|
+
# :all iteratively calls the Wavefront API, returning all
|
17
|
+
# requested objects an a standard Wavefront::Response wrapper;
|
18
|
+
# setting limit to :lazy returns a lazy Enumerable. The number
|
19
|
+
# of objects fetched in each API call, whether eager or lazy
|
20
|
+
# defaults to PAGE_SIZE, but the user can override that value by
|
21
|
+
# using the offset argument in conjunction with limit = :lazy |
|
22
|
+
# :all.
|
23
|
+
#
|
24
|
+
class Base
|
25
|
+
attr_reader :api_caller, :conn, :method, :args, :page_size,
|
26
|
+
:initial_limit
|
27
|
+
|
28
|
+
# @param api_caller [Wavefront::ApiCaller] the class which
|
29
|
+
# creates an instance of this one. We need to access its
|
30
|
+
# #response method.
|
31
|
+
# @param conn [Faraday::Connection]
|
32
|
+
# @param method [Symbol] HTTP request method
|
33
|
+
# @param *args arguments to pass to Faraday's #get method
|
34
|
+
#
|
35
|
+
def initialize(api_caller, conn, method, *args)
|
36
|
+
@api_caller = api_caller
|
37
|
+
@conn = conn
|
38
|
+
@method = method
|
39
|
+
@args = args
|
40
|
+
setup_vars
|
41
|
+
end
|
42
|
+
|
43
|
+
def setup_vars
|
44
|
+
@initial_limit = limit_and_offset(args)[:limit]
|
45
|
+
@page_size = user_page_size(args) unless initial_limit.is_a?(Integer)
|
46
|
+
end
|
47
|
+
|
48
|
+
# An API call may or may not have a limit and/or offset value.
|
49
|
+
# They could (I think) be anywhere. Safely find and return
|
50
|
+
# them. If multiple elements of @args have :limit or :offset
|
51
|
+
# keys, the last value wins.
|
52
|
+
#
|
53
|
+
# @param args [Array] arguments to be passed to a Faraday
|
54
|
+
# connection object
|
55
|
+
# @return [Hash] with keys :offset and :limit. Either's value
|
56
|
+
# can be nil
|
57
|
+
#
|
58
|
+
def limit_and_offset(args)
|
59
|
+
ret = { offset: nil, limit: nil }
|
60
|
+
|
61
|
+
args.select { |a| a.is_a?(Hash) }.each_with_object(ret) do |arg|
|
62
|
+
ret[:limit] = arg[:limit] if arg.key?(:limit)
|
63
|
+
ret[:offset] = arg[:offset] if arg.key?(:offset)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
# How many objects to get on each iteration? The user can pass
|
68
|
+
# it in as an alternative to the offset argument, If it's not a
|
69
|
+
# positive integer, default to 999
|
70
|
+
#
|
71
|
+
def user_page_size(args)
|
72
|
+
arg_val = limit_and_offset(args)[:offset].to_i
|
73
|
+
return arg_val if arg_val && arg_val > 0
|
74
|
+
PAGE_SIZE
|
75
|
+
end
|
76
|
+
|
77
|
+
# @param offset [Integer] where to start fetching from
|
78
|
+
# @param page_size [Integer] how many objects to fetch
|
79
|
+
# @param args [Array] arguments to pass to Faraday.get
|
80
|
+
#
|
81
|
+
def set_pagination(offset, page_size, args)
|
82
|
+
args.map do |arg|
|
83
|
+
if arg.is_a?(Hash)
|
84
|
+
arg.tap do |a|
|
85
|
+
a[:limit] = page_size if a.key?(:limit)
|
86
|
+
a[:offset] = offset if a.key?(:offset)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
arg
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
# 'get' eagerly. Re-run the get operation, merging together
|
94
|
+
# returned items until we have them all.
|
95
|
+
# @return [Wavefront::Response]
|
96
|
+
#
|
97
|
+
# rubocop:disable Metrics/MethodLength
|
98
|
+
# rubocop:disable Metrics/AbcSize
|
99
|
+
def make_recursive_call
|
100
|
+
offset = 0
|
101
|
+
p_args = set_pagination(offset, page_size, args)
|
102
|
+
ret = api_caller.respond(conn.public_send(method, *p_args))
|
103
|
+
|
104
|
+
return ret unless ret.more_items?
|
105
|
+
|
106
|
+
loop do
|
107
|
+
offset += page_size
|
108
|
+
p_args = set_pagination(offset, page_size, p_args)
|
109
|
+
api_caller.verbosity(conn, method, *p_args)
|
110
|
+
resp = api_caller.respond(conn.public_send(method, *p_args))
|
111
|
+
raise StopIteration unless resp.ok?
|
112
|
+
ret.response.items += resp.response.items
|
113
|
+
raise StopIteration unless resp.more_items?
|
114
|
+
end
|
115
|
+
|
116
|
+
ret
|
117
|
+
end
|
118
|
+
|
119
|
+
# Return all objects using a lazy enumerator.
|
120
|
+
# @return [Enumerable] with each item being
|
121
|
+
# @raise [Wavefront::Exception::EnumerableError] if an API error
|
122
|
+
# is encountered at any point. The exception message is a
|
123
|
+
# Wavefront::Type::Status object, which will include the HTTP
|
124
|
+
# status code and any error string passed back by the API.
|
125
|
+
#
|
126
|
+
def make_lazy_call
|
127
|
+
offset = 0
|
128
|
+
p_args = set_pagination(offset, page_size, args)
|
129
|
+
|
130
|
+
Enumerator.new do |y|
|
131
|
+
loop do
|
132
|
+
offset += page_size
|
133
|
+
api_caller.verbosity(conn, method, *p_args)
|
134
|
+
resp = api_caller.respond(conn.public_send(method, *p_args))
|
135
|
+
unless resp.ok?
|
136
|
+
raise(Wavefront::Exception::EnumerableError, resp.status)
|
137
|
+
end
|
138
|
+
p_args = set_pagination(offset, page_size, p_args)
|
139
|
+
resp.response.items.map { |i| y.<< i }
|
140
|
+
raise StopIteration unless resp.more_items?
|
141
|
+
end
|
142
|
+
end.lazy
|
143
|
+
end
|
144
|
+
# rubocop:enable Metrics/AbcSize
|
145
|
+
# rubocop:enable Metrics/MethodLength
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|