identity_api_version=self.__os_creds.identity_api_version,
             user_domain_id=self.__os_creds.user_domain_id,
             project_domain_id=self.__os_creds.project_domain_id,
+            interface=self.__os_creds.interface,
             proxy_settings=self.__os_creds.proxy_settings,
             cacert=self.__os_creds.cacert)
 
 
 
     def __init__(self, username, password, auth_url, project_name, identity_api_version=2, image_api_version=2,
                  network_api_version=2, compute_api_version=2, user_domain_id='default', project_domain_id='default',
-                 proxy_settings=None, cacert=True):
+                 interface="admin", proxy_settings=None, cacert=True):
         """
         Constructor
         :param username: The user (required)
         :param compute_api_version: The OpenStack's API version to use for Nova clients
         :param user_domain_id: Used for v3 APIs
         :param project_domain_id: Used for v3 APIs
+        :param interface: Used to specify the endpoint type for keystone as public, admin, internal
         :param proxy_settings: instance of os_credentials.ProxySettings class
         :param cacert: Default to be True for http, or the certification file is specified for https verification,
                        or set to be False to disable server certificate verification without cert file
         self.compute_api_version = compute_api_version
         self.user_domain_id = user_domain_id
         self.project_domain_id = project_domain_id
+        self.interface = interface
         self.proxy_settings = proxy_settings
         self.cacert = cacert
 
                ', network_api_version=' + str(self.network_api_version) + \
                ', compute_api_version=' + str(self.compute_api_version) + \
                ', user_domain_id=' + str(self.user_domain_id) + \
+               ', interface=' + str(self.interface) + \
                ', proxy_settings=' + str(self.proxy_settings) + \
                ', cacert=' + str(self.cacert)
 
 
         else:
             https_cacert = True
 
+        interface = 'admin'
+        if config.get('OS_INTERFACE'):
+            interface = config.get('OS_INTERFACE')
+
         os_creds = OSCreds(username=config['OS_USERNAME'],
                            password=config['OS_PASSWORD'],
                            auth_url=config['OS_AUTH_URL'],
                            identity_api_version=version,
                            user_domain_id=user_domain_id,
                            project_domain_id=proj_domain_id,
+                           interface=interface,
                            proxy_settings=proxy_settings,
                            cacert=https_cacert)
     else:
 
     :param os_creds: the OpenStack credentials (OSCreds) object
     :return: the client
     """
-    return Client(version=os_creds.identity_api_version, session=keystone_session(os_creds))
+    return Client(version=os_creds.identity_api_version, session=keystone_session(os_creds),
+                  interface=os_creds.interface)
 
 
 def get_endpoint(os_creds, service_type, endpoint_type='publicURL'):