Module: Sensu::Settings::Validators::Check

Included in:
Sensu::Settings::Validators
Defined in:
lib/sensu/settings/validators/check.rb

Instance Method Summary collapse

Instance Method Details

#validate_check(check) ⇒ Object

Validate a Sensu check definition.

Parameters:

  • check (Hash)

    sensu check definition.



111
112
113
114
115
116
117
118
119
120
# File 'lib/sensu/settings/validators/check.rb', line 111

def validate_check(check)
  validate_check_name(check)
  validate_check_execution(check)
  validate_check_source(check) if check[:source]
  validate_check_scheduling(check)
  validate_check_handling(check)
  validate_check_ttl(check) if check[:ttl]
  validate_check_flap_detection(check)
  validate_subdue(check) if check[:subdue]
end

#validate_check_execution(check) ⇒ Object

Validate check execution. Validates: command, extension, timeout

Parameters:

  • check (Hash)

    sensu check definition.



20
21
22
23
24
25
26
27
28
29
# File 'lib/sensu/settings/validators/check.rb', line 20

def validate_check_execution(check)
  must_be_a_string_if_set(check[:command]) ||
    invalid(check, "check command must be a string")
  must_be_a_string_if_set(check[:extension]) ||
    invalid(check, "check extension must be a string")
  (!check[:command].nil? ^ !check[:extension].nil?) ||
    invalid(check, "either check command or extension must be set")
  must_be_a_numeric_if_set(check[:timeout]) ||
    invalid(check, "check timeout must be numeric")
end

#validate_check_flap_detection(check) ⇒ Object

Validate check flap detection. Validates: low_flap_threshold, high_flap_threshold

Parameters:

  • check (Hash)

    sensu check definition.



99
100
101
102
103
104
105
106
# File 'lib/sensu/settings/validators/check.rb', line 99

def validate_check_flap_detection(check)
  if either_are_set?(check[:low_flap_threshold], check[:high_flap_threshold])
    must_be_an_integer(check[:low_flap_threshold]) ||
      invalid(check, "check low flap threshold must be an integer")
    must_be_an_integer(check[:high_flap_threshold]) ||
      invalid(check, "check high flap threshold must be an integer")
  end
end

#validate_check_handling(check) ⇒ Object

Validate check handling. Validates: handler, handlers

Parameters:

  • check (Hash)

    sensu check definition.



71
72
73
74
75
76
77
78
79
80
# File 'lib/sensu/settings/validators/check.rb', line 71

def validate_check_handling(check)
  must_be_a_string_if_set(check[:handler]) ||
    invalid(check, "check handler must be a string")
  must_be_an_array_if_set(check[:handlers]) ||
    invalid(check, "check handlers must be an array")
  if is_an_array?(check[:handlers])
    items_must_be_strings(check[:handlers]) ||
      invalid(check, "check handlers must each be a string")
  end
end

#validate_check_name(check) ⇒ Object

Validate check name. Validates: name

Parameters:

  • check (Hash)

    sensu check definition.



9
10
11
12
13
14
# File 'lib/sensu/settings/validators/check.rb', line 9

def validate_check_name(check)
  must_be_a_string(check[:name]) ||
    invalid(check, "check name must be a string")
  must_match_regex(/^[\w\.-]+$/, check[:name]) ||
    invalid(check, "check name cannot contain spaces or special characters")
end

#validate_check_scheduling(check) ⇒ Object

Validate check scheduling. Validates: interval, standalone, subscribers

Parameters:

  • check (Hash)

    sensu check definition.



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/sensu/settings/validators/check.rb', line 48

def validate_check_scheduling(check)
  must_be_boolean_if_set(check[:publish]) ||
    invalid(check, "check publish must be boolean")
  unless check[:publish] == false
    (must_be_an_integer(check[:interval]) && check[:interval] > 0) ||
      invalid(check, "check interval must be an integer")
  end
  must_be_boolean_if_set(check[:standalone]) ||
    invalid(check, "check standalone must be boolean")
  unless check[:standalone]
    if is_an_array?(check[:subscribers])
      items_must_be_strings(check[:subscribers]) ||
        invalid(check, "check subscribers must each be a string")
    else
      invalid(check, "check subscribers must be an array")
    end
  end
end

#validate_check_source(check) ⇒ Object

Validate check source. Validates: source

Parameters:

  • check (Hash)

    sensu check definition.



35
36
37
38
39
40
41
42
# File 'lib/sensu/settings/validators/check.rb', line 35

def validate_check_source(check)
  if is_a_string?(check[:source])
    must_match_regex(/^[\w\.-]+$/, check[:source]) ||
      invalid(check, "check source cannot contain spaces or special characters")
  else
    invalid(check, "check source must be a string")
  end
end

#validate_check_ttl(check) ⇒ Object

Validate check ttl. Validates: ttl

Parameters:

  • check (Hash)

    sensu check definition.



86
87
88
89
90
91
92
93
# File 'lib/sensu/settings/validators/check.rb', line 86

def validate_check_ttl(check)
  if is_an_integer?(check[:ttl])
    check[:ttl] > 0 ||
      invalid(check, "check ttl must be greater than 0")
  else
    invalid(check, "check ttl must be an integer")
  end
end