Skip to content

Commit 02bde11

Browse files
Merge pull request #15 from appoptics/NH-2313-adjust-propagator-config-by-customer
NH-2313 adjust CompositePropagator config with OTEL_PROPAGATORS
2 parents 7ffb1a9 + 2842209 commit 02bde11

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

opentelemetry_distro_solarwinds/distro.py

+15-9
Original file line numberDiff line numberDiff line change
@@ -15,28 +15,34 @@
1515
class SolarWindsDistro(BaseDistro):
1616
"""OpenTelemetry Distro for SolarWinds reporting environment"""
1717

18+
_TRACECONTEXT_PROPAGATOR = "tracecontext"
19+
_SW_PROPAGATOR = "solarwinds_propagator"
1820
_DEFAULT_SW_PROPAGATORS = [
19-
"tracecontext",
21+
_TRACECONTEXT_PROPAGATOR,
2022
"baggage",
21-
"solarwinds_propagator",
23+
_SW_PROPAGATOR,
2224
]
2325
_DEFAULT_SW_TRACES_EXPORTER = "solarwinds_exporter"
2426

2527
def _configure(self, **kwargs):
2628
environ.setdefault(OTEL_TRACES_EXPORTER, self._DEFAULT_SW_TRACES_EXPORTER)
2729

28-
# Configure context propagators to always include
29-
# tracecontext,baggage,solarwinds -- first and in that order
30-
# -- plus any others specified by env var
3130
environ_propagators = environ.get(
3231
OTEL_PROPAGATORS,
3332
",".join(self._DEFAULT_SW_PROPAGATORS)
3433
).split(",")
34+
# If not using the default propagators,
35+
# can any arbitrary list BUT
36+
# (1) must include tracecontext and solarwinds_propagator
37+
# (2) tracecontext must be before solarwinds_propagator
3538
if environ_propagators != self._DEFAULT_SW_PROPAGATORS:
36-
for default in self._DEFAULT_SW_PROPAGATORS:
37-
while default in environ_propagators:
38-
environ_propagators.remove(default)
39-
environ_propagators = self._DEFAULT_SW_PROPAGATORS + environ_propagators
39+
if not self._TRACECONTEXT_PROPAGATOR in environ_propagators or \
40+
not self._SW_PROPAGATOR in environ_propagators:
41+
raise ValueError("Must include tracecontext and solarwinds_propagator in OTEL_PROPAGATORS to use SolarWinds Observability.")
42+
43+
if environ_propagators.index(self._SW_PROPAGATOR) \
44+
< environ_propagators.index(self._TRACECONTEXT_PROPAGATOR):
45+
raise ValueError("tracecontext must be before solarwinds_propagator in OTEL_PROPAGATORS to use SolarWinds Observability.")
4046
environ[OTEL_PROPAGATORS] = ",".join(environ_propagators)
4147

4248
logger.debug("Configured SolarWindsDistro: {}, {}, {}".format(

0 commit comments

Comments
 (0)