Changes FlavorSettings constructor to use kwargs. 03/36203/1
authorspisarski <s.pisarski@cablelabs.com>
Mon, 19 Jun 2017 16:39:48 +0000 (10:39 -0600)
committerspisarski <s.pisarski@cablelabs.com>
Mon, 19 Jun 2017 16:39:48 +0000 (10:39 -0600)
And changed line lengths to 79 for pep8.

JIRA: SNAPS-95

Change-Id: Icd3ac79c66049b596c14273abb146d957d6e4e67
Signed-off-by: spisarski <s.pisarski@cablelabs.com>
snaps/openstack/create_flavor.py
snaps/openstack/tests/create_flavor_tests.py

index 2d78be4..f1c7ee3 100644 (file)
@@ -46,18 +46,23 @@ class OpenStackFlavor:
     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
+                        or not
         :return: The OpenStack flavor object
         """
         self.__nova = nova_utils.nova_client(self.__os_creds)
-        self.__flavor = nova_utils.get_flavor_by_name(self.__nova, self.flavor_settings.name)
+        self.__flavor = nova_utils.get_flavor_by_name(
+            self.__nova, self.flavor_settings.name)
         if self.__flavor:
-            logger.info('Found flavor with name - ' + self.flavor_settings.name)
+            logger.info(
+                'Found flavor with name - ' + self.flavor_settings.name)
         elif not cleanup:
-            self.__flavor = nova_utils.create_flavor(self.__nova, self.flavor_settings)
+            self.__flavor = nova_utils.create_flavor(
+                self.__nova, self.flavor_settings)
             if self.flavor_settings.metadata:
                 self.__flavor.set_keys(self.flavor_settings.metadata)
-            self.__flavor = nova_utils.get_flavor_by_name(self.__nova, self.flavor_settings.name)
+            self.__flavor = nova_utils.get_flavor_by_name(
+                self.__nova, self.flavor_settings.name)
         else:
             logger.info('Did not create flavor due to cleanup mode')
 
@@ -89,12 +94,12 @@ class FlavorSettings:
     Configuration settings for OpenStack flavor creation
     """
 
-    def __init__(self, config=None, name=None, flavor_id='auto', ram=None, disk=None, vcpus=None, ephemeral=0, swap=0,
-                 rxtx_factor=1.0, is_public=True, metadata=None):
+    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 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 flavor's name (required)
         :param flavor_id: the string ID (default 'auto')
         :param ram: the required RAM in MB (required)
@@ -102,62 +107,52 @@ class FlavorSettings:
         :param vcpus: the number of virtual CPUs (required)
         :param ephemeral: the size of the ephemeral disk in GB (default 0)
         :param swap: the size of the dedicated swap disk in GB (default 0)
