oops
[tests.git] / qaapi / qa / utils.py
index 0e5a5a6..871a54f 100644 (file)
@@ -2,38 +2,48 @@
 import time
 import os
 from commands import getstatusoutput
-from logger import logfile
+from logger import Logfile
 
-def header(message):
+def header(message, log = True, logfile = Logfile('/var/log/qaapi')):
     now=time.strftime("%H:%M:%S", time.localtime())
+    if isinstance(message, list):
+       message = "".join(message)   
     output = "*"+now+'--'+message      
     print output
-    print >> logfile, output   
+    if log:
+        print >> logfile, output       
 
-
-def popen(command, fatal=True):
+def popen(command, fatal=True, verbose = False, logfile = Logfile('/var/log/qaapi.log')):
+    header(command)    
+    if verbose:
+       header(command, False)  
     (stdin, stdout, stderr) = os.popen3(command)
     output = stdout.readlines()
+    errors = stderr.readlines()        
     print >> logfile, "+ "+command
     print >> logfile, "".join(output).strip() 
     # filter output generated by set x
     remove_set_x = lambda line: not line.startswith("+")        
-    errors = filter(remove_set_x, stderr.readlines())
+    errors = filter(remove_set_x, errors)
     
     if fatal and errors:
        raise Exception, "".join(errors)        
     return (output, errors)    
 
-def popen3(command):
+def popen3(command, verbose = False, logfile = Logfile('/var/log/qaapi.log')):
+    if verbose:
+       header(command, False)
     (stdin, stdout, stderr) = os.popen3(command)
     print >> logfile, "+ "+command
     return (stdin, stdout, stderr)                     
     
-def commands(command, fatal = True):
+def commands(command, fatal = True, verbose = False, logfile = Logfile('/var/log/qaapi.log')):
+    if verbose:
+       header(command, False)  
     (status, output) = getstatusoutput(command)
     print >> logfile, "+ "+command
     print >> logfile, output.strip()           
-    if fatal and not status == 0:
-       raise Exception, "%(command)s Failed:\n%(output)s" % locals()
+    if fatal and status == 256 and output:
+        raise Exception, "%(command)s Failed:\n%(output)s" % locals()
     return (status, output)