diff --git a/instrumentation/opentelemetry-instrumentation-aiohttp-client/setup.cfg b/instrumentation/opentelemetry-instrumentation-aiohttp-client/setup.cfg index 27e120d66..1d70349a5 100644 --- a/instrumentation/opentelemetry-instrumentation-aiohttp-client/setup.cfg +++ b/instrumentation/opentelemetry-instrumentation-aiohttp-client/setup.cfg @@ -39,8 +39,8 @@ package_dir= =src packages=find_namespace: install_requires = - opentelemetry-api == 0.15.dev0 - opentelemetry-instrumentation == 0.15.dev0 + opentelemetry-api == 0.15b0 + opentelemetry-instrumentation == 0.15b0 aiohttp ~= 3.0 wrapt >= 1.0.0, < 2.0.0 diff --git a/instrumentation/opentelemetry-instrumentation-aiohttp-client/src/opentelemetry/instrumentation/aiohttp_client/__init__.py b/instrumentation/opentelemetry-instrumentation-aiohttp-client/src/opentelemetry/instrumentation/aiohttp_client/__init__.py index 6606c4833..c708802a9 100644 --- a/instrumentation/opentelemetry-instrumentation-aiohttp-client/src/opentelemetry/instrumentation/aiohttp_client/__init__.py +++ b/instrumentation/opentelemetry-instrumentation-aiohttp-client/src/opentelemetry/instrumentation/aiohttp_client/__init__.py @@ -74,11 +74,11 @@ from opentelemetry import propagators, trace from opentelemetry.instrumentation.aiohttp_client.version import __version__ from opentelemetry.instrumentation.instrumentor import BaseInstrumentor from opentelemetry.instrumentation.utils import ( - http_status_to_canonical_code, + http_status_to_status_code, unwrap, ) from opentelemetry.trace import SpanKind, TracerProvider, get_tracer -from opentelemetry.trace.status import Status, StatusCanonicalCode +from opentelemetry.trace.status import Status, StatusCode _UrlFilterT = typing.Optional[typing.Callable[[str], str]] _SpanNameT = typing.Optional[ @@ -194,9 +194,7 @@ def create_trace_config( if trace_config_ctx.span.is_recording(): trace_config_ctx.span.set_status( - Status( - http_status_to_canonical_code(int(params.response.status)) - ) + Status(http_status_to_status_code(int(params.response.status))) ) trace_config_ctx.span.set_attribute( "http.status_code", params.response.status @@ -214,22 +212,8 @@ def create_trace_config( if trace_config_ctx.span is None: return - if trace_config_ctx.span.is_recording(): - if isinstance( - params.exception, - (aiohttp.ServerTimeoutError, aiohttp.TooManyRedirects), - ): - status = StatusCanonicalCode.DEADLINE_EXCEEDED - # Assume any getaddrinfo error is a DNS failure. - elif isinstance( - params.exception, aiohttp.ClientConnectorError - ) and isinstance(params.exception.os_error, socket.gaierror): - # DNS resolution failed - status = StatusCanonicalCode.UNKNOWN - else: - status = StatusCanonicalCode.UNAVAILABLE - - trace_config_ctx.span.set_status(Status(status)) + if trace_config_ctx.span.is_recording() and params.exception: + trace_config_ctx.span.set_status(Status(StatusCode.ERROR)) trace_config_ctx.span.record_exception(params.exception) _end_trace(trace_config_ctx) diff --git a/instrumentation/opentelemetry-instrumentation-aiohttp-client/src/opentelemetry/instrumentation/aiohttp_client/version.py b/instrumentation/opentelemetry-instrumentation-aiohttp-client/src/opentelemetry/instrumentation/aiohttp_client/version.py index 0fdc34158..c7ec3bc23 100644 --- a/instrumentation/opentelemetry-instrumentation-aiohttp-client/src/opentelemetry/instrumentation/aiohttp_client/version.py +++ b/instrumentation/opentelemetry-instrumentation-aiohttp-client/src/opentelemetry/instrumentation/aiohttp_client/version.py @@ -12,4 +12,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -__version__ = "0.15.dev0" +__version__ = "0.15b0" diff --git a/instrumentation/opentelemetry-instrumentation-aiohttp-client/tests/test_aiohttp_client_integration.py b/instrumentation/opentelemetry-instrumentation-aiohttp-client/tests/test_aiohttp_client_integration.py index fb5b6aac6..f07346534 100644 --- a/instrumentation/opentelemetry-instrumentation-aiohttp-client/tests/test_aiohttp_client_integration.py +++ b/instrumentation/opentelemetry-instrumentation-aiohttp-client/tests/test_aiohttp_client_integration.py @@ -31,7 +31,7 @@ from opentelemetry.instrumentation.aiohttp_client import ( AioHttpClientInstrumentor, ) from opentelemetry.test.test_base import TestBase -from opentelemetry.trace.status import StatusCanonicalCode +from opentelemetry.trace.status import StatusCode def run_with_test_server( @@ -61,7 +61,7 @@ class TestAioHttpIntegration(TestBase): [ ( span.name, - (span.status.canonical_code, span.status.description), + (span.status.status_code, span.status.description), dict(span.attributes), ) for span in self.memory_exporter.get_finished_spans() @@ -111,13 +111,10 @@ class TestAioHttpIntegration(TestBase): def test_status_codes(self): for status_code, span_status in ( - (HTTPStatus.OK, StatusCanonicalCode.OK), - (HTTPStatus.TEMPORARY_REDIRECT, StatusCanonicalCode.OK), - (HTTPStatus.SERVICE_UNAVAILABLE, StatusCanonicalCode.UNAVAILABLE), - ( - HTTPStatus.GATEWAY_TIMEOUT, - StatusCanonicalCode.DEADLINE_EXCEEDED, - ), + (HTTPStatus.OK, StatusCode.UNSET), + (HTTPStatus.TEMPORARY_REDIRECT, StatusCode.UNSET), + (HTTPStatus.SERVICE_UNAVAILABLE, StatusCode.ERROR), + (HTTPStatus.GATEWAY_TIMEOUT, StatusCode.ERROR,), ): with self.subTest(status_code=status_code): host, port = self._http_request( @@ -188,7 +185,7 @@ class TestAioHttpIntegration(TestBase): [ ( expected, - (StatusCanonicalCode.OK, None), + (StatusCode.UNSET, None), { "component": "http", "http.method": method, @@ -220,7 +217,7 @@ class TestAioHttpIntegration(TestBase): [ ( "HTTP GET", - (StatusCanonicalCode.OK, None), + (StatusCode.UNSET, None), { "component": "http", "http.method": "GET", @@ -238,8 +235,8 @@ class TestAioHttpIntegration(TestBase): trace_configs = [aiohttp_client.create_trace_config()] for url, expected_status in ( - ("http://this-is-unknown.local/", StatusCanonicalCode.UNKNOWN), - ("http://127.0.0.1:1/", StatusCanonicalCode.UNAVAILABLE), + ("http://this-is-unknown.local/", StatusCode.ERROR), + ("http://127.0.0.1:1/", StatusCode.ERROR), ): with self.subTest(expected_status=expected_status): @@ -286,7 +283,7 @@ class TestAioHttpIntegration(TestBase): [ ( "HTTP GET", - (StatusCanonicalCode.DEADLINE_EXCEEDED, None), + (StatusCode.ERROR, None), { "component": "http", "http.method": "GET", @@ -316,7 +313,7 @@ class TestAioHttpIntegration(TestBase): [ ( "HTTP GET", - (StatusCanonicalCode.DEADLINE_EXCEEDED, None), + (StatusCode.ERROR, None), { "component": "http", "http.method": "GET",