From 17721175dad169be4ae4af2bb1310b929f0952e5 Mon Sep 17 00:00:00 2001 From: Yalan Zhang Date: Tue, 14 Jan 2025 22:17:53 -0500 Subject: [PATCH] Test the "--managed-save" option 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 --- .../domain/virsh_managedsave_undefine.cfg | 3 + .../domain/virsh_managedsave_undefine.py | 58 +++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 libvirt/tests/cfg/virsh_cmd/domain/virsh_managedsave_undefine.cfg create mode 100644 libvirt/tests/src/virsh_cmd/domain/virsh_managedsave_undefine.py diff --git a/libvirt/tests/cfg/virsh_cmd/domain/virsh_managedsave_undefine.cfg b/libvirt/tests/cfg/virsh_cmd/domain/virsh_managedsave_undefine.cfg new file mode 100644 index 0000000000..872210d7b5 --- /dev/null +++ b/libvirt/tests/cfg/virsh_cmd/domain/virsh_managedsave_undefine.cfg @@ -0,0 +1,3 @@ +- virsh.managedsave_undefine: + type = "virsh_managedsave_undefine" + start_vm = "yes" diff --git a/libvirt/tests/src/virsh_cmd/domain/virsh_managedsave_undefine.py b/libvirt/tests/src/virsh_cmd/domain/virsh_managedsave_undefine.py new file mode 100644 index 0000000000..d5afdb7d10 --- /dev/null +++ b/libvirt/tests/src/virsh_cmd/domain/virsh_managedsave_undefine.py @@ -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()