1212from pydantic import HttpUrl , PositiveInt
1313from servicelib .logging_utils import log_context
1414
15- from ..._service_jobs import JobService
15+ from ..._service_jobs import JobService , compose_study_job_resource_name
1616from ...exceptions .backend_errors import ProjectAlreadyStartedError
1717from ...models .api_resources import parse_resources_ids
1818from ...models .pagination import Page , PaginationParams
2727 JobPricingSpecification ,
2828 JobStatus ,
2929)
30- from ...models .schemas .studies import JobLogsMap , Study , StudyID
30+ from ...models .schemas .studies import JobLogsMap , StudyID
3131from ...services_http .director_v2 import DirectorV2Api
3232from ...services_http .jobs import (
3333 get_custom_metadata ,
3434 replace_custom_metadata ,
35- start_project ,
3635 stop_project ,
3736)
3837from ...services_http .storage import StorageApi
5756router = APIRouter ()
5857
5958
60- def _compose_job_resource_name (study_key , job_id ) -> str :
61- """Creates a unique resource name for solver's jobs"""
62- return Job .compose_resource_name (
63- parent_name = Study .compose_resource_name (study_key ),
64- job_id = job_id ,
65- )
66-
67-
6859@router .get (
6960 "/{study_id:uuid}/jobs" ,
7061 response_model = Page [Job ],
@@ -129,7 +120,7 @@ async def create_study_job(
129120 x_simcore_parent_node_id = x_simcore_parent_node_id ,
130121 hidden = hidden ,
131122 )
132- assert job .name == _compose_job_resource_name (study_id , job .id )
123+ assert job .name == compose_study_job_resource_name (study_id , job .id )
133124 job .url = url_for (
134125 "get_study_job" ,
135126 study_id = study_id ,
@@ -175,7 +166,7 @@ async def delete_study_job(
175166 webserver_api : Annotated [AuthSession , Depends (get_webserver_session )],
176167):
177168 """Deletes an existing study job"""
178- job_name = _compose_job_resource_name (study_id , job_id )
169+ job_name = compose_study_job_resource_name (study_id , job_id )
179170 with log_context (_logger , logging .DEBUG , f"Deleting Job '{ job_name } '" ):
180171 await webserver_api .delete_project (project_id = job_id )
181172
@@ -212,7 +203,6 @@ async def start_study_job(
212203 request : Request ,
213204 study_id : StudyID ,
214205 job_id : JobID ,
215- webserver_api : Annotated [AuthSession , Depends (get_webserver_session )],
216206 job_service : Annotated [JobService , Depends (get_job_service )],
217207 cluster_id : Annotated [ # pylint: disable=unused-argument # noqa: ARG001
218208 ClusterID | None ,
@@ -230,29 +220,21 @@ async def start_study_job(
230220):
231221 pricing_spec = JobPricingSpecification .create_from_headers (headers = request .headers )
232222
233- job_name = _compose_job_resource_name (study_id , job_id )
223+ job_name = compose_study_job_resource_name (study_id , job_id )
234224 with log_context (_logger , logging .DEBUG , f"Starting Job '{ job_name } '" ):
235225 try :
236- await start_project (
226+ return await job_service .start_study_job (
227+ study_id = study_id ,
237228 job_id = job_id ,
238- expected_job_name = job_name ,
239- webserver_api = webserver_api ,
240229 pricing_spec = pricing_spec ,
241230 )
242231 except ProjectAlreadyStartedError :
243- job_status : JobStatus = await inspect_study_job (
244- study_id = study_id ,
232+ job_status : JobStatus = await job_service .inspect_study_job (
245233 job_id = job_id ,
246- job_service = job_service ,
247234 )
248235 return JSONResponse (
249236 content = jsonable_encoder (job_status ), status_code = status .HTTP_200_OK
250237 )
251- return await inspect_study_job (
252- study_id = study_id ,
253- job_id = job_id ,
254- job_service = job_service ,
255- )
256238
257239
258240@router .post (
@@ -265,7 +247,7 @@ async def stop_study_job(
265247 user_id : Annotated [PositiveInt , Depends (get_current_user_id )],
266248 director2_api : Annotated [DirectorV2Api , Depends (get_api_client (DirectorV2Api ))],
267249):
268- job_name = _compose_job_resource_name (study_id , job_id )
250+ job_name = compose_study_job_resource_name (study_id , job_id )
269251 with log_context (_logger , logging .DEBUG , f"Stopping Job '{ job_name } '" ):
270252 return await stop_project (
271253 job_id = job_id , user_id = user_id , director2_api = director2_api
@@ -281,7 +263,7 @@ async def inspect_study_job(
281263 job_id : JobID ,
282264 job_service : Annotated [JobService , Depends (get_job_service )],
283265) -> JobStatus :
284- job_name = _compose_job_resource_name (study_id , job_id )
266+ job_name = compose_study_job_resource_name (study_id , job_id )
285267 _logger .debug ("Inspecting Job '%s'" , job_name )
286268
287269 return await job_service .inspect_study_job (job_id = job_id )
@@ -298,7 +280,7 @@ async def get_study_job_outputs(
298280 webserver_api : Annotated [AuthSession , Depends (get_webserver_session )],
299281 storage_client : Annotated [StorageApi , Depends (get_api_client (StorageApi ))],
300282):
301- job_name = _compose_job_resource_name (study_id , job_id )
283+ job_name = compose_study_job_resource_name (study_id , job_id )
302284 _logger .debug ("Getting Job Outputs for '%s'" , job_name )
303285
304286 project_outputs = await webserver_api .get_project_outputs (project_id = job_id )
@@ -345,7 +327,7 @@ async def get_study_job_custom_metadata(
345327 webserver_api : Annotated [AuthSession , Depends (get_webserver_session )],
346328 url_for : Annotated [Callable , Depends (get_reverse_url_mapper )],
347329):
348- job_name = _compose_job_resource_name (study_id , job_id )
330+ job_name = compose_study_job_resource_name (study_id , job_id )
349331 msg = f"Gets metadata attached to study_id={ study_id !r} job_id={ job_id !r} .\n job_name={ job_name !r} .\n SEE https://github.com/ITISFoundation/osparc-simcore/issues/4313"
350332 _logger .debug (msg )
351333
@@ -376,7 +358,7 @@ async def replace_study_job_custom_metadata(
376358 webserver_api : Annotated [AuthSession , Depends (get_webserver_session )],
377359 url_for : Annotated [Callable , Depends (get_reverse_url_mapper )],
378360):
379- job_name = _compose_job_resource_name (study_id , job_id )
361+ job_name = compose_study_job_resource_name (study_id , job_id )
380362
381363 msg = f"Attaches metadata={ replace .metadata !r} to study_id={ study_id !r} job_id={ job_id !r} .\n job_name={ job_name !r} .\n SEE https://github.com/ITISFoundation/osparc-simcore/issues/4313"
382364 _logger .debug (msg )
0 commit comments