diff --git a/novaclient/client.py b/novaclient/client.py
index 2a07e2c4a..8fe21dd56 100644
--- a/novaclient/client.py
+++ b/novaclient/client.py
@@ -38,7 +38,8 @@ class HTTPClient(httplib2.Http):
     USER_AGENT = 'python-novaclient'
 
     def __init__(self, user, apikey, projectid, auth_url, insecure=False,
-                 timeout=None, token=None, region_name=None):
+                 timeout=None, token=None, region_name=None,
+                 endpoint_name='publicURL'):
         super(HTTPClient, self).__init__(timeout=timeout)
         self.user = user
         self.apikey = apikey
@@ -46,6 +47,7 @@ class HTTPClient(httplib2.Http):
         self.auth_url = auth_url
         self.version = 'v1.0'
         self.region_name = region_name
+        self.endpoint_name = endpoint_name
 
         self.management_url = None
         self.auth_token = None
@@ -155,7 +157,8 @@ class HTTPClient(httplib2.Http):
                     self.auth_token = self.service_catalog.get_token()
                 self.management_url = self.service_catalog.url_for(
                                            attr='region',
-                                           filter_value=self.region_name)
+                                           filter_value=self.region_name,
+                                           endpoint_type=self.endpoint_name)
                 return None
             except KeyError:
                 raise exceptions.AuthorizationFailure()
diff --git a/novaclient/shell.py b/novaclient/shell.py
index 5a7bb43cf..f8688051d 100644
--- a/novaclient/shell.py
+++ b/novaclient/shell.py
@@ -78,6 +78,10 @@ class OpenStackComputeShell(object):
             default=env('NOVA_REGION_NAME'),
             help='Defaults to env[NOVA_REGION_NAME].')
 
+        parser.add_argument('--endpoint_name',
+            default=env('NOVA_ENDPOINT_NAME'),
+            help='Defaults to env[NOVA_ENDPOINT_NAME] or "publicURL.')
+
         parser.add_argument('--version',
             default=env('NOVA_VERSION'),
             help='Accepts 1.0 or 1.1, defaults to env[NOVA_VERSION].')
@@ -153,9 +157,12 @@ class OpenStackComputeShell(object):
             self.do_help(args)
             return 0
 
-        user, apikey, projectid, url, region_name, insecure = \
+        user, apikey, projectid, url, region_name, endpoint_name, insecure = \
                 args.username, args.apikey, args.projectid, args.url, \
-                args.region_name, args.insecure
+                args.region_name, args.endpoint_name, args.insecure
+
+        if not endpoint_name:
+            endpoint_name = 'publicURL'
 
         #FIXME(usrleon): Here should be restrict for project id same as
         # for username or apikey but for compatibility it is not.
@@ -180,7 +187,8 @@ class OpenStackComputeShell(object):
                                        "env[NOVA_URL")
 
         self.cs = self.get_api_class(options.version)(user, apikey, projectid,
-                                     url, insecure, region_name=region_name)
+                                     url, insecure, region_name=region_name,
+                                     endpoint_name=endpoint_name)
 
         try:
             self.cs.authenticate()
diff --git a/novaclient/v1_0/client.py b/novaclient/v1_0/client.py
index 4f5a532da..e6f665e5d 100644
--- a/novaclient/v1_0/client.py
+++ b/novaclient/v1_0/client.py
@@ -26,7 +26,8 @@ class Client(object):
     """
 
     def __init__(self, username, api_key, project_id, auth_url=None,
-                 insecure=False, timeout=None, token=None, region_name=None):
+                 insecure=False, timeout=None, token=None, region_name=None,
+                 endpoint_name='publicURL'):
 
         self.accounts = accounts.AccountManager(self)
         self.backup_schedules = backup_schedules.BackupScheduleManager(self)
@@ -45,7 +46,8 @@ class Client(object):
                                         insecure=insecure,
                                         timeout=timeout,
                                         token=token,
-                                        region_name=region_name)
+                                        region_name=region_name,
+                                        endpoint_name=endpoint_name)
 
     def authenticate(self):
         """
diff --git a/novaclient/v1_1/client.py b/novaclient/v1_1/client.py
index 31e49fefb..413ed16fd 100644
--- a/novaclient/v1_1/client.py
+++ b/novaclient/v1_1/client.py
@@ -28,9 +28,10 @@ class Client(object):
 
     """
 
-    # FIXME(jesse): project_id isn't required to autenticate
+    # FIXME(jesse): project_id isn't required to authenticate
     def __init__(self, username, api_key, project_id, auth_url,
-                  insecure=False, timeout=None, token=None, region_name=None):
+                  insecure=False, timeout=None, token=None, region_name=None,
+                  endpoint_name='publicURL'):
         self.flavors = flavors.FlavorManager(self)
         self.floating_ips = floating_ips.FloatingIPManager(self)
         self.images = images.ImageManager(self)
@@ -52,7 +53,8 @@ class Client(object):
                                         insecure=insecure,
                                         timeout=timeout,
                                         token=token,
-                                        region_name=region_name)
+                                        region_name=region_name,
+                                        endpoint_name=endpoint_name)
 
     def authenticate(self):
         """