signalfx 2.0.4 → 3.1.1

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
- SHA1:
3
- metadata.gz: c8e984af9364b7b5edd7301eaa77af61db6e1ab0
4
- data.tar.gz: 31567a7139549a9dbf7550035b15a110ac98bdaa
2
+ SHA256:
3
+ metadata.gz: 670a3ffcd46baae47aaefbcb622426e9fae027750802206e7bd74b6fecb9928a
4
+ data.tar.gz: 6a757389d9ef2f19b4f58747f0d6ef762a9f809a189b0b1c7692ef950236e093
5
5
  SHA512:
6
- metadata.gz: db738f89f61018f03ce556387e93ccf91eb3297dab3d179ea5d14096dcd23730a5843cc3a5f455593879b75abbb4455433a5db60f348fbcf6077e1a9828b9c71
7
- data.tar.gz: fc876256de5043675cae2bf2dfcfc5346ff6e19d39827dd7fed951c0885a78540ebf78d8ec09dfdbfd08d82701ff7858204489b67563b9245649cbe115b6a47c
6
+ metadata.gz: 751e1649262c8e0d0d3fa6ccc02e71ec602ff166cc7a78d6b0e1c41a514983dfd8e106cd22dfabb9400f48d484a0b3eebe72d50dd0507b3369ddc3e813772217
7
+ data.tar.gz: b9db8d6fdbed7c32a8f64fa449a36a7830d6f70e1be3606a2bd863046cea6f8f437204b7106f52be8afac3c56b1a7e5a06ae604754637356dd7bb47c4c03eaa8
data/.gitignore CHANGED
@@ -33,9 +33,9 @@ build/
33
33
 
34
34
  # for a library or gem, you might want to ignore these files since the code is
35
35
  # intended to run in multiple environments; otherwise, check them in:
36
- # Gemfile.lock
37
- # .ruby-version
38
- # .ruby-gemset
36
+ Gemfile.lock
37
+ .ruby-version
38
+ .ruby-gemset
39
39
 
40
40
  # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
41
41
  .rvmrc
@@ -1,6 +1,11 @@
1
- sudo: required
2
1
  language: ruby
3
- dist: trusty
2
+ dist: xenial
3
+ os: linux
4
+
5
+ # See: https://docs.travis-ci.com/user/languages/ruby/#bundler-20
6
+ before_install:
7
+ - gem uninstall -v '>= 2' -i $(rvm gemdir)@global -ax bundler || true
8
+ - gem install bundler -v '< 2'
4
9
 
5
10
  rvm:
6
11
  - 2.2.3
data/README.md CHANGED
@@ -21,11 +21,43 @@ Or install it yourself as:
21
21
 
22
22
  $ gem install signalfx
23
23
 
24
+ #### Installing with Ruby 2.2.0 and 2.2.1
25
+
26
+ This library's protobuf dependency requires activesupport >=3.2. 5.x versions of activesupport require Ruby >=2.2.2,
27
+ so users of older Ruby versions will need to install activesupport 4.2.10 before signalfx to avoid attempts of
28
+ installing a more recent gem. Building and installing signalfx from source will fulfill this for you:
29
+
30
+ $ gem build signalfx.gemspec && gem install signalfx-<current_version>.gem
31
+
24
32
  ## Usage
25
33
 
26
- ### API access token
27
34
 
28
- To use this library, you need a SignalFx API access token, which can be obtained from the SignalFx organization you want to report data into.
35
+ ### Configuring your endpoints
36
+
37
+ In order to send your data to the correct realm, you may need to configure your
38
+ endpoints. If no endpoints are set manually, this library uses the ``us0`` realm by default.
39
+ If you are not in this realm, you will need to explicitly set the
40
+ endpoint config options below. To determine if you are in a different realm and need to
41
+ explicitly set the endpoints, check your profile page in the SignalFx
42
+ web application.
43
+
44
+ ```ruby
45
+ require('signalfx')
46
+ # Create client with alternate ingest endpoint
47
+ client = SignalFx.new('ORG_TOKEN', ingest_endpoint: 'https://ingest.{REALM}.signalfx.com',
48
+ stream_endpoint: 'https:/stream.{REALM}.signalfx.com')
49
+
50
+ ```
51
+
52
+ ### Access tokens
53
+
54
+ To use this library, you will also need to specify an access token when requesting
55
+ one of those clients. For the ingest client, you need to specify your
56
+ organization access token (which can be obtained from the
57
+ SignalFx organization you want to report data into). For the SignalFlow client, either an
58
+ organization access token or a user access token may be used. For more
59
+ information on access tokens, see the API's [authentication documentation](https://developers.signalfx.com/basics/authentication.html).
60
+
29
61
 