-        :param rxtx_factor: the receive/transmit factor to be set on ports if backend supports
-                            QoS extension (default 1.0)
-        :param is_public: denotes whether or not the flavor is public (default True)
-        :param metadata: freeform dict() for special metadata (default hw:mem_page_size=any)
+        :param rxtx_factor: the receive/transmit factor to be set on ports if
+                            backend supports QoS extension (default 1.0)
+        :param is_public: denotes whether or not the flavor is public
+                          (default True)
+        :param metadata: freeform dict() for special metadata
         """
+        self.name = kwargs.get('name')
 
-        if config:
-            self.name = config.get('name')
-
-            if config.get('flavor_id'):
-                self.flavor_id = config['flavor_id']
-            else:
-                self.flavor_id = flavor_id
-
-            self.ram = config.get('ram')
-            self.disk = config.get('disk')
-            self.vcpus = config.get('vcpus')
-
-            if config.get('ephemeral'):
-                self.ephemeral = config['ephemeral']
-            else:
-                self.ephemeral = ephemeral
-
-            if config.get('swap'):
-                self.swap = config['swap']
-            else:
-                self.swap = swap
-
-            if config.get('rxtx_factor'):
-                self.rxtx_factor = config['rxtx_factor']
-            else:
-                self.rxtx_factor = rxtx_factor
-
-            if config.get('is_public') is not None:
-                self.is_public = config['is_public']
-            else:
-                self.is_public = is_public
-
-            if config.get('metadata'):
-                self.metadata = config['metadata']
-            else:
-                self.metadata = metadata
+        if kwargs.get('flavor_id'):
+            self.flavor_id = kwargs['flavor_id']
         else:
-            self.name = name
-            self.flavor_id = flavor_id
-            self.ram = ram
-            self.disk = disk
-            self.vcpus = vcpus
-            self.ephemeral = ephemeral
-            self.swap = swap
-            self.rxtx_factor = rxtx_factor
-            self.is_public = is_public
-            self.metadata = metadata
+            self.flavor_id = 'auto'
+
+        self.ram = kwargs.get('ram')
+        self.disk = kwargs.get('disk')
+        self.vcpus = kwargs.get('vcpus')
+
+        if kwargs.get('ephemeral'):
+            self.ephemeral = kwargs['ephemeral']
+        else:
+            self.ephemeral = 0
+
+        if kwargs.get('swap'):
+            self.swap = kwargs['swap']
+        else:
+            self.swap = 0
+
+        if kwargs.get('rxtx_factor'):
+            self.rxtx_factor = kwargs['rxtx_factor']
+        else:
+            self.rxtx_factor = 1.0
+
+        if kwargs.get('is_public') is not None:
+            self.is_public = kwargs['is_public']
+        else:
+            self.is_public = True
+
+        if kwargs.get('metadata'):
+            self.metadata = kwargs['metadata']
+        else:
+            self.metadata = None
 
         if not self.name or not self.ram or not self.disk or not self.vcpus:
-            raise Exception('The attributes name, ram, disk, and vcpus are required for FlavorSettings')
+            raise Exception(
+                'The attributes name, ram, disk, and vcpus are required for'
+                'FlavorSettings')
 
         if not isinstance(self.ram, int):
             raise Exception('The ram attribute must be a integer')
@@ -175,7 +170,8 @@ class FlavorSettings:
             raise Exception('The swap attribute must be an integer')
 
         if self.rxtx_factor and not isinstance(self.rxtx_factor, (int, float)):
-            raise Exception('The is_public attribute must be an integer or float')
+            raise Exception(
+                'The is_public attribute must be an integer or float')
 
         if self.is_public and not isinstance(self.is_public, bool):
             raise Exception('The is_public attribute must be a boolean')
index be7ac64..5d7e4c4 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_flavor import FlavorSettings, OpenStackFlavor
 from snaps.openstack.tests.os_source_file_test import OSComponentTestCase
@@ -61,107 +61,140 @@ class FlavorSettingsUnitTests(unittest.TestCase):
 
     def test_ram_string(self):
         with self.assertRaises(Exception):
-            FlavorSettings(name='foo', ram='bar', disk=2, vcpus=3, ephemeral=4, swap=5, rxtx_factor=6.0,
+            FlavorSettings(name='foo', ram='bar', disk=2, vcpus=3, ephemeral=4,
+                           swap=5, rxtx_factor=6.0,
                            is_public=False)
 
     def test_config_ram_string(self):
         with self.assertRaises(Exception):
-            FlavorSettings(config={'name': 'foo', 'ram': 'bar', 'disk': 2, 'vcpus': 3, 'ephemeral': 4, 'swap': 5,
-                                   'rxtx_factor': 6.0, 'is_public': False})
+            FlavorSettings(
+                config={'name': 'foo', 'ram': 'bar', 'disk': 2, 'vcpus': 3,
+                        'ephemeral': 4, 'swap': 5,
+                        'rxtx_factor': 6.0, 'is_public': False})
 
     def test_ram_float(self):
         with self.assertRaises(Exception):
-            FlavorSettings(name='foo', ram=1.5, disk=2, vcpus=3, ephemeral=4, swap=5, rxtx_factor=6.0, is_public=False)
+            FlavorSettings(name='foo', ram=1.5, disk=2, vcpus=3, ephemeral=4,
+                           swap=5, rxtx_factor=6.0, is_public=False)
 
     def test_config_ram_float(self):
         with self.assertRaises(Exception):
-            FlavorSettings(config={'name': 'foo', 'ram': 1.5, 'disk': 2, 'vcpus': 3, 'ephemeral': 4, 'swap': 5,
-                                   'rxtx_factor': 6.0, 'is_public': False})
+            FlavorSettings(
+                config={'name': 'foo', 'ram': 1.5, 'disk': 2, 'vcpus': 3,
+                        'ephemeral': 4, 'swap': 5,
+                        'rxtx_factor': 6.0, 'is_public': False})
 
     def test_disk_string(self):
         with self.assertRaises(Exception):
-            FlavorSettings(name='foo', ram=1, disk='bar', vcpus=3, ephemeral=4, swap=5, rxtx_factor=6.0,
+            FlavorSettings(name='foo', ram=1, disk='bar', vcpus=3, ephemeral=4,
+                           swap=5, rxtx_factor=6.0,
                            is_public=False)
 
     def test_config_disk_string(self):
         with self.assertRaises(Exception):
-            FlavorSettings(config={'name': 'foo', 'ram': 1, 'disk': 'bar', 'vcpus': 3, 'ephemeral': 4, 'swap': 5,
-                                   'rxtx_factor': 6.0, 'is_public': False})
+            FlavorSettings(
+                config={'name': 'foo', 'ram': 1, 'disk': 'bar', 'vcpus': 3,
+                        'ephemeral': 4, 'swap': 5,
+                        'rxtx_factor': 6.0, 'is_public': False})
 
     def test_disk_float(self):
         with self.assertRaises(Exception):
-            FlavorSettings(name='foo', ram=1, disk=2.5, vcpus=3, ephemeral=4, swap=5, rxtx_factor=6.0, is_public=False)
+            FlavorSettings(name='foo', ram=1, disk=2.5, vcpus=3, ephemeral=4,
+                           swap=5, rxtx_factor=6.0, is_public=False)
 
     def test_config_disk_float(self):
         with self.assertRaises(Exception):
-            FlavorSettings(config={'name': 'foo', 'ram': 1, 'disk': 2.5, 'vcpus': 3, 'ephemeral': 4, 'swap': 5,
-                                   'rxtx_factor': 6.0, 'is_public': False})
+            FlavorSettings(
+                config={'name': 'foo', 'ram': 1, 'disk': 2.5, 'vcpus': 3,
+                        'ephemeral': 4, 'swap': 5,
+                        'rxtx_factor': 6.0, 'is_public': False})
 
     def test_vcpus_string(self):
         with self.assertRaises(Exception):
-            FlavorSettings(name='foo', ram=1, disk=2, vcpus='bar', ephemeral=4, swap=5, rxtx_factor=6.0,
+            FlavorSettings(name='foo', ram=1, disk=2, vcpus='bar', ephemeral=4,
+                           swap=5, rxtx_factor=6.0,
                            is_public=False)
 
     def test_config_vcpus_string(self):
         with self.assertRaises(Exception):
-            FlavorSettings(config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 'bar', 'ephemeral': 4, 'swap': 5,
-                                   'rxtx_factor': 6.0, 'is_public': False})
+            FlavorSettings(
+                config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 'bar',
+                        'ephemeral': 4, 'swap': 5,
+                        'rxtx_factor': 6.0, 'is_public': False})
 
     def test_ephemeral_string(self):
         with self.assertRaises(Exception):
-            FlavorSettings(name='foo', ram=1, disk=2, vcpus=3, ephemeral='bar', swap=5, rxtx_factor=6.0,
+            FlavorSettings(name='foo', ram=1, disk=2, vcpus=3, ephemeral='bar',
+                           swap=5, rxtx_factor=6.0,
                            is_public=False)
 
     def test_config_ephemeral_string(self):
         with self.assertRaises(Exception):
-            FlavorSettings(config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3, 'ephemeral': 'bar', 'swap': 5,
-                                   'rxtx_factor': 6.0, 'is_public': False})
+            FlavorSettings(
+                config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3,
+                        'ephemeral': 'bar', 'swap': 5,
+                        'rxtx_factor': 6.0, 'is_public': False})
 
     def test_ephemeral_float(self):
         with self.assertRaises(Exception):
-            FlavorSettings(name='foo', ram=1, disk=2, vcpus=3, ephemeral=4.5, swap=5, rxtx_factor=6.0, is_public=False)
+            FlavorSettings(name='foo', ram=1, disk=2, vcpus=3, ephemeral=4.5,
+                           swap=5, rxtx_factor=6.0, is_public=False)
 
     def test_config_ephemeral_float(self):
         with self.assertRaises(Exception):
-            FlavorSettings(config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3, 'ephemeral': 4.5, 'swap': 5,
-                                   'rxtx_factor': 6.0, 'is_public': False})
+            FlavorSettings(
+                config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3,
+                        'ephemeral': 4.5, 'swap': 5,
+                        'rxtx_factor': 6.0, 'is_public': False})
 
     def test_swap_string(self):
         with self.assertRaises(Exception):
-            FlavorSettings(name='foo', ram=1, disk=2, vcpus=3, ephemeral=4, swap='bar', rxtx_factor=6.0,
+            FlavorSettings(name='foo', ram=1, disk=2, vcpus=3, ephemeral=4,
+                           swap='bar', rxtx_factor=6.0,
                            is_public=False)
 
     def test_config_swap_string(self):
         with self.assertRaises(Exception):
-            FlavorSettings(config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3, 'ephemeral': 4, 'swap': 'bar',
-                                   'rxtx_factor': 6.0, 'is_public': False})
+            FlavorSettings(
+                config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3,
+                        'ephemeral': 4, 'swap': 'bar',
+                        'rxtx_factor': 6.0, 'is_public': False})
 
     def test_swap_float(self):
         with self.assertRaises(Exception):
-            FlavorSettings(name='foo', ram=1, disk=2, vcpus=3, ephemeral=4, swap=5.5, rxtx_factor=6.0, is_public=False)
+            FlavorSettings(name='foo', ram=1, disk=2, vcpus=3, ephemeral=4,
+                           swap=5.5, rxtx_factor=6.0, is_public=False)
 
     def test_config_swap_float(self):
         with self.assertRaises(Exception):
-            FlavorSettings(config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3, 'ephemeral': 4, 'swap': 5.5,
-                                   'rxtx_factor': 6.0, 'is_public': False})
+            FlavorSettings(
+                config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3,
+                        'ephemeral': 4, 'swap': 5.5,
+                        'rxtx_factor': 6.0, 'is_public': False})
 
     def test_rxtx_string(self):
         with self.assertRaises(Exception):
-            FlavorSettings(name='foo', ram=1, disk=2, vcpus=3, ephemeral=4, swap=5, rxtx_factor='bar', is_public=False)
+            FlavorSettings(name='foo', ram=1, disk=2, vcpus=3, ephemeral=4,
+                           swap=5, rxtx_factor='bar', is_public=False)
 
     def test_config_rxtx_string(self):
         with self.assertRaises(Exception):
-            FlavorSettings(config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3, 'ephemeral': 4, 'swap': 5,
-                                   'rxtx_factor': 'bar', 'is_public': False})
+            FlavorSettings(
+                config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3,
+                        'ephemeral': 4, 'swap': 5,
+                        'rxtx_factor': 'bar', 'is_public': False})
 
     def test_is_pub_string(self):
         with self.assertRaises(Exception):
-            FlavorSettings(name='foo', ram=1, disk=2, vcpus=3, ephemeral=4, swap=5, rxtx_factor=6.0, is_public='bar')
+            FlavorSettings(name='foo', ram=1, disk=2, vcpus=3, ephemeral=4,
+                           swap=5, rxtx_factor=6.0, is_public='bar')
 
     def test_config_is_pub_string(self):
         with self.assertRaises(Exception):
-            FlavorSettings(config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3, 'ephemeral': 4, 'swap': 5,
-                                   'rxtx_factor': 6.0, 'is_public': 'bar'})
+            FlavorSettings(
+                config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3,
+                        'ephemeral': 4, 'swap': 5,
+                        'rxtx_factor': 6.0, 'is_public': 'bar'})
 
     def test_name_ram_disk_vcpus_only(self):
         settings = FlavorSettings(name='foo', ram=1, disk=2, vcpus=3)
@@ -177,7 +210,8 @@ class FlavorSettingsUnitTests(unittest.TestCase):
         self.assertEqual(None, settings.metadata)
 
     def test_config_with_name_ram_disk_vcpus_only(self):
-        settings = FlavorSettings(config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3})
+        settings = FlavorSettings(
+            **{'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3})
         self.assertEqual('foo', settings.name)
         self.assertEqual('auto', settings.flavor_id)
         self.assertEqual(1, settings.ram)
@@ -191,8 +225,9 @@ class FlavorSettingsUnitTests(unittest.TestCase):
 
     def test_all(self):
         metadata = {'foo': 'bar'}
-        settings = FlavorSettings(name='foo', flavor_id='bar', ram=1, disk=2, vcpus=3, ephemeral=4, swap=5,
-                                  rxtx_factor=6.0, is_public=False, metadata=metadata)
+        settings = FlavorSettings(
+            name='foo', flavor_id='bar', ram=1, disk=2, vcpus=3, ephemeral=4,
+            swap=5, rxtx_factor=6.0, is_public=False, metadata=metadata)
         self.assertEqual('foo', settings.name)
         self.assertEqual('bar', settings.flavor_id)
         self.assertEqual(1, settings.ram)
@@ -206,9 +241,12 @@ class FlavorSettingsUnitTests(unittest.TestCase):
 
     def test_config_all(self):
         metadata = {'foo': 'bar'}
-        settings = FlavorSettings(config={'name': 'foo', 'flavor_id': 'bar', 'ram': 1, 'disk': 2, 'vcpus': 3,
-                                          'ephemeral': 4, 'swap': 5, 'rxtx_factor': 6.0, 'is_public': False,
-                                          'metadata': metadata})
+        settings = FlavorSettings(
+            **{'name': 'foo', 'flavor_id': 'bar', 'ram': 1, 'disk': 2,
+               'vcpus': 3,
+               'ephemeral': 4, 'swap': 5, 'rxtx_factor': 6.0,
+               'is_public': False,
+               'metadata': metadata})
         self.assertEqual('foo', settings.name)
         self.assertEqual('bar', settings.flavor_id)
         self.assertEqual(1, settings.ram)
@@ -228,8 +266,8 @@ class CreateFlavorTests(OSComponentTestCase):
 
     def setUp(self):
         """
