newrelic-metrics 0.1.03 → 0.1.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +13 -5
  2. data/lib/newrelic-metrics.rb +35 -38
  3. metadata +41 -22
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 1e68a861a34465e1c2c76f660473c03895e393d5
4
- data.tar.gz: baf3590a74335dc889aa757b8f1364e4a28f09a2
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ OWZhYmVjMjUxMjI3YzNlZWMxNmRiZGYzNTA1ODA5ZGNjYWViZDc1ZA==
5
+ data.tar.gz: !binary |-
6
+ MDE1YTYxNDRmNTZkMTBiMmQ3YjNiNDg5MTIyMmZhOWZkZDAzOTA5Mw==
5
7
  SHA512:
6
- metadata.gz: 072aba28a121266941aef351e60def06e6ed39b8bc6cd367d8e3998c2e807ecefd21c4bbd5845508b3efec2b0004d8c947311ac4115937f7dca60ac572653208
7
- data.tar.gz: 7863ae620a514cbf21c551c573cfbfc3bfb958da1ca9eb5b49a06c4b53d2cf9ce2d0d4a5ec84afeaeee353f2f33de35affd0df860b32e778e0b87e949e0b78bd
8
+ metadata.gz: !binary |-
9
+ NTJiZmI1MzYyNzI2YTI2ZGY2MzAxOTBlNzBjMDFiODY2ZGFhYjA0YWRiOGJj
10
+ NzNlNGU5MjdjNWFjYTk2M2UyMzNhZGRhMWY0ZTRlZWUxZmExMzhkZjJiNDcz
11
+ MjE3ZjFjZmFjOWI3OGE2ODZjMjM1ODQ0YjAxM2NjZjljM2Y5YmM=
12
+ data.tar.gz: !binary |-
13
+ YWIyOGI0OTQ1MjUyMzhkYTczMWQ1YTRmZDY3ZjhhMmRiZWE5YTlhODgyYjM2
14
+ OTdjN2JlNGM5MGVhNGJhYjc4MTFkYTdlOTk5ZDAxYTM4YTU0ZGY1NTdiM2Vm
15
+ ZGVmMjgyNTUzNzZhNjdhNjg1MWIyMmRmMGYyNzFkNmM5MTI0OWY=
@@ -6,8 +6,8 @@ require 'chronic'
6
6
  module NewRelicMetrics
7
7
  class Configuration
8
8
  attr_accessor :api_key
9
- def initialize(api_key:nil,&block)
10
- @api_key=api_key
9
+ def initialize(options={},&block)
10
+ @api_key=options[:api_key]
11
11
  yield(self) if block
12
12
  end
13
13
  end
@@ -30,45 +30,45 @@ module NewRelicMetrics
30
30
  def initialize(config=nil)
31
31
  @config = config || NewRelicMetrics.configuration
32
32
 
33
- raise ArgumentError, "No API Key is configured" unless @config && @config.api_key
33
+ raise ArgumentError.new("No API Key is configured") unless @config && @config.api_key
34
34
  end
35
35
 
36
- def names(application:nil, server:nil)
37
- raise ArgumentError, "Need to define either an application or server id" unless application || server
38
- raise ArgumentError, "Need to define either an application or server id, but not both" if application && server
39
- resource = application ? 'applications' : 'servers'
40
- resource_id = application || server
36
+ def names(options={})
37
+ resource_id = options[:application] || options[:server]
38
+ resource = options[:application] ? 'applications' : 'servers'
39
+ raise ArgumentError.new("Need to define either an application or server id") unless resource_id
40
+ raise ArgumentError.new("Need to define either an application or server id, but not both") if options[:application] && options[:server]
41
+
41
42
  get(resource, resource_id, "metrics")['metrics']
42
43
  end
43
44
 
44
- def metrics(application:nil, server:nil, metrics:, range:{}, summarize: false)
45
+ def metrics(options={})
46
+ resource_id = options[:application] || options[:server]
47
+ resource = options[:application] ? 'applications' : 'servers'
48
+ metrics = options[:metrics]
49
+ range = options[:range] || {}
50
+ summarize = options[:summarize] || false
51
+ conditions = []
52
+
53
+ raise ArgumentError.new("Need to define either an application or server id") unless resource_id
54
+ raise ArgumentError.new("Need to define either an application or server id, but not both") if options[:application] && options[:server]
55
+ raise ArgumentError.new("Metrics must be set") unless metrics
56
+ raise ArgumentError.new("Metrics must be an hash") unless metrics.is_a?(Hash)
57
+ raise ArgumentError.new("Metric keys must be string") unless metrics.keys.all?{|k| k.is_a?(String)}
58
+ raise ArgumentError.new("Metric values must be arrays") unless metrics.values.all?{|k| k.is_a?(Array)}
59
+ raise ArgumentError.new("Metric values must be an array of strings") unless metrics.values.all?{|k| k.all?{|v| v.is_a?(String)} }
60
+
45
61
  if range && range!={}
