Skip to content

Commit 6dea6c3

Browse files
authored
Merge pull request #45 from ecmwf-projects/387-get-jobs-extension
Extend StatusInfo model to allow for metadata field
2 parents fabb398 + adc0fbe commit 6dea6c3

File tree

4 files changed

+12
-9
lines changed

4 files changed

+12
-9
lines changed

ogc_api_processes_fastapi/clients.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ def post_process_execute(
7575
execution_content: models.Execute,
7676
request: fastapi.Request,
7777
response: fastapi.Response,
78-
) -> Dict[str, Any]:
78+
) -> models.StatusInfo:
7979
"""Post request for execution of the process identified by `process_id`.
8080
8181
Called with `POST /processes/{process_id}/execute`.
@@ -158,7 +158,7 @@ def get_job_results(self, job_id: str) -> Dict[str, Any]:
158158
159159
Returns
160160
-------
161-
Dict[str, Any]
161+
dict[str, Any]
162162
Job results.
163163
164164
Raises

ogc_api_processes_fastapi/models.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,9 @@ class JobType(enum.Enum):
245245
class GenericObject(pydantic.BaseModel):
246246
__root__: Dict[str, Any]
247247

248+
def pop(self, key: str) -> Any:
249+
return self.__root__.pop(key)
250+
248251

249252
class StatusInfo(pydantic.BaseModel):
250253
processID: Optional[str] = None
@@ -257,7 +260,7 @@ class StatusInfo(pydantic.BaseModel):
257260
finished: Optional[datetime] = None
258261
updated: Optional[datetime] = None
259262
progress: Optional[ConInt] = None
260-
metadata: Optional[GenericObject] = None
263+
metadata: GenericObject = GenericObject(__root__={})
261264
links: Optional[List[Link]] = None
262265

263266

ogc_api_processes_fastapi/routers.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ def post_process_execute(
205205
request=request,
206206
response=response,
207207
)
208-
status_info["links"] = [
208+
status_info.links = [
209209
models.Link(
210210
href=urllib.parse.urljoin(
211211
str(request.base_url), f"processes/{process_id}/execute"
@@ -215,15 +215,15 @@ def post_process_execute(
215215
),
216216
models.Link(
217217
href=urllib.parse.urljoin(
218-
str(request.base_url), f"jobs/{status_info['jobID']}"
218+
str(request.base_url), f"jobs/{status_info.jobID}"
219219
),
220220
rel="monitor",
221221
type="application/json",
222222
title="job status info",
223223
),
224224
]
225225
response.headers["Location"] = urllib.parse.urljoin(
226-
str(request.base_url), f"jobs/{status_info['jobID']}"
226+
str(request.base_url), f"jobs/{status_info.jobID}"
227227
)
228228

229229
return status_info
@@ -320,6 +320,7 @@ def create_get_job_results_endpoint(
320320
"/{job_id}/results",
321321
response_model=models.Results,
322322
response_model_exclude_unset=True,
323+
response_model_exclude_none=True,
323324
responses={
324325
404: {"description": "Job not found", "model": models.Exception},
325326
},
@@ -328,7 +329,6 @@ def create_get_job_results_endpoint(
328329
def get_job_results(job_id: str) -> Dict[str, Any]:
329330
"""Show results of a job."""
330331
response = client.get_job_results(job_id=job_id)
331-
332332
return response
333333

334334

tests/conftest.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ def post_process_execute(
6363
execution_content: models.Execute,
6464
request: fastapi.Request,
6565
response: fastapi.Response,
66-
) -> Dict[str, Any]:
67-
status_info = dict(
66+
) -> models.StatusInfo:
67+
status_info = models.StatusInfo(
6868
jobID=1, status=models.StatusCode.accepted, type=models.JobType.process
6969
)
7070
return status_info

0 commit comments

Comments
 (0)