Skip to content

Commit 675334b

Browse files
authored
Update to OpenTelemetry Proto 0.4.0 (open-telemetry#889)
1 parent 7c987d4 commit 675334b

File tree

10 files changed

+341
-163
lines changed

10 files changed

+341
-163
lines changed

ext/opentelemetry-ext-otlp/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
## Unreleased
44

5+
- Update span exporter to use OpenTelemetry Proto v0.4.0 ([#872](https://github.com/open-telemetry/opentelemetry-python/pull/889))
6+
57
## 0.9b0
68

79
Released 2020-06-10

ext/opentelemetry-ext-otlp/src/opentelemetry/ext/otlp/trace_exporter/__init__.py

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@
1515
"""OTLP Span Exporter"""
1616

1717
import logging
18+
from collections.abc import Mapping, Sequence
1819
from time import sleep
19-
from typing import Sequence
20+
from typing import Sequence as TypingSequence
2021

2122
from backoff import expo
2223
from google.rpc.error_details_pb2 import RetryInfo
@@ -34,7 +35,7 @@
3435
from opentelemetry.proto.collector.trace.v1.trace_service_pb2_grpc import (
3536
TraceServiceStub,
3637
)
37-
from opentelemetry.proto.common.v1.common_pb2 import AttributeKeyValue
38+
from opentelemetry.proto.common.v1.common_pb2 import AnyValue, KeyValue
3839
from opentelemetry.proto.resource.v1.resource_pb2 import Resource
3940
from opentelemetry.proto.trace.v1.trace_pb2 import (
4041
InstrumentationLibrarySpans,
@@ -49,26 +50,31 @@
4950

5051

5152
def _translate_key_values(key, value):
52-
key_value = {"key": key}
5353

5454
if isinstance(value, bool):
55-
key_value["bool_value"] = value
55+
any_value = AnyValue(bool_value=value)
5656

5757
elif isinstance(value, str):
58-
key_value["string_value"] = value
58+
any_value = AnyValue(string_value=value)
5959

6060
elif isinstance(value, int):
61-
key_value["int_value"] = value
61+
any_value = AnyValue(int_value=value)
6262

6363
elif isinstance(value, float):
64-
key_value["double_value"] = value
64+
any_value = AnyValue(double_value=value)
65+
66+
elif isinstance(value, Sequence):
67+
any_value = AnyValue(array_value=value)
68+
69+
elif isinstance(value, Mapping):
70+
any_value = AnyValue(kvlist_value=value)
6571

6672
else:
6773
raise Exception(
6874
"Invalid type {} of value {}".format(type(value), value)
6975
)
7076

71-
return key_value
77+
return KeyValue(key=key, value=any_value)
7278

7379

7480
# pylint: disable=no-member
@@ -144,7 +150,7 @@ def _translate_attributes(self, sdk_span):
144150

145151
try:
146152
self._collector_span_kwargs["attributes"].append(
147-
AttributeKeyValue(**_translate_key_values(key, value))
153+
_translate_key_values(key, value)
148154
)
149155
except Exception as error: # pylint: disable=broad-except
150156
logger.exception(error)
@@ -163,9 +169,7 @@ def _translate_events(self, sdk_span):
163169
for key, value in sdk_span_event.attributes.items():
164170
try:
165171
collector_span_event.attributes.append(
166-
AttributeKeyValue(
167-
**_translate_key_values(key, value)
168-
)
172+
_translate_key_values(key, value)
169173
)
170174
# pylint: disable=broad-except
171175
except Exception as error:
@@ -191,9 +195,7 @@ def _translate_links(self, sdk_span):
191195
for key, value in sdk_span_link.attributes.items():
192196
try:
193197
collector_span_link.attributes.append(
194-
AttributeKeyValue(
195-
**_translate_key_values(key, value)
196-
)
198+
_translate_key_values(key, value)
197199
)
198200
# pylint: disable=broad-except
199201
except Exception as error:
@@ -211,7 +213,7 @@ def _translate_status(self, sdk_span):
211213
)
212214

213215
def _translate_spans(
214-
self, sdk_spans: Sequence[SDKSpan],
216+
self, sdk_spans: TypingSequence[SDKSpan],
215217
) -> ExportTraceServiceRequest:
216218

217219
sdk_resource_instrumentation_library_spans = {}
@@ -260,7 +262,7 @@ def _translate_spans(
260262

261263
try:
262264
collector_resource.attributes.append(
263-
AttributeKeyValue(**_translate_key_values(key, value))
265+
_translate_key_values(key, value)
264266
)
265267
except Exception as error: # pylint: disable=broad-except
266268
logger.exception(error)
@@ -276,7 +278,7 @@ def _translate_spans(
276278

277279
return ExportTraceServiceRequest(resource_spans=resource_spans)
278280

279-
def export(self, spans: Sequence[SDKSpan]) -> SpanExportResult:
281+
def export(self, spans: TypingSequence[SDKSpan]) -> SpanExportResult:
280282
# expo returns a generator that yields delay values which grow
281283
# exponentially. Once delay is greater than max_value, the yielded
282284
# value will remain constant.

ext/opentelemetry-ext-otlp/tests/test_otlp_trace_exporter.py

Lines changed: 31 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
TraceServiceServicer,
3131
add_TraceServiceServicer_to_server,
3232
)
33-
from opentelemetry.proto.common.v1.common_pb2 import AttributeKeyValue
33+
from opentelemetry.proto.common.v1.common_pb2 import AnyValue, KeyValue
3434
from opentelemetry.proto.resource.v1.resource_pb2 import (
3535
Resource as CollectorResource,
3636
)
@@ -185,8 +185,10 @@ def test_translate_spans(self):
185185
ResourceSpans(
186186
resource=CollectorResource(
187187
attributes=[
188-
AttributeKeyValue(key="a", int_value=1),
189-
AttributeKeyValue(key="b", bool_value=False),
188+
KeyValue(key="a", value=AnyValue(int_value=1)),
189+
KeyValue(
190+
key="b", value=AnyValue(bool_value=False)
191+
),
190192
]
191193
),
192194
instrumentation_library_spans=[
@@ -211,23 +213,31 @@ def test_translate_spans(self):
211213
),
212214
kind=CollectorSpan.SpanKind.INTERNAL,
213215
attributes=[
214-
AttributeKeyValue(
215-
key="a", int_value=1
216+
KeyValue(
217+
key="a",
218+
value=AnyValue(int_value=1),
216219
),
217-
AttributeKeyValue(
218-
key="b", bool_value=True
220+
KeyValue(
221+
key="b",
222+
value=AnyValue(bool_value=True),
219223
),
220224
],
221225
events=[
222226
CollectorSpan.Event(
223227
name="a",
224228
time_unix_nano=1591240820506462784,
225229
attributes=[
226-
AttributeKeyValue(
227-
key="a", int_value=1
230+
KeyValue(
231+
key="a",
232+
value=AnyValue(
233+
int_value=1
234+
),
228235
),
229-
AttributeKeyValue(
230-
key="b", int_value=False
236+
KeyValue(
237+
key="b",
238+
value=AnyValue(
239+
bool_value=False
240+
),
231241
),
232242
],
233243
)
@@ -240,11 +250,17 @@ def test_translate_spans(self):
240250
),
241251
span_id=int.to_bytes(2, 8, "big"),
242252
attributes=[
243-
AttributeKeyValue(
244-
key="a", int_value=1
253+
KeyValue(
254+
key="a",
255+
value=AnyValue(
256+
int_value=1
257+
),
245258
),
246-
AttributeKeyValue(
247-
key="b", bool_value=False
259+
KeyValue(
260+
key="b",
261+
value=AnyValue(
262+
bool_value=False
263+
),
248264
),
249265
],
250266
)

0 commit comments

Comments
 (0)