Added image_settings parameter to get_image().
[snaps.git] / snaps / openstack / tests / create_image_tests.py
index cadbe5c..7a6db86 100644 (file)
@@ -12,6 +12,7 @@
 # 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.
+from glanceclient.exc import HTTPBadRequest
 
 try:
     from urllib.request import URLError
@@ -315,8 +316,8 @@ class CreateImageSuccessTests(OSIntegrationTestCase):
         created_image = self.image_creator.create()
         self.assertIsNotNone(created_image)
 
-        retrieved_image = glance_utils.get_image(self.glance,
-                                                 self.image_settings.name)
+        retrieved_image = glance_utils.get_image(
+            self.glance, image_settings=self.image_settings)
         self.assertIsNotNone(retrieved_image)
         self.assertEqual(created_image.size, retrieved_image.size)
         self.assertEqual(get_image_size(self.image_settings),
@@ -336,8 +337,8 @@ class CreateImageSuccessTests(OSIntegrationTestCase):
         created_image = self.image_creator.create()
         self.assertIsNotNone(created_image)
 
-        retrieved_image = glance_utils.get_image(self.glance,
-                                                 self.image_settings.name)
+        retrieved_image = glance_utils.get_image(
+            self.glance, image_settings=self.image_settings)
         self.assertIsNotNone(retrieved_image)
         self.assertEqual(self.image_creator.get_image().size,
                          retrieved_image.size)
@@ -369,7 +370,7 @@ class CreateImageSuccessTests(OSIntegrationTestCase):
             self.assertEqual(self.image_name, created_image.name)
 
             retrieved_image = glance_utils.get_image(
-                self.glance, file_image_settings.name)
+                self.glance, image_settings=file_image_settings)
             self.assertIsNotNone(retrieved_image)
             self.assertEqual(self.image_creator.get_image().size,
                              retrieved_image.size)
@@ -393,8 +394,8 @@ class CreateImageSuccessTests(OSIntegrationTestCase):
         created_image = self.image_creator.create()
         self.assertIsNotNone(created_image)
 
-        retrieved_image = glance_utils.get_image(self.glance,
-                                                 self.image_settings.name)
+        retrieved_image = glance_utils.get_image(
+            self.glance, image_settings=self.image_settings)
         self.assertIsNotNone(retrieved_image)
         self.assertEqual(self.image_creator.get_image().size,
                          retrieved_image.size)
@@ -405,7 +406,7 @@ class CreateImageSuccessTests(OSIntegrationTestCase):
         glance_utils.delete_image(self.glance, created_image)
 
         self.assertIsNone(glance_utils.get_image(
-            self.glance, self.image_creator.image_settings.name))
+            self.glance, image_settings=self.image_creator.image_settings))
 
         # Must not throw an exception when attempting to cleanup non-existent
         # image
@@ -421,8 +422,8 @@ class CreateImageSuccessTests(OSIntegrationTestCase):
                                                          self.image_settings)
         image1 = self.image_creator.create()
 
-        retrieved_image = glance_utils.get_image(self.glance,
-                                                 self.image_settings.name)
+        retrieved_image = glance_utils.get_image(
+            self.glance, image_settings=self.image_settings)
         self.assertIsNotNone(retrieved_image)
         self.assertEqual(self.image_creator.get_image().size,
                          retrieved_image.size)
@@ -448,8 +449,8 @@ class CreateImageSuccessTests(OSIntegrationTestCase):
                                                          self.image_settings)
         image1 = self.image_creator.create()
 
-        retrieved_image = glance_utils.get_image(self.glance,
-                                                 self.image_settings.name)
+        retrieved_image = glance_utils.get_image(
+            self.glance, image_settings=self.image_settings)
         self.assertIsNotNone(retrieved_image)
         self.assertEqual(self.image_creator.get_image().size,
                          retrieved_image.size)
@@ -514,7 +515,29 @@ class CreateImageNegativeTests(OSIntegrationTestCase):
                                        img_format=os_image_settings.format,
                                        url="http://foo.bar"))
 
-        with self.assertRaises(URLError):
+        try:
+            self.image_creator.create()
+        except HTTPBadRequest:
+            pass
+        except URLError:
+            pass
+        except Exception as e:
+            self.fail('Invalid Exception ' + str(e))
+
+    def test_bad_image_image_type(self):
+        """
+        Expect an ImageCreationError when the image type bad
+        """
+        os_image_settings = openstack_tests.cirros_image_settings(
+            name=self.image_name)
+        self.image_creator = create_image.OpenStackImage(
+            self.os_creds,
+            create_image.ImageSettings(name=os_image_settings.name,
+                                       image_user=os_image_settings.image_user,
+                                       img_format='foo',
+                                       url=os_image_settings.url))
+
+        with self.assertRaises(Exception):
             self.image_creator.create()
 
     def test_bad_image_file(self):
