summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Waldon <bcwaldon@gmail.com>2012-01-12 21:28:49 -0800
committerBrian Waldon <bcwaldon@gmail.com>2012-01-12 21:31:27 -0800
commitffdabac84c3a8dc528a6b64280cddf82f79463d8 (patch)
treea64414c29add32839c1f16f56bc363b2c0ed3559
parent6d80851279052a30b98e465106f158cb2afdb6a5 (diff)
downloadnova-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.py50
-rw-r--r--nova/virt/xenapi/vm_utils.py47
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