class StatusNotifierHandler

Constants

DEFAULT_FAILED_MESSAGE
DEFAULT_SUCCESS_MESSAGE

Public Class Methods

new(slack_params, hipchat_params, custom_message_params = {}) click to toggle source
# File lib/chef/handler/status_notifier.rb, line 15
def initialize(slack_params, hipchat_params, custom_message_params = {})
  @slack_params   = slack_params
  @hipchat_params = hipchat_params
  @custom_message_params = custom_message_params
end

Public Instance Methods

report() click to toggle source
# File lib/chef/handler/status_notifier.rb, line 21
def report
  if run_status.failed?
    msg = failed_message
    status = :failed
  else
    msg = success_message
    status = :success
  end

  send_to_slack(node.name, status, msg)
  send_to_hipchat(msg)
end

Private Instance Methods

eval_message_for(message) click to toggle source
# File lib/chef/handler/status_notifier.rb, line 36
def eval_message_for(message)
  return nil if message.nil?
  eval(message)
end
failed_message() click to toggle source
# File lib/chef/handler/status_notifier.rb, line 41
def failed_message
  eval_message_for(@custom_message_params[:failed_message] || DEFAULT_FAILED_MESSAGE)
end
hipchat() click to toggle source
# File lib/chef/handler/status_notifier.rb, line 59
def hipchat
  return {}
end
send_to_hipchat(msg) click to toggle source
# File lib/chef/handler/status_notifier.rb, line 49
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
send_to_slack(node_name, status, msg) click to toggle source
# File lib/chef/handler/status_notifier.rb, line 54
def send_to_slack(node_name, status, msg)
  return unless @slack_params[:enabled]
  slack.ping '', attachments: [slack_attachment(node_name, status, msg)], channel: @slack_params[:channel], username: @slack_params[:username]
end
slack() click to toggle source
# File lib/chef/handler/status_notifier.rb, line 63
def slack
  @slack ||= Slack::Notifier.new(@slack_params[:webhook_url])
end
slack_attachment(node_name, status, msg) click to toggle source
# File lib/chef/handler/status_notifier.rb, line 67
def slack_attachment(node_name, status, msg)
  color = (status == :failed)? "#ff0000" : "#36a64f"
  {
    fallback: "Chef status, #{msg}",
    color: "#{color}",
    author_name: "Fai's Slave (#{node_name})",
    title: "status: #{status}",
    text: "#{msg}"
  }
end
success_message() click to toggle source
# File lib/chef/handler/status_notifier.rb, line 45
def success_message
  eval_message_for(@custom_message_params[:success_message] || DEFAULT_SUCCESS_MESSAGE)
end