    # File lib/fog/openstack.rb, line 169
        def self.retrieve_tokens_v2(options, connection_options = {})
          api_key     = options[:openstack_api_key].to_s
          username    = options[:openstack_username].to_s
          tenant_name = options[:openstack_tenant].to_s
          auth_token  = options[:openstack_auth_token] || options[:unscoped_token]
          uri         = options[:openstack_auth_uri]

          connection = Fog::Connection.new(uri.to_s, false, connection_options)
          request_body = {:auth => Hash.new}

          if auth_token
            request_body[:auth][:token] = {
              :id => auth_token
            }
          else
            request_body[:auth][:passwordCredentials] = {
              :username => username,
              :password => api_key
            }
          end
          request_body[:auth][:tenantName] = tenant_name if tenant_name

          response = connection.request({
            :expects  => [200, 204],
            :headers  => {'Content-Type' => 'application/json'},
            :body     => Fog::JSON.encode(request_body),
            :host     => uri.host,
            :method   => 'POST',
            :path     => (uri.path and not uri.path.empty?) ? uri.path : 'v2.0'
          })

          Fog::JSON.decode(response.body)
        end