Refactoring of FlavorSettings to extend FlavorConfig 83/47383/2
authorspisarski <s.pisarski@cablelabs.com>
Fri, 17 Nov 2017 01:26:13 +0000 (18:26 -0700)
committerspisarski <s.pisarski@cablelabs.com>
Mon, 20 Nov 2017 14:32:31 +0000 (07:32 -0700)
FlavorSettings and glance_utils have a runtime cyclical
dependency. This patch reduces this dependency and
deprecates the FlavorSettings class.

JIRA: SNAPS-216

Change-Id: Ie9532fcbe16377d4ab608bdacd1982c3c6628fe9
Signed-off-by: spisarski <s.pisarski@cablelabs.com>
19 files changed:
docs/how-to-use/LibraryUsage.rst
docs/how-to-use/UnitTests.rst
examples/demo.py
examples/launch.py
snaps/config/__init__.py
snaps/config/flavor.py [new file with mode: 0644]
snaps/config/tests/__init__.py
snaps/config/tests/flavor_tests.py [new file with mode: 0644]
snaps/openstack/create_flavor.py
snaps/openstack/create_stack.py
snaps/openstack/tests/create_flavor_tests.py
snaps/openstack/tests/create_instance_tests.py
snaps/openstack/tests/create_stack_tests.py
snaps/openstack/utils/settings_utils.py
snaps/openstack/utils/tests/heat_utils_tests.py
snaps/openstack/utils/tests/nova_utils_tests.py
snaps/openstack/utils/tests/settings_utils_tests.py
snaps/provisioning/tests/ansible_utils_tests.py
snaps/test_suite_builder.py

index a842be0..c6b40a1 100644 (file)
@@ -138,7 +138,7 @@ Create Flavor
 -------------
 -  FlavorĀ - snaps.openstack.create\_flavor.OpenStackFlavor
 
-   -  snaps.openstack.create\_flavor.FlavorSettings
+   -  snaps.config.flavor.FlavorConfig
 
       -  name - the flavor name (required)
       -  flavor\_id - the flavor's string ID (default='auto')
@@ -155,8 +155,9 @@ Create Flavor
 
 .. code:: python
 
-    from snaps.openstack.create_flavor import FlavorSettings, OpenStackFlavor
-    flavor_settings = FlavorSettings(name='flavor-name', ram=4, disk=10, vcpus=2)
+    from snaps.config.flavor import FlavorConfig
+    from snaps.openstack.create_flavor import OpenStackFlavor
+    flavor_settings = FlavorConfig(name='flavor-name', ram=4, disk=10, vcpus=2)
     flavor_creator = OpenStackFlavor(os_creds, flavor_settings)
     flavor_creator.create()
 
index e6b95ab..398a08e 100644 (file)
@@ -78,11 +78,17 @@ ImageDomainObjectTests
 Ensures that all required members are included when constructing a
 Image domain object
 
+FlavorConfigUnitTests
+---------------------
+
+Ensures that all required members are included when constructing a
+FlavorConfig object
+
 FlavorSettingsUnitTests
 -----------------------
 
 Ensures that all required members are included when constructing a
-FlavorSettings object
+deprecated FlavorSettings object
 
 FlavorDomainObjectTests
 -----------------------
@@ -310,6 +316,6 @@ snaps.domain.VolumeType object to a
 snaps.openstack.create_volume.VolumeSettings object
 
 
-Ensures that the settings_utils.py#create_flavor_settings() function properly
+Ensures that the settings_utils.py#create_flavor_config() function properly
 maps a snaps.domain.Flavor object correctly to a
-snaps.openstack.create_flavor.FlavorSettings object
\ No newline at end of file
+snaps.config.flavor.FlavorConfig object
\ No newline at end of file
index faf6459..8837bd2 100644 (file)
@@ -34,9 +34,10 @@ network.create()
 
 
 # Flavors
-from snaps.openstack.create_flavor import FlavorSettings, OpenStackFlavor
+from snaps.config.flavor import FlavorConfig
+from snaps.openstack.create_flavor import OpenStackFlavor
 
-flavor_settings = FlavorSettings(name='test-flavor', ram=256, disk=10, vcpus=2)
+flavor_settings = FlavorConfig(name='test-flavor', ram=256, disk=10, vcpus=2)
 flavor = OpenStackFlavor(os_creds, flavor_settings)
 flavor.create()
 
index debb52f..499d259 100644 (file)
@@ -26,9 +26,10 @@ import os
 import yaml
 
 from snaps import file_utils
-from snaps.openstack.create_flavor import FlavorSettings, OpenStackFlavor
-from snaps.openstack.create_image import OpenStackImage
+from snaps.config.flavor import FlavorConfig
 from snaps.config.image import ImageConfig
