Skip to content

Commit

Permalink
Test the "--managed-save" option
Browse files Browse the repository at this point in the history
When the VM have a managedsave file, it can not be undefined without the
"--managed-save" option. This option can remove the managedsave file and
then undefine the VM.

Signed-off-by: Yalan Zhang <[email protected]>
  • Loading branch information
yalzhang committed Jan 16, 2025
1 parent 2d34785 commit 1772117
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
- virsh.managedsave_undefine:
type = "virsh_managedsave_undefine"
start_vm = "yes"
58 changes: 58 additions & 0 deletions libvirt/tests/src/virsh_cmd/domain/virsh_managedsave_undefine.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import os
import logging
from virttest import virsh
from virttest.libvirt_xml import vm_xml

VIRSH_ARGS = {'debug': True, 'ignore_status': False}
LOG = logging.getLogger('avocado.' + __name__)


def run(test, params, env):
"""
Test option: --managed-save
Undefine a vm with or without --managed-save option
1. start a vm, and do managedsave
2. try to undefine the vm without "--managed-save" option, it should fail
3. try to undefine the vm with "--managed-save" option, it succeeds
"""

def vm_undefine_check(vm_name):
"""
Check if vm can be undefined with managed-save option
"""
if not os.path.exists(managed_save_file):
test.fail("Can't find managed save image")
LOG.info("Step2: Undefine the VM without --managed-save option:")
ret = virsh.undefine(vm_name, options='--nvram', ignore_status=True)
LOG.debug("%s", ret)
if not ret.exit_status:
test.fail("Guest shouldn't be undefined"
"while domain managed save image exists!")
LOG.info("Step3: Undefine the VM with --managed-save option:")
ret1 = virsh.undefine(vm_name, options="--managed-save --nvram",
ignore_status=True)
LOG.debug("%s", ret1)
if ret1.exit_status:
test.fail("Guest can't be undefined with "
"managed-save option!")

if os.path.exists(managed_save_file):
test.fail("Managed save image exists after undefining vm!")
# restore and start the vm
bk_xml.define()
vm.start()

vm_name = params.get('main_vm')
managed_save_file = "/var/lib/libvirt/qemu/save/%s.save" % vm_name
vmxml = vm_xml.VMXML.new_from_inactive_dumpxml(vm_name)
bk_xml = vmxml.copy()
try:
vm = env.get_vm(vm_name)
LOG.info("Step1: start the VM and do managedsave:")
if not vm.is_alive:
vm.start()
virsh.managedsave(vm_name, **VIRSH_ARGS)
vm_undefine_check(vm_name)
finally:
bk_xml.sync()

0 comments on commit 1772117

Please sign in to comment.