Merge "libvirt: fix DiskSmallerThanImage when block migrate ephemerals" into stable/newton

This commit is contained in:
Jenkins 2016-10-10 04:20:43 +00:00 committed by Gerrit Code Review
commit 9d7ab8274c
2 changed files with 17 additions and 10 deletions

View File

@ -9252,10 +9252,11 @@ class LibvirtConnTestCase(test.NoDBTestCase):
CONF.image_cache_subdirectory_name)
instance = objects.Instance(**self.test_instance)
disk_info_byname = fake_disk_info_byname(instance)
disk_info = disk_info_byname.values()
# Give the ephemeral disk a non-default name
disk_info_byname['disk.local']['backing_file'] = 'ephemeral_foo'
disk_info_byname['disk.local']['virt_disk_size'] = 1 * units.Gi
disk_info = disk_info_byname.values()
with test.nested(
mock.patch.object(libvirt_driver.libvirt_utils, 'fetch_image'),
@ -9283,8 +9284,7 @@ class LibvirtConnTestCase(test.NoDBTestCase):
verify_base_size_mock.assert_has_calls([
mock.call(root_backing, instance.flavor.root_gb * units.Gi),
mock.call(ephemeral_backing,
instance.flavor.ephemeral_gb * units.Gi)
mock.call(ephemeral_backing, 1 * units.Gi)
])
def test_create_images_and_backing_disk_info_none(self):

View File

@ -6587,12 +6587,19 @@ class LibvirtDriver(driver.ComputeDriver):
instance_disk,
CONF.libvirt.images_type)
if cache_name.startswith('ephemeral'):
image.cache(fetch_func=self._create_ephemeral,
fs_label=cache_name,
os_type=instance.os_type,
filename=cache_name,
size=info['virt_disk_size'],
ephemeral_size=instance.flavor.ephemeral_gb)
# The argument 'size' is used by image.cache to
# validate disk size retrieved from cache against
# the instance disk size (should always return OK)
# and ephemeral_size is used by _create_ephemeral
# to build the image if the disk is not already
# cached.
image.cache(
fetch_func=self._create_ephemeral,
fs_label=cache_name,
os_type=instance.os_type,
filename=cache_name,
size=info['virt_disk_size'],
ephemeral_size=info['virt_disk_size'] / units.Gi)
elif cache_name.startswith('swap'):
inst_type = instance.get_flavor()
swap_mb = inst_type.swap