[PATCH] lnst-ctl: Adding disable_pool_checks option

Jiri Pirko jpirko at redhat.com
Sat May 4 17:01:24 UTC 2013


all applied. Thanks Radek

Sat, May 04, 2013 at 12:00:14AM CEST, rpazdera at redhat.com wrote:
>This commit adds a new option to the controller. Using this option will
>disable the checks that are performed by LNST during startup on pool
>machines.
>
>Option:
>
>    -o
>    --disable-pool-checks
>
>Some minor cleanup has been done on a few places nearby.
>---
> lnst-ctl                             |   29 ++++++++++++-------
> lnst/Controller/NetTestController.py |    4 +-
> lnst/Controller/SlavePool.py         |   50 +++++++++++++++++++---------------
> 3 files changed, 48 insertions(+), 35 deletions(-)
>
>diff --git a/lnst-ctl b/lnst-ctl
>index 26b15e1..de74c65 100755
>--- a/lnst-ctl
>+++ b/lnst-ctl
>@@ -36,21 +36,26 @@ def usage():
>           "                                  network communication during\n" \
>           "                                  the test"
>     print "  -h, --help                      print this message"
>+    print "  -o, --disable-pool-checks       don't check the availability of\n"\
>+          "                                  machines in the pool"
>     print "  -c, --cleanup                   perform config cleanup\n" \
>           "                                  machines"
>     print "  -x, --result=FILE               file to write xml_result"
>     sys.exit()
> 
> def process_recipe(action, file_path, cleanup, res_serializer,
>-                   packet_capture, config, log_ctl):
>+                   packet_capture, config, log_ctl, pool_checks):
>     nettestctl = NetTestController(file_path, log_ctl, cleanup=cleanup,
>-                                   res_serializer=res_serializer, config=config)
>+                                   res_serializer=res_serializer,
>+                                   config=config, pool_checks=pool_checks)
>     if action == "run":
>         return nettestctl.run_recipe(packet_capture)
>     elif action == "dump":
>         return nettestctl.dump_recipe()
>     elif action == "config_only":
>         return nettestctl.config_only_recipe()
>+    elif action == "match_setup":
>+        return nettestctl.match_setup()
>     else:
>         logging.error("Unknown action \"%s\"" % action)
>         usage();
>@@ -65,15 +70,15 @@ def print_summary(summary):
>         logging.info("*%s* %s" % (res, recipe_file))
>     logging.info("=====================================================")
> 
>-def get_recipe_result(args, file_path, cleanup,
>-                      res_serializer, packet_capture, config, log_ctl):
>+def get_recipe_result(args, file_path, cleanup, res_serializer, packet_capture,
>+                      config, log_ctl, pool_checks):
>     res_serializer.add_recipe(file_path)
>     log_ctl.set_recipe(file_path)
> 
>     res = None
>     try:
>         res = process_recipe(args, file_path, cleanup, res_serializer,
>-                             packet_capture, config, log_ctl)
>+                             packet_capture, config, log_ctl, pool_checks)
>     except Exception as err:
>         log_exc_traceback()
>         logging.error(err)
>@@ -87,9 +92,9 @@ def main():
>     try:
>         opts, args = getopt.getopt(
>             sys.argv[1:],
>-            "dhr:cx:p",
>+            "dhr:cx:po",
>             ["debug", "help", "recipe=", "cleanup", "result=",
>-             "packet_capture"]
>+             "packet_capture", "disable-pool-checks"]
>         )
>     except getopt.GetoptError as err:
>         print str(err)
>@@ -113,12 +118,12 @@ def main():
>         with open(usr_cfg, 'w') as f:
>             f.write(config.dump_config())
> 
>-
>     debug = 0
>     recipe_path = None
>     cleanup = False
>     result_path = None
>     packet_capture = False
>+    pool_checks = True
>     for opt, arg in opts:
>         if opt in ("-d", "--debug"):
>             debug += 1
>@@ -130,7 +135,8 @@ def main():
>             result_path = arg
>         elif opt in ("-p", "--packet_capture"):
>             packet_capture = True
>-
>+        elif opt in ("-o", "--disable-pool-checks"):
>+            pool_checks = False
> 
>     date = datetime.datetime.now().strftime("%Y-%m-%d_%H:%M:%S")
>     log_ctl = LoggingCtl(debug,
>@@ -162,12 +168,13 @@ def main():
>                                                      cleanup,
>                                                      res_serializer,
>                                                      packet_capture,
>-                                                     config, log_ctl))
>+                                                     config, log_ctl,
>+                                                     pool_checks))
>         else:
>             summary.append(get_recipe_result(action, recipe_path,
>                                              cleanup, res_serializer,
>                                              packet_capture,
>-                                             config, log_ctl))
>+                                             config, log_ctl, pool_checks))
> 
>     log_ctl.set_recipe("", clean=False)
> 
>diff --git a/lnst/Controller/NetTestController.py b/lnst/Controller/NetTestController.py
>index 62600ca..1f47de5 100644
>--- a/lnst/Controller/NetTestController.py
>+++ b/lnst/Controller/NetTestController.py
>@@ -41,7 +41,7 @@ def ignore_event(**kwarg):
> 
> class NetTestController:
>     def __init__(self, recipe_path, log_ctl, cleanup=False,
>-                 res_serializer=None, config=None):
>+                 res_serializer=None, config=None, pool_checks=True):
>         self._docleanup = cleanup
>         self._res_serializer = res_serializer
>         self._remote_capture_files = {}
>@@ -51,7 +51,7 @@ class NetTestController:
>         self._msg_dispatcher = MessageDispatcher(log_ctl)
> 
>         sp = SlavePool(config.get_option('environment', 'pool_dirs'),
>-                       check_process_running("libvirtd"), config)
>+                       check_process_running("libvirtd"), config, pool_checks)
>         self._slave_pool = sp
> 
>         self._machines = {}
>diff --git a/lnst/Controller/SlavePool.py b/lnst/Controller/SlavePool.py
>index 80a357c..b875d59 100644
>--- a/lnst/Controller/SlavePool.py
>+++ b/lnst/Controller/SlavePool.py
>@@ -35,11 +35,14 @@ class SlavePool:
>     _machine_matches = []
>     _network_matches = []
> 
>-    _allow_virtual = False
>+    _allow_virt = False
>+    _pool_checks = True
> 
>-    def __init__(self, pool_dirs, allow_virtual=False, config=None):
>+    def __init__(self, pool_dirs, allow_virtual=False, config=None,
>+                 pool_checks=True):
>         self._config = config
>-        self._allow_virtual = allow_virtual
>+        self._allow_virt = allow_virtual
>+        self._pool_checks = pool_checks
>         for pool_dir in pool_dirs:
>             self.add_dir(pool_dir)
> 
>@@ -61,30 +64,33 @@ class SlavePool:
>             parser.disable_events()
> 
>             machine = {"params": {}, "interfaces": {}}
>-            machine_id = re.sub("\.[xX][mM][lL]$", "", basename)
>-            parser.set_machine(machine_id, machine)
>+            m_id = re.sub("\.[xX][mM][lL]$", "", basename)
>+            parser.set_machine(m_id, machine)
> 
>             slavemachine = dom.getElementsByTagName("slavemachine")[0]
> 
>             parser.parse(slavemachine)
> 
>-            hostname = machine["params"]["hostname"]
>-            if "rpcport" in machine:
>-                port = machine["params"]["rpcport"]
>-            else:
>-                port = self._config.get_option('environment', 'rpcport')
>-            logging.info("Querying slave machine %s." % machine_id)
>-            if not test_tcp_connection(hostname, port):
>-                return
>-
>-            if 'libvirt_domain' not in machine['params'] \
>-                                   or self._allow_virtual:
>-                logging.info("Adding slave machine %s to slave pool."
>-                             % machine_id)
>-                self._pool[machine_id] = machine
>-            else:
>-                logging.warning("libvirtd not found- Machine Pool skipping "\
>-                                "machine %s" % machine_id)
>+            if self._pool_checks:
>+                hostname = machine["params"]["hostname"]
>+                if "rpcport" in machine:
>+                    port = machine["params"]["rpcport"]
>+                else:
>+                    port = self._config.get_option('environment', 'rpcport')
>+
>+                logging.info("Querying slave machine %s." % m_id)
>+                if not test_tcp_connection(hostname, port):
>+                    msg = "Machine '%s' not responding. Skipping." % m_id
>+                    logging.warning(msg)
>+                    return
>+
>+                if 'libvirt_domain' in machine['params'] and \
>+                   not self._allow_virt:
>+                    msg = "libvird not running. Skipping machine '%s'." % m_id
>+                    logging.warning(msg)
>+
>+            logging.info("Adding slave machine %s to slave pool." % m_id)
>+            self._pool[m_id] = machine
> 
>     def provision_machines(self, mreqs):
>         """
>-- 
>1.7.7.6
>
>_______________________________________________
>LNST-developers mailing list
>LNST-developers at lists.fedorahosted.org
>https://lists.fedorahosted.org/mailman/listinfo/lnst-developers


More information about the LNST-developers mailing list