diff options
Diffstat (limited to 'snaps/openstack/create_user.py')
-rw-r--r-- | snaps/openstack/create_user.py | 60 |
1 files changed, 22 insertions, 38 deletions
diff --git a/snaps/openstack/create_user.py b/snaps/openstack/create_user.py index bcf4790..b187f4e 100644 --- a/snaps/openstack/create_user.py +++ b/snaps/openstack/create_user.py @@ -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 @@ -76,6 +77,8 @@ class OpenStackUser(OpenStackIdentityObject): pass self.__user = None + super(self.__class__, self).clean() + def get_user(self): """ Returns the OpenStack user object populated in create() @@ -90,12 +93,21 @@ 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, auth_url=self._os_creds.auth_url, project_name=project_name, identity_api_version=self._os_creds.identity_api_version, + image_api_version=self._os_creds.image_api_version, + network_api_version=self._os_creds.network_api_version, + 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, @@ -105,43 +117,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 - the project to associate with the role - """ - - 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) |