@@ -593,20 +616,22 @@ class CreateMultiPartImageTests(OSIntegrationTestCase):
             image_creator.create()
 
             main_image = glance_utils.get_image(self.glance,
-                                                image_settings.name)
+                                                image_settings=image_settings)
             self.assertIsNotNone(main_image)
             self.assertIsNotNone(image_creator.get_image())
             self.assertEqual(image_creator.get_image().id, main_image.id)
 
             kernel_image = glance_utils.get_image(
-                self.glance, image_settings.kernel_image_settings.name)
+                self.glance,
+                image_settings=image_settings.kernel_image_settings)
             self.assertIsNotNone(kernel_image)
             self.assertIsNotNone(image_creator.get_kernel_image())
             self.assertEqual(kernel_image.id,
                              image_creator.get_kernel_image().id)
 
             ramdisk_image = glance_utils.get_image(
-                self.glance, image_settings.ramdisk_image_settings.name)
+                self.glance,
+                image_settings=image_settings.ramdisk_image_settings)
             self.assertIsNotNone(ramdisk_image)
             self.assertIsNotNone(image_creator.get_ramdisk_image())
             self.assertEqual(ramdisk_image.id,
@@ -619,11 +644,15 @@ class CreateMultiPartImageTests(OSIntegrationTestCase):
         """
         Tests the creation of a 3-part OpenStack image from files.
         """
+        file_only = False
+
         # Set properties
         properties = {}
         if self.glance_test_meta:
             if 'extra_properties' in self.glance_test_meta:
                 properties = self.glance_test_meta['extra_properties']
+            if 'disk_file' in self.glance_test_meta:
+                file_only = True
 
         # Create the kernel image
         kernel_file_name = None
@@ -635,9 +664,13 @@ class CreateMultiPartImageTests(OSIntegrationTestCase):
         else:
             kernel_url = openstack_tests.CIRROS_DEFAULT_KERNEL_IMAGE_URL
 
-        if not kernel_file_name:
+        if not kernel_file_name and not file_only:
             kernel_file_name = file_utils.download(kernel_url,
                                                    self.tmp_dir).name
+        else:
+            logger.warn('Will not download the kernel image.'
+                        ' Cannot execute test')
+            return
 
         kernel_file_image_settings = openstack_tests.file_image_test_settings(
             name=self.image_name + '_kernel', file_path=kernel_file_name)
@@ -657,9 +690,13 @@ class CreateMultiPartImageTests(OSIntegrationTestCase):
         elif 'ramdisk_url' in self.glance_test_meta:
             ramdisk_url = self.glance_test_meta['ramdisk_url']
 
-        if not ramdisk_file_name:
+        if not ramdisk_file_name and not file_only:
             ramdisk_file_name = file_utils.download(ramdisk_url,
                                                     self.tmp_dir).name
+        else:
+            logger.warn('Will not download the ramdisk image.'
+                        ' Cannot execute test')
+            return
 
         ramdisk_file_image_settings = openstack_tests.file_image_test_settings(
             name=self.image_name + '_ramdisk', file_path=ramdisk_file_name)
@@ -678,8 +715,12 @@ class CreateMultiPartImageTests(OSIntegrationTestCase):
         elif 'disk_url' in self.glance_test_meta:
             disk_url = self.glance_test_meta['disk_url']
 
-        if not disk_file_name:
+        if not disk_file_name and not file_only:
             disk_file_name = file_utils.download(disk_url, self.tmp_dir).name
+        else:
+            logger.warn('Will not download the disk file image.'
+                        ' Cannot execute test')
+            return
 
         file_image_settings = openstack_tests.file_image_test_settings(
             name=self.image_name, file_path=disk_file_name)
@@ -693,8 +734,8 @@ class CreateMultiPartImageTests(OSIntegrationTestCase):
         self.assertIsNotNone(created_image)
         self.assertEqual(self.image_name, created_image.name)
 
-        retrieved_image = glance_utils.get_image(self.glance,
-                                                 file_image_settings.name)
+        retrieved_image = glance_utils.get_image(
+            self.glance, image_settings=file_image_settings)
         self.assertIsNotNone(retrieved_image)
         self.assertEqual(self.image_creators[-1].get_image().size,
                          retrieved_image.size)
@@ -766,8 +807,8 @@ class CreateMultiPartImageTests(OSIntegrationTestCase):
             self.assertIsNotNone(created_image)
             self.assertEqual(self.image_name, created_image.name)
 
-            retrieved_image = glance_utils.get_image(self.glance,
-                                                     os_image_settings.name)
+            retrieved_image = glance_utils.get_image(
+                self.glance, image_settings=os_image_settings)
             self.assertIsNotNone(retrieved_image)
 
             self.assertEqual(self.image_creators[-1].get_image().size,