From 3a78cecb4e9fa084a56cdc8ad38087e35b8bd039 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Thu, 26 Jun 2025 14:57:42 +0100 Subject: [PATCH] tests: Streamline (compute) images test Change-Id: If3cf9b60c15455e1b7202205edadc15547035f49 Signed-off-by: Stephen Finucane --- .../tests/functional/compute/v2/test_image.py | 94 ++++++++++--------- 1 file changed, 49 insertions(+), 45 deletions(-) diff --git a/openstack/tests/functional/compute/v2/test_image.py b/openstack/tests/functional/compute/v2/test_image.py index 864442bb0..51b720feb 100644 --- a/openstack/tests/functional/compute/v2/test_image.py +++ b/openstack/tests/functional/compute/v2/test_image.py @@ -11,82 +11,84 @@ # under the License. +from openstack.compute.v2 import image as _image from openstack.tests.functional import base from openstack.tests.functional.image.v2.test_image import TEST_IMAGE_NAME class TestImage(base.BaseFunctionalTest): - def test_images(self): + def setUp(self): + super().setUp() + + # get a non-test image to work with + images = self.operator_cloud.compute.images() + self.image = next(images) + + if self.image.name == TEST_IMAGE_NAME: + self.image = next(images) + + def test_image(self): + # list all images + images = list(self.operator_cloud.compute.images()) self.assertGreater(len(images), 0) for image in images: self.assertIsInstance(image.id, str) - def _get_non_test_image(self): - images = self.operator_cloud.compute.images() - image = next(images) + # find image by name - if image.name == TEST_IMAGE_NAME: - image = next(images) + image = self.operator_cloud.compute.find_image(self.image.name) + self.assertIsInstance(image, _image.Image) + self.assertEqual(self.image.id, image.id) + self.assertEqual(self.image.name, image.name) - return image + # get image by ID - def test_find_image(self): - image = self._get_non_test_image() - self.assertIsNotNone(image) - sot = self.operator_cloud.compute.find_image(image.id) - self.assertEqual(image.id, sot.id) - self.assertEqual(image.name, sot.name) - - def test_get_image(self): - image = self._get_non_test_image() - self.assertIsNotNone(image) - sot = self.operator_cloud.compute.get_image(image.id) - self.assertEqual(image.id, sot.id) - self.assertEqual(image.name, sot.name) - self.assertIsNotNone(image.links) - self.assertIsNotNone(image.min_disk) - self.assertIsNotNone(image.min_ram) - self.assertIsNotNone(image.metadata) - self.assertIsNotNone(image.progress) - self.assertIsNotNone(image.status) + image = self.operator_cloud.compute.get_image(self.image.id) + self.assertIsInstance(image, _image.Image) + self.assertEqual(self.image.id, image.id) + self.assertEqual(self.image.name, image.name) def test_image_metadata(self): - image = self._get_non_test_image() - # delete pre-existing metadata + self.operator_cloud.compute.delete_image_metadata( - image, image.metadata.keys() + self.image, self.image.metadata.keys() ) - image = self.operator_cloud.compute.get_image_metadata(image) + image = self.operator_cloud.compute.get_image_metadata(self.image) self.assertFalse(image.metadata) - # get metadata - image = self.operator_cloud.compute.get_image_metadata(image) + # get metadata (should be empty) + + image = self.operator_cloud.compute.get_image_metadata(self.image) self.assertFalse(image.metadata) # set no metadata - self.operator_cloud.compute.set_image_metadata(image) - image = self.operator_cloud.compute.get_image_metadata(image) + + self.operator_cloud.compute.set_image_metadata(self.image) + image = self.operator_cloud.compute.get_image_metadata(self.image) self.assertFalse(image.metadata) # set empty metadata - self.operator_cloud.compute.set_image_metadata(image, k0='') - image = self.operator_cloud.compute.get_image_metadata(image) + + self.operator_cloud.compute.set_image_metadata(self.image, k0='') + image = self.operator_cloud.compute.get_image_metadata(self.image) self.assertIn('k0', image.metadata) self.assertEqual('', image.metadata['k0']) # set metadata - self.operator_cloud.compute.set_image_metadata(image, k1='v1') - image = self.operator_cloud.compute.get_image_metadata(image) + + self.operator_cloud.compute.set_image_metadata(self.image, k1='v1') + image = self.operator_cloud.compute.get_image_metadata(self.image) self.assertTrue(image.metadata) self.assertEqual(2, len(image.metadata)) self.assertIn('k1', image.metadata) self.assertEqual('v1', image.metadata['k1']) # set more metadata - self.operator_cloud.compute.set_image_metadata(image, k2='v2') - image = self.operator_cloud.compute.get_image_metadata(image) + + self.operator_cloud.compute.set_image_metadata(self.image, k2='v2') + image = self.operator_cloud.compute.get_image_metadata(self.image) self.assertTrue(image.metadata) self.assertEqual(3, len(image.metadata)) self.assertIn('k1', image.metadata) @@ -95,8 +97,9 @@ class TestImage(base.BaseFunctionalTest): self.assertEqual('v2', image.metadata['k2']) # update metadata - self.operator_cloud.compute.set_image_metadata(image, k1='v1.1') - image = self.operator_cloud.compute.get_image_metadata(image) + + self.operator_cloud.compute.set_image_metadata(self.image, k1='v1.1') + image = self.operator_cloud.compute.get_image_metadata(self.image) self.assertTrue(image.metadata) self.assertEqual(3, len(image.metadata)) self.assertIn('k1', image.metadata) @@ -104,9 +107,10 @@ class TestImage(base.BaseFunctionalTest): self.assertIn('k2', image.metadata) self.assertEqual('v2', image.metadata['k2']) - # delete metadata + # delete all metadata (cleanup) + self.operator_cloud.compute.delete_image_metadata( - image, image.metadata.keys() + self.image, image.metadata.keys() ) - image = self.operator_cloud.compute.get_image_metadata(image) + image = self.operator_cloud.compute.get_image_metadata(self.image) self.assertFalse(image.metadata)