run lxc-enter-namespace with --noseclabel
[tests.git] / qaapi / qa / utils.py
index 52e359f..871a54f 100644 (file)
@@ -1,27 +1,49 @@
 # $Id$
 import time
 import os
-import commands
+from commands import getstatusoutput
+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())
-    print "*",now,'--',message
+    if isinstance(message, list):
+       message = "".join(message)   
+    output = "*"+now+'--'+message      
+    print 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, 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):
-    (status, output) = commands.getstatusoutput(command)
-    if fatal and not status == 0:
-       raise Exception, "%(command)s Failed:\n%(output)s" % locals()
+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 status == 256 and output:
+        raise Exception, "%(command)s Failed:\n%(output)s" % locals()
     return (status, output)                     
+