module Sensu::API::Routes::Results

Constants

RESULTS_CLIENT_URI
RESULTS_URI
RESULT_URI

Public Instance Methods

delete_result() click to toggle source

DELETE /results/:client_name/:check_name

# File lib/sensu/api/routes/results.rb, line 101
def delete_result
  client_name, check_name = parse_uri(RESULT_URI)
  result_key = "result:#{client_name}:#{check_name}"
  @redis.exists(result_key) do |result_exists|
    if result_exists
      @redis.srem("result:#{client_name}", check_name) do
        @redis.del(result_key) do
          no_content!
        end
      end
    else
      not_found!
    end
  end
end
get_result() click to toggle source

GET /results/:client_name/:check_name

# File lib/sensu/api/routes/results.rb, line 86
def get_result
  client_name, check_name = parse_uri(RESULT_URI)
  result_key = "result:#{client_name}:#{check_name}"
  @redis.get(result_key) do |result_json|
    unless result_json.nil?
      check = Sensu::JSON.load(result_json)
      @response_content = {:client => client_name, :check => check}
      respond
    else
      not_found!
    end
  end
end
get_results() click to toggle source

GET /results

# File lib/sensu/api/routes/results.rb, line 29
def get_results
  @response_content = []
  @redis.smembers("clients") do |clients|
    unless clients.empty?
      clients.each_with_index do |client_name, client_index|
        @redis.smembers("result:#{client_name}") do |checks|
          if !checks.empty?
            checks.each_with_index do |check_name, check_index|
              result_key = "result:#{client_name}:#{check_name}"
              @redis.get(result_key) do |result_json|
                unless result_json.nil?
                  check = Sensu::JSON.load(result_json)
                  @response_content << {:client => client_name, :check => check}
                end
                if client_index == clients.length - 1 && check_index == checks.length - 1
                  respond
                end
              end
            end
          elsif client_index == clients.length - 1
            @redis.ping do
              respond
            end
          end
        end
      end
    else
      respond
    end
  end
end
get_results_client() click to toggle source

GET /results/:client_name

# File lib/sensu/api/routes/results.rb, line 62
def get_results_client
  client_name = parse_uri(RESULTS_CLIENT_URI).first
  @response_content = []
  @redis.smembers("result:#{client_name}") do |checks|
    unless checks.empty?
      checks.each_with_index do |check_name, check_index|
        result_key = "result:#{client_name}:#{check_name}"
        @redis.get(result_key) do |result_json|
          unless result_json.nil?
            check = Sensu::JSON.load(result_json)
            @response_content << {:client => client_name, :check => check}
          end
          if check_index == checks.length - 1
            respond
          end
        end
      end
    else
      respond
    end
  end
end
post_results() click to toggle source

POST /results

# File lib/sensu/api/routes/results.rb, line 14
def post_results
  rules = {
    :name => {:type => String, :nil_ok => false, :regex => /\A[\w\.-]+\z/},
    :output => {:type => String, :nil_ok => false},
    :status => {:type => Integer, :nil_ok => true},
    :source => {:type => String, :nil_ok => true, :regex => /\A[\w\.-]+\z/}
  }
  read_data(rules) do |data|
    publish_check_result("sensu-api", data)
    @response_content = {:issued => Time.now.to_i}
    accepted!
  end
end