diff --git a/tempest/common/rest_client.py b/tempest/common/rest_client.py
index 18f86a7..690738f 100644
--- a/tempest/common/rest_client.py
+++ b/tempest/common/rest_client.py
@@ -7,12 +7,13 @@
 
 class RestClient(object):
 
-    def __init__(self, config, user, key, auth_url, tenant_name=None):
+    def __init__(self, config, user, key, auth_url, service, tenant_name=None):
         self.config = config
         if self.config.env.authentication == 'keystone_v2':
             self.token, self.base_url = self.keystone_v2_auth(user,
                                                               key,
                                                               auth_url,
+                                                              service,
                                                               tenant_name)
         else:
             self.token, self.base_url = self.basic_auth(user,
@@ -35,7 +36,7 @@
         except:
             raise
 
-    def keystone_v2_auth(self, user, api_key, auth_url, tenant_name):
+    def keystone_v2_auth(self, user, api_key, auth_url, service, tenant_name):
         """
         Provides authentication via Keystone 2.0
         """
@@ -59,18 +60,25 @@
             try:
                 auth_data = json.loads(body)['access']
                 token = auth_data['token']['id']
-                endpoints = auth_data['serviceCatalog'][0]['endpoints']
-                mgmt_url = endpoints[0]['publicURL']
-
-                #TODO (dwalleck): This is a horrible stopgap.
-                #Need to join strings more cleanly
-                temp = mgmt_url.rsplit('/')
-                service_url = temp[0] + '//' + temp[2] + '/' + temp[3] + '/'
-                management_url = service_url + tenant_name
-                return token, management_url
             except Exception, e:
-                print "Failed to authenticate user: %s" % e
+                print "Failed to obtain token for user: %s" % e
                 raise
+
+            mgmt_url = None
+            for ep in auth_data['serviceCatalog']:
+                if ep["name"] == service:
+                    mgmt_url = ep['endpoints'][0]['publicURL']
+                    break
+
+            if mgmt_url == None:
+                raise exceptions.EndpointNotFound(service)
+
+            #TODO (dwalleck): This is a horrible stopgap.
+            #Need to join strings more cleanly
+            temp = mgmt_url.rsplit('/')
+            service_url = temp[0] + '//' + temp[2] + '/' + temp[3] + '/'
+            management_url = service_url + tenant_name
+            return token, management_url
         elif resp.status == 401:
             raise exceptions.AuthenticationFailure(user=user, password=api_key)
 
diff --git a/tempest/exceptions.py b/tempest/exceptions.py
index 16d6af3..73798eb 100644
--- a/tempest/exceptions.py
+++ b/tempest/exceptions.py
@@ -32,6 +32,14 @@
         self.message = self.msg % kwargs
 
 
+class EndpointNotFound(Exception):
+    def __init__(self, message):
+        self.message = message
+
+    def __str__(self):
+        return repr(self.message)
+
+
 class OverLimit(Exception):
     def __init__(self, message):
         self.message = message
diff --git a/tempest/services/nova/json/extensions_client.py b/tempest/services/nova/json/extensions_client.py
index 3521f14..abd8957 100644
--- a/tempest/services/nova/json/extensions_client.py
+++ b/tempest/services/nova/json/extensions_client.py
@@ -7,7 +7,7 @@
     def __init__(self, config, username, key, auth_url, tenant_name=None):
         self.config = config
         self.client = rest_client.RestClient(config, username, key,
-                                             auth_url, tenant_name)
+                                             auth_url, 'nova', tenant_name)
 
     def list_extensions(self):
         url = 'extensions'
diff --git a/tempest/services/nova/json/flavors_client.py b/tempest/services/nova/json/flavors_client.py
index ba292c3..4d78e66 100644
--- a/tempest/services/nova/json/flavors_client.py
+++ b/tempest/services/nova/json/flavors_client.py
@@ -7,7 +7,7 @@
     def __init__(self, config, username, key, auth_url, tenant_name=None):
         self.config = config
         self.client = rest_client.RestClient(config, username, key,
-                                             auth_url, tenant_name)
+                                             auth_url, 'nova', tenant_name)
 
     def list_flavors(self, params=None):
         url = 'flavors'
diff --git a/tempest/services/nova/json/images_client.py b/tempest/services/nova/json/images_client.py
index 682e66f..12c1774 100644
--- a/tempest/services/nova/json/images_client.py
+++ b/tempest/services/nova/json/images_client.py
@@ -9,7 +9,7 @@
     def __init__(self, config, username, key, auth_url, tenant_name=None):
         self.config = config
         self.client = rest_client.RestClient(config, username, key,
-                                             auth_url, tenant_name)
+                                             auth_url, 'nova', tenant_name)
 
         self.build_interval = self.config.nova.build_interval
         self.build_timeout = self.config.nova.build_timeout
diff --git a/tempest/services/nova/json/limits_client.py b/tempest/services/nova/json/limits_client.py
index 8dd3406..f06235c 100644
--- a/tempest/services/nova/json/limits_client.py
+++ b/tempest/services/nova/json/limits_client.py
@@ -6,7 +6,7 @@
 
     def __init__(self, config, username, key, auth_url, tenant_name=None):
         self.client = rest_client.RestClient(config, username, key,
-                                             auth_url, tenant_name)
+                                             auth_url, 'nova', tenant_name)
 
     def get_limits(self):
         resp, body = self.client.get("limits")
diff --git a/tempest/services/nova/json/servers_client.py b/tempest/services/nova/json/servers_client.py
index 5fac08e..f68d140 100644
--- a/tempest/services/nova/json/servers_client.py
+++ b/tempest/services/nova/json/servers_client.py
@@ -9,7 +9,7 @@
     def __init__(self, config, username, key, auth_url, tenant_name=None):
         self.config = config
         self.client = rest_client.RestClient(config, username, key,
-                                             auth_url, tenant_name)
+                                             auth_url, 'nova', tenant_name)
 
         self.build_interval = self.config.nova.build_interval
         self.build_timeout = self.config.nova.build_timeout
