Class: OstrichPoll::ConfigParser

Inherits:
Object
  • Object
show all
Defined in:
lib/ostrichpoll/config_parser.rb

Overview

traverses a nested hashmap (the parsed config YAML) returning a set of hosts and validators

Class Method Summary collapse

Class Method Details

.parse(map) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/ostrichpoll/config_parser.rb', line 7

def self.parse(map)
  hosts = []

  map.each do |host_config|
    host = Host.new
    host_config.each do |key,value|
      case key
        when 'url'
          host.url = value

        when 'rate_file'
          host.rate_file = value

        when 'validations'
          validations = parse_validations(value)

          validations.each do |v|
            v.host_instance = host
          end

          host.validations = validations

        else
          Log.warn "Unknown key: #{key}. Ignoring."
      end
    end
    hosts << host
  end

  hosts
end

.parse_validation(name, map) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/ostrichpoll/config_parser.rb', line 47

def self.parse_validation(name, map)
  validator = Validator.new
  validator.metric = name
  map.each do |key,value|
    case key
      when 'rate'
        validator.rate = value

      when 'normal_range'
        # FIXME validate normal range (min <= max, etc.)
        validator.normal_range = value

      when 'missing'
        validator.missing = value.to_sym

      when 'exit_code'
        validator.exit_code = value

      else
        Log.warn "Unknown key for validation: #{key}. Ignoring."
    end
  end

  validator.verify!
  validator
end

.parse_validations(validations) ⇒ Object



39
40
41
42
43
44
45
# File 'lib/ostrichpoll/config_parser.rb', line 39

def self.parse_validations(validations)
  return [] unless validations

  validations.map do |name, v|
    self.parse_validation name, v
  end
end