Skip to content

Commit 4f88db3

Browse files
committed
add get_status endpoint as well as test
1 parent b137177 commit 4f88db3

File tree

3 files changed

+40
-3
lines changed

3 files changed

+40
-3
lines changed

packages/service-library/src/servicelib/rabbitmq/rpc_interfaces/storage/zipping.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from typing import Final
22

33
from models_library.api_schemas_long_running_tasks.base import TaskId
4-
from models_library.api_schemas_long_running_tasks.tasks import TaskGet
4+
from models_library.api_schemas_long_running_tasks.tasks import TaskGet, TaskStatus
55
from models_library.api_schemas_storage import STORAGE_RPC_NAMESPACE
66
from models_library.api_schemas_storage.zipping_tasks import (
77
ZipTaskAbortOutput,
@@ -41,3 +41,16 @@ async def abort_zipping(
4141
)
4242
assert isinstance(result, ZipTaskAbortOutput)
4343
return result
44+
45+
46+
async def get_zipping_status(
47+
rabbitmq_rpc_client: RabbitMQRPCClient, *, task_id: TaskId
48+
) -> TaskStatus:
49+
result = await rabbitmq_rpc_client.request(
50+
STORAGE_RPC_NAMESPACE,
51+
_RPC_METHOD_NAME_ADAPTER.validate_python("get_zipping_status"),
52+
task_id=task_id,
53+
timeout_s=_DEFAULT_TIMEOUT_S,
54+
)
55+
assert isinstance(result, TaskStatus)
56+
return result

services/storage/src/simcore_service_storage/api/rabbitmq_rpc/_zipping.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
1+
from datetime import datetime
12
from uuid import uuid4
23

34
from fastapi import FastAPI
4-
from models_library.api_schemas_long_running_tasks.tasks import TaskGet, TaskId
5+
from models_library.api_schemas_long_running_tasks.base import ProgressPercent
6+
from models_library.api_schemas_long_running_tasks.tasks import (
7+
TaskGet,
8+
TaskId,
9+
TaskStatus,
10+
)
511
from models_library.api_schemas_storage.zipping_tasks import (
612
ZipTaskAbortOutput,
713
ZipTaskStartInput,
814
)
915
from servicelib.rabbitmq import RPCRouter
16+
from simcore_service_storage.simcore_s3_dsm import TaskProgress
1017

1118
router = RPCRouter()
1219

@@ -26,3 +33,13 @@ async def start_zipping(app: FastAPI, paths: ZipTaskStartInput) -> TaskGet:
2633
@router.expose()
2734
async def abort_zipping(app: FastAPI, task_id: TaskId) -> ZipTaskAbortOutput:
2835
return ZipTaskAbortOutput(result=True, task_id=task_id)
36+
37+
38+
@router.expose()
39+
async def get_zipping_status(app: FastAPI, task_id: TaskId) -> TaskStatus:
40+
progress = TaskProgress(
41+
task_id=task_id,
42+
message="Here's a status for you. You are welcome",
43+
percent=ProgressPercent(0.5),
44+
)
45+
return TaskStatus(task_progress=progress, done=False, started=datetime.now())

services/storage/tests/unit/test_zipping.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import pytest
55
from faker import Faker
66
from fastapi import FastAPI
7-
from models_library.api_schemas_long_running_tasks.tasks import TaskGet
7+
from models_library.api_schemas_long_running_tasks.tasks import TaskGet, TaskStatus
88
from models_library.api_schemas_storage.zipping_tasks import (
99
ZipTaskAbortOutput,
1010
ZipTaskStartInput,
@@ -72,3 +72,10 @@ async def test_abort_zipping(rpc_client: RabbitMQRPCClient, faker: Faker):
7272
result = await zipping.abort_zipping(rpc_client, task_id=_task_id)
7373
assert isinstance(result, ZipTaskAbortOutput)
7474
assert result.task_id == _task_id
75+
76+
77+
async def test_get_zipping_status(rpc_client: RabbitMQRPCClient, faker: Faker):
78+
_task_id = TaskId(f"{faker.uuid4()}")
79+
result = await zipping.get_zipping_status(rpc_client, task_id=_task_id)
80+
assert isinstance(result, TaskStatus)
81+
assert result.task_progress.task_id == _task_id

0 commit comments

Comments
 (0)