Skip to content

Commit 5bd6811

Browse files
author
Andrei Neagu
committed
removed get_lifespan_remote_docker_client
1 parent ed2d206 commit 5bd6811

File tree

4 files changed

+31
-68
lines changed

4 files changed

+31
-68
lines changed

packages/service-library/src/servicelib/fastapi/docker.py

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -11,53 +11,13 @@
1111
from fastapi import FastAPI
1212
from fastapi_lifespan_manager import State
1313
from pydantic import NonNegativeInt
14-
from servicelib.fastapi.lifespan_utils import LifespanGenerator
1514
from settings_library.docker_api_proxy import DockerApiProxysettings
1615

1716
_logger = logging.getLogger(__name__)
1817

1918
_DEFAULT_DOCKER_API_PROXY_HEALTH_TIMEOUT: Final[NonNegativeInt] = 5
2019

2120

22-
def get_lifespan_remote_docker_client(
23-
settings: DockerApiProxysettings,
24-
) -> LifespanGenerator:
25-
async def _(app: FastAPI) -> AsyncIterator[State]:
26-
27-
session: ClientSession | None = None
28-
if settings.DOCKER_API_PROXY_USER and settings.DOCKER_API_PROXY_PASSWORD:
29-
session = ClientSession(
30-
auth=aiohttp.BasicAuth(
31-
login=settings.DOCKER_API_PROXY_USER,
32-
password=settings.DOCKER_API_PROXY_PASSWORD.get_secret_value(),
33-
)
34-
)
35-
36-
async with AsyncExitStack() as exit_stack:
37-
if settings.DOCKER_API_PROXY_USER and settings.DOCKER_API_PROXY_PASSWORD:
38-
await exit_stack.enter_async_context(
39-
ClientSession(
40-
auth=aiohttp.BasicAuth(
41-
login=settings.DOCKER_API_PROXY_USER,
42-
password=settings.DOCKER_API_PROXY_PASSWORD.get_secret_value(),
43-
)
44-
)
45-
)
46-
47-
client = await exit_stack.enter_async_context(
48-
aiodocker.Docker(url=settings.base_url, session=session)
49-
)
50-
51-
app.state.remote_docker_client = client
52-
53-
await wait_till_docker_api_proxy_is_responsive(app)
54-
55-
# NOTE this has to be inside exit_stack scope
56-
yield {}
57-
58-
return _
59-
60-
6121
_DOCKER_API_PROXY_SETTINGS: Final[str] = "docker_api_proxy_settings"
6222

6323

packages/service-library/src/servicelib/fastapi/lifespan_utils.py

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
from common_library.errors_classes import OsparcErrorMixin
55
from fastapi import FastAPI
6-
from fastapi_lifespan_manager import LifespanManager, State
6+
from fastapi_lifespan_manager import State
77

88

99
class LifespanError(OsparcErrorMixin, RuntimeError): ...
@@ -19,13 +19,3 @@ class LifespanOnShutdownError(LifespanError):
1919

2020
class LifespanGenerator(Protocol):
2121
def __call__(self, app: FastAPI) -> AsyncIterator["State"]: ...
22-
23-
24-
def combine_lifespans(*generators: LifespanGenerator) -> LifespanManager:
25-
26-
manager = LifespanManager()
27-
28-
for generator in generators:
29-
manager.add(generator)
30-
31-
return manager

packages/service-library/tests/fastapi/test_lifespan_utils.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
from servicelib.fastapi.lifespan_utils import (
1919
LifespanOnShutdownError,
2020
LifespanOnStartupError,
21-
combine_lifespans,
2221
)
2322

2423

@@ -35,7 +34,11 @@ async def cache_lifespan(app: FastAPI) -> AsyncIterator[State]:
3534
yield {}
3635
print("shutdown CACHE")
3736

38-
app = FastAPI(lifespan=combine_lifespans(database_lifespan, cache_lifespan))
37+
lifespan_manager = LifespanManager()
38+
lifespan_manager.add(database_lifespan)
39+
lifespan_manager.add(cache_lifespan)
40+
41+
app = FastAPI(lifespan=lifespan_manager)
3942

4043
capsys.readouterr()
4144

services/docker-api-proxy/tests/integration/conftest.py

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,16 @@
66

77
import aiodocker
88
import pytest
9-
from asgi_lifespan import LifespanManager
9+
from asgi_lifespan import LifespanManager as ASGILifespanManager
1010
from fastapi import FastAPI
11+
from fastapi_lifespan_manager import LifespanManager, State
1112
from pydantic import Field
1213
from pytest_simcore.helpers.monkeypatch_envs import EnvVarsDict, setenvs_from_dict
1314
from servicelib.fastapi.docker import (
14-
get_lifespan_remote_docker_client,
1515
get_remote_docker_client,
16+
get_remote_docker_client_main_lifespan,
17+
lifespan_remote_docker_client,
1618
)
17-
from servicelib.fastapi.lifespan_utils import combine_lifespans
1819
from settings_library.application import BaseApplicationSettings
1920
from settings_library.docker_api_proxy import DockerApiProxysettings
2021

@@ -32,20 +33,29 @@ def pytest_configure(config):
3233
config.option.asyncio_mode = "auto"
3334

3435

35-
def _get_test_app() -> FastAPI:
36-
class ApplicationSetting(BaseApplicationSettings):
37-
DOCKER_API_PROXY: Annotated[
38-
DockerApiProxysettings,
39-
Field(json_schema_extra={"auto_default_from_env": True}),
40-
]
36+
class ApplicationSetting(BaseApplicationSettings):
37+
DOCKER_API_PROXY: Annotated[
38+
DockerApiProxysettings,
39+
Field(json_schema_extra={"auto_default_from_env": True}),
40+
]
41+
42+
43+
async def _main_lifespan(app: FastAPI) -> AsyncIterator[State]:
44+
settings: ApplicationSetting = app.state.settings
45+
46+
yield {
47+
**get_remote_docker_client_main_lifespan(settings.DOCKER_API_PROXY),
48+
}
4149

50+
51+
def _get_test_app() -> FastAPI:
4252
settings = ApplicationSetting.create_from_envs()
4353

44-
app = FastAPI(
45-
lifespan=combine_lifespans(
46-
get_lifespan_remote_docker_client(settings.DOCKER_API_PROXY)
47-
)
48-
)
54+
lifespan_manager = LifespanManager()
55+
lifespan_manager.add(_main_lifespan)
56+
lifespan_manager.add(lifespan_remote_docker_client)
57+
58+
app = FastAPI(lifespan=lifespan_manager)
4959
app.state.settings = settings
5060

5161
return app
@@ -61,7 +71,7 @@ async def _(env_vars: EnvVarsDict) -> AsyncIterator[aiodocker.Docker]:
6171

6272
app = _get_test_app()
6373

64-
async with LifespanManager(app, startup_timeout=30, shutdown_timeout=30):
74+
async with ASGILifespanManager(app, startup_timeout=30, shutdown_timeout=30):
6575
yield get_remote_docker_client(app)
6676

6777
return _

0 commit comments

Comments
 (0)