chef-handler-datadog 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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