chef-handler-datadog 0.0.13 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +55 -0
- data/.travis.yml +4 -1
- data/Gemfile +2 -12
- data/LICENSE.txt +1 -1
- data/{README.rdoc → README.md} +8 -7
- data/Rakefile +2 -24
- data/chef-handler-datadog.gemspec +32 -0
- data/lib/chef-handler-datadog.rb +2 -135
- data/lib/chef/handler/datadog.rb +140 -0
- data/test/helper.rb +1 -1
- metadata +62 -50
- data/Gemfile.lock +0 -77
- data/VERSION +0 -1
data/.gitignore
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
# rcov generated
|
2
|
+
coverage
|
3
|
+
|
4
|
+
# rdoc generated
|
5
|
+
rdoc
|
6
|
+
|
7
|
+
# yard generated
|
8
|
+
doc
|
9
|
+
.yardoc
|
10
|
+
|
11
|
+
# bundler
|
12
|
+
.bundle
|
13
|
+
|
14
|
+
# jeweler generated
|
15
|
+
pkg
|
16
|
+
|
17
|
+
# Have editor/IDE/OS specific files you need to ignore? Consider using a global gitignore:
|
18
|
+
#
|
19
|
+
# * Create a file at ~/.gitignore
|
20
|
+
# * Include files you want ignored
|
21
|
+
# * Run: git config --global core.excludesfile ~/.gitignore
|
22
|
+
#
|
23
|
+
# After doing this, these files will be ignored in all your git projects,
|
24
|
+
# saving you from having to 'pollute' every project you touch with them
|
25
|
+
#
|
26
|
+
# Not sure what to needs to be ignored for particular editors/OSes? Here's some ideas to get you started. (Remember, remove the leading # of the line)
|
27
|
+
#
|
28
|
+
# For MacOS:
|
29
|
+
#
|
30
|
+
.DS_Store
|
31
|
+
|
32
|
+
# For RVM
|
33
|
+
.rvmrc
|
34
|
+
|
35
|
+
# For TextMate
|
36
|
+
*.tmproj
|
37
|
+
# tmtags
|
38
|
+
|
39
|
+
# For emacs:
|
40
|
+
#*~
|
41
|
+
#\#*
|
42
|
+
#.\#*
|
43
|
+
|
44
|
+
# For vim:
|
45
|
+
#*.swp
|
46
|
+
|
47
|
+
# For redcar:
|
48
|
+
#.redcar
|
49
|
+
|
50
|
+
# For rubinius:
|
51
|
+
#*.rbc
|
52
|
+
|
53
|
+
json
|
54
|
+
rake
|
55
|
+
Gemfile.lock
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -1,14 +1,4 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
2
|
|
3
|
-
#
|
4
|
-
|
5
|
-
gem "dogapi", ">= 1.2"
|
6
|
-
|
7
|
-
# Add dependencies to develop your gem here.
|
8
|
-
# Include everything needed to run rake, tests, features, etc.
|
9
|
-
group :development do
|
10
|
-
gem "shoulda", ">= 0"
|
11
|
-
gem "bundler", ">= 1.0.0"
|
12
|
-
gem "jeweler", "~> 1.6.4"
|
13
|
-
gem "rdoc", ">= 0"
|
14
|
-
end
|
3
|
+
# Specify your gem's dependencies in chef-handler-datadog.gemspec
|
4
|
+
gemspec
|
data/LICENSE.txt
CHANGED
data/{README.rdoc → README.md}
RENAMED
@@ -1,14 +1,15 @@
|
|
1
|
-
|
1
|
+
# chef-handler-datadog
|
2
2
|
|
3
3
|
An Exception and Report Handler for Chef.
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
[![Build Status](https://secure.travis-ci.org/DataDog/chef-handler-datadog.png?branch=master)](http://travis-ci.org/DataDog/chef-handler-datadog)
|
6
|
+
|
7
|
+
## Using chef-handler-datadog
|
7
8
|
|
8
9
|
The [Chef integration page](https://app.datadoghq.com/accounts/settings#integrations) has detailed instructions.
|
9
10
|
|
10
|
-
|
11
|
-
|
11
|
+
## Contributing to chef-handler-datadog
|
12
|
+
|
12
13
|
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
|
13
14
|
* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
|
14
15
|
* Fork the project
|
@@ -17,6 +18,6 @@ The [Chef integration page](https://app.datadoghq.com/accounts/settings#integrat
|
|
17
18
|
* Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
|
18
19
|
* Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
|
19
20
|
|
20
|
-
|
21
|
+
## Copyright
|
21
22
|
|
22
|
-
Copyright (c)
|
23
|
+
Copyright (c) 2012 Datadog, Inc. See LICENSE.txt for further details.
|
data/Rakefile
CHANGED
@@ -1,29 +1,7 @@
|
|
1
|
+
#!/usr/bin/env rake
|
1
2
|
# encoding: utf-8
|
2
|
-
|
3
3
|
require 'rubygems'
|
4
|
-
require 'bundler'
|
5
|
-
begin
|
6
|
-
Bundler.setup(:default, :development)
|
7
|
-
rescue Bundler::BundlerError => e
|
8
|
-
$stderr.puts e.message
|
9
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
-
exit e.status_code
|
11
|
-
end
|
12
|
-
require 'rake'
|
13
|
-
|
14
|
-
require 'jeweler'
|
15
|
-
Jeweler::Tasks.new do |gem|
|
16
|
-
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
17
|
-
gem.name = "chef-handler-datadog"
|
18
|
-
gem.homepage = "http://www.datadoghq.com/"
|
19
|
-
gem.license = "BSD"
|
20
|
-
gem.summary = %Q{Chef Handler for DataDog events and metrics}
|
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", "Alexis Le-Quoc"]
|
24
|
-
# dependencies defined in Gemfile
|
25
|
-
end
|
26
|
-
Jeweler::RubygemsDotOrgTasks.new
|
4
|
+
require 'bundler/gem_tasks'
|
27
5
|
|
28
6
|
require 'rake/testtask'
|
29
7
|
Rake::TestTask.new(:test) do |test|
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
chef_version = ENV.key?('CHEF_VERSION') ? "= #{ENV['CHEF_VERSION']}" : ['~> 10.12']
|
3
|
+
require File.expand_path('../lib/chef-handler-datadog', __FILE__)
|
4
|
+
|
5
|
+
Gem::Specification.new do |gem|
|
6
|
+
|
7
|
+
gem.name = "chef-handler-datadog"
|
8
|
+
gem.summary = %q{Chef Handler for DataDog events and metrics}
|
9
|
+
gem.description = %q{This Handler will report the events and metrics for a chef-client run to DataDog.}
|
10
|
+
gem.license = "BSD"
|
11
|
+
gem.version = ChefHandlerDatadog::VERSION
|
12
|
+
|
13
|
+
gem.files = `git ls-files`.split($\)
|
14
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
15
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
16
|
+
gem.require_paths = ['lib']
|
17
|
+
gem.extra_rdoc_files = ['README.md', 'LICENSE.txt']
|
18
|
+
|
19
|
+
gem.add_dependency 'chef', chef_version
|
20
|
+
gem.add_dependency 'dogapi', ">= 1.2"
|
21
|
+
|
22
|
+
gem.add_development_dependency 'rake'
|
23
|
+
gem.add_development_dependency 'shoulda'
|
24
|
+
gem.add_development_dependency 'bundler'
|
25
|
+
gem.add_development_dependency 'rdoc'
|
26
|
+
gem.add_development_dependency 'travis-lint'
|
27
|
+
|
28
|
+
gem.authors = ["Mike Fiedler", "Adam Jacob", "Alexis Le-Quoc"]
|
29
|
+
gem.email = ["packages@datadoghq.com"]
|
30
|
+
gem.homepage = "http://www.datadoghq.com/"
|
31
|
+
|
32
|
+
end
|
data/lib/chef-handler-datadog.rb
CHANGED
@@ -1,136 +1,3 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require 'chef/handler'
|
4
|
-
require 'dogapi'
|
5
|
-
|
6
|
-
class Datadog < Chef::Handler
|
7
|
-
|
8
|
-
# For the tags to work, the client must have created an Application Key on the
|
9
|
-
# "Account Settings" page here: https://app.datadoghq.com/account/settings
|
10
|
-
# It should be passed along from the node/role/environemnt attributes, as the default is nil.
|
11
|
-
def initialize(opts = nil)
|
12
|
-
opts = opts || {}
|
13
|
-
@api_key = opts[:api_key]
|
14
|
-
@application_key = opts[:application_key]
|
15
|
-
# If we're on ec2, use the instance by default, unless instructed otherwise
|
16
|
-
@use_ec2_instance_id = !opts.has_key?(:use_ec2_instance_id) || opts.has_key?(:use_ec2_instance_id) && opts[:use_ec2_instance_id]
|
17
|
-
@dog = Dogapi::Client.new(@api_key, application_key = @application_key)
|
18
|
-
end
|
19
|
-
|
20
|
-
def report
|
21
|
-
hostname = run_status.node.name
|
22
|
-
if @use_ec2_instance_id && run_status.node.attribute?("ec2") && run_status.node.ec2.attribute?("instance_id")
|
23
|
-
hostname = run_status.node.ec2.instance_id
|
24
|
-
end
|
25
|
-
|
26
|
-
# Send the metrics
|
27
|
-
begin
|
28
|
-
@dog.emit_point("chef.resources.total", run_status.all_resources.length, :host => hostname)
|
29
|
-
@dog.emit_point("chef.resources.updated", run_status.updated_resources.length, :host => hostname)
|
30
|
-
@dog.emit_point("chef.resources.elapsed_time", run_status.elapsed_time, :host => hostname)
|
31
|
-
rescue Errno::ECONNREFUSED, Errno::ETIMEDOUT => e
|
32
|
-
Chef::Log.error("Could not send metrics to Datadog. Connection error:\n" + e)
|
33
|
-
end
|
34
|
-
|
35
|
-
event_title = ""
|
36
|
-
run_time = pluralize(run_status.elapsed_time, "second")
|
37
|
-
if run_status.success?
|
38
|
-
alert_type = "success"
|
39
|
-
event_priority = "low"
|
40
|
-
event_title << "Chef completed in #{run_time} on #{hostname} "
|
41
|
-
else
|
42
|
-
event_title << "Chef failed in #{run_time} on #{hostname} "
|
43
|
-
end
|
44
|
-
|
45
|
-
event_data = "Chef updated #{run_status.updated_resources.length} resources out of #{run_status.all_resources.length} resources total."
|
46
|
-
if run_status.updated_resources.length.to_i > 0
|
47
|
-
event_data << "\n@@@\n"
|
48
|
-
run_status.updated_resources.each do |r|
|
49
|
-
event_data << "- #{r.to_s} (#{defined_at(r)})\n"
|
50
|
-
end
|
51
|
-
event_data << "\n@@@\n"
|
52
|
-
end
|
53
|
-
|
54
|
-
if run_status.failed?
|
55
|
-
alert_type = "error"
|
56
|
-
event_priority = "normal"
|
57
|
-
event_data << "\n@@@\n#{run_status.formatted_exception}\n@@@\n"
|
58
|
-
event_data << "\n@@@\n#{run_status.backtrace.join("\n")}\n@@@\n"
|
59
|
-
end
|
60
|
-
|
61
|
-
# Submit the details back to Datadog
|
62
|
-
begin
|
63
|
-
# Send the Event data
|
64
|
-
@dog.emit_event(Dogapi::Event.new(event_data,
|
65
|
-
:msg_title => event_title,
|
66
|
-
:event_type => 'config_management.run',
|
67
|
-
:event_object => hostname,
|
68
|
-
:alert_type => alert_type,
|
69
|
-
:priority => event_priority,
|
70
|
-
:source_type_name => 'chef'
|
71
|
-
), :host => hostname)
|
72
|
-
|
73
|
-
# Get the current list of tags, remove any "role:" entries
|
74
|
-
host_tags = @dog.host_tags(node.name)[1]["tags"] || []
|
75
|
-
host_tags.delete_if {|tag| tag.start_with?('role:') }
|
76
|
-
|
77
|
-
# Get list of chef roles, rename them to tag format
|
78
|
-
chef_roles = node.run_list.roles
|
79
|
-
chef_roles.collect! {|role| "role:" + role }
|
80
|
-
|
81
|
-
# Get the chef environment (as long as it's not '_default')
|
82
|
-
if node.respond_to?('chef_environment') && node.chef_environment != '_default'
|
83
|
-
host_tags.delete_if {|tag| tag.start_with?('env:') }
|
84
|
-
host_tags << "env:" + node.chef_environment
|
85
|
-
end
|
86
|
-
|
87
|
-
# Combine (union) both arrays. Removes dupes, preserves non-chef tags.
|
88
|
-
new_host_tags = host_tags | chef_roles
|
89
|
-
|
90
|
-
# Replace all tags with the new tags
|
91
|
-
@dog.update_tags(node.name, new_host_tags)
|
92
|
-
|
93
|
-
rescue Errno::ECONNREFUSED, Errno::ETIMEDOUT => e
|
94
|
-
Chef::Log.error("Could not connect to Datadog. Connection error:\n" + e)
|
95
|
-
Chef::Log.error("Data to be submitted was:")
|
96
|
-
Chef::Log.error(event_title)
|
97
|
-
Chef::Log.error(event_data)
|
98
|
-
Chef::Log.error("Tags to be set for this run:")
|
99
|
-
Chef::Log.error(new_host_tags)
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
private
|
104
|
-
|
105
|
-
def pluralize(number, noun)
|
106
|
-
begin
|
107
|
-
case number
|
108
|
-
when 0..1
|
109
|
-
"less than 1 #{noun}"
|
110
|
-
else
|
111
|
-
"#{number.round} #{noun}s"
|
112
|
-
end
|
113
|
-
rescue
|
114
|
-
Chef::Log.warn("Cannot make #{number} more legible")
|
115
|
-
"#{number} #{noun}s"
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
## This function is to mimic behavior built into a later version of chef than 0.9.x
|
120
|
-
## Source is here: https://github.com/opscode/chef/blob/master/chef/lib/chef/resource.rb#L415-424
|
121
|
-
## Including this based on help from schisamo
|
122
|
-
def defined_at(resource)
|
123
|
-
cookbook_name = resource.cookbook_name
|
124
|
-
recipe_name = resource.recipe_name
|
125
|
-
source_line = resource.source_line
|
126
|
-
if cookbook_name && recipe_name && source_line
|
127
|
-
"#{cookbook_name}::#{recipe_name} line #{source_line.split(':')[1]}"
|
128
|
-
elsif source_line
|
129
|
-
file, line_no = source_line.split(':')
|
130
|
-
"#{file} line #{line_no}"
|
131
|
-
else
|
132
|
-
"dynamically defined"
|
133
|
-
end
|
134
|
-
end
|
135
|
-
|
1
|
+
module ChefHandlerDatadog
|
2
|
+
VERSION = "0.1.0"
|
136
3
|
end
|
@@ -0,0 +1,140 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'chef'
|
3
|
+
require 'chef/handler'
|
4
|
+
require 'dogapi'
|
5
|
+
|
6
|
+
class Chef
|
7
|
+
class Handler
|
8
|
+
class Datadog < Chef::Handler
|
9
|
+
|
10
|
+
# For the tags to work, the client must have created an Application Key on the
|
11
|
+
# "Account Settings" page here: https://app.datadoghq.com/account/settings
|
12
|
+
# It should be passed along from the node/role/environemnt attributes, as the default is nil.
|
13
|
+
def initialize(opts = nil)
|
14
|
+
opts = opts || {}
|
15
|
+
@api_key = opts[:api_key]
|
16
|
+
@application_key = opts[:application_key]
|
17
|
+
# If we're on ec2, use the instance by default, unless instructed otherwise
|
18
|
+
@use_ec2_instance_id = !opts.has_key?(:use_ec2_instance_id) || opts.has_key?(:use_ec2_instance_id) && opts[:use_ec2_instance_id]
|
19
|
+
@dog = Dogapi::Client.new(@api_key, application_key = @application_key)
|
20
|
+
end
|
21
|
+
|
22
|
+
def report
|
23
|
+
hostname = run_status.node.name
|
24
|
+
if @use_ec2_instance_id && run_status.node.attribute?("ec2") && run_status.node.ec2.attribute?("instance_id")
|
25
|
+
hostname = run_status.node.ec2.instance_id
|
26
|
+
end
|
27
|
+
|
28
|
+
# Send the metrics
|
29
|
+
begin
|
30
|
+
@dog.emit_point("chef.resources.total", run_status.all_resources.length, :host => hostname)
|
31
|
+
@dog.emit_point("chef.resources.updated", run_status.updated_resources.length, :host => hostname)
|
32
|
+
@dog.emit_point("chef.resources.elapsed_time", run_status.elapsed_time, :host => hostname)
|
33
|
+
rescue Errno::ECONNREFUSED, Errno::ETIMEDOUT => e
|
34
|
+
Chef::Log.error("Could not send metrics to Datadog. Connection error:\n" + e)
|
35
|
+
end
|
36
|
+
|
37
|
+
event_title = ""
|
38
|
+
run_time = pluralize(run_status.elapsed_time, "second")
|
39
|
+
if run_status.success?
|
40
|
+
alert_type = "success"
|
41
|
+
event_priority = "low"
|
42
|
+
event_title << "Chef completed in #{run_time} on #{hostname} "
|
43
|
+
else
|
44
|
+
event_title << "Chef failed in #{run_time} on #{hostname} "
|
45
|
+
end
|
46
|
+
|
47
|
+
event_data = "Chef updated #{run_status.updated_resources.length} resources out of #{run_status.all_resources.length} resources total."
|
48
|
+
if run_status.updated_resources.length.to_i > 0
|
49
|
+
event_data << "\n@@@\n"
|
50
|
+
run_status.updated_resources.each do |r|
|
51
|
+
event_data << "- #{r.to_s} (#{defined_at(r)})\n"
|
52
|
+
end
|
53
|
+
event_data << "\n@@@\n"
|
54
|
+
end
|
55
|
+
|
56
|
+
if run_status.failed?
|
57
|
+
alert_type = "error"
|
58
|
+
event_priority = "normal"
|
59
|
+
event_data << "\n@@@\n#{run_status.formatted_exception}\n@@@\n"
|
60
|
+
event_data << "\n@@@\n#{run_status.backtrace.join("\n")}\n@@@\n"
|
61
|
+
end
|
62
|
+
|
63
|
+
# Submit the details back to Datadog
|
64
|
+
begin
|
65
|
+
# Send the Event data
|
66
|
+
@dog.emit_event(Dogapi::Event.new(event_data,
|
67
|
+
:msg_title => event_title,
|
68
|
+
:event_type => 'config_management.run',
|
69
|
+
:event_object => hostname,
|
70
|
+
:alert_type => alert_type,
|
71
|
+
:priority => event_priority,
|
72
|
+
:source_type_name => 'chef'
|
73
|
+
), :host => hostname)
|
74
|
+
|
75
|
+
# Get the current list of tags, remove any "role:" entries
|
76
|
+
host_tags = @dog.host_tags(node.name)[1]["tags"] || []
|
77
|
+
host_tags.delete_if {|tag| tag.start_with?('role:') }
|
78
|
+
|
79
|
+
# Get list of chef roles, rename them to tag format
|
80
|
+
chef_roles = node.run_list.roles
|
81
|
+
chef_roles.collect! {|role| "role:" + role }
|
82
|
+
|
83
|
+
# Get the chef environment (as long as it's not '_default')
|
84
|
+
if node.respond_to?('chef_environment') && node.chef_environment != '_default'
|
85
|
+
host_tags.delete_if {|tag| tag.start_with?('env:') }
|
86
|
+
host_tags << "env:" + node.chef_environment
|
87
|
+
end
|
88
|
+
|
89
|
+
# Combine (union) both arrays. Removes dupes, preserves non-chef tags.
|
90
|
+
new_host_tags = host_tags | chef_roles
|
91
|
+
|
92
|
+
# Replace all tags with the new tags
|
93
|
+
@dog.update_tags(node.name, new_host_tags)
|
94
|
+
|
95
|
+
rescue Errno::ECONNREFUSED, Errno::ETIMEDOUT => e
|
96
|
+
Chef::Log.error("Could not connect to Datadog. Connection error:\n" + e)
|
97
|
+
Chef::Log.error("Data to be submitted was:")
|
98
|
+
Chef::Log.error(event_title)
|
99
|
+
Chef::Log.error(event_data)
|
100
|
+
Chef::Log.error("Tags to be set for this run:")
|
101
|
+
Chef::Log.error(new_host_tags)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
private
|
106
|
+
|
107
|
+
def pluralize(number, noun)
|
108
|
+
begin
|
109
|
+
case number
|
110
|
+
when 0..1
|
111
|
+
"less than 1 #{noun}"
|
112
|
+
else
|
113
|
+
"#{number.round} #{noun}s"
|
114
|
+
end
|
115
|
+
rescue
|
116
|
+
Chef::Log.warn("Cannot make #{number} more legible")
|
117
|
+
"#{number} #{noun}s"
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
## This function is to mimic behavior built into a later version of chef than 0.9.x
|
122
|
+
## Source is here: https://github.com/opscode/chef/blob/master/chef/lib/chef/resource.rb#L415-424
|
123
|
+
## Including this based on help from schisamo
|
124
|
+
def defined_at(resource)
|
125
|
+
cookbook_name = resource.cookbook_name
|
126
|
+
recipe_name = resource.recipe_name
|
127
|
+
source_line = resource.source_line
|
128
|
+
if cookbook_name && recipe_name && source_line
|
129
|
+
"#{cookbook_name}::#{recipe_name} line #{source_line.split(':')[1]}"
|
130
|
+
elsif source_line
|
131
|
+
file, line_no = source_line.split(':')
|
132
|
+
"#{file} line #{line_no}"
|
133
|
+
else
|
134
|
+
"dynamically defined"
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
end #end class Datadog
|
139
|
+
end #end class Handler
|
140
|
+
end #end class Chef
|
data/test/helper.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chef-handler-datadog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
+
- 1
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 0.0.13
|
10
|
+
version: 0.1.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Mike Fiedler
|
@@ -17,28 +17,25 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2012-
|
20
|
+
date: 2012-09-14 00:00:00 Z
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
23
|
-
|
24
|
-
prerelease: false
|
25
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
23
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
26
24
|
none: false
|
27
25
|
requirements:
|
28
|
-
- -
|
26
|
+
- - ~>
|
29
27
|
- !ruby/object:Gem::Version
|
30
|
-
hash:
|
28
|
+
hash: 59
|
31
29
|
segments:
|
32
|
-
-
|
33
|
-
-
|
34
|
-
|
35
|
-
|
30
|
+
- 10
|
31
|
+
- 12
|
32
|
+
version: "10.12"
|
33
|
+
prerelease: false
|
36
34
|
type: :runtime
|
37
|
-
|
35
|
+
name: chef
|
36
|
+
requirement: *id001
|
38
37
|
- !ruby/object:Gem::Dependency
|
39
|
-
|
40
|
-
prerelease: false
|
41
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
42
39
|
none: false
|
43
40
|
requirements:
|
44
41
|
- - ">="
|
@@ -48,12 +45,12 @@ dependencies:
|
|
48
45
|
- 1
|
49
46
|
- 2
|
50
47
|
version: "1.2"
|
48
|
+
prerelease: false
|
51
49
|
type: :runtime
|
52
|
-
|
50
|
+
name: dogapi
|
51
|
+
requirement: *id002
|
53
52
|
- !ruby/object:Gem::Dependency
|
54
|
-
|
55
|
-
prerelease: false
|
56
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
57
54
|
none: false
|
58
55
|
requirements:
|
59
56
|
- - ">="
|
@@ -62,44 +59,54 @@ dependencies:
|
|
62
59
|
segments:
|
63
60
|
- 0
|
64
61
|
version: "0"
|
62
|
+
prerelease: false
|
65
63
|
type: :development
|
66
|
-
|
64
|
+
name: rake
|
65
|
+
requirement: *id003
|
67
66
|
- !ruby/object:Gem::Dependency
|
68
|
-
|
69
|
-
prerelease: false
|
70
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
67
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
71
68
|
none: false
|
72
69
|
requirements:
|
73
70
|
- - ">="
|
74
71
|
- !ruby/object:Gem::Version
|
75
|
-
hash:
|
72
|
+
hash: 3
|
76
73
|
segments:
|
77
|
-
- 1
|
78
74
|
- 0
|
79
|
-
|
80
|
-
|
75
|
+
version: "0"
|
76
|
+
prerelease: false
|
81
77
|
type: :development
|
82
|
-
|
78
|
+
name: shoulda
|
79
|
+
requirement: *id004
|
83
80
|
- !ruby/object:Gem::Dependency
|
84
|
-
|
85
|
-
prerelease: false
|
86
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
81
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
87
82
|
none: false
|
88
83
|
requirements:
|
89
|
-
- -
|
84
|
+
- - ">="
|
90
85
|
- !ruby/object:Gem::Version
|
91
|
-
hash:
|
86
|
+
hash: 3
|
92
87
|
segments:
|
93
|
-
-
|
94
|
-
|
95
|
-
|
96
|
-
version: 1.6.4
|
88
|
+
- 0
|
89
|
+
version: "0"
|
90
|
+
prerelease: false
|
97
91
|
type: :development
|
98
|
-
|
92
|
+
name: bundler
|
93
|
+
requirement: *id005
|
99
94
|
- !ruby/object:Gem::Dependency
|
100
|
-
|
95
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
96
|
+
none: false
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
hash: 3
|
101
|
+
segments:
|
102
|
+
- 0
|
103
|
+
version: "0"
|
101
104
|
prerelease: false
|
102
|
-
|
105
|
+
type: :development
|
106
|
+
name: rdoc
|
107
|
+
requirement: *id006
|
108
|
+
- !ruby/object:Gem::Dependency
|
109
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
103
110
|
none: false
|
104
111
|
requirements:
|
105
112
|
- - ">="
|
@@ -108,26 +115,30 @@ dependencies:
|
|
108
115
|
segments:
|
109
116
|
- 0
|
110
117
|
version: "0"
|
118
|
+
prerelease: false
|
111
119
|
type: :development
|
112
|
-
|
120
|
+
name: travis-lint
|
121
|
+
requirement: *id007
|
113
122
|
description: This Handler will report the events and metrics for a chef-client run to DataDog.
|
114
|
-
email:
|
123
|
+
email:
|
124
|
+
- packages@datadoghq.com
|
115
125
|
executables: []
|
116
126
|
|
117
127
|
extensions: []
|
118
128
|
|
119
129
|
extra_rdoc_files:
|
130
|
+
- README.md
|
120
131
|
- LICENSE.txt
|
121
|
-
- README.rdoc
|
122
132
|
files:
|
133
|
+
- .gitignore
|
123
134
|
- .travis.yml
|
124
135
|
- Gemfile
|
125
|
-
- Gemfile.lock
|
126
136
|
- LICENSE.txt
|
127
|
-
- README.
|
137
|
+
- README.md
|
128
138
|
- Rakefile
|
129
|
-
-
|
139
|
+
- chef-handler-datadog.gemspec
|
130
140
|
- lib/chef-handler-datadog.rb
|
141
|
+
- lib/chef/handler/datadog.rb
|
131
142
|
- test/helper.rb
|
132
143
|
- test/test_chef-handler-datadog.rb
|
133
144
|
homepage: http://www.datadoghq.com/
|
@@ -163,5 +174,6 @@ rubygems_version: 1.8.24
|
|
163
174
|
signing_key:
|
164
175
|
specification_version: 3
|
165
176
|
summary: Chef Handler for DataDog events and metrics
|
166
|
-
test_files:
|
167
|
-
|
177
|
+
test_files:
|
178
|
+
- test/helper.rb
|
179
|
+
- test/test_chef-handler-datadog.rb
|
data/Gemfile.lock
DELETED
@@ -1,77 +0,0 @@
|
|
1
|
-
GEM
|
2
|
-
remote: http://rubygems.org/
|
3
|
-
specs:
|
4
|
-
bunny (0.7.9)
|
5
|
-
chef (0.10.8)
|
6
|
-
bunny (>= 0.6.0)
|
7
|
-
erubis
|
8
|
-
highline
|
9
|
-
json (>= 1.4.4, <= 1.6.1)
|
10
|
-
mixlib-authentication (>= 1.1.0)
|
11
|
-
mixlib-cli (>= 1.1.0)
|
12
|
-
mixlib-config (>= 1.1.2)
|
13
|
-
mixlib-log (>= 1.3.0)
|
14
|
-
moneta
|
15
|
-
net-ssh (~> 2.1.3)
|
16
|
-
net-ssh-multi (~> 1.1.0)
|
17
|
-
ohai (>= 0.6.0)
|
18
|
-
rest-client (>= 1.0.4, < 1.7.0)
|
19
|
-
treetop (~> 1.4.9)
|
20
|
-
uuidtools
|
21
|
-
dogapi (1.2.8)
|
22
|
-
json (>= 1.5.1)
|
23
|
-
erubis (2.7.0)
|
24
|
-
git (1.2.5)
|
25
|
-
highline (1.6.11)
|
26
|
-
jeweler (1.6.4)
|
27
|
-
bundler (~> 1.0)
|
28
|
-
git (>= 1.2.5)
|
29
|
-
rake
|
30
|
-
json (1.6.1)
|
31
|
-
mime-types (1.17.2)
|
32
|
-
mixlib-authentication (1.1.4)
|
33
|
-
mixlib-log
|
34
|
-
mixlib-cli (1.2.2)
|
35
|
-
mixlib-config (1.1.2)
|
36
|
-
mixlib-log (1.3.0)
|
37
|
-
moneta (0.6.0)
|
38
|
-
net-ssh (2.1.4)
|
39
|
-
net-ssh-gateway (1.1.0)
|
40
|
-
net-ssh (>= 1.99.1)
|
41
|
-
net-ssh-multi (1.1)
|
42
|
-
net-ssh (>= 2.1.4)
|
43
|
-
net-ssh-gateway (>= 0.99.0)
|
44
|
-
ohai (0.6.10)
|
45
|
-
mixlib-cli
|
46
|
-
mixlib-config
|
47
|
-
mixlib-log
|
48
|
-
systemu (~> 2.2.0)
|
49
|
-
yajl-ruby
|
50
|
-
polyglot (0.3.3)
|
51
|
-
rake (0.9.2.2)
|
52
|
-
rdoc (3.12)
|
53
|
-
json (~> 1.4)
|
54
|
-
rest-client (1.6.7)
|
55
|
-
mime-types (>= 1.16)
|
56
|
-
shoulda (3.0.1)
|
57
|
-
shoulda-context (~> 1.0.0)
|
58
|
-
shoulda-matchers (~> 1.0.0)
|
59
|
-
shoulda-context (1.0.0)
|
60
|
-
shoulda-matchers (1.0.0)
|
61
|
-
systemu (2.2.0)
|
62
|
-
treetop (1.4.10)
|
63
|
-
polyglot
|
64
|
-
polyglot (>= 0.3.1)
|
65
|
-
uuidtools (2.1.2)
|
66
|
-
yajl-ruby (1.1.0)
|
67
|
-
|
68
|
-
PLATFORMS
|
69
|
-
ruby
|
70
|
-
|
71
|
-
DEPENDENCIES
|
72
|
-
bundler (>= 1.0.0)
|
73
|
-
chef (>= 0.9.18)
|
74
|
-
dogapi (>= 1.2)
|
75
|
-
jeweler (~> 1.6.4)
|
76
|
-
rdoc
|
77
|
-
shoulda
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.0.13
|