reset changelog for debian package
[debian/orchestra.git] / clientlibs / python / audience.py
1 # audience.py
2
3 import socket
4 import json
5
6 DEFAULT_SOCKET_PATH="/var/spool/orchestra/conductor.sock"
7
8 class ServerError(Exception):
9     pass
10
11 def submit_job(score, scope, target, args=None, sockname=DEFAULT_SOCKET_PATH):
12     reqObj = {
13         'op': 'queue',
14         'score': score,
15         'scope': scope,
16         'players': None,
17         'params': {}
18     }
19
20     reqObj['players'] = list(target)
21
22     if args is not None:
23         reqObj['params'] = args
24
25     sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
26     sock.connect(sockname)
27     f = sock.makefile()
28     try:
29         f.write(json.dumps(reqObj))
30         f.flush()
31         resp = json.load(f)
32
33         if resp[0] == 'OK':
34             return resp[1]
35         else:
36             raise ServerError(resp[1])
37     finally:
38         sock.close()
39
40 def get_status(jobid, sockname=DEFAULT_SOCKET_PATH):
41     reqObj = {
42         'op': 'status',
43         'id': jobid
44     }
45     sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
46     sock.connect(sockname)
47     f = sock.makefile()
48     try:
49         f.write(json.dumps(reqObj))
50         f.flush()
51         resp = json.load(f)
52
53         if resp[0] == 'OK':
54             return resp[1]
55         else:
56             raise ServerError(resp[1])
57     finally:
58         sock.close()