]>
Commit | Line | Data |
---|---|---|
dfff8bd5 MM |
1 | # vi: encoding=utf-8 ts=8 sts=4 sw=4 et |
2 | ||
c8782384 | 3 | import path |
266bcdd3 | 4 | import time |
c8782384 | 5 | import os |
7bf8de49 | 6 | import re |
97c76301 | 7 | import log |
c8782384 MM |
8 | |
9 | from config import config | |
bdc3292c | 10 | import util |
c8782384 MM |
11 | |
12 | class Buildlogs_Queue: | |
dfff8bd5 MM |
13 | def __init__(self): |
14 | self.queue = [] | |
15 | self.some_failed = 0 | |
16bc8b6f | 16 | self.requester_email = None |
dfff8bd5 MM |
17 | |
18 | def init(self, g): | |
19 | self.requester_email = g.requester_email | |
20 | ||
5c59479b | 21 | def add(self, logfile, failed, id): |
dfff8bd5 MM |
22 | # if /dev/null, don't even bother to store it |
23 | if config.buildlogs_url == "/dev/null": | |
24 | return | |
ff888351 | 25 | blogfile = os.path.basename(logfile) |
1aa1eb02 | 26 | name = re.sub(r"\.spec\.log", "", blogfile) + "," + id + ".bz2" |
97c76301 | 27 | ret = os.system("bzip2 --best --force < %s > %s" \ |
48f12722 | 28 | % (logfile, path.buildlogs_queue_dir + '/' + config.builder + '.' + id + '.' + blogfile)) |
97c76301 AM |
29 | if ret: |
30 | log.error("bzip2 compression of %s failed; does bzip2 binary exist?" % (logfile)) | |
dfff8bd5 MM |
31 | |
32 | if failed: s = "FAIL" | |
33 | else: s = "OK" | |
9b05e4ce | 34 | f = open(path.buildlogs_queue_dir + '/' + config.builder + '.' + id + '.' + blogfile + ".info", "w") |
dfff8bd5 MM |
35 | f.write("Status: %s\nEND\n" % s) |
36 | f.close() | |
37 | ||
b25ebd68 | 38 | self.queue.append({'name': name, 'id': config.builder + '.' + id + '.' + blogfile, 'failed': failed}) |
dfff8bd5 MM |
39 | |
40 | def flush(self): | |
41 | def desc(l): | |
76ba3bb3 | 42 | return """Target: %s/%s |
266bcdd3 | 43 | Builder: %s |
266bcdd3 | 44 | Time: %d |
1051562e | 45 | Type: buildlog |
266bcdd3 MM |
46 | Requester: %s |
47 | END | |
76ba3bb3 | 48 | """ % (config.buildlogs_url, l['name'], config.builder, time.time(), self.requester_email) |
e6376553 | 49 | |
0205d10b AM |
50 | q = self.queue[:] |
51 | for l in q: | |
9246c3cb | 52 | f = open(path.buildlogs_queue_dir + '/' + l['id'] + ".desc.tmp", "w") |
dfff8bd5 MM |
53 | f.write(desc(l)) |
54 | f.close() | |
9246c3cb | 55 | os.rename(path.buildlogs_queue_dir + '/' + l['id'] + ".desc.tmp", path.buildlogs_queue_dir + '/' + l['id'] + ".desc") |
0205d10b | 56 | self.queue.remove(l) |
c8782384 MM |
57 | |
58 | queue = Buildlogs_Queue() | |
b5a39692 | 59 | |
e2cad913 | 60 | def init(r): |
dfff8bd5 | 61 | queue.init(r) |
e2cad913 | 62 | |
580391bc | 63 | def add(logfile, failed, id): |
dfff8bd5 | 64 | "Add new buildlog with specified status." |
580391bc | 65 | queue.add(logfile, failed, id) |
b5a39692 | 66 | |
2e33eed1 | 67 | def flush(): |
dfff8bd5 MM |
68 | "Send buildlogs to server." |
69 | queue.flush() |