From e3ef7bb49e32eb7e5ce003916fbef60f44430a02 Mon Sep 17 00:00:00 2001 From: Cathy Ouyang Date: Fri, 1 Nov 2024 21:06:02 +0000 Subject: [PATCH] chore: add Cloud Trace adoption attributes --- .../cloud/storage/_opentelemetry_tracing.py | 7 ++++++ tests/unit/test__opentelemetry_tracing.py | 23 ++++++++----------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/google/cloud/storage/_opentelemetry_tracing.py b/google/cloud/storage/_opentelemetry_tracing.py index ac4c43e07..3416081cd 100644 --- a/google/cloud/storage/_opentelemetry_tracing.py +++ b/google/cloud/storage/_opentelemetry_tracing.py @@ -54,6 +54,12 @@ "user_agent.original": f"gcloud-python/{__version__}", } +_cloud_trace_adoption_attrs = { + "gcp.client.service": "storage", + "gcp.client.version": __version__, + "gcp.client.repo": "googleapis/python-storage", +} + @contextmanager def create_trace_span(name, attributes=None, client=None, api_request=None, retry=None): @@ -79,6 +85,7 @@ def create_trace_span(name, attributes=None, client=None, api_request=None, retr def _get_final_attributes(attributes=None, client=None, api_request=None, retry=None): collected_attr = _default_attributes.copy() + collected_attr.update(_cloud_trace_adoption_attrs) if api_request: collected_attr.update(_set_api_request_attr(api_request, client)) if isinstance(retry, api_retry.Retry): diff --git a/tests/unit/test__opentelemetry_tracing.py b/tests/unit/test__opentelemetry_tracing.py index 631ac9f82..bdbb40fd2 100644 --- a/tests/unit/test__opentelemetry_tracing.py +++ b/tests/unit/test__opentelemetry_tracing.py @@ -89,11 +89,8 @@ def test_enable_trace_call(setup, setup_optin): extra_attributes = { "attribute1": "value1", } - expected_attributes = { - "rpc.service": "CloudStorage", - "rpc.system": "http", - "user_agent.original": f"gcloud-python/{__version__}", - } + expected_attributes = _opentelemetry_tracing._default_attributes.copy() + expected_attributes.update(_opentelemetry_tracing._cloud_trace_adoption_attrs) expected_attributes.update(extra_attributes) with _opentelemetry_tracing.create_trace_span( @@ -114,11 +111,8 @@ def test_enable_trace_error(setup, setup_optin): extra_attributes = { "attribute1": "value1", } - expected_attributes = { - "rpc.service": "CloudStorage", - "rpc.system": "http", - "user_agent.original": f"gcloud-python/{__version__}", - } + expected_attributes = _opentelemetry_tracing._default_attributes.copy() + expected_attributes.update(_opentelemetry_tracing._cloud_trace_adoption_attrs) expected_attributes.update(extra_attributes) with pytest.raises(GoogleAPICallError): @@ -157,6 +151,7 @@ def test_get_final_attributes(setup, setup_optin): "connect_timeout,read_timeout": (100, 100), "retry": f"multiplier{retry_obj._multiplier}/deadline{retry_obj._deadline}/max{retry_obj._maximum}/initial{retry_obj._initial}/predicate{retry_obj._predicate}", } + expected_attributes.update(_opentelemetry_tracing._cloud_trace_adoption_attrs) with mock.patch("google.cloud.storage.client.Client") as test_client: test_client.project = "test_project" @@ -185,12 +180,12 @@ def test_set_conditional_retry_attr(setup, setup_optin): retry_policy, conditional_predicate, required_kwargs ) - expected_attributes = { - "rpc.service": "CloudStorage", - "rpc.system": "http", - "user_agent.original": f"gcloud-python/{__version__}", + retry_attrs = { "retry": f"multiplier{retry_policy._multiplier}/deadline{retry_policy._deadline}/max{retry_policy._maximum}/initial{retry_policy._initial}/predicate{conditional_predicate}", } + expected_attributes = _opentelemetry_tracing._default_attributes.copy() + expected_attributes.update(_opentelemetry_tracing._cloud_trace_adoption_attrs) + expected_attributes.update(retry_attrs) with _opentelemetry_tracing.create_trace_span( test_span_name,