librato-metrics 1.2.0 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +4 -1
- data/CHANGELOG.md +3 -0
- data/LICENSE +2 -2
- data/lib/librato/metrics.rb +1 -0
- data/lib/librato/metrics/client.rb +47 -0
- data/lib/librato/metrics/collection.rb +7 -2
- data/lib/librato/metrics/version.rb +1 -1
- data/librato-metrics.gemspec +1 -0
- data/spec/integration/metrics_spec.rb +45 -0
- metadata +5 -4
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
@@ -1 +1,4 @@
|
|
1
|
-
|
1
|
+
k6A��IM�7�1�Q-�pE�
|
2
|
+
'�d�Je�$x�B�6�u��^]�S-2dw�
|
3
|
+
r��L�v}�L$��@3r{�Z�Rt��y�R�\�)���X����?M/� ��"k�b��7����x�¡+Y�Z��*�LI)5�����(�����p�9��tĬS:�Vpε.��U
|
4
|
+
�פ���{��q���D�;��k��&���a�g���M��2�)\Aq%EV�.X�ղ��ʾ嬓: ����;��=���n
|
data/CHANGELOG.md
CHANGED
data/LICENSE
CHANGED
@@ -8,8 +8,8 @@ modification, are permitted provided that the following conditions are met:
|
|
8
8
|
* Redistributions in binary form must reproduce the above copyright
|
9
9
|
notice, this list of conditions and the following disclaimer in the
|
10
10
|
documentation and/or other materials provided with the distribution.
|
11
|
-
* Neither the name of Librato, Inc. nor the names of project contributors
|
12
|
-
may be used to endorse or promote products derived from this software
|
11
|
+
* Neither the name of Librato, Inc. nor the names of project contributors
|
12
|
+
may be used to endorse or promote products derived from this software
|
13
13
|
without specific prior written permission.
|
14
14
|
|
15
15
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
data/lib/librato/metrics.rb
CHANGED
@@ -340,6 +340,53 @@ module Librato
|
|
340
340
|
end
|
341
341
|
end
|
342
342
|
|
343
|
+
# Update one or more metrics. Note that attributes are specified in
|
344
|
+
# their own hash for updating a single metric but are included inline
|
345
|
+
# when updating multiple metrics.
|
346
|
+
#
|
347
|
+
# @deprecated Use #update_metric instead
|
348
|
+
alias update update_metric
|
349
|
+
|
350
|
+
# List sources, optionally limited by a name. See http://dev.librato.com/v1/sources
|
351
|
+
# and http://dev.librato.com/v1/get/sources
|
352
|
+
#
|
353
|
+
# @example Get sources matching "production"
|
354
|
+
# Librato::Metrics.sources name: "production"
|
355
|
+
#
|
356
|
+
# @param [Hash] filter
|
357
|
+
def sources(filter = {})
|
358
|
+
query = filter[:name] if filter.has_key?(:name)
|
359
|
+
path = "sources"
|
360
|
+
Collection.paginated_collection("sources", connection, path, query)
|
361
|
+
end
|
362
|
+
|
363
|
+
# Retrieve a single source by name. See http://dev.librato.com/v1/get/sources/:name
|
364
|
+
#
|
365
|
+
# @example Get the source for a particular EC2 instance from Cloudwatch
|
366
|
+
# Librato::Metrics.source "us-east-1b.i-f1bc8c9c"
|
367
|
+
#
|
368
|
+
# @param String name
|
369
|
+
def get_source(name)
|
370
|
+
url = connection.build_url("sources/#{name}")
|
371
|
+
response = connection.get(url)
|
372
|
+
parsed = SmartJSON.read(response.body)
|
373
|
+
end
|
374
|
+
|
375
|
+
# Update a source by name. See http://dev.librato.com/v1/get/sources/:name
|
376
|
+
#
|
377
|
+
# @example Update the source display name for a particular EC2 instance from Cloudwatch
|
378
|
+
# Librato::Metrics.source "us-east-1b.i-f1bc8c9c", display_name: "Production Web 1"
|
379
|
+
#
|
380
|
+
# @param String name
|
381
|
+
# @param Hash options
|
382
|
+
def update_source(name, options = {})
|
383
|
+
url = "sources/#{name}"
|
384
|
+
connection.put do |request|
|
385
|
+
request.url connection.build_url(url)
|
386
|
+
request.body = SmartJSON.write(options)
|
387
|
+
end
|
388
|
+
end
|
389
|
+
|
343
390
|
private
|
344
391
|
|
345
392
|
def default_faraday_adapter
|
@@ -14,12 +14,16 @@ module Librato
|
|
14
14
|
# @param [String] path API uri
|
15
15
|
# @param [Hash] query Query options
|
16
16
|
def self.paginated_metrics(connection, path, query)
|
17
|
+
paginated_collection("metrics", connection, path, query)
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.paginated_collection(name, connection, path, query)
|
17
21
|
results = []
|
18
22
|
# expects 200
|
19
23
|
url = connection.build_url(path, query)
|
20
24
|
response = connection.get(url)
|
21
25
|
parsed = SmartJSON.read(response.body)
|
22
|
-
results = parsed[
|
26
|
+
results = parsed[name]
|
23
27
|
return results if parsed["query"]["found"] <= MAX_RESULTS
|
24
28
|
query[:offset] = MAX_RESULTS
|
25
29
|
begin
|
@@ -27,10 +31,11 @@ module Librato
|
|
27
31
|
url = connection.build_url(path, query)
|
28
32
|
response = connection.get(url)
|
29
33
|
parsed = SmartJSON.read(response.body)
|
30
|
-
results.push(*parsed[
|
34
|
+
results.push(*parsed[name])
|
31
35
|
query[:offset] += MAX_RESULTS
|
32
36
|
end while query[:offset] < parsed["query"]["found"]
|
33
37
|
results
|
38
|
+
|
34
39
|
end
|
35
40
|
|
36
41
|
end
|
data/librato-metrics.gemspec
CHANGED
@@ -10,6 +10,7 @@ Gem::Specification.new do |s|
|
|
10
10
|
|
11
11
|
s.name = 'librato-metrics'
|
12
12
|
s.version = Librato::Metrics::VERSION
|
13
|
+
s.license = 'BSD 3-clause'
|
13
14
|
|
14
15
|
s.summary = "Ruby wrapper for Librato's Metrics API"
|
15
16
|
s.description = "An easy to use ruby wrapper for Librato's Metrics API"
|
@@ -310,5 +310,50 @@ module Librato
|
|
310
310
|
end
|
311
311
|
end
|
312
312
|
|
313
|
+
describe "Sources API" do
|
314
|
+
before do
|
315
|
+
Metrics.update_source("sources_api_test", display_name: "Sources Api Test")
|
316
|
+
end
|
317
|
+
|
318
|
+
describe "#sources" do
|
319
|
+
it "should work" do
|
320
|
+
sources = Metrics.sources
|
321
|
+
sources.should be_an(Array)
|
322
|
+
test_source = sources.detect { |s| s["name"] == "sources_api_test" }
|
323
|
+
test_source["display_name"].should == "Sources Api Test"
|
324
|
+
end
|
325
|
+
end
|
326
|
+
|
327
|
+
describe "#get_source" do
|
328
|
+
it "should work" do
|
329
|
+
test_source = Metrics.get_source("sources_api_test")
|
330
|
+
test_source["display_name"].should == "Sources Api Test"
|
331
|
+
end
|
332
|
+
end
|
333
|
+
|
334
|
+
describe "#update_source" do
|
335
|
+
it "should update an existing source" do
|
336
|
+
Metrics.update_source("sources_api_test", display_name: "Updated Source Name")
|
337
|
+
|
338
|
+
test_source = Metrics.get_source("sources_api_test")
|
339
|
+
test_source["display_name"].should == "Updated Source Name"
|
340
|
+
end
|
341
|
+
|
342
|
+
it "should create new sources" do
|
343
|
+
source_name = "sources_api_test_#{Time.now.to_f}"
|
344
|
+
lambda {
|
345
|
+
no_source = Metrics.get_source(source_name)
|
346
|
+
}.should raise_error(Librato::Metrics::NotFound)
|
347
|
+
|
348
|
+
Metrics.update_source(source_name, display_name: "New Source")
|
349
|
+
|
350
|
+
test_source = Metrics.get_source(source_name)
|
351
|
+
test_source.should_not be_nil
|
352
|
+
test_source["display_name"].should == "New Source"
|
353
|
+
end
|
354
|
+
end
|
355
|
+
|
356
|
+
end
|
357
|
+
|
313
358
|
end
|
314
359
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: librato-metrics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -37,7 +37,7 @@ cert_chain:
|
|
37
37
|
bktaNmhlblFBRjFDSDk2WmNxY0pIMTc5UzJ0SWlLRE04a2VlUklVT1BDM1dU
|
38
38
|
MGZhb2svMgpnQTJvemRyODUxYy9uQT09Ci0tLS0tRU5EIENFUlRJRklDQVRF
|
39
39
|
LS0tLS0K
|
40
|
-
date: 2013-
|
40
|
+
date: 2013-11-19 00:00:00.000000000 Z
|
41
41
|
dependencies:
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: faraday
|
@@ -236,7 +236,8 @@ files:
|
|
236
236
|
- spec/unit/metrics/queue_spec.rb
|
237
237
|
- spec/unit/metrics_spec.rb
|
238
238
|
homepage: https://github.com/librato/librato-metrics
|
239
|
-
licenses:
|
239
|
+
licenses:
|
240
|
+
- BSD 3-clause
|
240
241
|
post_install_message:
|
241
242
|
rdoc_options:
|
242
243
|
- --charset=UTF-8
|
@@ -250,7 +251,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
250
251
|
version: '0'
|
251
252
|
segments:
|
252
253
|
- 0
|
253
|
-
hash:
|
254
|
+
hash: 694362489325963939
|
254
255
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
255
256
|
none: false
|
256
257
|
requirements:
|
metadata.gz.sig
CHANGED
Binary file
|