Skip to content

Commit f56fc71

Browse files
committed
config bridge
1 parent 8dc2ef4 commit f56fc71

File tree

2 files changed

+32
-11
lines changed

2 files changed

+32
-11
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 & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import io.opentelemetry.api.incubator.config.ConfigProvider;
99
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
10+
import io.opentelemetry.api.incubator.config.InstrumentationConfigUtil;
1011
import io.opentelemetry.instrumentation.api.incubator.config.internal.InstrumentationConfig;
1112
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
1213
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
@@ -24,9 +25,16 @@
2425
public final class ConfigPropertiesBridge implements InstrumentationConfig {
2526

2627
private final ConfigProperties configProperties;
28+
@Nullable private final ConfigProvider configProvider;
2729

2830
public ConfigPropertiesBridge(ConfigProperties configProperties) {
31+
this(configProperties, null);
32+
}
33+
34+
public ConfigPropertiesBridge(
35+
ConfigProperties configProperties, @Nullable ConfigProvider configProvider) {
2936
this.configProperties = configProperties;
37+
this.configProvider = configProvider;
3038
}
3139

3240
@Nullable
@@ -124,8 +132,9 @@ public DeclarativeConfigProperties getDeclarativeConfig(String node) {
124132

125133
@Nullable
126134
@Override
127-
public ConfigProvider getConfigProvider() {
128-
// declarative config support will be added in the future
129-
return null;
135+
public DeclarativeConfigProperties getDeclarativeConfig(String instrumentationName) {
136+
return configProvider != null
137+
? InstrumentationConfigUtil.javaInstrumentationConfig(configProvider, instrumentationName)
138+
: null;
130139
}
131140
}

0 commit comments

Comments
 (0)