From 04521dd45a14f6bb948079e9b5cc333ec5c52f29 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Tue, 11 Nov 2025 18:28:11 +0100 Subject: [PATCH] add Resource getter to ExtendedOpenTelemetrySdk --- .../api/incubator/ExtendedOpenTelemetryTest.java | 4 +++- .../DeclarativeConfigurationSpiTest.java | 7 ++++--- .../DeclarativeConfigurationTest.java | 3 ++- .../incubator/ExtendedOpenTelemetrySdk.java | 15 ++++++++++++--- .../OpenTelemetryConfigurationFactory.java | 4 ++-- .../OpenTelemetryConfigurationFactoryTest.java | 10 +++++++--- 6 files changed, 30 insertions(+), 13 deletions(-) diff --git a/api/incubator/src/test/java/io/opentelemetry/api/incubator/ExtendedOpenTelemetryTest.java b/api/incubator/src/test/java/io/opentelemetry/api/incubator/ExtendedOpenTelemetryTest.java index 651eae4bc14..5b7d8073de8 100644 --- a/api/incubator/src/test/java/io/opentelemetry/api/incubator/ExtendedOpenTelemetryTest.java +++ b/api/incubator/src/test/java/io/opentelemetry/api/incubator/ExtendedOpenTelemetryTest.java @@ -24,6 +24,7 @@ import io.opentelemetry.sdk.extension.incubator.ExtendedOpenTelemetrySdk; import io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel; +import io.opentelemetry.sdk.resources.Resource; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -60,7 +61,8 @@ void globalOpenTelemetry() { GlobalOpenTelemetry.set( ExtendedOpenTelemetrySdk.create( OpenTelemetrySdk.builder().build(), - SdkConfigProvider.create(new OpenTelemetryConfigurationModel()))); + SdkConfigProvider.create(new OpenTelemetryConfigurationModel()), + Resource.empty())); assertThat(GlobalOpenTelemetry.get()).isInstanceOf(ExtendedOpenTelemetry.class); } diff --git a/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationSpiTest.java b/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationSpiTest.java index 85e79634b61..12914c414f6 100644 --- a/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationSpiTest.java +++ b/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationSpiTest.java @@ -28,17 +28,18 @@ class DeclarativeConfigurationSpiTest { @Test void configFromSpi() { + Resource resource = Resource.getDefault().toBuilder().put("service.name", "test").build(); ExtendedOpenTelemetrySdk expectedSdk = ExtendedOpenTelemetrySdk.create( OpenTelemetrySdk.builder() .setTracerProvider( SdkTracerProvider.builder() - .setResource( - Resource.getDefault().toBuilder().put("service.name", "test").build()) + .setResource(resource) .addSpanProcessor(SimpleSpanProcessor.create(LoggingSpanExporter.create())) .build()) .build(), - SdkConfigProvider.create(new OpenTelemetryConfigurationModel())); + SdkConfigProvider.create(new OpenTelemetryConfigurationModel()), + resource); cleanup.addCloseable(expectedSdk); AutoConfiguredOpenTelemetrySdkBuilder builder = spy(AutoConfiguredOpenTelemetrySdk.builder()); Thread thread = new Thread(); diff --git a/sdk-extensions/autoconfigure/src/testIncubating/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationTest.java b/sdk-extensions/autoconfigure/src/testIncubating/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationTest.java index 3d04962237a..05a0c7e9498 100644 --- a/sdk-extensions/autoconfigure/src/testIncubating/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationTest.java +++ b/sdk-extensions/autoconfigure/src/testIncubating/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationTest.java @@ -136,7 +136,8 @@ void configFile_Valid() { .addSpanProcessor(SimpleSpanProcessor.create(LoggingSpanExporter.create())) .build()) .build(), - ((ExtendedOpenTelemetrySdk) openTelemetrySdk).getSdkConfigProvider()); + ((ExtendedOpenTelemetrySdk) openTelemetrySdk).getSdkConfigProvider(), + resource); cleanup.addCloseable(expectedSdk); assertThat(openTelemetrySdk.toString()).hasToString(expectedSdk.toString()); // AutoConfiguredOpenTelemetrySdk#getResource() is set to a dummy value when configuring from diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/ExtendedOpenTelemetrySdk.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/ExtendedOpenTelemetrySdk.java index 5b24dbfd035..01ee96e451c 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/ExtendedOpenTelemetrySdk.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/ExtendedOpenTelemetrySdk.java @@ -10,6 +10,7 @@ import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider; +import io.opentelemetry.sdk.resources.Resource; import java.io.Closeable; import javax.annotation.Nullable; import javax.annotation.concurrent.ThreadSafe; @@ -20,9 +21,10 @@ public final class ExtendedOpenTelemetrySdk extends OpenTelemetrySdk private final OpenTelemetrySdk openTelemetrySdk; private final ObfuscatedConfigProvider configProvider; + private final Resource resource; private ExtendedOpenTelemetrySdk( - OpenTelemetrySdk openTelemetrySdk, SdkConfigProvider configProvider) { + OpenTelemetrySdk openTelemetrySdk, SdkConfigProvider configProvider, Resource resource) { super( openTelemetrySdk.getSdkTracerProvider(), openTelemetrySdk.getSdkMeterProvider(), @@ -30,11 +32,12 @@ private ExtendedOpenTelemetrySdk( openTelemetrySdk.getPropagators()); this.openTelemetrySdk = openTelemetrySdk; this.configProvider = new ObfuscatedConfigProvider(configProvider); + this.resource = resource; } public static ExtendedOpenTelemetrySdk create( - OpenTelemetrySdk openTelemetrySdk, SdkConfigProvider sdkConfigProvider) { - return new ExtendedOpenTelemetrySdk(openTelemetrySdk, sdkConfigProvider); + OpenTelemetrySdk openTelemetrySdk, SdkConfigProvider sdkConfigProvider, Resource resource) { + return new ExtendedOpenTelemetrySdk(openTelemetrySdk, sdkConfigProvider, resource); } @Override @@ -42,6 +45,10 @@ public ConfigProvider getConfigProvider() { return configProvider; } + public Resource getResource() { + return resource; + } + /** Returns the {@link SdkConfigProvider} for this {@link ExtendedOpenTelemetrySdk}. */ public SdkConfigProvider getSdkConfigProvider() { return configProvider.unobfuscate(); @@ -54,6 +61,8 @@ public String toString() { + openTelemetrySdk + ", configProvider=" + configProvider.unobfuscate() + + ", resource=" + + resource + "}"; } diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetryConfigurationFactory.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetryConfigurationFactory.java index ea0ad7ef2a8..90ec32d011a 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetryConfigurationFactory.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetryConfigurationFactory.java @@ -43,7 +43,7 @@ public ExtendedOpenTelemetrySdk create( // behavior for experimental properties. if (Objects.equals(true, model.getDisabled())) { - return ExtendedOpenTelemetrySdk.create(builder.build(), sdkConfigProvider); + return ExtendedOpenTelemetrySdk.create(builder.build(), sdkConfigProvider, Resource.empty()); } if (model.getPropagator() != null) { @@ -92,6 +92,6 @@ public ExtendedOpenTelemetrySdk create( } OpenTelemetrySdk openTelemetrySdk = context.addCloseable(builder.build()); - return ExtendedOpenTelemetrySdk.create(openTelemetrySdk, sdkConfigProvider); + return ExtendedOpenTelemetrySdk.create(openTelemetrySdk, sdkConfigProvider, resource); } } diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetryConfigurationFactoryTest.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetryConfigurationFactoryTest.java index d06e9164356..53c35afb495 100644 --- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetryConfigurationFactoryTest.java +++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetryConfigurationFactoryTest.java @@ -58,6 +58,7 @@ import io.opentelemetry.sdk.metrics.InstrumentSelector; import io.opentelemetry.sdk.metrics.SdkMeterProvider; import io.opentelemetry.sdk.metrics.View; +import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.trace.SdkTracerProvider; import io.opentelemetry.sdk.trace.SpanLimits; import java.io.Closeable; @@ -124,7 +125,9 @@ void create_Defaults() { new OpenTelemetryConfigurationModel().withFileFormat("1.0-rc.1"); ExtendedOpenTelemetrySdk expectedSdk = ExtendedOpenTelemetrySdk.create( - OpenTelemetrySdk.builder().build(), SdkConfigProvider.create(model)); + OpenTelemetrySdk.builder().build(), + SdkConfigProvider.create(model), + Resource.getDefault()); cleanup.addCloseable(expectedSdk); ExtendedOpenTelemetrySdk sdk = @@ -155,7 +158,7 @@ void create_Disabled() { .withOtlpHttp(new OtlpHttpExporterModel())))))); ExtendedOpenTelemetrySdk expectedSdk = ExtendedOpenTelemetrySdk.create( - OpenTelemetrySdk.builder().build(), SdkConfigProvider.create(model)); + OpenTelemetrySdk.builder().build(), SdkConfigProvider.create(model), Resource.empty()); cleanup.addCloseable(expectedSdk); ExtendedOpenTelemetrySdk sdk = @@ -312,7 +315,8 @@ void create_Configured() throws NoSuchFieldException, IllegalAccessException { View.builder().setName("stream-name").build()) .build()) .build(), - SdkConfigProvider.create(model)); + SdkConfigProvider.create(model), + expectedResource); cleanup.addCloseable(expectedSdk); ExtendedOpenTelemetrySdk sdk =