Skip to content

Commit 4da69c3

Browse files
authored
Fix timeout when waiting for flow (#299)
2 parents b27be37 + 40dd061 commit 4da69c3

27 files changed

Lines changed: 1191 additions & 665 deletions

backend/api/.openapi-generator/FILES

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ src/openapi_server/apis/service_token_api.py
99
src/openapi_server/apis/service_token_api_base.py
1010
src/openapi_server/impl/__init__.py
1111
src/openapi_server/models/__init__.py
12+
src/openapi_server/models/abort_dataset_upload_body.py
13+
src/openapi_server/models/abort_dataset_upload_resp.py
1214
src/openapi_server/models/abort_upload_body.py
1315
src/openapi_server/models/abort_upload_resp.py
1416
src/openapi_server/models/complete_part.py

backend/api/.vscode/launch.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@
1010
"request": "launch",
1111
"env": {
1212
"PREFECT_API_URL": "https://scopem-openem2.ethz.ch/archiver/prefect/api",
13-
"PREFECT_LOGGING_LEVEL": "DEBUG",
13+
"PREFECT_LOGGING_LEVEL": "INFO",
1414
"MINIO_ENDPOINT": "scopem-openemdata.ethz.ch:9090",
1515
"SECRETS_DIR": "${workspaceFolder}/../../.secrets",
1616
"UVICORN_ROOT_PATH": "",
1717
"UVICORN_RELOAD": "true",
1818
"UVICORN_LOG_LEVEL": "debug",
19-
"UVICORN_PORT": "8888",
19+
"UVICORN_PORT": "8800",
2020
"IDP_CLIENT_SECRET": "ASFD",
2121
"IDP_PASSWORD": "ASFD",
2222
"JOB_ENDPOINT_PASSWORD": "pw",

backend/api/Pipfile

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
[[source]]
2+
url = "https://pypi.org/simple"
3+
verify_ssl = true
4+
name = "pypi"
5+
6+
[packages]
7+
8+
[dev-packages]
9+
10+
[requires]
11+
python_version = "3.13"

backend/api/openapi.yaml

Lines changed: 82 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,37 @@ paths:
294294
summary: Finalize Dataset Upload
295295
tags:
296296
- s3upload
297+
/s3/abortDatasetUpload:
298+
post:
299+
operationId: AbortDatasetUpload
300+
requestBody:
301+
content:
302+
application/json:
303+
schema:
304+
$ref: "#/components/schemas/AbortDatasetUploadBody"
305+
required: true
306+
responses:
307+
"201":
308+
description: Finalize dataset upload requested
309+
content:
310+
application/json:
311+
schema:
312+
$ref: "#/components/schemas/AbortDatasetUploadResp"
313+
"422":
314+
content:
315+
application/json:
316+
schema:
317+
$ref: "#/components/schemas/HTTPValidationError"
318+
description: Validation Error
319+
"500":
320+
content:
321+
application/json:
322+
schema:
323+
$ref: "#/components/schemas/InternalError"
324+
description: Internal Server Error
325+
summary: Abort Dataset Upload
326+
tags:
327+
- s3upload
297328
components:
298329
securitySchemes:
299330
BasicAuth:
@@ -349,6 +380,9 @@ components:
349380
upload_id: upload_id
350381
object_name: object_name
351382
properties:
383+
dataset_id:
384+
title: dataset_id
385+
type: string
352386
upload_id:
353387
title: upload_id
354388
type: string
@@ -358,6 +392,7 @@ components:
358392
required:
359393
- object_name
360394
- upload_id
395+
- dataset_id
361396
title: AbortUploadBody
362397
AbortUploadResp:
363398
example:
@@ -412,6 +447,9 @@ components:
412447
object_name: object_name
413448
checksum_sha256: checksum_sha256
414449
properties:
450+
dataset_id:
451+
title: dataset_id
452+
type: string
415453
object_name:
416454
title: object_name
417455
type: string
@@ -427,6 +465,7 @@ components:
427465
title: checksum_sha256
428466
type: string
429467
required:
468+
- dataset_id
430469
- checksum_sha256
431470
- object_name
432471
- parts
@@ -474,16 +513,41 @@ components:
474513
- uuid
475514
- name
476515
title: CreateJobResp
516+
AbortDatasetUploadBody:
517+
example:
518+
dataset_id: c2c6bc13-2c14-43d7-91a9-46cd556b258d
519+
properties:
520+
dataset_id:
521+
title: dataset_id
522+
type: string
523+
required:
524+
- dataset_id
525+
title: AbortDatasetUploadBody
526+
AbortDatasetUploadResp:
527+
example:
528+
dataset_id: dataset_id
529+
message: "Upload finalized"
530+
properties:
531+
dataset_id:
532+
title: dataset_id
533+
type: string
534+
message:
535+
title: message
536+
type: string
537+
required:
538+
- dataset_id
539+
- message
540+
title: AbortDatasetUploadResp
477541
FinalizeDatasetUploadBody:
478542
example:
479-
dataset_pid: c2c6bc13-2c14-43d7-91a9-46cd556b258d
543+
dataset_id: c2c6bc13-2c14-43d7-91a9-46cd556b258d
480544
create_archiving_job: true
481545
owner_group: Group
482546
owner_user: User
483547
contact_email: user@mail.com
484548
properties:
485-
dataset_pid:
486-
title: dataset_pid
549+
dataset_id:
550+
title: dataset_id
487551
type: string
488552
create_archiving_job:
489553
title: create_archiving_job
@@ -499,7 +563,7 @@ components:
499563
type: string
500564
format: email
501565
required:
502-
- dataset_pid
566+
- dataset_id
503567
- create_archiving_job
504568
- owner_group
505569
- owner_user
@@ -564,6 +628,9 @@ components:
564628
parts: 0
565629
object_name: object_name
566630
properties:
631+
dataset_id:
632+
title: DatasetPID
633+
type: string
567634
object_name:
568635
title: object_name
569636
type: string
@@ -574,6 +641,7 @@ components:
574641
required:
575642
- object_name
576643
- parts
644+
- dataset_id
577645
title: PresignedUrlBody
578646
PresignedUrlResp:
579647
example:
@@ -596,29 +664,29 @@ components:
596664
title: PresignedUrlResp
597665
UploadRequestBody:
598666
example:
599-
DatasetPID:
667+
dataset_id:
600668
- dataset/pid
601-
TotalGigabytes: 1000
669+
total_gigabytes: 1000
602670
properties:
603-
DatasetPID:
671+
dataset_id:
604672
title: DatasetPID
605673
type: string
606-
TotalGigabytes:
674+
total_gigabytes:
607675
title: TotalGigabytes
608676
type: integer
609677
required:
610-
- DatasetPID
611-
- TotalGigabytes
678+
- dataset_id
679+
- total_gigabytes
612680
title: UploadRequestBody
613681
UploadRequestResp:
614682
example:
615-
Ok: true
683+
ok: true
616684
properties:
617-
Ok:
618-
title: Ok
685+
ok:
686+
title: ok
619687
type: boolean
620688
required:
621-
- Ok
689+
- ok
622690
title: UploadRequestResp
623691
ValidationError:
624692
example:

backend/api/pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ dependencies = [
1414
"gunicorn>=23.0.0",
1515
"httpx>=0.28.1",
1616
"importlib-metadata>=8.5.0",
17+
"minio>=7.2.18",
1718
"prefect==3.6.1",
1819
"pyjwt>=2.10.1",
1920
"pytest>=8.3.5",

backend/api/src/openapi_server/apis/s3upload_api.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
)
2424

2525
from openapi_server.models.extra_models import TokenModel # noqa: F401
26+
from openapi_server.models.abort_dataset_upload_body import AbortDatasetUploadBody
27+
from openapi_server.models.abort_dataset_upload_resp import AbortDatasetUploadResp
2628
from openapi_server.models.abort_upload_body import AbortUploadBody
2729
from openapi_server.models.abort_upload_resp import AbortUploadResp
2830
from openapi_server.models.complete_upload_body import CompleteUploadBody
@@ -44,6 +46,28 @@
4446
importlib.import_module(name)
4547

4648

49+
@router.post(
50+
"/s3/abortDatasetUpload",
51+
responses={
52+
201: {"model": AbortDatasetUploadResp, "description": "Finalize dataset upload requested"},
53+
422: {"model": HTTPValidationError, "description": "Validation Error"},
54+
500: {"model": InternalError, "description": "Internal Server Error"},
55+
},
56+
tags=["s3upload"],
57+
summary="Abort Dataset Upload",
58+
response_model_by_alias=True,
59+
)
60+
async def abort_dataset_upload(
61+
abort_dataset_upload_body: AbortDatasetUploadBody = Body(None, description=""),
62+
token_BearerAuth: TokenModel = Security(
63+
get_token_BearerAuth
64+
),
65+
) -> AbortDatasetUploadResp:
66+
if not BaseS3uploadApi.subclasses:
67+
raise HTTPException(status_code=500, detail="Not implemented")
68+
return await BaseS3uploadApi.subclasses[0]().abort_dataset_upload(abort_dataset_upload_body)
69+
70+
4771
@router.post(
4872
"/s3/abortMultipartUpload",
4973
responses={

backend/api/src/openapi_server/apis/s3upload_api_base.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
from typing import ClassVar, Dict, List, Tuple # noqa: F401
44

5+
from openapi_server.models.abort_dataset_upload_body import AbortDatasetUploadBody
6+
from openapi_server.models.abort_dataset_upload_resp import AbortDatasetUploadResp
57
from openapi_server.models.abort_upload_body import AbortUploadBody
68
from openapi_server.models.abort_upload_resp import AbortUploadResp
79
from openapi_server.models.complete_upload_body import CompleteUploadBody
@@ -22,6 +24,13 @@ class BaseS3uploadApi:
2224
def __init_subclass__(cls, **kwargs):
2325
super().__init_subclass__(**kwargs)
2426
BaseS3uploadApi.subclasses = BaseS3uploadApi.subclasses + (cls,)
27+
async def abort_dataset_upload(
28+
self,
29+
abort_dataset_upload_body: AbortDatasetUploadBody,
30+
) -> AbortDatasetUploadResp:
31+
...
32+
33+
2534
async def abort_multipart_upload(
2635
self,
2736
abort_upload_body: AbortUploadBody,

0 commit comments

Comments
 (0)