# $Id$ import time import os from commands import getstatusoutput from logger import Logfile 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 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)