Since we can't generally shrink incoming images, add extra checks
to ensure oversized images are not allowed through.
All cases when populating the libvirt image cache are now handled,
including the initial download from glance, where we avoid
converting to raw, as that could generate non sparse images
much larger than the downloaded image.
* nova/virt/libvirt/utils.py (fetch_image): Allow passing through
of the max_size parameter.
* nova/virt/images.py (fetch_to_raw): Accept the max_size parameter,
and use it to discard images with larger (virtual) sizes.
* nova/virt/libvirt/imagebackend.py (verify_base_size): A new
refactored function to identify and raise exception to oversized images.
(Raw.create_image): Pass the max_size to the fetch function.
Also enforce virtual image size checking for already fetched images,
as this class (despite the name) can be handling qcow files.
(Qcow2.create_image): Pass the max_size to the fetch function,
or verify the virtual size for the instance as done previously.
(Lvm.create_image): Pass the max_size to the fetch function.
Also check the size before transferring to the volume to improve
efficiency by not even attempting the transfer of oversized images.
(Rbd.create_image): Likewise.
* nova/tests/virt/libvirt/fake_libvirt_utils.py: Support max_size arg.
* nova/tests/virt/libvirt/test_libvirt.py (test_fetch_raw_image):
Add a case to check oversized images are discarded.
* nova/tests/virt/libvirt/test_imagebackend.py
(test_create_image_too_small): Adjust to avoid the fetch size check.
Reviewed: https:/ /review. openstack. org/54765 github. com/openstack/ nova/commit/ f6810be4ae1a6c9 3e7d8017ee67d53 44dfdf4a30
Committed: http://
Submitter: Jenkins
Branch: master
commit f6810be4ae1a6c9 3e7d8017ee67d53 44dfdf4a30
Author: Pádraig Brady <email address hidden>
Date: Fri Sep 27 04:07:14 2013 +0100
ensure we don't boot oversized images
Since we can't generally shrink incoming images, add extra checks
to ensure oversized images are not allowed through.
All cases when populating the libvirt image cache are now handled,
including the initial download from glance, where we avoid
converting to raw, as that could generate non sparse images
much larger than the downloaded image.
* nova/virt/ libvirt/ utils.py (fetch_image): Allow passing through libvirt/ imagebackend. py (verify_base_size): A new create_ image): Pass the max_size to the fetch function. create_ image): Pass the max_size to the fetch function, create_ image): Pass the max_size to the fetch function. create_ image): Likewise. virt/libvirt/ fake_libvirt_ utils.py: Support max_size arg. virt/libvirt/ test_libvirt. py (test_fetch_ raw_image) : virt/libvirt/ test_imagebacke nd.py create_ image_too_ small): Adjust to avoid the fetch size check.
of the max_size parameter.
* nova/virt/images.py (fetch_to_raw): Accept the max_size parameter,
and use it to discard images with larger (virtual) sizes.
* nova/virt/
refactored function to identify and raise exception to oversized images.
(Raw.
Also enforce virtual image size checking for already fetched images,
as this class (despite the name) can be handling qcow files.
(Qcow2.
or verify the virtual size for the instance as done previously.
(Lvm.
Also check the size before transferring to the volume to improve
efficiency by not even attempting the transfer of oversized images.
(Rbd.
* nova/tests/
* nova/tests/
Add a case to check oversized images are discarded.
* nova/tests/
(test_
Fixes bug: 1177830 34853f447feb27d 7aae0e2e717
Fixes bug: 1206081
Change-Id: I3d47adaa2ad074