-        Instantiates the CreateSecurityGroup object that is responsible for downloading and creating an OS image file
-        within OpenStack
+        Instantiates the CreateSecurityGroup object that is responsible for
+        downloading and creating an OS image file within OpenStack
         """
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
         self.flavor_name = guid + 'name'
@@ -251,17 +289,20 @@ class CreateFlavorTests(OSComponentTestCase):
         Tests the creation of an OpenStack flavor.
         """
         # Create Flavor
-        flavor_settings = FlavorSettings(name=self.flavor_name, ram=1, disk=1, vcpus=1)
+        flavor_settings = FlavorSettings(name=self.flavor_name, ram=1, disk=1,
+                                         vcpus=1)
         self.flavor_creator = OpenStackFlavor(self.os_creds, flavor_settings)
         flavor = self.flavor_creator.create()
         self.assertTrue(validate_flavor(flavor_settings, flavor))
 
     def test_create_flavor_existing(self):
         """
-        Tests the creation of an OpenStack flavor then starts another creator to ensure it has not been done twice.
+        Tests the creation of an OpenStack flavor then starts another creator
+        to ensure it has not been done twice.
         """
         # Create Flavor
-        flavor_settings = FlavorSettings(name=self.flavor_name, ram=1, disk=1, vcpus=1)
+        flavor_settings = FlavorSettings(name=self.flavor_name, ram=1, disk=1,
+                                         vcpus=1)
         self.flavor_creator = OpenStackFlavor(self.os_creds, flavor_settings)
         flavor = self.flavor_creator.create()
         self.assertTrue(validate_flavor(flavor_settings, flavor))
