diff mbox

KVM test: Make kvm_config.py to use autotest logging

Message ID 1249862231-7082-1-git-send-email-lmr@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Lucas Meneghel Rodrigues Aug. 9, 2009, 11:57 p.m. UTC
Make kvm_config.py be able to use the autotest logging
infrastructure even in stand alone mode. This way we
get the ability of having selective debug mode, and
just use the cleaner logging.[debuglevel]('message')
syntax instead of resorting to hardcoded [LEVEL]
strings in any message.

Also, make kvm_config use the optparse library to get
options. Script usage:

Usage: kvm_config.py [options]

Options:
  -h, --help  show this help message and exit
  -f, --file  path to a config file that will be parsed.
              If not specified, will parse kvm_tests.cfg
              located inside the kvm test dir.
  --verbose   include debug messages in console output

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
---
 client/tests/kvm/control       |    4 +-
 client/tests/kvm/kvm_config.py |   58 ++++++++++++++++++++++++---------------
 2 files changed, 38 insertions(+), 24 deletions(-)
diff mbox

Patch

diff --git a/client/tests/kvm/control b/client/tests/kvm/control
index 5c5d424..f894bf9 100644
--- a/client/tests/kvm/control
+++ b/client/tests/kvm/control
@@ -73,12 +73,12 @@  params = {
     "name": "kvm_install",
     "shortname": "kvm_install",
     "type": "kvm_install",
-    "mode": "release",
+    #"mode": "release",
     #"mode": "snapshot",
     #"mode": "localtar",
     #"mode": "localsrc",
     #"mode": "git",
-    #"mode": "noinstall",
+    "mode": "noinstall",
 
     ## Are we going to load modules built by this test?
     ## Defaults to 'yes', so if you are going to provide only userspace code to
diff --git a/client/tests/kvm/kvm_config.py b/client/tests/kvm/kvm_config.py
index 7ff7a07..3237276 100755
--- a/client/tests/kvm/kvm_config.py
+++ b/client/tests/kvm/kvm_config.py
@@ -1,7 +1,8 @@ 
 #!/usr/bin/python
-import re, os, sys, StringIO
+import logging, re, os, sys, StringIO, optparse
 import common
 from autotest_lib.client.common_lib import error
+from autotest_lib.client.common_lib import logging_config, logging_manager
 
 """
 KVM configuration file utility functions.
@@ -9,6 +10,13 @@  KVM configuration file utility functions.
 @copyright: Red Hat 2008-2009
 """
 
+
+class KvmLoggingConfig(logging_config.LoggingConfig):
+    def configure_logging(self, results_dir=None, verbose=False):
+        super(KvmLoggingConfig, self).configure_logging(use_console=True,
+                                                        verbose=verbose)
+
+
 class config:
     """
     Parse an input file or string that follows the KVM Test Config File format
@@ -22,7 +30,8 @@  class config:
         """
         Initialize the list and optionally parse filename.
 
-        @param filename: Path of the file that will be taken
+        @param filename: Path of the file that will be taken.
+        @param debug: Whether to turn debugging output.
         """
         self.list = [{"name": "", "shortname": "", "depend": []}]
         self.debug = debug
@@ -31,15 +40,6 @@  class config:
             self.parse_file(filename)
 
 
-    def set_debug(self, debug=False):
-        """
-        Enable or disable debugging output.
-
-        @param debug: Whether debug is enabled (True) or disabled (False).
-        """
-        self.debug = debug
-
-
     def parse_file(self, filename):
         """
         Parse filename, return the resulting list and store it in .list. If
@@ -413,11 +413,11 @@  class config:
                         if self.debug and not restricted:
                             self.__debug_print("", "Leaving file %s" % words[1])
                     else:
-                        print ("WARNING: Cannot include %s -- "
-                               "file not found" % filename)
+                        logging.warning("Cannot include %s -- file not found",
+                                        filename)
                 else:
-                    print ("WARNING: Cannot include %s because no file is "
-                           "currently open" % words[1])
+                    logging.warning("Cannot include %s because no file is "
+                                    "currently open", words[1])
 
             # Parse multi-line exceptions
             # (the block is parsed for each dict separately)
@@ -462,7 +462,7 @@  class config:
             str = "%-50s ---> %s" % (str1, str2)
         else:
             str = str1
-        print str
+        logging.debug(str)
 
 
     def __modify_list_variants(self, list, name, dep_list, add_to_shortname):
@@ -515,16 +515,30 @@  class config:
 
 
 if __name__ == "__main__":
-    if len(sys.argv) >= 2:
-        filename = sys.argv[1]
-    else:
+    parser = optparse.OptionParser()
+    parser.add_option('-f', '--file', dest="filename", action='store_true',
+                      help='path to a config file that will be parsed. '
+                           'If not specified, will parse kvm_tests.cfg '
+                           'located inside the kvm test dir.')
+    parser.add_option('--verbose', dest="debug", action='store_true',
+                      help='include debug messages in console output')
+
+    options, args = parser.parse_args()
+    filename = options.filename
+    debug = options.debug
+
+    if not filename:
         filename = os.path.join(os.path.dirname(sys.argv[0]), "kvm_tests.cfg")
-    list = config(filename, debug=True).get_list()
+
+    # Here we configure the stand alone program to use the autotest
+    # logging system.
+    logging_manager.configure_logging(KvmLoggingConfig(), verbose=debug)
+    list = config(filename, debug=debug).get_list()
     i = 0
     for dict in list:
-        print "Dictionary #%d:" % i
+        logging.info("Dictionary #%d:", i)
         keys = dict.keys()
         keys.sort()
         for key in keys:
-            print "    %s = %s" % (key, dict[key])
+            logging.info("    %s = %s", key, dict[key])
         i += 1