1 # Integration with the oestats build statistics server, see:
3 # http://opensource.bolloretelecom.eu/projects/oestats
5 # To make use of this class, add to your local.conf:
7 # INHERIT += "oestats-client"
8 # OESTATS_SERVER = "some.server.org:8000"
9 # OESTATS_BUILDER = "some title"
11 def oestats_setid(d, val):
13 f = file(bb.data.getVar('TMPDIR', d, True) + '/oestats.id', 'w')
18 f = file(bb.data.getVar('TMPDIR', d, True) + '/oestats.id', 'r')
21 def oestats_send(server, action, vars = {}):
22 import httplib, urllib
24 params = urllib.urlencode(vars)
25 headers = {"Content-type": "application/x-www-form-urlencoded",
26 "Accept": "text/plain"}
27 conn = httplib.HTTPConnection(server)
28 conn.request("POST", action, params, headers)
29 response = conn.getresponse()
33 def oestats_start(server, builder, d):
38 response = oestats_send(server, "/builds/start/", {
40 'revision': bb.data.getVar('METADATA_REVISION', d, True),
41 'machine': bb.data.getVar('MACHINE', d, True),
42 'distro': bb.data.getVar('DISTRO', d, True),
49 def oestats_stop(server, d, status):
56 response = oestats_send(server, "/builds/stop/%s/" % id, {
60 def oestats_task(server, d, task, status):
67 elapsed = time.time() - float(bb.data.getVar('OESTATS_STAMP', d, True))
72 response = oestats_send(server, "/builds/task/%s/" % id, {
73 'package': bb.data.getVar('PN', d, True),
74 'version': bb.data.getVar('PV', d, True),
75 'revision': bb.data.getVar('PR', d, True),
81 addhandler oestats_eventhandler
82 python oestats_eventhandler () {
83 from bb.event import getName
87 if e.data is None or getName(e) == "MsgNote":
90 server = bb.data.getVar('OESTATS_SERVER', e.data, True)
91 builder = bb.data.getVar('OESTATS_BUILDER', e.data, True)
92 if not server or not builder:
95 if getName(e) == 'BuildStarted':
96 oestats_start(server, builder, e.data)
97 elif getName(e) == 'BuildCompleted':
98 oestats_stop(server, e.data, 'Completed')
99 elif getName(e) == 'TaskStarted':
100 bb.data.setVar('OESTATS_STAMP', repr(time.time()), e.data)
101 elif getName(e) == 'TaskSucceeded':
102 oestats_task(server, e.data, e.task, 'Succeeded')
103 elif getName(e) == 'TaskFailed':
104 oestats_task(server, e.data, e.task, 'Failed')