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.



349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
# File 'lib/openstack/connection.rb', line 349

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