2222 UpdateJobDefinition ,
2323)
2424from jupyter_scheduler .pydantic_v1 import BaseModel , ValidationError
25+ from urllib .parse import urlunparse
26+ from jupyter_server .utils import url_path_join
2527
2628
2729class WorkflowsHandler (ExtensionHandlerMixin , JobHandlersMixin , APIHandler ):
@@ -32,6 +34,13 @@ async def post(self):
3234 workflow_id = await ensure_async (
3335 self .scheduler .create_workflow (CreateWorkflow (** payload ))
3436 )
37+
38+ protocol = self .request .protocol
39+ host = self .request .host
40+ base_url = self .base_url
41+ resource_path = url_path_join (base_url , "scheduler" , "workflows" , workflow_id )
42+ full_url = urlunparse ((protocol , host , resource_path , "" , "" , "" ))
43+
3544 except ValidationError as e :
3645 self .log .exception (e )
3746 raise HTTPError (500 , str (e )) from e
@@ -48,7 +57,7 @@ async def post(self):
4857 self .log .exception (e )
4958 raise HTTPError (500 , "Unexpected error occurred during creation of a workflow." ) from e
5059 else :
51- self .finish (json .dumps (dict (workflow_id = workflow_id )))
60+ self .finish (json .dumps (dict (workflow_id = workflow_id , url = full_url )))
5261
5362 @authenticated
5463 async def get (self , workflow_id : str = None ):
@@ -192,6 +201,13 @@ async def post(self):
192201 workflow_definition_id = await ensure_async (
193202 self .scheduler .create_workflow_definition (CreateWorkflowDefinition (** payload ))
194203 )
204+ protocol = self .request .protocol
205+ host = self .request .host
206+ base_url = self .base_url
207+ resource_path = url_path_join (
208+ base_url , "scheduler" , "workflow_definitions" , workflow_definition_id
209+ )
210+ full_url = urlunparse ((protocol , host , resource_path , "" , "" , "" ))
195211 except ValidationError as e :
196212 self .log .exception (e )
197213 raise HTTPError (500 , str (e )) from e
@@ -210,7 +226,9 @@ async def post(self):
210226 500 , "Unexpected error occurred during creation of a workflow definition."
211227 ) from e
212228 else :
213- self .finish (json .dumps (dict (workflow_definition_id = workflow_definition_id )))
229+ self .finish (
230+ json .dumps (dict (workflow_definition_id = workflow_definition_id , url = full_url ))
231+ )
214232
215233 @authenticated
216234 async def get (self , workflow_definition_id : str = None ):
0 commit comments