Class: HipChat::NotifyRoom

Inherits:
Chef::Handler
  • Object
show all
Defined in:
lib/hipchat/chef.rb

Instance Method Summary collapse

Constructor Details

#initialize(api_token, room_name, options = {}) ⇒ NotifyRoom

Returns a new instance of NotifyRoom.



18
19
20
21
22
23
24
25
26
27
# File 'lib/hipchat/chef.rb', line 18

def initialize(api_token, room_name, options={})
  defaults = { hipchat_options: {}, msg_options: {}, excluded_envs: [], msg_prefix: ''}
  options = defaults.merge(options)
  @api_token = api_token
  @room_name = room_name
  @hipchat_options = options[:hipchat_options]
  @msg_options = options[:msg_options]
  @msg_prefix = options[:msg_prefix]
  @excluded_envs = options[:excluded_envs]
end

Instance Method Details

#reportObject



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/hipchat/chef.rb', line 29

def report
  unless @excluded_envs.include?(node.chef_environment)
    msg = if run_status.failed? then "Failure on \"#{node.name}\" (\"#{node.chef_environment}\" env): #{run_status.formatted_exception}"
          elsif run_status.success? && @msg_options[:notify]
            "Chef run on \"#{node.name}\" completed in #{run_status.elapsed_time.round(2)} seconds"
          else nil
          end

    @msg_options[:color]= if run_status.success? then 'green'
            else 'red'
            end

    if msg
      client = HipChat::Client.new(@api_token, @hipchat_options)
      client[@room_name].send('Chef', [@msg_prefix, msg].join(' '), @msg_options)
    end
  end
end