[libvirt] [test-API][PATCH 1/2] Reconnct libvirt after libvirtd restart

Wayne Sun gsun at redhat.com
Mon Aug 6 07:46:55 UTC 2012


  In domain_nfs_start case, libvirtd will be restarted during test,
  which broke existing connection. User need re-init connection in
  test case, for this:
    * Using sharedmod data dictionary to store Envparser class in
      generator.
    * Do not clear data dictionary in env_inspect, user can update
      it or framework release it at last.
    * Using sharemod_init in env_inspect to re-init conn in
      domain_nfs_start.

Signed-off-by: Wayne Sun <gsun at redhat.com>
---
 repos/sVirt/domain_nfs_start.py |   11 +++++++++--
 src/env_inspect.py              |    1 -
 src/generator.py                |    2 ++
 3 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/repos/sVirt/domain_nfs_start.py b/repos/sVirt/domain_nfs_start.py
index 88d349c..4d48d97 100644
--- a/repos/sVirt/domain_nfs_start.py
+++ b/repos/sVirt/domain_nfs_start.py
@@ -12,7 +12,7 @@ import sys
 
 import libvirt
 from libvirt import libvirtError
-
+from src import env_inspect
 from src import sharedmod
 from utils import utils
 from shutil import copy
@@ -163,6 +163,8 @@ def domain_nfs_start(params):
         logger.error("Error: fail to get domain %s xml" % guestname)
         return 1
 
+    conn.close()
+
     # set env
     logger.info("prepare the environment")
     ret = prepare_env(dynamic_ownership, virt_use_nfs, guestname, \
@@ -171,6 +173,11 @@ def domain_nfs_start(params):
         logger.error("failed to prepare the environment")
         return 1
 
+    # reconnect libvirt
+    env = sharedmod.data['env']
+    env_inspect.sharemod_init(env, logger)
+    conn = sharedmod.libvirtobj['conn']
+
     domobj = conn.lookupByName(guestname)
 
     logger.info("begin to test start domain from nfs storage")
@@ -283,7 +290,7 @@ def domain_nfs_start(params):
         logger.error("Error: fail to get domain %s state" % guestname)
         return 1
 
-    if state != "shutoff":
+    if state != libvirt.VIR_DOMAIN_SHUTOFF:
         logger.info("shut down the domain %s" % guestname)
         try:
             domobj.destroy()
diff --git a/src/env_inspect.py b/src/env_inspect.py
index b260ff8..a6dc4b1 100644
--- a/src/env_inspect.py
+++ b/src/env_inspect.py
@@ -98,7 +98,6 @@ def sharemod_init(env_parser, logger):
 
     # initialize conn object in sharedmod
     sharedmod.libvirtobj.clear()
-    sharedmod.data.clear()
     sharedmod.libvirtobj['conn'] = conn
     return 0
 
diff --git a/src/generator.py b/src/generator.py
index 0cdc9de..f01f2fb 100644
--- a/src/generator.py
+++ b/src/generator.py
@@ -30,6 +30,7 @@ from testcasexml import xml_file_to_str
 import env_parser
 import env_inspect
 import format
+import sharedmod
 
 class FuncGen(object):
     """ To generate a callable testcase"""
@@ -56,6 +57,7 @@ class FuncGen(object):
         self.__case_info_save(activity, testrunid)
 
         self.env = env_parser.Envparser("global.cfg")
+        sharedmod.data['env'] = self.env
 
         mapper_obj = mapper.Mapper(activity)
         case_list = mapper_obj.module_casename_func_map()
-- 
1.7.1




More information about the libvir-list mailing list