comparison py/receive.py @ 193:063ff856f9c5

working
author Matt Johnston <matt@ucc.asn.au>
date Tue, 11 Feb 2014 23:48:03 +0800
parents
children e27075b1e088
comparison
equal deleted inserted replaced
192:e13146001852 193:063ff856f9c5
1 #!/usr/bin/env python
2
3 import params
4 import json
5 import sys
6 import tempfile
7 import signal
8 import os
9
10 import config
11
12
13 def same_type(a, b):
14 ta = type(a)
15 tb = type(b)
16
17 if ta == int:
18 ta = float
19 if tb == int:
20 tb = float
21
22 return (ta == tb)
23
24 def main():
25
26 i = sys.stdin.read()
27 new_params = json.loads(i)
28
29 def_params = params.Params()
30
31 if def_params.viewkeys() != new_params.viewkeys():
32 diff = def_params.viewkeys() ^ new_params.viewkeys()
33 return "Mismatching params, %s" % str(diff)
34
35 for k, v in new_params.items():
36 if not same_type(v, def_params[k]):
37 return "Bad type for %s" % k
38
39 dir = os.path.dirname(config.PARAMS_FILE)
40
41 try:
42 t = tempfile.NamedTemporaryFile(prefix='config',
43 dir = dir,
44 delete = False)
45
46 t.write(json.dumps(new_params, sort_keys=True, indent=4)+'\n')
47
48 os.rename(t.name, config.PARAMS_FILE)
49 except Exception, e:
50 return "Problem: %s" % e
51
52 try:
53 pid = int(open('%s/tempserver.pid' % dir, 'r').read())
54 if pid < 2:
55 return "Bad pid %d" % pid
56 os.kill(pid, signal.SIGHUP)
57 except Exception, e:
58 return "HUP problem: %s" % e
59
60 return 'Good Update'
61
62 if __name__ == '__main__':
63 print main()
64