Skip to content

Commit b215783

Browse files
author
Andrei Neagu
committed
Merge remote-tracking branch 'upstream/master' into pr-osparc-unping-and-update-aiohttp
2 parents 97401f4 + 0499d9e commit b215783

File tree

103 files changed

+731
-574
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

103 files changed

+731
-574
lines changed

api/specs/web-server/_auth_api_keys.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
from typing import Annotated
22

3+
from _common import as_query
34
from fastapi import APIRouter, Depends, status
45
from models_library.api_schemas_webserver.auth import (
56
ApiKeyCreateRequest,
67
ApiKeyCreateResponse,
78
ApiKeyGet,
9+
ApiKeyListQueryParams,
810
)
911
from models_library.generics import Envelope
1012
from models_library.rest_error import EnvelopedError
@@ -39,7 +41,9 @@ async def create_api_key(_body: ApiKeyCreateRequest):
3941
response_model=Envelope[list[ApiKeyGet]],
4042
status_code=status.HTTP_200_OK,
4143
)
42-
async def list_api_keys():
44+
async def list_api_keys(
45+
_query: Annotated[as_query(ApiKeyListQueryParams), Depends()],
46+
):
4347
"""lists API keys by this user"""
4448

4549

api/specs/web-server/_long_running_tasks.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from models_library.generics import Envelope
1111
from models_library.rest_error import EnvelopedError
1212
from servicelib.aiohttp.long_running_tasks._routes import _PathParam
13-
from servicelib.long_running_tasks._models import TaskGet, TaskStatus
13+
from servicelib.long_running_tasks.models import TaskGet, TaskStatus
1414
from simcore_service_webserver._meta import API_VTAG
1515
from simcore_service_webserver.tasks._exception_handlers import (
1616
_TO_HTTP_ERROR_MAP as export_data_http_error_map,

api/specs/web-server/_long_running_tasks_legacy.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from fastapi import APIRouter, Depends, status
1010
from models_library.generics import Envelope
1111
from servicelib.aiohttp.long_running_tasks._routes import _PathParam
12-
from servicelib.long_running_tasks._models import TaskGet, TaskStatus
12+
from servicelib.long_running_tasks.models import TaskGet, TaskStatus
1313
from simcore_service_webserver._meta import API_VTAG
1414

1515
router = APIRouter(

packages/models-library/src/models_library/api_schemas_webserver/auth.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from typing import Annotated, Any
33

44
from models_library.basic_types import IDStr
5+
from models_library.rest_base import RequestParameters
56
from pydantic import AliasGenerator, ConfigDict, Field, HttpUrl, SecretStr
67
from pydantic.alias_generators import to_camel
78

@@ -53,6 +54,17 @@ class UnregisterCheck(InputSchema):
5354
#
5455

5556

57+
class ApiKeyListQueryParams(RequestParameters):
58+
include_autogenerated: Annotated[
59+
bool,
60+
Field(
61+
alias="includeAutogenerated",
62+
description="If True, then the list includes autogenerated API keys. "
63+
"Otherwise, only user-created API keys are returned.",
64+
),
65+
] = False
66+
67+
5668
class ApiKeyCreateRequest(InputSchema):
5769
display_name: Annotated[str, Field(..., min_length=3)]
5870
expiration: Annotated[
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from typing import Final
2+
3+
from models_library.rpc.webserver.auth.api_keys import generate_api_key_prefix
4+
5+
API_KEY_AUTOGENERATED_DISPLAY_NAME_PREFIX: Final[str] = "__auto_"
6+
API_KEY_AUTOGENERATED_KEY_PREFIX: Final[str] = generate_api_key_prefix(
7+
API_KEY_AUTOGENERATED_DISPLAY_NAME_PREFIX
8+
)

packages/models-library/src/models_library/rpc/webserver/auth/api_keys.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,12 @@
1616
_SECRET_LEN: Final = 20
1717

1818

19+
def generate_api_key_prefix(name: str) -> str:
20+
return _PUNCTUATION_REGEX.sub("_", name[:5])
21+
22+
1923
def generate_unique_api_key(name: str, length: int = _KEY_LEN) -> str:
20-
prefix = _PUNCTUATION_REGEX.sub("_", name[:5])
24+
prefix = generate_api_key_prefix(name)
2125
hashed = hashlib.sha256(name.encode()).hexdigest()
2226
return f"{prefix}_{hashed[:length]}"
2327

packages/service-library/src/servicelib/aiohttp/long_running_tasks/_dependencies.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from aiohttp import web
44

5-
from ...long_running_tasks._task import TasksManager
5+
from ...long_running_tasks.task import TasksManager
66
from ._constants import (
77
APP_LONG_RUNNING_TASKS_MANAGER_KEY,
88
RQT_LONG_RUNNING_TASKS_CONTEXT_KEY,

packages/service-library/src/servicelib/aiohttp/long_running_tasks/_error_handlers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from aiohttp import web
44
from common_library.json_serialization import json_dumps
55

6-
from ...long_running_tasks._errors import (
6+
from ...long_running_tasks.errors import (
77
TaskCancelledError,
88
TaskNotCompletedError,
99
TaskNotFoundError,

packages/service-library/src/servicelib/aiohttp/long_running_tasks/_routes.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
from pydantic import BaseModel
77
from servicelib.aiohttp import status
88

9-
from ...long_running_tasks._errors import TaskNotCompletedError, TaskNotFoundError
10-
from ...long_running_tasks._models import TaskGet, TaskId, TaskStatus
11-
from ...long_running_tasks._task import TrackedTask
9+
from ...long_running_tasks.errors import TaskNotCompletedError, TaskNotFoundError
10+
from ...long_running_tasks.models import TaskGet, TaskId, TaskStatus
11+
from ...long_running_tasks.task import TrackedTask
1212
from ..requests_validation import parse_request_path_parameters_as
1313
from ._dependencies import get_task_context, get_tasks_manager
1414

packages/service-library/src/servicelib/aiohttp/long_running_tasks/_server.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
from pydantic import AnyHttpUrl, PositiveFloat, TypeAdapter
1010

1111
from ...aiohttp import status
12-
from ...long_running_tasks._models import TaskGet
13-
from ...long_running_tasks._task import (
12+
from ...long_running_tasks.models import TaskGet
13+
from ...long_running_tasks.task import (
1414
TaskContext,
1515
TaskProtocol,
1616
TasksManager,
@@ -136,11 +136,11 @@ def setup(
136136

137137
async def on_cleanup_ctx(app: web.Application) -> AsyncGenerator[None, None]:
138138
# add components to state
139-
app[
140-
APP_LONG_RUNNING_TASKS_MANAGER_KEY
141-
] = long_running_task_manager = TasksManager(
142-
stale_task_check_interval_s=stale_task_check_interval_s,
143-
stale_task_detect_timeout_s=stale_task_detect_timeout_s,
139+
app[APP_LONG_RUNNING_TASKS_MANAGER_KEY] = long_running_task_manager = (
140+
TasksManager(
141+
stale_task_check_interval_s=stale_task_check_interval_s,
142+
stale_task_detect_timeout_s=stale_task_detect_timeout_s,
143+
)
144144
)
145145

146146
# add error handlers

0 commit comments

Comments
 (0)