Merge "Check for kernel_url and ramdisk_url keys in dict"
[snaps.git] / snaps / openstack / tests / create_instance_tests.py
index b0792ac..2cb1cdc 100644 (file)
@@ -258,22 +258,22 @@ class SimpleHealthCheck(OSIntegrationTestCase):
         self.os_image_settings = openstack_tests.cirros_url_image(name=guid + '-image')
 
         if self.image_metadata:
-            if self.image_metadata['disk_url']:
+            if 'disk_url' in self.image_metadata and self.image_metadata['disk_url']:
                 self.os_image_settings.url = self.image_metadata['disk_url']
-            if self.image_metadata['extra_properties']:
+            if 'extra_properties' in self.image_metadata and self.image_metadata['extra_properties']:
                 self.os_image_settings.extra_properties = self.image_metadata['extra_properties']
 
         try:
             # If this is a 3-part image create the kernel and ramdisk images first
             if self.image_metadata:
-                if self.image_metadata['kernel_url']:
+                if 'kernel_url' in self.image_metadata and self.image_metadata['kernel_url']:
                     kernel_image_settings = openstack_tests.cirros_url_image(
                         name=self.os_image_settings.name+'_kernel', url=self.image_metadata['kernel_url'])
                     self.image_creators.append(OpenStackImage(self.os_creds, kernel_image_settings))
                     kernel_image = self.image_creators[-1].create()
                     self.os_image_settings.extra_properties['kernel_id'] = kernel_image.id
 
-                if self.image_metadata['ramdisk_url']:
+                if 'ramdisk_url' in self.image_metadata and self.image_metadata['ramdisk_url']:
                     ramdisk_image_settings = openstack_tests.cirros_url_image(
                         name=self.os_image_settings.name+'_ramdisk', url=self.image_metadata['ramdisk_url'])
                     self.image_creators.append(OpenStackImage(self.os_creds, ramdisk_image_settings))
@@ -290,7 +290,7 @@ class SimpleHealthCheck(OSIntegrationTestCase):
             # Create Flavor
             self.flavor_creator = OpenStackFlavor(
                 self.admin_os_creds,
-                FlavorSettings(name=guid + '-flavor-name', ram=1024, disk=10, vcpus=1, metadata=self.flavor_metadata))
+                FlavorSettings(name=guid + '-flavor-name', ram=128, disk=10, vcpus=1, metadata=self.flavor_metadata))
             self.flavor_creator.create()
         except Exception as e:
             self.tearDown()
@@ -336,7 +336,8 @@ class SimpleHealthCheck(OSIntegrationTestCase):
         instance_settings = VmInstanceSettings(
             name=self.vm_inst_name, flavor=self.flavor_creator.flavor_settings.name, port_settings=[self.port_settings])
 
-        self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, self.image_creators[-1].image_settings)
+        self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings,
+                                                self.image_creators[-1].image_settings)
         vm = self.inst_creator.create()
 
         ip = self.inst_creator.get_port_ip(self.port_settings.name)
@@ -350,8 +351,10 @@ class SimpleHealthCheck(OSIntegrationTestCase):
         match_value = 'Lease of.*obtained'
 
         logger.info("Looking for expression %s in the console log" % match_value)
+        full_log = ''
         while timeout > time.time() - start_time:
             output = vm.get_console_output()
+            full_log = full_log + output
             if re.search(match_value, output):
                 logger.info('DHCP lease obtained logged in console')
                 if ip in output:
@@ -361,6 +364,11 @@ class SimpleHealthCheck(OSIntegrationTestCase):
                     logger.error('With incorrect IP address')
                 break
 
+        if not found:
+            logger.error('Full console output -\n' + full_log)
+        else:
+            logger.debug('Full console output -\n' + full_log)
+
         self.assertTrue(found)
 
 
@@ -395,21 +403,21 @@ class CreateInstanceSimpleTests(OSIntegrationTestCase):
             # Create Image
             # Set any custom parameters sent from the app
             if self.image_metadata:
