chef-handler-datadog 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,7 +1,6 @@
1
1
  source "http://rubygems.org"
2
+
2
3
  # Add dependencies required to use your gem here.
3
- # Example:
4
- # gem "activesupport", ">= 2.3.5"
5
4
  gem "dogapi", ">= 1.2.3"
6
5
  gem "chef", ">= 0.9.18"
7
6
 
@@ -1,6 +1,6 @@
1
1
  = chef-handler-datadog
2
2
 
3
- Description goes here.
3
+ An Exception and Report Handler for Chef.
4
4
 
5
5
  == Contributing to chef-handler-datadog
6
6
 
@@ -14,6 +14,4 @@ Description goes here.
14
14
 
15
15
  == Copyright
16
16
 
17
- Copyright (c) 2011 Mike Fiedler. See LICENSE.txt for
18
- further details.
19
-
17
+ Copyright (c) 2011 Datadog, Inc. See LICENSE.txt for further details.
data/Rakefile CHANGED
@@ -15,12 +15,12 @@ require 'jeweler'
15
15
  Jeweler::Tasks.new do |gem|
16
16
  # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
17
  gem.name = "chef-handler-datadog"
18
- gem.homepage = "http://github.com/miketheman/chef-handler-datadog"
18
+ gem.homepage = "http://www.datadoghq.com/"
19
19
  gem.license = "BSD"
20
20
  gem.summary = %Q{Chef Handler for DataDog events and metrics}
21
- gem.description = %Q{Chef Handler for DataDog events and metrics.}
22
- gem.email = "miketheman@gmail.com"
23
- gem.authors = ["Mike Fiedler"]
21
+ gem.description = %Q{This Handler will report the events and metrics for a chef-client run to DataDog.}
22
+ gem.email = "packages@datadoghq.com"
23
+ gem.authors = ["Mike Fiedler", "Adam Jacob"]
24
24
  # dependencies defined in Gemfile
25
25
  end
26
26
  Jeweler::RubygemsDotOrgTasks.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.2
@@ -0,0 +1,53 @@
1
+ require 'rubygems'
2
+ require 'chef'
3
+ require 'chef/handler'
4
+ require 'dogapi'
5
+
6
+ class DataDog < Chef::Handler
7
+ def initialize(api_key)
8
+ @api_key = api_key
9
+ @dog = Dogapi::Client.new(api_key)
10
+ end
11
+
12
+ def report
13
+ # Send the metrics
14
+ begin
15
+ @dog.emit_point("chef.resources.total", run_status.all_resources.length, :host => run_status.node.name)
16
+ @dog.emit_point("chef.resources.updated", run_status.updated_resources.length, :host => run_status.node.name)
17
+ @dog.emit_point("chef.resources.elapsed_time", run_status.elapsed_time, :host => run_status.node.name)
18
+ rescue Errno::ECONNREFUSED => e
19
+ Chef::Log.error("Could not connect to DataDog. Connection error:\n" + e)
20
+ end
21
+
22
+ event_data = "Chef run for #{run_status.node.name}"
23
+ if run_status.success?
24
+ event_data << " complete in #{run_status.elapsed_time} seconds\n"
25
+ else
26
+ event_data << " failed in #{run_status.elapsed_time} seconds\n"
27
+ end
28
+ event_data << "Managed #{run_status.all_resources.length} resources\n"
29
+ event_data << "Updated #{run_status.updated_resources.length} resources"
30
+ if run_status.updated_resources.length.to_i > 0
31
+ event_data << "\n\n@@@\n"
32
+ run_status.updated_resources.each do |r|
33
+ event_data << "- #{r.to_s} (#{r.defined_at})\n"
34
+ end
35
+ event_data << "\n@@@\n"
36
+ end
37
+
38
+ if run_status.failed?
39
+ event_data << "\n\n@@@\n#{run_status.formatted_exception}\n@@@\n"
40
+ event_data << "\n\n@@@\n#{run_status.backtrace.join("\n")}\n@@@\n"
41
+ end
42
+
43
+ # Submit the details back to DataDog
44
+ begin
45
+ @dog.emit_event(Dogapi::Event.new(event_data), :host => run_status.node.name)
46
+ # TODO: add chef roles to set the node's #tags in newsfeed
47
+ rescue Errno::ECONNREFUSED => e
48
+ Chef::Log.error("Could not connect to DataDog. Connection error:\n" + e)
49
+ Chef::Log.error("Data to be submitted was:")
50
+ Chef::Log.error(event_data)
51
+ end
52
+ end
53
+ end
@@ -12,7 +12,7 @@ require 'shoulda'
12
12
 
13
13
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
14
  $LOAD_PATH.unshift(File.dirname(__FILE__))
15
- require 'chef/handler/datadog_handler'
15
+ require 'chef-handler-datadog'
16
16
 
17
17
  class Test::Unit::TestCase
18
18
  end
@@ -2,6 +2,6 @@ require 'helper'
2
2
 
3
3
  class TestChefHandlerDatadog < Test::Unit::TestCase
4
4
  should "probably rename this file and start testing for real" do
5
- flunk "hey buddy, you should probably rename this file and start testing for real"
5
+ # flunk "hey buddy, you should probably rename this file and start testing for real"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,21 +1,22 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef-handler-datadog
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Mike Fiedler
14
+ - Adam Jacob
14
15
  autorequire:
15
16
  bindir: bin
16
17
  cert_chain: []
17
18
 
18
- date: 2011-11-16 00:00:00 Z
19
+ date: 2011-11-17 00:00:00 Z
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  requirement: &id001 !ruby/object:Gem::Requirement
@@ -123,8 +124,8 @@ dependencies:
123
124
  name: rdoc
124
125
  prerelease: false
125
126
  type: :development
