Skip to content

Commit 46d0b2a

Browse files
committed
dynamic-scheduler and director-v2
1 parent 061e454 commit 46d0b2a

File tree

5 files changed

+28
-8
lines changed

5 files changed

+28
-8
lines changed

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
from httpx import AsyncClient, ConnectError, HTTPError, PoolTimeout, Response
99
from httpx._types import TimeoutTypes, URLTypes
1010
from pydantic.errors import PydanticErrorMixin
11+
from servicelib.fastapi.tracing import setup_httpx_client_tracing
12+
from settings_library.tracing import TracingSettings
1113
from tenacity import RetryCallState
1214
from tenacity.asyncio import AsyncRetrying
1315
from tenacity.before_sleep import before_sleep_log
@@ -201,6 +203,7 @@ def __init__(
201203
base_url: URLTypes | None = None,
202204
default_http_client_timeout: TimeoutTypes | None = None,
203205
extra_allowed_method_names: set[str] | None = None,
206+
tracing_settings: TracingSettings | None,
204207
) -> None:
205208
_assert_public_interface(self, extra_allowed_method_names)
206209

@@ -220,7 +223,10 @@ def __init__(
220223
if default_http_client_timeout:
221224
client_args["timeout"] = default_http_client_timeout
222225

223-
super().__init__(client=AsyncClient(**client_args))
226+
client = AsyncClient(**client_args)
227+
if tracing_settings:
228+
setup_httpx_client_tracing(client)
229+
super().__init__(client=client)
224230

225231
async def __aenter__(self):
226232
await self.setup_client()

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

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ async def raises_request_error(self) -> Response:
119119
request=Request(method="GET", url=test_url),
120120
)
121121

122-
client = ATestClient(total_retry_interval=request_timeout)
122+
client = ATestClient(total_retry_interval=request_timeout, tracing_settings=None)
123123

124124
with pytest.raises(ClientHttpError):
125125
await client.raises_request_error()
@@ -145,7 +145,7 @@ async def raises_http_error(self) -> Response:
145145
msg = "mock_http_error"
146146
raise HTTPError(msg)
147147

148-
client = ATestClient(total_retry_interval=request_timeout)
148+
client = ATestClient(total_retry_interval=request_timeout, tracing_settings=None)
149149

150150
with pytest.raises(ClientHttpError):
151151
await client.raises_http_error()
@@ -159,21 +159,25 @@ async def public_method_ok(self) -> Response: # type: ignore
159159
"""this method will be ok even if no code is used"""
160160

161161
# OK
162-
OKTestClient(total_retry_interval=request_timeout)
162+
OKTestClient(total_retry_interval=request_timeout, tracing_settings=None)
163163

164164
class FailWrongAnnotationTestClient(BaseThinClient):
165165
async def public_method_wrong_annotation(self) -> None:
166166
"""this method will raise an error"""
167167

168168
with pytest.raises(AssertionError, match="should return an instance"):
169-
FailWrongAnnotationTestClient(total_retry_interval=request_timeout)
169+
FailWrongAnnotationTestClient(
170+
total_retry_interval=request_timeout, tracing_settings=None
171+
)
170172

171173
class FailNoAnnotationTestClient(BaseThinClient):
172174
async def public_method_no_annotation(self):
173175
"""this method will raise an error"""
174176

175177
with pytest.raises(AssertionError, match="should return an instance"):
176-
FailNoAnnotationTestClient(total_retry_interval=request_timeout)
178+
FailNoAnnotationTestClient(
179+
total_retry_interval=request_timeout, tracing_settings=None
180+
)
177181

178182

179183
async def test_expect_state_decorator(
@@ -197,7 +201,9 @@ async def get_wrong_state(self) -> Response:
197201
respx_mock.get(url_get_200_ok).mock(return_value=Response(codes.OK))
198202
respx_mock.get(get_wrong_state).mock(return_value=Response(codes.OK))
199203

200-
test_client = ATestClient(total_retry_interval=request_timeout)
204+
test_client = ATestClient(
205+
total_retry_interval=request_timeout, tracing_settings=None
206+
)
201207

202208
# OK
203209
response = await test_client.get_200_ok()

services/director-v2/src/simcore_service_director_v2/cli/_client.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ class ThinDV2LocalhostClient(BaseThinClient):
1212

1313
def __init__(self):
1414
super().__init__(
15-
total_retry_interval=10, default_http_client_timeout=Timeout(5)
15+
total_retry_interval=10,
16+
default_http_client_timeout=Timeout(5),
17+
tracing_settings=None,
1618
)
1719

1820
def _get_url(self, postfix: str) -> str:

services/director-v2/src/simcore_service_director_v2/modules/dynamic_sidecar/api_client/_thin.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
expect_status,
1313
retry_on_errors,
1414
)
15+
from settings_library.tracing import TracingSettings
1516

1617
from ....core.dynamic_services_settings.scheduler import (
1718
DynamicServicesSchedulerSettings,
@@ -31,6 +32,9 @@ def __init__(self, app: FastAPI):
3132
scheduler_settings: DynamicServicesSchedulerSettings = (
3233
app.state.settings.DYNAMIC_SERVICES.DYNAMIC_SCHEDULER
3334
)
35+
tracing_settings: TracingSettings | None = (
36+
app.state.settings.DIRECTOR_V2_TRACING
37+
)
3438

3539
# timeouts
3640
self._health_request_timeout = Timeout(1.0, connect=1.0)
@@ -53,6 +57,7 @@ def __init__(self, app: FastAPI):
5357
scheduler_settings.DYNAMIC_SIDECAR_API_REQUEST_TIMEOUT,
5458
connect=scheduler_settings.DYNAMIC_SIDECAR_API_CONNECT_TIMEOUT,
5559
),
60+
tracing_settings=tracing_settings,
5661
)
5762

5863
def _get_url(

services/dynamic-scheduler/src/simcore_service_dynamic_scheduler/services/director_v2/_thin_client.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ def __init__(self, app: FastAPI) -> None:
3737
DEFAULT_LEGACY_WB_TO_DV2_HTTP_REQUESTS_TIMEOUT_S
3838
),
3939
extra_allowed_method_names={"attach_lifespan_to"},
40+
tracing_settings=settings.DYNAMIC_SCHEDULER_TRACING,
4041
)
4142

4243
@retry_on_errors()

0 commit comments

Comments
 (0)