class Radiosonde::Wrapper::Alarm

Constants

ATTRIBUTES
ATTRIBUTES_WITHOUT_NAME
DEFAULT_VALUES

Public Class Methods

new(cloud_watch, alarm, options = {}) click to toggle source
# File lib/radiosonde/wrapper/alarm.rb, line 47
def initialize(cloud_watch, alarm, options = {})
  @cloud_watch = cloud_watch
  @alarm = alarm
  @options = options
end
normalize_attrs(attrs) click to toggle source
# File lib/radiosonde/wrapper/alarm.rb, line 34
def normalize_attrs(attrs)
  normalized = {}

  Radiosonde::Wrapper::Alarm::ATTRIBUTES_WITHOUT_NAME.each do |name|
    unless (value = attrs[name]).nil?
      normalized[name] = value
    end
  end

  return normalized
end

Public Instance Methods

delete() click to toggle source
# File lib/radiosonde/wrapper/alarm.rb, line 71
def delete
  log(:info, 'Delete Alarm', :red, self.alarm_name)

  unless @options[:dry_run]
    @alarm.delete
    @cloud_watch.modify!
  end
end
eql?(dsl) click to toggle source
# File lib/radiosonde/wrapper/alarm.rb, line 53
def eql?(dsl)
  diff(dsl).empty?
end
update(dsl) click to toggle source
# File lib/radiosonde/wrapper/alarm.rb, line 57
def update(dsl)
  delta = diff(dsl)
  old_attrs = Hash[delta.map {|k, v| [k, v[:old]] }]
  new_attrs = Hash[delta.map {|k, v| [k, v[:new]] }]
  log(:info, 'Update Alarm', :green)
  log(:info, "  #{self.alarm_name}:\n".green + Radiosonde::Utils.diff(old_attrs, new_attrs, :color => @options[:color], :indent => '    '), false)

  unless @options[:dry_run]
    opts = self.class.normalize_attrs(dsl)
    @alarm.update(opts)
    @cloud_watch.modify!
  end
end

Private Instance Methods

diff(dsl) click to toggle source
# File lib/radiosonde/wrapper/alarm.rb, line 82
def diff(dsl)
  delta = {}

  ATTRIBUTES.each do |name|
    self_value = self.send(name)
    dsl_value = dsl[name]

    if normalize(name, self_value) != normalize(name, dsl_value)
      delta[name] = {:old => self_value, :new => dsl_value}
    end
  end

  return delta
end
normalize(name, value) click to toggle source
# File lib/radiosonde/wrapper/alarm.rb, line 97
def normalize(name, value)
  if [Array, Hash].any? {|c| value.kind_of?(c) }
    value.sort_by {|i| i.to_s }
  elsif DEFAULT_VALUES.has_key?(name) and value.nil?
    DEFAULT_VALUES[name]
  else
    value
  end
end