46
- raise ArgumentError, "Range must only contain a :to and :from time" unless range.keys.all?{|k| k==:to || k==:from }
47
- raise ArgumentError, "Range must contain a :from time" unless range.keys.include?(:from)
62
+ raise ArgumentError.new("Range must only contain a :to and :from time") unless range.keys.all?{|k| k==:to || k==:from }
63
+ raise ArgumentError.new("Range must contain a :from time") unless range.keys.include?(:from)
48
64
  end
49
-
50
- raise ArgumentError, "Need to define either an application or server id" unless application || server
51
- raise ArgumentError, "Need to define either an application or server id, but not both" if application && server
52
-
53
- raise ArgumentError, "Metrics must be set" if !metrics || metrics=={}
54
- raise ArgumentError, "Metrics must be an hash" unless metrics.is_a?(Hash)
55
- raise ArgumentError, "Metric keys must be string" unless metrics.keys.all?{|k| k.is_a?(String)}
56
- raise ArgumentError, "Metric values must be arrays" unless metrics.values.all?{|k| k.is_a?(Array)}
57
- raise ArgumentError, "Metric values must be an array of strings" unless metrics.values.all?{|k| k.all?{|v| v.is_a?(String)} }
58
-
59
-
60
-
61
- resource = application ? 'applications' : 'servers'
62
- resource_id = application || server
63
-
64
- conditions = []
65
-
65
+
66
66
  metrics.keys.each {|name| conditions << "names[]=#{URI.encode(name)}" }
67
67
  metrics.values.flatten.each {|val| conditions << "values[]=#{URI.encode(val)}" }
68
68
 
69
69
  if range[:from]
70
- from_time = Chronic.parse(range[:from], context: :past)
71
- to_time = Chronic.parse(range[:to]) if range[:to]
70
+ from_time = range[:from].is_a?(String) ? Chronic.parse(range[:from], context: :past) : range[:from]
71
+ to_time = range[:to].is_a?(String) ? Chronic.parse(range[:to]) : range[:to] if range[:to]
72
72
  to_time ||= Time.now
73
73
  if from_time
74
74
  conditions << "from=#{from_time.getlocal('+00:00').iso8601}"
@@ -85,20 +85,17 @@ module NewRelicMetrics
85
85
  private
86
86
 
87
87
  def get(resource, resource_id, path, query=nil)
88
- uri = URI.parse('https://api.newrelic.com/')
89
- uri.path = "/v2/#{resource}/#{resource_id}/#{path}.json"
88
+ uri = URI.parse('https://api.newrelic.com/')
89
+ uri.path = "/v2/#{resource}/#{resource_id}/#{path}.json"
90
90
  uri.query = query if query && query != ""
91
91
 
92
92
  begin
93
93
  response = RestClient.get(uri.to_s,'X-Api-Key'=>@config.api_key)
94
94
  rescue => ex
95
- if ex.response
96
- message = JSON.parse(ex.response).values.first['title']
97
- raise RequestFailed, message
98
- else
99
- raise RequestFailed, ex.message
100
- end
95
+ message = ex.response ? JSON.parse(ex.response).values.first['title'] : ex.message
96
+ raise RequestFailed, message
101
97
  end
98
+
102
99
  begin
103
100
  content = JSON.parse(response)
104
101
  rescue => ex
metadata CHANGED
@@ -1,100 +1,119 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: newrelic-metrics
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.03
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maciej Skierkowski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-02 00:00:00.000000000 Z
11
+ date: 2015-04-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: 1.7.3
19
+ version: '1.8'
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: 1.8.0
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '1.8'
30
+ - - ! '>='
25
31
  - !ruby/object:Gem::Version
26
- version: 1.7.3
32
+ version: 1.8.0
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: chronic
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
- - - "~>"
37
+ - - ~>
38
+ - !ruby/object:Gem::Version
39
+ version: '0.10'
40
+ - - ! '>='
32
41
  - !ruby/object:Gem::Version
