Skip to content

Commit a1d35f3

Browse files
committed
cleanup api-server implementation
1 parent 5c81e4a commit a1d35f3

File tree

7 files changed

+49
-22
lines changed

7 files changed

+49
-22
lines changed

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

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -82,22 +82,36 @@ def init_app(settings: ApplicationSettings | None = None) -> FastAPI:
8282

8383
setup_rabbitmq(app)
8484

85-
add_tracing = False
86-
if app.state.settings.API_SERVER_TRACING:
87-
add_tracing = True
88-
setup_tracing(app, app.state.settings.API_SERVER_TRACING, APP_NAME)
85+
if settings.API_SERVER_TRACING:
86+
setup_tracing(app, settings.API_SERVER_TRACING, APP_NAME)
8987

9088
if settings.API_SERVER_WEBSERVER:
91-
webserver.setup(app, settings.API_SERVER_WEBSERVER, add_tracing=add_tracing)
89+
webserver.setup(
90+
app,
91+
settings.API_SERVER_WEBSERVER,
92+
tracing_settings=settings.API_SERVER_TRACING,
93+
)
9294

9395
if settings.API_SERVER_CATALOG:
94-
catalog.setup(app, settings.API_SERVER_CATALOG, add_tracing=add_tracing)
96+
catalog.setup(
97+
app,
98+
settings.API_SERVER_CATALOG,
99+
tracing_settings=settings.API_SERVER_TRACING,
100+
)
95101

96102
if settings.API_SERVER_STORAGE:
97-
storage.setup(app, settings.API_SERVER_STORAGE, add_tracing=add_tracing)
103+
storage.setup(
104+
app,
105+
settings.API_SERVER_STORAGE,
106+
tracing_settings=settings.API_SERVER_TRACING,
107+
)
98108

99109
if settings.API_SERVER_DIRECTOR_V2:
100-
director_v2.setup(app, settings.API_SERVER_DIRECTOR_V2, add_tracing=add_tracing)
110+
director_v2.setup(
111+
app,
112+
settings.API_SERVER_DIRECTOR_V2,
113+
tracing_settings=settings.API_SERVER_TRACING,
114+
)
101115