-                if self.image_metadata['disk_url']:
+                if 'disk_url' in self.image_metadata and self.image_metadata['disk_url']:
                     self.os_image_settings.url = self.image_metadata['disk_url']
-                if self.image_metadata['extra_properties']:
+                if 'extra_properties' in self.image_metadata and  self.image_metadata['extra_properties']:
                     self.os_image_settings.extra_properties = self.image_metadata['extra_properties']
 
             # If this is a 3-part image create the kernel and ramdisk images first
             if self.image_metadata:
-                if self.image_metadata['kernel_url']:
+                if 'kernel_url' in self.image_metadata and self.image_metadata['kernel_url']:
                     kernel_image_settings = openstack_tests.cirros_url_image(
                         name=self.os_image_settings.name+'_kernel', url=self.image_metadata['kernel_url'])
                     self.image_creators.append(OpenStackImage(self.os_creds, kernel_image_settings))
                     kernel_image = self.image_creators[-1].create()
                     self.os_image_settings.extra_properties['kernel_id'] = kernel_image.id
 
-                if self.image_metadata['ramdisk_url']:
+                if 'ramdisk_url' in self.image_metadata and self.image_metadata['ramdisk_url']:
                     ramdisk_image_settings = openstack_tests.cirros_url_image(
                         name=self.os_image_settings.name+'_ramdisk', url=self.image_metadata['ramdisk_url'])
                     self.image_creators.append(OpenStackImage(self.os_creds, ramdisk_image_settings))
@@ -422,7 +430,7 @@ class CreateInstanceSimpleTests(OSIntegrationTestCase):
             # Create Flavor
             self.flavor_creator = OpenStackFlavor(
                 self.admin_os_creds,
-                FlavorSettings(name=guid + '-flavor-name', ram=2048, disk=10, vcpus=2, metadata=self.flavor_metadata))
+                FlavorSettings(name=guid + '-flavor-name', ram=128, disk=10, vcpus=2, metadata=self.flavor_metadata))
             self.flavor_creator.create()
 
             # Create Network
@@ -529,21 +537,21 @@ class CreateInstanceSingleNetworkTests(OSIntegrationTestCase):
             # Create Image
             # Set any custom parameters sent from the app
             if self.image_metadata:
-                if self.image_metadata['disk_url']:
+                if 'disk_url' in self.image_metadata and self.image_metadata['disk_url']:
                     self.os_image_settings.url = self.image_metadata['disk_url']
-                if self.image_metadata['extra_properties']:
+                if 'extra_properties' in self.image_metadata and self.image_metadata['extra_properties']:
                     self.os_image_settings.extra_properties = self.image_metadata['extra_properties']
 
             # If this is a 3-part image create the kernel and ramdisk images first
             if self.image_metadata:
-                if self.image_metadata['kernel_url']:
+                if 'kernel_url' in self.image_metadata and self.image_metadata['kernel_url']:
                     kernel_image_settings = openstack_tests.cirros_url_image(
                         name=self.os_image_settings.name+'_kernel', url=self.image_metadata['kernel_url'])
                     self.image_creators.append(OpenStackImage(self.os_creds, kernel_image_settings))
                     kernel_image = self.image_creators[-1].create()
                     self.os_image_settings.extra_properties['kernel_id'] = kernel_image.id
 
-                if self.image_metadata['ramdisk_url']:
+                if 'ramdisk_url' in self.image_metadata and self.image_metadata['ramdisk_url']:
                     ramdisk_image_settings = openstack_tests.cirros_url_image(
                         name=self.os_image_settings.name+'_ramdisk', url=self.image_metadata['ramdisk_url'])
                     self.image_creators.append(OpenStackImage(self.os_creds, ramdisk_image_settings))
