riemann-client 0.0.8 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/riemann.rb CHANGED
@@ -5,6 +5,7 @@ module Riemann
5
5
  require 'beefcake'
6
6
  require 'riemann/version'
7
7
  require 'riemann/state'
8
+ require 'riemann/attribute'
8
9
  require 'riemann/event'
9
10
  require 'riemann/query'
10
11
  require 'riemann/message'
@@ -0,0 +1,8 @@
1
+ module Riemann
2
+ class Attribute
3
+ include Beefcake::Message
4
+
5
+ required :key, :string, 1
6
+ optional :value, :string, 2
7
+ end
8
+ end
data/lib/riemann/event.rb CHANGED
@@ -9,6 +9,7 @@ module Riemann
9
9
  optional :description, :string, 5
10
10
  repeated :tags, :string, 7
11
11
  optional :ttl, :float, 8
12
+ repeated :attributes, Attribute, 9
12
13
 
13
14
  optional :metric_sint64, :sint64, 13
14
15
  optional :metric_d, :double, 14
@@ -160,6 +161,11 @@ module Riemann
160
161
  else
161
162
  super hash
162
163
  end
164
+
165
+ # Add extra attributes to the event as Attribute instances with values converted to String
166
+ keys = hash.keys.map {|k| k.to_sym } - self.fields.values.map {|f| f.name.to_sym }
167
+ self.attributes = keys.map {|key| Attribute.new(:key => key.to_s, :value => (hash[key] || hash[key.to_sym]).to_s) }
168
+
163
169
  else
164
170
  super()
165
171
  end
@@ -183,5 +189,31 @@ module Riemann
183
189
  self.metric_f = m.to_f
184
190
  end
185
191
  end
192
+
193
+ # Look up attributes
194
+ def [](k)
195
+ if(respond_to? k)
196
+ super
197
+ else
198
+ r = attributes.select {|a| a.key.to_sym == k.to_sym }.map {|a| a.value}
199
+ r.size > 1 ? r : r.first
200
+ end
201
+ end
202
+
203
+ # Set attributes
204
+ def []=(k, v)
205
+ if(respond_to?("#{k}="))
206
+ super
207
+ else
208
+ a = self.attributes.select {|a| a.key.to_sym == k.to_sym }.first
209
+ if(a)
210
+ a.value = v.to_s
211
+ else
212
+ self.attributes << Attribute.new(:key => k.to_s, :value => v.to_s)
213
+ end
214
+ end
215
+ end
216
+
186
217
  end
218
+
187
219
  end
@@ -1,3 +1,3 @@
1
1
  module Riemann
2
- VERSION = '0.0.8'
2
+ VERSION = '0.2.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riemann-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-03 00:00:00.000000000 Z
12
+ date: 2013-04-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: beefcake
16
- requirement: &5515060 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: 0.3.5
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *5515060
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 0.3.5
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: trollop
27
- requirement: &5514260 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: 1.16.2
33
38
  type: :runtime
34
39
  prerelease: false
35
- version_requirements: *5514260
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 1.16.2
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: mtrc
38
- requirement: &5513580 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,25 +53,31 @@ dependencies:
43
53
  version: 0.0.4
44
54
  type: :runtime
45
55
  prerelease: false
46
- version_requirements: *5513580
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 0.0.4
47
62
  description:
48
63
  email: aphyr@aphyr.com
49
64
  executables: []
50
65
  extensions: []
51
66
  extra_rdoc_files: []
52
67
  files:
53
- - lib/riemann/version.rb
54
- - lib/riemann/state.rb
55
- - lib/riemann/repl-port
68
+ - lib/riemann.rb
69
+ - lib/riemann/attribute.rb
56
70
  - lib/riemann/auto_state.rb
57
71
  - lib/riemann/client.rb
58
72
  - lib/riemann/client/tcp.rb
59
73
  - lib/riemann/client/udp.rb
60
74
  - lib/riemann/event.rb
61
- - lib/riemann/query.rb
62
- - lib/riemann/metric_thread.rb
63
75
  - lib/riemann/message.rb
64
- - lib/riemann.rb
76
+ - lib/riemann/metric_thread.rb
77
+ - lib/riemann/query.rb
78
+ - lib/riemann/repl-port
79
+ - lib/riemann/state.rb
80
+ - lib/riemann/version.rb
65
81
  - LICENSE
66
82
  - README.markdown
67
83
  homepage: https://github.com/aphyr/riemann-ruby-client
@@ -84,7 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
84
100
  version: '0'
85
101
  requirements: []
86
102
  rubyforge_project: riemann-client
87
- rubygems_version: 1.8.10
103
+ rubygems_version: 1.8.25
88
104
  signing_key:
89
105
  specification_version: 3
90
106
  summary: Client for the distributed event system Riemann.