+from snaps.openstack.create_flavor import OpenStackFlavor
+from snaps.openstack.create_image import OpenStackImage
 from snaps.openstack.create_instance import VmInstanceSettings
 from snaps.openstack.create_keypairs import KeypairSettings, OpenStackKeypair
 from snaps.openstack.create_network import (
@@ -635,7 +636,7 @@ def main(arguments):
 
                 # Create flavors
                 flavors_dict = __create_instances(
-                    os_creds_dict, OpenStackFlavor, FlavorSettings,
+                    os_creds_dict, OpenStackFlavor, FlavorConfig,
                     os_config.get('flavors'), 'flavor', clean, users_dict)
                 creators.append(flavors_dict)
 
index fb7560b..271c742 100644 (file)
@@ -12,3 +12,4 @@
 # 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.
+__author__ = 'spisarski'
diff --git a/snaps/config/flavor.py b/snaps/config/flavor.py
new file mode 100644 (file)
index 0000000..b29fb7c
--- /dev/null
@@ -0,0 +1,107 @@
+# Copyright (c) 2016 Cable Television Laboratories, Inc. ("CableLabs")
+#                    and others.  All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# 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.
+
+
+class FlavorConfig(object):
+    """
+    Configuration settings for OpenStack flavor creation
+    """
+
+    def __init__(self, **kwargs):
+        """
+        Constructor
+        :param name: the flavor's name (required)
+        :param flavor_id: the string ID (default 'auto')
+        :param ram: the required RAM in MB (required)
+        :param disk: the size of the root disk in GB (required)
+        :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
+        """
+        self.name = kwargs.get('name')
+
+        if kwargs.get('flavor_id'):
+            self.flavor_id = kwargs['flavor_id']
+        else:
+            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 FlavorConfigError(
+                'The attributes name, ram, disk, and vcpus are required for'
+                'FlavorConfig')
+
+        if not isinstance(self.ram, int):
+            raise FlavorConfigError('The ram attribute must be a integer')
+
+        if not isinstance(self.disk, int):
+            raise FlavorConfigError('The ram attribute must be a integer')
+
+        if not isinstance(self.vcpus, int):
+            raise FlavorConfigError('The vcpus attribute must be a integer')
+
+        if self.ephemeral and not isinstance(self.ephemeral, int):
+            raise FlavorConfigError(
+                'The ephemeral attribute must be an integer')
+
+        if self.swap and not isinstance(self.swap, int):
+            raise FlavorConfigError('The swap attribute must be an integer')
+
+        if self.rxtx_factor and not isinstance(self.rxtx_factor, (int, float)):
+            raise FlavorConfigError(
+                'The is_public attribute must be an integer or float')
+
+        if self.is_public and not isinstance(self.is_public, bool):
+            raise FlavorConfigError(
+                'The is_public attribute must be a boolean')
+
+
+class FlavorConfigError(Exception):
+    """
+    Exception to be thrown when a flavor configuration is incorrect
+    """
index fb7560b..271c742 100644 (file)
@@ -12,3 +12,4 @@
 # 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.
+__author__ = 'spisarski'
diff --git a/snaps/config/tests/flavor_tests.py b/snaps/config/tests/flavor_tests.py
new file mode 100644 (file)
index 0000000..15cd99a
--- /dev/null
@@ -0,0 +1,254 @@
+# Copyright (c) 2017 Cable Television Laboratories, Inc. ("CableLabs")
+#                    and others.  All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# 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 unittest
+
+from snaps.config.flavor import FlavorConfig, FlavorConfigError
+
+
+class FlavorConfigUnitTests(unittest.TestCase):
+    """
+    Tests the construction of the FlavorConfig class
+    """
+
+    def test_no_params(self):
+        with self.assertRaises(FlavorConfigError):
+            FlavorConfig()
+
+    def test_empty_config(self):
+        with self.assertRaises(FlavorConfigError):
+            FlavorConfig(config=dict())
+
+    def test_name_only(self):
+        with self.assertRaises(FlavorConfigError):
+            FlavorConfig(name='foo')
+
+    def test_config_with_name_only(self):
+        with self.assertRaises(FlavorConfigError):
+            FlavorConfig(config={'name': 'foo'})
+
+    def test_name_ram_only(self):
+        with self.assertRaises(FlavorConfigError):
+            FlavorConfig(name='foo', ram=1)
+
+    def test_config_with_name_ram_only(self):
+        with self.assertRaises(FlavorConfigError):
+            FlavorConfig(config={'name': 'foo', 'ram': 1})
+
+    def test_name_ram_disk_only(self):
+        with self.assertRaises(FlavorConfigError):
+            FlavorConfig(name='foo', ram=1, disk=1)
+
+    def test_config_with_name_ram_disk_only(self):
+        with self.assertRaises(FlavorConfigError):
+            FlavorConfig(config={'name': 'foo', 'ram': 1, 'disk': 1})
+
+    def test_ram_string(self):
+        with self.assertRaises(FlavorConfigError):
+            FlavorConfig(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(FlavorConfigError):
+            FlavorConfig(
+                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(FlavorConfigError):
+            FlavorConfig(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(FlavorConfigError):
+            FlavorConfig(
+                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(FlavorConfigError):
+            FlavorConfig(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(FlavorConfigError):
+            FlavorConfig(
+                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(FlavorConfigError):
+            FlavorConfig(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(FlavorConfigError):
+            FlavorConfig(
+                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(FlavorConfigError):
+            FlavorConfig(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(FlavorConfigError):
+            FlavorConfig(
+                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(FlavorConfigError):
+            FlavorConfig(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(FlavorConfigError):
+            FlavorConfig(
+                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(FlavorConfigError):
+            FlavorConfig(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(FlavorConfigError):
+            FlavorConfig(
+                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(FlavorConfigError):
+            FlavorConfig(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(FlavorConfigError):
+            FlavorConfig(
+                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(FlavorConfigError):
+            FlavorConfig(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(FlavorConfigError):
+            FlavorConfig(
+                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(FlavorConfigError):
+            FlavorConfig(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(FlavorConfigError):
+            FlavorConfig(
+                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(FlavorConfigError):
+            FlavorConfig(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(FlavorConfigError):
+            FlavorConfig(
+                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 = FlavorConfig(name='foo', ram=1, disk=2, vcpus=3)
+        self.assertEqual('foo', settings.name)
+        self.assertEqual('auto', settings.flavor_id)
+        self.assertEqual(1, settings.ram)
+        self.assertEqual(2, settings.disk)
+        self.assertEqual(3, settings.vcpus)
+        self.assertEqual(0, settings.ephemeral)
+        self.assertEqual(0, settings.swap)
+        self.assertEqual(1.0, settings.rxtx_factor)
+        self.assertEqual(True, settings.is_public)
+        self.assertEqual(None, settings.metadata)
+
+    def test_config_with_name_ram_disk_vcpus_only(self):
+        settings = FlavorConfig(
+            **{'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3})
+        self.assertEqual('foo', settings.name)
+        self.assertEqual('auto', settings.flavor_id)
+        self.assertEqual(1, settings.ram)
+        self.assertEqual(2, settings.disk)
+        self.assertEqual(3, settings.vcpus)
+        self.assertEqual(0, settings.ephemeral)
+        self.assertEqual(0, settings.swap)
+        self.assertEqual(1.0, settings.rxtx_factor)
+        self.assertEqual(True, settings.is_public)
+        self.assertEqual(None, settings.metadata)
+
+    def test_all(self):
+        metadata = {'foo': 'bar'}
+        settings = FlavorConfig(
+            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)
+        self.assertEqual(2, settings.disk)
+        self.assertEqual(3, settings.vcpus)
+        self.assertEqual(4, settings.ephemeral)
+        self.assertEqual(5, settings.swap)
+        self.assertEqual(6.0, settings.rxtx_factor)
+        self.assertEqual(False, settings.is_public)
+        self.assertEqual(metadata, settings.metadata)
+
+    def test_config_all(self):
+        metadata = {'foo': 'bar'}
+        settings = FlavorConfig(
+            **{'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)
+        self.assertEqual(2, settings.disk)
+        self.assertEqual(3, settings.vcpus)
+        self.assertEqual(4, settings.ephemeral)
+        self.assertEqual(5, settings.swap)
+        self.assertEqual(6.0, settings.rxtx_factor)
+        self.assertEqual(False, settings.is_public)
+        self.assertEqual(metadata, settings.metadata)
index b428621..b866d43 100644 (file)
@@ -16,6 +16,7 @@ import logging
 
 from novaclient.exceptions import NotFound
 
+from snaps.config.flavor import FlavorConfig
 from snaps.openstack.openstack_creator import OpenStackComputeObject
 from snaps.openstack.utils import nova_utils
 
@@ -36,7 +37,7 @@ class OpenStackFlavor(OpenStackComputeObject):
         """
         Constructor
         :param os_creds: The OpenStack connection credentials
-        :param flavor_settings: The flavor settings
+        :param flavor_settings: a FlavorConfig instance
         :return:
         """
         super(self.__class__, self).__init__(os_creds)
@@ -96,94 +97,13 @@ class OpenStackFlavor(OpenStackComputeObject):
         return self.__flavor
 
 
-class FlavorSettings:
+class FlavorSettings(FlavorConfig):
     """
     Configuration settings for OpenStack flavor creation
     """
 
     def __init__(self, **kwargs):
-        """
-        Constructor
-        :param name: the flavor's name (required)
-        :param flavor_id: the string ID (default 'auto')
-        :param ram: the required RAM in MB (required)
-        :param disk: the size of the root disk in GB (required)
-        :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
-        """
-        self.name = kwargs.get('name')
-
-        if kwargs.get('flavor_id'):
-            self.flavor_id = kwargs['flavor_id']
-        else:
-            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 FlavorSettingsError(
-                'The attributes name, ram, disk, and vcpus are required for'
-                'FlavorSettings')
-
-        if not isinstance(self.ram, int):
-            raise FlavorSettingsError('The ram attribute must be a integer')
-
-        if not isinstance(self.disk, int):
-            raise FlavorSettingsError('The ram attribute must be a integer')
-
-        if not isinstance(self.vcpus, int):
-            raise FlavorSettingsError('The vcpus attribute must be a integer')
-
-        if self.ephemeral and not isinstance(self.ephemeral, int):
-            raise FlavorSettingsError(
-                'The ephemeral attribute must be an integer')
-
-        if self.swap and not isinstance(self.swap, int):
-            raise FlavorSettingsError('The swap attribute must be an integer')
-
-        if self.rxtx_factor and not isinstance(self.rxtx_factor, (int, float)):
-            raise FlavorSettingsError(
-                'The is_public attribute must be an integer or float')
-
-        if self.is_public and not isinstance(self.is_public, bool):
-            raise FlavorSettingsError(
-                'The is_public attribute must be a boolean')
-
-
-class FlavorSettingsError(Exception):
-    """
-    Exception to be thrown when an flavor settings are incorrect
-    """
+        from warnings import warn
+        warn('Use snaps.config.flavor.FlavorConfig instead',
+             DeprecationWarning)
+        super(self.__class__, self).__init__(**kwargs)
index 50d364d..aebe52a 100644 (file)
@@ -406,7 +406,7 @@ class OpenStackHeatStack(OpenStackCloudObject, object):
             self.__heat_cli, nova, self.__stack)
 
         for flavor in flavors:
-            settings = settings_utils.create_flavor_settings(flavor)
+            settings = settings_utils.create_flavor_config(flavor)
             creator = OpenStackFlavor(self._os_creds, settings)
             out.append(creator)
 
index 3eb07bd..f84355d 100644 (file)
@@ -15,9 +15,9 @@
 import unittest
 import uuid
 
+from snaps.config.flavor import FlavorConfig, FlavorConfigError
 from snaps.openstack import create_flavor
-from snaps.openstack.create_flavor import FlavorSettings, OpenStackFlavor, \
-    FlavorSettingsError
+from snaps.openstack.create_flavor import OpenStackFlavor, FlavorSettings
 from snaps.openstack.tests.os_source_file_test import OSComponentTestCase
 from snaps.openstack.utils import nova_utils
 
@@ -30,169 +30,169 @@ class FlavorSettingsUnitTests(unittest.TestCase):
     """
 
     def test_no_params(self):
-        with self.assertRaises(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             FlavorSettings()
 
     def test_empty_config(self):
-        with self.assertRaises(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             FlavorSettings(config=dict())
 
     def test_name_only(self):
-        with self.assertRaises(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             FlavorSettings(name='foo')
 
     def test_config_with_name_only(self):
-        with self.assertRaises(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             FlavorSettings(config={'name': 'foo'})
 
     def test_name_ram_only(self):
-        with self.assertRaises(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             FlavorSettings(name='foo', ram=1)
 
     def test_config_with_name_ram_only(self):
-        with self.assertRaises(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             FlavorSettings(config={'name': 'foo', 'ram': 1})
 
     def test_name_ram_disk_only(self):
-        with self.assertRaises(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             FlavorSettings(name='foo', ram=1, disk=1)
 
     def test_config_with_name_ram_disk_only(self):
-        with self.assertRaises(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             FlavorSettings(config={'name': 'foo', 'ram': 1, 'disk': 1})
 
     def test_ram_string(self):
-        with self.assertRaises(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             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(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             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(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             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(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             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(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             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(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             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(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             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(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             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(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             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(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             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(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             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(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             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(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             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(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             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(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             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(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             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(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             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(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             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(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             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(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             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(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             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(FlavorSettingsError):
+        with self.assertRaises(FlavorConfigError):
             FlavorSettings(
                 config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3,
                         'ephemeral': 4, 'swap': 5,
@@ -291,8 +291,8 @@ 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 = FlavorConfig(
+            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(self.nova, flavor_settings, flavor))
@@ -303,8 +303,8 @@ class CreateFlavorTests(OSComponentTestCase):
         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 = FlavorConfig(
+            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(self.nova, flavor_settings, flavor))
@@ -319,8 +319,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 = FlavorConfig(
+            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(self.nova, flavor_settings, flavor))
@@ -339,8 +339,8 @@ class CreateFlavorTests(OSComponentTestCase):
         raise any exceptions.
         """
         # Create Flavor
-        flavor_settings = FlavorSettings(name=self.flavor_name, ram=1, disk=1,
-                                         vcpus=1)
+        flavor_settings = FlavorConfig(
+            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(self.nova, flavor_settings, flavor))
@@ -362,7 +362,7 @@ class CreateFlavorTests(OSComponentTestCase):
         raise any exceptions.
         """
         # Create Flavor
-        flavor_settings = FlavorSettings(
+        flavor_settings = FlavorConfig(
             name=self.flavor_name, ram=1, disk=1, vcpus=1, ephemeral=2, swap=3,
             rxtx_factor=2.2, is_public=False,
             metadata=create_flavor.MEM_PAGE_SIZE_ANY)
index 1f50786..7d0c83a 100644 (file)
@@ -25,9 +25,10 @@ from novaclient.exceptions import BadRequest
 
 from snaps import file_utils
 from snaps.openstack import create_network, create_router
-from snaps.openstack.create_flavor import OpenStackFlavor, FlavorSettings
-from snaps.openstack.create_image import OpenStackImage
+from snaps.config.flavor import FlavorConfig
+from snaps.openstack.create_flavor import OpenStackFlavor
 from snaps.config.image import ImageConfig
+from snaps.openstack.create_image import OpenStackImage
 from snaps.openstack.create_instance import (
     VmInstanceSettings, OpenStackVmInstance, FloatingIpSettings,
     VmInstanceSettingsError, FloatingIpSettingsError)
@@ -322,8 +323,8 @@ class SimpleHealthCheck(OSIntegrationTestCase):
             # Create Flavor
             self.flavor_creator = OpenStackFlavor(
                 self.admin_os_creds,
-                FlavorSettings(name=guid + '-flavor-name', ram=256, disk=10,
-                               vcpus=1, metadata=self.flavor_metadata))
+                FlavorConfig(name=guid + '-flavor-name', ram=256, disk=10,
+                             vcpus=1, metadata=self.flavor_metadata))
             self.flavor_creator.create()
         except Exception as e:
             self.tearDown()
@@ -429,8 +430,8 @@ class CreateInstanceSimpleTests(OSIntegrationTestCase):
             # Create Flavor
             self.flavor_creator = OpenStackFlavor(
                 self.admin_os_creds,
-                FlavorSettings(name=guid + '-flavor-name', ram=256, disk=10,
-                               vcpus=2, metadata=self.flavor_metadata))
+                FlavorConfig(name=guid + '-flavor-name', ram=256, disk=10,
+                             vcpus=2, metadata=self.flavor_metadata))
             self.flavor_creator.create()
 
             # Create Network
@@ -567,8 +568,8 @@ class CreateInstanceSingleNetworkTests(OSIntegrationTestCase):
             # Create Flavor
             self.flavor_creator = OpenStackFlavor(
                 self.admin_os_creds,
-                FlavorSettings(name=guid + '-flavor-name', ram=256, disk=10,
-                               vcpus=2, metadata=self.flavor_metadata))
+                FlavorConfig(name=guid + '-flavor-name', ram=256, disk=10,
+                             vcpus=2, metadata=self.flavor_metadata))
             self.flavor_creator.create()
 
             self.keypair_creator = OpenStackKeypair(
@@ -845,7 +846,7 @@ class CreateInstanceIPv6NetworkTests(OSIntegrationTestCase):
 
             self.flavor_creator = OpenStackFlavor(
                 self.admin_os_creds,
-                FlavorSettings(
+                FlavorConfig(
                     name=self.guid + '-flavor-name', ram=256, disk=10, vcpus=2,
                     metadata=self.flavor_metadata))
             self.flavor_creator.create()
@@ -1075,8 +1076,8 @@ class CreateInstancePortManipulationTests(OSIntegrationTestCase):
             # Create Flavor
             self.flavor_creator = OpenStackFlavor(
                 self.admin_os_creds,
-                FlavorSettings(name=guid + '-flavor-name', ram=256, disk=10,
-                               vcpus=2, metadata=self.flavor_metadata))
+                FlavorConfig(name=guid + '-flavor-name', ram=256, disk=10,
+                             vcpus=2, metadata=self.flavor_metadata))
             self.flavor_creator.create()
         except Exception as e:
             self.tearDown()
@@ -1368,8 +1369,8 @@ class CreateInstanceOnComputeHost(OSIntegrationTestCase):
             # Create Flavor
             self.flavor_creator = OpenStackFlavor(
                 self.admin_os_creds,
-                FlavorSettings(name=guid + '-flavor-name', ram=512, disk=1,
-                               vcpus=1, metadata=self.flavor_metadata))
+                FlavorConfig(name=guid + '-flavor-name', ram=512, disk=1,
+                             vcpus=1, metadata=self.flavor_metadata))
             self.flavor_creator.create()
 
             # Create Image
@@ -1534,9 +1535,9 @@ class CreateInstancePubPrivNetTests(OSIntegrationTestCase):
             # Create Flavor
             self.flavor_creator = OpenStackFlavor(
                 self.admin_os_creds,
-                FlavorSettings(name=self.guid + '-flavor-name', ram=512,
-                               disk=10, vcpus=2,
-                               metadata=self.flavor_metadata))
+                FlavorConfig(name=self.guid + '-flavor-name', ram=512,
+                             disk=10, vcpus=2,
+                             metadata=self.flavor_metadata))
             self.flavor_creator.create()
 
             # Create Keypair
@@ -1730,9 +1731,9 @@ class InstanceSecurityGroupTests(OSIntegrationTestCase):
             # Create Flavor
             self.flavor_creator = OpenStackFlavor(
                 self.admin_os_creds,
-                FlavorSettings(name=self.guid + '-flavor-name', ram=256,
-                               disk=10, vcpus=2,
-                               metadata=self.flavor_metadata))
+                FlavorConfig(name=self.guid + '-flavor-name', ram=256,
+                             disk=10, vcpus=2,
+                             metadata=self.flavor_metadata))
             self.flavor_creator.create()
 
             self.port_settings = PortSettings(
@@ -2064,8 +2065,8 @@ class CreateInstanceFromThreePartImage(OSIntegrationTestCase):
             # Create Flavor
             self.flavor_creator = OpenStackFlavor(
                 self.admin_os_creds,
-                FlavorSettings(name=guid + '-flavor-name', ram=256, disk=10,
-                               vcpus=2, metadata=self.flavor_metadata))
+                FlavorConfig(name=guid + '-flavor-name', ram=256, disk=10,
+                             vcpus=2, metadata=self.flavor_metadata))
             self.flavor_creator.create()
 
             # Create Network
@@ -2185,7 +2186,7 @@ class CreateInstanceMockOfflineTests(OSComponentTestCase):
             # Create Flavor
             self.flavor_creator = OpenStackFlavor(
                 self.os_creds,
-                FlavorSettings(
+                FlavorConfig(
                     name=self.guid + '-flavor-name', ram=256, disk=10,
                     vcpus=1))
             self.flavor_creator.create()
@@ -2727,9 +2728,9 @@ class CreateInstanceTwoNetTests(OSIntegrationTestCase):
             # Create Flavor
             self.flavor_creator = OpenStackFlavor(
                 self.admin_os_creds,
-                FlavorSettings(name=self.guid + '-flavor-name', ram=512,
-                               disk=10, vcpus=2,
-                               metadata=self.flavor_metadata))
+                FlavorConfig(name=self.guid + '-flavor-name', ram=512,
+                             disk=10, vcpus=2,
+                             metadata=self.flavor_metadata))
             self.flavor_creator.create()
 
             sec_grp_name = self.guid + '-sec-grp'
@@ -2906,8 +2907,8 @@ class CreateInstanceVolumeTests(OSIntegrationTestCase):
             # Create Flavor
             self.flavor_creator = OpenStackFlavor(
                 self.admin_os_creds,
-                FlavorSettings(name=guid + '-flavor-name', ram=256, disk=1,
-                               vcpus=2, metadata=self.flavor_metadata))
+                FlavorConfig(name=guid + '-flavor-name', ram=256, disk=1,
+                             vcpus=2, metadata=self.flavor_metadata))
             self.flavor_creator.create()
 
             # Create Network
index 4400001..bc9cb2c 100644 (file)
@@ -18,9 +18,10 @@ import time
 import pkg_resources
 from heatclient.exc import HTTPBadRequest
 from snaps import file_utils
-from snaps.openstack.create_flavor import OpenStackFlavor, FlavorSettings
-from snaps.openstack.create_image import OpenStackImage
+from snaps.config.flavor import FlavorConfig
 from snaps.config.image import ImageConfig
+from snaps.openstack.create_flavor import OpenStackFlavor
+from snaps.openstack.create_image import OpenStackImage
 
 try:
     from urllib.request import URLError
@@ -149,8 +150,8 @@ class CreateStackSuccessTests(OSIntegrationTestCase):
         # Create Flavor
         self.flavor_creator = OpenStackFlavor(
             self.admin_os_creds,
-            FlavorSettings(name=self.guid + '-flavor-name', ram=256, disk=10,
-                           vcpus=1))
+            FlavorConfig(
+                name=self.guid + '-flavor-name', ram=256, disk=10, vcpus=1))
         self.flavor_creator.create()
 
         self.network_name = self.guid + '-net'
@@ -983,8 +984,9 @@ class CreateStackFailureTests(OSIntegrationTestCase):
         # Create Flavor
         self.flavor_creator = OpenStackFlavor(
             self.admin_os_creds,
-            FlavorSettings(name=self.guid + '-flavor-name', ram=256, disk=10,
-                           vcpus=1000000))
+            FlavorConfig(
+                name=self.guid + '-flavor-name', ram=256, disk=10,
+                vcpus=1000000))
         self.flavor_creator.create()
 
         self.network_name = self.guid + '-net'
index 2560b21..0619f15 100644 (file)
@@ -15,7 +15,7 @@
 import uuid
 
 from snaps import file_utils
-from snaps.openstack.create_flavor import FlavorSettings
+from snaps.config.flavor import FlavorConfig
 from snaps.openstack.create_instance import (
     VmInstanceSettings, FloatingIpSettings)
 from snaps.openstack.create_keypairs import KeypairSettings
@@ -191,12 +191,12 @@ def create_volume_type_settings(volume_type):
         qos_spec_name=qos_spec_name, public=volume_type.public)
 
 
-def create_flavor_settings(flavor):
+def create_flavor_config(flavor):
     """
     Returns a VolumeSettings object
     :param flavor: a SNAPS-OO Volume object
     """
-    return FlavorSettings(
+    return FlavorConfig(
         name=flavor.name, flavor_id=flavor.id, ram=flavor.ram,
         disk=flavor.disk, vcpus=flavor.vcpus, ephemeral=flavor.ephemeral,
         swap=flavor.swap, rxtx_factor=flavor.rxtx_factor,
index a219df6..d3d05a7 100644 (file)
@@ -20,8 +20,9 @@ import uuid
 
 import time
 
+from snaps.config.flavor import FlavorConfig
 from snaps.openstack import create_stack
-from snaps.openstack.create_flavor import OpenStackFlavor, FlavorSettings
+from snaps.openstack.create_flavor import OpenStackFlavor
 
 from snaps.openstack.create_image import OpenStackImage
 from snaps.openstack.create_instance import OpenStackVmInstance
@@ -96,7 +97,7 @@ class HeatUtilsCreateSimpleStackTests(OSComponentTestCase):
         # Create Flavor
         self.flavor_creator = OpenStackFlavor(
             self.os_creds,
-            FlavorSettings(name=guid + '-flavor', ram=256, disk=10, vcpus=1))
+            FlavorConfig(name=guid + '-flavor', ram=256, disk=10, vcpus=1))
         self.flavor_creator.create()
 
         env_values = {'image_name': self.image_creator.image_settings.name,
index e290c6e..0c313b9 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 import logging
+import time
 import uuid
 
 import os
-import time
 
 from snaps import file_utils
+from snaps.config.flavor import FlavorConfig
 from snaps.openstack import create_instance
-from snaps.openstack.create_flavor import FlavorSettings, OpenStackFlavor
+from snaps.openstack.create_flavor import OpenStackFlavor
 from snaps.openstack.create_image import OpenStackImage
 from snaps.openstack.create_instance import (
     VmInstanceSettings, OpenStackVmInstance)
@@ -159,11 +160,9 @@ class NovaUtilsFlavorTests(OSComponentTestCase):
         and creating an OS image file within OpenStack
         """
         guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
-        self.flavor_settings = FlavorSettings(name=guid + '-name',
-                                              flavor_id=guid + '-id', ram=1,
-                                              disk=1, vcpus=1,
-                                              ephemeral=1, swap=2,
-                                              rxtx_factor=3.0, is_public=False)
+        self.flavor_settings = FlavorConfig(
+            name=guid + '-name', flavor_id=guid + '-id', ram=1, disk=1,
+            vcpus=1, ephemeral=1, swap=2, rxtx_factor=3.0, is_public=False)
         self.nova = nova_utils.nova_client(self.os_creds)
         self.flavor = None
 
@@ -255,7 +254,7 @@ class NovaUtilsInstanceTests(OSComponentTestCase):
 
             self.flavor_creator = OpenStackFlavor(
                 self.os_creds,
-                FlavorSettings(
+                FlavorConfig(
                     name=guid + '-flavor-name', ram=256, disk=10, vcpus=1))
             self.flavor_creator.create()
 
@@ -371,7 +370,7 @@ class NovaUtilsInstanceVolumeTests(OSComponentTestCase):
 
             self.flavor_creator = OpenStackFlavor(
                 self.os_creds,
-                FlavorSettings(
+                FlavorConfig(
                     name=guid + '-flavor-name', ram=256, disk=10, vcpus=1))
             self.flavor_creator.create()
 
index 1c4c7b5..97dfd3c 100644 (file)
@@ -18,6 +18,7 @@ import unittest
 import os
 import uuid
 
+from snaps.config.flavor import FlavorConfig
 from snaps.domain.flavor import Flavor
 from snaps.domain.volume import (
     Volume, VolumeType, VolumeTypeEncryption, QoSSpec)
@@ -200,8 +201,8 @@ class SettingsUtilsVmInstTests(OSComponentTestCase):
             # Create Flavor
             self.flavor_creator = create_flavor.OpenStackFlavor(
                 self.os_creds,
-                create_flavor.FlavorSettings(name=guid + '-flavor-name',
-                                             ram=256, disk=1, vcpus=1))
+                FlavorConfig(
+                    name=guid + '-flavor-name', ram=256, disk=1, vcpus=1))
             self.flavor_creator.create()
 
             # Create Key/Pair
@@ -390,7 +391,7 @@ class SettingsUtilsUnitTests(unittest.TestCase):
         flavor = Flavor(
             name='flavor-name', flavor_id='flavor-id', ram=99, disk=101,
             vcpus=9, ephemeral=3, swap=5, rxtx_factor=7, is_public=False)
-        settings = settings_utils.create_flavor_settings(flavor)
+        settings = settings_utils.create_flavor_config(flavor)
         self.assertEqual(flavor.name, settings.name)
         self.assertEqual(flavor.id, settings.flavor_id)
         self.assertEqual(flavor.ram, settings.ram)
index da056b2..ef8c83f 100644 (file)
@@ -18,6 +18,8 @@ import uuid
 import os
 import pkg_resources
 from scp import SCPClient
+
+from snaps.config.flavor import FlavorConfig
 from snaps.openstack import create_flavor
 from snaps.openstack import create_image
 from snaps.openstack import create_instance
@@ -100,9 +102,9 @@ class AnsibleProvisioningTests(OSIntegrationTestCase):
             # Create Flavor
             self.flavor_creator = create_flavor.OpenStackFlavor(
                 self.admin_os_creds,
-                create_flavor.FlavorSettings(name=guid + '-flavor-name',
-                                             ram=2048, disk=10, vcpus=2,
-                                             metadata=self.flavor_metadata))
+                FlavorConfig(
+                    name=guid + '-flavor-name', ram=2048, disk=10, vcpus=2,
+                    metadata=self.flavor_metadata))
             self.flavor_creator.create()
 
             # Create Key/Pair
@@ -262,12 +264,13 @@ class AnsibleProvisioningTests(OSIntegrationTestCase):
         ssh = ansible_utils.ssh_client(ip, user, priv_key,
                                        self.os_creds.proxy_settings)
         self.assertIsNotNone(ssh)
-
+        scp = None
         try:
             scp = SCPClient(ssh.get_transport())
             scp.get('~/hello.txt', self.test_file_local_path)
         finally:
-            scp.close()
+            if scp:
+                scp.close()
             ssh.close()
 
         self.assertTrue(os.path.isfile(self.test_file_local_path))
@@ -326,12 +329,14 @@ class AnsibleProvisioningTests(OSIntegrationTestCase):
         ssh = ansible_utils.ssh_client(ip, user, priv_key,
                                        self.os_creds.proxy_settings)
         self.assertIsNotNone(ssh)
+        scp = None
 
         try:
             scp = SCPClient(ssh.get_transport())
             scp.get('/tmp/hello.txt', self.test_file_local_path)
         finally:
-            scp.close()
+            if scp:
+                scp.close()
             ssh.close()
 
         self.assertTrue(os.path.isfile(self.test_file_local_path))
index e770618..6747b91 100644 (file)
@@ -16,6 +16,7 @@
 import logging
 import unittest
 
+from snaps.config.tests.flavor_tests import FlavorConfigUnitTests
 import snaps.config.tests.image_tests as image_tests
 import snaps.openstack.tests.create_image_tests as creator_tests
 from snaps.domain.test.flavor_tests import FlavorDomainObjectTests
@@ -139,6 +140,8 @@ def add_unit_tests(suite):
         creator_tests.ImageSettingsUnitTests))
     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
         ImageDomainObjectTests))
+    suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
+        FlavorConfigUnitTests))
     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
         FlavorSettingsUnitTests))
     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(