class Nagios::Check::Range

Attributes

alert_on[R]
end_infinity[R]
end_value[R]
start_infinity[R]
start_value[R]

Public Class Methods

new(range) click to toggle source
# File lib/nagios-check/range.rb, line 7
def initialize(range)
  @start_value = 0
  @end_value = 0
  @start_infinity = false
  @end_infinity = false
  @alert_on = :inside
  parse_range_string(range.to_s)
end

Public Instance Methods

check_range(value) click to toggle source
# File lib/nagios-check/range.rb, line 16
def check_range(value)
  value = value.to_f
  result =
    if !start_infinity && end_infinity
      start_value <= value
    elsif start_infinity && !end_infinity
      value <= end_value
    else
      start_value <= value && value <= end_value
    end
  alert_on == :outside ? result : !result
end

Private Instance Methods

parse_range_string(range) click to toggle source
# File lib/nagios-check/range.rb, line 30
def parse_range_string(range)
  @start_infinity = true if range.gsub!(/^~/, '')
  @alert_on = :outside if range.gsub!(/^@/, '')
  regexp = '([+\-]?[\d+\.]+)'
  case range
  when /^:?(#{regexp})$/ # :10 or 10
    @end_value = Float($1)
  when /^#{regexp}:#{regexp}$/ # 10:20
    @start_value = Float($1)
    @end_value = Float($2)
  when /^#{regexp}:$/ # 10:
    @start_value = Float($1)
    @end_infinity = true
  else
    raise TypeError, "Unknown threshold format. Please check the documentation http://nagiosplug.sourceforge.net/developer-guidelines.html#THRESHOLDFORMAT"
  end
end