dogapi 1.3.0 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
data/lib/dogapi/facade.rb CHANGED
@@ -42,14 +42,17 @@ module Dogapi
42
42
  # :timestamp => Ruby stdlib Time
43
43
  # :host => String
44
44
  # :device => String
45
+ # :options => Map
46
+ #
47
+ # options[:type] = "counter" to specify a counter metric
48
+ # options[:tags] = ["tag1", "tag2"] to tag the point
45
49
  def emit_point(metric, value, options={})
46
50
  defaults = {:timestamp => Time.now, :host => nil, :device => nil}
47
51
  options = defaults.merge(options)
48
52
 
49
53
  self.emit_points(metric,
50
54
  [[options[:timestamp], value]],
51
- :host => options[:host],
52
- :device => options[:device])
55
+ options)
53
56
  end
54
57
 
55
58
  # Record a set of points of metric data
@@ -59,6 +62,10 @@ module Dogapi
59
62
  # Optional arguments:
60
63
  # :host => String
61
64
  # :device => String
65
+ # :options => Map
66
+ #
67
+ # options[:type] = "counter" to specify a counter metric
68
+ # options[:tags] = ["tag1", "tag2"] to tag the point
62
69
  def emit_points(metric, points, options={})
63
70
  defaults = {:host => nil, :device => nil}
64
71
  options = defaults.merge(options)
@@ -71,7 +78,7 @@ module Dogapi
71
78
  p[1] = p[1].to_f # TODO: stupid to_f will never raise an exception
72
79
  end
73
80
 
74
- @metric_svc.submit(metric, points, scope)
81
+ @metric_svc.submit(metric, points, scope, options)
75
82
  end
76
83
 
77
84
  #
@@ -9,22 +9,33 @@ module Dogapi
9
9
  API_VERSION = "v1"
10
10
 
11
11
  # Records an Event with no duration
12
- def submit(metric, points, scope)
12
+ def submit(metric, points, scope, options={})
13
13
  params = {
14
14
  :api_key => @api_key
15
15
  }
16
+ typ = options[:type] || "gauge"
17
+
18
+ if typ != "gauge" && typ == "counter"
19
+ raise ArgumentError, "metric type must be gauge or counter"
20
+ end
16
21
 
17
22
  body = { :series => [
18
23
  {
19
24
  :metric => metric,
20
25
  :points => points,
21
- :type => "gauge",
26
+ :type => typ,
22
27
  :host => scope.host,
23
28
  :device => scope.device
24
29
  }
25
30
  ]
26
31
  }
27
32
 
33
+
34
+ # Add tags if there are any
35
+ if not options[:tags].nil?
36
+ body[:series][0][:tags] = options[:tags]
37
+ end
38
+
28
39
  request(Net::HTTP::Post, '/api/' + API_VERSION + '/series', params, body, true)
29
40
  end
30
41
  end
data/tests/test_client.rb CHANGED
@@ -90,6 +90,14 @@ class TestClient < Test::Unit::TestCase
90
90
 
91
91
  assert now_event['text'] == now_message
92
92
  assert before_event['text'] == before_message
93
+
94
+ # Testing priorities
95
+ code, resp = dog_r.emit_event(Dogapi::Event.new(now_message, :msg_title =>now_title, :date_happened => now_ts, :priority => "low"))
96
+ low_event_id = resp["event"]["id"]
97
+ code, resp = dog.get_event(low_event_id)
98
+ low_event = resp['event']
99
+ puts low_event
100
+ assert low_event['priority'] == "low"
93
101
  end
94
102
 
95
103
  def test_metrics
@@ -99,6 +107,8 @@ class TestClient < Test::Unit::TestCase
99
107
 
100
108
  dog_r.emit_point('test.metric.metric', 10, :host => 'test.metric.host')
101
109
  dog_r.emit_points('test.metric.metric', [[Time.now-5*60, 0]], :host => 'test.metric.host')
110
+
111
+ dog_r.emit_points('test.metric.metric', [[Time.now-60, 20], [Time.now-30, 10], [Time.now, 5]], :tags => ["test:tag.1", "test:tag2"])
102
112
  end
103
113
 
104
114
  end
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dogapi
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
5
- prerelease:
4
+ prerelease: false
6
5
  segments:
7
6
  - 1
8
7
  - 3
9
- - 0
10
- version: 1.3.0
8
+ - 1
9
+ version: 1.3.1
11
10
  platform: ruby
12
11
  authors:
13
12
  - Datadog, Inc.
@@ -15,17 +14,16 @@ autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
17
16
 
18
- date: 2012-04-30 00:00:00 Z
17
+ date: 2012-05-24 00:00:00 -04:00
18
+ default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: json
22
22
  prerelease: false
23
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
24
  requirements:
26
25
  - - ">="
27
26
  - !ruby/object:Gem::Version
28
- hash: 1
29
27
  segments:
30
28
  - 1
31
29
  - 5
@@ -55,6 +53,7 @@ files:
55
53
  - lib/dogapi.rb
56
54
  - tests/test_client.rb
57
55
  - README.rdoc
56
+ has_rdoc: true
58
57
  homepage: http://datadoghq.com/
59
58
  licenses:
60
59
  - BSD
@@ -69,27 +68,23 @@ rdoc_options:
69
68
  require_paths:
70
69
  - lib
71
70
  required_ruby_version: !ruby/object:Gem::Requirement
72
- none: false
73
71
  requirements:
74
72
  - - ">="
75
73
  - !ruby/object:Gem::Version
76
- hash: 3
77
74
  segments:
78
75
  - 0
79
76
  version: "0"
80
77
  required_rubygems_version: !ruby/object:Gem::Requirement
81
- none: false
82
78
  requirements:
83
79
  - - ">="
84
80
  - !ruby/object:Gem::Version
85
- hash: 3
86
81
  segments:
87
82
  - 0
88
83
  version: "0"
89
84
  requirements: []
90
85
 
91
86
  rubyforge_project:
92
- rubygems_version: 1.8.11
87
+ rubygems_version: 1.3.6
93
88
  signing_key:
94
89
  specification_version: 3
95
90
  summary: Ruby bindings for Datadog's API