34 lines
1.0 KiB
Ruby
34 lines
1.0 KiB
Ruby
# frozen_string_literal: true
|
|
require 'net/http'
|
|
require 'uri'
|
|
require 'json'
|
|
|
|
SLACK_BASE_URL = 'https://hooks.slack.com/'
|
|
SLACK_WEBHOOK_PATH = 'YOUR RELATIVE PATH HERE' # Something like "/services/XXX/YYY/zZz123"
|
|
|
|
def send_slack_message(message)
|
|
uri = URI.join(SLACK_BASE_URL, SLACK_WEBHOOK_PATH)
|
|
data = "{'channel': '#hackdays-serverless', 'username': 'fissionbot', 'text': \"#{message}\", 'icon_emoji': ':fission:'}"
|
|
res = Net::HTTP.post_form(uri, payload: data)
|
|
res.success?
|
|
end
|
|
|
|
def handler(context)
|
|
request = context.request
|
|
|
|
event_type = request.headers['X-Kubernetes-Event-Type']
|
|
object_type = request.headers['X-Kubernetes-Object-Type']
|
|
|
|
object = JSON.parse(request.body.read)
|
|
object_name = object.dig('metadata', 'name')
|
|
object_namespace = object.dig('metadata', 'namespace')
|
|
|
|
message = "#{event_type} #{object_type} #{object_namespace}/#{object_name}"
|
|
|
|
if send_slack_message(message)
|
|
"Slack message sent - #{message}"
|
|
else
|
|
Rack::Response.new(["Failed to send Slack message - #{message}"], 500).finish
|
|
end
|
|
end
|