class LogStash::Outputs::Monasca::MonascaLogApiClient

Public Class Methods

new(url, insecure = false) click to toggle source
# File lib/logstash/outputs/monasca/monasca_log_api_client.rb, line 26
def initialize(url, insecure = false)
  @logger = Cabin::Channel.get(LogStash)
  @uri = URI.parse(url)
  @http = Net::HTTP.new(@uri.host, @uri.port)
  if @uri.scheme == 'https'
    @http.use_ssl = true
    @http.verify_mode = OpenSSL::SSL::VERIFY_NONE if insecure
  end
end

Public Instance Methods

send_logs(logs, auth_token, cross_tenant) click to toggle source
# File lib/logstash/outputs/monasca/monasca_log_api_client.rb, line 36
def send_logs(logs, auth_token, cross_tenant)
  post_header = {
    'X-Auth-Token' => auth_token,
    'Content-Type' => 'application/json',
  }
  params = Hash.new
  if !cross_tenant.nil?
    params[:tenant_id] = cross_tenant
  end
  response = request('/logs', post_header, logs.to_json, params)
  handle_response(response)
end

Private Instance Methods

handle_response(response) click to toggle source
# File lib/logstash/outputs/monasca/monasca_log_api_client.rb, line 64
def handle_response(response)
  case response
  when Net::HTTPNoContent
    @logger.debug('Successfully sent logs')
  when Net::HTTPUnauthorized # HTTP code: 401
    @logger.warn("Invalid token. Response=#{response}")
    raise InvalidTokenError, "Invalid token. Response=#{response}"
  else
    # TODO: Handle logs which could not be sent
    @logger.error("Failed to send logs. Response=#{response}")
  end
end
request(path, header, body, params) click to toggle source
# File lib/logstash/outputs/monasca/monasca_log_api_client.rb, line 51
def request(path, header, body, params)
  @logger.debug('Sending data to ', :url => @uri.to_s)
  uri = URI::HTTP.build( :path => @uri.path + path)
  if !params.empty?
    uri.query = URI.encode_www_form(params)
  end
  post_request = Net::HTTP::Post.new(uri.request_uri, header)
  post_request.body = body
  @http.request(post_request)
end