sensu/sensu-settings

View on GitHub
lib/sensu/settings/validators/sensu.rb

Summary

Maintainability
A
2 hrs
Test Coverage
module Sensu
  module Settings
    module Validators
      module Sensu
        # Validate Sensu spawn.
        # Validates: limit
        #
        # @param sensu [Hash] sensu definition.
        def validate_sensu_spawn(sensu)
          spawn = sensu[:spawn]
          if is_a_hash?(spawn)
            if is_an_integer?(spawn[:limit])
              spawn[:limit] > 0 ||
                invalid(sensu, "sensu spawn limit must be greater than 0")
            else
              invalid(sensu, "sensu spawn limit must be an integer")
            end
          else
            invalid(sensu, "sensu spawn must be a hash")
          end
        end

        # Validate Sensu keepalives thresholds.
        # Validates: warning, critical
        #
        # @param sensu [Hash] sensu definition.
        def validate_sensu_keepalives_thresholds(sensu)
          thresholds = sensu[:keepalives][:thresholds]
          must_be_a_hash_if_set(thresholds) ||
            invalid(sensu, "sensu keepalives thresholds must be a hash")
          if is_a_hash?(thresholds)
            must_be_an_integer_if_set(thresholds[:warning]) ||
              invalid(sensu, "sensu keepalives warning threshold must be an integer")
            must_be_an_integer_if_set(thresholds[:critical]) ||
              invalid(sensu, "sensu keepalives critical threshold must be an integer")
          end
        end

        # Validate Sensu keepalives handlers.
        # Validates: handler, handlers
        #
        # @param sensu [Hash] sensu definition.
        def validate_sensu_keepalives_handlers(sensu)
          must_be_a_string_if_set(sensu[:keepalives][:handler]) ||
            invalid(sensu, "sensu keepalives handler must be a string")
          must_be_an_array_if_set(sensu[:keepalives][:handlers]) ||
            invalid(sensu, "sensu keepalives handlers must be an array")
          if is_an_array?(sensu[:keepalives][:handlers])
            items_must_be_strings(sensu[:keepalives][:handlers]) ||
              invalid(sensu, "sensu keepalives handlers must each be a string")
          end
        end

        # Validate Sensu keepalives.
        # Validates: thresholds (warning, critical), handler, handlers
        #
        # @param sensu [Hash] sensu definition.
        def validate_sensu_keepalives(sensu)
          if is_a_hash?(sensu[:keepalives])
            validate_sensu_keepalives_thresholds(sensu)
            validate_sensu_keepalives_handlers(sensu)
          else
            invalid(sensu, "sensu keepalives must be a hash")
          end
        end

        # Validate Sensu server.
        # Validates: server results_pipe, keepalives_pipe
        #
        # @param sensu [Hash] sensu definition.
        def validate_sensu_server(sensu)
          if is_a_hash?(sensu[:server])
            must_be_a_string_if_set(sensu[:server][:results_pipe]) ||
              invalid(sensu, "sensu server results_pipe must be a string")
            must_be_a_string_if_set(sensu[:server][:keepalives_pipe]) ||
              invalid(sensu, "sensu server keepalives_pipe must be a string")
            must_be_an_integer_if_set(sensu[:server][:max_message_size]) ||
              invalid(sensu, "sensu server max_message_size must be an integer")
          else
            invalid(sensu, "sensu server must be a hash")
          end
        end

        # Validate a Sensu definition.
        # Validates: spawn, keepalives
        #
        # @param sensu [Hash] sensu definition.
        def validate_sensu(sensu)
          if is_a_hash?(sensu)
            validate_sensu_spawn(sensu)
            validate_sensu_keepalives(sensu)
            validate_sensu_server(sensu) if sensu[:server]
            must_be_boolean_if_set(sensu[:global_error_handler]) ||
              invalid(sensu, "sensu global_error_handler must be boolean")
          else
            invalid(sensu, "sensu must be a hash")
          end
        end
      end
    end
  end
end