Skip to content

Commit

Permalink
start writing metadata patch endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
ryuwd committed Feb 5, 2025
1 parent 7f76615 commit 367f138
Showing 1 changed file with 36 additions and 1 deletion.
37 changes: 36 additions & 1 deletion diracx-routers/src/diracx/routers/jobs/status.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@
import logging
from datetime import datetime
from http import HTTPStatus
from typing import Annotated
from typing import Annotated, Any

from diracx.db.sql.job.db import _get_columns
from diracx.db.sql.job.schema import Jobs
from fastapi import BackgroundTasks, HTTPException, Query

from diracx.core.models import (
Expand All @@ -23,6 +25,7 @@
JobLoggingDB,
SandboxMetadataDB,
TaskQueueDB,
JobParametersDB,
)
from ..fastapi_classes import DiracxRouter
from .access_policies import ActionType, CheckWMSPolicyCallable
Expand Down Expand Up @@ -135,3 +138,35 @@ async def reschedule_bulk_jobs(
# self.__sendJobsToOptimizationMind(validJobList)

return resched_jobs


@router.patch("/metadata")
def set_job_parameters_or_attributes(
updates: dict[str, dict[str, Any]],
job_db: JobDB,
job_parameters_db: JobParametersDB,
):
possible_attribute_columns = [name.lower() for name in _get_columns(Jobs.__table__, None)]

attr_updates = {}
param_updates = {}

for job_id, metadata in updates.items():
# check if this is setting an attribute in the JobDB
attr_updates[job_id] = {
pname: pvalue for pname, pvalue in metadata.items() if pname.lower() in possible_attribute_columns
}

# else set elastic parameters DB
param_updates[job_id] = [
(pname, pvalue) for pname, pvalue in metadata.items() if pname.lower() not in possible_attribute_columns
]

job_db.set_job_attributes_bulk(attr_updates)

# TODO: can we upsert multiple documents?
for job_id, updates in param_updates.items():
job_parameters_db.upsert(
int(job_id),
updates,
)

0 comments on commit 367f138

Please sign in to comment.