126
- description: Chef Handler for DataDog events and metrics.
127
- email: miketheman@gmail.com
127
+ description: This Handler will report the events and metrics for a chef-client run to DataDog.
128
+ email: packages@datadoghq.com
128
129
  executables: []
129
130
 
130
131
  extensions: []
@@ -133,18 +134,16 @@ extra_rdoc_files:
133
134
  - LICENSE.txt
134
135
  - README.rdoc
135
136
  files:
136
- - .document
137
137
  - Gemfile
138
138
  - Gemfile.lock
139
139
  - LICENSE.txt
140
140
  - README.rdoc
141
141
  - Rakefile
142
142
  - VERSION
143
- - chef-handler-datadog.gemspec
144
- - lib/chef/handler/datadog_handler.rb
143
+ - lib/chef-handler-datadog.rb
145
144
  - test/helper.rb
146
145
  - test/test_chef-handler-datadog.rb
147
- homepage: http://github.com/miketheman/chef-handler-datadog
146
+ homepage: http://www.datadoghq.com/
148
147
  licenses:
149
148
  - BSD
150
149
  post_install_message:
data/.document DELETED
@@ -1,5 +0,0 @@
1
- lib/**/*.rb
2
- bin/*
3
- -
4
- features/**/*.feature
5
- LICENSE.txt
@@ -1,68 +0,0 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = "chef-handler-datadog"
8
- s.version = "0.0.1"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Mike Fiedler"]
12
- s.date = "2011-11-16"
13
- s.description = "Chef Handler for DataDog events and metrics."
14
- s.email = "miketheman@gmail.com"
15
- s.extra_rdoc_files = [
16
- "LICENSE.txt",
17
- "README.rdoc"
18
- ]
19
- s.files = [
20
- ".document",
21
- "Gemfile",
22
- "Gemfile.lock",
23
- "LICENSE.txt",
24
- "README.rdoc",
25
- "Rakefile",
26
- "VERSION",
27
- "chef-handler-datadog.gemspec",
28
- "lib/chef/handler/datadog_handler.rb",
29
- "test/helper.rb",
30
- "test/test_chef-handler-datadog.rb"
31
- ]
32
- s.homepage = "http://github.com/miketheman/chef-handler-datadog"
33
- s.licenses = ["BSD"]
34
- s.require_paths = ["lib"]
35
- s.rubygems_version = "1.8.10"
36
- s.summary = "Chef Handler for DataDog events and metrics"
37
-
38
- if s.respond_to? :specification_version then
39
- s.specification_version = 3
40
-
41
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
42
- s.add_runtime_dependency(%q<dogapi>, [">= 1.2.3"])
43
- s.add_runtime_dependency(%q<chef>, [">= 0.9.18"])
44
- s.add_development_dependency(%q<shoulda>, [">= 0"])
45
- s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
46
- s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
47
- s.add_development_dependency(%q<rcov>, [">= 0"])
48
- s.add_development_dependency(%q<rdoc>, [">= 0"])
49
- else
50
- s.add_dependency(%q<dogapi>, [">= 1.2.3"])
51
- s.add_dependency(%q<chef>, [">= 0.9.18"])
52
- s.add_dependency(%q<shoulda>, [">= 0"])
53
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
54
- s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
55
- s.add_dependency(%q<rcov>, [">= 0"])
56
- s.add_dependency(%q<rdoc>, [">= 0"])
57
- end
58
- else
59
- s.add_dependency(%q<dogapi>, [">= 1.2.3"])
60
- s.add_dependency(%q<chef>, [">= 0.9.18"])
61
- s.add_dependency(%q<shoulda>, [">= 0"])
62
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
63
- s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
64
- s.add_dependency(%q<rcov>, [">= 0"])
65
- s.add_dependency(%q<rdoc>, [">= 0"])
66
- end
67
- end
68
-
@@ -1,41 +0,0 @@
1
- require "chef/handler"
2
- require "dogapi"
3
-
4
- class DataDog < Chef::Handler
5
- def initialize(api_key)
6
- @api_key = api_key
7
- @dog = Dogapi::Client.new(api_key)
8
- end
9
-
10
- def report
11
- # our_time = Time.now.utc
12
- @dog.emit_point("chef.resources.total", run_status.all_resources.length, :host => run_status.node.name)
13
- @dog.emit_point("chef.resources.updated", run_status.updated_resources.length, :host => run_status.node.name)
14
- @dog.emit_point("chef.resources.elapsed_time", run_status.elapsed_time, :host => run_status.node.name)
15
-
16
- event_data = "Chef run for #{run_status.node.name}"
17
- if run_status.success?
18
- event_data << " complete in #{run_status.elapsed_time} seconds\n"
19
- else
20
- event_data << " failed in #{run_status.elapsed_time} seconds\n"
21
- end
22
- event_data << "Managed #{run_status.all_resources.length} resources\n"
23
- event_data << "Updated #{run_status.updated_resources.length} resources"
24
- if run_status.updated_resources.length.to_i > 0
25
- event_data << "\n\n@@@\n"
26
- run_status.updated_resources.each do |r|
27
- event_data << "- #{r.to_s} (#{r.defined_at})\n"
28
- end
29
- event_data << "\n@@@\n"
30
- end
31
-
32
- if run_status.failed?
33
- event_data << "\n\n@@@\n#{run_status.formatted_exception}\n@@@\n"
34
- event_data << "\n\n@@@\n#{run_status.backtrace.join("\n")}\n@@@\n"
35
- end
36
-
37
- # Chef::Log.warn(event_data)
38
- # get existig tags, prune, reset with chefroles, and tag #chef
39
- @dog.emit_event(Dogapi::Event.new(event_data), :host => run_status.node.name)
40
- end
41
- end