|
60 | 60 | Urllib3HttpNode, |
61 | 61 | ) |
62 | 62 | from ._node_pool import NodePool, NodeSelector |
| 63 | +from ._otel import OpenTelemetry |
63 | 64 | from ._serializer import DEFAULT_SERIALIZERS, Serializer, SerializerCollection |
64 | 65 | from ._version import __version__ |
65 | 66 | from .client_utils import client_meta_version, resolve_default |
@@ -225,6 +226,9 @@ def __init__( |
225 | 226 | self.retry_on_status = retry_on_status |
226 | 227 | self.retry_on_timeout = retry_on_timeout |
227 | 228 |
|
| 229 | + # Instrumentation |
| 230 | + self.otel = OpenTelemetry() |
| 231 | + |
228 | 232 | # Build the NodePool from all the options |
229 | 233 | node_pool_kwargs: Dict[str, Any] = {} |
230 | 234 | if node_selector_class is not None: |
@@ -252,7 +256,7 @@ def __init__( |
252 | 256 | if sniff_on_start: |
253 | 257 | self.sniff(True) |
254 | 258 |
|
255 | | - def perform_request( # type: ignore[return] |
| 259 | + def perform_request( |
256 | 260 | self, |
257 | 261 | method: str, |
258 | 262 | target: str, |
@@ -289,6 +293,32 @@ def perform_request( # type: ignore[return] |
289 | 293 | :arg client_meta: Extra client metadata key-value pairs to send in the client meta header. |
290 | 294 | :returns: Tuple of the :class:`elastic_transport.ApiResponseMeta` with the deserialized response. |
291 | 295 | """ |
| 296 | + with self.otel.span(method): |
| 297 | + return self._perform_request( |
| 298 | + method, |
| 299 | + target, |
| 300 | + body=body, |
| 301 | + headers=headers, |
| 302 | + max_retries=max_retries, |
| 303 | + retry_on_status=retry_on_status, |
| 304 | + retry_on_timeout=retry_on_timeout, |
| 305 | + request_timeout=request_timeout, |
| 306 | + client_meta=client_meta, |
| 307 | + ) |
| 308 | + |
| 309 | + def _perform_request( # type: ignore[return] |
| 310 | + self, |
| 311 | + method: str, |
| 312 | + target: str, |
| 313 | + *, |
| 314 | + body: Optional[Any] = None, |
| 315 | + headers: Union[Mapping[str, Any], DefaultType] = DEFAULT, |
| 316 | + max_retries: Union[int, DefaultType] = DEFAULT, |
| 317 | + retry_on_status: Union[Collection[int], DefaultType] = DEFAULT, |
| 318 | + retry_on_timeout: Union[bool, DefaultType] = DEFAULT, |
| 319 | + request_timeout: Union[Optional[float], DefaultType] = DEFAULT, |
| 320 | + client_meta: Union[Tuple[Tuple[str, str], ...], DefaultType] = DEFAULT, |
| 321 | + ) -> TransportApiResponse: |
292 | 322 | if headers is DEFAULT: |
293 | 323 | request_headers = HttpHeaders() |
294 | 324 | else: |
|
0 commit comments