|
15 | 15 | class SolarWindsDistro(BaseDistro):
|
16 | 16 | """OpenTelemetry Distro for SolarWinds reporting environment"""
|
17 | 17 |
|
| 18 | + _TRACECONTEXT_PROPAGATOR = "tracecontext" |
| 19 | + _SW_PROPAGATOR = "solarwinds_propagator" |
18 | 20 | _DEFAULT_SW_PROPAGATORS = [
|
19 |
| - "tracecontext", |
| 21 | + _TRACECONTEXT_PROPAGATOR, |
20 | 22 | "baggage",
|
21 |
| - "solarwinds_propagator", |
| 23 | + _SW_PROPAGATOR, |
22 | 24 | ]
|
23 | 25 | _DEFAULT_SW_TRACES_EXPORTER = "solarwinds_exporter"
|
24 | 26 |
|
25 | 27 | def _configure(self, **kwargs):
|
26 | 28 | environ.setdefault(OTEL_TRACES_EXPORTER, self._DEFAULT_SW_TRACES_EXPORTER)
|
27 | 29 |
|
28 |
| - # Configure context propagators to always include |
29 |
| - # tracecontext,baggage,solarwinds -- first and in that order |
30 |
| - # -- plus any others specified by env var |
31 | 30 | environ_propagators = environ.get(
|
32 | 31 | OTEL_PROPAGATORS,
|
33 | 32 | ",".join(self._DEFAULT_SW_PROPAGATORS)
|
34 | 33 | ).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 |
35 | 38 | 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.") |
40 | 46 | environ[OTEL_PROPAGATORS] = ",".join(environ_propagators)
|
41 | 47 |
|
42 | 48 | logger.debug("Configured SolarWindsDistro: {}, {}, {}".format(
|
|
0 commit comments