Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
631d593
feat: draft API for agent HTTP client component
yannham Mar 23, 2026
e4a16b6
Apply suggestion from @brettlangdon
yannham Apr 15, 2026
a264d1e
refactor: get rid of client mode, use boolean instead
yannham Apr 15, 2026
c35215f
refactor: get rid of agentless-specific parts of the API
yannham Apr 15, 2026
9676582
doc: clean LLM logorrhea
yannham Apr 16, 2026
adab83b
implement: fill in all todo!() placeholders in libdd-agent-client
yannham Apr 21, 2026
c0fbf24
fix: address review findings
yannham Apr 21, 2026
f59fa47
refactor: get rid of ResolvedTransport
yannham Apr 21, 2026
6d44589
refactor: clean the agent-client code a bit
yannham Apr 21, 2026
8024de4
feat: add with_headers() method to http-client request
yannham Apr 21, 2026
863b00b
style: formatting
yannham Apr 21, 2026
573b9bf
refactor: split integration tests into per-topic files
yannham Apr 21, 2026
e44b1da
refactor: drop send_ prefix from test modules, flatten common to comm…
yannham Apr 21, 2026
5b2cdd4
refactor: fold timeout_from_env + transport env-vars into auto_detect()
yannham Apr 21, 2026
b7d3e25
style: replace repeated fully-qualified paths with use imports in lib…
yannham Apr 22, 2026
be24a7f
style: inline single-use variables used immediately in the next call …
yannham Apr 22, 2026
7b917a7
refactor: remove inline from builder, add one in other parts
yannham Apr 24, 2026
1c20932
refactor: bespoke conversion method -> impl From instead
yannham Apr 24, 2026
d4d0e53
style: formatting
yannham Apr 27, 2026
b7d23f0
style: fix clippy warning (useless lifetime parameter)
yannham Apr 27, 2026
27292a0
chore: add missing entries for new agent client crate
yannham Apr 27, 2026
3d8e8bf
fix: fix outdated libdd-common dep version
yannham Apr 27, 2026
e9978f8
chore: update Cargo.lock
yannham Apr 27, 2026
dceb85d
fix: fix std import
yannham Apr 27, 2026
f0257da
chore: fix missing version for internal dep
yannham Apr 27, 2026
0ca7eed
fix: confusion around keep-alive and connection pooling
yannham Apr 27, 2026
13cdd22
feat: uniform, platform-independent auto_config() API
yannham Apr 27, 2026
1ccd73a
refactor: get rid of auto_config silent get_var
yannham Apr 28, 2026
5c7028c
fix: properly propagate allow_connection_pooling to underlying client
yannham Apr 28, 2026
9020eab
tests: do not run http tests under Miri
yannham Apr 28, 2026
4edca80
refactor: self-review pass
yannham Apr 29, 2026
7f188fb
chore: expose libdd-http-client features
yannham Apr 29, 2026
80b68cc
feat: add Https transport variant to AgentTransport
yannham Apr 30, 2026
fa5a7ff
fix: use proper truth value for header
yannham May 11, 2026
532e960
fix: validate EVP path and error on missing /info endpoints
yannham May 11, 2026
6b63d25
refactor: get rid of unused variant
yannham May 11, 2026
e77c166
chore: update to latest libdatadog deps
yannham May 11, 2026
7b35d7f
chore: update Cargo.lock
yannham May 19, 2026
33c0c46
chore: add agent-client to codecov and fix check_status doc comment
yannham May 19, 2026
43588c9
feat: add client_computed_stats option and interpreter_vendor metadata
yannham May 19, 2026
df00436
feat: include DD_EXTERNAL_ENV in entity headers
yannham May 19, 2026
82f5394
style: formatting
yannham May 19, 2026
74c2575
refactor: re-export http-client error instead of string wrapping
yannham May 20, 2026
f8d4958
refactor: truncate the body in http error display
yannham May 20, 2026
5d2fb41
refactor: get rid of custom default for RetryConfig
yannham May 20, 2026
e77f6ce
refactor: restrict module visibility, symbols already exported
yannham May 20, 2026
8488ce0
doc: fix imprecise comment about fork safety
yannham May 20, 2026
1a62e45
doc: remove outdated/inexact comment
yannham May 20, 2026
71f711b
doc: remove wrong information from comment
yannham May 20, 2026
0f89f3b
style: move literal to const variable
yannham May 20, 2026
5a42cda
refactor: introduce EvpEventRequest struct for send_evp_event
yannham May 20, 2026
5db0166
style: formatting
yannham May 20, 2026
050f89f
fix: warn upon unparseable rate_by_service
yannham May 26, 2026
789c0d3
chore: update to latest libdatadog version
yannham May 26, 2026
de881a2
style: format
yannham May 26, 2026
c1d0816
chore: update internal http-client version
yannham Jun 2, 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
4 changes: 4 additions & 0 deletions .codecov.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ component_management:
name: libdd-crashtracker-ffi # this is a display name, and can be changed freely
paths:
- libdd-crashtracker-ffi
- component_id: agent-client # this is an identifier that should not be changed
name: libdd-agent-client # this is a display name, and can be changed freely
paths:
- libdd-agent-client
- component_id: datadog-alloc # this is an identifier that should not be changed
name: libdd-alloc # this is a display name, and can be changed freely
paths:
Expand Down
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,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
18 changes: 18 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 @@ -53,6 +53,7 @@ members = [
"libdd-tinybytes",
"libdd-dogstatsd-client",
"libdd-http-client",
"libdd-agent-client",
Comment thread
yannham marked this conversation as resolved.
"libdd-log",
"libdd-log-ffi",
"libdd-sampling",
Expand Down
39 changes: 39 additions & 0 deletions libdd-agent-client/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# 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 = "A Datadog-agent-specialized HTTP client library"
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

[features]
default = ["https", "reqwest-backend"]
https = ["libdd-http-client/https"]
reqwest-backend = ["libdd-http-client/reqwest-backend"]
hyper-backend = ["libdd-http-client/hyper-backend"]

[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 = "35.0", path = "../libdd-http-client", default-features = false }
libdd-common = { version = "4.0", path = "../libdd-common", default-features = false }
tracing = { version = "0.1", 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"] }
28 changes: 28 additions & 0 deletions libdd-agent-client/src/agent_info.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// 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 {
Comment thread
yannham marked this conversation as resolved.
/// 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.
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 act
/// when it differs.
pub state_hash: Option<String>,
}
Loading
Loading