handlers.py
59 lines
| 1.7 KiB
| text/x-python
|
PythonLexer
MinRK
|
r17021 | """Tornado handlers for cluster web service.""" | ||
Brian E. Granger
|
r10641 | |||
MinRK
|
r17021 | # Copyright (c) IPython Development Team. | ||
# Distributed under the terms of the Modified BSD License. | ||||
Brian E. Granger
|
r10641 | |||
MinRK
|
r17021 | import json | ||
Brian E. Granger
|
r10641 | |||
from tornado import web | ||||
Brian E. Granger
|
r10665 | from ...base.handlers import IPythonHandler | ||
Brian E. Granger
|
r10641 | |||
#----------------------------------------------------------------------------- | ||||
# Cluster handlers | ||||
#----------------------------------------------------------------------------- | ||||
class MainClusterHandler(IPythonHandler): | ||||
@web.authenticated | ||||
def get(self): | ||||
MinRK
|
r17021 | self.finish(json.dumps(self.cluster_manager.list_profiles())) | ||
Brian E. Granger
|
r10641 | |||
class ClusterProfileHandler(IPythonHandler): | ||||
@web.authenticated | ||||
def get(self, profile): | ||||
MinRK
|
r17021 | self.finish(json.dumps(self.cluster_manager.profile_info(profile))) | ||
Brian E. Granger
|
r10641 | |||
class ClusterActionHandler(IPythonHandler): | ||||
@web.authenticated | ||||
def post(self, profile, action): | ||||
cm = self.cluster_manager | ||||
if action == 'start': | ||||
MinRK
|
r10685 | n = self.get_argument('n', default=None) | ||
if not n: | ||||
Brian E. Granger
|
r10641 | data = cm.start_cluster(profile) | ||
else: | ||||
data = cm.start_cluster(profile, int(n)) | ||||
if action == 'stop': | ||||
data = cm.stop_cluster(profile) | ||||
MinRK
|
r17021 | self.finish(json.dumps(data)) | ||
Brian E. Granger
|
r10647 | |||
#----------------------------------------------------------------------------- | ||||
# URL to handler mappings | ||||
#----------------------------------------------------------------------------- | ||||
_cluster_action_regex = r"(?P<action>start|stop)" | ||||
_profile_regex = r"(?P<profile>[^\/]+)" # there is almost no text that is invalid | ||||
default_handlers = [ | ||||
(r"/clusters", MainClusterHandler), | ||||
(r"/clusters/%s/%s" % (_profile_regex, _cluster_action_regex), ClusterActionHandler), | ||||
(r"/clusters/%s" % _profile_regex, ClusterProfileHandler), | ||||
] | ||||