@@ -374,14 +374,14 @@ async def start_kernel(self, kernel_id=None, path=None, **kwargs):
374
374
The API path (unicode, '/' delimited) for the cwd.
375
375
Will be transformed to an OS path relative to root_dir.
376
376
"""
377
- self .log .info (' Request start kernel: kernel_id=%s , path="%s"' , kernel_id , path )
377
+ self .log .info (f" Request start kernel: kernel_id={ kernel_id } , path=' { path } '" )
378
378
379
379
if kernel_id is None :
380
380
if path is not None :
381
381
kwargs ['cwd' ] = self .cwd_for_path (path )
382
382
kernel_name = kwargs .get ('kernel_name' , 'python3' )
383
383
kernel_url = self ._get_kernel_endpoint_url ()
384
- self .log .debug ("Request new kernel at: %s" % kernel_url )
384
+ self .log .debug (f "Request new kernel at: { kernel_url } " )
385
385
386
386
# Let KERNEL_USERNAME take precedent over http_user config option.
387
387
if os .environ .get ('KERNEL_USERNAME' ) is None and GatewayClient .instance ().http_user :
@@ -399,12 +399,12 @@ async def start_kernel(self, kernel_id=None, path=None, **kwargs):
399
399
response = await gateway_request (kernel_url , method = 'POST' , body = json_body )
400
400
kernel = json_decode (response .body )
401
401
kernel_id = kernel ['id' ]
402
- self .log .info ("Kernel started: %s" % kernel_id )
403
- self .log .debug ("Kernel args: %r" % kwargs )
402
+ self .log .info (f "Kernel started: { kernel_id } " )
403
+ self .log .debug (f "Kernel args: { kwargs } " )
404
404
else :
405
405
kernel = await self .get_kernel (kernel_id )
406
406
kernel_id = kernel ['id' ]
407
- self .log .info ("Using existing kernel: %s" % kernel_id )
407
+ self .log .info (f "Using existing kernel: { kernel_id } " )
408
408
409
409
self ._kernels [kernel_id ] = kernel
410
410
return kernel_id
@@ -418,20 +418,25 @@ async def get_kernel(self, kernel_id=None, **kwargs):
418
418
The uuid of the kernel.
419
419
"""
420
420
kernel_url = self ._get_kernel_endpoint_url (kernel_id )
421
- self .log .debug ("Request kernel at: %s" % kernel_url )
421
+ self .log .debug (f "Request kernel at: { kernel_url } " )
422
422
try :
423
423
response = await gateway_request (kernel_url , method = 'GET' )
424
424
except web .HTTPError as error :
425
425
if error .status_code == 404 :
426
- self .log .warn ("Kernel not found at: %s" % kernel_url )
426
+ self .log .warn (f "Kernel not found at: { kernel_url } " )
427
427
self .remove_kernel (kernel_id )
428
428
kernel = None
429
429
else :
430
430
raise
431
431
else :
432
432
kernel = json_decode (response .body )
433
- self ._kernels [kernel_id ] = kernel
434
- self .log .debug ("Kernel retrieved: %s" % kernel )
433
+ # Only update our models if we already know about this kernel
434
+ if kernel_id in self ._kernels :
435
+ self ._kernels [kernel_id ] = kernel
436
+ self .log .debug (f"Kernel retrieved: { kernel } " )
437
+ else :
438
+ self .log .warning (f"Kernel '{ kernel_id } ' is not managed by this instance." )
439
+ kernel = None
435
440
return kernel
436
441
437
442
async def kernel_model (self , kernel_id ):
@@ -443,18 +448,18 @@ async def kernel_model(self, kernel_id):
443
448
kernel_id : uuid
444
449
The uuid of the kernel.
445
450
"""
446
- self .log .debug ("RemoteKernelManager.kernel_model: %s" , kernel_id )
447
451
model = await self .get_kernel (kernel_id )
448
452
return model
449
453
450
454
async def list_kernels (self , ** kwargs ):
451
455
"""Get a list of kernels."""
452
456
kernel_url = self ._get_kernel_endpoint_url ()
453
- self .log .debug ("Request list kernels: %s" , kernel_url )
457
+ self .log .debug (f "Request list kernels: { kernel_url } " )
454
458
response = await gateway_request (kernel_url , method = 'GET' )
455
459
kernels = json_decode (response .body )
456
- self ._kernels = {x ['id' ]: x for x in kernels }
457
- return kernels
460
+ # Only update our models if we already know about the kernels
461
+ self ._kernels = {x ['id' ]: x for x in kernels if x ['id' ] in self ._kernels }
462
+ return list (self ._kernels .values ())
458
463
459
464
async def shutdown_kernel (self , kernel_id , now = False , restart = False ):
460
465
"""Shutdown a kernel by its kernel uuid.
@@ -469,9 +474,9 @@ async def shutdown_kernel(self, kernel_id, now=False, restart=False):
469
474
The purpose of this shutdown is to restart the kernel (True)
470
475
"""
471
476
kernel_url = self ._get_kernel_endpoint_url (kernel_id )
472
- self .log .debug ("Request shutdown kernel at: %s" , kernel_url )
477
+ self .log .debug (f "Request shutdown kernel at: { kernel_url } " )
473
478
response = await gateway_request (kernel_url , method = 'DELETE' )
474
- self .log .debug ("Shutdown kernel response: %d %s" , response .code , response .reason )
479
+ self .log .debug (f "Shutdown kernel response: { response .code } { response .reason } " )
475
480
self .remove_kernel (kernel_id )
476
481
477
482
async def restart_kernel (self , kernel_id , now = False , ** kwargs ):
@@ -483,9 +488,9 @@ async def restart_kernel(self, kernel_id, now=False, **kwargs):
483
488
The id of the kernel to restart.
484
489
"""
485
490
kernel_url = self ._get_kernel_endpoint_url (kernel_id ) + '/restart'
486
- self .log .debug ("Request restart kernel at: %s" , kernel_url )
491
+ self .log .debug (f "Request restart kernel at: { kernel_url } " )
487
492
response = await gateway_request (kernel_url , method = 'POST' , body = json_encode ({}))
488
- self .log .debug ("Restart kernel response: %d %s" , response .code , response .reason )
493
+ self .log .debug (f "Restart kernel response: { response .code } { response .reason } " )
489
494
490
495
async def interrupt_kernel (self , kernel_id , ** kwargs ):
491
496
"""Interrupt a kernel by its kernel uuid.
@@ -496,9 +501,9 @@ async def interrupt_kernel(self, kernel_id, **kwargs):
496
501
The id of the kernel to interrupt.
497
502
"""
498
503
kernel_url = self ._get_kernel_endpoint_url (kernel_id ) + '/interrupt'
499
- self .log .debug ("Request interrupt kernel at: %s" , kernel_url )
504
+ self .log .debug (f "Request interrupt kernel at: { kernel_url } " )
500
505
response = await gateway_request (kernel_url , method = 'POST' , body = json_encode ({}))
501
- self .log .debug ("Interrupt kernel response: %d %s" , response .code , response .reason )
506
+ self .log .debug (f "Interrupt kernel response: { response .code } { response .reason } " )
502
507
503
508
def shutdown_all (self , now = False ):
504
509
"""Shutdown all kernels."""
@@ -507,15 +512,15 @@ def shutdown_all(self, now=False):
507
512
kwargs = {'method' : 'DELETE' }
508
513
kwargs = GatewayClient .instance ().load_connection_args (** kwargs )
509
514
client = HTTPClient ()
510
- for kernel_id in self ._kernels . keys () :
515
+ for kernel_id in self ._kernels :
511
516
kernel_url = self ._get_kernel_endpoint_url (kernel_id )
512
- self .log .debug ("Request delete kernel at: %s" , kernel_url )
517
+ self .log .debug (f "Request delete kernel at: { kernel_url } " )
513
518
try :
514
519
response = client .fetch (kernel_url , ** kwargs )
515
520
except HTTPError :
516
521
pass
517
522
else :
518
- self .log .debug ("Delete kernel response: %d %s" , response .code , response .reason )
523
+ self .log .debug (f "Delete kernel response: { response .code } { response .reason } " )
519
524
shutdown_kernels .append (kernel_id ) # avoid changing dict size during iteration
520
525
client .close ()
521
526
for kernel_id in shutdown_kernels :
@@ -562,10 +567,8 @@ async def get_all_specs(self):
562
567
km = self .parent .kernel_manager
563
568
remote_default_kernel_name = fetched_kspecs .get ('default' )
564
569
if remote_default_kernel_name != km .default_kernel_name :
565
- self .log .info ("Default kernel name on Gateway server ({gateway_default}) differs from "
566
- "Notebook server ({notebook_default}). Updating to Gateway server's value." .
567
- format (gateway_default = remote_default_kernel_name ,
568
- notebook_default = km .default_kernel_name ))
570
+ self .log .info (f"Default kernel name on Gateway server ({ remote_default_kernel_name } ) differs from "
571
+ f"Notebook server ({ km .default_kernel_name } ). Updating to Gateway server's value." )
569
572
km .default_kernel_name = remote_default_kernel_name
570
573
571
574
remote_kspecs = fetched_kspecs .get ('kernelspecs' )
@@ -574,7 +577,7 @@ async def get_all_specs(self):
574
577
async def list_kernel_specs (self ):
575
578
"""Get a list of kernel specs."""
576
579
kernel_spec_url = self ._get_kernelspecs_endpoint_url ()
577
- self .log .debug ("Request list kernel specs at: %s" , kernel_spec_url )
580
+ self .log .debug (f "Request list kernel specs at: { kernel_spec_url } " )
578
581
response = await gateway_request (kernel_spec_url , method = 'GET' )
579
582
kernel_specs = json_decode (response .body )
580
583
return kernel_specs
@@ -588,7 +591,7 @@ async def get_kernel_spec(self, kernel_name, **kwargs):
588
591
The name of the kernel.
589
592
"""
590
593
kernel_spec_url = self ._get_kernelspecs_endpoint_url (kernel_name = str (kernel_name ))
591
- self .log .debug ("Request kernel spec at: %s" % kernel_spec_url )
594
+ self .log .debug (f "Request kernel spec at: { kernel_spec_url } " )
592
595
try :
593
596
response = await gateway_request (kernel_spec_url , method = 'GET' )
594
597
except web .HTTPError as error :
@@ -617,7 +620,7 @@ async def get_kernel_spec_resource(self, kernel_name, path):
617
620
The name of the desired resource
618
621
"""
619
622
kernel_spec_resource_url = url_path_join (self .base_resource_endpoint , str (kernel_name ), str (path ))
620
- self .log .debug ("Request kernel spec resource '{}' at: {}" . format ( path , kernel_spec_resource_url ) )
623
+ self .log .debug (f "Request kernel spec resource '{ path } ' at: { kernel_spec_resource_url } " )
621
624
try :
622
625
response = await gateway_request (kernel_spec_resource_url , method = 'GET' )
623
626
except web .HTTPError as error :
0 commit comments