@@ -564,7 +572,7 @@ class CreateInstanceSingleNetworkTests(OSIntegrationTestCase):
             # Create Flavor
             self.flavor_creator = OpenStackFlavor(
                 self.admin_os_creds,
-                FlavorSettings(name=guid + '-flavor-name', ram=2048, disk=10, vcpus=2, metadata=self.flavor_metadata))
+                FlavorSettings(name=guid + '-flavor-name', ram=128, disk=10, vcpus=2, metadata=self.flavor_metadata))
             self.flavor_creator.create()
 
             self.keypair_creator = OpenStackKeypair(
@@ -784,8 +792,8 @@ class CreateInstanceSingleNetworkTests(OSIntegrationTestCase):
     #     inst_creator_3.create(block=True)
     #
     #     print 'foo'
-    # I expected that this feature would block/allow traffic from specific endpoints (VMs). In this case, I would expect
-    # inst_1 to be able to access inst_2 but not inst_3; however, they all can access each other.
+    # I expected that this feature would block/allow traffic from specific endpoints (VMs). In this case, I would
+    # expect inst_1 to be able to access inst_2 but not inst_3; however, they all can access each other.
     # TODO - Add validation
 
 
@@ -822,21 +830,21 @@ class CreateInstancePortManipulationTests(OSIntegrationTestCase):
             # Create Image
             # Set any custom parameters sent from the app
             if self.image_metadata:
-                if self.image_metadata['disk_url']:
+                if 'disk_url' in self.image_metadata and self.image_metadata['disk_url']:
                     self.os_image_settings.url = self.image_metadata['disk_url']
-                if self.image_metadata['extra_properties']:
+                if 'extra_properties' in self.image_metadata and self.image_metadata['extra_properties']:
                     self.os_image_settings.extra_properties = self.image_metadata['extra_properties']
 
             # If this is a 3-part image create the kernel and ramdisk images first
             if self.image_metadata:
-                if self.image_metadata['kernel_url']:
+                if 'kernel_url' in self.image_metadata and self.image_metadata['kernel_url']:
                     kernel_image_settings = openstack_tests.cirros_url_image(
                         name=self.os_image_settings.name+'_kernel', url=self.image_metadata['kernel_url'])
                     self.image_creators.append(OpenStackImage(self.os_creds, kernel_image_settings))
                     kernel_image = self.image_creators[-1].create()
                     self.os_image_settings.extra_properties['kernel_id'] = kernel_image.id
 
-                if self.image_metadata['ramdisk_url']:
+                if 'ramdisk_url' in self.image_metadata and self.image_metadata['ramdisk_url']:
                     ramdisk_image_settings = openstack_tests.cirros_url_image(
                         name=self.os_image_settings.name+'_ramdisk', url=self.image_metadata['ramdisk_url'])
                     self.image_creators.append(OpenStackImage(self.os_creds, ramdisk_image_settings))
@@ -853,7 +861,7 @@ class CreateInstancePortManipulationTests(OSIntegrationTestCase):
             # Create Flavor
             self.flavor_creator = OpenStackFlavor(
                 self.admin_os_creds,
-                FlavorSettings(name=guid + '-flavor-name', ram=2048, disk=10, vcpus=2, metadata=self.flavor_metadata))
+                FlavorSettings(name=guid + '-flavor-name', ram=128, disk=10, vcpus=2, metadata=self.flavor_metadata))
             self.flavor_creator.create()
         except Exception as e:
             self.tearDown()
@@ -903,7 +911,8 @@ class CreateInstancePortManipulationTests(OSIntegrationTestCase):
         instance_settings = VmInstanceSettings(
             name=self.vm_inst_name, flavor=self.flavor_creator.flavor_settings.name, port_settings=[port_settings])
 
