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