diff --git a/nova/tests/unit/virt/xenapi/test_vm_utils.py b/nova/tests/unit/virt/xenapi/test_vm_utils.py index e98162fe08..7ad1de750e 100644 --- a/nova/tests/unit/virt/xenapi/test_vm_utils.py +++ b/nova/tests/unit/virt/xenapi/test_vm_utils.py @@ -1447,6 +1447,46 @@ class CreateKernelRamdiskTestCase(VMUtilsTestBase): self.session, self.instance, self.name_label) self.assertEqual(("k", None), result) + def _test_create_kernel_image(self, cache_images): + kernel_id = "kernel" + self.instance["kernel_id"] = kernel_id + + args_kernel = {} + args_kernel['cached-image'] = kernel_id + args_kernel['new-image-uuid'] = "fake_uuid1" + self.flags(cache_images=cache_images, group='xenserver') + + if cache_images == 'all': + uuid.uuid4().AndReturn("fake_uuid1") + self.session.call_plugin('kernel', 'create_kernel_ramdisk', + args_kernel).AndReturn("cached_image") + else: + kernel = {"kernel": {"file": "new_image", "uuid": None}} + vm_utils._fetch_disk_image(self.context, self.session, + self.instance, self.name_label, + kernel_id, 0).AndReturn(kernel) + + self.mox.ReplayAll() + + result = vm_utils._create_kernel_image(self.context, + self.session, + self.instance, + self.name_label, + kernel_id, 0) + + if cache_images == 'all': + self.assertEqual(result, {"kernel": + {"file": "cached_image", "uuid": None}}) + else: + self.assertEqual(result, {"kernel": + {"file": "new_image", "uuid": None}}) + + def test_create_kernel_image_cached_config(self): + self._test_create_kernel_image('all') + + def test_create_kernel_image_uncached_config(self): + self._test_create_kernel_image('none') + class ScanSrTestCase(VMUtilsTestBase): @mock.patch.object(vm_utils, "_scan_sr") diff --git a/nova/virt/xenapi/vm_utils.py b/nova/virt/xenapi/vm_utils.py index 3e9b399310..13061d0388 100644 --- a/nova/virt/xenapi/vm_utils.py +++ b/nova/virt/xenapi/vm_utils.py @@ -1121,7 +1121,7 @@ def _create_kernel_image(context, session, instance, name_label, image_id, Returns: A list of dictionaries that describe VDIs """ filename = "" - if CONF.xenserver.cache_images: + if CONF.xenserver.cache_images != 'none': args = {} args['cached-image'] = image_id args['new-image-uuid'] = str(uuid.uuid4()) @@ -1511,7 +1511,7 @@ def _fetch_disk_image(context, session, instance, name_label, image_id, # Let the plugin copy the correct number of bytes. args['image-size'] = str(vdi_size) - if CONF.xenserver.cache_images: + if CONF.xenserver.cache_images != 'none': args['cached-image'] = image_id filename = session.call_plugin('kernel', 'copy_vdi', args)