-        self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, self.image_creators[-1].image_settings)
+        self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings,
+                                                self.image_creators[-1].image_settings)
         self.inst_creator.create()
 
         self.assertEquals(ip, self.inst_creator.get_port_ip(
@@ -921,7 +930,8 @@ class CreateInstancePortManipulationTests(OSIntegrationTestCase):
         instance_settings = VmInstanceSettings(
             name=self.vm_inst_name, flavor=self.flavor_creator.flavor_settings.name, port_settings=[port_settings])
 
-        self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, self.image_creators[-1].image_settings)
+        self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings,
+                                                self.image_creators[-1].image_settings)
 
         with self.assertRaises(Exception):
             self.inst_creator.create()
@@ -937,7 +947,8 @@ class CreateInstancePortManipulationTests(OSIntegrationTestCase):
         instance_settings = VmInstanceSettings(
             name=self.vm_inst_name, flavor=self.flavor_creator.flavor_settings.name, port_settings=[port_settings])
 
-        self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, self.image_creators[-1].image_settings)
+        self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings,
+                                                self.image_creators[-1].image_settings)
         self.inst_creator.create()
 
         self.assertEquals(mac_addr, self.inst_creator.get_port_mac(self.port_1_name))
@@ -972,7 +983,8 @@ class CreateInstancePortManipulationTests(OSIntegrationTestCase):
         instance_settings = VmInstanceSettings(
             name=self.vm_inst_name, flavor=self.flavor_creator.flavor_settings.name, port_settings=[port_settings])
 
-        self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, self.image_creators[-1].image_settings)
+        self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings,
+                                                self.image_creators[-1].image_settings)
         self.inst_creator.create()
 
         self.assertEquals(ip, self.inst_creator.get_port_ip(
@@ -992,7 +1004,8 @@ class CreateInstancePortManipulationTests(OSIntegrationTestCase):
         instance_settings = VmInstanceSettings(
             name=self.vm_inst_name, flavor=self.flavor_creator.flavor_settings.name, port_settings=[port_settings])
 
-        self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, self.image_creators[-1].image_settings)
+        self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings,
+                                                self.image_creators[-1].image_settings)
         self.inst_creator.create()
 
         port = self.inst_creator.get_port_by_name(port_settings.name)
@@ -1017,7 +1030,8 @@ class CreateInstancePortManipulationTests(OSIntegrationTestCase):
         instance_settings = VmInstanceSettings(
             name=self.vm_inst_name, flavor=self.flavor_creator.flavor_settings.name, port_settings=[port_settings])
 
-        self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, self.image_creators[-1].image_settings)
+        self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings,
+                                                self.image_creators[-1].image_settings)
         with self.assertRaises(Exception):
             self.inst_creator.create()
 
@@ -1037,7 +1051,8 @@ class CreateInstancePortManipulationTests(OSIntegrationTestCase):
         instance_settings = VmInstanceSettings(
             name=self.vm_inst_name, flavor=self.flavor_creator.flavor_settings.name, port_settings=[port_settings])
 
-        self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, self.image_creators[-1].image_settings)
+        self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings,
+                                                self.image_creators[-1].image_settings)
         with self.assertRaises(Exception):
             self.inst_creator.create()
 
@@ -1083,21 +1098,21 @@ class CreateInstanceOnComputeHost(OSIntegrationTestCase):
             # Create Image
             # Set any custom parameters sent from the app
             if self.image_metadata:
-                if self.image_metadata['disk_url']:
+                if 'disk_url' in self.image_metadata and self.image_metadata['disk_url']:
                     self.os_image_settings.url = self.image_metadata['disk_url']
-                if self.image_metadata['extra_properties']:
+                if 'extra_properties' in self.image_metadata and self.image_metadata['extra_properties']:
                     self.os_image_settings.extra_properties = self.image_metadata['extra_properties']
 
             # If this is a 3-part image create the kernel and ramdisk images first
             if self.image_metadata:
