# Set the default image settings, then set any custom parameters sent from the app
         os_image_settings = openstack_tests.cirros_url_image(name=self.image_name)
         if self.image_metadata:
-            if self.image_metadata['disk_url']:
+            if 'disk_url' in self.image_metadata and self.image_metadata['disk_url']:
                 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']:
                 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.image_name+'_kernel', url=self.image_metadata['kernel_url'])
                 self.image_creators.append(create_image.OpenStackImage(self.os_creds, kernel_image_settings))
                 kernel_image = self.image_creators[-1].create()
                 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.image_name+'_ramdisk', url=self.image_metadata['ramdisk_url'])
                 self.image_creators.append(create_image.OpenStackImage(self.os_creds, ramdisk_image_settings))
         os_image_settings.extra_properties = {'hw_video_model' :  'vga'}
  
         if self.image_metadata:
-            if self.image_metadata['disk_url']:
+            if 'disk_url' in self.image_metadata and self.image_metadata['disk_url']:
                 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']:
                 os_image_settings.extra_properties = dict(os_image_settings.extra_properties.items()
                     + self.image_metadata['extra_properties'].items())
 
         # 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.image_name+'_kernel', url=self.image_metadata['kernel_url'])
                 self.image_creators.append(create_image.OpenStackImage(self.os_creds, kernel_image_settings))
                 kernel_image = self.image_creators[-1].create()
                 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.image_name+'_ramdisk', url=self.image_metadata['ramdisk_url'])
                 self.image_creators.append(create_image.OpenStackImage(self.os_creds, ramdisk_image_settings))
         # Set the default image settings, then set any custom parameters sent from the app
         url_image_settings = openstack_tests.cirros_url_image('foo')
         if self.image_metadata:
-            if self.image_metadata['disk_url']:
+            if 'disk_url' in self.image_metadata and self.image_metadata['disk_url']:
                 url_image_settings.url = self.image_metadata['disk_url']
 
         # Download the file of the image
 
         # Set extra properties sent from the app (if any)
         if self.image_metadata:
-            if self.image_metadata['extra_properties']:
+            if 'extra_properties' in self.image_metadata and self.image_metadata['extra_properties']:
                 file_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_file = file_utils.download(self.image_metadata['kernel_url'], self.tmp_dir)
                 kernel_image_settings = openstack_tests.file_image_test_settings(
                     name=self.image_name+'_kernel', file_path=kernel_image_file.name)
                 kernel_image = self.image_creators[-1].create()
                 file_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_file = file_utils.download(self.image_metadata['ramdisk_url'], self.tmp_dir)
                 ramdisk_image_settings = openstack_tests.file_image_test_settings(
                     name=self.image_name+'_ramdisk', file_path=ramdisk_image_file.name)
         # Set the default image settings, then set any custom parameters sent from the app
         os_image_settings = openstack_tests.cirros_url_image(name=self.image_name)
         if self.image_metadata:
-            if self.image_metadata['disk_url']:
+            if 'disk_url' in self.image_metadata and self.image_metadata['disk_url']:
                 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']:
                 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.image_name+'_kernel', url=self.image_metadata['kernel_url'])
                 self.image_creators.append(create_image.OpenStackImage(self.os_creds, kernel_image_settings))
                 kernel_image = self.image_creators[-1].create()
                 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.image_name+'_ramdisk', url=self.image_metadata['ramdisk_url'])
                 self.image_creators.append(create_image.OpenStackImage(self.os_creds, ramdisk_image_settings))
         # Set the default image settings, then set any custom parameters sent from the app
         os_image_settings = openstack_tests.cirros_url_image(name=self.image_name)
         if self.image_metadata:
-            if self.image_metadata['disk_url']:
+            if 'disk_url' in self.image_metadata and self.image_metadata['disk_url']:
                 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']:
                 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.image_name+'_kernel', url=self.image_metadata['kernel_url'])
                 self.image_creators.append(create_image.OpenStackImage(self.os_creds, kernel_image_settings))
                 kernel_image = self.image_creators[-1].create()
                 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.image_name+'_ramdisk', url=self.image_metadata['ramdisk_url'])
                 self.image_creators.append(create_image.OpenStackImage(self.os_creds, ramdisk_image_settings))
         """
         # 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_image_settings.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(create_image.OpenStackImage(self.os_creds, kernel_image_settings))
         kernel_image = self.image_creators[-1].create()
         self.assertIsNotNone(kernel_image)
         # Create the ramdisk image
         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_image_settings.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(create_image.OpenStackImage(self.os_creds, ramdisk_image_settings))
         ramdisk_image = self.image_creators[-1].create()
         self.assertIsNotNone(ramdisk_image)
         # Create the main image
         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']:
-            os_image_settings.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
         """
         # 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_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_url = self.image_metadata['kernel_url']
         kernel_image_file = file_utils.download(kernel_url, self.tmp_dir)
         kernel_file_image_settings = openstack_tests.file_image_test_settings(
             name=self.image_name+'_kernel', file_path=kernel_image_file.name)
 
         # Create the ramdisk image
         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_url = self.image_metadata['ramdisk_url']
         ramdisk_image_file = file_utils.download(ramdisk_url, self.tmp_dir)
         ramdisk_file_image_settings = openstack_tests.file_image_test_settings(
             name=self.image_name+'_ramdisk', file_path=ramdisk_image_file.name)
 
         # Create the main image
         image_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']:
+                umage_url = self.image_metadata['disk_url']
         image_file = file_utils.download(image_url, self.tmp_dir)
         file_image_settings = openstack_tests.file_image_test_settings(name=self.image_name, file_path=image_file.name)
         properties['kernel_id'] = kernel_image.id
 
         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))
             # 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))
             # 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))
             # 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))
             # 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))
             # 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))
             # 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))
             # 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_image_settings.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()
             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_image_settings.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()
             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']:
-                os_image_settings.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
 
             # Create Image
             os_image_settings = openstack_tests.ubuntu_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']:
                     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']:
                     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=os_image_settings.name+'_kernel', url=self.image_metadata['kernel_url'])
                     self.image_creators.append(create_image.OpenStackImage(self.os_creds, kernel_image_settings))
                     kernel_image = self.image_creators[-1].create()
                     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=os_image_settings.name+'_ramdisk', url=self.image_metadata['ramdisk_url'])
                     self.image_creators.append(create_image.OpenStackImage(self.os_creds, ramdisk_image_settings))