Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
7c3636c
wip: draft API for agent HTTP client component
yannham Mar 23, 2026
ba5c12b
Apply suggestion from @brettlangdon
yannham Apr 15, 2026
86b1c11
refactor: get rid of client mode, use boolean instead
yannham Apr 15, 2026
b4055a0
refactor: get rid of agentless-specific parts of the API
yannham Apr 15, 2026
712ebe8
doc: clean LLM logorrhea
yannham Apr 16, 2026
f16fbe0
implement: fill in all todo!() placeholders in libdd-agent-client
yannham Apr 21, 2026
0a4b761
fix: address review findings
yannham Apr 21, 2026
e9b5184
refactor: get rid of ResolvedTransport
yannham Apr 21, 2026
c3c7e08
refactor: clean the agent-client code a bit
yannham Apr 21, 2026
2c21d88
feat: add with_headers() method to http-client request
yannham Apr 21, 2026
1249f79
style: formatting
yannham Apr 21, 2026
1914fa3
refactor: split integration tests into per-topic files
yannham Apr 21, 2026
2f8d1bc
refactor: drop send_ prefix from test modules, flatten common to comm…
yannham Apr 21, 2026
4d06a4e
refactor: fold timeout_from_env + transport env-vars into auto_detect()
yannham Apr 21, 2026
e0b10e6
style: replace repeated fully-qualified paths with use imports in lib…
yannham Apr 22, 2026
df62095
style: inline single-use variables used immediately in the next call …
yannham Apr 22, 2026
7f83c71
refactor: remove inline from builder, add one in other parts
yannham Apr 24, 2026
88d236b
refactor: bespoke conversion method -> impl From instead
yannham Apr 24, 2026
74a4751
style: formatting
yannham Apr 27, 2026
b0e17f5
style: fix clippy warning (useless lifetime parameter)
yannham Apr 27, 2026
5c499a2
chore: add missing entries for new agent client crate
yannham Apr 27, 2026
a5af076
fix: fix outdated libdd-common dep version
yannham Apr 27, 2026
e3349de
chore: update Cargo.lock
yannham Apr 27, 2026
2ca7fd9
fix: fix std import
yannham Apr 27, 2026
f0ac4b3
chore: fix missing version for internal dep
yannham Apr 27, 2026
becac04
fix: confusion around keep-alive and connection pooling
yannham Apr 27, 2026
2aef5fb
feat: uniform, platform-independent auto_config() API
yannham Apr 27, 2026
457380a
refactor: get rid of auto_config silent get_var
yannham Apr 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ libdd-data-pipeline*/ @DataDog/libdatadog-apm
libdd-ddsketch*/ @DataDog/libdatadog-apm @DataDog/apm-common-components-core
libdd-dogstatsd-client @DataDog/apm-common-components-core
libdd-http-client @DataDog/apm-common-components-core
libdd-agent-client @DataDog/apm-common-components-core
libdd-library-config*/ @DataDog/apm-sdk-capabilities-rust
libdd-log*/ @DataDog/apm-common-components-core
libdd-otel-thread-ctx/ @DataDog/apm-common-components-core
Expand Down
17 changes: 17 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ members = [
"libdd-tinybytes",
"libdd-dogstatsd-client",
"libdd-http-client",
"libdd-agent-client",
"libdd-log",
"libdd-log-ffi",
]
Expand Down
32 changes: 32 additions & 0 deletions libdd-agent-client/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Copyright 2026-Present Datadog, Inc. https://www.datadoghq.com/
# SPDX-License-Identifier: Apache-2.0

[package]
name = "libdd-agent-client"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
authors.workspace = true
description = "Datadog-agent-specialized HTTP client: language metadata injection, per-endpoint send methods, retry, and compression"
homepage = "https://github.com/DataDog/libdatadog/tree/main/libdd-agent-client"
repository = "https://github.com/DataDog/libdatadog/tree/main/libdd-agent-client"

[lib]
bench = false

[dependencies]
bytes = "1.4"
flate2 = "1"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
thiserror = "2"
tokio = { version = "1.23", features = ["rt"] }
libdd-http-client = { version = "32.0", path = "../libdd-http-client" }
libdd-common = { version = "4.0", path = "../libdd-common", default-features = false }

[dev-dependencies]
httpmock = "0.8.0-alpha.1"
rustls = { version = "0.23", default-features = false, features = ["ring"] }
serial_test = "3.2"
tokio = { version = "1.23", features = ["rt", "macros"] }
30 changes: 30 additions & 0 deletions libdd-agent-client/src/agent_info.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// Copyright 2026-Present Datadog, Inc. https://www.datadoghq.com/
// SPDX-License-Identifier: Apache-2.0

//! Types for [`crate::AgentClient::agent_info`].

/// Parsed response from a `GET /info` probe.
///
/// Returned by [`crate::AgentClient::agent_info`]. Contains agent capabilities and headers.
#[derive(Debug, Clone)]
pub struct AgentInfo {
/// Available agent endpoints, e.g. `["/v0.4/traces", "/v0.5/traces"]`.
pub endpoints: Vec<String>,
/// Whether the agent supports client-side P0 dropping.
pub client_drop_p0s: bool,
/// Raw agent configuration block.
pub config: serde_json::Value,
/// Agent version string, if reported.
pub version: Option<String>,
/// Parsed from the `Datadog-Container-Tags-Hash` response header.
///
/// Used by dd-trace-py to compute the base tag hash (`agent.py:17-23`).
pub container_tags_hash: Option<String>,
/// Value of the `Datadog-Agent-State` response header from the last `/info` fetch.
///
/// The agent updates this opaque token whenever its internal state changes (e.g. a
/// configuration reload). Clients that poll `/info` periodically can skip re-parsing
/// the response body by comparing this value to the one returned by the previous call
/// and only acting when it differs.
pub state_hash: Option<String>,
}
Loading
Loading