# $Id$
import time
+import os
+from commands import getstatusoutput
+from logger import Logfile
-# how could this accept a list again ?
-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, 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, 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, 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)
+