Skip to content

Commit 3c6f56b

Browse files
muncusaabmass
andauthored
Create a Readonly Propagator to match the golang "One Way" propagator. (#196)
* Create a Readonly Propagator to match the golang "One Way" propagator. Also adds usage information to README.rst for both propagators. * lint fix * Rename "Readonly" to "OneWay" for consistency with other languages also corrects a type error with an empty set. * style fix from @aabmass Co-authored-by: Aaron Abbott <[email protected]> Co-authored-by: Aaron Abbott <[email protected]>
1 parent 8ce5ecf commit 3c6f56b

File tree

2 files changed

+65
-2
lines changed

2 files changed

+65
-2
lines changed

opentelemetry-propagator-gcp/README.rst

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,52 @@ Installation
1818
1919
pip install opentelemetry-propagator-gcp
2020
21-
..
22-
TODO: Add usage info here
21+
Usage
22+
-----
23+
24+
The ``CloudTraceOneWayPropagator`` reads the Google Cloud
25+
``X-Cloud-Trace-Context`` format, but does not write the
26+
``X-Cloud-Trace-Context`` header on outgoing requests. It is intended for use
27+
with a CompositePropagator as below.
28+
29+
.. code-block:: python
30+
31+
from opentelemetry.propagate import set_global_textmap
32+
from opentelemetry.propagators.composite import CompositePropagator
33+
from opentelemetry.propagators.cloud_trace_propagator import (
34+
CloudTraceOneWayPropagator,
35+
)
36+
set_global_textmap(
37+
CompositePropagator([
38+
CloudTraceOneWayPropagator(),
39+
propagate.get_global_textmap(),
40+
]),
41+
)
42+
43+
The ``CloudTraceFormatPropagator`` reads and writes the
44+
``X-Cloud-Trace-Context`` header formats. Note that when using this propagator,
45+
the ``sampled`` bit is interpreted as the ``TRACE_TRUE`` flag, which may cause a
46+
higher sampling rate than desired. See the `Trace documentation
47+
<https://cloud.google.com/trace/docs/setup#force-trace>` for additional context.
48+
49+
.. code-block:: python
50+
51+
from opentelemetry.propagate import set_global_textmap
52+
from opentelemetry.propagators.cloud_trace_propagator import (
53+
CloudTraceFormatPropagator,
54+
)
55+
56+
# Set the X-Cloud-Trace-Context header
57+
set_global_textmap(CloudTraceFormatPropagator())
58+
.. code-block:: python
59+
60+
from opentelemetry.propagate import set_global_textmap
61+
from opentelemetry.propagators.cloud_trace_propagator import (
62+
CloudTraceFormatPropagator,
63+
)
64+
65+
# Set the X-Cloud-Trace-Context header
66+
set_global_textmap(CloudTraceFormatPropagator())
2367
2468
2569
References

opentelemetry-propagator-gcp/src/opentelemetry/propagators/cloud_trace_propagator/__init__.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,3 +138,22 @@ def inject(
138138
@property
139139
def fields(self) -> typing.Set[str]:
140140
return _FIELDS
141+
142+
143+
class CloudTraceOneWayPropagator(CloudTraceFormatPropagator):
144+
"""This class extracts Trace Context in the Google Cloud format, but does
145+
not inject this header. It is intended for use in a Composite Propagator to
146+
inject context in a different format than was received.
147+
"""
148+
149+
def inject(
150+
self,
151+
carrier: textmap.CarrierT,
152+
context: typing.Optional[Context] = None,
153+
setter: textmap.Setter = textmap.default_setter,
154+
) -> None:
155+
return
156+
157+
@property
158+
def fields(self) -> typing.Set[str]:
159+
return set()

0 commit comments

Comments
 (0)