Skip to content

Commit 6a09516

Browse files
committed
refuse to start solver job whose assets are missing
1 parent 23da7db commit 6a09516

File tree

1 file changed

+18
-1
lines changed
  • services/api-server/src/simcore_service_api_server/api/routes

1 file changed

+18
-1
lines changed

services/api-server/src/simcore_service_api_server/api/routes/solvers_jobs.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ async def delete_job_assets(
168168
job_id: JobID,
169169
job_service: Annotated[JobService, Depends(get_job_service)],
170170
):
171-
job_parent_resource_name = compose_job_resource_name(solver_key, version, job_id)
171+
job_parent_resource_name = Solver.compose_resource_name(solver_key, version)
172172

173173
# check that job exists and is accessible to user
174174
project_job_rpc_get = await job_service.get_job(
@@ -195,6 +195,10 @@ async def delete_job_assets(
195195
"description": "Cluster not found",
196196
"model": ErrorGet,
197197
},
198+
status.HTTP_409_CONFLICT: {
199+
"description": "Job assets missing",
200+
"model": ErrorGet,
201+
},
198202
status.HTTP_422_UNPROCESSABLE_ENTITY: {
199203
"description": "Configuration error",
200204
"model": ErrorGet,
@@ -223,13 +227,26 @@ async def start_job(
223227
user_id: Annotated[PositiveInt, Depends(get_current_user_id)],
224228
director2_api: Annotated[DirectorV2Api, Depends(get_api_client(DirectorV2Api))],
225229
webserver_api: Annotated[AuthSession, Depends(get_webserver_session)],
230+
job_service: Annotated[JobService, Depends(get_job_service)],
226231
cluster_id: Annotated[ # pylint: disable=unused-argument # noqa: ARG001
227232
ClusterID | None, Query(deprecated=True)
228233
] = None,
229234
):
230235
job_name = compose_job_resource_name(solver_key, version, job_id)
231236
_logger.debug("Start Job '%s'", job_name)
232237

238+
job_parent_resource_name = Solver.compose_resource_name(solver_key, version)
239+
job = await job_service.get_job(
240+
job_id=job_id, job_parent_resource_name=job_parent_resource_name
241+
)
242+
if job.storage_data_deleted:
243+
return JSONResponse(
244+
status_code=status.HTTP_409_CONFLICT,
245+
content=jsonable_encoder(
246+
ErrorGet(errors=[f"Assets for job {job_id=} are missing"])
247+
),
248+
)
249+
233250
try:
234251
await start_project(
235252
request=request,

0 commit comments

Comments
 (0)