@@ -276,7 +317,8 @@ class CreateFlavorTests(OSComponentTestCase):
         Tests the creation and cleanup of an OpenStack flavor.
         """
         # Create Flavor
-        flavor_settings = FlavorSettings(name=self.flavor_name, ram=1, disk=1, vcpus=1)
+        flavor_settings = FlavorSettings(name=self.flavor_name, ram=1, disk=1,
+                                         vcpus=1)
         self.flavor_creator = OpenStackFlavor(self.os_creds, flavor_settings)
         flavor = self.flavor_creator.create()
         self.assertTrue(validate_flavor(flavor_settings, flavor))
@@ -285,22 +327,26 @@ class CreateFlavorTests(OSComponentTestCase):
         self.flavor_creator.clean()
 
         self.assertIsNone(self.flavor_creator.get_flavor())
-        self.assertIsNone(nova_utils.get_flavor_by_name(self.nova, flavor_settings.name))
+        self.assertIsNone(
+            nova_utils.get_flavor_by_name(self.nova, flavor_settings.name))
 
     def test_create_delete_flavor(self):
         """
-        Tests the creation of an OpenStack Security Group, the deletion, then cleanup to ensure clean() does not
+        Tests the creation of an OpenStack Security Group, the deletion, then
+        cleanup to ensure clean() does not
         raise any exceptions.
         """
         # Create Flavor
-        flavor_settings = FlavorSettings(name=self.flavor_name, ram=1, disk=1, vcpus=1)
+        flavor_settings = FlavorSettings(name=self.flavor_name, ram=1, disk=1,
+                                         vcpus=1)
         self.flavor_creator = OpenStackFlavor(self.os_creds, flavor_settings)
         flavor = self.flavor_creator.create()
         self.assertTrue(validate_flavor(flavor_settings, flavor))
 
         # Delete Flavor
         nova_utils.delete_flavor(self.nova, flavor)
-        self.assertIsNone(nova_utils.get_flavor_by_name(self.nova, flavor_settings.name))
+        self.assertIsNone(
+            nova_utils.get_flavor_by_name(self.nova, flavor_settings.name))
 
         # Attempt to cleanup
         self.flavor_creator.clean()
@@ -317,7 +363,7 @@ def validate_flavor(flavor_settings, flavor):
     :param flavor: the OpenStack flavor object
     """
     return flavor is not None \
-           and flavor_settings.name == flavor.name \
-           and flavor_settings.ram == flavor.ram \
-           and flavor_settings.disk == flavor.disk \
-           and flavor_settings.vcpus == flavor.vcpus
+        and flavor_settings.name == flavor.name \
+        and flavor_settings.ram == flavor.ram \
+        and flavor_settings.disk == flavor.disk \
+        and flavor_settings.vcpus == flavor.vcpus