From 918460035fc28375c3553783a893e00898e5b1a5 Mon Sep 17 00:00:00 2001 From: spisarski Date: Tue, 20 Jun 2017 10:04:04 -0600 Subject: Changes to ProjectSettings constructors to use kwargs. And changed line lengths to 79 for pep8 Change-Id: I3ea32e221608d759466973071dd86f9037ad2996 Signed-off-by: spisarski --- snaps/openstack/create_project.py | 62 +++++++++--------- snaps/openstack/tests/create_project_tests.py | 94 +++++++++++++++++---------- 2 files changed, 92 insertions(+), 64 deletions(-) diff --git a/snaps/openstack/create_project.py b/snaps/openstack/create_project.py index b60d396..8d72fdb 100644 --- a/snaps/openstack/create_project.py +++ b/snaps/openstack/create_project.py @@ -15,7 +15,6 @@ import logging from keystoneclient.exceptions import NotFound - from snaps.openstack.utils import keystone_utils __author__ = 'spisarski' @@ -44,16 +43,18 @@ class OpenStackProject: def create(self, cleanup=False): """ Creates the image in OpenStack if it does not already exist - :param cleanup: Denotes whether or not this is being called for cleanup or not + :param cleanup: Denotes whether or not this is being called for cleanup :return: The OpenStack Image object """ self.__keystone = keystone_utils.keystone_client(self.__os_creds) - self.__project = keystone_utils.get_project(keystone=self.__keystone, - project_name=self.project_settings.name) + self.__project = keystone_utils.get_project( + keystone=self.__keystone, project_name=self.project_settings.name) if self.__project: - logger.info('Found project with name - ' + self.project_settings.name) + logger.info( + 'Found project with name - ' + self.project_settings.name) elif not cleanup: - self.__project = keystone_utils.create_project(self.__keystone, self.project_settings) + self.__project = keystone_utils.create_project( + self.__keystone, self.project_settings) else: logger.info('Did not create image due to cleanup mode') @@ -92,44 +93,43 @@ class OpenStackProject: :return: """ if not self.__role: - self.__role = keystone_utils.create_role(self.__keystone, self.project_settings.name + '-role') + self.__role = keystone_utils.create_role( + self.__keystone, self.project_settings.name + '-role') - keystone_utils.assoc_user_to_project(self.__keystone, self.__role, user, self.__project) + keystone_utils.assoc_user_to_project(self.__keystone, self.__role, + user, self.__project) class ProjectSettings: """ - Class to hold the configuration settings required for creating OpenStack project objects + Class to hold the configuration settings required for creating OpenStack + project objects """ - def __init__(self, config=None, name=None, domain='default', description=None, enabled=True): + + def __init__(self, **kwargs): """ Constructor - :param config: dict() object containing the configuration settings using the attribute names below as each - member's the key and overrides any of the other parameters. :param name: the project's name (required) - :param domain: the project's domain name (default 'default'). Field is used for v3 clients + :param domain: the project's domain name (default 'default'). Field is + used for v3 clients :param description: the description (optional) - :param enabled: denotes whether or not the user is enabled (default True) + :param enabled: denotes whether or not the user is enabled + (default True) """ - if config: - self.name = config.get('name') - if config.get('domain'): - self.domain = config['domain'] - else: - self.domain = domain - - self.description = config.get('description') - if config.get('enabled') is not None: - self.enabled = config['enabled'] - else: - self.enabled = enabled + self.name = kwargs.get('name') + if kwargs.get('domain'): + self.domain = kwargs['domain'] + else: + self.domain = 'default' + + self.description = kwargs.get('description') + if kwargs.get('enabled') is not None: + self.enabled = kwargs['enabled'] else: - self.name = name - self.domain = domain - self.description = description - self.enabled = enabled + self.enabled = True if not self.name: - raise Exception("The attribute name is required for ProjectSettings") + raise Exception( + "The attribute name is required for ProjectSettings") diff --git a/snaps/openstack/tests/create_project_tests.py b/snaps/openstack/tests/create_project_tests.py index ede8b4b..068ab95 100644 --- a/snaps/openstack/tests/create_project_tests.py +++ b/snaps/openstack/tests/create_project_tests.py @@ -12,8 +12,8 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -import uuid import unittest +import uuid from snaps.openstack.create_project import OpenStackProject, ProjectSettings from snaps.openstack.create_security_group import OpenStackSecurityGroup @@ -37,7 +37,7 @@ class ProjectSettingsUnitTests(unittest.TestCase): def test_empty_config(self): with self.assertRaises(Exception): - ProjectSettings(config=dict()) + ProjectSettings(**dict()) def test_name_only(self): settings = ProjectSettings(name='foo') @@ -47,21 +47,24 @@ class ProjectSettingsUnitTests(unittest.TestCase): self.assertTrue(settings.enabled) def test_config_with_name_only(self): - settings = ProjectSettings(config={'name': 'foo'}) + settings = ProjectSettings(**{'name': 'foo'}) self.assertEqual('foo', settings.name) self.assertEqual('default', settings.domain) self.assertIsNone(settings.description) self.assertTrue(settings.enabled) def test_all(self): - settings = ProjectSettings(name='foo', domain='bar', description='foobar', enabled=False) + settings = ProjectSettings(name='foo', domain='bar', + description='foobar', enabled=False) self.assertEqual('foo', settings.name) self.assertEqual('bar', settings.domain) self.assertEqual('foobar', settings.description) self.assertFalse(settings.enabled) def test_config_all(self): - settings = ProjectSettings(config={'name': 'foo', 'domain': 'bar', 'description': 'foobar', 'enabled': False}) + settings = ProjectSettings( + **{'name': 'foo', 'domain': 'bar', 'description': 'foobar', + 'enabled': False}) self.assertEqual('foo', settings.name) self.assertEqual('bar', settings.domain) self.assertEqual('foobar', settings.description) @@ -75,8 +78,8 @@ class CreateProjectSuccessTests(OSComponentTestCase): def setUp(self): """ - Instantiates the CreateImage object that is responsible for downloading and creating an OS image file - within OpenStack + Instantiates the CreateImage object that is responsible for downloading + and creating an OS image file within OpenStack """ guid = str(uuid.uuid4())[:-19] guid = self.__class__.__name__ + '-' + guid @@ -98,35 +101,42 @@ class CreateProjectSuccessTests(OSComponentTestCase): """ Tests the creation of an OpenStack project. """ - self.project_creator = OpenStackProject(self.os_creds, self.project_settings) + self.project_creator = OpenStackProject(self.os_creds, + self.project_settings) created_project = self.project_creator.create() self.assertIsNotNone(created_project) - retrieved_project = keystone_utils.get_project(keystone=self.keystone, project_name=self.project_settings.name) + retrieved_project = keystone_utils.get_project( + keystone=self.keystone, project_name=self.project_settings.name) self.assertIsNotNone(retrieved_project) self.assertEqual(created_project, retrieved_project) def test_create_project_2x(self): """ - Tests the creation of an OpenStack project twice to ensure it only creates one. + Tests the creation of an OpenStack project twice to ensure it only + creates one. """ - self.project_creator = OpenStackProject(self.os_creds, self.project_settings) + self.project_creator = OpenStackProject(self.os_creds, + self.project_settings) created_project = self.project_creator.create() self.assertIsNotNone(created_project) - retrieved_project = keystone_utils.get_project(keystone=self.keystone, project_name=self.project_settings.name) + retrieved_project = keystone_utils.get_project( + keystone=self.keystone, project_name=self.project_settings.name) self.assertIsNotNone(retrieved_project) self.assertEqual(created_project, retrieved_project) - project2 = OpenStackProject(self.os_creds, self.project_settings).create() + project2 = OpenStackProject(self.os_creds, + self.project_settings).create() self.assertEqual(retrieved_project, project2) def test_create_delete_project(self): """ - Tests the creation of an OpenStack project, it's deletion, then cleanup. + Tests the creation of an OpenStack project, it's deletion, then cleanup """ # Create Image - self.project_creator = OpenStackProject(self.os_creds, self.project_settings) + self.project_creator = OpenStackProject(self.os_creds, + self.project_settings) created_project = self.project_creator.create() self.assertIsNotNone(created_project) @@ -146,8 +156,8 @@ class CreateProjectUserTests(OSComponentTestCase): def setUp(self): """ - Instantiates the CreateImage object that is responsible for downloading and creating an OS image file - within OpenStack + Instantiates the CreateImage object that is responsible for downloading + and creating an OS image file within OpenStack """ guid = str(uuid.uuid4())[:-19] self.guid = self.__class__.__name__ + '-' + guid @@ -176,61 +186,79 @@ class CreateProjectUserTests(OSComponentTestCase): def test_create_project_sec_grp_one_user(self): """ - Tests the creation of an OpenStack object to a project with a new users and to create a security group + Tests the creation of an OpenStack object to a project with a new users + and to create a security group """ - self.project_creator = OpenStackProject(self.os_creds, self.project_settings) + self.project_creator = OpenStackProject(self.os_creds, + self.project_settings) created_project = self.project_creator.create() self.assertIsNotNone(created_project) - user_creator = OpenStackUser(self.os_creds, UserSettings(name=self.guid + '-user', password=self.guid)) + user_creator = OpenStackUser(self.os_creds, + UserSettings(name=self.guid + '-user', + password=self.guid)) self.project_creator.assoc_user(user_creator.create()) self.user_creators.append(user_creator) - sec_grp_os_creds = user_creator.get_os_creds(self.project_creator.get_project().name) + sec_grp_os_creds = user_creator.get_os_creds( + self.project_creator.get_project().name) sec_grp_creator = OpenStackSecurityGroup( - sec_grp_os_creds, SecurityGroupSettings(name=self.guid + '-name', description='hello group')) + sec_grp_os_creds, SecurityGroupSettings(name=self.guid + '-name', + description='hello group')) sec_grp = sec_grp_creator.create() self.assertIsNotNone(sec_grp) self.sec_grp_creators.append(sec_grp_creator) if 'tenant_id' in sec_grp['security_group']: - self.assertEqual(self.project_creator.get_project().id, sec_grp['security_group']['tenant_id']) + self.assertEqual(self.project_creator.get_project().id, + sec_grp['security_group']['tenant_id']) elif 'project_id' in sec_grp['security_group']: - self.assertEqual(self.project_creator.get_project().id, sec_grp['security_group']['project_id']) + self.assertEqual(self.project_creator.get_project().id, + sec_grp['security_group']['project_id']) else: self.fail('Cannot locate the project or tenant ID') def test_create_project_sec_grp_two_users(self): """ - Tests the creation of an OpenStack object to a project with two new users and use each user to create a - security group + Tests the creation of an OpenStack object to a project with two new + users and use each user to create a security group """ - self.project_creator = OpenStackProject(self.os_creds, self.project_settings) + self.project_creator = OpenStackProject(self.os_creds, + self.project_settings) created_project = self.project_creator.create() self.assertIsNotNone(created_project) - user_creator_1 = OpenStackUser(self.os_creds, UserSettings(name=self.guid + '-user1', password=self.guid)) + user_creator_1 = OpenStackUser(self.os_creds, + UserSettings(name=self.guid + '-user1', + password=self.guid)) self.project_creator.assoc_user(user_creator_1.create()) self.user_creators.append(user_creator_1) - user_creator_2 = OpenStackUser(self.os_creds, UserSettings(name=self.guid + '-user2', password=self.guid)) + user_creator_2 = OpenStackUser(self.os_creds, + UserSettings(name=self.guid + '-user2', + password=self.guid)) self.project_creator.assoc_user(user_creator_2.create()) self.user_creators.append(user_creator_2) ctr = 0 for user_creator in self.user_creators: ctr += 1 - sec_grp_os_creds = user_creator.get_os_creds(self.project_creator.get_project().name) + sec_grp_os_creds = user_creator.get_os_creds( + self.project_creator.get_project().name) sec_grp_creator = OpenStackSecurityGroup( - sec_grp_os_creds, SecurityGroupSettings(name=self.guid + '-name', description='hello group')) + sec_grp_os_creds, + SecurityGroupSettings(name=self.guid + '-name', + description='hello group')) sec_grp = sec_grp_creator.create() self.assertIsNotNone(sec_grp) self.sec_grp_creators.append(sec_grp_creator) if 'tenant_id' in sec_grp['security_group']: - self.assertEqual(self.project_creator.get_project().id, sec_grp['security_group']['tenant_id']) + self.assertEqual(self.project_creator.get_project().id, + sec_grp['security_group']['tenant_id']) elif 'project_id' in sec_grp['security_group']: - self.assertEqual(self.project_creator.get_project().id, sec_grp['security_group']['project_id']) + self.assertEqual(self.project_creator.get_project().id, + sec_grp['security_group']['project_id']) else: self.fail('Cannot locate the project or tenant ID') -- cgit 1.2.3-korg