class Radiosonde::DSL::Context::Alarm

Public Class Methods

new(context, name, &block) click to toggle source
# File lib/radiosonde/dsl/context/alarm.rb, line 5
def initialize(context, name, &block)
  @error_identifier = "Alarm `#{name}`"
  @context = context.merge(:alarm_name => name)
  @result = OpenStruct.new(
    :alarm_name => name,
    :alarm_actions => [],
    :ok_actions => [],
    :insufficient_data_actions => []
  )
  instance_eval(&block)
end

Public Instance Methods

result() click to toggle source
# File lib/radiosonde/dsl/context/alarm.rb, line 17
def result
  [
    :metric_name,
    :period,
    :statistic,
    :threshold,
    :comparison_operator,
    :actions_enabled,
  ].each do |name|
    _required(name, @result[name])
  end

  @result
end

Private Instance Methods

actions_enabled(value) click to toggle source
# File lib/radiosonde/dsl/context/alarm.rb, line 103
def actions_enabled(value)
  _call_once(:actions_enabled)
  _expected_type(value, TrueClass, FalseClass)
  @result.actions_enabled = value
end
alarm_actions(*actions) click to toggle source
# File lib/radiosonde/dsl/context/alarm.rb, line 109
def alarm_actions(*actions)
  _call_once(:alarm_actions)
  _expected_type(actions, Array)
  @result.alarm_actions = [(actions || [])].flatten
end
description(value) click to toggle source
# File lib/radiosonde/dsl/context/alarm.rb, line 34
def description(value)
  _call_once(:alarm_description)
  @result.alarm_description = value.nil? ? nil : value.to_s
end
dimensions(value) click to toggle source
# File lib/radiosonde/dsl/context/alarm.rb, line 50
def dimensions(value)
  _call_once(:dimensions)
  _expected_type(value, Hash, Array)

  if value.kind_of?(Hash)
    value = value.map do |name, value|
      {:name => name, :value => value}
    end
  end

  @result.dimensions = value
end
evaluation_periods(value) click to toggle source
# File lib/radiosonde/dsl/context/alarm.rb, line 89
def evaluation_periods(value)
  _call_once(:evaluation_periods)
  @result.evaluation_periods = value.to_i
end
insufficient_data_actions(*actions) click to toggle source
# File lib/radiosonde/dsl/context/alarm.rb, line 121
def insufficient_data_actions(*actions)
  _call_once(:insufficient_data_actions)
  _expected_type(actions, Array)
  @result.insufficient_data_actions = [(actions || [])].flatten
end
metric_name(value) click to toggle source
# File lib/radiosonde/dsl/context/alarm.rb, line 44
def metric_name(value)
  _call_once(:metric_name)
  _required(:metric_name, value)
  @result.metric_name = value.to_s
end
namespace(value) click to toggle source
# File lib/radiosonde/dsl/context/alarm.rb, line 39
def namespace(value)
  _call_once(:namespace)
  @result.namespace = value.nil? ? nil : value.to_s
end
ok_actions(*actions) click to toggle source
# File lib/radiosonde/dsl/context/alarm.rb, line 115
def ok_actions(*actions)
  _call_once(:ok_actions)
  _expected_type(actions, Array)
  @result.ok_actions = [(actions || [])].flatten
end
period(value) click to toggle source
# File lib/radiosonde/dsl/context/alarm.rb, line 63
def period(value)
  _call_once(:period)
  @result.period = value.to_i
end
statistic(value) click to toggle source
# File lib/radiosonde/dsl/context/alarm.rb, line 68
def statistic(value)
  _call_once(:statistic)
  _validate("Invalid value: #{value}") do
    Radiosonde::DSL::Statistic.valid?(value)
  end

  @result.statistic = Radiosonde::DSL::Statistic.normalize(value)
end
threshold(operator, value) click to toggle source
# File lib/radiosonde/dsl/context/alarm.rb, line 77
def threshold(operator, value)
  _call_once(:threshold)
  _required(:threshold, value)
  operator = operator.to_s
  _validate("Invalid operator: #{operator}") do
    Radiosonde::DSL::ComparisonOperator.valid?(operator)
  end

  @result.threshold = value.to_f
  @result.comparison_operator = Radiosonde::DSL::ComparisonOperator.normalize(operator)
end
unit(value) click to toggle source
# File lib/radiosonde/dsl/context/alarm.rb, line 94
def unit(value)
  _call_once(:unit)
  _validate("Invalid value: #{value}") do
    Radiosonde::DSL::Unit.valid?(value)
  end

  @result.unit = Radiosonde::DSL::Unit.normalize(value)
end