Added MTU network config and updated flavor_metadata test support
[snaps.git] / snaps / openstack / tests / create_stack_tests.py
index f728211..a320aa0 100644 (file)
@@ -35,6 +35,7 @@ import logging
 import unittest
 import uuid
 
+from snaps.openstack import create_stack
 from snaps.openstack.create_stack import (
     StackSettings, StackCreationError, StackError, OpenStackHeatStack)
 from snaps.openstack.tests import openstack_tests, create_instance_tests
@@ -149,10 +150,11 @@ class CreateStackSuccessTests(OSIntegrationTestCase):
         self.image_creator.create()
 
         # Create Flavor
+        flavor_config = openstack_tests.get_flavor_config(
+            name=self.guid + '-flavor-name', ram=256, disk=10,
+            vcpus=1, metadata=self.flavor_metadata)
         self.flavor_creator = OpenStackFlavor(
-            self.admin_os_creds,
-            FlavorConfig(
-                name=self.guid + '-flavor-name', ram=256, disk=10, vcpus=1))
+            self.admin_os_creds, flavor_config)
         self.flavor_creator.create()
 
         self.network_name = self.guid + '-net'
@@ -216,6 +218,12 @@ class CreateStackSuccessTests(OSIntegrationTestCase):
         self.assertEqual(created_stack.id, retrieved_stack.id)
         self.assertEqual(0, len(self.stack_creator.get_outputs()))
 
+        derived_creator = create_stack.generate_creator(
+            self.os_creds, retrieved_stack,
+            [self.image_creator.image_settings])
+        derived_stack = derived_creator.get_stack()
+        self.assertEqual(retrieved_stack, derived_stack)
+
     def test_create_stack_short_timeout(self):
         """
         Tests the creation of an OpenStack stack from Heat template file.
@@ -364,7 +372,7 @@ class CreateStackSuccessTests(OSIntegrationTestCase):
         self.assertEqual(1, len(net_creators[0].get_network().subnets))
         subnet = net_creators[0].get_network().subnets[0]
         subnet_by_name = neutron_utils.get_subnet(
-            neutron, subnet_name=subnet.name)
+            neutron, net_creators[0].get_network(), subnet_name=subnet.name)
         self.assertEqual(subnet, subnet_by_name)
 
         subnet_by_id = neutron_utils.get_subnet_by_id(neutron, subnet.id)
@@ -510,6 +518,39 @@ class CreateStackFloatingIpTests(OSIntegrationTestCase):
                 vm_settings = vm_inst_creator.instance_settings
                 self.assertEqual(0, len(vm_settings.floating_ip_settings))
 
+    def test_connect_via_ssh_heat_vm_derived(self):
+        """
+        Tests the the retrieval of two VM instance creators from a derived
+        OpenStackHeatStack object and attempt to connect via
+        SSH to the first one with a floating IP.
+        """
+        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 = OpenStackHeatStack(
+            self.os_creds, stack_settings,
+            [self.image_creator.image_settings])
+        created_stack = self.stack_creator.create()
+        self.assertIsNotNone(created_stack)
+
+        derived_stack = create_stack.generate_creator(
+            self.os_creds, created_stack,
+            [self.image_creator.image_settings])
+
+        self.vm_inst_creators = derived_stack.get_vm_inst_creators(
+            heat_keypair_option='private_key')
+        self.assertIsNotNone(self.vm_inst_creators)
+        self.assertEqual(2, len(self.vm_inst_creators))
+
+        for vm_inst_creator in self.vm_inst_creators:
+            if vm_inst_creator.get_vm_inst().name == self.vm_inst1_name:
+                self.assertTrue(
+                    create_instance_tests.validate_ssh_client(vm_inst_creator))
+            else:
+                vm_settings = vm_inst_creator.instance_settings
+                self.assertEqual(0, len(vm_settings.floating_ip_settings))
+
 
 class CreateStackNestedResourceTests(OSIntegrationTestCase):
     """
@@ -528,14 +569,15 @@ class CreateStackNestedResourceTests(OSIntegrationTestCase):
 
         self.image_creator = OpenStackImage(
             self.os_creds, openstack_tests.cirros_image_settings(
-                name=self.guid + '-image',
+                name="{}-{}".format(self.guid, 'image'),
                 image_metadata=self.image_metadata))
         self.image_creator.create()
 
+        flavor_config = openstack_tests.get_flavor_config(
+            name="{}-{}".format(self.guid, 'flavor-name'), ram=256, disk=10,
+            vcpus=1, metadata=self.flavor_metadata)
         self.flavor_creator = OpenStackFlavor(
-            self.admin_os_creds,
-            FlavorConfig(
-                name=self.guid + '-flavor-name', ram=256, disk=10, vcpus=1))
+            self.admin_os_creds, flavor_config)
         self.flavor_creator.create()
 
         env_values = {
@@ -552,7 +594,8 @@ class CreateStackNestedResourceTests(OSIntegrationTestCase):
             'snaps.openstack.tests.heat', 'agent.yaml')
 
         stack_settings = StackConfig(
-            name=self.__class__.__name__ + '-' + str(self.guid) + '-stack',
+            name="{}-{}".format(
+                self.__class__.__name__, str(self.guid) + '-stack'),
             template_path=heat_tmplt_path,
             resource_files=[heat_resource_path],
             env_values=env_values)