class OpenStack::Compute::AuthV10

Public Class Methods

new(connection) click to toggle source
# File lib/openstack/compute/authentication.rb, line 73
def initialize(connection)
  hdrhash = { "X-Auth-User" => connection.authuser, "X-Auth-Key" => connection.authkey }
  begin
    server = Net::HTTP::Proxy(connection.proxy_host, connection.proxy_port).new(connection.auth_host, connection.auth_port)
    if connection.auth_scheme == "https"
      server.use_ssl = true
      server.verify_mode = OpenSSL::SSL::VERIFY_NONE
    end
    server.start
  rescue
    raise OpenStack::Compute::Exception::Connection, "Unable to connect to #{server}"
  end
  response = server.get(connection.auth_path, hdrhash)
  if (response.code =~ %r^20./)
    connection.authtoken = response["x-auth-token"]
    uri = URI.parse(response["x-server-management-url"])
    connection.svrmgmthost = uri.host
    connection.svrmgmtpath = uri.path
    # Force the path into the v1.1 URL space
    connection.svrmgmtpath.sub!(%r\/.*\/?/, '/v1.1/')
    connection.svrmgmtpath += connection.authtenant
    connection.svrmgmtport = uri.port
    connection.svrmgmtscheme = uri.scheme
    connection.authok = true
  else
    connection.authtoken = false
    raise OpenStack::Compute::Exception::Authentication, "Authentication failed with response code #{response.code}"
  end
  server.finish
end