Skip to content

Commit 4a25dc3

Browse files
committed
config bridge
1 parent e3236b1 commit 4a25dc3

File tree

2 files changed

+32
-10
lines changed

2 files changed

+32
-10
lines changed

instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/OpenTelemetryAutoConfiguration.java

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,16 @@
55

66
package io.opentelemetry.instrumentation.spring.autoconfigure;
77

8-
import io.opentelemetry.api.GlobalOpenTelemetry;
98
import io.opentelemetry.api.OpenTelemetry;
9+
import io.opentelemetry.api.incubator.config.ConfigProvider;
1010
import io.opentelemetry.api.incubator.config.GlobalConfigProvider;
1111
import io.opentelemetry.api.trace.TracerProvider;
12+
import io.opentelemetry.instrumentation.api.incubator.config.internal.InstrumentationConfig;
1213
import io.opentelemetry.instrumentation.api.internal.EmbeddedInstrumentationProperties;
1314
import io.opentelemetry.instrumentation.sdk.DeclarativeConfigPropertiesBridge;
1415
import io.opentelemetry.instrumentation.spring.autoconfigure.internal.OtelMapConverter;
1516
import io.opentelemetry.instrumentation.spring.autoconfigure.internal.SdkEnabled;
17+
import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.ConfigPropertiesBridge;
1618
import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.OtelResourceProperties;
1719
import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.OtelSpringProperties;
1820
import io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties.OtlpExporterProperties;
@@ -72,8 +74,7 @@ public OpenTelemetryAutoConfiguration() {}
7274
static class OpenTelemetrySdkConfig {
7375

7476
@Bean
75-
public ComponentLoader openTelemetrySdkComponentLoader(
76-
ApplicationContext applicationContext) {
77+
public ComponentLoader openTelemetrySdkComponentLoader(ApplicationContext applicationContext) {
7778
return new OpenTelemetrySdkComponentLoader(applicationContext);
7879
}
7980

@@ -158,14 +159,14 @@ public OpenTelemetryConfigurationModel openTelemetryConfigurationModel(
158159
}
159160

160161
@Bean
161-
public OpenTelemetry openTelemetry(OpenTelemetryConfigurationModel model, ComponentLoader componentLoader) {
162-
OpenTelemetrySdk sdk =
163-
DeclarativeConfiguration.create(model, componentLoader);
162+
public OpenTelemetry openTelemetry(
163+
OpenTelemetryConfigurationModel model, ComponentLoader componentLoader) {
164+
OpenTelemetrySdk sdk = DeclarativeConfiguration.create(model, componentLoader);
164165

165166
Runtime.getRuntime().addShutdownHook(new Thread(sdk::close));
166167

167-
GlobalOpenTelemetry.set(sdk);
168-
GlobalConfigProvider.set(SdkConfigProvider.create(model));
168+
SdkConfigProvider configProvider = SdkConfigProvider.create(model);
169+
GlobalConfigProvider.set(configProvider);
169170

170171
System.out.println(
171172
"OpenTelemetry SDK initialized with configuration from: " + sdk); // todo remove
@@ -179,6 +180,17 @@ public OpenTelemetry openTelemetry(OpenTelemetryConfigurationModel model, Compon
179180
return null;
180181
}
181182

183+
@Bean
184+
public ConfigProvider configProvider(OpenTelemetryConfigurationModel model) {
185+
return SdkConfigProvider.create(model);
186+
}
187+
188+
@Bean
189+
public InstrumentationConfig instrumentationConfig(
190+
ConfigProperties properties, ConfigProvider configProvider) {
191+
return new ConfigPropertiesBridge(properties, configProvider);
192+
}
193+
182194
/**
183195
* Expose the {@link ConfigProperties} bean for use in other auto-configurations.
184196
*

instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/ConfigPropertiesBridge.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55

66
package io.opentelemetry.instrumentation.spring.autoconfigure.internal.properties;
77

8+
import io.opentelemetry.api.incubator.config.ConfigProvider;
89
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
10+
import io.opentelemetry.api.incubator.config.InstrumentationConfigUtil;
911
import io.opentelemetry.instrumentation.api.incubator.config.internal.InstrumentationConfig;
1012
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
1113
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
@@ -23,9 +25,16 @@
2325
public final class ConfigPropertiesBridge implements InstrumentationConfig {
2426

2527
private final ConfigProperties configProperties;
28+
@Nullable private final ConfigProvider configProvider;
2629

2730
public ConfigPropertiesBridge(ConfigProperties configProperties) {
31+
this(configProperties, null);
32+
}
33+
34+
public ConfigPropertiesBridge(
35+
ConfigProperties configProperties, @Nullable ConfigProvider configProvider) {
2836
this.configProperties = configProperties;
37+
this.configProvider = configProvider;
2938
}
3039

3140
@Nullable
@@ -113,7 +122,8 @@ public Map<String, String> getMap(String name, Map<String, String> defaultValue)
113122
@Nullable
114123
@Override
115124
public DeclarativeConfigProperties getDeclarativeConfig(String instrumentationName) {
116-
// create a spring boot bridge for DeclarativeConfigProperties
117-
return null;
125+
return configProvider != null
126+
? InstrumentationConfigUtil.javaInstrumentationConfig(configProvider, instrumentationName)
127+
: null;
118128
}
119129
}

0 commit comments

Comments
 (0)