33
42
  version: 0.10.2
34
43
  type: :runtime
35
44
  prerelease: false
36
45
  version_requirements: !ruby/object:Gem::Requirement
37
46
  requirements:
38
- - - "~>"
47
+ - - ~>
48
+ - !ruby/object:Gem::Version
49
+ version: '0.10'
50
+ - - ! '>='
39
51
  - !ruby/object:Gem::Version
40
52
  version: 0.10.2
41
53
  - !ruby/object:Gem::Dependency
42
54
  name: json
43
55
  requirement: !ruby/object:Gem::Requirement
44
56
  requirements:
45
- - - "~>"
57
+ - - ~>
58
+ - !ruby/object:Gem::Version
59
+ version: '1.8'
60
+ - - ! '>='
46
61
  - !ruby/object:Gem::Version
47
62
  version: 1.8.2
48
63
  type: :runtime
49
64
  prerelease: false
50
65
  version_requirements: !ruby/object:Gem::Requirement
51
66
  requirements:
52
- - - "~>"
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: '1.8'
70
+ - - ! '>='
53
71
  - !ruby/object:Gem::Version
54
72
  version: 1.8.2
55
73
  - !ruby/object:Gem::Dependency
56
74
  name: codeclimate-test-reporter
57
75
  requirement: !ruby/object:Gem::Requirement
58
76
  requirements:
59
- - - "~>"
77
+ - - ~>
60
78
  - !ruby/object:Gem::Version
61
79
  version: 0.4.7
62
80
  type: :development
63
81
  prerelease: false
64
82
  version_requirements: !ruby/object:Gem::Requirement
65
83
  requirements:
66
- - - "~>"
84
+ - - ~>
67
85
  - !ruby/object:Gem::Version
68
86
  version: 0.4.7
69
87
  - !ruby/object:Gem::Dependency
70
88
  name: rspec
71
89
  requirement: !ruby/object:Gem::Requirement
72
90
  requirements:
73
- - - "~>"
91
+ - - ~>
74
92
  - !ruby/object:Gem::Version
75
93
  version: 3.2.0
76
94
  type: :development
77
95
  prerelease: false
78
96
  version_requirements: !ruby/object:Gem::Requirement
79
97
  requirements:
80
- - - "~>"
98
+ - - ~>
81
99
  - !ruby/object:Gem::Version
82
100
  version: 3.2.0
83
101
  - !ruby/object:Gem::Dependency
84
102
  name: rake
85
103
  requirement: !ruby/object:Gem::Requirement
86
104
  requirements:
87
- - - "~>"
105
+ - - ~>
88
106
  - !ruby/object:Gem::Version
89
107
  version: 10.4.2
90
108
  type: :development
91
109
  prerelease: false
92
110
  version_requirements: !ruby/object:Gem::Requirement
93
111
  requirements:
94
- - - "~>"
112
+ - - ~>
95
113
  - !ruby/object:Gem::Version
96
114
  version: 10.4.2
97
- description:
115
+ description: This is a Ruby gem to easily get metrics for your application or servers
116
+ from New Relic using the V2 API. This requires a Pro account.
98
117
  email:
99
118
  - maciej@factor.io
100
119
  executables: []
@@ -103,7 +122,8 @@ extra_rdoc_files: []
103
122
  files:
104
123
  - lib/newrelic-metrics.rb
105
124
  homepage: https://factor.io
106
- licenses: []
125
+ licenses:
126
+ - MIT
107
127
  metadata: {}
108
128
  post_install_message:
109
129
  rdoc_options: []
@@ -111,12 +131,12 @@ require_paths:
111
131
  - lib
112
132
  required_ruby_version: !ruby/object:Gem::Requirement
113
133
  requirements:
114
- - - ">="
134
+ - - ! '>='
115
135
  - !ruby/object:Gem::Version
116
- version: '0'
136
+ version: 1.9.2
117
137
  required_rubygems_version: !ruby/object:Gem::Requirement
118
138
  requirements:
119
- - - ">="
139
+ - - ! '>='
120
140
  - !ruby/object:Gem::Version
121
141
  version: '0'
122
142
  requirements: []
@@ -126,4 +146,3 @@ signing_key:
126
146
  specification_version: 4
127
147
  summary: Easily get metrics out of New Relic for your application or servers
128
148
  test_files: []
129
- has_rdoc: