Skip to content

Commit ec21f8c

Browse files
authored
Initial v1 payload support via conversion (#234)
* Initial v1 payload support via conversion * add more span fields * fix v1 test * remove unused test * Add ability to fetch v1 traces * raise specific error on bad streaming string * add support and test for span events * add support and test for span links * Finish adding support for span links * make types happy * put all fields in meta or metrics * formatting * more formatting * more more formatting * release note * Remove unused import * fix more CI * comments clean up * ugh why are there so many different linters * remove non-empty chunk in v1 requirement * Add enum constants to improve readability * lint fix
1 parent 2b779b1 commit ec21f8c

File tree

5 files changed

+757
-1
lines changed

5 files changed

+757
-1
lines changed

ddapm_test_agent/agent.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
from .trace import Span
6060
from .trace import Trace
6161
from .trace import TraceMap
62+
from .trace import decode_v1 as trace_decode_v1
6263
from .trace import decode_v04 as trace_decode_v04
6364
from .trace import decode_v05 as trace_decode_v05
6465
from .trace import decode_v07 as trace_decode_v07
@@ -264,6 +265,7 @@ def __init__(self) -> None:
264265
"/v0.4/traces",
265266
"/v0.5/traces",
266267
"/v0.7/traces",
268+
"/v1.0/traces",
267269
"/v0.6/stats",
268270
"/v0.7/config",
269271
"/telemetry/proxy/api/v2/apmtelemetry",
@@ -445,6 +447,8 @@ async def _traces_from_request(self, req: Request) -> List[List[Span]]:
445447
return self._decode_v05_traces(req)
446448
elif req.match_info.handler == self.handle_v07_traces:
447449
return self._decode_v07_traces(req)
450+
elif req.match_info.handler == self.handle_v1_traces:
451+
return self._decode_v1_traces(req)
448452
return []
449453

450454
async def _traces_by_session(self, token: Optional[str]) -> List[Trace]:
@@ -599,6 +603,10 @@ def _decode_v07_traces(self, request: Request) -> v04TracePayload:
599603
raw_data = self._request_data(request)
600604
return trace_decode_v07(raw_data)
601605

606+
def _decode_v1_traces(self, request: Request) -> v04TracePayload:
607+
raw_data = self._request_data(request)
608+
return trace_decode_v1(raw_data)
609+
602610
def _decode_v06_tracestats(self, request: Request) -> v06StatsPayload:
603611
raw_data = self._request_data(request)
604612
return tracestats_decode_v06(raw_data)
@@ -628,6 +636,9 @@ async def handle_v05_traces(self, request: Request) -> web.Response:
628636
async def handle_v07_traces(self, request: Request) -> web.Response:
629637
return await self._handle_traces(request, version="v0.7")
630638

639+
async def handle_v1_traces(self, request: Request) -> web.Response:
640+
return await self._handle_traces(request, version="v1")
641+
631642
async def handle_v06_tracestats(self, request: Request) -> web.Response:
632643
stats = self._decode_v06_tracestats(request)
633644
nstats = len(stats["Stats"])
@@ -823,7 +834,7 @@ async def handle_info(self, request: Request) -> web.Response:
823834
headers={"Datadog-Agent-State": "03e868b3ecdd62a91423cc4c3917d0d151fb9fa486736911ab7f5a0750c63824"},
824835
)
825836

826-
async def _handle_traces(self, request: Request, version: Literal["v0.4", "v0.5", "v0.7"]) -> web.Response:
837+
async def _handle_traces(self, request: Request, version: Literal["v0.4", "v0.5", "v0.7", "v1"]) -> web.Response:
827838
token = request["session_token"]
828839
checks: Checks = request.app["checks"]
829840
headers = request.headers
@@ -844,6 +855,8 @@ async def _handle_traces(self, request: Request, version: Literal["v0.4", "v0.5"
844855
traces = self._decode_v05_traces(request)
845856
elif version == "v0.7":
846857
traces = self._decode_v07_traces(request)
858+
elif version == "v1":
859+
traces = self._decode_v1_traces(request)
847860
log.info(
848861
"received trace for token %r payload with %r trace chunks",
849862
token,
@@ -1365,6 +1378,8 @@ def make_app(
13651378
web.put("/v0.5/traces", agent.handle_v05_traces),
13661379
web.post("/v0.7/traces", agent.handle_v07_traces),
13671380
web.put("/v0.7/traces", agent.handle_v07_traces),
1381+
web.post("/v1.0/traces", agent.handle_v1_traces),
1382+
web.put("/v1.0/traces", agent.handle_v1_traces),
13681383
web.post("/v0.6/stats", agent.handle_v06_tracestats),
13691384
web.post("/v0.1/pipeline_stats", agent.handle_v01_pipelinestats),
13701385
web.put("/v0.6/stats", agent.handle_v06_tracestats),

0 commit comments

Comments
 (0)