X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=snaps%2Fopenstack%2Fcreate_user.py;h=aefebe45c48a89de72a571effa9ef880febd8752;hb=60cb38cd5ea0a7ad5d6ed164a0b8ac622871b154;hp=4c9612144fb3d8c14344e574a9f38047a2b49f7c;hpb=00f3d66bc9af0292b6ab2433eb2a6e1de8467300;p=snaps.git diff --git a/snaps/openstack/create_user.py b/snaps/openstack/create_user.py index 4c96121..aefebe4 100644 --- a/snaps/openstack/create_user.py +++ b/snaps/openstack/create_user.py @@ -1,4 +1,4 @@ -# Copyright (c) 2016 Cable Television Laboratories, Inc. ("CableLabs") +# Copyright (c) 2017 Cable Television Laboratories, Inc. ("CableLabs") # and others. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,6 +15,9 @@ 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 @@ -23,9 +26,9 @@ __author__ = 'spisarski' logger = logging.getLogger('create_user') -class OpenStackUser: +class OpenStackUser(OpenStackIdentityObject): """ - Class responsible for creating a user in OpenStack + Class responsible for managing a user in OpenStack """ def __init__(self, os_creds, user_settings): @@ -35,28 +38,31 @@ class OpenStackUser: :param user_settings: The user settings :return: """ - self.__os_creds = os_creds + super(self.__class__, self).__init__(os_creds) + self.user_settings = user_settings self.__user = None - self.__keystone = None - def create(self, cleanup=False): + def initialize(self): """ Creates the user in OpenStack if it does not already exist - :param cleanup: Denotes whether or not this is being called for cleanup - :return: The OpenStack user object + :return: The User domain object """ - self.__keystone = keystone_utils.keystone_client(self.__os_creds) - self.__user = keystone_utils.get_user(self.__keystone, + super(self.__class__, self).initialize() + + self.__user = keystone_utils.get_user(self._keystone, self.user_settings.name) - if self.__user: - logger.info('Found user with name - ' + self.user_settings.name) - elif not cleanup: - self.__user = keystone_utils.create_user(self.__keystone, - self.user_settings) - else: - logger.info('Did not create user due to cleanup mode') + return self.__user + def create(self, cleanup=False): + """ + Creates a User if one does not already exist + :return: The User domain object + """ + self.initialize() + if not self.__user: + self.__user = keystone_utils.create_user(self._keystone, + self.user_settings) return self.__user def clean(self): @@ -66,7 +72,7 @@ class OpenStackUser: """ if self.__user: try: - keystone_utils.delete_user(self.__keystone, self.__user) + keystone_utils.delete_user(self._keystone, self.__user) except NotFound: pass self.__user = None @@ -85,53 +91,39 @@ class OpenStackUser: 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, + auth_url=self._os_creds.auth_url, project_name=project_name, - 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) - + 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, + 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) + + +class UserSettings(UserConfig): + """ + Class to hold the configuration settings required for creating OpenStack + user objects + deprecated + """ -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) - """ - - self.name = kwargs.get('name') - self.password = kwargs.get('password') - self.project_name = kwargs.get('project_name') - self.email = kwargs.get('email') - - if kwargs.get('domain_name'): - self.domain_name = kwargs['domain_name'] - else: - self.domain_name = 'default' - - if kwargs.get('enabled') is not None: - self.enabled = kwargs['enabled'] - else: - self.enabled = True - - if not self.name or not self.password: - raise Exception( - 'The attributes name and password are required for ' - 'UserSettings') - - if not isinstance(self.enabled, bool): - raise Exception('The attribute enabled must be of type boolean') + from warnings import warn + warn('Use snaps.config.user.UserConfig instead', + DeprecationWarning) + super(self.__class__, self).__init__(**kwargs)