Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test the "--managed-save" option #6131

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
- virsh.managedsave_undefine:
type = "virsh_managedsave_undefine"
start_vm = "yes"
56 changes: 56 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,56 @@
import os
import logging
from virttest import virsh
from virttest.libvirt_xml import vm_xml
from virttest.utils_test import libvirt

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, debug=True)
libvirt.check_exit_status(ret, expect_error=True)
LOG.info("Step3: Undefine the VM with --managed-save option:")
ret1 = virsh.undefine(vm_name, options="--managed-save --nvram",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

May I ask if '--nvram' option is required? Same question to the first virsh undefine attempt(the failed one) as well.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For uefi guest, the guest can not be undefined successfully with "--nvram" or "--keep-nvram" option.
The option has no impact for guest with seabios. So I added the "--nvram" to make sure the undefine operation is not blocked by the nvram file.

ignore_status=True)
LOG.debug("%s", ret1)
if ret1.exit_status:
test.fail("Guest can't be undefined with "
"managed-save option!")
Comment on lines +31 to +36
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as above.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see above


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()