|
@@ -18,6 +18,7 @@ import urlparse
|
|
|
|
|
|
|
|
import gevent.pywsgi
|
|
import gevent.pywsgi
|
|
|
|
|
|
|
|
|
|
+import db
|
|
|
import fileio
|
|
import fileio
|
|
|
import reloader
|
|
import reloader
|
|
|
|
|
|
|
@@ -30,6 +31,7 @@ def main():
|
|
|
'datum': post_datum,
|
|
'datum': post_datum,
|
|
|
'raw': get_raw,
|
|
'raw': get_raw,
|
|
|
'stats': get_stats,
|
|
'stats': get_stats,
|
|
|
|
|
+ 'register_server': register_server,
|
|
|
}
|
|
}
|
|
|
server = gevent.pywsgi.WSGIServer(('0.0.0.0', 8892), application)
|
|
server = gevent.pywsgi.WSGIServer(('0.0.0.0', 8892), application)
|
|
|
reloader.init(server)
|
|
reloader.init(server)
|
|
@@ -180,12 +182,7 @@ def post_datum(split, query, environ):
|
|
|
server_id = int(split[3])
|
|
server_id = int(split[3])
|
|
|
except (IndexError, ValueError):
|
|
except (IndexError, ValueError):
|
|
|
raise HTTPException(400, '')
|
|
raise HTTPException(400, '')
|
|
|
- try:
|
|
|
|
|
- body = json.load(environ['wsgi.input'])
|
|
|
|
|
- except ValueError:
|
|
|
|
|
- raise HTTPException(400, 'post body was not valid JSON')
|
|
|
|
|
- if not isinstance(body, dict):
|
|
|
|
|
- raise HTTPException(400, 'post body was not a JSON dictionary')
|
|
|
|
|
|
|
+ body = load_json_body(environ)
|
|
|
if body.keys() != fileio.TEMPLATE.keys():
|
|
if body.keys() != fileio.TEMPLATE.keys():
|
|
|
diff = set(body.keys()).symmetric_difference(set(fileio.TEMPLATE.keys()))
|
|
diff = set(body.keys()).symmetric_difference(set(fileio.TEMPLATE.keys()))
|
|
|
raise HTTPException(400, 'post body had missing or extra keys: ' + ','.join(diff))
|
|
raise HTTPException(400, 'post body had missing or extra keys: ' + ','.join(diff))
|
|
@@ -232,4 +229,27 @@ def post_datum(split, query, environ):
|
|
|
fileio.write_datum(f, data)
|
|
fileio.write_datum(f, data)
|
|
|
return {'status': 'ok'}
|
|
return {'status': 'ok'}
|
|
|
|
|
|
|
|
|
|
+def register_server(split, query, environ):
|
|
|
|
|
+ try:
|
|
|
|
|
+ group = int(split[1])
|
|
|
|
|
+ except (IndexError, ValueError):
|
|
|
|
|
+ raise HTTPException(400, '')
|
|
|
|
|
+ body = load_json_body(environ)
|
|
|
|
|
+ try:
|
|
|
|
|
+ hostname = body['hostname']
|
|
|
|
|
+ except KeyError:
|
|
|
|
|
+ raise HTTPException(400, 'post body didn\'t contain "hostname" key')
|
|
|
|
|
+
|
|
|
|
|
+ server_id = db.create_server(group, hostname)
|
|
|
|
|
+ return {'server_id': server_id}
|
|
|
|
|
+
|
|
|
|
|
+def load_json_body(environ):
|
|
|
|
|
+ try:
|
|
|
|
|
+ body = json.load(environ['wsgi.input'])
|
|
|
|
|
+ except ValueError:
|
|
|
|
|
+ raise HTTPException(400, 'post body was not valid JSON')
|
|
|
|
|
+ if not isinstance(body, dict):
|
|
|
|
|
+ raise HTTPException(400, 'post body was not a JSON dictionary')
|
|
|
|
|
+ return body
|
|
|
|
|
+
|
|
|
main()
|
|
main()
|