cinder.image.image_utils module

Helper methods to deal with images.

This is essentially a copy from nova.virt.images.py Some slight modifications, but at some point we should look at maybe pushing this up to Oslo

class TemporaryImages(image_service: cinder.image.glance.GlanceImageService)

Bases: object

Manage temporarily downloaded images to avoid downloading it twice.

In the ‘with TemporaryImages.fetch(image_service, ctx, image_id) as tmp’ clause, ‘tmp’ can be used as the downloaded image path. In addition, image_utils.fetch() will use the pre-fetched image by the TemporaryImages. This is useful to inspect image contents before conversion.

classmethod fetch(image_service: cinder.image.glance.GlanceImageService, context: cinder.context.RequestContext, image_id: str, suffix: Optional[str] = '')Generator[str, None, None]
static for_image_service(image_service: cinder.image.glance.GlanceImageService)cinder.image.image_utils.TemporaryImages
get(context: cinder.context.RequestContext, image_id: str)
check_available_space(dest: str, image_size: int, image_id: str)None
check_qemu_img_version(minimum_version: str)None
check_virtual_size(virtual_size: float, volume_size: int, image_id: str)int
cleanup_temporary_file(backend_name: str)None
coalesce_chain(vhd_chain: List[str])str
coalesce_vhd(vhd_path: str)None
convert_image(source: str, dest: str, out_format: str, out_subformat: Optional[str] = None, src_format: Optional[str] = None, run_as_root: bool = True, throttle=None, cipher_spec: Optional[dict] = None, passphrase_file: Optional[str] = None, compress: bool = False, src_passphrase_file: Optional[str] = None)None
create_temporary_file(*args: str, **kwargs: str)str
decode_cipher(cipher_spec: str, key_size: int)Dict[str, str]

Decode a dm-crypt style cipher specification string

The assumed format being cipher-chainmode-ivmode, similar to that documented under linux/Documentation/admin-guide/device-mapper/dm-crypt.txt in the kernel source tree. Cinder does not support the [:keycount] or [:ivopts] options.

discover_vhd_chain(directory: str)List[str]
extract_targz(archive_name: str, target: str)None
fetch(context: cinder.context.RequestContext, image_service: cinder.image.glance.GlanceImageService, image_id: str, path: str, _user_id, _project_id)None
fetch_to_raw(context: cinder.context.RequestContext, image_service: cinder.image.glance.GlanceImageService, image_id: str, dest: str, blocksize: int, user_id: Optional[str] = None, project_id: Optional[str] = None, size: Optional[int] = None, run_as_root: bool = True)None
fetch_to_vhd(context: cinder.context.RequestContext, image_service: cinder.image.glance.GlanceImageService, image_id: str, dest: str, blocksize: int, volume_subformat: Optional[str] = None, user_id: Optional[str] = None, project_id: Optional[str] = None, run_as_root: bool = True)None
fetch_to_volume_format(context: cinder.context.RequestContext, image_service: cinder.image.glance.GlanceImageService, image_id: str, dest: str, volume_format: str, blocksize: int, volume_subformat: Optional[str] = None, user_id: Optional[str] = None, project_id: Optional[str] = None, size: Optional[int] = None, run_as_root: bool = True)None
fetch_verify_image(context: cinder.context.RequestContext, image_service: cinder.image.glance.GlanceImageService, image_id: str, dest: str)None
fix_vhd_chain(vhd_chain: List[str])None
fixup_disk_format(disk_format: str)str

Return the format to be provided to qemu-img convert.

from_qemu_img_disk_format(disk_format: str)str

Return the conventional format derived from qemu-img format.

get_qemu_data(image_id: str, has_meta: bool, disk_format_raw: bool, dest: str, run_as_root: bool, force_share: bool = False)oslo_utils.imageutils.QemuImgInfo
get_qemu_img_version()Optional[List[int]]

The qemu-img version will be cached until the process is restarted.

get_vhd_size(vhd_path: str)int
is_xenserver_format(image_meta: dict)bool
qemu_img_info(path: str, run_as_root: bool = True, force_share: bool = False)oslo_utils.imageutils.QemuImgInfo

Return an object containing the parsed output from qemu-img info.

qemu_img_supports_force_share()bool
replace_xenserver_image_with_coalesced_vhd(image_file: str)None
resize_image(source: str, size: int, run_as_root: bool = False, file_format: Optional[str] = None)None

Changes the virtual size of the image.

resize_vhd(vhd_path: str, size: int, journal: str)None
set_vhd_parent(vhd_path: str, parentpath: str)None
temporary_dir()AbstractContextManager[str]
temporary_file(*args: str, **kwargs)Generator[str, None, None]
upload_volume(context: cinder.context.RequestContext, image_service: cinder.image.glance.GlanceImageService, image_meta: dict, volume_path: str, volume_format: str = 'raw', run_as_root: bool = True, compress: bool = True, store_id: Optional[str] = None, base_image_ref: Optional[str] = None)None
validate_stores_id(context: cinder.context.RequestContext, image_service_store_id: str)None
verify_glance_image_signature(context: cinder.context.RequestContext, image_service: cinder.image.glance.GlanceImageService, image_id: str, path: str)bool