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

Reply via email to