102116
# setup app
103117
app.add_event_handler("startup", create_start_app_handler(app))

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from models_library.services import ServiceMetaDataPublished, ServiceType
1212
from pydantic import Extra, ValidationError, parse_obj_as, parse_raw_as
1313
from settings_library.catalog import CatalogSettings
14+
from settings_library.tracing import TracingSettings
1415
from simcore_service_api_server.exceptions.backend_errors import (
1516
ListSolversOrStudiesError,
1617
SolverOrStudyNotFoundError,
@@ -209,7 +210,9 @@ async def get_latest_release(
209210
# MODULES APP SETUP -------------------------------------------------------------
210211

211212

212-
def setup(app: FastAPI, settings: CatalogSettings, add_tracing: bool = False) -> None:
213+
def setup(
214+
app: FastAPI, settings: CatalogSettings, tracing_settings: TracingSettings | None
215+
) -> None:
213216
if not settings:
214217
settings = CatalogSettings()
215218

@@ -218,5 +221,5 @@ def setup(app: FastAPI, settings: CatalogSettings, add_tracing: bool = False) ->
218221
CatalogApi,
219222
api_baseurl=settings.api_base_url,
220223
service_name="catalog",
221-
add_tracing=add_tracing,
224+
tracing_settings=tracing_settings,
222225
)

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from models_library.projects_pipeline import ComputationTask
1010
from models_library.projects_state import RunningState
1111
from pydantic import AnyHttpUrl, AnyUrl, BaseModel, Field, PositiveInt, parse_raw_as
12+
from settings_library.tracing import TracingSettings
1213
from simcore_service_api_server.exceptions.backend_errors import (
1314
JobNotFoundError,
1415
LogFileNotFoundError,
@@ -192,13 +193,13 @@ async def get_computation_logs(
192193

193194

194195
def setup(
195-
app: FastAPI, settings: DirectorV2Settings, add_tracing: bool = False
196+
app: FastAPI, settings: DirectorV2Settings, tracing_settings: TracingSettings | None
196197
) -> None:
197198
setup_client_instance(
198199
app,
199200
DirectorV2Api,
200201
# WARNING: it has /v0 and /v2 prefixes
201202
api_baseurl=settings.base_url,
202203
service_name="director_v2",
203-
add_tracing=add_tracing,
204+
tracing_settings=tracing_settings,
204205
)

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from models_library.basic_types import SHA256Str
1515
from models_library.generics import Envelope
1616
from pydantic import AnyUrl, PositiveInt
17+
from settings_library.tracing import TracingSettings
1718
from starlette.datastructures import URL
1819

1920
from ..core.settings import StorageSettings
@@ -209,7 +210,9 @@ async def create_soft_link(
209210
# MODULES APP SETUP -------------------------------------------------------------
210211

211212

212-
def setup(app: FastAPI, settings: StorageSettings, add_tracing: bool = False) -> None:
213+
def setup(
214+
app: FastAPI, settings: StorageSettings, tracing_settings: TracingSettings | None
215+
) -> None:
213216
if not settings:
214217
settings = StorageSettings()
215218

@@ -218,7 +221,7 @@ def setup(app: FastAPI, settings: StorageSettings, add_tracing: bool = False) ->
218221
StorageApi,
219222
api_baseurl=settings.api_base_url,
220223
service_name="storage",
221-
add_tracing=add_tracing,
224+
tracing_settings=tracing_settings,
222225
)
223226

224227

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

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
X_SIMCORE_PARENT_NODE_ID,
4949
X_SIMCORE_PARENT_PROJECT_UUID,
5050
)
51+
from settings_library.tracing import TracingSettings
5152
from simcore_service_api_server.exceptions.backend_errors import (
5253
ConfigurationError,
5354
ForbiddenWalletError,
@@ -588,26 +589,30 @@ async def get_service_pricing_plan(
588589
# MODULES APP SETUP -------------------------------------------------------------
589590

590591

591-
def setup(app: FastAPI, settings: WebServerSettings, add_tracing: bool = False) -> None:
592+
def setup(
593+
app: FastAPI,
594+
webserver_settings: WebServerSettings,
595+
tracing_settings: TracingSettings | None,
596+
) -> None:
592597

593598
setup_client_instance(
594599
app,
595600
WebserverApi,
596-
api_baseurl=settings.api_base_url,
601+
api_baseurl=webserver_settings.api_base_url,
597602
service_name="webserver",
598-
add_tracing=add_tracing,
603+
tracing_settings=tracing_settings,
599604
)
600605
setup_client_instance(
601606
app,
602607
LongRunningTasksClient,
603608
api_baseurl="",
604609
service_name="long_running_tasks_client",
605-
add_tracing=add_tracing,
610+
tracing_settings=tracing_settings,
606611
)
607612

608613
def _on_startup() -> None:
609614
# normalize & encrypt
610-
secret_key = settings.WEBSERVER_SESSION_SECRET_KEY.get_secret_value()
615+
secret_key = webserver_settings.WEBSERVER_SESSION_SECRET_KEY.get_secret_value()
611616
app.state.webserver_fernet = fernet.Fernet(secret_key)
612617

613618
async def _on_shutdown() -> None:

services/api-server/src/simcore_service_api_server/utils/client_base.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from fastapi import FastAPI
66
from httpx import AsyncClient
77
from servicelib.fastapi.tracing import setup_httpx_client_tracing
8+
from settings_library.tracing import TracingSettings
89

910
from .app_data import AppDataMixin
1011

@@ -44,16 +45,15 @@ def setup_client_instance(
4445
api_cls: type[BaseServiceClientApi],
4546
api_baseurl,
4647
service_name: str,
47-
add_tracing: bool = False,
48+
tracing_settings: TracingSettings | None,
4849
**extra_fields,
4950
) -> None:
5051
"""Helper to add init/cleanup of ServiceClientApi instances in the app lifespam"""
5152

5253
assert issubclass(api_cls, BaseServiceClientApi) # nosec
53-
5454
# NOTE: this term is mocked in tests. If you need to modify pay attention to the mock
5555
client = AsyncClient(base_url=api_baseurl)
56-
if add_tracing:
56+
if tracing_settings:
5757
setup_httpx_client_tracing(client)
5858

5959
# events

services/api-server/tests/unit/test_utils_client_base.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ class TheClientApi(BaseServiceClientApi):
4343
service_name="the_service",
4444
health_check_path="/health",
4545
x=42,
46+
tracing_settings=None,
4647
)
4748
assert not TheClientApi.get_instance(app)
4849

0 commit comments

Comments
 (0)