File tree Expand file tree Collapse file tree 5 files changed +54
-4
lines changed Expand file tree Collapse file tree 5 files changed +54
-4
lines changed Original file line number Diff line number Diff line change 6
6
7
7
logging .basicConfig (level = logging .INFO )
8
8
9
+ @kernel_blueprint .route ('/kernel/<path:kernel_id>' , methods = ['GET' ])
10
+ def get_kernel_by_id (kernel_id ):
11
+ logging .info (f"Getting kernel with id: { kernel_id } " )
12
+ return Kernel .get_kernel_by_id (kernel_id )
13
+
9
14
@kernel_blueprint .route ('/kernel/restart/<path:kernel_id>' , methods = ['POST' ])
10
15
def restart_kernel (kernel_id ):
11
16
logging .info (f"Restarting kernel with id: { kernel_id } " )
Original file line number Diff line number Diff line change 10
10
11
11
class Kernel :
12
12
13
+ @staticmethod
14
+ def get_kernel_by_id (kernel_id ):
15
+ try :
16
+ response = requests .get (app .config ['JUPYTER_KERNEL_API_PATH' ] + f"/{ kernel_id } " )
17
+ except Exception as e :
18
+ logger .error (f"Met exception getting all kernels: { e } " )
19
+ return Response (
20
+ response = json .dumps ({'message' : 'Error getting all kernels from Jupyter Server: ' + str (e )}),
21
+ status = 404 )
22
+
23
+ if response .status_code != 200 :
24
+ logger .error (f"Error getting kernel: { response .content } " )
25
+ return Response (
26
+ response = json .dumps ({'message' : 'Error getting kernel' }),
27
+ status = 404 )
28
+
29
+ return Response (
30
+ response = response ,
31
+ status = 200 ,
32
+ mimetype = 'application/json'
33
+ )
34
+
13
35
@staticmethod
14
36
def restart_kernel (kernel_id ):
15
37
path = app .config ['JUPYTER_KERNEL_API_PATH' ] + f"/{ kernel_id } /restart"
Original file line number Diff line number Diff line change @@ -12,6 +12,29 @@ def setUp(self):
12
12
self .app = create_app ()
13
13
self .client = self .app .test_client ()
14
14
15
+ def test_get_kernel_by_id (self ):
16
+ with self .app .app_context ():
17
+ # Get non-exist kernel
18
+ response_0 = Kernel .get_kernel_by_id ('kernel_id' )
19
+ self .assertEqual (response_0 .status_code , 404 )
20
+
21
+ # Create Notebook
22
+ response_1 = Notebook .create_notebook_with_init_cells (notebook_name = 'Notebook_1.ipynb' , notebook_path = '' )
23
+ self .assertEqual (response_1 .status_code , 200 )
24
+
25
+ notebook_1 = json .loads (response_1 .data .decode ('utf-8' ))
26
+ notebook_path_1 = notebook_1 ['path' ]
27
+
28
+ # Create Session
29
+ response_2 = Session .create_session (notebook_path_1 )
30
+ self .assertEqual (response_2 .status_code , 200 )
31
+ session = json .loads (response_2 .data .decode ('utf-8' ))
32
+ kernelId = session ['kernel' ]['id' ]
33
+
34
+ # Get kernel
35
+ response_3 = Kernel .get_kernel_by_id (kernelId )
36
+ self .assertEqual (response_3 .status_code , 200 )
37
+
15
38
def test_restart_kernel (self ):
16
39
with self .app .app_context ():
17
40
# Restart non-exist kernel
Original file line number Diff line number Diff line change @@ -3,7 +3,7 @@ import { useState } from 'react';
3
3
import { JupyterKernelIcon } from '@datalayer/icons-react' ;
4
4
import { VscTriangleDown } from "react-icons/vsc" ;
5
5
import LoadingButton from '@mui/lab/LoadingButton' ;
6
- import KernelModel from '../../../models/KernelModel' ;
6
+ import KernelModel from '../../../models/KernelModel'
7
7
import config from '../../../config' ;
8
8
9
9
const NotebookKernel = ( {
@@ -21,7 +21,7 @@ const NotebookKernel = ({
21
21
setIsRestarting ( true ) ;
22
22
setMenuOpen ( false ) ;
23
23
setSparkAppId ( null ) ;
24
- await KernelModel . restartKernel ( config . jupyterBaseUrl , kernelId ) ;
24
+ await KernelModel . restartKernel ( kernelId ) ;
25
25
setIsRestarting ( false ) ;
26
26
} catch ( error ) {
27
27
console . error ( 'Failed to restart kernel:' , error ) ;
Original file line number Diff line number Diff line change @@ -2,7 +2,7 @@ class KernelModel {
2
2
constructor ( ) {
3
3
}
4
4
5
- static async restartKernel ( basePath = '' , kernelId = '' ) {
5
+ static async restartKernel ( kernelId = '' ) {
6
6
try {
7
7
// Wait for the kernel to restart
8
8
await fetch ( `http://localhost:5002/kernel/restart/${ kernelId } ` , {
@@ -14,7 +14,7 @@ class KernelModel {
14
14
15
15
let status ;
16
16
do {
17
- const response = await fetch ( `${ basePath } /api/kernels /${ kernelId } ` ) ;
17
+ const response = await fetch ( `http://localhost:5002/kernel /${ kernelId } ` ) ;
18
18
const data = await response . json ( ) ;
19
19
status = data . execution_state ;
20
20
if ( status === 'busy' ) {
You can’t perform that action at this time.
0 commit comments