Skip to content

Commit 4cb9f88

Browse files
committed
✨ Update WEBSERVER_RPC_NAMESPACE usage and improve settings documentation
1 parent fe78463 commit 4cb9f88

File tree

7 files changed

+29
-14
lines changed

7 files changed

+29
-14
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@
55
from ..rabbitmq_basic_types import RPCNamespace
66

77
WEBSERVER_RPC_NAMESPACE: Final[RPCNamespace] = TypeAdapter(
8+
# NOTE: deprecated! Use app.state.settings.WEBSERVER_RPC_NAMESPACE
89
RPCNamespace
910
).validate_python("webserver")

packages/service-library/src/servicelib/rabbitmq/rpc_interfaces/webserver/v1/client.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
"""Main WebServer RPC Client."""
22

33
from models_library.rabbitmq_basic_types import RPCNamespace
4-
from models_library.rpc.webserver import WEBSERVER_RPC_NAMESPACE
54
from servicelib.rabbitmq import RabbitMQRPCClient
65

76
from .api_keys import ApiKeysRpcApi
@@ -16,7 +15,7 @@ class WebServerRpcClient:
1615
def __init__(
1716
self,
1817
rpc_client: RabbitMQRPCClient,
19-
namespace: RPCNamespace = WEBSERVER_RPC_NAMESPACE,
18+
namespace: RPCNamespace,
2019
):
2120
self._rpc_client = rpc_client
2221
self._namespace = namespace

services/api-server/.env-devel

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,9 @@ RABBIT_PORT=5672
3535
RABBIT_SECURE=false
3636
RABBIT_USER=admin
3737

38-
# webserver
39-
WEBSERVER_HOST=webserver
38+
# webserver (WB_API_WEBSERVER_HOST)
39+
WEBSERVER_HOST=wb-api-server
40+
WEBSERVER_RPC_NAMESPACE=wb-api-server
4041
# Take from general .env-devel
4142
WEBSERVER_SESSION_SECRET_KEY='REPLACE_ME_with_result__Fernet_generate_key='
4243

services/api-server/src/simcore_service_api_server/core/settings.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from common_library.basic_types import DEFAULT_FACTORY
55
from common_library.logging.logging_utils_filtering import LoggerName, MessageSubstring
66
from models_library.basic_types import BootModeEnum, LogLevel
7+
from models_library.rabbitmq_basic_types import RPCNamespace
78
from pydantic import (
89
AliasChoices,
910
Field,
@@ -41,6 +42,11 @@ class WebServerSettings(WebServerBaseSettings, MixinSessionSettings):
4142
]
4243
WEBSERVER_SESSION_NAME: str = DEFAULT_SESSION_COOKIE_NAME
4344

45+
WEBSERVER_RPC_NAMESPACE: Annotated[
46+
RPCNamespace,
47+
Field(description="Namespace for the RPC server"),
48+
]
49+
4450
@field_validator("WEBSERVER_SESSION_SECRET_KEY")
4551
@classmethod
4652
def _check_valid_fernet_key(cls, v):

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

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@
6565
from servicelib.rabbitmq.rpc_interfaces.resource_usage_tracker.errors import (
6666
NotEnoughAvailableSeatsError,
6767
)
68-
from servicelib.rabbitmq.rpc_interfaces.webserver import projects as projects_rpc
6968
from servicelib.rabbitmq.rpc_interfaces.webserver.errors import (
7069
ProjectForbiddenRpcError,
7170
ProjectNotFoundRpcError,
@@ -85,10 +84,13 @@
8584
from servicelib.rabbitmq.rpc_interfaces.webserver.licenses.licensed_items import (
8685
release_licensed_item_for_wallet as _release_licensed_item_for_wallet,
8786
)
87+
from servicelib.rabbitmq.rpc_interfaces.webserver.v1 import WebServerRpcClient
8888
from simcore_service_api_server.models.basic_types import NameValueTuple
8989

90+
from ..core.settings import WebServerSettings
9091
from ..exceptions.backend_errors import (
9192
CanNotCheckoutServiceIsNotRunningError,
93+
ConfigurationError,
9294
InsufficientNumberOfSeatsError,
9395
JobForbiddenAccessError,
9496
JobNotFoundError,
@@ -138,6 +140,7 @@ def _create_licensed_items_get_page(
138140
class WbApiRpcClient(SingletonInAppStateMixin):
139141
app_state_name = "wb_api_rpc_client"
140142
_client: RabbitMQRPCClient
143+
_rpc_client: WebServerRpcClient
141144

142145
@_exception_mapper(rpc_exception_map={})
143146
async def get_licensed_items(
@@ -253,8 +256,7 @@ async def mark_project_as_job(
253256
job_parent_resource_name: RelativeResourceName,
254257
storage_assets_deleted: bool, # noqa: FBT001
255258
):
256-
await projects_rpc.mark_project_as_job(
257-
rpc_client=self._client,
259+
await self._rpc_client.projects.mark_project_as_job(
258260
product_name=product_name,
259261
user_id=user_id,
260262
project_uuid=project_uuid,
@@ -276,8 +278,7 @@ async def get_project_marked_as_job(
276278
project_id: ProjectID,
277279
job_parent_resource_name: RelativeResourceName,
278280
) -> ProjectJobRpcGet:
279-
return await projects_rpc.get_project_marked_as_job(
280-
rpc_client=self._client,
281+
return await self._rpc_client.projects.get_project_marked_as_job(
281282
product_name=product_name,
282283
user_id=user_id,
283284
project_uuid=project_id,
@@ -310,8 +311,7 @@ async def list_projects_marked_as_jobs(
310311
),
311312
)
312313

313-
return await projects_rpc.list_projects_marked_as_jobs(
314-
rpc_client=self._client,
314+
return await self._rpc_client.projects.list_projects_marked_as_jobs(
315315
product_name=product_name,
316316
user_id=user_id,
317317
filters=filters,
@@ -702,5 +702,14 @@ async def get_functions_user_api_access_rights(
702702

703703

704704
def setup(app: FastAPI, rabbitmq_rmp_client: RabbitMQRPCClient):
705-
wb_api_rpc_client = WbApiRpcClient(_client=rabbitmq_rmp_client)
705+
webserver_settings: WebServerSettings = app.state.settings.API_SERVER_WEBSERVER
706+
if not webserver_settings:
707+
raise ConfigurationError(tip="Webserver settings are not configured")
708+
709+
wb_api_rpc_client = WbApiRpcClient(
710+
_client=rabbitmq_rmp_client,
711+
_rpc_client=WebServerRpcClient(
712+
rabbitmq_rmp_client, webserver_settings.WEBSERVER_RPC_NAMESPACE
713+
),
714+
)
706715
wb_api_rpc_client.set_to_app_state(app=app)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ class ApplicationSettings(BaseApplicationSettings, MixinLoggingSettings):
157157

158158
WEBSERVER_RPC_NAMESPACE: Annotated[
159159
RPCNamespace | None,
160-
Field(description="Namespace for the RPC service, if any, otherwise None"),
160+
Field(description="Namespace for the RPC server (if any) otherwise None"),
161161
]
162162

163163
WEBSERVER_SERVER_HOST: Annotated[

services/web/server/src/simcore_service_webserver/projects/_controller/projects_rpc.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
ProjectForbiddenRpcError,
1515
ProjectNotFoundRpcError,
1616
)
17-
from simcore_service_storage.core.settings import get_application_settings
1817

1918
from ...application_settings import get_application_settings
2019
from ...rabbitmq import get_rabbitmq_rpc_server

0 commit comments

Comments
 (0)