Skip to content

Commit 1249421

Browse files
committed
return resource in auto configured sdk
1 parent 89c7973 commit 1249421

4 files changed

Lines changed: 57 additions & 13 deletions

File tree

sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/IncubatingUtil.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,12 @@ private static AutoConfiguredOpenTelemetrySdk getOpenTelemetrySdk(
111111
sdkConfigProvider.getMethod("create", openTelemetryConfiguration, ComponentLoader.class);
112112
ConfigProvider configProvider =
113113
(ConfigProvider) createFileConfigProvider.invoke(null, model, componentLoader);
114-
// Note: can't access file configuration resource without reflection so setting a dummy
115-
// resource
116-
return AutoConfiguredOpenTelemetrySdk.create(sdk, Resource.getDefault(), null, configProvider);
114+
Method createResource =
115+
declarativeConfiguration.getMethod(
116+
"createResource", openTelemetryConfiguration, ComponentLoader.class);
117+
Resource resource = (Resource) createResource.invoke(null, model, componentLoader);
118+
119+
return AutoConfiguredOpenTelemetrySdk.create(sdk, resource, null, configProvider);
117120
}
118121

119122
// Visible for testing

sdk-extensions/autoconfigure/src/testIncubating/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat;
99
import static java.util.Collections.singletonMap;
10-
import static org.assertj.core.api.Assertions.assertThat;
1110
import static org.assertj.core.api.Assertions.assertThatCode;
1211
import static org.assertj.core.api.Assertions.assertThatThrownBy;
1312
import static org.mockito.ArgumentMatchers.any;
@@ -127,13 +126,14 @@ void configFile_Valid() {
127126
cleanup.addCloseable(autoConfiguredOpenTelemetrySdk.getOpenTelemetrySdk());
128127

129128
OpenTelemetrySdk openTelemetrySdk = autoConfiguredOpenTelemetrySdk.getOpenTelemetrySdk();
129+
Resource resource = Resource.getDefault().toBuilder().put("service.name", "test").build();
130130
ExtendedOpenTelemetrySdk expectedSdk =
131131
ExtendedOpenTelemetrySdk.create(
132132
OpenTelemetrySdk.builder()
133133
.setTracerProvider(
134134
SdkTracerProvider.builder()
135135
.setResource(
136-
Resource.getDefault().toBuilder().put("service.name", "test").build())
136+
resource)
137137
.addSpanProcessor(SimpleSpanProcessor.create(LoggingSpanExporter.create()))
138138
.build())
139139
.build(),
@@ -142,7 +142,7 @@ void configFile_Valid() {
142142
assertThat(openTelemetrySdk.toString()).hasToString(expectedSdk.toString());
143143
// AutoConfiguredOpenTelemetrySdk#getResource() is set to a dummy value when configuring from
144144
// file
145-
assertThat(autoConfiguredOpenTelemetrySdk.getResource()).isEqualTo(Resource.getDefault());
145+
assertThat(autoConfiguredOpenTelemetrySdk.getResource()).isEqualTo(resource);
146146
verify(builder, times(1)).shutdownHook(autoConfiguredOpenTelemetrySdk.getOpenTelemetrySdk());
147147
assertThat(Runtime.getRuntime().removeShutdownHook(thread)).isTrue();
148148
logCapturer.assertContains("Autoconfiguring from configuration file: " + configFilePath);

sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/DeclarativeConfiguration.java

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import io.opentelemetry.sdk.extension.incubator.ExtendedOpenTelemetrySdk;
2020
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
2121
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.SamplerModel;
22+
import io.opentelemetry.sdk.resources.Resource;
2223
import io.opentelemetry.sdk.trace.samplers.Sampler;
2324
import java.io.Closeable;
2425
import java.io.IOException;
@@ -117,20 +118,38 @@ public static ExtendedOpenTelemetrySdk create(
117118
OpenTelemetryConfigurationModel configurationModel, ComponentLoader componentLoader) {
118119
SpiHelper spiHelper = SpiHelper.create(componentLoader);
119120

121+
ExtendedOpenTelemetrySdk sdk = createAndMaybeCleanup(
122+
OpenTelemetryConfigurationFactory.getInstance(),
123+
spiHelper,
124+
customizeModel(configurationModel, spiHelper));
125+
callAutoConfigureListeners(spiHelper, sdk);
126+
return sdk;
127+
}
128+
129+
public static Resource createResource(
130+
OpenTelemetryConfigurationModel configurationModel, ComponentLoader componentLoader) {
131+
SpiHelper spiHelper = SpiHelper.create(componentLoader);
132+
OpenTelemetryConfigurationModel model = customizeModel(configurationModel, spiHelper);
133+
134+
Resource resource = Resource.getDefault();
135+
if (model.getResource() != null) {
136+
resource =
137+
ResourceFactory.getInstance()
138+
.create(model.getResource(), new DeclarativeConfigContext(spiHelper));
139+
}
140+
return resource;
141+
}
142+
143+
private static OpenTelemetryConfigurationModel customizeModel(
144+
OpenTelemetryConfigurationModel configurationModel, SpiHelper spiHelper) {
120145
DeclarativeConfigurationBuilder builder = new DeclarativeConfigurationBuilder();
121146

122147
for (DeclarativeConfigurationCustomizerProvider provider :
123148
spiHelper.loadOrdered(DeclarativeConfigurationCustomizerProvider.class)) {
124149
provider.customize(builder);
125150
}
126151

127-
ExtendedOpenTelemetrySdk sdk =
128-
createAndMaybeCleanup(
129-
OpenTelemetryConfigurationFactory.getInstance(),
130-
spiHelper,
131-
builder.customizeModel(configurationModel));
132-
callAutoConfigureListeners(spiHelper, sdk);
133-
return sdk;
152+
return builder.customizeModel(configurationModel);
134153
}
135154

136155
/**

sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/DeclarativeConfigurationCreateTest.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
2424
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.SpanProcessorModel;
2525
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.TracerProviderModel;
26+
import io.opentelemetry.sdk.resources.Resource;
2627
import java.io.ByteArrayInputStream;
2728
import java.io.File;
2829
import java.io.IOException;
@@ -194,4 +195,25 @@ void callAutoConfigureListeners_exceptionIsCaught() {
194195
spiHelper, OpenTelemetrySdk.builder().build()))
195196
.doesNotThrowAnyException();
196197
}
198+
199+
@Test
200+
void createResource() {
201+
OpenTelemetryConfigurationModel model = new OpenTelemetryConfigurationModel();
202+
model.withFileFormat("1.0-rc.1");
203+
Resource resource =
204+
DeclarativeConfiguration.createResource(
205+
model,
206+
// customizer is TestDeclarativeConfigurationCustomizerProvider
207+
ComponentLoader.forClassLoader(
208+
DeclarativeConfigurationCreateTest.class.getClassLoader()));
209+
assertThat(resource.toString())
210+
.contains(
211+
"Resource{schemaUrl=null, attributes={"
212+
+ "color=\"blue\", "
213+
+ "foo=\"bar\", "
214+
+ "service.name=\"unknown_service:java\", "
215+
+ "telemetry.sdk.language=\"java\", "
216+
+ "telemetry.sdk.name=\"opentelemetry\", "
217+
+ "telemetry.sdk.version=\"");
218+
}
197219
}

0 commit comments

Comments
 (0)