lib/chef-irc-snitch.rb in chef-irc-snitch-0.0.1 vs lib/chef-irc-snitch.rb in chef-irc-snitch-0.0.2
- old
+ new
@@ -6,23 +6,24 @@
require 'json'
require 'shout-bot'
class IRCSnitch < Chef::Handler
- def initialize(irc_uri, github_user, github_token)
+ def initialize(irc_uri, github_user, github_token, ssl = false)
@irc_uri = irc_uri
@github_user = github_user
@github_token = github_token
+ @ssl = ssl
end
def report
Chef::Log.error("Chef run failed @ #{Time.now.getutc}, snitchin' to chefs via IRC")
gist = "#{run_status.formatted_exception}\n\n"
gist << Array(backtrace).join("\n")
- max_attempts = 3
+ max_attempts = 2
gist_id = nil
begin
timeout(8) do
res = Net::HTTP.post_form(URI.parse("http://gist.github.com/api/v1/json/new"), {
@@ -32,21 +33,30 @@
"description" => "Chef run failed on #{node.name} @ #{Time.now.getutc}"
})
gist_id = JSON.parse(res.body)["gists"].first["repo"]
end
rescue Timeout::Error
- Chef::Log.info("Timed out while attempting to create a GitHub Gist, retrying ...")
+ Chef::Log.error("Timed out while attempting to create a GitHub Gist, retrying ...")
max_attempts -= 1
retry if max_attempts > 0
end
Chef::Log.info("Created a GitHub Gist @ https://gist.github.com/#{gist_id}")
+ max_attempts = 2
message = "Chef run failed on #{node.name} => https://gist.github.com/#{gist_id}"
- ShoutBot.shout(@irc_uri) do |channel|
- channel.say message
- Chef::Log.info("Informed chefs via IRC => '#{message}'")
+ begin
+ timeout(8) do
+ ShoutBot.shout(@irc_uri, nil, @ssl) do |channel|
+ channel.say message
+ Chef::Log.info("Informed chefs via IRC => '#{message}'")
+ end
+ end
+ rescue Timeout::Error
+ Chef::Log.error("Timed out while attempting to message Chefs via IRC, retrying ...")
+ max_attempts -= 1
+ retry if max_attempts > 0
end
end
end