From e85303c38da8205ac268826fd8279b72d394695f Mon Sep 17 00:00:00 2001 From: Mads Bisgaard Date: Fri, 28 Feb 2025 16:22:03 +0100 Subject: [PATCH 1/3] cleanup --- api/specs/web-server/_auth_api_keys.py | 2 +- .../{_rest.py => _controller_rest.py} | 0 .../api_keys/{_rpc.py => _controller_rpc.py} | 0 .../api_keys/_repository.py | 34 ------------------- .../api_keys/plugin.py | 6 ++-- .../api_keys/{api.py => service_api_keys.py} | 0 .../garbage_collector/_tasks_api_keys.py | 5 +-- 7 files changed, 7 insertions(+), 40 deletions(-) rename services/web/server/src/simcore_service_webserver/api_keys/{_rest.py => _controller_rest.py} (100%) rename services/web/server/src/simcore_service_webserver/api_keys/{_rpc.py => _controller_rpc.py} (100%) rename services/web/server/src/simcore_service_webserver/api_keys/{api.py => service_api_keys.py} (100%) diff --git a/api/specs/web-server/_auth_api_keys.py b/api/specs/web-server/_auth_api_keys.py index 0c6512eddda7..aa0a541a168f 100644 --- a/api/specs/web-server/_auth_api_keys.py +++ b/api/specs/web-server/_auth_api_keys.py @@ -9,8 +9,8 @@ from models_library.generics import Envelope from models_library.rest_error import EnvelopedError from simcore_service_webserver._meta import API_VTAG +from simcore_service_webserver.api_keys._controller_rest import ApiKeysPathParams from simcore_service_webserver.api_keys._exceptions_handlers import _TO_HTTP_ERROR_MAP -from simcore_service_webserver.api_keys._rest import ApiKeysPathParams router = APIRouter( prefix=f"/{API_VTAG}", diff --git a/services/web/server/src/simcore_service_webserver/api_keys/_rest.py b/services/web/server/src/simcore_service_webserver/api_keys/_controller_rest.py similarity index 100% rename from services/web/server/src/simcore_service_webserver/api_keys/_rest.py rename to services/web/server/src/simcore_service_webserver/api_keys/_controller_rest.py diff --git a/services/web/server/src/simcore_service_webserver/api_keys/_rpc.py b/services/web/server/src/simcore_service_webserver/api_keys/_controller_rpc.py similarity index 100% rename from services/web/server/src/simcore_service_webserver/api_keys/_rpc.py rename to services/web/server/src/simcore_service_webserver/api_keys/_controller_rpc.py diff --git a/services/web/server/src/simcore_service_webserver/api_keys/_repository.py b/services/web/server/src/simcore_service_webserver/api_keys/_repository.py index e53dab0a5d2e..0002ceff1e57 100644 --- a/services/web/server/src/simcore_service_webserver/api_keys/_repository.py +++ b/services/web/server/src/simcore_service_webserver/api_keys/_repository.py @@ -180,40 +180,6 @@ async def delete_api_key( await conn.execute(stmt) -async def delete_by_name( - app: web.Application, - connection: AsyncConnection | None = None, - *, - display_name: str, - user_id: UserID, - product_name: ProductName, -) -> None: - async with transaction_context(get_asyncpg_engine(app), connection) as conn: - stmt = api_keys.delete().where( - (api_keys.c.user_id == user_id) - & (api_keys.c.display_name == display_name) - & (api_keys.c.product_name == product_name) - ) - await conn.execute(stmt) - - -async def delete_by_key( - app: web.Application, - connection: AsyncConnection | None = None, - *, - api_key: str, - user_id: UserID, - product_name: ProductName, -) -> None: - async with transaction_context(get_asyncpg_engine(app), connection) as conn: - stmt = api_keys.delete().where( - (api_keys.c.user_id == user_id) - & (api_keys.c.api_key == api_key) - & (api_keys.c.product_name == product_name) - ) - await conn.execute(stmt) - - async def prune_expired( app: web.Application, connection: AsyncConnection | None = None ) -> list[str]: diff --git a/services/web/server/src/simcore_service_webserver/api_keys/plugin.py b/services/web/server/src/simcore_service_webserver/api_keys/plugin.py index 636615f3062f..11aeabf1e330 100644 --- a/services/web/server/src/simcore_service_webserver/api_keys/plugin.py +++ b/services/web/server/src/simcore_service_webserver/api_keys/plugin.py @@ -8,7 +8,7 @@ from ..products.plugin import setup_products from ..rabbitmq import setup_rabbitmq from ..rest.plugin import setup_rest -from . import _rest, _rpc +from . import _controller_rest, _controller_rpc _logger = logging.getLogger(__name__) @@ -26,9 +26,9 @@ def setup_api_keys(app: web.Application): # http api setup_rest(app) - app.router.add_routes(_rest.routes) + app.router.add_routes(_controller_rest.routes) # rpc api setup_rabbitmq(app) if app[APP_SETTINGS_KEY].WEBSERVER_RABBITMQ: - app.on_startup.append(_rpc.register_rpc_routes_on_startup) + app.on_startup.append(_controller_rpc.register_rpc_routes_on_startup) diff --git a/services/web/server/src/simcore_service_webserver/api_keys/api.py b/services/web/server/src/simcore_service_webserver/api_keys/service_api_keys.py similarity index 100% rename from services/web/server/src/simcore_service_webserver/api_keys/api.py rename to services/web/server/src/simcore_service_webserver/api_keys/service_api_keys.py diff --git a/services/web/server/src/simcore_service_webserver/garbage_collector/_tasks_api_keys.py b/services/web/server/src/simcore_service_webserver/garbage_collector/_tasks_api_keys.py index b58974ffd966..2e2c11b08054 100644 --- a/services/web/server/src/simcore_service_webserver/garbage_collector/_tasks_api_keys.py +++ b/services/web/server/src/simcore_service_webserver/garbage_collector/_tasks_api_keys.py @@ -1,7 +1,8 @@ """ - Scheduled task that periodically runs prune in the garbage collector service +Scheduled task that periodically runs prune in the garbage collector service """ + import asyncio import logging from collections.abc import AsyncIterator, Callable @@ -11,7 +12,7 @@ from tenacity.before_sleep import before_sleep_log from tenacity.wait import wait_exponential -from ..api_keys.api import prune_expired_api_keys +from ..api_keys.service_api_keys import prune_expired_api_keys logger = logging.getLogger(__name__) From 6caaa4ecb66e05b461bb1c16d9569c87dcd51440 Mon Sep 17 00:00:00 2001 From: Mads Bisgaard Date: Mon, 3 Mar 2025 13:50:13 +0100 Subject: [PATCH 2/3] @pcrespov service_.py -> _service.py --- .../api_keys/{service_api_keys.py => api_keys_service.py} | 0 .../garbage_collector/_tasks_api_keys.py | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename services/web/server/src/simcore_service_webserver/api_keys/{service_api_keys.py => api_keys_service.py} (100%) diff --git a/services/web/server/src/simcore_service_webserver/api_keys/service_api_keys.py b/services/web/server/src/simcore_service_webserver/api_keys/api_keys_service.py similarity index 100% rename from services/web/server/src/simcore_service_webserver/api_keys/service_api_keys.py rename to services/web/server/src/simcore_service_webserver/api_keys/api_keys_service.py diff --git a/services/web/server/src/simcore_service_webserver/garbage_collector/_tasks_api_keys.py b/services/web/server/src/simcore_service_webserver/garbage_collector/_tasks_api_keys.py index 2e2c11b08054..a73c1a562ee0 100644 --- a/services/web/server/src/simcore_service_webserver/garbage_collector/_tasks_api_keys.py +++ b/services/web/server/src/simcore_service_webserver/garbage_collector/_tasks_api_keys.py @@ -12,7 +12,7 @@ from tenacity.before_sleep import before_sleep_log from tenacity.wait import wait_exponential -from ..api_keys.service_api_keys import prune_expired_api_keys +from ..api_keys.api_keys_service import prune_expired_api_keys logger = logging.getLogger(__name__) From e40ba3b4e9d6c1910499219a617dee4da0e17756 Mon Sep 17 00:00:00 2001 From: Mads Bisgaard Date: Tue, 4 Mar 2025 09:47:36 +0100 Subject: [PATCH 3/3] @pcrespov fix import --- .../garbage_collector/_tasks_api_keys.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/web/server/src/simcore_service_webserver/garbage_collector/_tasks_api_keys.py b/services/web/server/src/simcore_service_webserver/garbage_collector/_tasks_api_keys.py index a73c1a562ee0..b992d25b3876 100644 --- a/services/web/server/src/simcore_service_webserver/garbage_collector/_tasks_api_keys.py +++ b/services/web/server/src/simcore_service_webserver/garbage_collector/_tasks_api_keys.py @@ -12,7 +12,7 @@ from tenacity.before_sleep import before_sleep_log from tenacity.wait import wait_exponential -from ..api_keys.api_keys_service import prune_expired_api_keys +from ..api_keys import api_keys_service logger = logging.getLogger(__name__) @@ -32,7 +32,7 @@ async def _run_task(app: web.Application): It is resilient, i.e. if update goes wrong, it waits a bit and retries """ - if deleted := await prune_expired_api_keys(app): + if deleted := await api_keys_service.prune_expired_api_keys(app): # broadcast force logout of user_id for api_key in deleted: logger.info("API-key %s expired and was removed", f"{api_key=}")