diff --git a/deployment_scripts/compute_post_deployment.py b/deployment_scripts/compute_post_deployment.py index 26b0613..469e6b4 100755 --- a/deployment_scripts/compute_post_deployment.py +++ b/deployment_scripts/compute_post_deployment.py @@ -253,6 +253,7 @@ def create_novacompute_conf(himn, username, password, public_ip, services_ssl): cf.set('xenserver', 'vif_driver', 'nova.virt.xenapi.vif.XenAPIOpenVswitchDriver') cf.set('xenserver', 'ovs_integration_bridge', INT_BRIDGE) + cf.set('xenserver', 'cache_images', 'none') cf.write(open(filename, 'w')) except Exception: reportError('Cannot set configurations to %s' % filename) @@ -446,7 +447,8 @@ def patch_compute_xenapi(): '%s/patchset/nova-neutron-race-condition.patch' % patchset_dir, '%s/patchset/ovs-interim-bridge.patch' % patchset_dir, '%s/patchset/neutron-security-group.patch' % patchset_dir, - '%s/patchset/speed-up-writing-config-drive.patch' % patchset_dir] + '%s/patchset/speed-up-writing-config-drive.patch' % patchset_dir, + '%s/patchset/support-disable-image-cache.patch' % patchset_dir] for patch_file in patchfile_list: execute('patch', '-d', DIST_PACKAGES_DIR, '-p1', '-i', patch_file) diff --git a/deployment_scripts/patchset/support-disable-image-cache.patch b/deployment_scripts/patchset/support-disable-image-cache.patch new file mode 100644 index 0000000..81c6759 --- /dev/null +++ b/deployment_scripts/patchset/support-disable-image-cache.patch @@ -0,0 +1,73 @@ +diff --git a/nova/tests/unit/virt/xenapi/test_vm_utils.py b/nova/tests/unit/virt/xenapi/test_vm_utils.py +index e15cc53..77a1968 100644 +--- a/nova/tests/unit/virt/xenapi/test_vm_utils.py ++++ b/nova/tests/unit/virt/xenapi/test_vm_utils.py +@@ -1437,6 +1437,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 c8fdc52..5312467 100644 +--- a/nova/virt/xenapi/vm_utils.py ++++ b/nova/virt/xenapi/vm_utils.py +@@ -1182,7 +1182,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()) +@@ -1572,7 +1572,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) +