diff --git a/instrumentation/opentelemetry-instrumentation-requests/src/opentelemetry/instrumentation/requests/__init__.py b/instrumentation/opentelemetry-instrumentation-requests/src/opentelemetry/instrumentation/requests/__init__.py index 770eacf5e..b4738647d 100644 --- a/instrumentation/opentelemetry-instrumentation-requests/src/opentelemetry/instrumentation/requests/__init__.py +++ b/instrumentation/opentelemetry-instrumentation-requests/src/opentelemetry/instrumentation/requests/__init__.py @@ -49,12 +49,12 @@ from opentelemetry.instrumentation.metric import ( MetricMixin, ) from opentelemetry.instrumentation.requests.version import __version__ -from opentelemetry.instrumentation.utils import http_status_to_canonical_code +from opentelemetry.instrumentation.utils import http_status_to_status_code from opentelemetry.trace import SpanKind, get_tracer from opentelemetry.trace.status import ( EXCEPTION_STATUS_FIELD, Status, - StatusCanonicalCode, + StatusCode, ) # A key to a context variable to avoid creating duplicate spans when instrumenting @@ -155,9 +155,7 @@ def _instrument(tracer_provider=None, span_callback=None): except Exception as exc: # pylint: disable=W0703 exception = exc setattr( - exception, - EXCEPTION_STATUS_FIELD, - _exception_to_canonical_code(exception), + exception, EXCEPTION_STATUS_FIELD, StatusCode.ERROR, ) result = getattr(exc, "response", None) finally: @@ -171,9 +169,7 @@ def _instrument(tracer_provider=None, span_callback=None): span.set_attribute("http.status_text", result.reason) span.set_status( Status( - http_status_to_canonical_code( - result.status_code - ) + http_status_to_status_code(result.status_code) ) ) labels["http.status_code"] = str(result.status_code) @@ -221,17 +217,6 @@ def _uninstrument_from(instr_root, restore_as_bound_func=False): setattr(instr_root, instr_func_name, original) -def _exception_to_canonical_code(exc: Exception) -> StatusCanonicalCode: - if isinstance( - exc, - (InvalidURL, InvalidSchema, MissingSchema, URLRequired, ValueError), - ): - return StatusCanonicalCode.INVALID_ARGUMENT - if isinstance(exc, Timeout): - return StatusCanonicalCode.DEADLINE_EXCEEDED - return StatusCanonicalCode.UNKNOWN - - class RequestsInstrumentor(BaseInstrumentor, MetricMixin): """An instrumentor for requests See `BaseInstrumentor` diff --git a/instrumentation/opentelemetry-instrumentation-requests/tests/test_requests_integration.py b/instrumentation/opentelemetry-instrumentation-requests/tests/test_requests_integration.py index f41e597b2..f5209108e 100644 --- a/instrumentation/opentelemetry-instrumentation-requests/tests/test_requests_integration.py +++ b/instrumentation/opentelemetry-instrumentation-requests/tests/test_requests_integration.py @@ -25,7 +25,7 @@ from opentelemetry.sdk import resources from opentelemetry.sdk.util import get_dict_as_key from opentelemetry.test.mock_textmap import MockTextMapPropagator from opentelemetry.test.test_base import TestBase -from opentelemetry.trace.status import StatusCanonicalCode +from opentelemetry.trace.status import StatusCode class RequestsIntegrationTestBase(abc.ABC): @@ -81,9 +81,7 @@ class RequestsIntegrationTestBase(abc.ABC): }, ) - self.assertIs( - span.status.canonical_code, trace.status.StatusCanonicalCode.OK - ) + self.assertIs(span.status.status_code, trace.status.StatusCode.UNSET) self.check_span_instrumentation_info( span, opentelemetry.instrumentation.requests @@ -123,8 +121,7 @@ class RequestsIntegrationTestBase(abc.ABC): self.assertEqual(span.attributes.get("http.status_text"), "Not Found") self.assertIs( - span.status.canonical_code, - trace.status.StatusCanonicalCode.NOT_FOUND, + span.status.status_code, trace.status.StatusCode.ERROR, ) def test_uninstrument(self): @@ -263,9 +260,7 @@ class RequestsIntegrationTestBase(abc.ABC): span.attributes, {"component": "http", "http.method": "GET", "http.url": self.URL}, ) - self.assertEqual( - span.status.canonical_code, StatusCanonicalCode.UNKNOWN - ) + self.assertEqual(span.status.status_code, StatusCode.ERROR) self.assertIsNotNone(RequestsInstrumentor().meter) self.assertEqual(len(RequestsInstrumentor().meter.metrics), 1) @@ -307,9 +302,7 @@ class RequestsIntegrationTestBase(abc.ABC): "http.status_text": "Internal Server Error", }, ) - self.assertEqual( - span.status.canonical_code, StatusCanonicalCode.INTERNAL - ) + self.assertEqual(span.status.status_code, StatusCode.ERROR) self.assertIsNotNone(RequestsInstrumentor().meter) self.assertEqual(len(RequestsInstrumentor().meter.metrics), 1) recorder = RequestsInstrumentor().meter.metrics.pop() @@ -334,9 +327,7 @@ class RequestsIntegrationTestBase(abc.ABC): self.perform_request(self.URL) span = self.assert_span() - self.assertEqual( - span.status.canonical_code, StatusCanonicalCode.UNKNOWN - ) + self.assertEqual(span.status.status_code, StatusCode.ERROR) @mock.patch( "requests.adapters.HTTPAdapter.send", side_effect=requests.Timeout @@ -346,9 +337,7 @@ class RequestsIntegrationTestBase(abc.ABC): self.perform_request(self.URL) span = self.assert_span() - self.assertEqual( - span.status.canonical_code, StatusCanonicalCode.DEADLINE_EXCEEDED - ) + self.assertEqual(span.status.status_code, StatusCode.ERROR) class TestRequestsIntegration(RequestsIntegrationTestBase, TestBase): @@ -371,9 +360,7 @@ class TestRequestsIntegration(RequestsIntegrationTestBase, TestBase): span.attributes, {"component": "http", "http.method": "POST", "http.url": url}, ) - self.assertEqual( - span.status.canonical_code, StatusCanonicalCode.INVALID_ARGUMENT - ) + self.assertEqual(span.status.status_code, StatusCode.ERROR) def test_if_headers_equals_none(self): result = requests.get(self.URL, headers=None)