@@ -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