-                if self.image_metadata['kernel_url']:
+                if 'kernel_url' in self.image_metadata and self.image_metadata['kernel_url']:
                     kernel_image_settings = openstack_tests.cirros_url_image(
                         name=self.os_image_settings.name+'_kernel', url=self.image_metadata['kernel_url'])
                     self.image_creators.append(OpenStackImage(self.os_creds, kernel_image_settings))
                     kernel_image = self.image_creators[-1].create()
                     self.os_image_settings.extra_properties['kernel_id'] = kernel_image.id
 
-                if self.image_metadata['ramdisk_url']:
+                if 'ramdisk_url' in self.image_metadata and self.image_metadata['ramdisk_url']:
                     ramdisk_image_settings = openstack_tests.cirros_url_image(
                         name=self.os_image_settings.name+'_ramdisk', url=self.image_metadata['ramdisk_url'])
                     self.image_creators.append(OpenStackImage(self.os_creds, ramdisk_image_settings))
@@ -1221,21 +1236,21 @@ class CreateInstancePubPrivNetTests(OSIntegrationTestCase):
             # Create Image
             # Set any custom parameters sent from the app
             if self.image_metadata:
-                if self.image_metadata['disk_url']:
+                if 'disk_url' in self.image_metadata and self.image_metadata['disk_url']:
                     self.os_image_settings.url = self.image_metadata['disk_url']
-                if self.image_metadata['extra_properties']:
+                if 'extra_properties' in self.image_metadata and self.image_metadata['extra_properties']:
                     self.os_image_settings.extra_properties = self.image_metadata['extra_properties']
 
             # If this is a 3-part image create the kernel and ramdisk images first
             if self.image_metadata:
-                if self.image_metadata['kernel_url']:
+                if 'kernel_url' in self.image_metadata and self.image_metadata['kernel_url']:
                     kernel_image_settings = openstack_tests.cirros_url_image(
                         name=self.os_image_settings.name+'_kernel', url=self.image_metadata['kernel_url'])
                     self.image_creators.append(OpenStackImage(self.os_creds, kernel_image_settings))
                     kernel_image = self.image_creators[-1].create()
                     self.os_image_settings.extra_properties['kernel_id'] = kernel_image.id
 
-                if self.image_metadata['ramdisk_url']:
+                if 'ramdisk_url' in self.image_metadata and self.image_metadata['ramdisk_url']:
                     ramdisk_image_settings = openstack_tests.cirros_url_image(
                         name=self.os_image_settings.name+'_ramdisk', url=self.image_metadata['ramdisk_url'])
                     self.image_creators.append(OpenStackImage(self.os_creds, ramdisk_image_settings))
