lib/chef/handler/status_notifier.rb in chef-handler-status_notifier-0.3.0 vs lib/chef/handler/status_notifier.rb in chef-handler-status_notifier-0.4.0
- old
+ new
@@ -23,35 +23,49 @@
end
def report
if run_status.failed?
msg = "Failure on #{node.name}: #{run_status.formatted_exception}"
+ status = :failed
+ send_to_hipchat(msg)
else
msg = "Chef run succesfully on #{node.name}"
+ status = :success
end
+ send_to_slack(status, msg)
send_to_hipchat(msg)
- send_to_slack(msg)
end
private
def send_to_hipchat(msg)
return unless @hipchat_params[:enabled]
hipchat[@hipchat_params[:room_name]].send(@hipchat_params[:username], msg, :notify => @hipchat_params[:notify])
end
- def send_to_slack(msg)
+ def send_to_slack(status, msg)
return unless @slack_params[:enabled]
slack.channel = @slack_params[:channel]
slack.username = @slack_params[:username]
- slack.ping msg
+ slack.ping '', attachments: [slack_attachment(status, msg)]
end
def hipchat
@hipchat ||= HipChat::Client.new(@hipchat_params[:api_token])
end
def slack
@slack ||= Slack::Notifier.new(@slack_params[:webhook_url])
+ end
+
+ def slack_attachment(status, msg)
+ color = (status == :failed)? "#ff0000" : "#36a64f"
+ {
+ fallback: "Opsworks status, #{msg}",
+ color: "#{color}",
+ author_name: "OpsworksBot (",
+ title: "status: #{status}",
+ text: "#{msg}"
+ }
end
end