##// END OF EJS Templates
wait for terminal to terminate
Min RK -
Show More
@@ -1,44 +1,44
1 import json
1 import json
2 from tornado import web
2 from tornado import web, gen
3 from ..base.handlers import IPythonHandler, json_errors
3 from ..base.handlers import IPythonHandler, json_errors
4 from ..utils import url_path_join
4 from ..utils import url_path_join
5
5
6 class TerminalRootHandler(IPythonHandler):
6 class TerminalRootHandler(IPythonHandler):
7 @web.authenticated
7 @web.authenticated
8 @json_errors
8 @json_errors
9 def get(self):
9 def get(self):
10 tm = self.terminal_manager
10 tm = self.terminal_manager
11 terms = [{'name': name} for name in tm.terminals]
11 terms = [{'name': name} for name in tm.terminals]
12 self.finish(json.dumps(terms))
12 self.finish(json.dumps(terms))
13
13
14 @web.authenticated
14 @web.authenticated
15 @json_errors
15 @json_errors
16 def post(self):
16 def post(self):
17 """POST /terminals creates a new terminal and redirects to it"""
17 """POST /terminals creates a new terminal and redirects to it"""
18 name, _ = self.terminal_manager.new_named_terminal()
18 name, _ = self.terminal_manager.new_named_terminal()
19 self.finish(json.dumps({'name': name}))
19 self.finish(json.dumps({'name': name}))
20
20
21
21
22 class TerminalHandler(IPythonHandler):
22 class TerminalHandler(IPythonHandler):
23 SUPPORTED_METHODS = ('GET', 'DELETE')
23 SUPPORTED_METHODS = ('GET', 'DELETE')
24
24
25 @web.authenticated
25 @web.authenticated
26 @json_errors
26 @json_errors
27 def get(self, name):
27 def get(self, name):
28 tm = self.terminal_manager
28 tm = self.terminal_manager
29 if name in tm.terminals:
29 if name in tm.terminals:
30 self.finish(json.dumps({'name': name}))
30 self.finish(json.dumps({'name': name}))
31 else:
31 else:
32 raise web.HTTPError(404, "Terminal not found: %r" % name)
32 raise web.HTTPError(404, "Terminal not found: %r" % name)
33
33
34 @web.authenticated
34 @web.authenticated
35 @json_errors
35 @json_errors
36 @gen.coroutine
36 def delete(self, name):
37 def delete(self, name):
37 tm = self.terminal_manager
38 tm = self.terminal_manager
38 if name in tm.terminals:
39 if name in tm.terminals:
39 tm.kill(name)
40 yield tm.terminate(name, force=True)
40 # XXX: Should this wait for terminal to finish before returning?
41 self.set_status(204)
41 self.set_status(204)
42 self.finish()
42 self.finish()
43 else:
43 else:
44 raise web.HTTPError(404, "Terminal not found: %r" % name) No newline at end of file
44 raise web.HTTPError(404, "Terminal not found: %r" % name)
General Comments 0
You need to be logged in to leave comments. Login now