30
62
  ### Create client
31
63
 
@@ -47,7 +79,7 @@ Optional constructor parameters:
47
79
  deployed on Amazon AWS.
48
80
  + **ingest_endpoint** (string): to override the target ingest API
49
81
  endpoint.
50
- + **api_endpoint** (string): to override the target REST API endpoint.
82
+ + **stream_endpoint** (string): to override the target stream endpoint for SignalFlow.
51
83
  + **timeout** (number): timeout, in seconds, for requests to SignalFx.
52
84
  + **batch_size** (number): size of datapoint batches to send to
53
85
  SignalFx.
@@ -97,6 +129,11 @@ actually make it to SignalFx).
97
129
  To send data through a HTTP proxy, set the environment variable `http_proxy`
98
130
  with the proxy URL.
99
131
 
132
+ The SignalFlow client by default will use the proxy set in the `http_proxy`
133
+ envvar by default. To send SignalFlow websocket data through a separate proxy,
134
+ set the `proxy_url` keyword arg on the `client.signalflow` call.
135
+
136
+
100
137
  ### Sending multi-dimensional data
101
138
 
102
139
  Reporting dimensions for the data is also optional, and can be
@@ -166,9 +203,23 @@ sending events.
166
203
 
167
204
  You can run SignalFlow computations as well. This library supports all of the