@@ -1262,7 +1277,7 @@ class CreateInstancePubPrivNetTests(OSIntegrationTestCase):
             # Create Flavor
             self.flavor_creator = OpenStackFlavor(
                 self.admin_os_creds,
-                FlavorSettings(name=self.guid + '-flavor-name', ram=2048, disk=10, vcpus=2,
+                FlavorSettings(name=self.guid + '-flavor-name', ram=512, disk=10, vcpus=2,
                                metadata=self.flavor_metadata))
             self.flavor_creator.create()
 
@@ -1410,21 +1425,21 @@ class InstanceSecurityGroupTests(OSIntegrationTestCase):
             # Create Image
             # Set any custom parameters sent from the app
             if self.image_metadata:
-                if self.image_metadata['disk_url']:
+                if 'disk_url' in self.image_metadata and self.image_metadata['disk_url']:
                     self.os_image_settings.url = self.image_metadata['disk_url']
-                if self.image_metadata['extra_properties']:
+                if 'extra_properties' in self.image_metadata and self.image_metadata['extra_properties']:
                     self.os_image_settings.extra_properties = self.image_metadata['extra_properties']
 
             # If this is a 3-part image create the kernel and ramdisk images first
             if self.image_metadata:
-                if self.image_metadata['kernel_url']:
+                if 'kernel_url' in self.image_metadata and self.image_metadata['kernel_url']:
                     kernel_image_settings = openstack_tests.cirros_url_image(
                         name=self.os_image_settings.name+'_kernel', url=self.image_metadata['kernel_url'])
                     self.image_creators.append(OpenStackImage(self.os_creds, kernel_image_settings))
                     kernel_image = self.image_creators[-1].create()
                     self.os_image_settings.extra_properties['kernel_id'] = kernel_image.id
 
-                if self.image_metadata['ramdisk_url']:
+                if 'ramdisk_url' in self.image_metadata and self.image_metadata['ramdisk_url']:
                     ramdisk_image_settings = openstack_tests.cirros_url_image(
                         name=self.os_image_settings.name+'_ramdisk', url=self.image_metadata['ramdisk_url'])
                     self.image_creators.append(OpenStackImage(self.os_creds, ramdisk_image_settings))
@@ -1441,7 +1456,7 @@ class InstanceSecurityGroupTests(OSIntegrationTestCase):
             # Create Flavor
             self.flavor_creator = OpenStackFlavor(
                 self.admin_os_creds,
-                FlavorSettings(name=self.guid + '-flavor-name', ram=2048, disk=10, vcpus=2,
+                FlavorSettings(name=self.guid + '-flavor-name', ram=128, disk=10, vcpus=2,
                                metadata=self.flavor_metadata))
             self.flavor_creator.create()
 
@@ -1496,7 +1511,8 @@ class InstanceSecurityGroupTests(OSIntegrationTestCase):
         # Create instance
         instance_settings = VmInstanceSettings(
             name=self.vm_inst_name, flavor=self.flavor_creator.flavor_settings.name, port_settings=[self.port_settings])
-        self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, self.image_creators[-1].image_settings)
+        self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings,
+                                                self.image_creators[-1].image_settings)
         vm_inst = self.inst_creator.create(block=True)
         self.assertIsNotNone(vm_inst)
 
@@ -1522,7 +1538,8 @@ class InstanceSecurityGroupTests(OSIntegrationTestCase):
         # Create instance
         instance_settings = VmInstanceSettings(
             name=self.vm_inst_name, flavor=self.flavor_creator.flavor_settings.name, port_settings=[self.port_settings])
-        self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, self.image_creators[-1].image_settings)
+        self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings,
+                                                self.image_creators[-1].image_settings)
         vm_inst = self.inst_creator.create(block=True)
         self.assertIsNotNone(vm_inst)
 
@@ -1556,7 +1573,8 @@ class InstanceSecurityGroupTests(OSIntegrationTestCase):
         instance_settings = VmInstanceSettings(
             name=self.vm_inst_name, flavor=self.flavor_creator.flavor_settings.name,
             security_group_names=[sec_grp_settings.name], port_settings=[self.port_settings])
-        self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, self.image_creators[-1].image_settings)
+        self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings,
+                                                self.image_creators[-1].image_settings)
         vm_inst = self.inst_creator.create(block=True)
         self.assertIsNotNone(vm_inst)
 
@@ -1582,7 +1600,8 @@ class InstanceSecurityGroupTests(OSIntegrationTestCase):
         # Create instance
         instance_settings = VmInstanceSettings(
             name=self.vm_inst_name, flavor=self.flavor_creator.flavor_settings.name, port_settings=[self.port_settings])
-        self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, self.image_creators[-1].image_settings)
+        self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings,
+                                                self.image_creators[-1].image_settings)
         vm_inst = self.inst_creator.create(block=True)
         self.assertIsNotNone(vm_inst)
 
@@ -1609,7 +1628,8 @@ class InstanceSecurityGroupTests(OSIntegrationTestCase):
         instance_settings = VmInstanceSettings(
             name=self.vm_inst_name, flavor=self.flavor_creator.flavor_settings.name,
             security_group_names=[sec_grp_settings.name], port_settings=[self.port_settings])
