]>
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 AM |
25 | blogfile = os.path.basename(logfile) |
26 | name = re.sub(r"\.spec\.log", "", blogfile) + "," + id + '.' + blogfile + ".bz2" | |
97c76301 | 27 | ret = os.system("bzip2 --best --force < %s > %s" \ |
b6182f2c | 28 | % (logfile, path.buildlogs_queue_dir + '/' + 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" | |
ff888351 | 34 | f = open(path.buildlogs_queue_dir + '/' + id + '.' + blogfile + ".info", "w") |
dfff8bd5 MM |
35 | f.write("Status: %s\nEND\n" % s) |
36 | f.close() | |
37 | ||
ff888351 | 38 | self.queue.append({'name': name, 'id': 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) |
dfff8bd5 MM |
49 | |
50 | for l in self.queue: | |
9246c3cb | 51 | f = open(path.buildlogs_queue_dir + '/' + l['id'] + ".desc.tmp", "w") |
dfff8bd5 MM |
52 | f.write(desc(l)) |
53 | f.close() | |
9246c3cb | 54 | os.rename(path.buildlogs_queue_dir + '/' + l['id'] + ".desc.tmp", path.buildlogs_queue_dir + '/' + l['id'] + ".desc") |
c8782384 MM |
55 | |
56 | queue = Buildlogs_Queue() | |
b5a39692 | 57 | |
e2cad913 | 58 | def init(r): |
dfff8bd5 | 59 | queue.init(r) |
e2cad913 | 60 | |
580391bc | 61 | def add(logfile, failed, id): |
dfff8bd5 | 62 | "Add new buildlog with specified status." |
580391bc | 63 | queue.add(logfile, failed, id) |
b5a39692 | 64 | |
2e33eed1 | 65 | def flush(): |
dfff8bd5 MM |
66 | "Send buildlogs to server." |
67 | queue.flush() |