From 1160c321f5fadaca3b81c0940bd06cf6ebdb700f Mon Sep 17 00:00:00 2001 From: Riccardo Magliocchetti Date: Thu, 19 Dec 2024 15:56:38 +0100 Subject: [PATCH 1/3] Fix creation of resources in _detector We should create a Resource instance and not use Resource.create because if we set OTEL_EXPERIMENTAL_RESOURCE_DETECTORS we will go into an infinite loop trying to load and instantiate all the resources detectors. Fix #363 --- .../resourcedetector/gcp_resource_detector/_detector.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opentelemetry-resourcedetector-gcp/src/opentelemetry/resourcedetector/gcp_resource_detector/_detector.py b/opentelemetry-resourcedetector-gcp/src/opentelemetry/resourcedetector/gcp_resource_detector/_detector.py index 9bbcaf6d..2fea9514 100644 --- a/opentelemetry-resourcedetector-gcp/src/opentelemetry/resourcedetector/gcp_resource_detector/_detector.py +++ b/opentelemetry-resourcedetector-gcp/src/opentelemetry/resourcedetector/gcp_resource_detector/_detector.py @@ -129,7 +129,7 @@ def _gae_resource() -> Resource: def _make_resource(attrs: Mapping[str, AttributeValue]) -> Resource: - return Resource.create( + return Resource( { ResourceAttributes.CLOUD_PROVIDER: "gcp", ResourceAttributes.CLOUD_ACCOUNT_ID: _metadata.get_metadata()[ From b0ff830d935998bd96d695154328b82251cabdbc Mon Sep 17 00:00:00 2001 From: Riccardo Magliocchetti Date: Tue, 24 Dec 2024 10:11:39 +0100 Subject: [PATCH 2/3] Update snapshots --- .../tests/__snapshots__/test_detector.ambr | 28 ------------------- 1 file changed, 28 deletions(-) diff --git a/opentelemetry-resourcedetector-gcp/tests/__snapshots__/test_detector.ambr b/opentelemetry-resourcedetector-gcp/tests/__snapshots__/test_detector.ambr index e27ec90a..fcc343a0 100644 --- a/opentelemetry-resourcedetector-gcp/tests/__snapshots__/test_detector.ambr +++ b/opentelemetry-resourcedetector-gcp/tests/__snapshots__/test_detector.ambr @@ -7,10 +7,6 @@ 'faas.instance': '0087244a', 'faas.name': 'fake-service', 'faas.version': 'fake-revision', - 'service.name': 'unknown_service', - 'telemetry.sdk.language': 'python', - 'telemetry.sdk.name': 'opentelemetry', - 'telemetry.sdk.version': '1.20.0', }) # --- # name: test_detects_cloud_run @@ -22,10 +18,6 @@ 'faas.instance': '0087244a', 'faas.name': 'fake-service', 'faas.version': 'fake-revision', - 'service.name': 'unknown_service', - 'telemetry.sdk.language': 'python', - 'telemetry.sdk.name': 'opentelemetry', - 'telemetry.sdk.version': '1.20.0', }) # --- # name: test_detects_empty_as_fallback @@ -46,10 +38,6 @@ 'faas.instance': 'fake-instance', 'faas.name': 'fake-service', 'faas.version': 'fake-version', - 'service.name': 'unknown_service', - 'telemetry.sdk.language': 'python', - 'telemetry.sdk.name': 'opentelemetry', - 'telemetry.sdk.version': '1.20.0', }) # --- # name: test_detects_gae_standard @@ -62,10 +50,6 @@ 'faas.instance': 'fake-instance', 'faas.name': 'fake-service', 'faas.version': 'fake-version', - 'service.name': 'unknown_service', - 'telemetry.sdk.language': 'python', - 'telemetry.sdk.name': 'opentelemetry', - 'telemetry.sdk.version': '1.20.0', }) # --- # name: test_detects_gce @@ -78,10 +62,6 @@ 'host.id': '0087244a', 'host.name': 'fakeName', 'host.type': 'fakeMachineType', - 'service.name': 'unknown_service', - 'telemetry.sdk.language': 'python', - 'telemetry.sdk.name': 'opentelemetry', - 'telemetry.sdk.version': '1.20.0', }) # --- # name: test_detects_gke[regional] @@ -92,10 +72,6 @@ 'cloud.region': 'us-east4', 'host.id': '12345', 'k8s.cluster.name': 'fakeClusterName', - 'service.name': 'unknown_service', - 'telemetry.sdk.language': 'python', - 'telemetry.sdk.name': 'opentelemetry', - 'telemetry.sdk.version': '1.20.0', }) # --- # name: test_detects_gke[zonal] @@ -106,9 +82,5 @@ 'cloud.provider': 'gcp', 'host.id': '12345', 'k8s.cluster.name': 'fakeClusterName', - 'service.name': 'unknown_service', - 'telemetry.sdk.language': 'python', - 'telemetry.sdk.name': 'opentelemetry', - 'telemetry.sdk.version': '1.20.0', }) # --- From c87f638457cc66abc9ffe32d48ec5d0b4731eaf2 Mon Sep 17 00:00:00 2001 From: Aaron Abbott Date: Thu, 26 Dec 2024 19:37:33 +0000 Subject: [PATCH 3/3] Use get_aggregated_resources in e2e test so we get OTEL_RESOURCE_ATTRIBUTES envvar --- e2e-test-server/e2e_test_server/scenarios.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/e2e-test-server/e2e_test_server/scenarios.py b/e2e-test-server/e2e_test_server/scenarios.py index 3f46df5f..f0b10b82 100644 --- a/e2e-test-server/e2e_test_server/scenarios.py +++ b/e2e-test-server/e2e_test_server/scenarios.py @@ -29,6 +29,7 @@ from opentelemetry.sdk.trace.export import BatchSpanProcessor from opentelemetry.sdk.trace.sampling import ALWAYS_ON from opentelemetry.trace import SpanKind, Tracer, format_trace_id +from opentelemetry.sdk.resources import get_aggregated_resources from pydantic import BaseModel from .constants import INSTRUMENTING_MODULE_NAME, PROJECT_ID, TEST_ID, TRACE_ID @@ -59,9 +60,7 @@ def _tracer_setup( spans created during the test after. """ - tracer_provider = TracerProvider( - sampler=ALWAYS_ON, **tracer_provider_config - ) + tracer_provider = TracerProvider(sampler=ALWAYS_ON, **tracer_provider_config) tracer_provider.add_span_processor( BatchSpanProcessor( CloudTraceSpanExporter(project_id=PROJECT_ID, **exporter_config) @@ -139,9 +138,9 @@ def detect_resource(request: Request) -> Response: """Create a trace with GCP resource detector""" with _tracer_setup( tracer_provider_config={ - "resource": GoogleCloudResourceDetector( - raise_on_error=True - ).detect() + "resource": get_aggregated_resources( + [GoogleCloudResourceDetector(raise_on_error=True)] + ) }, exporter_config={"resource_regex": r".*"}, ) as tracer: