class LogStash::Outputs::Keystone::KeystoneClient
Public Class Methods
new(url, insecure=false)
click to toggle source
# File lib/logstash/outputs/keystone/keystone_client.rb, line 33 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
authenticate(username, user_domain_name, password, project_name, project_domain_name)
click to toggle source
# File lib/logstash/outputs/keystone/keystone_client.rb, line 43 def authenticate(username, user_domain_name, password, project_name, project_domain_name) auth_hash = generate_hash(username, user_domain_name, password, project_name, project_domain_name) post_header = { 'Accept' => 'application/json', 'Content-Type' => 'application/json', } response = request('/auth/tokens', post_header, auth_hash) handle_response(response) end
Private Instance Methods
generate_hash(username, user_domain_name, password, project_name, project_domain_name)
click to toggle source
# File lib/logstash/outputs/keystone/keystone_client.rb, line 62 def generate_hash(username, user_domain_name, password, project_name, project_domain_name) { "auth"=>{ "identity"=>{ "methods"=>["password"], "password"=>{ "user"=>{ "domain"=>{"name"=>user_domain_name}, "name"=>username, "password"=>password } } }, "scope"=>{ "project"=>{ "domain"=>{"name"=>project_domain_name}, "name"=>project_name } } } }.to_json end
handle_response(response)
click to toggle source
# File lib/logstash/outputs/keystone/keystone_client.rb, line 85 def handle_response(response) case response when Net::HTTPCreated expires_at = DateTime.parse( JSON.parse(response.body)["token"]["expires_at"]) @logger.debug("Authentication succeed: code=#{response.code}, "\ "auth-token=#{response['X-Subject-Token']}, "\ "expires_at=#{expires_at.to_time}") {:token => response['X-Subject-Token'], :expires_at => expires_at} else @logger.info("Authentication failed. Response=#{response}") end end
request(path, header, body)
click to toggle source
# File lib/logstash/outputs/keystone/keystone_client.rb, line 55 def request(path, header, body) @logger.debug('Sending authentication to ', :url => @uri.to_s) post_request = Net::HTTP::Post.new(@uri.request_uri + path, header) post_request.body = body @http.request(post_request) end