Skip to content

Commit fd598b5

Browse files
fix: result stream href
1 parent ce0c86b commit fd598b5

File tree

4 files changed

+12
-56
lines changed

4 files changed

+12
-56
lines changed

services/storage/src/simcore_service_storage/api/_worker_tasks/_simcore_s3.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,8 @@ async def search(
140140
user_id: UserID,
141141
project_id: ProjectID | None,
142142
name_pattern: str,
143-
modified_before: datetime.datetime | None,
144-
modified_after: datetime.datetime | None,
143+
last_modified_before: datetime.datetime | None,
144+
last_modified_after: datetime.datetime | None,
145145
items_per_page: int,
146146
) -> None:
147147
with log_context(
@@ -160,8 +160,8 @@ async def search(
160160
user_id=user_id,
161161
project_id=project_id,
162162
name_pattern=name_pattern,
163-
modified_before=modified_before,
164-
modified_after=modified_after,
163+
modified_before=last_modified_before,
164+
modified_after=last_modified_after,
165165
items_per_page=items_per_page,
166166
):
167167
data = [

services/storage/src/simcore_service_storage/api/rpc/_simcore_s3.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import datetime
12
from typing import Literal
23

34
from models_library.api_schemas_rpc_async_jobs.async_jobs import (
@@ -73,6 +74,8 @@ async def start_search(
7374
job_filter: AsyncJobFilter,
7475
name_pattern: str,
7576
items_per_page: int,
77+
last_modified_before: datetime.datetime | None = None,
78+
last_modified_after: datetime.datetime | None = None,
7679
project_id: str | None = None,
7780
) -> AsyncJobGet:
7881
task_name = search.__name__
@@ -85,6 +88,8 @@ async def start_search(
8588
user_id=job_filter.user_id,
8689
project_id=project_id,
8790
name_pattern=name_pattern,
91+
last_modified_before=last_modified_before,
92+
last_modified_after=last_modified_after,
8893
items_per_page=items_per_page,
8994
)
9095
return AsyncJobGet(job_id=task_uuid, job_name=task_name)

services/web/server/src/simcore_service_webserver/storage/_rest.py

Lines changed: 3 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,11 @@
99
from urllib.parse import quote, unquote
1010

1111
from aiohttp import ClientTimeout, web
12-
from common_library.json_serialization import json_dumps
1312
from models_library.api_schemas_long_running_tasks.tasks import (
1413
TaskGet,
1514
)
1615
from models_library.api_schemas_rpc_async_jobs.async_jobs import (
1716
AsyncJobGet,
18-
AsyncJobId,
1917
)
2018
from models_library.api_schemas_storage.storage_schemas import (
2119
FileUploadCompleteResponse,
@@ -45,15 +43,12 @@
4543
from servicelib.aiohttp.client_session import get_client_session
4644
from servicelib.aiohttp.requests_validation import (
4745
parse_request_body_as,
48-
parse_request_headers_as,
4946
parse_request_path_parameters_as,
5047
parse_request_query_parameters_as,
5148
)
5249
from servicelib.aiohttp.rest_responses import (
5350
create_data_response,
54-
create_event_stream_response,
5551
)
56-
from servicelib.celery.models import TaskFilter
5752
from servicelib.common_headers import X_FORWARDED_PROTO
5853
from servicelib.rabbitmq.rpc_interfaces.storage.paths import (
5954
compute_path_size as remote_compute_path_size,
@@ -67,11 +62,9 @@
6762
)
6863
from servicelib.request_keys import RQT_USERID_KEY
6964
from servicelib.rest_responses import unwrap_envelope
70-
from servicelib.sse.models import SSEEvent, SSEHeaders
7165
from yarl import URL
7266

7367
from .._meta import API_VTAG
74-
from ..celery import get_task_manager
7568
from ..login.decorators import login_required
7669
from ..models import AuthenticatedRequestContext
7770
from ..rabbitmq import get_rabbitmq_rpc_client
@@ -559,10 +552,11 @@ class _PathParams(BaseModel):
559552

560553
rabbitmq_rpc_client = get_rabbitmq_rpc_client(request.app)
561554
_req_ctx = AuthenticatedRequestContext.model_validate(request)
562-
path_params = parse_request_path_parameters_as(_PathParams, request)
555+
parse_request_path_parameters_as(_PathParams, request)
563556
search_body = await parse_request_body_as(
564557
model_schema_cls=SearchBodyParams, request=request
565558
)
559+
566560
async_job_rpc_get, _ = await start_search(
567561
rabbitmq_rpc_client,
568562
job_filter=get_job_filter(
@@ -580,47 +574,7 @@ class _PathParams(BaseModel):
580574
task_id=_job_id,
581575
status_href=f"{request.url.with_path(str(request.app.router['get_async_job_status'].url_for(task_id=_job_id)))}",
582576
abort_href=f"{request.url.with_path(str(request.app.router['cancel_async_job'].url_for(task_id=_job_id)))}",
583-
result_stream_href=f"{request.url.with_path(str(request.app.router['stream_search'].url_for(location_id=str(path_params.location_id), job_id=_job_id)))}",
577+
result_stream_href=f"{request.url.with_path(str(request.app.router['get_async_job_stream'].url_for(task_id=_job_id)))}",
584578
),
585579
status=status.HTTP_202_ACCEPTED,
586580
)
587-
588-
589-
@routes.get(
590-
_storage_locations_prefix + "/{location_id}/search/{job_id}/stream",
591-
name="stream_search",
592-
)
593-
@login_required
594-
@permission_required("storage.files.*")
595-
@handle_exceptions
596-
async def stream_search(request: web.Request) -> web.Response:
597-
class _PathParams(BaseModel):
598-
location_id: Annotated[LocationID, AfterValidator(_allow_only_simcore)]
599-
job_id: AsyncJobId
600-
601-
_req_ctx = AuthenticatedRequestContext.model_validate(request)
602-
path_params = parse_request_path_parameters_as(_PathParams, request)
603-
header_params = parse_request_headers_as(SSEHeaders, request)
604-
605-
task_manager = get_task_manager(request.app)
606-
task_filter = get_job_filter(
607-
user_id=_req_ctx.user_id,
608-
product_name=_req_ctx.product_name,
609-
)
610-
611-
async def event_generator():
612-
async for event_id, event in task_manager.consume_task_events(
613-
task_filter=TaskFilter.model_validate(task_filter.model_dump()),
614-
task_uuid=path_params.job_id,
615-
last_id=header_params.last_event_id,
616-
):
617-
yield SSEEvent(
618-
id=event_id, event=event.type, data=[json_dumps(event.data)]
619-
).serialize()
620-
if event.type == "status" and getattr(event, "data", None) in (
621-
"done",
622-
"error",
623-
):
624-
break
625-
626-
return create_event_stream_response(event_generator=event_generator)

services/web/server/src/simcore_service_webserver/tasks/_rest.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,6 @@ async def get_async_job_status(request: web.Request) -> web.Response:
142142
name="cancel_async_job",
143143
)
144144
@login_required
145-
@permission_required("storage.files.*")
146145
@handle_exceptions
147146
async def cancel_async_job(request: web.Request) -> web.Response:
148147
_req_ctx = AuthenticatedRequestContext.model_validate(request)
@@ -166,7 +165,6 @@ async def cancel_async_job(request: web.Request) -> web.Response:
166165
name="get_async_job_result",
167166
)
168167
@login_required
169-
@permission_required("storage.files.*")
170168
@handle_exceptions
171169
async def get_async_job_result(request: web.Request) -> web.Response:
172170
_req_ctx = AuthenticatedRequestContext.model_validate(request)
@@ -193,7 +191,6 @@ async def get_async_job_result(request: web.Request) -> web.Response:
193191
name="get_async_job_stream",
194192
)
195193
@login_required
196-
@permission_required("storage.files.*")
197194
@handle_exceptions
198195
async def get_async_job_stream(request: web.Request) -> web.Response:
199196
_req_ctx = AuthenticatedRequestContext.model_validate(request)

0 commit comments

Comments
 (0)