Refactoring of StackSettings to extend StackConfig
[snaps.git] / snaps / openstack / tests / create_stack_tests.py
index bc9cb2c..1df22fa 100644 (file)
@@ -17,9 +17,12 @@ import time
 
 import pkg_resources
 from heatclient.exc import HTTPBadRequest
+
+import snaps
 from snaps import file_utils
 from snaps.config.flavor import FlavorConfig
 from snaps.config.image import ImageConfig
+from snaps.config.stack import StackConfigError, StackConfig
 from snaps.openstack.create_flavor import OpenStackFlavor
 from snaps.openstack.create_image import OpenStackImage
 
@@ -32,9 +35,8 @@ import logging
 import unittest
 import uuid
 
-from snaps.openstack import create_stack
 from snaps.openstack.create_stack import (
-    StackSettings, StackSettingsError, StackCreationError, StackError)
+    StackSettings, StackCreationError, StackError, OpenStackHeatStack)
 from snaps.openstack.tests import openstack_tests, create_instance_tests
 from snaps.openstack.tests.os_source_file_test import OSIntegrationTestCase
 from snaps.openstack.utils import heat_utils, neutron_utils, nova_utils
@@ -50,19 +52,19 @@ class StackSettingsUnitTests(unittest.TestCase):
     """
 
     def test_no_params(self):
-        with self.assertRaises(StackSettingsError):
+        with self.assertRaises(StackConfigError):
             StackSettings()
 
     def test_empty_config(self):
-        with self.assertRaises(StackSettingsError):
+        with self.assertRaises(StackConfigError):
             StackSettings(**dict())
 
     def test_name_only(self):
-        with self.assertRaises(StackSettingsError):
+        with self.assertRaises(StackConfigError):
             StackSettings(name='foo')
 
     def test_config_with_name_only(self):
-        with self.assertRaises(StackSettingsError):
+        with self.assertRaises(StackConfigError):
             StackSettings(**{'name': 'foo'})
 
     def test_config_minimum_template(self):
@@ -71,7 +73,7 @@ class StackSettingsUnitTests(unittest.TestCase):
         self.assertEqual('foo', settings.template)
         self.assertIsNone(settings.template_path)
         self.assertIsNone(settings.env_values)
-        self.assertEqual(create_stack.STACK_COMPLETE_TIMEOUT,
+        self.assertEqual(snaps.config.stack.STACK_COMPLETE_TIMEOUT,
                          settings.stack_create_timeout)
 
     def test_config_minimum_template_path(self):
@@ -80,7 +82,7 @@ class StackSettingsUnitTests(unittest.TestCase):
         self.assertIsNone(settings.template)
         self.assertEqual('foo', settings.template_path)
         self.assertIsNone(settings.env_values)
-        self.assertEqual(create_stack.STACK_COMPLETE_TIMEOUT,
+        self.assertEqual(snaps.config.stack.STACK_COMPLETE_TIMEOUT,
                          settings.stack_create_timeout)
 
     def test_minimum_template(self):
@@ -89,7 +91,7 @@ class StackSettingsUnitTests(unittest.TestCase):
         self.assertEqual('foo', settings.template)
         self.assertIsNone(settings.template_path)
         self.assertIsNone(settings.env_values)
-        self.assertEqual(create_stack.STACK_COMPLETE_TIMEOUT,
+        self.assertEqual(snaps.config.stack.STACK_COMPLETE_TIMEOUT,
                          settings.stack_create_timeout)
 
     def test_minimum_template_path(self):
@@ -98,7 +100,7 @@ class StackSettingsUnitTests(unittest.TestCase):
         self.assertEqual('foo', settings.template_path)
         self.assertIsNone(settings.template)
         self.assertIsNone(settings.env_values)
-        self.assertEqual(create_stack.STACK_COMPLETE_TIMEOUT,
+        self.assertEqual(snaps.config.stack.STACK_COMPLETE_TIMEOUT,
                          settings.stack_create_timeout)
 
     def test_all(self):
@@ -199,12 +201,12 @@ class CreateStackSuccessTests(OSIntegrationTestCase):
         # Create Stack
         # Set the default stack settings, then set any custom parameters sent
         # from the app
-        stack_settings = StackSettings(
+        stack_settings = StackConfig(
             name=self.__class__.__name__ + '-' + str(self.guid) + '-stack',
             template_path=self.heat_tmplt_path,
             env_values=self.env_values)
-        self.stack_creator = create_stack.OpenStackHeatStack(self.heat_creds,
-                                                             stack_settings)
+        self.stack_creator = OpenStackHeatStack(
+            self.heat_creds, stack_settings)
         created_stack = self.stack_creator.create()
         self.assertIsNotNone(created_stack)
 
@@ -222,13 +224,13 @@ class CreateStackSuccessTests(OSIntegrationTestCase):
         # Create Stack
         # Set the default stack settings, then set any custom parameters sent
         # from the app
-        stack_settings = StackSettings(
+        stack_settings = StackConfig(
             name=self.__class__.__name__ + '-' + str(self.guid) + '-stack',
             template_path=self.heat_tmplt_path,
             env_values=self.env_values, stack_create_timeout=0)
 
-        self.stack_creator = create_stack.OpenStackHeatStack(self.heat_creds,
-                                                             stack_settings)
+        self.stack_creator = OpenStackHeatStack(
+            self.heat_creds, stack_settings)
         with self.assertRaises(StackCreationError):
             self.stack_creator.create()
 
@@ -241,12 +243,12 @@ class CreateStackSuccessTests(OSIntegrationTestCase):
         # from the app
         template_dict = heat_utils.parse_heat_template_str(
             file_utils.read_file(self.heat_tmplt_path))
-        stack_settings = StackSettings(
+        stack_settings = StackConfig(
             name=self.__class__.__name__ + '-' + str(self.guid) + '-stack',
             template=template_dict,
             env_values=self.env_values)
-        self.stack_creator = create_stack.OpenStackHeatStack(self.heat_creds,
-                                                             stack_settings)
+        self.stack_creator = OpenStackHeatStack(
+            self.heat_creds, stack_settings)
         created_stack = self.stack_creator.create()
         self.assertIsNotNone(created_stack)
 
@@ -265,12 +267,12 @@ class CreateStackSuccessTests(OSIntegrationTestCase):
         # Create Stack
         template_dict = heat_utils.parse_heat_template_str(
             file_utils.read_file(self.heat_tmplt_path))
-        stack_settings = StackSettings(
+        stack_settings = StackConfig(
             name=self.__class__.__name__ + '-' + str(self.guid) + '-stack',
             template=template_dict,
             env_values=self.env_values)
-        self.stack_creator = create_stack.OpenStackHeatStack(self.heat_creds,
-                                                             stack_settings)
+        self.stack_creator = OpenStackHeatStack(
+            self.heat_creds, stack_settings)
         created_stack = self.stack_creator.create()
         self.assertIsNotNone(created_stack)
 
@@ -280,7 +282,7 @@ class CreateStackSuccessTests(OSIntegrationTestCase):
         self.assertEqual(created_stack.name, retrieved_stack.name)
         self.assertEqual(created_stack.id, retrieved_stack.id)
         self.assertEqual(0, len(self.stack_creator.get_outputs()))
-        self.assertEqual(create_stack.STATUS_CREATE_COMPLETE,
+        self.assertEqual(snaps.config.stack.STATUS_CREATE_COMPLETE,
                          self.stack_creator.get_status())
 
         # Delete Stack manually
@@ -291,7 +293,7 @@ class CreateStackSuccessTests(OSIntegrationTestCase):
         while time.time() < end_time:
             status = heat_utils.get_stack_status(self.heat_cli,
                                                  retrieved_stack.id)
-            if status == create_stack.STATUS_DELETE_COMPLETE:
+            if status == snaps.config.stack.STATUS_DELETE_COMPLETE:
                 deleted = True
                 break
 
@@ -309,12 +311,12 @@ class CreateStackSuccessTests(OSIntegrationTestCase):
         # Create Stack
         template_dict = heat_utils.parse_heat_template_str(
             file_utils.read_file(self.heat_tmplt_path))
-        stack_settings = StackSettings(
+        stack_settings = StackConfig(
             name=self.__class__.__name__ + '-' + str(self.guid) + '-stack',
             template=template_dict,
             env_values=self.env_values)
-        self.stack_creator = create_stack.OpenStackHeatStack(self.heat_creds,
-                                                             stack_settings)
+        self.stack_creator = OpenStackHeatStack(
+            self.heat_creds, stack_settings)
         created_stack1 = self.stack_creator.create()
 
         retrieved_stack = heat_utils.get_stack_by_id(self.heat_cli,
@@ -325,8 +327,7 @@ class CreateStackSuccessTests(OSIntegrationTestCase):
         self.assertEqual(0, len(self.stack_creator.get_outputs()))
 
         # Should be retrieving the instance data
-        stack_creator2 = create_stack.OpenStackHeatStack(self.heat_creds,
-                                                         stack_settings)
+        stack_creator2 = OpenStackHeatStack(self.heat_creds, stack_settings)
         stack2 = stack_creator2.create()
         self.assertEqual(created_stack1.id, stack2.id)
 
@@ -335,12 +336,12 @@ class CreateStackSuccessTests(OSIntegrationTestCase):
         Tests the creation of an OpenStack stack from Heat template file and
         the retrieval of the network creator.
         """
