@@ -435,8 +435,13 @@ async def get_kernel(self, kernel_id=None, **kwargs):
435435 raise
436436 else :
437437 kernel = json_decode (response .body )
438- self ._kernels [kernel_id ] = kernel
439- self .log .debug ("Kernel retrieved: %s" % kernel )
438+ # Only update our models if we already know about this kernel
439+ if kernel_id in self ._kernels :
440+ self ._kernels [kernel_id ] = kernel
441+ self .log .debug ("Kernel retrieved: %s" % kernel )
442+ else :
443+ self .log .warning ("Kernel '%s' is not managed by this instance." % kernel_id )
444+ kernel = None
440445 return kernel
441446
442447 async def kernel_model (self , kernel_id ):
@@ -448,18 +453,19 @@ async def kernel_model(self, kernel_id):
448453 kernel_id : uuid
449454 The uuid of the kernel.
450455 """
451- self .log .debug ("RemoteKernelManager.kernel_model: %s" , kernel_id )
456+ self .log .debug ("RemoteKernelManager.kernel_model: %s" % kernel_id )
452457 model = await self .get_kernel (kernel_id )
453458 return model
454459
455460 async def list_kernels (self , ** kwargs ):
456461 """Get a list of kernels."""
457462 kernel_url = self ._get_kernel_endpoint_url ()
458- self .log .debug ("Request list kernels: %s" , kernel_url )
463+ self .log .debug ("Request list kernels: %s" % kernel_url )
459464 response = await gateway_request (kernel_url , method = 'GET' )
460465 kernels = json_decode (response .body )
461- self ._kernels = {x ['id' ]: x for x in kernels }
462- return kernels
466+ # Only update our models if we already know about the kernels
467+ self ._kernels = {x ['id' ]: x for x in kernels if x ['id' ] in self ._kernels }
468+ return list (self ._kernels .values ())
463469
464470 async def shutdown_kernel (self , kernel_id , now = False , restart = False ):
465471 """Shutdown a kernel by its kernel uuid.
@@ -474,9 +480,9 @@ async def shutdown_kernel(self, kernel_id, now=False, restart=False):
474480 The purpose of this shutdown is to restart the kernel (True)
475481 """
476482 kernel_url = self ._get_kernel_endpoint_url (kernel_id )
477- self .log .debug ("Request shutdown kernel at: %s" , kernel_url )
483+ self .log .debug ("Request shutdown kernel at: %s" % kernel_url )
478484 response = await gateway_request (kernel_url , method = 'DELETE' )
479- self .log .debug ("Shutdown kernel response: %d %s" , response .code , response .reason )
485+ self .log .debug ("Shutdown kernel response: %d %s" % ( response .code , response .reason ) )
480486 self .remove_kernel (kernel_id )
481487
482488 async def restart_kernel (self , kernel_id , now = False , ** kwargs ):
@@ -488,9 +494,9 @@ async def restart_kernel(self, kernel_id, now=False, **kwargs):
488494 The id of the kernel to restart.
489495 """
490496 kernel_url = self ._get_kernel_endpoint_url (kernel_id ) + '/restart'
491- self .log .debug ("Request restart kernel at: %s" , kernel_url )
497+ self .log .debug ("Request restart kernel at: %s" % kernel_url )
492498 response = await gateway_request (kernel_url , method = 'POST' , body = json_encode ({}))
493- self .log .debug ("Restart kernel response: %d %s" , response .code , response .reason )
499+ self .log .debug ("Restart kernel response: %d %s" % ( response .code , response .reason ) )
494500
495501 async def interrupt_kernel (self , kernel_id , ** kwargs ):
496502 """Interrupt a kernel by its kernel uuid.
@@ -501,9 +507,9 @@ async def interrupt_kernel(self, kernel_id, **kwargs):
501507 The id of the kernel to interrupt.
502508 """
503509 kernel_url = self ._get_kernel_endpoint_url (kernel_id ) + '/interrupt'
504- self .log .debug ("Request interrupt kernel at: %s" , kernel_url )
510+ self .log .debug ("Request interrupt kernel at: %s" % kernel_url )
505511 response = await gateway_request (kernel_url , method = 'POST' , body = json_encode ({}))
506- self .log .debug ("Interrupt kernel response: %d %s" , response .code , response .reason )
512+ self .log .debug ("Interrupt kernel response: %d %s" % ( response .code , response .reason ) )
507513
508514 def shutdown_all (self , now = False ):
509515 """Shutdown all kernels."""
@@ -512,15 +518,15 @@ def shutdown_all(self, now=False):
512518 kwargs = {'method' : 'DELETE' }
513519 kwargs = GatewayClient .instance ().load_connection_args (** kwargs )
514520 client = HTTPClient ()
515- for kernel_id in self ._kernels . keys () :
521+ for kernel_id in self ._kernels :
516522 kernel_url = self ._get_kernel_endpoint_url (kernel_id )
517- self .log .debug ("Request delete kernel at: %s" , kernel_url )
523+ self .log .debug ("Request delete kernel at: %s" % kernel_url )
518524 try :
519525 response = client .fetch (kernel_url , ** kwargs )
520526 except HTTPError :
521527 pass
522528 else :
523- self .log .debug ("Delete kernel response: %d %s" , response .code , response .reason )
529+ self .log .debug ("Delete kernel response: %d %s" % ( response .code , response .reason ) )
524530 shutdown_kernels .append (kernel_id ) # avoid changing dict size during iteration
525531 client .close ()
526532 for kernel_id in shutdown_kernels :
@@ -579,7 +585,7 @@ async def get_all_specs(self):
579585 async def list_kernel_specs (self ):
580586 """Get a list of kernel specs."""
581587 kernel_spec_url = self ._get_kernelspecs_endpoint_url ()
582- self .log .debug ("Request list kernel specs at: %s" , kernel_spec_url )
588+ self .log .debug ("Request list kernel specs at: %s" % kernel_spec_url )
583589 response = await gateway_request (kernel_spec_url , method = 'GET' )
584590 kernel_specs = json_decode (response .body )
585591 return kernel_specs
0 commit comments