diff options
author | Brian Waldon <bcwaldon@gmail.com> | 2012-01-12 21:28:49 -0800 |
---|---|---|
committer | Brian Waldon <bcwaldon@gmail.com> | 2012-01-12 21:31:27 -0800 |
commit | ffdabac84c3a8dc528a6b64280cddf82f79463d8 (patch) | |
tree | a64414c29add32839c1f16f56bc363b2c0ed3559 | |
parent | 6d80851279052a30b98e465106f158cb2afdb6a5 (diff) | |
download | nova-ffdabac84c3a8dc528a6b64280cddf82f79463d8.tar.gz nova-ffdabac84c3a8dc528a6b64280cddf82f79463d8.tar.xz nova-ffdabac84c3a8dc528a6b64280cddf82f79463d8.zip |
Clean up disk_format mapping in xenapi.vm_utils
Change-Id: I0ffd375c7655d66d807b10ebdb16f17024309749
-rw-r--r-- | nova/tests/test_xenapi.py | 50 | ||||
-rw-r--r-- | nova/virt/xenapi/vm_utils.py | 47 |
2 files changed, 33 insertions, 64 deletions
diff --git a/nova/tests/test_xenapi.py b/nova/tests/test_xenapi.py index 12e15c991..77cde2a02 100644 --- a/nova/tests/test_xenapi.py +++ b/nova/tests/test_xenapi.py @@ -1042,45 +1042,21 @@ class XenAPIDetermineDiskImageTestCase(test.TestCase): self.fake_instance.os_type = 'linux' self.fake_instance.architecture = 'x86-64' - def assert_disk_type(self, disk_type): - ctx = context.RequestContext('fake', 'fake') - fake_glance = glance_stubs.FakeGlance('') - image_meta = fake_glance.get_image_meta(self.fake_instance.image_ref) - dt = vm_utils.VMHelper.determine_disk_image_type(image_meta) - self.assertEqual(disk_type, dt) - - def test_instance_disk(self): - """If a kernel is specified, the image type is DISK (aka machine).""" - self.fake_instance.image_ref = glance_stubs.FakeGlance.IMAGE_MACHINE - self.fake_instance.kernel_id = glance_stubs.FakeGlance.IMAGE_KERNEL - self.assert_disk_type(vm_utils.ImageType.DISK) - - def test_instance_disk_raw(self): - """ - If the kernel isn't specified, and we're not using Glance, then - DISK_RAW is assumed. - """ - self.fake_instance.image_ref = glance_stubs.FakeGlance.IMAGE_RAW - self.fake_instance.kernel_id = None - self.assert_disk_type(vm_utils.ImageType.DISK_RAW) + def assert_disk_type(self, image_meta, expected_disk_type): + actual = vm_utils.VMHelper.determine_disk_image_type(image_meta) + self.assertEqual(expected_disk_type, actual) - def test_glance_disk_raw(self): - """ - If we're using Glance, then defer to the image_type field, which in - this case will be 'raw'. - """ - self.fake_instance.image_ref = glance_stubs.FakeGlance.IMAGE_RAW - self.fake_instance.kernel_id = None - self.assert_disk_type(vm_utils.ImageType.DISK_RAW) + def test_machine(self): + image_meta = {'id': 'a', 'disk_format': 'ami'} + self.assert_disk_type(image_meta, vm_utils.ImageType.DISK) - def test_glance_disk_vhd(self): - """ - If we're using Glance, then defer to the image_type field, which in - this case will be 'vhd'. - """ - self.fake_instance.image_ref = glance_stubs.FakeGlance.IMAGE_VHD - self.fake_instance.kernel_id = None - self.assert_disk_type(vm_utils.ImageType.DISK_VHD) + def test_raw(self): + image_meta = {'id': 'a', 'disk_format': 'raw'} + self.assert_disk_type(image_meta, vm_utils.ImageType.DISK_RAW) + + def test_vhd(self): + image_meta = {'id': 'a', 'disk_format': 'vhd'} + self.assert_disk_type(image_meta, vm_utils.ImageType.DISK_VHD) class CompareVersionTestCase(test.TestCase): diff --git a/nova/virt/xenapi/vm_utils.py b/nova/virt/xenapi/vm_utils.py index 6cda61204..3c03d2a59 100644 --- a/nova/virt/xenapi/vm_utils.py +++ b/nova/virt/xenapi/vm_utils.py @@ -705,35 +705,28 @@ class VMHelper(HelperBase): 2. If we're not using Glance, then we need to deduce this based on whether a kernel_id is specified. """ - def log_disk_format(image_type): - pretty_format = {ImageType.KERNEL: 'KERNEL', - ImageType.RAMDISK: 'RAMDISK', - ImageType.DISK: 'DISK', - ImageType.DISK_RAW: 'DISK_RAW', - ImageType.DISK_VHD: 'DISK_VHD', - ImageType.DISK_ISO: 'DISK_ISO'} - disk_format = pretty_format[image_type] - image_ref = image_meta['id'] - LOG.debug(_("Detected %(disk_format)s format for image " - "%(image_ref)s") % locals()) - - def determine_from_image_meta(): - glance_disk_format2nova_type = { - 'ami': ImageType.DISK, - 'aki': ImageType.KERNEL, - 'ari': ImageType.RAMDISK, - 'raw': ImageType.DISK_RAW, - 'vhd': ImageType.DISK_VHD, - 'iso': ImageType.DISK_ISO} - disk_format = image_meta['disk_format'] - try: - return glance_disk_format2nova_type[disk_format] - except KeyError: - raise exception.InvalidDiskFormat(disk_format=disk_format) + disk_format = image_meta['disk_format'] + + disk_format_map = { + 'ami': 'DISK', + 'aki': 'KERNEL', + 'ari': 'RAMDISK', + 'raw': 'DISK_RAW', + 'vhd': 'DISK_VHD', + 'iso': 'DISK_ISO', + } + + try: + image_type_str = disk_format_map[disk_format] + except KeyError: + raise exception.InvalidDiskFormat(disk_format=disk_format) + + image_type = getattr(ImageType, image_type_str) - image_type = determine_from_image_meta() + image_ref = image_meta['id'] + msg = _("Detected %(image_type_str)s format for image %(image_ref)s") + LOG.debug(msg % locals()) - log_disk_format(image_type) return image_type @classmethod |