From e4ed2fa55e51c329c018ed08b5a9e63d72a4a864 Mon Sep 17 00:00:00 2001 From: Mads Bisgaard Date: Wed, 19 Mar 2025 16:40:02 +0100 Subject: [PATCH 01/13] add dummy functions section in webserver add rpc interface --- .../functions/_controller_rpc.py | 19 ++++++++++++++++ .../functions/_repo.py | 2 ++ .../functions/_service.py | 22 +++++++++++++++++++ .../functions/plugin.py | 7 ++++++ 4 files changed, 50 insertions(+) create mode 100644 services/web/server/src/simcore_service_webserver/functions/_controller_rpc.py create mode 100644 services/web/server/src/simcore_service_webserver/functions/_repo.py create mode 100644 services/web/server/src/simcore_service_webserver/functions/_service.py create mode 100644 services/web/server/src/simcore_service_webserver/functions/plugin.py diff --git a/services/web/server/src/simcore_service_webserver/functions/_controller_rpc.py b/services/web/server/src/simcore_service_webserver/functions/_controller_rpc.py new file mode 100644 index 000000000000..a04d7fd9ebec --- /dev/null +++ b/services/web/server/src/simcore_service_webserver/functions/_controller_rpc.py @@ -0,0 +1,19 @@ +from aiohttp import web +from models_library.api_schemas_webserver import WEBSERVER_RPC_NAMESPACE +from servicelib.rabbitmq import RPCRouter +from simcore_service_webserver.rabbitmq import get_rabbitmq_rpc_server + +# this is the rpc interface exposed to the api-server +# this interface should call the service layer + +router = RPCRouter() + + +@router.expose() +async def ping(app) -> str: + return "pong" + + +async def register_rpc_routes_on_startup(app: web.Application): + rpc_server = get_rabbitmq_rpc_server(app) + await rpc_server.register_router(router, WEBSERVER_RPC_NAMESPACE, app) diff --git a/services/web/server/src/simcore_service_webserver/functions/_repo.py b/services/web/server/src/simcore_service_webserver/functions/_repo.py new file mode 100644 index 000000000000..baf76a9ee8d4 --- /dev/null +++ b/services/web/server/src/simcore_service_webserver/functions/_repo.py @@ -0,0 +1,2 @@ +# the repository layer. Calls directly to the db (function table) should be done here. +# see e.g. licenses/_licensed_resources_repository.py file for an example diff --git a/services/web/server/src/simcore_service_webserver/functions/_service.py b/services/web/server/src/simcore_service_webserver/functions/_service.py new file mode 100644 index 000000000000..56a760d6edcc --- /dev/null +++ b/services/web/server/src/simcore_service_webserver/functions/_service.py @@ -0,0 +1,22 @@ +# This is where calls to the business logic is done. +# calls to the `projects` interface should be done here. +# calls to _repo.py should also be done here + +from aiohttp import web +from models_library.users import UserID +from simcore_service_webserver.projects.models import ProjectDict + +from ..projects import projects_service + + +# example function +async def get_project_from_function( + app: web.Application, + function_uuid: str, + user_id: UserID, +) -> ProjectDict: + + project = await projects_service.get_project_for_user( + app=app, project_uuid=function_uuid, user_id=user_id + ) + return project diff --git a/services/web/server/src/simcore_service_webserver/functions/plugin.py b/services/web/server/src/simcore_service_webserver/functions/plugin.py new file mode 100644 index 000000000000..9633d537a521 --- /dev/null +++ b/services/web/server/src/simcore_service_webserver/functions/plugin.py @@ -0,0 +1,7 @@ +from aiohttp import web + +from . import _controller_rpc + + +def setup(app: web.Application): + app.on_startup.append(_controller_rpc.register_rpc_routes_on_startup) From 4b49f93804276b18267392ae011b6fe078a8b6ff Mon Sep 17 00:00:00 2001 From: Mads Bisgaard Date: Wed, 19 Mar 2025 16:53:39 +0100 Subject: [PATCH 02/13] introduce functions section in api server and expose ping endpoint --- .../webserver/functions/__init__.py | 0 .../webserver/functions/functions.py | 21 +++++++++++++++++++ .../simcore_service_api_server/api/root.py | 2 ++ .../api/routes/functions.py | 16 ++++++++++++++ .../services_rpc/wb_api_server.py | 6 ++++++ 5 files changed, 45 insertions(+) create mode 100644 packages/service-library/src/servicelib/rabbitmq/rpc_interfaces/webserver/functions/__init__.py create mode 100644 packages/service-library/src/servicelib/rabbitmq/rpc_interfaces/webserver/functions/functions.py create mode 100644 services/api-server/src/simcore_service_api_server/api/routes/functions.py diff --git a/packages/service-library/src/servicelib/rabbitmq/rpc_interfaces/webserver/functions/__init__.py b/packages/service-library/src/servicelib/rabbitmq/rpc_interfaces/webserver/functions/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/packages/service-library/src/servicelib/rabbitmq/rpc_interfaces/webserver/functions/functions.py b/packages/service-library/src/servicelib/rabbitmq/rpc_interfaces/webserver/functions/functions.py new file mode 100644 index 000000000000..878490e01c7d --- /dev/null +++ b/packages/service-library/src/servicelib/rabbitmq/rpc_interfaces/webserver/functions/functions.py @@ -0,0 +1,21 @@ +import logging + +from models_library.api_schemas_webserver import WEBSERVER_RPC_NAMESPACE +from models_library.rabbitmq_basic_types import RPCMethodName +from pydantic import TypeAdapter +from servicelib.logging_utils import log_decorator +from servicelib.rabbitmq import RabbitMQRPCClient + +_logger = logging.getLogger(__name__) + + +@log_decorator(_logger, level=logging.DEBUG) +async def ping( + rabbitmq_rpc_client: RabbitMQRPCClient, +) -> str: + result = await rabbitmq_rpc_client.request( + WEBSERVER_RPC_NAMESPACE, + TypeAdapter(RPCMethodName).validate_python("ping"), + ) + assert isinstance(result, str) # nosec + return result diff --git a/services/api-server/src/simcore_service_api_server/api/root.py b/services/api-server/src/simcore_service_api_server/api/root.py index d73247b7baf9..c50511dda882 100644 --- a/services/api-server/src/simcore_service_api_server/api/root.py +++ b/services/api-server/src/simcore_service_api_server/api/root.py @@ -6,6 +6,7 @@ from .routes import credits as _credits from .routes import ( files, + functions, health, licensed_items, meta, @@ -44,6 +45,7 @@ def create_router(settings: ApplicationSettings): router.include_router( licensed_items.router, tags=["licensed-items"], prefix="/licensed-items" ) + router.include_router(functions.router, tags=["functions"], prefix="/functions") # NOTE: multiple-files upload is currently disabled # Web form to upload files at http://localhost:8000/v0/upload-form-view diff --git a/services/api-server/src/simcore_service_api_server/api/routes/functions.py b/services/api-server/src/simcore_service_api_server/api/routes/functions.py new file mode 100644 index 000000000000..a04283e8c769 --- /dev/null +++ b/services/api-server/src/simcore_service_api_server/api/routes/functions.py @@ -0,0 +1,16 @@ +from typing import Annotated + +from fastapi import APIRouter, Depends +from simcore_service_api_server.api.dependencies.webserver_rpc import ( + get_wb_api_rpc_client, +) +from simcore_service_api_server.services_rpc.wb_api_server import WbApiRpcClient + +router = APIRouter() + + +@router.post("/ping") +async def ping( + wb_api_rpc: Annotated[WbApiRpcClient, Depends(get_wb_api_rpc_client)], +): + return wb_api_rpc.ping() diff --git a/services/api-server/src/simcore_service_api_server/services_rpc/wb_api_server.py b/services/api-server/src/simcore_service_api_server/services_rpc/wb_api_server.py index 0cee0a7aef18..3781de9e4b77 100644 --- a/services/api-server/src/simcore_service_api_server/services_rpc/wb_api_server.py +++ b/services/api-server/src/simcore_service_api_server/services_rpc/wb_api_server.py @@ -26,6 +26,9 @@ from servicelib.rabbitmq.rpc_interfaces.resource_usage_tracker.errors import ( NotEnoughAvailableSeatsError, ) +from servicelib.rabbitmq.rpc_interfaces.webserver.functions.functions import ( + ping as _ping, +) from servicelib.rabbitmq.rpc_interfaces.webserver.licenses.licensed_items import ( checkout_licensed_item_for_wallet as _checkout_licensed_item_for_wallet, ) @@ -194,6 +197,9 @@ async def release_licensed_item_for_wallet( num_of_seats=licensed_item_checkout_get.num_of_seats, ) + async def ping(self) -> str: + return await _ping(self._client) + def setup(app: FastAPI, rabbitmq_rmp_client: RabbitMQRPCClient): wb_api_rpc_client = WbApiRpcClient(_client=rabbitmq_rmp_client) From 5b1b06badf10152972f87621b4b6d8d2ad29b58c Mon Sep 17 00:00:00 2001 From: Mads Bisgaard Date: Wed, 19 Mar 2025 17:20:21 +0100 Subject: [PATCH 03/13] fix minor issues and manual testing --- .../simcore_service_api_server/api/routes/functions.py | 2 +- .../server/src/simcore_service_webserver/application.py | 8 +++++--- .../functions/_controller_rpc.py | 2 +- .../src/simcore_service_webserver/functions/plugin.py | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/services/api-server/src/simcore_service_api_server/api/routes/functions.py b/services/api-server/src/simcore_service_api_server/api/routes/functions.py index a04283e8c769..b23c43d3c92c 100644 --- a/services/api-server/src/simcore_service_api_server/api/routes/functions.py +++ b/services/api-server/src/simcore_service_api_server/api/routes/functions.py @@ -13,4 +13,4 @@ async def ping( wb_api_rpc: Annotated[WbApiRpcClient, Depends(get_wb_api_rpc_client)], ): - return wb_api_rpc.ping() + return await wb_api_rpc.ping() diff --git a/services/web/server/src/simcore_service_webserver/application.py b/services/web/server/src/simcore_service_webserver/application.py index abb11c29ba16..0519c59a09de 100644 --- a/services/web/server/src/simcore_service_webserver/application.py +++ b/services/web/server/src/simcore_service_webserver/application.py @@ -1,6 +1,4 @@ -""" Main application - -""" +"""Main application""" import logging from pprint import pformat @@ -23,6 +21,7 @@ from .email.plugin import setup_email from .exporter.plugin import setup_exporter from .folders.plugin import setup_folders +from .functions.plugin import setup_functions from .garbage_collector.plugin import setup_garbage_collector from .groups.plugin import setup_groups from .invitations.plugin import setup_invitations @@ -133,6 +132,9 @@ def create_application() -> web.Application: # folders setup_folders(app) + # functions + setup_functions(app) + # projects setup_projects(app) diff --git a/services/web/server/src/simcore_service_webserver/functions/_controller_rpc.py b/services/web/server/src/simcore_service_webserver/functions/_controller_rpc.py index a04d7fd9ebec..76c71d831517 100644 --- a/services/web/server/src/simcore_service_webserver/functions/_controller_rpc.py +++ b/services/web/server/src/simcore_service_webserver/functions/_controller_rpc.py @@ -11,7 +11,7 @@ @router.expose() async def ping(app) -> str: - return "pong" + return "pong from webserver" async def register_rpc_routes_on_startup(app: web.Application): diff --git a/services/web/server/src/simcore_service_webserver/functions/plugin.py b/services/web/server/src/simcore_service_webserver/functions/plugin.py index 9633d537a521..a24257693a12 100644 --- a/services/web/server/src/simcore_service_webserver/functions/plugin.py +++ b/services/web/server/src/simcore_service_webserver/functions/plugin.py @@ -3,5 +3,5 @@ from . import _controller_rpc -def setup(app: web.Application): +def setup_functions(app: web.Application): app.on_startup.append(_controller_rpc.register_rpc_routes_on_startup) From 1a18bf20e1dc8ce520efb04ca7ebdae8195def75 Mon Sep 17 00:00:00 2001 From: Mads Bisgaard Date: Wed, 19 Mar 2025 17:26:44 +0100 Subject: [PATCH 04/13] add __init__ to functions domain --- .../server/src/simcore_service_webserver/functions/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 services/web/server/src/simcore_service_webserver/functions/__init__.py diff --git a/services/web/server/src/simcore_service_webserver/functions/__init__.py b/services/web/server/src/simcore_service_webserver/functions/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 From 5004019b14f389419165f78c08e96f45f18012a0 Mon Sep 17 00:00:00 2001 From: Mads Bisgaard Date: Wed, 19 Mar 2025 17:37:04 +0100 Subject: [PATCH 05/13] added functions section in api --- services/api-server/openapi.json | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/services/api-server/openapi.json b/services/api-server/openapi.json index b7c0befbb470..d034cb225931 100644 --- a/services/api-server/openapi.json +++ b/services/api-server/openapi.json @@ -5848,6 +5848,25 @@ } } } + }, + "/v0/functions/ping": { + "post": { + "tags": [ + "functions" + ], + "summary": "Ping", + "operationId": "ping", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + } + } + } } }, "components": { From a24b9e749999bc357fbbc710f75189509ea40aca Mon Sep 17 00:00:00 2001 From: Mads Bisgaard Date: Wed, 19 Mar 2025 17:43:44 +0100 Subject: [PATCH 06/13] make pylint happy --- .../src/simcore_service_webserver/functions/_controller_rpc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/server/src/simcore_service_webserver/functions/_controller_rpc.py b/services/web/server/src/simcore_service_webserver/functions/_controller_rpc.py index 76c71d831517..9f8688050829 100644 --- a/services/web/server/src/simcore_service_webserver/functions/_controller_rpc.py +++ b/services/web/server/src/simcore_service_webserver/functions/_controller_rpc.py @@ -10,7 +10,7 @@ @router.expose() -async def ping(app) -> str: +async def ping(app) -> str: # pylint: disable=unused-argument return "pong from webserver" From 394587e473b351859d74279df2e083e1ca440a31 Mon Sep 17 00:00:00 2001 From: Mads Bisgaard Date: Thu, 20 Mar 2025 14:17:09 +0100 Subject: [PATCH 07/13] @pcrespov remove ping from oas --- .../src/simcore_service_api_server/api/routes/functions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/api-server/src/simcore_service_api_server/api/routes/functions.py b/services/api-server/src/simcore_service_api_server/api/routes/functions.py index b23c43d3c92c..fd233211cbf8 100644 --- a/services/api-server/src/simcore_service_api_server/api/routes/functions.py +++ b/services/api-server/src/simcore_service_api_server/api/routes/functions.py @@ -9,7 +9,7 @@ router = APIRouter() -@router.post("/ping") +@router.post("/ping", include_in_schema=False) async def ping( wb_api_rpc: Annotated[WbApiRpcClient, Depends(get_wb_api_rpc_client)], ): From cb107a080912615262311a82242aa8a2b4f0d9df Mon Sep 17 00:00:00 2001 From: Mads Bisgaard Date: Thu, 20 Mar 2025 14:18:51 +0100 Subject: [PATCH 08/13] @sanderegg assert input @pcrespov annotate ping function --- .../simcore_service_webserver/functions/_controller_rpc.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/services/web/server/src/simcore_service_webserver/functions/_controller_rpc.py b/services/web/server/src/simcore_service_webserver/functions/_controller_rpc.py index 9f8688050829..0239112d48e3 100644 --- a/services/web/server/src/simcore_service_webserver/functions/_controller_rpc.py +++ b/services/web/server/src/simcore_service_webserver/functions/_controller_rpc.py @@ -1,4 +1,5 @@ from aiohttp import web +from fastapi import FastAPI from models_library.api_schemas_webserver import WEBSERVER_RPC_NAMESPACE from servicelib.rabbitmq import RPCRouter from simcore_service_webserver.rabbitmq import get_rabbitmq_rpc_server @@ -10,7 +11,8 @@ @router.expose() -async def ping(app) -> str: # pylint: disable=unused-argument +async def ping(app: FastAPI) -> str: + assert app return "pong from webserver" From e29dd1b4e323935b760ec76f936696edc091aa15 Mon Sep 17 00:00:00 2001 From: Mads Bisgaard Date: Thu, 20 Mar 2025 14:40:22 +0100 Subject: [PATCH 09/13] fix relative imports --- .../rabbitmq/rpc_interfaces/webserver/functions/functions.py | 5 +++-- .../src/simcore_service_api_server/api/routes/functions.py | 5 +++-- .../simcore_service_webserver/functions/_controller_rpc.py | 3 ++- .../src/simcore_service_webserver/functions/_service.py | 5 ++--- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/service-library/src/servicelib/rabbitmq/rpc_interfaces/webserver/functions/functions.py b/packages/service-library/src/servicelib/rabbitmq/rpc_interfaces/webserver/functions/functions.py index 878490e01c7d..d53adfafa664 100644 --- a/packages/service-library/src/servicelib/rabbitmq/rpc_interfaces/webserver/functions/functions.py +++ b/packages/service-library/src/servicelib/rabbitmq/rpc_interfaces/webserver/functions/functions.py @@ -3,8 +3,9 @@ from models_library.api_schemas_webserver import WEBSERVER_RPC_NAMESPACE from models_library.rabbitmq_basic_types import RPCMethodName from pydantic import TypeAdapter -from servicelib.logging_utils import log_decorator -from servicelib.rabbitmq import RabbitMQRPCClient + +from .....logging_utils import log_decorator +from .....rabbitmq import RabbitMQRPCClient _logger = logging.getLogger(__name__) diff --git a/services/api-server/src/simcore_service_api_server/api/routes/functions.py b/services/api-server/src/simcore_service_api_server/api/routes/functions.py index fd233211cbf8..6d5c277451db 100644 --- a/services/api-server/src/simcore_service_api_server/api/routes/functions.py +++ b/services/api-server/src/simcore_service_api_server/api/routes/functions.py @@ -1,10 +1,11 @@ from typing import Annotated from fastapi import APIRouter, Depends -from simcore_service_api_server.api.dependencies.webserver_rpc import ( + +from ...services_rpc.wb_api_server import WbApiRpcClient +from ..dependencies.webserver_rpc import ( get_wb_api_rpc_client, ) -from simcore_service_api_server.services_rpc.wb_api_server import WbApiRpcClient router = APIRouter() diff --git a/services/web/server/src/simcore_service_webserver/functions/_controller_rpc.py b/services/web/server/src/simcore_service_webserver/functions/_controller_rpc.py index 0239112d48e3..cc03b34a0214 100644 --- a/services/web/server/src/simcore_service_webserver/functions/_controller_rpc.py +++ b/services/web/server/src/simcore_service_webserver/functions/_controller_rpc.py @@ -2,7 +2,8 @@ from fastapi import FastAPI from models_library.api_schemas_webserver import WEBSERVER_RPC_NAMESPACE from servicelib.rabbitmq import RPCRouter -from simcore_service_webserver.rabbitmq import get_rabbitmq_rpc_server + +from ..rabbitmq import get_rabbitmq_rpc_server # this is the rpc interface exposed to the api-server # this interface should call the service layer diff --git a/services/web/server/src/simcore_service_webserver/functions/_service.py b/services/web/server/src/simcore_service_webserver/functions/_service.py index 56a760d6edcc..899b0b1c6811 100644 --- a/services/web/server/src/simcore_service_webserver/functions/_service.py +++ b/services/web/server/src/simcore_service_webserver/functions/_service.py @@ -4,9 +4,9 @@ from aiohttp import web from models_library.users import UserID -from simcore_service_webserver.projects.models import ProjectDict from ..projects import projects_service +from ..projects.models import ProjectDict # example function @@ -16,7 +16,6 @@ async def get_project_from_function( user_id: UserID, ) -> ProjectDict: - project = await projects_service.get_project_for_user( + return await projects_service.get_project_for_user( app=app, project_uuid=function_uuid, user_id=user_id ) - return project From 5d277a9a9220b01ec0127095fa1e9f6e975a232e Mon Sep 17 00:00:00 2001 From: Mads Bisgaard Date: Thu, 20 Mar 2025 14:49:29 +0100 Subject: [PATCH 10/13] regenerate oas --- services/api-server/openapi.json | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/services/api-server/openapi.json b/services/api-server/openapi.json index d034cb225931..b7c0befbb470 100644 --- a/services/api-server/openapi.json +++ b/services/api-server/openapi.json @@ -5848,25 +5848,6 @@ } } } - }, - "/v0/functions/ping": { - "post": { - "tags": [ - "functions" - ], - "summary": "Ping", - "operationId": "ping", - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": {} - } - } - } - } - } } }, "components": { From f1050a150cd06ec180f3b1400d7e9dfc504502d6 Mon Sep 17 00:00:00 2001 From: Mads Bisgaard Date: Fri, 21 Mar 2025 13:48:35 +0100 Subject: [PATCH 11/13] add module decorator and app_setting --- services/docker-compose.devel.yml | 1 + services/docker-compose.local.yml | 1 + .../simcore_service_webserver/application_settings.py | 8 ++++++++ .../functions/_controller_rpc.py | 3 +-- .../src/simcore_service_webserver/functions/plugin.py | 11 +++++++++++ 5 files changed, 22 insertions(+), 2 deletions(-) diff --git a/services/docker-compose.devel.yml b/services/docker-compose.devel.yml index 84a10a799304..2fec72dcdbf3 100644 --- a/services/docker-compose.devel.yml +++ b/services/docker-compose.devel.yml @@ -128,6 +128,7 @@ services: WEBSERVER_LOGLEVEL: DEBUG WEBSERVER_PROFILING: ${WEBSERVER_PROFILING} WEBSERVER_REMOTE_DEBUGGING_PORT: 3000 + WEBSERVER_FUNCTIONS: ${WEBSERVER_FUNCTIONS} wb-api-server: diff --git a/services/docker-compose.local.yml b/services/docker-compose.local.yml index 12a2abd44c6b..97fb82732dc0 100644 --- a/services/docker-compose.local.yml +++ b/services/docker-compose.local.yml @@ -136,6 +136,7 @@ services: webserver: environment: &webserver_environment_local <<: *common_environment + WEBSERVER_FUNCTIONS: ${WEBSERVER_FUNCTIONS} ports: - "8080" - "3001:3000" diff --git a/services/web/server/src/simcore_service_webserver/application_settings.py b/services/web/server/src/simcore_service_webserver/application_settings.py index d1916698b397..38eb7f9fb0ab 100644 --- a/services/web/server/src/simcore_service_webserver/application_settings.py +++ b/services/web/server/src/simcore_service_webserver/application_settings.py @@ -105,6 +105,14 @@ class ApplicationSettings(BaseApplicationSettings, MixinLoggingSettings): bool, Field(description="Enables credit computation features.") ] = False + WEBSERVER_FUNCTIONS: Annotated[ + bool, + Field( + validation_alias=AliasChoices("WEBSERVER_FUNCTIONS"), + json_schema_extra={_X_DEV_FEATURE_FLAG: True}, + ), + ] = False + WEBSERVER_LOGLEVEL: Annotated[ LogLevel, Field( diff --git a/services/web/server/src/simcore_service_webserver/functions/_controller_rpc.py b/services/web/server/src/simcore_service_webserver/functions/_controller_rpc.py index cc03b34a0214..483fcdc26e33 100644 --- a/services/web/server/src/simcore_service_webserver/functions/_controller_rpc.py +++ b/services/web/server/src/simcore_service_webserver/functions/_controller_rpc.py @@ -1,5 +1,4 @@ from aiohttp import web -from fastapi import FastAPI from models_library.api_schemas_webserver import WEBSERVER_RPC_NAMESPACE from servicelib.rabbitmq import RPCRouter @@ -12,7 +11,7 @@ @router.expose() -async def ping(app: FastAPI) -> str: +async def ping(app: web.Application) -> str: assert app return "pong from webserver" diff --git a/services/web/server/src/simcore_service_webserver/functions/plugin.py b/services/web/server/src/simcore_service_webserver/functions/plugin.py index a24257693a12..364436f4898c 100644 --- a/services/web/server/src/simcore_service_webserver/functions/plugin.py +++ b/services/web/server/src/simcore_service_webserver/functions/plugin.py @@ -1,7 +1,18 @@ +import logging + from aiohttp import web +from servicelib.aiohttp.application_setup import ModuleCategory, app_module_setup from . import _controller_rpc +_logger = logging.getLogger(__name__) + +@app_module_setup( + __name__, + ModuleCategory.ADDON, + settings_name="WEBSERVER_FUNCTIONS", + logger=_logger, +) def setup_functions(app: web.Application): app.on_startup.append(_controller_rpc.register_rpc_routes_on_startup) From d066273ae853f0631d07c57593ed54da922c055e Mon Sep 17 00:00:00 2001 From: Mads Bisgaard Date: Fri, 28 Mar 2025 10:18:24 +0100 Subject: [PATCH 12/13] fix import --- .../src/simcore_service_webserver/functions/_service.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/web/server/src/simcore_service_webserver/functions/_service.py b/services/web/server/src/simcore_service_webserver/functions/_service.py index 899b0b1c6811..2c967d7c8418 100644 --- a/services/web/server/src/simcore_service_webserver/functions/_service.py +++ b/services/web/server/src/simcore_service_webserver/functions/_service.py @@ -5,7 +5,7 @@ from aiohttp import web from models_library.users import UserID -from ..projects import projects_service +from ..projects import _projects_service from ..projects.models import ProjectDict @@ -16,6 +16,6 @@ async def get_project_from_function( user_id: UserID, ) -> ProjectDict: - return await projects_service.get_project_for_user( + return await _projects_service.get_project_for_user( app=app, project_uuid=function_uuid, user_id=user_id ) From df7b5d878ec9886ec21dfe239330aed371dcd62f Mon Sep 17 00:00:00 2001 From: Mads Bisgaard Date: Fri, 28 Mar 2025 10:20:23 +0100 Subject: [PATCH 13/13] update openapi specs --- services/storage/openapi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/storage/openapi.json b/services/storage/openapi.json index b9a9e0021df2..d79f5cf76bd4 100644 --- a/services/storage/openapi.json +++ b/services/storage/openapi.json @@ -3,7 +3,7 @@ "info": { "title": "simcore_service_storage", "description": "Service that manages osparc storage backend", - "version": "0.6.0" + "version": "0.7.0" }, "paths": { "/v0/": {