Changes to ProjectSettings constructors to use kwargs. 57/36257/1
authorspisarski <s.pisarski@cablelabs.com>
Tue, 20 Jun 2017 16:04:04 +0000 (10:04 -0600)
committerspisarski <s.pisarski@cablelabs.com>
Tue, 20 Jun 2017 16:04:04 +0000 (10:04 -0600)
And changed line lengths to 79 for pep8

Change-Id: I3ea32e221608d759466973071dd86f9037ad2996
Signed-off-by: spisarski <s.pisarski@cablelabs.com>
snaps/openstack/create_project.py
snaps/openstack/tests/create_project_tests.py

index b60d396..8d72fdb 100644 (file)
@@ -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")
index ede8b4b..068ab95 100644 (file)
@@ -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')