Skip to content

Commit 5c14227

Browse files
committed
Botocore checks if instrumentation is suppressed
1 parent acf5706 commit 5c14227

File tree

3 files changed

+20
-0
lines changed

3 files changed

+20
-0
lines changed

instrumentation/opentelemetry-instrumentation-botocore/CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
## Unreleased
44
- Add propagator injection for botocore calls
55
([#181](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/181))
6+
- Make botocore instrumentation check if instrumentation has been suppressed
7+
([#182](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/182))
68

79
## Version 0.13b0
810

instrumentation/opentelemetry-instrumentation-botocore/src/opentelemetry/instrumentation/botocore/__init__.py

+3
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
from botocore.client import BaseClient
5757
from wrapt import ObjectProxy, wrap_function_wrapper
5858

59+
from opentelemetry import context as context_api
5960
from opentelemetry import propagators
6061
from opentelemetry.instrumentation.botocore.version import __version__
6162
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
@@ -104,6 +105,8 @@ def _uninstrument(self, **kwargs):
104105
unwrap(BaseClient, "_make_api_call")
105106

106107
def _patched_api_call(self, original_func, instance, args, kwargs):
108+
if context_api.get_value("suppress_instrumentation"):
109+
return original_func(*args, **kwargs)
107110

108111
endpoint_name = deep_getattr(instance, "_endpoint._endpoint_prefix")
109112

instrumentation/opentelemetry-instrumentation-botocore/tests/test_botocore_instrumentation.py

+15
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,11 @@
2323
mock_lambda,
2424
mock_s3,
2525
mock_sqs,
26+
mock_xray,
2627
)
2728

2829
from opentelemetry import propagators
30+
from opentelemetry.context import attach, detach, set_value
2931
from opentelemetry.instrumentation.botocore import BotocoreInstrumentor
3032
from opentelemetry.sdk.resources import Resource
3133
from opentelemetry.test.mock_textmap import MockTextMapPropagator
@@ -330,3 +332,16 @@ def check_headers(**kwargs):
330332

331333
finally:
332334
propagators.set_global_textmap(previous_propagator)
335+
336+
@mock_xray
337+
def test_suppress_instrumentation_xray_client(self):
338+
xray_client = self.session.create_client(
339+
"xray", region_name="us-east-1"
340+
)
341+
token = attach(set_value("suppress_instrumentation", True))
342+
xray_client.put_trace_segments(TraceSegmentDocuments=["str1"])
343+
xray_client.put_trace_segments(TraceSegmentDocuments=["str2"])
344+
detach(token)
345+
346+
spans = self.memory_exporter.get_finished_spans()
347+
self.assertEqual(0, len(spans))

0 commit comments

Comments
 (0)