Created
January 14, 2015 16:53
-
-
Save jaredmichaelwilliams/344b1da8617825676d6c to your computer and use it in GitHub Desktop.
Updated Slack notifier gem so knife-spork can alert Slack
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
slack.rb is located here /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/knife-spork-1.4.2/lib/knife-spork/plugins/slack.rb | |
Your spork-config.yml should have this under plugins: | |
slack: | |
webhook_url: "https://hooks.slack.com/services/AAAA" | |
channel: "#devops" | |
teamname: teamname | |
username: knife | |
icon_url: http://2eof2j3oc7is20vt9q3g7tlo5xe.wpengine.netdna-cdn.com/wp-content/uploads/2013/12/chef-logo-370x275.jpg | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'knife-spork/plugins/plugin' | |
module KnifeSpork | |
module Plugins | |
class Slack < Plugin | |
name :slack | |
def perform; end | |
def after_upload | |
slack "#{organization}#{current_user} uploaded the following cookbooks:\n#{cookbooks.collect{ |c| " #{c.name}@#{c.version}" }.join("\n")}" | |
end | |
def after_promote_remote | |
slack "#{organization}#{current_user} promoted the following cookbooks:\n#{cookbooks.collect{ |c| " #{c.name}@#{c.version}" }.join("\n")} to #{environments.collect{ |e| "#{e.name}" }.join(", ")}" | |
end | |
def after_environmentfromfile | |
slack "#{organization}#{current_user} uploaded environment #{object_name}" | |
end | |
def after_environmentedit | |
slack "#{organization}#{current_user} edited environment #{object_name}" | |
end | |
def after_environmentcreate | |
slack "#{organization}#{current_user} created environment #{object_name}" | |
end | |
def after_environmentdelete | |
slack "#{organization}#{current_user} deleted environment #{object_name}" | |
end | |
def after_rolefromfile | |
slack "#{organization}#{current_user} uploaded role #{object_name}" | |
end | |
def after_roleedit | |
slack "#{organization}#{current_user} edited role #{object_name}" | |
end | |
def after_rolecreate | |
slack "#{organization}#{current_user} created role #{object_name}" | |
end | |
def after_roledelete | |
slack "#{organization}#{current_user} deleted role #{object_name}" | |
end | |
def after_databagedit | |
slack "#{organization}#{current_user} edited data bag item #{object_name}:#{object_secondary_name}" | |
end | |
def after_databagcreate | |
slack "#{organization}#{current_user} created data bag #{object_name}" | |
end | |
def after_databagdelete | |
slack "#{organization}#{current_user} deleted data bag item #{object_name}" | |
end | |
def after_databagitemdelete | |
slack "#{organization}#{current_user} deleted data bag item #{object_name}:#{object_secondary_name}" | |
end | |
def after_databagfromfile | |
slack "#{organization}#{current_user} uploaded data bag item #{object_name}:#{object_secondary_name}" | |
end | |
def after_nodeedit | |
slack "#{organization}#{current_user} edited node #{object_name}" | |
end | |
def after_nodedelete | |
slack "#{organization}#{current_user} deleted node #{object_name}" | |
end | |
def after_nodecreate | |
slack "#{organization}#{current_user} created node #{object_name}" | |
end | |
def after_nodefromfile | |
slack "#{organization}#{current_user} uploaded node #{object_name}" | |
end | |
def after_noderunlistadd | |
slack "#{organization}#{current_user} added run_list items to #{object_name}: #{object_secondary_name}" | |
end | |
def after_noderunlistremove | |
slack "#{organization}#{current_user} removed run_list items from #{object_name}: #{object_secondary_name}" | |
end | |
def after_noderunlistset | |
slack "#{organization}#{current_user} set the run_list for #{object_name} to #{object_secondary_name}" | |
end | |
private | |
def slack(message) | |
safe_require 'slack-notifier' | |
begin | |
notifier = ::Slack::Notifier.new( config.webhook_url, channel: channel, username: username, icon_url: config.icon_url) | |
notifier.ping message | |
rescue Exception => e | |
ui.error 'Something went wrong sending to Slack.' | |
ui.error e.to_s | |
end | |
end | |
def channel | |
config.channel || '#random' | |
end | |
def username | |
config.username || 'KnifeSpork' | |
end | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment