# File lib/openstack/connection.rb, line 343
    def initialize(connection)
      tries = connection.retries
      time = 3

      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

          # use the ca_cert if were given one, and make sure to verify!
          if !connection.ca_cert.nil?
            server.ca_file = connection.ca_cert
            server.verify_mode = OpenSSL::SSL::VERIFY_PEER
          end

          # explicitly set the SSL version to use
          server.ssl_version = connection.ssl_version if !connection.ssl_version.nil?
        end
        server.start
      rescue
        puts "Can't connect to the server: #{tries} tries  to reconnect" if connection.is_debug
        sleep time += 1
        retry unless (tries -= 1) <= 0
        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