def create_snapshot(disk_path, snapshot_name):
"""Create a snapshot in a disk p_w_picpath
:param disk_path: Path to disk p_w_picpath
:param snapshot_name: Name of snapshot in disk p_w_picpath
"""
qemu_img_cmd = ('qemu-img', 'snapshot', '-c', snapshot_name, disk_path)
# NOTE(vish): libvirt changes ownership of p_w_picpaths
execute(*qemu_img_cmd, run_as_root=True)
def delete_snapshot(disk_path, snapshot_name):
"""Create a snapshot in a disk p_w_picpath
:param disk_path: Path to disk p_w_picpath
:param snapshot_name: Name of snapshot in disk p_w_picpath
"""
qemu_img_cmd = ('qemu-img', 'snapshot', '-d', snapshot_name, disk_path)
# NOTE(vish): libvirt changes ownership of p_w_picpaths
execute(*qemu_img_cmd, run_as_root=True)
def extract_snapshot(disk_path, source_fmt, snapshot_name, out_path, dest_fmt):
"""Extract a named snapshot from a disk p_w_picpath
:param disk_path: Path to disk p_w_picpath
:param snapshot_name: Name of snapshot in disk p_w_picpath
:param out_path: Desired path of extracted snapshot
"""
# NOTE(markmc): ISO is just raw to qemu-img
if dest_fmt == 'iso':
dest_fmt = 'raw'
qemu_img_cmd = ('qemu-img', 'convert', '-f', source_fmt, '-O', dest_fmt)
# Conditionally enable compression of snapshots.
if CONF.libvirt_snapshot_compression and dest_fmt == "qcow2":
qemu_img_cmd += ('-c',)
# When snapshot name is omitted we do a basic convert, which
# is used by live snapshots.
if snapshot_name is not None:
qemu_img_cmd += ('-s', snapshot_name)
qemu_img_cmd += (disk_path, out_path)
execute(*qemu_img_cmd)
waring: execute
subprocess.Popen('',shell=True)