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, 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)