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