From 9a4a24bb6252b1dad7d23056e56498e7ea02482e Mon Sep 17 00:00:00 2001 From: Sam Welborn Date: Mon, 6 Jul 2026 17:53:27 -0400 Subject: [PATCH 1/4] raise instead of returning response we raise instead of returning the response to let the exception handlers create Problem reponses (formatted JSONResponse) --- app/s3df/compute_adapter.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/app/s3df/compute_adapter.py b/app/s3df/compute_adapter.py index 5529ec54..8d7e141e 100644 --- a/app/s3df/compute_adapter.py +++ b/app/s3df/compute_adapter.py @@ -38,7 +38,7 @@ from slurmrestd_client.models.slurm_v0041_post_job_submit_request_jobs_inner_memory_per_cpu import ( SlurmV0041PostJobSubmitRequestJobsInnerMemoryPerCpu, ) -from fastapi import HTTPException, Response +from fastapi import HTTPException from pydantic import ConfigDict, ValidationError from ..routers.compute import models as compute_models @@ -524,15 +524,14 @@ async def get_jobs( """POST /compute/status/{resource_id}""" api, headers = self._get_slurm_context(user) + if historical: + raise HTTPException(status_code=501, detail="Historical job listing is not implemented yet") + try: - if historical: - # resp = api.slurm_v0041_get_jobs_history(_headers=headers) - # return a 501 not implemented as we don't want to hit the slurmdb - return Response(status_code=501, content="Historical job listing is not implemented yet") - else: - resp = api.slurm_v0041_get_jobs(_headers=headers) + resp = api.slurm_v0041_get_jobs(_headers=headers) except ApiException as exc: - raise RuntimeError(f"Slurm get_jobs failed: {exc}") from exc + logger.exception("Slurm get_jobs failed") + raise HTTPException(status_code=500, detail="Slurm get_jobs failed") from exc jobs = resp.jobs or [] From 4ef776aa80716302b02c74201e200c46fd13e1b0 Mon Sep 17 00:00:00 2001 From: Sam Welborn Date: Mon, 6 Jul 2026 17:54:40 -0400 Subject: [PATCH 2/4] if exc.status != 414 --> should be 404 this is for a 404 not found rather than a 414 uri too long essentially we are trying to escape to the historical = True branch, or raise 404 if indeed it is 404 --- app/s3df/compute_adapter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/s3df/compute_adapter.py b/app/s3df/compute_adapter.py index 8d7e141e..00180902 100644 --- a/app/s3df/compute_adapter.py +++ b/app/s3df/compute_adapter.py @@ -495,7 +495,7 @@ async def get_job( if resp and resp.jobs: return _job_from_slurm_info(resp.jobs[0], include_spec) except ApiException as exc: - if exc.status != 414: + if exc.status != 404: raise RuntimeError(f"Slurm get_job failed: {exc}") from exc if historical: From 32a55af712f2fe0d84971966fdccc6aa70244b1f Mon Sep 17 00:00:00 2001 From: Sam Welborn Date: Mon, 6 Jul 2026 17:55:03 -0400 Subject: [PATCH 3/4] remove fake historical implementation and raise 501 --- app/s3df/compute_adapter.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/app/s3df/compute_adapter.py b/app/s3df/compute_adapter.py index 00180902..a31c47cf 100644 --- a/app/s3df/compute_adapter.py +++ b/app/s3df/compute_adapter.py @@ -499,13 +499,7 @@ async def get_job( raise RuntimeError(f"Slurm get_job failed: {exc}") from exc if historical: - # Fall back to job history endpoint - try: - resp = api.slurm_v0041_get_job_history(job_id, _headers=headers) - if resp and resp.jobs: - return _job_from_slurm_info(resp.jobs[0], include_spec) - except ApiException as exc: - raise RuntimeError(f"Slurm job history failed: {exc}") from exc + raise HTTPException(status_code=501, detail="Historical job lookup is not implemented yet") raise RuntimeError(f"Job {job_id} not found") From d66ab05f2044a87f6afa3bdf48a85c485d285e77 Mon Sep 17 00:00:00 2001 From: Sam Welborn Date: Mon, 6 Jul 2026 17:55:16 -0400 Subject: [PATCH 4/4] raise httpexceptions instead of RuntimeError --- app/s3df/compute_adapter.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/s3df/compute_adapter.py b/app/s3df/compute_adapter.py index a31c47cf..d40d30da 100644 --- a/app/s3df/compute_adapter.py +++ b/app/s3df/compute_adapter.py @@ -496,12 +496,13 @@ async def get_job( return _job_from_slurm_info(resp.jobs[0], include_spec) except ApiException as exc: if exc.status != 404: - raise RuntimeError(f"Slurm get_job failed: {exc}") from exc + logger.exception("Slurm get_job failed for job %s", job_id) + raise HTTPException(status_code=500, detail="Slurm get_job failed") from exc if historical: raise HTTPException(status_code=501, detail="Historical job lookup is not implemented yet") - raise RuntimeError(f"Job {job_id} not found") + raise HTTPException(status_code=404, detail=f"Job {job_id} not found") # -- get_jobs -----------------------------------------------------------