Skip to content

Commit 45a8b63

Browse files
Add example functions section to api-server (#7398)
1 parent c9296d7 commit 45a8b63

File tree

15 files changed

+124
-1
lines changed

15 files changed

+124
-1
lines changed

packages/service-library/src/servicelib/rabbitmq/rpc_interfaces/webserver/functions/__init__.py

Whitespace-only changes.
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import logging
2+
3+
from models_library.api_schemas_webserver import WEBSERVER_RPC_NAMESPACE
4+
from models_library.rabbitmq_basic_types import RPCMethodName
5+
from pydantic import TypeAdapter
6+
7+
from .....logging_utils import log_decorator
8+
from .....rabbitmq import RabbitMQRPCClient
9+
10+
_logger = logging.getLogger(__name__)
11+
12+
13+
@log_decorator(_logger, level=logging.DEBUG)
14+
async def ping(
15+
rabbitmq_rpc_client: RabbitMQRPCClient,
16+
) -> str:
17+
result = await rabbitmq_rpc_client.request(
18+
WEBSERVER_RPC_NAMESPACE,
19+
TypeAdapter(RPCMethodName).validate_python("ping"),
20+
)
21+
assert isinstance(result, str) # nosec
22+
return result

services/api-server/src/simcore_service_api_server/api/root.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from .routes import credits as _credits
77
from .routes import (
88
files,
9+
functions,
910
health,
1011
licensed_items,
1112
meta,
@@ -44,6 +45,7 @@ def create_router(settings: ApplicationSettings):
4445
router.include_router(
4546
licensed_items.router, tags=["licensed-items"], prefix="/licensed-items"
4647
)
48+
router.include_router(functions.router, tags=["functions"], prefix="/functions")
4749

4850
# NOTE: multiple-files upload is currently disabled
4951
# Web form to upload files at http://localhost:8000/v0/upload-form-view
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
from typing import Annotated
2+
3+
from fastapi import APIRouter, Depends
4+
5+
from ...services_rpc.wb_api_server import WbApiRpcClient
6+
from ..dependencies.webserver_rpc import (
7+
get_wb_api_rpc_client,
8+
)
9+
10+
router = APIRouter()
11+
12+
13+
@router.post("/ping", include_in_schema=False)
14+
async def ping(
15+
wb_api_rpc: Annotated[WbApiRpcClient, Depends(get_wb_api_rpc_client)],
16+
):
17+
return await wb_api_rpc.ping()

services/api-server/src/simcore_service_api_server/services_rpc/wb_api_server.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@
2626
from servicelib.rabbitmq.rpc_interfaces.resource_usage_tracker.errors import (
2727
NotEnoughAvailableSeatsError,
2828
)
29+
from servicelib.rabbitmq.rpc_interfaces.webserver.functions.functions import (
30+
ping as _ping,
31+
)
2932
from servicelib.rabbitmq.rpc_interfaces.webserver.licenses.licensed_items import (
3033
checkout_licensed_item_for_wallet as _checkout_licensed_item_for_wallet,
3134
)
@@ -194,6 +197,9 @@ async def release_licensed_item_for_wallet(
194197
num_of_seats=licensed_item_checkout_get.num_of_seats,
195198
)
196199

200+
async def ping(self) -> str:
201+
return await _ping(self._client)
202+
197203

198204
def setup(app: FastAPI, rabbitmq_rmp_client: RabbitMQRPCClient):
199205
wb_api_rpc_client = WbApiRpcClient(_client=rabbitmq_rmp_client)

services/docker-compose.devel.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ services:
140140
WEBSERVER_LOGLEVEL: DEBUG
141141
WEBSERVER_PROFILING: ${WEBSERVER_PROFILING}
142142
WEBSERVER_REMOTE_DEBUGGING_PORT: 3000
143+
WEBSERVER_FUNCTIONS: ${WEBSERVER_FUNCTIONS}
143144

144145

145146
wb-api-server:

services/docker-compose.local.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ services:
136136
webserver:
137137
environment: &webserver_environment_local
138138
<<: *common_environment
139+
WEBSERVER_FUNCTIONS: ${WEBSERVER_FUNCTIONS}
139140
ports:
140141
- "8080"
141142
- "3001:3000"

services/storage/openapi.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"info": {
44
"title": "simcore_service_storage",
55
"description": "Service that manages osparc storage backend",
6-
"version": "0.6.0"
6+
"version": "0.7.0"
77
},
88
"paths": {
99
"/v0/": {

services/web/server/src/simcore_service_webserver/application.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
from .email.plugin import setup_email
2323
from .exporter.plugin import setup_exporter
2424
from .folders.plugin import setup_folders
25+
from .functions.plugin import setup_functions
2526
from .garbage_collector.plugin import setup_garbage_collector
2627
from .groups.plugin import setup_groups
2728
from .invitations.plugin import setup_invitations
@@ -133,6 +134,9 @@ def create_application() -> web.Application:
133134
# folders
134135
setup_folders(app)
135136

137+
# functions
138+
setup_functions(app)
139+
136140
# projects
137141
setup_projects(app)
138142

services/web/server/src/simcore_service_webserver/application_settings.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,14 @@ class ApplicationSettings(BaseApplicationSettings, MixinLoggingSettings):
105105
bool, Field(description="Enables credit computation features.")
106106
] = False
107107

108+
WEBSERVER_FUNCTIONS: Annotated[
109+
bool,
110+
Field(
111+
validation_alias=AliasChoices("WEBSERVER_FUNCTIONS"),
112+
json_schema_extra={_X_DEV_FEATURE_FLAG: True},
113+
),
114+
] = False
115+
108116
WEBSERVER_LOGLEVEL: Annotated[
109117
LogLevel,
110118
Field(

0 commit comments

Comments
 (0)