add error catching to kernel manager

also, adding further tests to kernel manager
pull/37/head
Zachary Sailer 13 years ago committed by MinRK
parent c0bc0410ce
commit 97bc426bb7

@ -23,7 +23,7 @@ from zmq.utils import jsonapi
from IPython.utils.jsonutil import date_default
from ...base.handlers import IPythonHandler
from ...base.handlers import IPythonHandler, json_errors
from ...base.zmqhandlers import AuthenticatedZMQStreamHandler
#-----------------------------------------------------------------------------
@ -34,11 +34,13 @@ from ...base.zmqhandlers import AuthenticatedZMQStreamHandler
class MainKernelHandler(IPythonHandler):
@web.authenticated
@json_errors
def get(self):
km = self.kernel_manager
self.finish(jsonapi.dumps(km.list_kernels()))
self.finish(jsonapi.dumps(km.list_kernels(self.ws_url)))
@web.authenticated
@json_errors
def post(self):
km = self.kernel_manager
kernel_id = km.start_kernel()
@ -52,12 +54,14 @@ class KernelHandler(IPythonHandler):
SUPPORTED_METHODS = ('DELETE', 'GET')
@web.authenticated
@json_errors
def get(self, kernel_id):
km = self.kernel_manager
model = km.kernel_model(kernel_id, self.ws_url)
self.finish(jsonapi.dumps(model))
@web.authenticated
@json_errors
def delete(self, kernel_id):
km = self.kernel_manager
km.shutdown_kernel(kernel_id)
@ -68,6 +72,7 @@ class KernelHandler(IPythonHandler):
class KernelActionHandler(IPythonHandler):
@web.authenticated
@json_errors
def post(self, kernel_id, action):
km = self.kernel_manager
if action == 'interrupt':

@ -79,9 +79,14 @@ class MappingKernelManager(MultiKernelManager):
model = {"id":kernel_id, "ws_url": ws_url}
return model
def list_kernels(self):
def list_kernels(self, ws_url):
"""Returns a list of kernel_id's of kernels running."""
return super(MappingKernelManager, self).list_kernel_ids()
kernels = []
kernel_ids = super(MappingKernelManager, self).list_kernel_ids()
for kernel_id in kernel_ids:
model = self.kernel_model(kernel_id, ws_url)
kernels.append(model)
return kernels
# override _check_kernel_id to raise 404 instead of KeyError
def _check_kernel_id(self, kernel_id):

@ -36,7 +36,7 @@ class KernelAPITest(NotebookTestBase):
# GET request
r = requests.get(self.base_url())
assert isinstance(r.json(), list)
self.assertEqual(r.json()[0], data['id'])
self.assertEqual(r.json()[0]['id'], data['id'])
def test_kernel_handler(self):
# GET kernel with id

@ -228,8 +228,8 @@ class FileNotebookManager(NotebookManager):
self.log.debug("Unlinking checkpoint %s", cp_path)
os.unlink(cp_path)
self.log.debug("Unlinking notebook %s", nb_path)
os.unlink(nb_path)
self.log.debug("Unlinking notebook %s", os_path)
os.unlink(os_path)
def rename_notebook(self, old_name, old_path, new_name, new_path):
"""Rename a notebook."""

Loading…
Cancel
Save