code: def auth_with_token(self, token, tenant_id=None, tenant_name=None):
          
          # Implementation note:
          # Rackspace auth uses one tenant ID for the object_store services and
          # another for everything else. The one that the user would know is the
          # 'everything else' ID, so we need to extract the object_store tenant
          # ID from the initial response, and call the superclass
          # auth_with_token() method a second time with that tenant ID to get the
          # object_store endpoints. We can then add these to the initial
          # endpoints returned by the primary tenant ID, and then continue with
          # the auth process.
          main_resp, main_body = self._call_token_auth(token, tenant_id,
                  tenant_name)
          # Get the swift tenant ID
          roles = main_body["access"]["user"]["roles"]
          ostore = [role for role in roles
                  if role["name"] == "object-store:default"]
          if ostore:
              ostore_tenant_id = ostore[0]["tenantId"]
              ostore_resp, ostore_body = self._call_token_auth(token,
                      ostore_tenant_id, None)
              ostore_cat = ostore_body["access"]["serviceCatalog"]
              main_cat = main_body["access"]["serviceCatalog"]
              main_cat.extend(ostore_cat)
          self._parse_response(main_body)
          self.authenticated = True
docs: If a valid token is already known, this call will use it to generate
          the service catalog.