Skip to content

Commit

Permalink
Botocore checks if instrumentation is suppressed
Browse files Browse the repository at this point in the history
  • Loading branch information
NathanielRN committed Nov 12, 2020
1 parent cb70679 commit 3b0e1e7
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# Changelog

## Unreleased
- Make botocore instrumentation check if instrumentation has been suppressed
([#182](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/182))

## Version 0.13b0

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@
from botocore.client import BaseClient
from wrapt import ObjectProxy, wrap_function_wrapper

from opentelemetry import context as context_api
from opentelemetry.instrumentation.botocore.version import __version__
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
from opentelemetry.sdk.trace import Resource
Expand Down Expand Up @@ -89,6 +90,8 @@ def _uninstrument(self, **kwargs):
unwrap(BaseClient, "_make_api_call")

def _patched_api_call(self, original_func, instance, args, kwargs):
if context_api.get_value("suppress_instrumentation"):
return original_func(*args, **kwargs)

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,10 @@
mock_lambda,
mock_s3,
mock_sqs,
mock_xray,
)

from opentelemetry.context import attach, detach, set_value
from opentelemetry.instrumentation.botocore import BotocoreInstrumentor
from opentelemetry.sdk.resources import Resource
from opentelemetry.test.test_base import TestBase
Expand Down Expand Up @@ -275,3 +277,16 @@ def test_kms_client(self):

# checking for protection on sts against security leak
self.assertTrue("params" not in span.attributes.keys())

@mock_xray
def test_suppress_instrumentation_xray_client(self):
xray_client = self.session.create_client(
"xray", region_name="us-east-1"
)
token = attach(set_value("suppress_instrumentation", True))
xray_client.put_trace_segments(TraceSegmentDocuments=["str1"])
xray_client.put_trace_segments(TraceSegmentDocuments=["str2"])
detach(token)

spans = self.memory_exporter.get_finished_spans()
self.assertEqual(0, len(spans))

0 comments on commit 3b0e1e7

Please sign in to comment.