Skip to content

Commit

Permalink
Merge pull request #390 from aldbr/main_FIX_error500-malformed-jdl
Browse files Browse the repository at this point in the history
fix(routers): status 500 when malformed jdls are given
  • Loading branch information
chrisburr authored Feb 20, 2025
2 parents 0bbb215 + bf63fc2 commit 7a711da
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 15 deletions.
36 changes: 21 additions & 15 deletions diracx-routers/src/diracx/routers/jobs/submission.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from http import HTTPStatus
from typing import Annotated

from fastapi import Body, Depends, HTTPException
from fastapi import Body, Depends, HTTPException, status
from pydantic import BaseModel
from typing_extensions import TypedDict

Expand Down Expand Up @@ -148,20 +148,26 @@ async def submit_bulk_jdl_jobs(
initial_status = JobStatus.RECEIVED
initial_minor_status = "Job accepted"

submitted_job_ids = await submit_jobs_jdl(
[
JobSubmissionSpec(
jdl=jdl,
owner=user_info.preferred_username,
owner_group=user_info.dirac_group,
initial_status=initial_status,
initial_minor_status=initial_minor_status,
vo=user_info.vo,
)
for jdl in job_desc_list
],
job_db=job_db,
)
try:
submitted_job_ids = await submit_jobs_jdl(
[
JobSubmissionSpec(
jdl=jdl,
owner=user_info.preferred_username,
owner_group=user_info.dirac_group,
initial_status=initial_status,
initial_minor_status=initial_minor_status,
vo=user_info.vo,
)
for jdl in job_desc_list
],
job_db=job_db,
)
except ExceptionGroup as e:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail="JDL syntax error",
) from e

logging.debug(
f'Jobs added to the JobDB", "{submitted_job_ids} for {user_info.preferred_username}/{user_info.dirac_group}'
Expand Down
12 changes: 12 additions & 0 deletions diracx-routers/tests/test_job_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,12 @@
ParameterStart = 1;
"""

TEST_MALFORMED_JDL = """
[
'Executable = "echo";'
]
"""

pytestmark = pytest.mark.enabled_dependencies(
[
"AuthSettings",
Expand Down Expand Up @@ -243,6 +249,12 @@ def test_insert_and_search(normal_user_client):
assert r.json() == []


def test_insert_malformed_jdl(normal_user_client):
job_definitions = [TEST_MALFORMED_JDL]
r = normal_user_client.post("/api/jobs/jdl", json=job_definitions)
assert r.status_code == 400, r.json()


def test_search_distinct(normal_user_client):
"""Test that the distinct parameter works as expected."""
job_definitions = [TEST_JDL, TEST_JDL, TEST_JDL]
Expand Down

0 comments on commit 7a711da

Please sign in to comment.