factor-connector-newrelic 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,47 @@
1
+ require 'factor-connector-api'
2
+ require 'newrelic-metrics'
3
+ require 'chronic'
4
+
5
+ Factor::Connector.service 'newrelic_metrics' do
6
+ action 'summarize' do |params|
7
+ api_key = params['api_key']
8
+ server_id = params['server']
9
+ app_id = params['application']
10
+ metrics = params['metrics']
11
+ range = params['range']
12
+
13
+ fail "API Key (api_key) is required" unless api_key
14
+ fail "Server ID (server) or Application ID (application) is required" unless server_id || app_id
15
+ fail "Server ID (server) or Application ID (application) is required, but not both" if server_id && app_id
16
+
17
+ fail "Metrics (metrics) is required" unless metrics
18
+ fail "Metrics (metrics) must be a hash" unless metrics.is_a?(Hash)
19
+ fail "Metrics (metrics) keys must all be strings" unless metrics.keys.all?{|k| k.is_a?(String)}
20
+ fail "Metrics (metrics) values must all be arrays of string" unless metrics.values.all?{|value| value.is_a?(Array) && value.all?{|i| i.is_a?(String)} }
21
+
22
+ if range
23
+ fail "Range (range) must have a from date" unless range['from']
24
+ fail "Range (range) 'from' time must be a String" unless range['from'].is_a?(String)
25
+ fail "Range (range) 'from' time is invalid" unless Chronic.parse(range['from'], context: :past)
26
+ if range['to']
27
+ fail "Range (range) 'to' time must be a String" unless range['to'].is_a?(String)
28
+ fail "Range (range) 'to' time is invalid" unless Chronic.parse(range['to'], context: :past)
29
+ end
30
+ end
31
+
32
+ option = {}
33
+ option[:server] = server_id if server_id
34
+ option[:application] = app_id if app_id
35
+
36
+ info "Pulling data from New Relic"
37
+ begin
38
+ api = NewRelicMetrics.new(api_key,option)
39
+ data = api.summarize(metrics, range)
40
+ rescue
41
+ fail "Failed to collect data from New Relic"
42
+ end
43
+
44
+ action_callback data
45
+
46
+ end
47
+ end
metadata ADDED
@@ -0,0 +1,142 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: factor-connector-newrelic
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Maciej Skierkowski
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-10-14 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: factor-connector-api
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 0.0.13
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 0.0.13
30
+ - !ruby/object:Gem::Dependency
31
+ name: newrelic-metrics
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 0.0.4
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 0.0.4
46
+ - !ruby/object:Gem::Dependency
47
+ name: chronic
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 0.10.2
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 0.10.2
62
+ - !ruby/object:Gem::Dependency
63
+ name: codeclimate-test-reporter
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 0.4.1
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 0.4.1
78
+ - !ruby/object:Gem::Dependency
79
+ name: rspec
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: 3.1.0
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 3.1.0
94
+ - !ruby/object:Gem::Dependency
95
+ name: rake
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: 10.3.2
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 10.3.2
110
+ description:
111
+ email:
112
+ - maciej@factor.io
113
+ executables: []
114
+ extensions: []
115
+ extra_rdoc_files: []
116
+ files:
117
+ - lib/factor/connector/newrelic_metrics.rb
118
+ homepage: https://factor.io
119
+ licenses: []
120
+ post_install_message:
121
+ rdoc_options: []
122
+ require_paths:
123
+ - lib
124
+ required_ruby_version: !ruby/object:Gem::Requirement
125
+ none: false
126
+ requirements:
127
+ - - ! '>='
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ required_rubygems_version: !ruby/object:Gem::Requirement
131
+ none: false
132
+ requirements:
133
+ - - ! '>='
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
136
+ requirements: []
137
+ rubyforge_project:
138
+ rubygems_version: 1.8.25
139
+ signing_key:
140
+ specification_version: 3
141
+ summary: NewRelic Factor.io Connector
142
+ test_files: []