Add image cache fix patch
Change-Id: Ied268116885ede707a57c10990c5321af40c74ad
This commit is contained in:
parent
a28e0bbdc3
commit
bee16dd9ff
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
Loading…
Reference in New Issue