Class: OpenStack::AuthV10

Inherits:
Object
  • Object
show all
Defined in:
lib/openstack/connection.rb

Instance Method Summary collapse

Constructor Details

#initialize(connection) ⇒ AuthV10

Returns a new instance of AuthV10.



313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
# File 'lib/openstack/connection.rb', line 313

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::Exception::Connection, "Unable to connect to #{server}"
  end
  response = server.get(connection.auth_path, hdrhash)
  if (response.code =~ /^20./)
    connection.authtoken = response["x-auth-token"]
    case connection.service_type
      when "compute"
        uri = URI.parse(response["x-server-management-url"])
      when "object-store"
        uri = URI.parse(response["x-storage-url"])
    end
    raise OpenStack::Exception::Authentication, "Unexpected Response from  #{connection.auth_host} - couldn't get service URLs: \"x-server-management-url\" is: #{response["x-server-management-url"]} and \"x-storage-url\" is: #{response["x-storage-url"]}"  if (uri.host.nil? || uri.host=="")
    connection.service_host = uri.host
    connection.service_path = uri.path
    connection.service_port = uri.port
    connection.service_scheme = uri.scheme
    connection.authok = true
  else
    connection.authok = false
    raise OpenStack::Exception::Authentication, "Authentication failed with response code #{response.code}"
  end
  server.finish
end