Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 87d7ced

Browse files
authored
Add support for OTLP v0.6.0 (open-telemetry#1472)
1 parent 90db9dc commit 87d7ced

File tree

17 files changed

+264
-509
lines changed

17 files changed

+264
-509
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
66

77
## [Unreleased](https://github.com/open-telemetry/opentelemetry-python/compare/v0.16b1...HEAD)
88

9+
- Add support for OTLP v0.6.0
10+
([#1472](https://github.com/open-telemetry/opentelemetry-python/pull/1472))
11+
912
- Add protobuf via gRPC exporting support for Jaeger
1013
([#1471](https://github.com/open-telemetry/opentelemetry-python/pull/1471))
1114

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -197,13 +197,15 @@ def _translate_links(self, sdk_span: SDKSpan) -> None:
197197
)
198198

199199
def _translate_status(self, sdk_span: SDKSpan) -> None:
200+
# pylint: disable=no-member
200201
if sdk_span.status is not None:
201-
# TODO: Update this when the proto definitions are updated to include UNSET and ERROR
202-
proto_status_code = Status.STATUS_CODE_OK
203-
if sdk_span.status.status_code is StatusCode.ERROR:
204-
proto_status_code = Status.STATUS_CODE_UNKNOWN_ERROR
202+
deprecated_code = Status.DEPRECATED_STATUS_CODE_OK
203+
if sdk_span.status.status_code == StatusCode.ERROR:
204+
deprecated_code = Status.DEPRECATED_STATUS_CODE_UNKNOWN_ERROR
205205
self._collector_span_kwargs["status"] = Status(
206-
code=proto_status_code, message=sdk_span.status.description,
206+
deprecated_code=deprecated_code,
207+
code=sdk_span.status.status_code.value,
208+
message=sdk_span.status.description,
207209
)
208210

209211
def _translate_data(

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

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@
4747
from opentelemetry.proto.trace.v1.trace_pb2 import Span as OTLPSpan
4848
from opentelemetry.proto.trace.v1.trace_pb2 import Status
4949
from opentelemetry.sdk.resources import Resource as SDKResource
50+
from opentelemetry.sdk.trace import Status as SDKStatus
51+
from opentelemetry.sdk.trace import StatusCode as SDKStatusCode
5052
from opentelemetry.sdk.trace import TracerProvider, _Span
5153
from opentelemetry.sdk.trace.export import (
5254
SimpleExportSpanProcessor,
@@ -343,3 +345,72 @@ def test_translate_spans(self):
343345

344346
# pylint: disable=protected-access
345347
self.assertEqual(expected, self.exporter._translate_data([self.span]))
348+
349+
def _check_translated_status(
350+
self,
351+
translated: ExportTraceServiceRequest,
352+
code_expected: Status,
353+
deprecated_code_expected: Status,
354+
):
355+
status = (
356+
translated.resource_spans[0]
357+
.instrumentation_library_spans[0]
358+
.spans[0]
359+
.status
360+
)
361+
362+
self.assertEqual(
363+
status.code, code_expected,
364+
)
365+
self.assertEqual(
366+
status.deprecated_code, deprecated_code_expected,
367+
)
368+
369+
def test_span_status_translate(self):
370+
# pylint: disable=protected-access,no-member
371+
unset = SDKStatus(status_code=SDKStatusCode.UNSET)
372+
ok = SDKStatus(status_code=SDKStatusCode.OK)
373+
error = SDKStatus(status_code=SDKStatusCode.ERROR)
374+
unset_translated = self.exporter._translate_data(
375+
[_create_span_with_status(unset)]
376+
)
377+
ok_translated = self.exporter._translate_data(
378+
[_create_span_with_status(ok)]
379+
)
380+
error_translated = self.exporter._translate_data(
381+
[_create_span_with_status(error)]
382+
)
383+
self._check_translated_status(
384+
unset_translated,
385+
Status.STATUS_CODE_UNSET,
386+
Status.DEPRECATED_STATUS_CODE_OK,
387+
)
388+
self._check_translated_status(
389+
ok_translated,
390+
Status.STATUS_CODE_OK,
391+
Status.DEPRECATED_STATUS_CODE_OK,
392+
)
393+
self._check_translated_status(
394+
error_translated,
395+
Status.STATUS_CODE_ERROR,
396+
Status.DEPRECATED_STATUS_CODE_UNKNOWN_ERROR,
397+
)
398+
399+
400+
def _create_span_with_status(status: SDKStatus):
401+
span = _Span(
402+
"a",
403+
context=Mock(
404+
**{
405+
"trace_state": OrderedDict([("a", "b"), ("c", "d")]),
406+
"span_id": 10217189687419569865,
407+
"trace_id": 67545097771067222548457157018666467027,
408+
}
409+
),
410+
parent=Mock(**{"span_id": 12345}),
411+
instrumentation_info=InstrumentationInfo(
412+
name="name", version="version"
413+
),
414+
)
415+
span.set_status(status)
416+
return span

opentelemetry-api/src/opentelemetry/trace/status.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@
2222
class StatusCode(enum.Enum):
2323
"""Represents the canonical set of status codes of a finished Span."""
2424

25-
OK = 0
26-
"""The operation has been validated by an Application developer or Operator to have completed successfully."""
27-
28-
UNSET = 1
25+
UNSET = 0
2926
"""The default status."""
3027

28+
OK = 1
29+
"""The operation has been validated by an Application developer or Operator to have completed successfully."""
30+
3131
ERROR = 2
3232
"""The operation contains an error."""
3333

opentelemetry-proto/src/opentelemetry/proto/collector/logs/v1/logs_service_pb2.pyi

Lines changed: 0 additions & 16 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

opentelemetry-proto/src/opentelemetry/proto/collector/metrics/v1/metrics_service_pb2.pyi

Lines changed: 0 additions & 16 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

opentelemetry-proto/src/opentelemetry/proto/collector/trace/v1/trace_service_pb2.pyi

Lines changed: 0 additions & 16 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

opentelemetry-proto/src/opentelemetry/proto/common/v1/common_pb2.pyi

Lines changed: 0 additions & 40 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)