summaryrefslogtreecommitdiff
path: root/lib/oxidized/hook/awssns.rb
blob: 82c118ee4d5740efe655273e7b5e6d0350e2d21e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
require 'aws-sdk'

class AwsSns < Oxidized::Hook
  def validate_cfg!
    raise KeyError, 'hook.region is required' unless cfg.has_key?('region')
    raise KeyError, 'hook.topic_arn is required' unless cfg.has_key?('topic_arn')
  end

  def run_hook(ctx)
    sns = Aws::SNS::Resource.new(region: cfg.region)
    topic = sns.topic(cfg.topic_arn)
    message = {
      :event => ctx.event.to_s
    }
    if ctx.node
      message.merge!(
        :group => ctx.node.group.to_s,
        :model => ctx.node.model.class.name.to_s.downcase,
        :node => ctx.node.name.to_s
      )
    end
    topic.publish(
      message: message.to_json
    )
  end

end