diff options
| author | Michal Toman <mtoman@redhat.com> | 2010-11-08 16:25:33 +0100 |
|---|---|---|
| committer | Michal Toman <mtoman@redhat.com> | 2010-11-08 16:25:33 +0100 |
| commit | 6bb4e3993687014a5c2fdc2957f274eabc017ca1 (patch) | |
| tree | 5cc7dcf37ef6cd937c6e7de41a5c26d89208666f | |
| parent | a1146cb60d0e2225d2195a6f6b43de0fc52b7b0c (diff) | |
update worker
| -rw-r--r-- | retrace/lib/retrace.py | 46 | ||||
| -rwxr-xr-x | retrace/worker/abrt-retrace-worker | 15 | ||||
| -rwxr-xr-x | retrace/worker/worker.py | 7 |
3 files changed, 43 insertions, 25 deletions
diff --git a/retrace/lib/retrace.py b/retrace/lib/retrace.py index 656e9086..37409f62 100644 --- a/retrace/lib/retrace.py +++ b/retrace/lib/retrace.py @@ -10,13 +10,13 @@ REQUIRED_FILES = ["architecture", "coredump", "packages", "release"] DF_OUTPUT_PARSER = re.compile("^([^ ^\t]*)[ \t]+([0-9]+)[ \t]+([0-9]+)[ \t]+([0-9]+)[ \t]+([0-9]+%)[ \t]+(.*)$") XZ_OUTPUT_PARSER = re.compile("^totals[ \t]+([0-9]+)[ \t]+([0-9]+)[ \t]+([0-9]+)[ \t]+([0-9]+)[ \t]+([0-9]+\.[0-9]+)[ \t]+([^ ^\t]+)[ \t]+([0-9]+)$") -URL_PARSER = re.compile("^/([a-zA-Z0-9]+)/") +URL_PARSER = re.compile("^/([0-9]+)/") -TASKID_ALPHABET = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" +TASKPASS_ALPHABET = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" CONFIG_FILE = "/etc/abrt/retrace.conf" CONFIG = { - "TaskIdLength": 64, + "TaskPassLength": 32, "MaxParallelTasks": 2, "MaxPackedSize": 30, "MaxUnpackedSize": 600, @@ -65,34 +65,46 @@ def unpacked_size(archive): pipe.close() return None +def gen_task_password(taskdir): + taskpass = "" + for j in xrange(CONFIG["TaskPassLength"]): + taskpass += random.choice(TASKPASS_ALPHABET) + + try: + passfile = open(taskdir + "/password", "w") + passfile.write(taskpass) + passfile.close() + except: + return None + + return taskpass + def new_task(): i = 0 newdir = CONFIG["WorkDir"] while os.path.exists(newdir) and i < 50: i += 1 - taskid = "" - for j in xrange(CONFIG["TaskIdLength"]): - taskid += random.choice(TASKID_ALPHABET) - newdir = CONFIG["WorkDir"] + "/" + taskid + taskid = random.randint(100000000, 999999999) + newdir = CONFIG["WorkDir"] + "/" + str(taskid) - try: - os.mkdir(newdir) - return taskid, newdir - except: - pass + try: + os.mkdir(newdir) + taskpass = gen_task_password(newdir) + if not taskpass: + os.system("rm -rf " + newdir) + raise - return None, None + return taskid, taskpass, newdir + except: + return None, None, None def unpack(archive): pipe = Popen(["tar", "xJf", archive]) pipe.wait() return pipe.returncode -def get_task_password(crashdir): - return "Password for " + crashdir - def get_task_est_time(crashdir): - return 10 + return 180 def response(start_response, status, body="", extra_headers=[]): start_response(status, [("Content-Type", "text/plain"), ("Content-Length", str(len(body)))] + extra_headers) diff --git a/retrace/worker/abrt-retrace-worker b/retrace/worker/abrt-retrace-worker index 43d16d38..05a31d5f 100755 --- a/retrace/worker/abrt-retrace-worker +++ b/retrace/worker/abrt-retrace-worker @@ -20,16 +20,29 @@ then export PYTHONPATH="/usr/share/abrt-retrace" LOG="$1/log" echo "Starting retrace" > $LOG - exec /usr/bin/python /usr/share/abrt-retrace/worker.py "$1" >> $LOG + /usr/bin/python /usr/share/abrt-retrace/worker.py "$1" >> $LOG RET=$? + if [ $RET -eq "0" ] then echo "Retrace successful" >> $LOG mv "$1/backtrace" "$1/retrace_backtrace" + chown "apache" "$1/retrace_backtrace" else echo "Retrace failed" >> $LOG fi + mv "$1/log" "$1/retrace_log" + chown "apache" "$1/retrace_log" + + for DEL in $1/* + do + if [ $DEL != "$1/retrace_log" ] && [ $DEL != "$1/retrace_backtrace" ] && [ $DEL != "$1/password" ] + then + rm -rf $DEL + fi + done + exit $RET else echo "Usage: '$0 retrace_directory'" diff --git a/retrace/worker/worker.py b/retrace/worker/worker.py index d86b8e0a..8e28ea4b 100755 --- a/retrace/worker/worker.py +++ b/retrace/worker/worker.py @@ -213,11 +213,4 @@ if __name__ == "__main__": retrace_run(15, ["cp", workdir + "/" + chroot + "/root/var/spool/abrt/crash/backtrace", workdir]) print "OK" - print "Cleaning virtual root and crash directory...", - sys.stdout.flush() - - retrace_run(16, ["mock", "clean", "-r", mockr]) - retrace_run(17, ["rm", "-rf", workdir + "/crash", workdir + "/mock.cfg"]) - - print "OK" print "Retrace took " + str(time.time() - starttime) + " seconds" |