-        self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings, self.image_creators[-1].image_settings)
+        self.inst_creator = OpenStackVmInstance(self.os_creds, instance_settings,
+                                                self.image_creators[-1].image_settings)
         vm_inst = self.inst_creator.create(block=True)
         self.assertIsNotNone(vm_inst)
 
@@ -1695,15 +1715,19 @@ class CreateInstanceFromThreePartImage(OSIntegrationTestCase):
             # Create Images
             # Set properties
             properties = {}
-            if self.image_metadata and  self.image_metadata['extra_properties']:
-                properties = self.image_metadata['extra_properties']
+            if self.image_metadata:
+                if 'extra_properties' in self.image_metadata and self.image_metadata['extra_properties']:
+                    properties = self.image_metadata['extra_properties']
 
             # Create the kernel image
             kernel_image_settings = openstack_tests.cirros_url_image(
                 name=self.image_name+'_kernel',
                 url='http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-kernel')
-            if self.image_metadata and self.image_metadata['kernel_url']:
-                kernel_url = self.image_metadata['kernel_url']
+
+            if self.image_metadata:
+                if 'kernel_url' in self.image_metadata and self.image_metadata['kernel_url']:
+                    kernel_image_settings.url = self.image_metadata['kernel_url']
+
             self.image_creators.append(OpenStackImage(self.os_creds, kernel_image_settings))
             kernel_image = self.image_creators[-1].create()
 
@@ -1711,8 +1735,11 @@ class CreateInstanceFromThreePartImage(OSIntegrationTestCase):
             ramdisk_image_settings = openstack_tests.cirros_url_image(
                 name=self.image_name+'_ramdisk',
                 url='http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-initramfs')
-            if self.image_metadata and self.image_metadata['ramdisk_url']:
-                ramdisk_url = self.image_metadata['ramdisk_url']
+
+            if self.image_metadata:
+                if 'ramdisk_url' in self.image_metadata and self.image_metadata['ramdisk_url']:
+                    ramdisk_image_settings.url = self.image_metadata['ramdisk_url']
+
             self.image_creators.append(OpenStackImage(self.os_creds, ramdisk_image_settings))
             ramdisk_image = self.image_creators[-1].create()
             self.assertIsNotNone(ramdisk_image)
@@ -1721,8 +1748,10 @@ class CreateInstanceFromThreePartImage(OSIntegrationTestCase):
             os_image_settings = openstack_tests.cirros_url_image(
                 name=self.image_name,
                 url='http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img')
-            if self.image_metadata and self.image_metadata['disk_url']:
-                umage_url = self.image_metadata['disk_url']
+            if self.image_metadata:
+                if 'disk_url' in self.image_metadata and self.image_metadata['disk_url']:
+                    os_image_settings.url = self.image_metadata['disk_url']
+
             properties['kernel_id'] = kernel_image.id
             properties['ramdisk_id'] = ramdisk_image.id
             os_image_settings.extra_properties = properties
@@ -1733,7 +1762,7 @@ class CreateInstanceFromThreePartImage(OSIntegrationTestCase):
             # Create Flavor
             self.flavor_creator = OpenStackFlavor(
                 self.admin_os_creds,
-                FlavorSettings(name=guid + '-flavor-name', ram=2048, disk=10, vcpus=2, metadata=self.flavor_metadata))
+                FlavorSettings(name=guid + '-flavor-name', ram=128, disk=10, vcpus=2, metadata=self.flavor_metadata))
             self.flavor_creator.create()
 
             # Create Network
@@ -1792,6 +1821,8 @@ class CreateInstanceFromThreePartImage(OSIntegrationTestCase):
         vm_inst = self.inst_creator.create()
         self.assertEquals(1, len(nova_utils.get_servers_by_name(self.nova, instance_settings.name)))
 
+        self.assertTrue(self.inst_creator.vm_active(block=True))
+
         # Delete instance
         nova_utils.delete_vm_instance(self.nova, vm_inst)