168
205
  functionality described in our [API docs for
169
- SignalFlow](https://developers.signalfx.com/reference#signalflowconnect). Right
206
+ SignalFlow](https://developers.signalfx.com/signalflow_reference.html). Right
170
207
  now, the only supported transport mechanism is WebSockets.
171
208
 
209
+ #### Configure the SignalFlow client endpoint
210
+
211
+ By default, this library connects to the `us0` stream endpoint.
212
+ If you are not in this realm, you will need to explicitly set the
213
+ endpoint config options below when creating the client.
214
+ To determine if you are in a different realm and need to
215
+ explicitly set the endpoints, check your profile page in the SignalFx web application.
216
+
217
+ ```ruby
218
+ client = SignalFx.new('ORG_TOKEN', ingest_endpoint: 'https://ingest.{REALM}.signalfx.com',
219
+ stream_endpoint: 'https:/stream.{REALM}.signalfx.com')
220
+ ```
221
+
222
+
172
223
  To create a new SignalFlow client instance from an existing SignalFx client:
173
224
 
174
225
  ```ruby
@@ -16,31 +16,35 @@ module SignalFx
16
16
  # and set it as `AWSUniqueId` dimension for each datapoint and event.
17
17
  # Use this option only if your application deployed to Amazon
18
18
  # @param ingest_endpoint - string
19
- # @param api_endpoint - string
19
+ # @param stream_endpoint - string
20
20
  # @param timeout - number
21
21
  # @param batch_size - number
22
22
  # @param user_agents - array
23
23
  def self.new(api_token,
24
24
  enable_aws_unique_id: false,
25
25
  ingest_endpoint: RbConfig::DEFAULT_INGEST_ENDPOINT,
26
+ stream_endpoint: RbConfig::DEFAULT_STREAM_ENDPOINT,
26
27
  timeout: RbConfig::DEFAULT_TIMEOUT,
27
28
  batch_size: RbConfig::DEFAULT_BATCH_SIZE,
28
- user_agents: [])
29
+ user_agents: [],
30
+ logger: Logger.new(STDOUT, progname: "signalfx"))
29
31
  begin
30
32
  require_relative './proto/signal_fx_protocol_buffers.pb'
31
33
  ProtoBufSignalFx.new(api_token,
32
34
  enable_aws_unique_id: enable_aws_unique_id,
33
35
  ingest_endpoint: ingest_endpoint,
36
+ stream_endpoint: stream_endpoint,
34
37
  timeout: timeout,
35
38
  batch_size: batch_size,
36
39
  user_agents: user_agents)
37
40
 
38
41
  rescue Exception => e
39
- puts "Protocol Buffers not installed properly. Switching to JSON.
40
- #{e}"
42
+ logger.warn("Protocol Buffers not installed properly. Switching to JSON.
43
+ #{e}")
41
44
  JsonSignalFx.new(api_token,
42
45
  enable_aws_unique_id: enable_aws_unique_id,
43
46
  ingest_endpoint: ingest_endpoint,
47
+ stream_endpoint: stream_endpoint,
44
48
  timeout: timeout,
45
49
  batch_size: batch_size,
46
50
  user_agents: user_agents)
@@ -31,19 +31,19 @@ class SignalFxClient
31
31
  def initialize(api_token,
32
32
  enable_aws_unique_id: false,
33
33
  ingest_endpoint: RbConfig::DEFAULT_INGEST_ENDPOINT,
34
- api_endpoint: RbConfig::DEFAULT_API_ENDPOINT,
35
34
  stream_endpoint: RbConfig::DEFAULT_STREAM_ENDPOINT,
36
35
  timeout: RbConfig::DEFAULT_TIMEOUT,
37
36
  batch_size: RbConfig::DEFAULT_BATCH_SIZE,
38
- user_agents: [])
37
+ user_agents: [],
38
+ logger: Logger.new(STDOUT, progname: "signalfx"))
39
39
 
40
40
  @api_token = api_token
41
41
  @ingest_endpoint = ingest_endpoint
42
- @api_endpoint = api_endpoint
43
42
  @stream_endpoint = stream_endpoint
44
43
  @timeout = timeout
45
44
  @batch_size = batch_size
46
45
  @user_agents = user_agents
46
+ @logger = logger
47
47
 
48
48
  @aws_unique_id = nil
49
49
 
@@ -55,9 +55,9 @@ class SignalFxClient
55
55
  if request != nil
56
56
  json_resp = JSON.parse(request.body)
57
57
  @aws_unique_id = json_resp['instanceId']+'_'+json_resp['region']+'_'+json_resp['accountId']
58
- puts("AWS Unique ID loaded: #{@aws_unique_id}")
58
+ @logger.info("AWS Unique ID loaded: #{@aws_unique_id}")
59
59
  else
60
- puts('Failed to retrieve AWS unique ID.')
60
+ @logger.warn('Failed to retrieve AWS unique ID.')
61
61
  end
62
62
  }
63
63
  end
@@ -171,8 +171,11 @@ class SignalFxClient
171
171
  #
172
172
  # @return [SignalFlowClient] a newly instantiated client, configured with the
173
173
  # api token and endpoints from this class
174
- def signalflow
175
- SignalFlowClient.new(@api_token, @api_endpoint, @stream_endpoint)
174
+ def signalflow(proxy_url: nil, debug: false)
175
+ if ENV["http_proxy"] and proxy_url == nil
176
+ proxy_url = ENV["http_proxy"]
177
+ end
178
+ SignalFlowClient.new(@api_token, @stream_endpoint, proxy_url: proxy_url, debug: debug)
176
179
  end
177
180
 
178
181
  protected
@@ -208,7 +211,7 @@ class SignalFxClient
208
211
 
209
212
  headers = {HEADER_CONTENT_TYPE => header_content_type,
210
213
  HEADER_API_TOKEN_KEY => @api_token,
211
- HEADER_USER_AGENT_KEY => Version::NAME + '/' + Version::VERSION + http_user_agents}
214
+ HEADER_USER_AGENT_KEY => SignalFx::Version::NAME + '/' + SignalFx::Version::VERSION + http_user_agents}
212
215
 
213
216
  RestClient::Request.execute(
214
217
  method: :post,
@@ -223,14 +226,14 @@ class SignalFxClient
223
226
  block.call(response)
224
227
  end
225
228
  else
226
- puts "Failed to send datapoints. Response code: #{response.code}"
229
+ @logger.error("Failed to send datapoints. Response code: #{response.code}")
227
230
  if block
228
231
  block.call(nil)
229
232
  end
230
233
  end
231
234
  }
232
235
  rescue Exception => e
233
- puts "Failed to send datapoints. Error: #{e}"
236
+ @logger.error("Failed to send datapoints. Error: #{e}")
234
237
  if block
235
238
  block.call(nil)
236
239
  end
@@ -246,12 +249,12 @@ class SignalFxClient
246
249
  when 200
247
250
  return block.call(response)
248
251
  else
249
- puts "Failed to retrieve AWS unique ID. Response code: #{response.code}"
252
+ @logger.warn("Failed to retrieve AWS unique ID. Response code: #{response.code}")
250
253
  return block.call(nil)
251
254
  end
252
255
  }
253
256
  rescue Exception => e
254
- puts "Failed to retrieve AWS unique ID. Error: #{e}"
257
+ @logger.warn("Failed to retrieve AWS unique ID. Error: #{e}")
255
258
  block.call(nil)
256
259
  end
257
260
  end
@@ -19,8 +19,8 @@ require_relative "./websocket"
19
19
  # our API reference for SignalFlow}. Hash keys will be symbols instead of
20
20
  # strings.
21
21
  class SignalFlowClient
22
- def initialize(api_token, api_endpoint, stream_endpoint)
23
- @transport = SignalFlowWebsocketTransport.new(api_token, stream_endpoint)
22
+ def initialize(api_token, stream_endpoint, proxy_url = nil)
23
+ @transport = SignalFlowWebsocketTransport.new(api_token, stream_endpoint, proxy_url)
24
24
  end
25
25
 
26
26
  # Start a computation and attach to its output. If using WebSockets (the
@@ -2,12 +2,18 @@
2
2
 
3
3
  require 'json'
4
4
  require 'thread'
5
- require 'websocket-client-simple'
5
+ require 'faye/websocket'
6
6
 
7
7
  require_relative './binary'
8
8
  require_relative './channel'
9
9
  require_relative './computation'
10
10
 
11
+ class WebsocketError < StandardError
12
+ def initialize(ws_err)
13
+ super ws_err.message
14
+ end
15
+ end
16
+
11
17
 
12
18
  # A WebSocket transport for SignalFlow. This should not be used directly by
13
19
  # end-users.
@@ -17,13 +23,17 @@ class SignalFlowWebsocketTransport
17
23
  # A lower bound on the amount of time to wait for a computation to start
18
24
  COMPUTATION_START_TIMEOUT_SECONDS = 30
19
25
 
20
- def initialize(api_token, stream_endpoint)
26
+ def initialize(api_token, stream_endpoint, proxy_url: nil, logger: Logger.new(STDOUT, progname: "signalfx"), debug: false)
21
27
  @api_token = api_token
22
28
  @stream_endpoint = stream_endpoint
29
+ @logger = logger
23
30
  @compress = true
31
+ @proxy_url = proxy_url
32
+ @debug = debug
24
33
 
25
34
  @lock = Mutex.new
26
35
  @close_reason = nil
36
+ @last_error = nil
27
37
  reinit
28
38
  end
29
39
 
@@ -187,6 +197,9 @@ class SignalFlowWebsocketTransport
187
197
  # The socket will be closed by the server if auth isn't successful
188
198
  # within 5 seconds so no point in waiting longer
189
199
  if Time.now - start_time > 5 || @close_reason
200
+ if @last_error
201
+ raise WebsocketError.new(@last_error)
202
+ end
190
203
  raise "Could not authenticate to SignalFlow WebSocket: #{@close_reason}"
191
204
  end
192
205
  sleep 0.1
@@ -199,7 +212,11 @@ class SignalFlowWebsocketTransport
199
212
  private :send_msg
200
213
 
201
214
  def on_close(msg)
202
- @close_reason = "(#{msg.code}, #{msg.data})"
215
+ if @debug
216
+ @logger.info("Websocket on_close: #{msg}")
217
+ end
218
+
219
+ @close_reason = "(#{msg.code}, #{msg.reason})"
203
220
  @chan_callbacks.keys.each do |channel_name|
204
221
  invoke_callback_for_channel({ :event => "CONNECTION_CLOSED" }, channel_name)
205
222
  end
@@ -207,21 +224,31 @@ class SignalFlowWebsocketTransport
207
224
  reinit
208
225
  end
209
226
 
227
+ def on_error(e)
228
+ @logger.error("ERROR #{e.inspect}")
229
+ @last_error = e
230
+ end
231
+
232
+
210
233
  def on_message(m)
211
- begin
212
- return if m.type == :ping
213
- if m.type == :close
214
- on_close(m)
215
- return
216
- end
234
+ if @debug
235
+ @logger.info("Websocket on_message: #{m}")
236
+ end
217
237
 
218
- message_received(m.data, m.type == :text)
238
+ is_text = m.data.kind_of?(String)
239
+
240
+ begin
241
+ message_received(m.data, is_text)
219
242
  rescue Exception => e
220
- puts "Error processing SignalFlow message: #{e.backtrace.first}: #{e.message} (#{e.class})"
243
+ @logger.error("Error processing SignalFlow message: #{e.backtrace.first}: #{e.message} (#{e.class})")
221
244
  end
222
245
  end
223
246
 
224
247
  def on_open
248
+ if @debug
249
+ @logger.info("Websocket on_open")
250
+ end
251
+
225
252
  @ws.send({
226
253
  :type => "authenticate",
227
254
  :token => @api_token,
@@ -232,26 +259,38 @@ class SignalFlowWebsocketTransport
232
259
  # reactor.
233
260
  def startup_client
234
261
  this = self
235
- WebSocket::Client::Simple.connect("#{@stream_endpoint}/v2/signalflow/connect",
236
- # Verification is disabled by default so this is essential
237
- {verify_mode: OpenSSL::SSL::VERIFY_PEER}) do |ws|
238
- @ws = ws
239
- ws.on :error do |e|
240
- puts "ERROR #{e.inspect}"
241
- end
242
262
 
243
- ws.on :close do |e|
244
- this.on_close(e)
245
- end
263
+ options = {
264
+ :tls => {
265
+ :verify_peer => true,
266
+ }
267
+ }
268
+ if @proxy_url
269
+ options[:proxy] = {
270
+ :origin => @proxy_url,
271
+ }
272
+ end
273
+ Thread.new {
274
+ EM.run {
275
+ @ws = Faye::WebSocket::Client.new("#{@stream_endpoint}/v2/signalflow/connect", [], options)
276
+ @ws.on :error do |e|
277
+ this.on_error(e)
278
+ end
246
279
 
247
- ws.on :message do |m|
248
- this.on_message(m)
249
- end
280
+ @ws.on :close do |e|
281
+ this.on_close(e)
282
+ EM.stop_event_loop
283
+ end
250
284
 
251
- ws.on :open do
252
- this.on_open
253
- end
254
- end
285
+ @ws.on :message do |m|
286
+ this.on_message(m)
287
+ end
288
+
289
+ @ws.on :open do
290
+ this.on_open
291
+ end
292
+ }
293
+ }
255
294
  end
256
295
  private :startup_client
257
296
 
@@ -293,7 +332,8 @@ class SignalFlowWebsocketTransport
293
332
  if is_text
294
333
  JSON.parse(raw_msg, {:symbolize_names => true})
295
334
  else
296
- BinaryMessageParser.parse(raw_msg)
335
+ # Convert the byte array to a string
336
+ BinaryMessageParser.parse(raw_msg.pack("c*"))
297
337
  end
298
338
  end
299
339
  private :parse_message
@@ -1,6 +1,8 @@
1
- # Copyright (C) 2015-2016 SignalFx, Inc. All rights reserved.
1
+ # Copyright (C) 2015-2020 SignalFx, Inc. All rights reserved.
2
2
 
3
- module Version
4
- VERSION = '2.0.4'
5
- NAME = 'signalfx-ruby-client'
3
+ module SignalFx
4
+ module Version
5
+ VERSION = '3.1.1'
6
+ NAME = 'signalfx-ruby-client'
7
+ end
6
8
  end
@@ -5,7 +5,7 @@ require_relative 'lib/signalfx/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "signalfx"
8
- spec.version = Version::VERSION
8
+ spec.version = SignalFx::Version::VERSION
9
9
  spec.authors = ["SignalFx, Inc"]
10
10
  spec.email = ["info@signalfx.com"]
11
11
 
@@ -29,14 +29,21 @@ Gem::Specification.new do |spec|
29
29
 
30
30
  spec.required_ruby_version = '>= 2.2.0'
31
31
 
32
- spec.add_development_dependency "bundler", "~> 1.10"
32
+ spec.add_development_dependency "bundler", "~> 1.17.3"
33
33
  spec.add_development_dependency "rake", "~> 10.0"
34
34
  spec.add_development_dependency "rspec", "~> 3.3"
35
35
  spec.add_development_dependency "webmock", "~> 2.3.1"
36
36
  spec.add_development_dependency "thin", "~> 1.7"
37
37
  spec.add_development_dependency "pry"
38
- spec.add_development_dependency "faye-websocket", "~> 0.10.7"
38
+
39
+ # protobuf enforces this check but builds with a newer Ruby version so it's not enabled.
40
+ # Incorporating here to allow 2.2.0-1 users to successfully build and install signalfx.
41
+ active_support_max_version = "< 5" if Gem::Version.new(RUBY_VERSION) < Gem::Version.new("2.2.2")
42
+ spec.add_dependency "activesupport", '>= 3.2', active_support_max_version
43
+
39
44
  spec.add_dependency "protobuf", ">= 3.5.1"
40
45
  spec.add_dependency "rest-client", "~> 2.0"
41
- spec.add_dependency 'websocket-client-simple', "~> 0.3.0"
46
+ spec.add_dependency "faye-websocket", ">= 0.10.7", "< 0.12.0"
47
+ spec.add_dependency "thor", "= 0.20.0"
48
+
42
49
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: signalfx
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.4
4
+ version: 3.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - SignalFx, Inc
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-07-18 00:00:00.000000000 Z
11
+ date: 2021-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.10'
19
+ version: 1.17.3
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.10'
26
+ version: 1.17.3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -95,19 +95,19 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: faye-websocket
98
+ name: activesupport
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - "~>"
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: 0.10.7
104
- type: :development
103
+ version: '3.2'
104
+ type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - "~>"
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: 0.10.7
110
+ version: '3.2'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: protobuf
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -137,19 +137,39 @@ dependencies:
137
137
  - !ruby/object:Gem::Version
138
138
  version: '2.0'
139
139
  - !ruby/object:Gem::Dependency
140
- name: websocket-client-simple
140
+ name: faye-websocket
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - "~>"
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: 0.10.7
146
+ - - "<"
144
147
  - !ruby/object:Gem::Version
145
- version: 0.3.0
148
+ version: 0.12.0
146
149
  type: :runtime
147
150
  prerelease: false
148
151
  version_requirements: !ruby/object:Gem::Requirement
149
152
  requirements:
150
- - - "~>"
153
+ - - ">="
154
+ - !ruby/object:Gem::Version
155
+ version: 0.10.7
156
+ - - "<"
157
+ - !ruby/object:Gem::Version
158
+ version: 0.12.0
159
+ - !ruby/object:Gem::Dependency
160
+ name: thor
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - '='
164
+ - !ruby/object:Gem::Version
165
+ version: 0.20.0
166
+ type: :runtime
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - '='
151
171
  - !ruby/object:Gem::Version
152
- version: 0.3.0
172
+ version: 0.20.0
153
173
  description: This is a programmatic interface in Ruby for SignalFx's metadata and
154
174
  ingest APIs. It is meant to provide a base for communicating with SignalFx APIs
155
175
  that can be easily leveraged by scripts and applications to interact with SignalFx
@@ -163,7 +183,6 @@ files:
163
183
  - ".gitignore"
164
184
  - ".travis.yml"
165
185
  - Gemfile
166
- - Gemfile.lock
167
186
  - README.md
168
187
  - Rakefile
169
188
  - bin/console
@@ -188,7 +207,7 @@ homepage: https://signalfx.com
188
207
  licenses:
189
208
  - Apache Software License v2 © SignalFx
190
209
  metadata: {}
191
- post_install_message:
210
+ post_install_message:
192
211
  rdoc_options: []
193
212
  require_paths:
194
213
  - lib
@@ -203,9 +222,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
203
222
  - !ruby/object:Gem::Version
204
223
  version: '0'
205
224
  requirements: []
206
- rubyforge_project:
207
- rubygems_version: 2.6.13
208
- signing_key:
225
+ rubygems_version: 3.1.4
226
+ signing_key:
209
227
  specification_version: 4
210
228
  summary: Ruby client library for SignalFx
211
229
  test_files: []
@@ -1,120 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- signalfx (2.0.4)
5
- protobuf (>= 3.5.1)
6
- rest-client (~> 2.0)
7
- websocket-client-simple (~> 0.3.0)
8
-
9
- GEM
10
- remote: https://rubygems.org/
11
- specs:
12
- activesupport (5.1.5)
13
- concurrent-ruby (~> 1.0, >= 1.0.2)
14
- i18n (~> 0.7)
15
- minitest (~> 5.1)
16
- tzinfo (~> 1.1)
17
- addressable (2.5.2)
18
- public_suffix (>= 2.0.2, < 4.0)
19
- coderay (1.1.1)
20
- concurrent-ruby (1.0.5)
21
- crack (0.4.3)
22
- safe_yaml (~> 1.0.0)
23
- daemons (1.2.4)
24
- diff-lcs (1.2.5)
25
- docile (1.3.1)
26
- domain_name (0.5.20170404)
27
- unf (>= 0.0.5, < 1.0.0)
28
- event_emitter (0.2.6)
29
- eventmachine (1.2.5)
30
- faye-websocket (0.10.7)
31
- eventmachine (>= 0.12.0)
32
- websocket-driver (>= 0.5.1)
33
- hashdiff (0.3.7)
34
- http-cookie (1.0.3)
35
- domain_name (~> 0.5)
36
- i18n (0.9.5)
37
- concurrent-ruby (~> 1.0)
38
- json (2.1.0)
39
- method_source (0.8.2)
40
- middleware (0.1.0)
41
- mime-types (3.1)
42
- mime-types-data (~> 3.2015)
43
- mime-types-data (3.2016.0521)
44
- minitest (5.11.3)
45
- netrc (0.11.0)
46
- protobuf (3.8.1)
47
- activesupport (>= 3.2)
48
- middleware
49
- thor
50
- thread_safe
51
- pry (0.10.4)
52
- coderay (~> 1.1.0)
53
- method_source (~> 0.8.1)
54
- slop (~> 3.4)
55
- public_suffix (3.0.2)
56
- rack (2.0.3)
57
- rake (10.4.2)
58
- rest-client (2.0.2)
59
- http-cookie (>= 1.0.2, < 2.0)
60
- mime-types (>= 1.16, < 4.0)
61
- netrc (~> 0.8)
62
- rspec (3.3.0)
63
- rspec-core (~> 3.3.0)
64
- rspec-expectations (~> 3.3.0)
65
- rspec-mocks (~> 3.3.0)
66
- rspec-core (3.3.2)
67
- rspec-support (~> 3.3.0)
68
- rspec-expectations (3.3.1)
69
- diff-lcs (>= 1.2.0, < 2.0)
70
- rspec-support (~> 3.3.0)
71
- rspec-mocks (3.3.2)
72
- diff-lcs (>= 1.2.0, < 2.0)
73
- rspec-support (~> 3.3.0)
74
- rspec-support (3.3.0)
75
- safe_yaml (1.0.4)
76
- simplecov (0.16.1)
77
- docile (~> 1.1)
78
- json (>= 1.8, < 3)
79
- simplecov-html (~> 0.10.0)
80
- simplecov-html (0.10.2)
81
- slop (3.6.0)
82
- thin (1.7.2)
83
- daemons (~> 1.0, >= 1.0.9)
84
- eventmachine (~> 1.0, >= 1.0.4)
85
- rack (>= 1, < 3)
86
- thor (0.20.0)
87
- thread_safe (0.3.6)
88
- tzinfo (1.2.5)
89
- thread_safe (~> 0.1)
90
- unf (0.1.4)
91
- unf_ext
92
- unf_ext (0.0.7.5)
93
- webmock (2.3.2)
94
- addressable (>= 2.3.6)
95
- crack (>= 0.3.2)
96
- hashdiff
97
- websocket (1.2.5)
98
- websocket-client-simple (0.3.0)
99
- event_emitter
100
- websocket
101
- websocket-driver (0.6.5)
102
- websocket-extensions (>= 0.1.0)
103
- websocket-extensions (0.1.2)
104
-
105
- PLATFORMS
106
- ruby
107
-
108
- DEPENDENCIES
109
- bundler (~> 1.10)
110
- faye-websocket (~> 0.10.7)
111
- pry
112
- rake (~> 10.0)
113
- rspec (~> 3.3)
114
- signalfx!
115
- simplecov
116
- thin (~> 1.7)
117
- webmock (~> 2.3.1)
118
-
119
- BUNDLED WITH
120
- 1.16.1