Skip to content

Commit bc6fd0d

Browse files
committed
make sure to pass uploaded parts
1 parent 4e79417 commit bc6fd0d

File tree

2 files changed

+10
-3
lines changed
  • services/api-server/src/simcore_service_api_server

2 files changed

+10
-3
lines changed

services/api-server/src/simcore_service_api_server/api/routes/files.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,9 @@ async def complete_multipart_upload(
438438
file = await _create_domain_file(
439439
webserver_api=webserver_api, file_id=file_id, client_file=client_file
440440
)
441-
e_tag = await storage_client.complete_file_upload(user_id=user_id, file=file)
441+
e_tag = await storage_client.complete_file_upload(
442+
user_id=user_id, file=file, uploaded_parts=uploaded_parts.parts
443+
)
442444
assert e_tag is not None # nosec
443445

444446
file.e_tag = e_tag

services/api-server/src/simcore_service_api_server/services_http/storage.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,11 @@
2020
FileUploadCompleteFutureResponse,
2121
FileUploadCompleteResponse,
2222
FileUploadCompleteState,
23+
FileUploadCompletionBody,
2324
FileUploadSchema,
2425
LinkType,
2526
PresignedLink,
27+
UploadedPart,
2628
)
2729
from models_library.basic_types import SHA256Str
2830
from models_library.generics import Envelope
@@ -200,11 +202,14 @@ async def get_file_upload_links(
200202
return enveloped_data.data
201203

202204
@_exception_mapper(http_status_map={})
203-
async def complete_file_upload(self, *, user_id: int, file: File) -> ETag:
205+
async def complete_file_upload(
206+
self, *, user_id: int, file: File, uploaded_parts: list[UploadedPart]
207+
) -> ETag:
204208

205209
response = await self.client.post(
206210
f"/locations/{self.SIMCORE_S3_ID}/files/{file.quoted_storage_file_id}:complete",
207211
params={"user_id": f"{user_id}"},
212+
json=jsonable_encoder(FileUploadCompletionBody(parts=uploaded_parts)),
208213
)
209214
response.raise_for_status()
210215
file_upload_complete_response = Envelope[
@@ -228,7 +233,6 @@ async def complete_file_upload(self, *, user_id: int, file: File) -> ETag:
228233
].model_validate_json(resp.text)
229234
assert future_enveloped.data # nosec
230235
if future_enveloped.data.state == FileUploadCompleteState.NOK:
231-
msg = "upload not ready yet"
232236
raise TryAgain()
233237

234238
assert future_enveloped.data.e_tag # nosec
@@ -240,6 +244,7 @@ async def complete_file_upload(self, *, user_id: int, file: File) -> ETag:
240244
return future_enveloped.data.e_tag
241245
except TryAgain as exc:
242246
raise BackendTimeoutError() from exc
247+
raise BackendTimeoutError()
243248

244249
@_exception_mapper(http_status_map={})
245250
async def abort_file_upload(self, *, user_id: int, file: File) -> None:

0 commit comments

Comments
 (0)