X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=qaapi%2Fqa%2Futils.py;h=871a54fb75e9d3d1e4cf94c0f551acc1b069ee1c;hb=4297f83e55247a16c587d1aae4205f198d17fd69;hp=38132bf374d9edbf757d438e1322be3b0025d6d8;hpb=a072c43bd72437b82cace9f2d6f93ac76504622f;p=tests.git diff --git a/qaapi/qa/utils.py b/qaapi/qa/utils.py index 38132bf..871a54f 100644 --- a/qaapi/qa/utils.py +++ b/qaapi/qa/utils.py @@ -1,21 +1,49 @@ # $Id$ import time import os +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, "\n".join(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) +