Set region_name in get_os_creds()
[snaps.git] / snaps / openstack / create_user.py
index bbed133..aefebe4 100644 (file)
@@ -16,6 +16,7 @@ import logging
 
 from keystoneclient.exceptions import NotFound
 
+from snaps.config.user import UserConfig
 from snaps.openstack.openstack_creator import OpenStackIdentityObject
 from snaps.openstack.os_credentials import OSCreds
 from snaps.openstack.utils import keystone_utils
@@ -90,6 +91,9 @@ class OpenStackUser(OpenStackIdentityObject):
                              credentials
         :return:
         """
+        if not project_name:
+            project_name = self._os_creds.project_name
+
         return OSCreds(
             username=self.user_settings.name,
             password=self.user_settings.password,
@@ -101,6 +105,7 @@ class OpenStackUser(OpenStackIdentityObject):
             compute_api_version=self._os_creds.compute_api_version,
             heat_api_version=self._os_creds.heat_api_version,
             volume_api_version=self._os_creds.volume_api_version,
+            region_name=self._os_creds.region_name,
             user_domain_name=self._os_creds.user_domain_name,
             user_domain_id=self._os_creds.user_domain_id,
             project_domain_name=self._os_creds.project_domain_name,
@@ -110,43 +115,15 @@ class OpenStackUser(OpenStackIdentityObject):
             cacert=self._os_creds.cacert)
 
 
-class UserSettings:
-    def __init__(self, **kwargs):
-
-        """
-        Constructor
-        :param name: the user's name (required)
-        :param password: the user's password (required)
-        :param project_name: the user's primary project name (optional)
-        :param domain_name: the user's domain name (default='Default'). For v3
-                            APIs
-        :param email: the user's email address (optional)
-        :param enabled: denotes whether or not the user is enabled
-                        (default True)
-        :param roles: dict where key is the role's name and value is the name
-                      of the project to associate with the role (optional)
-        """
-
-        self.name = kwargs.get('name')
-        self.password = kwargs.get('password')
-        self.project_name = kwargs.get('project_name')
-        self.email = kwargs.get('email')
-        self.domain_name = kwargs.get('domain_name', 'Default')
-        self.enabled = kwargs.get('enabled', True)
-        self.roles = kwargs.get('roles', dict())
-
-        if not self.name or not self.password:
-            raise UserSettingsException(
-                'The attributes name and password are required for '
-                'UserSettings')
-
-        if not isinstance(self.enabled, bool):
-            raise UserSettingsException('The attribute enabled must be of type'
-                                        ' boolean')
-
-
-class UserSettingsException(Exception):
+class UserSettings(UserConfig):
     """
-    Raised when there is a problem with the values set in the UserSettings
-    class
+    Class to hold the configuration settings required for creating OpenStack
+    user objects
+    deprecated
     """
+
+    def __init__(self, **kwargs):
+        from warnings import warn
+        warn('Use snaps.config.user.UserConfig instead',
+             DeprecationWarning)
+        super(self.__class__, self).__init__(**kwargs)