本文整理汇总了Python中virttest.virsh.resume函数的典型用法代码示例。如果您正苦于以下问题:Python resume函数的具体用法?Python resume怎么用?Python resume使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了resume函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: edit_vcpu
def edit_vcpu(source, guest_name):
"""
Modify vm's cpu information by virsh edit command.
:param source : virsh edit's option.
:param guest_name : vm's name.
:return: True if edit successed,False if edit failed.
"""
dic_mode = {
"edit": ":%s /[0-9]*<\/vcpu>/" + expected_vcpu + "<\/vcpu>",
"recover": ":%s /[0-9]*<\/vcpu>/" + original_vcpu + "<\/vcpu>"}
status = modify_vcpu(source, dic_mode["edit"])
if not status:
return status
if params.get("paused_after_start_vm") == "yes":
virsh.resume(guest_name, ignore_status=True)
virsh.destroy(guest_name)
elif params.get("start_vm") == "yes":
virsh.destroy(guest_name)
vcpus = vm.dominfo()["CPU(s)"]
# Recover cpuinfo
status = modify_vcpu(source, dic_mode["recover"])
if status and vcpus != expected_vcpu:
return False
return status
开发者ID:FT4VT,项目名称:FT4VM-L1_test,代码行数:25,代码来源:virsh_edit.py
示例2: do_operation
def do_operation():
"""
Do operation in guest os with vf and check the os behavior after operation.
"""
if operation == "resume_suspend":
try:
virsh.suspend(vm.name, debug=True, ignore_status=False)
virsh.resume(vm.name, debug=True, ignore_statue=False)
get_ip_by_mac(mac_addr, timeout=120)
except process.CmdError as detail:
err_msg = "Suspend-Resume %s with vf failed: %s" % (vm_name, detail)
test.fail(err_msg)
if operation == "reboot":
try:
if vm.serial_console is not None:
vm.cleanup_serial_console()
vm.create_serial_console()
virsh.reboot(vm.name, ignore_status=False)
get_ip_by_mac(mac_addr, timeout=120)
except process.CmdError as detail:
err_msg = "Reboot %s with vf failed: %s" % (vm_name, detail)
test.fail(err_msg)
if operation == "save":
result = virsh.managedsave(vm_name, ignore_status=True, debug=True)
utils_test.libvirt.check_exit_status(result, expect_error=True)
开发者ID:balamuruhans,项目名称:tp-libvirt,代码行数:25,代码来源:sriov.py
示例3: edit_vcpu
def edit_vcpu(source, guest_name):
"""
Modify vm's cpu information by virsh edit command.
:param source : virsh edit's option.
:param guest_name : vm's name.
:return: True if edit successed,False if edit failed.
"""
dic_mode = {
"edit": r":%s /[0-9]*<\/vcpu>/" + expected_vcpu + r"<\/vcpu>",
"recover": r":%s /[0-9]*<\/vcpu>/" + original_vcpu + r"<\/vcpu>"}
status = modify_vcpu(source, dic_mode["edit"])
if not status:
return status
if params.get("paused_after_start_vm") == "yes":
virsh.resume(guest_name, ignore_status=True)
virsh.destroy(guest_name)
elif params.get("start_vm") == "yes":
virsh.destroy(guest_name)
vmxml = vm_xml.VMXML.new_from_inactive_dumpxml(vm_name)
vcpus = str(vmxml.vcpu)
# Recover cpuinfo
# Use name rather than source, since source could be domid
status = modify_vcpu(guest_name, dic_mode["recover"])
if status and vcpus != expected_vcpu:
return False
return status
开发者ID:Acidburn0zzz,项目名称:tp-libvirt,代码行数:27,代码来源:virsh_edit.py
示例4: edit_vcpu
def edit_vcpu(source):
"""
Modify vm's cpu information by virsh edit command.
:param source : virsh edit's option.
:return: True if edit successed,False if edit failed.
"""
vcpucount_result = virsh.vcpucount(vm_name,
options="--config --maximum")
if vcpucount_result.exit_status:
# Fail back to libvirt_xml way to test vcpucount.
original_vcpu = str(vmxml.vcpu)
else:
original_vcpu = vcpucount_result.stdout.strip()
expected_vcpu = str(int(original_vcpu) + 1)
if not status_error == "yes":
# check if topology is defined and change vcpu accordingly
try:
vmxml_backup = vm_xml.VMXML.new_from_inactive_dumpxml(source)
topology = vmxml_backup.get_cpu_topology()
sockets = str(int(topology['sockets']) + 1)
cores = topology['cores']
threads = topology['threads']
vmcpu_xml = vm_xml.VMCPUXML()
vmcpu_xml['topology'] = {'sockets': sockets, 'cores': cores,
'threads': threads}
vmxml_backup['cpu'] = vmcpu_xml
vmxml_backup.sync()
expected_vcpu = str(int(sockets) * int(cores) * int(threads))
except:
expected_vcpu = str(int(original_vcpu) + 1)
dic_mode = {
"edit": r":%s /[0-9]*<\/vcpu>/" + expected_vcpu + r"<\/vcpu>",
"recover": r":%s /[0-9]*<\/vcpu>/" + original_vcpu + r"<\/vcpu>"}
status = libvirt.exec_virsh_edit(source, [dic_mode["edit"]])
logging.info(status)
if not status:
vmxml.sync()
return status
if libvirtd_stat == "off":
return False
if params.get("paused_after_start_vm") == "yes":
virsh.resume(vm_name, ignore_status=True)
virsh.destroy(vm_name)
elif params.get("start_vm") == "yes":
virsh.destroy(vm_name)
new_vcpus = str(vm_xml.VMXML.new_from_inactive_dumpxml(vm_name).vcpu)
# Recover cpuinfo
# Use name rather than source, since source could be domid
status = libvirt.exec_virsh_edit(vm_name, [dic_mode["recover"]])
vmxml.sync()
if status and new_vcpus != expected_vcpu:
return False
return status
开发者ID:bssrikanth,项目名称:tp-libvirt,代码行数:55,代码来源:virsh_edit.py
示例5: vm_recover_check
def vm_recover_check(guest_name):
"""
Check if the vm can be recovered correctly.
@param: guest_name : Checked vm's name.
"""
ret = virsh.dom_list()
#This time vm should not be in the list
if re.search(guest_name, ret.stdout):
raise error.TestFail("virsh list output invalid")
virsh.start(guest_name)
if params.get("paused_after_start_vm") == "yes":
virsh.resume(guest_name)
#This time vm should be in the list
ret = virsh.dom_list()
if not re.search(guest_name, ret.stdout):
raise error.TestFail("virsh list output invalid")
开发者ID:bonzini,项目名称:virt-test,代码行数:17,代码来源:virsh_managedsave.py
示例6: edit_vcpu
def edit_vcpu(source):
"""
Modify vm's cpu information by virsh edit command.
:param source : virsh edit's option.
:return: True if edit successed,False if edit failed.
"""
vcpucount_result = virsh.vcpucount(vm_name,
options="--config --maximum")
if vcpucount_result.exit_status:
# Fail back to libvirt_xml way to test vcpucount.
original_vcpu = str(vmxml.vcpu)
else:
original_vcpu = vcpucount_result.stdout.strip()
expected_vcpu = str(int(original_vcpu) + 1)
dic_mode = {
"edit": r":%s /[0-9]*<\/vcpu>/" + expected_vcpu + r"<\/vcpu>",
"recover": r":%s /[0-9]*<\/vcpu>/" + original_vcpu + r"<\/vcpu>"}
status = exec_edit(source, [dic_mode["edit"]])
logging.info(status)
if not status:
return status
if libvirtd_stat == "off":
return False
if params.get("paused_after_start_vm") == "yes":
virsh.resume(vm_name, ignore_status=True)
virsh.destroy(vm_name)
elif params.get("start_vm") == "yes":
virsh.destroy(vm_name)
new_vcpus = str(vm_xml.VMXML.new_from_inactive_dumpxml(vm_name).vcpu)
# Recover cpuinfo
# Use name rather than source, since source could be domid
status = exec_edit(vm_name, [dic_mode["recover"]])
if status and new_vcpus != expected_vcpu:
return False
return status
开发者ID:Antique,项目名称:tp-libvirt,代码行数:37,代码来源:virsh_edit.py
示例7: edit_vcpu
def edit_vcpu(source, guest_name):
"""
Modify vm's cpu infomation by virsh edit command.
@param: source : virsh edit's option.
@param: guest_name : vm's name.
@return: True if edit successed,False if edit failed.
"""
dic_mode = {"edit" : ":%s /1<\/vcpu>/2<\/vcpu>",
"recover" : ":%s /2<\/vcpu>/1<\/vcpu>"}
status = modify_vcpu(source, dic_mode["edit"])
if not status :
return status
if params.get("paused_after_start_vm") == "yes":
virsh.resume(guest_name)
virsh.destroy(guest_name)
elif params.get("start_vm") == "yes":
virsh.destroy(guest_name)
vcpus = vm.dominfo()["CPU(s)"]
#Recover cpuinfo
status = modify_vcpu(source, dic_mode["recover"])
if status and vcpus != '2':
return False
return status
开发者ID:bonzini,项目名称:virt-test,代码行数:24,代码来源:virsh_edit.py
示例8: test_suspend
def test_suspend():
# Suspend
result = virsh.suspend(vm_name, ignore_status=True, debug=True)
libvirt.check_exit_status(result)
cmd = "virsh domstate %s" % vm_name
if "paused" not in virsh.domstate(vm_name, **dargs).stdout:
test.fail("suspend vm failed")
# Resume
result = virsh.resume(vm_name, ignore_status=True, debug=True)
libvirt.check_exit_status(result)
if "running" not in virsh.domstate(vm_name, **dargs).stdout:
test.fail("resume vm failed")
if check_attach_pci():
logging.debug("adapter found after suspend/resume")
else:
test.fail("passthroughed adapter not found after suspend/resume")
开发者ID:balamuruhans,项目名称:tp-libvirt,代码行数:16,代码来源:libvirt_pci_passthrough_hotplug.py
示例9: run
def run(test, params, env):
"""
Test command: virsh restore.
Restore a domain from a saved state in a file
1.Prepare test environment.
2.When the libvirtd == "off", stop the libvirtd service.
3.Run virsh restore command with assigned option.
4.Recover test environment.
5.Confirm the test result.
"""
vm_name = params.get("main_vm")
vm = env.get_vm(vm_name)
session = vm.wait_for_login()
os_type = params.get("os_type")
status_error = ("yes" == params.get("status_error"))
libvirtd = params.get("libvirtd", "on")
extra_param = params.get("restore_extra_param")
pre_status = params.get("restore_pre_status")
vm_ref = params.get("restore_vm_ref")
uri = params.get("virsh_uri")
unprivileged_user = params.get('unprivileged_user')
if unprivileged_user:
if unprivileged_user.count('EXAMPLE'):
unprivileged_user = 'testacl'
if not libvirt_version.version_compare(1, 1, 1):
if params.get('setup_libvirt_polkit') == 'yes':
raise error.TestNAError("API acl test not supported in current"
" libvirt version.")
# run test
if vm_ref == "" or vm_ref == "xyz":
status = virsh.restore(vm_ref, extra_param, debug=True,
unprivileged_user=unprivileged_user,
uri=uri,
ignore_status=True).exit_status
else:
if os_type == "linux":
cmd = "cat /proc/cpuinfo"
try:
status, output = session.cmd_status_output(cmd, timeout=10)
finally:
session.close()
if not re.search("processor", output):
raise error.TestFail("Unable to read /proc/cpuinfo")
tmp_file = os.path.join(test.tmpdir, "save.file")
virsh.save(vm_name, tmp_file)
if vm_ref == "saved_file":
vm_ref = tmp_file
elif vm_ref == "empty_new_file":
tmp_file = os.path.join(test.tmpdir, "new.file")
open(tmp_file, 'w').close()
vm_ref = tmp_file
if vm.is_alive():
vm.destroy()
if pre_status == "start":
virsh.start(vm_name)
if libvirtd == "off":
utils_libvirtd.libvirtd_stop()
status = virsh.restore(vm_ref, extra_param, debug=True,
unprivileged_user=unprivileged_user,
uri=uri,
ignore_status=True).exit_status
if not status_error:
list_output = virsh.dom_list().stdout.strip()
session.close()
# recover libvirtd service start
if libvirtd == "off":
utils_libvirtd.libvirtd_start()
try:
if status_error:
if not status:
raise error.TestFail("Run successfully with wrong command!")
else:
if status:
raise error.TestFail("Run failed with right command")
if not re.search(vm_name, list_output):
raise error.TestFail("Run failed with right command")
if extra_param.count("paused"):
if not vm.is_paused():
raise error.TestFail("Guest state should be"
" paused after restore"
" due to the option --paused")
if extra_param.count("running"):
if vm.is_dead() or vm.is_paused():
raise error.TestFail("Guest state should be"
" running after restore"
" due to the option --running")
finally:
if vm.is_paused():
virsh.resume(vm_name)
开发者ID:Antique,项目名称:tp-libvirt,代码行数:97,代码来源:virsh_restore.py
示例10: run
#.........这里部分代码省略.........
(i, i, install_root), shell=True)
# Config basic network
net_file = install_root + '/etc/sysconfig/network'
with open(net_file, 'w') as f:
f.write('NETWORKING=yes\nHOSTNAME=%s\n' % vm_name)
net_script = install_root + '/etc/sysconfig/network-scripts/ifcfg-eth0'
with open(net_script, 'w') as f:
f.write('DEVICE=eth0\nBOOTPROTO=dhcp\nONBOOT=yes\n')
# Set root password and enable sshd
session = aexpect.ShellSession("chroot %s" % install_root)
session.sendline('echo %s|passwd root --stdin' % passwd)
session.sendline('chkconfig sshd on')
session.close()
# Create
result = virsh.create(vmxml.xml, **virsh_args)
utlv.check_exit_status(result)
check_state('running')
# Destroy
result = virsh.destroy(vm_name, **virsh_args)
utlv.check_exit_status(result)
if not virsh.domain_exists(vm_name, **virsh_args):
logging.info("Destroy transient LXC domain successfully")
else:
raise TestFail("Transient LXC domain still exist after destroy")
# Define
result = virsh.define(vmxml.xml, **virsh_args)
utlv.check_exit_status(result)
check_state('shut off')
# List
result = virsh.dom_list('--inactive', **virsh_args)
utlv.check_exit_status(result)
if re.findall("(%s)\s+shut off" % vm_name, result.stdout):
logging.info("Find %s in virsh list output", vm_name)
else:
raise TestFail("Not find %s in virsh list output")
# Dumpxml
result = virsh.dumpxml(vm_name, uri=uri, debug=False)
utlv.check_exit_status(result)
# Edit
edit_vcpu = '2'
logging.info("Change vcpu of LXC container to %s", edit_vcpu)
edit_cmd = [r":%s /[0-9]*<\/vcpu>/" + edit_vcpu + r"<\/vcpu>"]
if not utlv.exec_virsh_edit(vm_name, edit_cmd, connect_uri=uri):
raise TestFail("Run edit command fail")
else:
result = virsh.dumpxml(vm_name, **virsh_args)
new_vcpu = re.search(r'(\d*)</vcpu>', result.stdout).group(1)
if new_vcpu == edit_vcpu:
logging.info("vcpu number is expected after do edit")
else:
raise TestFail("vcpu number is unexpected after do edit")
# Start
result = virsh.start(vm_name, **virsh_args)
utlv.check_exit_status(result)
check_state('running')
# Suspend
result = virsh.suspend(vm_name, **virsh_args)
utlv.check_exit_status(result)
check_state('paused')
# Resume
result = virsh.resume(vm_name, **virsh_args)
utlv.check_exit_status(result)
check_state('running')
# Reboot(not supported on RHEL6)
result = virsh.reboot(vm_name, **virsh_args)
supported_err = 'not supported by the connection driver: virDomainReboot'
if supported_err in result.stderr.strip():
logging.info("Reboot is not supported")
else:
utlv.check_exit_status(result)
# Destroy
result = virsh.destroy(vm_name, **virsh_args)
utlv.check_exit_status(result)
check_state('shut off')
# Undefine
result = virsh.undefine(vm_name, **virsh_args)
utlv.check_exit_status(result)
if not virsh.domain_exists(vm_name, **virsh_args):
logging.info("Undefine LXC domain successfully")
else:
raise TestFail("LXC domain still exist after undefine")
finally:
virsh.remove_domain(vm_name, **virsh_args)
if full_os and os.path.exists(install_root):
shutil.rmtree(install_root)
开发者ID:CongLi,项目名称:tp-libvirt,代码行数:101,代码来源:lxc_life_cycle.py
示例11: vm_stress_events
def vm_stress_events(self, event, vm):
"""
Stress events
:param event: event name
:param vm: vm object
"""
dargs = {'ignore_status': True, 'debug': True}
for itr in range(self.iterations):
if "vcpupin" in event:
for vcpu in range(int(self.current_vcpu)):
result = virsh.vcpupin(vm.name, vcpu,
random.choice(self.host_cpu_list),
**dargs)
if not self.ignore_status:
libvirt.check_exit_status(result)
elif "emulatorpin" in event:
for vcpu in range(int(self.current_vcpu)):
result = virsh.emulatorpin(vm.name,
random.choice(
self.host_cpu_list),
**dargs)
if not self.ignore_status:
libvirt.check_exit_status(result)
elif "suspend" in event:
result = virsh.suspend(vm.name, **dargs)
if not self.ignore_status:
libvirt.check_exit_status(result)
time.sleep(self.event_sleep_time)
result = virsh.resume(vm.name, **dargs)
if not self.ignore_status:
libvirt.check_exit_status(result)
elif "cpuhotplug" in event:
result = virsh.setvcpus(vm.name, self.max_vcpu, "--live",
**dargs)
if not self.ignore_status:
libvirt.check_exit_status(result)
exp_vcpu = {'max_config': self.max_vcpu,
'max_live': self.max_vcpu,
'cur_config': self.current_vcpu,
'cur_live': self.max_vcpu,
'guest_live': self.max_vcpu}
utils_hotplug.check_vcpu_value(
vm, exp_vcpu, option="--live")
time.sleep(self.event_sleep_time)
result = virsh.setvcpus(vm.name, self.current_vcpu, "--live",
**dargs)
if not self.ignore_status:
libvirt.check_exit_status(result)
exp_vcpu = {'max_config': self.max_vcpu,
'max_live': self.max_vcpu,
'cur_config': self.current_vcpu,
'cur_live': self.current_vcpu,
'guest_live': self.current_vcpu}
utils_hotplug.check_vcpu_value(
vm, exp_vcpu, option="--live")
elif "reboot" in event:
vm.reboot()
elif "nethotplug" in event:
for iface_num in range(int(self.iface_num)):
logging.debug("Try to attach interface %d" % iface_num)
mac = utils_net.generate_mac_address_simple()
options = ("%s %s --model %s --mac %s %s" %
(self.iface_type, self.iface_source['network'],
self.iface_model, mac, self.attach_option))
logging.debug("VM name: %s , Options for Network attach: %s", vm.name, options)
ret = virsh.attach_interface(vm.name, options,
ignore_status=True)
time.sleep(self.event_sleep_time)
if not self.ignore_status:
libvirt.check_exit_status(ret)
if self.detach_option:
options = ("--type %s --mac %s %s" %
(self.iface_type, mac, self.detach_option))
logging.debug("VM name: %s , Options for Network detach: %s", vm.name, options)
ret = virsh.detach_interface(vm.name, options,
ignore_status=True)
if not self.ignore_status:
libvirt.check_exit_status(ret)
elif "diskhotplug" in event:
for disk_num in range(len(self.device_source_names)):
disk = {}
disk_attach_error = False
disk_name = os.path.join(self.path, vm.name, self.device_source_names[disk_num])
device_source = libvirt.create_local_disk(
self.disk_type, disk_name, self.disk_size, disk_format=self.disk_format)
disk.update({"format": self.disk_format,
"source": device_source})
disk_xml = Disk(self.disk_type)
disk_xml.device = self.disk_device
disk_xml.driver = {"name": self.disk_driver, "type": self.disk_format}
ret = virsh.attach_disk(vm.name, disk["source"], self.device_target[disk_num], self.attach_option, debug=True)
if not self.ignore_status:
libvirt.check_exit_status(ret, disk_attach_error)
if self.detach_option:
ret = virsh.detach_disk(vm.name, self.device_target[disk_num], extra=self.detach_option)
if not self.ignore_status:
libvirt.check_exit_status(ret)
libvirt.delete_local_disk(self.disk_type, disk_name)
else:
raise NotImplementedError
开发者ID:jcfaracco,项目名称:avocado-vt,代码行数:100,代码来源:utils_stress.py
示例12: run_virsh_resume
def run_virsh_resume(test, params, env):
"""
Test command: virsh resume.
1) Start vm, Prepare options such as id, uuid
2) Prepare vm state for test, default is paused.
3) Prepare other environment
4) Run command, get result.
5) Check result.
"""
vm_name = params.get("main_vm")
vm = env.get_vm(vm_name)
vm.verify_alive()
# Get parameters
vm_ref = params.get("resume_vm_ref", "domname")
vm_state = params.get("resume_vm_state", "paused")
option_suffix = params.get("resume_option_suffix")
status_error = params.get("status_error", "no")
domid = vm.get_id()
domuuid = vm.get_uuid()
# Prepare vm state
if vm_state == "paused":
vm.pause()
elif vm_state == "shutoff":
vm.destroy()
# Prepare options
if vm_ref == "domname":
vm_ref = vm_name
elif vm_ref == "domid":
vm_ref = domid
elif vm_ref == "domuuid":
vm_ref = domuuid
elif domid and vm_ref == "hex_id":
if domid == "-":
vm_ref = domid
else:
vm_ref = hex(int(domid))
if option_suffix:
vm_ref = "%s %s" % (vm_ref, option_suffix)
# Run resume command
result = virsh.resume(vm_ref, ignore_status=True)
logging.debug(result)
status = result.exit_status
# Get vm state after virsh resume executed.
domstate = vm.state()
# Check status_error
if status_error == "yes":
# Wrong resume command was excuted, recover with right resume
if domstate == "paused":
vm.resume()
vm.destroy()
if status == 0:
raise error.TestFail("Run successfully with wrong command!")
elif status_error == "no":
# Right resume command failed, forcing destroy vm
if domstate == "paused":
vm.destroy(gracefully=False)
raise error.TestFail("Resume vm failed."
"State is still paused")
vm.destroy()
if status != 0:
raise error.TestFail("Run failed with right command")
开发者ID:Antique,项目名称:virt-test,代码行数:70,代码来源:virsh_resume.py
示例13: run
def run(test, params, env):
"""
Test command: virsh save.
The command can save the RAM state of a running domain.
1.Prepare test environment.
2.When the libvirtd == "off", stop the libvirtd service.
3.Run virsh save command with assigned options.
4.Recover test environment.(If the libvirtd service is stopped ,start
the libvirtd service.)
5.Confirm the test result.
"""
savefile = params.get("save_file", "save.file")
if savefile:
savefile = os.path.join(test.tmpdir, savefile)
libvirtd = params.get("libvirtd", "on")
extra_param = params.get("save_extra_param")
vm_ref = params.get("save_vm_ref")
progress = ("yes" == params.get("save_progress", "no"))
options = params.get("save_option", "")
status_error = ("yes" == params.get("save_status_error", "yes"))
vm_name = params.get("main_vm", "avocado-vt-vm1")
vm = env.get_vm(vm_name)
uri = params.get("virsh_uri")
unprivileged_user = params.get('unprivileged_user')
if unprivileged_user:
if unprivileged_user.count('EXAMPLE'):
unprivileged_user = 'testacl'
if not libvirt_version.version_compare(1, 1, 1):
if params.get('setup_libvirt_polkit') == 'yes':
raise error.TestNAError("API acl test not supported in current"
" libvirt version.")
domid = vm.get_id()
domuuid = vm.get_uuid()
# set the option
if vm_ref == "id":
vm_ref = domid
elif vm_ref == "hex_id":
vm_ref = hex(int(domid))
elif vm_ref == "uuid":
vm_ref = domuuid
elif vm_ref.count("invalid"):
vm_ref = params.get(vm_ref)
elif vm_ref.count("name"):
vm_ref = vm_name
vm_ref += (" %s" % extra_param)
if libvirtd == "off":
utils_libvirtd.libvirtd_stop()
if progress:
options += " --verbose"
result = virsh.save(vm_ref, savefile, options, ignore_status=True,
unprivileged_user=unprivileged_user,
uri=uri, debug=True)
status = result.exit_status
err_msg = result.stderr.strip()
# recover libvirtd service start
if libvirtd == "off":
utils_libvirtd.libvirtd_start()
if savefile:
virsh.restore(savefile)
# check status_error
try:
if status_error:
if not status:
raise error.TestFail("virsh run succeeded with an "
"incorrect command")
else:
if status:
raise error.TestFail("virsh run failed with a "
"correct command")
if progress and not err_msg.count("Save:"):
raise error.TestFail("No progress information outputed!")
if options.count("running"):
if vm.is_dead() or vm.is_paused():
raise error.TestFail("Guest state should be"
" running after restore"
" due to the option --running")
elif options.count("paused"):
if not vm.is_paused():
raise error.TestFail("Guest state should be"
" paused after restore"
" due to the option --paused")
else:
if vm.is_dead():
raise error.TestFail("Guest state should be"
" alive after restore"
" since no option was specified")
finally:
if vm.is_paused():
virsh.resume(vm_name)
开发者ID:CongLi,项目名称:tp-libvirt,代码行数:99,代码来源:virsh_save.py
示例14: run
def run(test, params, env):
"""
Test command: virsh dompmsuspend <domain> <target>
The command suspends a running domain using guest OS's power management.
"""
# MAIN TEST CODE ###
# Process cartesian parameters
vm_name = params.get("main_vm")
vm = env.get_vm(vm_name)
vm_state = params.get("vm_state", "running")
suspend_target = params.get("pm_suspend_target", "mem")
pm_enabled = params.get("pm_enabled", "not_set")
test_managedsave = "yes" == params.get("test_managedsave", "no")
test_save_restore = "yes" == params.get("test_save_restore", "no")
test_suspend_resume = "yes" == params.get("test_suspend_resume", "no")
pmsuspend_error = 'yes' == params.get("pmsuspend_error", 'no')
# Libvirt acl test related params
uri = params.get("virsh_uri")
unprivileged_user = params.get('unprivileged_user')
if unprivileged_user:
if unprivileged_user.count('EXAMPLE'):
unprivileged_user = 'testacl'
if not libvirt_version.version_compare(1, 1, 1):
if params.get('setup_libvirt_polkit') == 'yes':
raise error.TestNAError("API acl test not supported in current"
" libvirt version.")
# A backup of original vm
vmxml = vm_xml.VMXML.new_from_inactive_dumpxml(vm_name)
vmxml_backup = vmxml.copy()
# Expected possible fail patterns.
# Error output should match one of these patterns.
# An empty list mean test should succeed.
fail_pat = []
virsh_dargs = {'debug': True, 'ignore_status': True}
if params.get('setup_libvirt_polkit') == 'yes':
virsh_dargs_copy = virsh_dargs.copy()
virsh_dargs_copy['uri'] = uri
virsh_dargs_copy['unprivileged_user'] = unprivileged_user
if pmsuspend_error:
fail_pat.append('access denied')
# Setup possible failure patterns
if pm_enabled == 'not_set':
fail_pat.append('not supported')
if pm_enabled == 'no':
fail_pat.append('disabled')
if vm_state == 'paused':
fail_pat.append('not responding')
elif vm_state == 'shutoff':
fail_pat.append('not running')
try:
if vm.is_alive():
vm.destroy()
# Set pm tag in domain's XML if needed.
if pm_enabled == 'not_set':
try:
if vmxml.pm:
del vmxml.pm
except xcepts.LibvirtXMLNotFoundError:
pass
else:
pm_xml = vm_xml.VMPMXML()
if suspend_target == 'mem':
pm_xml.mem_enabled = pm_enabled
elif suspend_target == 'disk':
pm_xml.disk_enabled = pm_enabled
elif suspend_target == 'hybrid':
pm_xml.mem_enabled = pm_enabled
pm_xml.disk_enabled = pm_enabled
vmxml.pm = pm_xml
vmxml.sync()
vm.prepare_guest_agent()
# Create swap partition/file if nessesary.
need_mkswap = False
if suspend_target in ['disk', 'hybrid']:
need_mkswap = not vm.has_swap()
if need_mkswap:
logging.debug("Creating swap partition.")
vm.create_swap_partition()
try:
libvirtd = utils_libvirtd.Libvirtd()
savefile = os.path.join(test.tmpdir, "%s.save" % vm_name)
session = vm.wait_for_login()
# Touch a file on guest to test managed save command.
if test_managedsave:
session.cmd_status("touch pmtest")
# Set vm state
#.........这里部分代码省略.........
开发者ID:Chenditang,项目名称:tp-libvirt,代码行数:101,代码来源:virsh_dompmsuspend.py
示例15: run_virsh_setvcpus
def run_virsh_setvcpus(test, params, env):
"""
Test command: virsh setvcpus.
The conmand can change the number of virtual CPUs in the guest domain.
1.Prepare test environment,destroy or suspend a VM.
2.Perform virsh setvcpus operation.
3.Recover test environment.
4.Confirm the test result.
"""
vm_name = params.get("main_vm")
vm = env.get_vm(vm_name)
xml_file = params.get("setvcpus_xml_file", "vm.xml")
virsh.dumpxml(vm_name, extra="--inactive", to_file=xml_file)
tmp_file = params.get("setvcpus_tmp_file", "tmp.xml")
pre_vm_state = params.get("setvcpus_pre_vm_state")
command = params.get("setvcpus_command", "setvcpus")
options = params.get("setvcpus_options")
domain = params.get("setvcpus_domain")
count = params.get("setvcpus_count")
extra_param = params.get("setvcpus_extra_param")
count_option = "%s %s" % (count, extra_param)
status_error = params.get("status_error")
def get_current_vcpus():
"""
Get current vcpu number.
"""
vcpus_set = ""
virsh.dumpxml(vm_name, extra="", to_file=tmp_file)
dom = parse(tmp_file)
root = dom.documentElement
vcpus_2 = root.getElementsByTagName("vcpu")
for n in vcpus_2:
vcpus_set += n.getAttribute("current")
vcpus_set = int(vcpus_set)
dom.unlink()
return vcpus_set
if vm.is_alive():
vm.destroy()
vm_xml = libvirt_xml.VMXML()
vm_xml.set_vm_vcpus(vm_name, 2)
vm.start()
vm.wait_for_login()
if status_error == "no":
vcpus_new = len(vm.vcpuinfo())
domid = vm.get_id()
domuuid = vm.get_uuid()
if pre_vm_state == "paused":
vm.pause()
elif pre_vm_state == "shut off":
vm.destroy()
if domain == "remote_name":
remote_ssh_addr = params.get("remote_ip", None)
remote_addr = params.get("local_ip", None)
remote_password = params.get("remote_password", None)
host_type = virsh.driver()
if host_type == "qemu":
remote_string = "qemu+ssh://%s/system" % remote_addr
elif host_type == "xen":
remote_string = "xen+ssh://%s" % remote_addr
command = "virsh -c %s setvcpus %s 1 --live" % (remote_string, vm_name)
if virsh.has_command_help_match(command, "--live") is None:
status_error = "yes"
session = remote.remote_login(
"ssh", remote_ssh_addr, "22", "root", remote_password, "#")
session.cmd_output('LANG=C')
status, output = session.cmd_status_output(command, internal_timeout=5)
session.close()
vcpus_current = len(vm.vcpuinfo())
else:
if domain == "name":
dom_option = vm_name
elif domain == "id":
dom_option = domid
if params.get("setvcpus_hex_id") is not None:
dom_option = hex(int(domid))
elif params.get("setvcpus_invalid_id") is not None:
dom_option = params.get("setvcpus_invalid_id")
elif domain == "uuid":
dom_option = domuuid
if params.get("setvcpus_invalid_uuid") is not None:
dom_option = params.get("setvcpus_invalid_uuid")
else:
dom_option = domain
option_list = options.split(" ")
for item in option_list:
if virsh.has_command_help_match(command, item) is None:
status_error = "yes"
break
status = virsh.setvcpus(
dom_option, count_option, options, ignore_status=True).exit_status
if pre_vm_state == "paused":
virsh.resume(vm_name, ignore_status=True)
if status_error == "no":
if status == 0:
#.........这里部分代码省略.........
开发者ID:Antique,项目名称:virt-test,代码行数:101,代码来源:virsh_setvcpus.py
示例16: run
def run(test, params, env):
"""
Test command: virsh suspend.
The command can suspend a domain.
1.Prepare test environment.
2.Perform virsh suspend operation.
3.Confirm the test result.
"""
vm_name = params.get("main_vm")
vm = env.get_vm(vm_name)
domid = vm.get_id()
domuuid = vm.get_uuid()
vm_ref = params.get("suspend_vm_ref", "")
extra = params.get("suspend_extra", "")
status_error = params.get("status_error", "no")
suspend_readonly = "yes" == params.get("suspend_readonly", "no")
uri = params.get("virsh_uri")
unprivileged_user = params.get('unprivileged_user')
if unprivileged_user:
if unprivileged_user.count('EXAMPLE'):
unprivileged_user = 'testacl'
no_err_msg = False
if not libvirt_version.version_compare(1, 1, 1):
# Suspend may fail without error message if domain name is ''
# on old version libvirt
if vm_ref == '':
no_err_msg = True
if params.get('setup_libvirt_polkit') == 'yes':
test.cancel("API acl test not supported in current libvirt "
"version.")
# Run test case
if vm_ref == "id":
vm_ref = domid
elif vm_ref == "hex_id":
vm_ref = hex(int(domid.strip()))
elif vm_ref.find("invalid") != -1:
vm_ref = params.get(vm_ref)
elif vm_ref == "name":
vm_ref = "%s %s" % (vm_name, extra)
elif vm_ref == "uuid":
vm_ref = domuuid
result = virsh.suspend(vm_ref, ignore_status=True,
unprivileged_user=unprivileged_user,
uri=uri, debug=True)
status = result.exit_status
output = result.stdout.strip()
err = result.stderr.strip()
if status == 0 and not vm.is_paused():
status = 1
# Test the readonly mode
if suspend_readonly:
result = virsh.suspend(vm_ref, ignore_status=True, debug=True, readonly=True)
libvirt.check_exit_status(result, expect_error=True)
# This is for status_error check
status = result.exit_status
if status:
err = 1
# resume the VM
if vm.is_paused():
result = virsh.resume(vm_ref, ignore_status=True,
unprivileged_user=unprivileged_user,
uri=uri, debug=True)
if result.exit_status or vm.is_paused():
status = 1
# Check result
if status_error == "yes":
if not err and not no_err_msg:
test.fail("No error
|
请发表评论