-        stack_settings = StackSettings(
+        stack_settings = StackConfig(
             name=self.__class__.__name__ + '-' + str(self.guid) + '-stack',
             template_path=self.heat_tmplt_path,
             env_values=self.env_values)
-        self.stack_creator = create_stack.OpenStackHeatStack(self.heat_creds,
-                                                             stack_settings)
+        self.stack_creator = OpenStackHeatStack(
+            self.heat_creds, stack_settings)
         created_stack = self.stack_creator.create()
         self.assertIsNotNone(created_stack)
 
@@ -371,12 +372,12 @@ class CreateStackSuccessTests(OSIntegrationTestCase):
         Tests the creation of an OpenStack stack from Heat template file and
         the retrieval of the network creator.
         """
-        stack_settings = StackSettings(
+        stack_settings = StackConfig(
             name=self.__class__.__name__ + '-' + str(self.guid) + '-stack',
             template_path=self.heat_tmplt_path,
             env_values=self.env_values)
-        self.stack_creator = create_stack.OpenStackHeatStack(self.heat_creds,
-                                                             stack_settings)
+        self.stack_creator = OpenStackHeatStack(
+            self.heat_creds, stack_settings)
         created_stack = self.stack_creator.create()
         self.assertIsNotNone(created_stack)
 
@@ -480,11 +481,11 @@ class CreateStackFloatingIpTests(OSIntegrationTestCase):
         the retrieval of two VM instance creators and attempt to connect via
         SSH to the first one with a floating IP.
         """
-        stack_settings = StackSettings(
+        stack_settings = StackConfig(
             name=self.__class__.__name__ + '-' + str(self.guid) + '-stack',
             template_path=self.heat_tmplt_path,
             env_values=self.env_values)
-        self.stack_creator = create_stack.OpenStackHeatStack(
+        self.stack_creator = OpenStackHeatStack(
             self.heat_creds, stack_settings,
             [self.image_creator.image_settings])
         created_stack = self.stack_creator.create()
@@ -539,11 +540,11 @@ class CreateStackRouterTests(OSIntegrationTestCase):
         self.heat_tmplt_path = pkg_resources.resource_filename(
             'snaps.openstack.tests.heat', 'router_heat_template.yaml')
 
-        stack_settings = StackSettings(
+        stack_settings = StackConfig(
             name=self.__class__.__name__ + '-' + str(self.guid) + '-stack',
             template_path=self.heat_tmplt_path,
             env_values=self.env_values)
-        self.stack_creator = create_stack.OpenStackHeatStack(
+        self.stack_creator = OpenStackHeatStack(
             self.heat_creds, stack_settings)
         self.created_stack = self.stack_creator.create()
         self.assertIsNotNone(self.created_stack)
@@ -606,11 +607,11 @@ class CreateStackVolumeTests(OSIntegrationTestCase):
         self.heat_tmplt_path = pkg_resources.resource_filename(
             'snaps.openstack.tests.heat', 'volume_heat_template.yaml')
 
-        stack_settings = StackSettings(
+        stack_settings = StackConfig(
             name=self.__class__.__name__ + '-' + str(self.guid) + '-stack',
             template_path=self.heat_tmplt_path,
             env_values=self.env_values)
-        self.stack_creator = create_stack.OpenStackHeatStack(
+        self.stack_creator = OpenStackHeatStack(
             self.heat_creds, stack_settings)
         self.created_stack = self.stack_creator.create()
         self.assertIsNotNone(self.created_stack)
@@ -693,10 +694,10 @@ class CreateStackFlavorTests(OSIntegrationTestCase):
         self.heat_tmplt_path = pkg_resources.resource_filename(
             'snaps.openstack.tests.heat', 'flavor_heat_template.yaml')
 
-        stack_settings = StackSettings(
+        stack_settings = StackConfig(
             name=self.guid + '-stack',
             template_path=self.heat_tmplt_path)
-        self.stack_creator = create_stack.OpenStackHeatStack(
+        self.stack_creator = OpenStackHeatStack(
             self.heat_creds, stack_settings)
         self.created_stack = self.stack_creator.create()
         self.assertIsNotNone(self.created_stack)
@@ -759,11 +760,11 @@ class CreateStackKeypairTests(OSIntegrationTestCase):
         self.heat_tmplt_path = pkg_resources.resource_filename(
             'snaps.openstack.tests.heat', 'keypair_heat_template.yaml')
 
-        stack_settings = StackSettings(
+        stack_settings = StackConfig(
             name=self.__class__.__name__ + '-' + str(self.guid) + '-stack',
             template_path=self.heat_tmplt_path,
             env_values=self.env_values)
-        self.stack_creator = create_stack.OpenStackHeatStack(
+        self.stack_creator = OpenStackHeatStack(
             self.heat_creds, stack_settings)
         self.created_stack = self.stack_creator.create()
         self.assertIsNotNone(self.created_stack)
@@ -844,11 +845,11 @@ class CreateStackSecurityGroupTests(OSIntegrationTestCase):
         self.heat_tmplt_path = pkg_resources.resource_filename(
             'snaps.openstack.tests.heat', 'security_group_heat_template.yaml')
 
-        stack_settings = StackSettings(
+        stack_settings = StackConfig(
             name=self.__class__.__name__ + '-' + str(self.guid) + '-stack',
             template_path=self.heat_tmplt_path,
             env_values=self.env_values)
-        self.stack_creator = create_stack.OpenStackHeatStack(
+        self.stack_creator = OpenStackHeatStack(
             self.heat_creds, stack_settings)
         self.created_stack = self.stack_creator.create()
         self.assertIsNotNone(self.created_stack)
@@ -935,10 +936,10 @@ class CreateStackNegativeTests(OSIntegrationTestCase):
         """
         Expect an StackCreationError when the stack file does not exist
         """
-        stack_settings = StackSettings(name=self.stack_name,
-                                       template_path=self.heat_tmplt_path)
-        self.stack_creator = create_stack.OpenStackHeatStack(self.heat_creds,
-                                                             stack_settings)
+        stack_settings = StackConfig(name=self.stack_name,
+                                     template_path=self.heat_tmplt_path)
+        self.stack_creator = OpenStackHeatStack(
+            self.heat_creds, stack_settings)
         with self.assertRaises(HTTPBadRequest):
             self.stack_creator.create()
 
@@ -946,10 +947,10 @@ class CreateStackNegativeTests(OSIntegrationTestCase):
         """
         Expect an StackCreationError when the stack file does not exist
         """
-        stack_settings = StackSettings(name=self.stack_name,
-                                       template_path='foo')
-        self.stack_creator = create_stack.OpenStackHeatStack(self.heat_creds,
-                                                             stack_settings)
+        stack_settings = StackConfig(
+            name=self.stack_name, template_path='foo')
+        self.stack_creator = OpenStackHeatStack(
+            self.heat_creds, stack_settings)
         with self.assertRaises(IOError):
             self.stack_creator.create()
 
@@ -1041,12 +1042,12 @@ class CreateStackFailureTests(OSIntegrationTestCase):
         # Create Stack
         # Set the default stack settings, then set any custom parameters sent
         # from the app
-        stack_settings = StackSettings(
+        stack_settings = StackConfig(
             name=self.__class__.__name__ + '-' + str(self.guid) + '-stack',
             template_path=self.heat_tmplt_path,
             env_values=self.env_values)
-        self.stack_creator = create_stack.OpenStackHeatStack(self.heat_creds,
-                                                             stack_settings)
+        self.stack_creator = OpenStackHeatStack(
+            self.heat_creds, stack_settings)
 
         with self.assertRaises(StackError):
             try:
@@ -1057,7 +1058,8 @@ class CreateStackFailureTests(OSIntegrationTestCase):
 
                 found = False
                 for resource in resources:
-                    if resource.status == create_stack.STATUS_CREATE_COMPLETE:
+                    if (resource.status ==
+                            snaps.config.stack.STATUS_CREATE_COMPLETE):
                         found = True
                 self.assertTrue(found)
                 raise