Module: AwsReporting::Alarm

Defined in:
lib/aws-reporting/alarm.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.get_alarmsObject



22
23
24
25
26
27
28
29
30
31
32
# File 'lib/aws-reporting/alarm.rb', line 22

def get_alarms()
  alarms = []
  AWS.regions.each{|r|
    Config.update_region(r.name)
    cw = AWS::CloudWatch.new
    cw.alarms.each do |alarm|
      alarms << get_alarm_info(r.name, alarm)
    end
  }
  alarms.sort_by{|alarm| [alarm[:namespace], serialize(alarm[:dimensions]), alarm[:metric_name], alarm[:name]].join(' ')}
end

Instance Method Details

#get_alarm_info(region, alarm) ⇒ Object



7
8
9
10
11
12
13
14
# File 'lib/aws-reporting/alarm.rb', line 7

def get_alarm_info(region, alarm)
  info = {:name => alarm.name,
          :region => region,
          :namespace => alarm.namespace,
          :dimensions => alarm.dimensions,
          :metric_name => alarm.metric_name,
          :status => get_status(alarm)}
end

#get_status(alarm) ⇒ Object



16
17
18
19
20
# File 'lib/aws-reporting/alarm.rb', line 16

def get_status(alarm)
  return :ALARM if alarm.state_value == 'ALARM'
  return :ALARM if alarm.history_items.to_a.select{|history| history.history_item_type == 'StateUpdate'}.length > 0
  return :OK
end

#serialize(dimensions) ⇒ Object



3
4
5
# File 'lib/aws-reporting/alarm.rb', line 3

def serialize(dimensions)
  dimensions.sort_by{|dimension| dimension[:name]}.map{|dimension| dimension[:name] + "=>" + dimension[:value]}.join(',')
end