Modify the virsh_cmd function by adding a param ignore_status with False default
and returning cmd_result dirctly. Besides that, the virsh_cmd callers have been
fixed accordingly.
ps: Under your proposal,I have made the corresponding changes, some calling
functions
have been modified. And i will keep on fixing it. If you find something
needs to
be fixed, please tell me, thanks!
Signed-off-by: Gu Yanhua <[email protected]>
---
client/virt/libvirt_vm.py | 42 +++++++++++++++++++++---------------------
1 files changed, 21 insertions(+), 21 deletions(-)
diff --git a/client/virt/libvirt_vm.py b/client/virt/libvirt_vm.py
index cbed8aa..6544397 100644
--- a/client/virt/libvirt_vm.py
+++ b/client/virt/libvirt_vm.py
@@ -86,7 +86,7 @@ def service_libvirtd_control(action):
raise error.TestError("Unknown action: %s" % action)
-def virsh_cmd(cmd, uri = ""):
+def virsh_cmd(cmd, uri = "", ignore_status=False):
"""
Append cmd to 'virsh' and execute, optionally return full results.
@@ -101,8 +101,8 @@ def virsh_cmd(cmd, uri = ""):
if uri:
uri_arg = "-c " + uri
cmd = "%s %s %s" % (VIRSH_EXEC, uri_arg, cmd)
- cmd_result = utils.run(cmd, verbose=DEBUG)
- return cmd_result.stdout.strip()
+ cmd_result = utils.run(cmd, verbose=DEBUG, ignore_status=ignore_status)
+ return cmd_result
def virsh_uri(uri = ""):
@@ -132,7 +132,7 @@ def virsh_driver(uri = ""):
"""
# libvirt schme composed of driver + command
# ref: http://libvirt.org/uri.html
- scheme = urlparse.urlsplit(virsh_uri(uri))[0]
+ scheme = urlparse.urlsplit(virsh_uri(uri).stdout.strip())[0]
# extract just the driver, whether or not there is a '+'
return scheme.split('+', 2)[0]
@@ -204,7 +204,7 @@ def virsh_is_dead(name, uri = ""):
@param name: VM name
"""
try:
- state = virsh_domstate(name, uri)
+ state = virsh_domstate(name, uri).stdout.strip()
except error.CmdError:
return True
if state in ('running', 'idle', 'no state', 'paused'):
@@ -223,7 +223,7 @@ def virsh_suspend(name, uri = ""):
"""
try:
virsh_cmd("suspend %s" % (name), uri)
- if virsh_domstate(name, uri) == 'paused':
+ if virsh_domstate(name, uri).stdout.strip() == 'paused':
logging.debug("Suspended VM %s", name)
return True
else:
@@ -261,13 +261,13 @@ def virsh_save(name, path, uri = ""):
@param: uri: URI of libvirt hypervisor to use
@param: path: absolute path to state file
"""
- state = virsh_domstate(name, uri)
+ state = virsh_domstate(name, uri).stdout.strip()
if state not in ('paused',):
raise virt_vm.VMStatusError("Cannot save a VM that is %s" % state)
logging.debug("Saving VM %s to %s" %(name, path))
virsh_cmd("save %s %s" % (name, path), uri)
# libvirt always stops VM after saving
- state = virsh_domstate(name, uri)
+ state = virsh_domstate(name, uri).stdout.strip()
if state not in ('shut off',):
raise virt_vm.VMStatusError("VM not shut off after save")
@@ -282,12 +282,12 @@ def virsh_restore(name, path, uri = ""):
"""
# Blindly assume named VM cooresponds with state in path
# rely on higher-layers to take exception if missmatch
- state = virsh_domstate(name, uri)
+ state = virsh_domstate(name, uri).stdout.strip()
if state not in ('shut off',):
raise virt_vm.VMStatusError("Can not restore VM that is %s" % state)
logging.debug("Restoring VM from %s" % path)
virsh_cmd("restore %s" % path, uri)
- state = virsh_domstate(name, uri)
+ state = virsh_domstate(name, uri).stdout.strip()
if state not in ('paused','running'):
raise virt_vm.VMStatusError("VM not paused after restore, it is %s." %
state)
@@ -319,7 +319,7 @@ def virsh_shutdown(name, uri = ""):
@param name: VM name
"""
- if virsh_domstate(name, uri) == 'shut off':
+ if virsh_domstate(name, uri).stdout.strip() == 'shut off':
return True
try:
virsh_cmd("shutdown %s" % (name), uri)
@@ -338,7 +338,7 @@ def virsh_destroy(name, uri = ""):
@param name: VM name
"""
- if virsh_domstate(name, uri) == 'shut off':
+ if virsh_domstate(name, uri).stdout.strip() == 'shut off':
return True
try:
virsh_cmd("destroy %s" % (name), uri)
@@ -502,9 +502,9 @@ class VM(virt_vm.BaseVM):
# TODO: The monitor class should do this
self.connect_uri = params.get("connect_uri", "default")
if self.connect_uri == 'default':
- self.connect_uri = virsh_uri()
+ self.connect_uri = virsh_uri().stdout.strip()
else: # Validate and canonicalize uri early to catch problems
- self.connect_uri = virsh_uri(uri = self.connect_uri)
+ self.connect_uri = virsh_uri(uri = self.connect_uri).stdout.strip()
# TODO: The monitor class should do this also
self.driver_type = virsh_driver(uri = self.connect_uri)
@@ -520,7 +520,7 @@ class VM(virt_vm.BaseVM):
"""
if not self.is_alive():
raise virt_vm.VMDeadError("Domain %s is inactive" % self.name,
- virsh_domstate(self.name,
self.connect_uri))
+ virsh_domstate(self.name,
self.connect_uri).stdout.strip())
def is_alive(self):
@@ -544,7 +544,7 @@ class VM(virt_vm.BaseVM):
if not virsh_domain_exists(self.name, self.connect_uri):
logging.warning("VM does not exist on uri %s" % self.connect_uri)
return False
- dom_info = virsh_dominfo(self.name, self.connect_uri).split("\n")
+ dom_info = virsh_dominfo(self.name,
self.connect_uri).stdout.strip().split("\n")
persistent_info = ""
for tmp_info in dom_info:
if tmp_info.count('Persistent'):
@@ -567,21 +567,21 @@ class VM(virt_vm.BaseVM):
"""
Return domain state.
"""
- return virsh_domstate(self.name, self.connect_uri)
+ return virsh_domstate(self.name, self.connect_uri).stdout.strip()
def get_id(self):
"""
Return VM's ID.
"""
- return virsh_domid(self.name, self.connect_uri)
+ return virsh_domid(self.name, self.connect_uri).stdout.strip()
def get_xml(self):
"""
Return VM's xml file.
"""
- return virsh_dumpxml(self.name, self.connect_uri)
+ return virsh_dumpxml(self.name, self.connect_uri).stdout.strip()
def clone(self, name=None, params=None, root_dir=None, address_cache=None,
@@ -1322,7 +1322,7 @@ class VM(virt_vm.BaseVM):
"""
Return VM's UUID.
"""
- return virsh_uuid(self.name, self.connect_uri)
+ return virsh_uuid(self.name, self.connect_uri).stdout.strip()
def get_address(self, index=0):
@@ -1403,7 +1403,7 @@ class VM(virt_vm.BaseVM):
@raise VMMACAddressMissingError: If no MAC address is defined for the
requested NIC
"""
- thexml = virsh_dumpxml(self.name, self.connect_uri)
+ thexml = virsh_dumpxml(self.name, self.connect_uri).stdout.strip()
dom = minidom.parseString(thexml)
count = 0
for node in dom.getElementsByTagName('interface'):
--
1.7.1
_______________________________________________
Autotest mailing list
[email protected]
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest