Skip to content

Commit b29f1f5

Browse files
committed
Merge remote-tracking branch 'origin/main' into dd/fix/logs-auto-flex-fallback-20260813
Co-authored-by: platinummonkey <cody.lee@datadoghq.com> # Conflicts: # src/commands/logs.rs # src/test_commands.rs
2 parents 9b0e466 + 490c829 commit b29f1f5

9 files changed

Lines changed: 881 additions & 5 deletions

File tree

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "pup"
3-
version = "1.10.7"
3+
version = "1.10.8"
44
edition = "2021"
55
rust-version = "1.93.1"
66
publish = false

docs/COMMANDS.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ pup <domain> <subgroup> <action> [options] # Nested commands
2424
| acp | serve | src/commands/acp.rs ||
2525
| auth | login, logout, status, refresh | src/commands/auth.rs ||
2626
| metrics | query, list, search, timeseries, metadata, tags, submit | src/commands/metrics.rs ||
27-
| logs | search, list, aggregate, saved-views (list, get, create, delete) | src/commands/logs.rs ||
27+
| logs | search, list, aggregate, patterns, saved-views (list, get, create, delete) | src/commands/logs.rs ||
2828
| traces | metrics (list, get, create, update, delete) | src/commands/traces.rs ||
2929
| monitors | list, get, create, update, delete, search, diff | src/commands/monitors.rs ||
3030
| dashboards | list, get, delete, url, annotations (list, get-page, create, update, delete) | src/commands/dashboards.rs, src/commands/annotations.rs ||
@@ -66,7 +66,7 @@ pup <domain> <subgroup> <action> [options] # Nested commands
6666
| data-deletion | requests (list, create, cancel) | src/commands/data_deletion.rs ||
6767
| data-governance | scanner-rules (list) | src/commands/data_governance.rs ||
6868
| obs-pipelines | list, get, create, update, delete, validate | src/commands/obs_pipelines.rs ||
69-
| llm-obs | projects (create, list), experiments (create, list, update, delete, summary, events (list, get, submit), metric-values, dimension-values), datasets (create, list, batch-update, clone, restore, records, records-add, records-all, records-full), spans (search), patterns (configs (list, get), runs (list, status), topics, topics-with-points, points), agent-insights (list, get, update-status, submit-feedback), model-pricing | src/commands/llm_obs.rs ||
69+
| llm-obs | projects (create, list), experiments (create, list, update, delete, summary, events (list, get, submit), metric-values, dimension-values), datasets (create, list, batch-update, clone, restore, records, records-add, records-all, records-full), spans (search), patterns (configs (list, get), runs (list, status), topics, topics-with-points, points), agent-insights (list, get, update-status, submit-feedback), annotation-queues (create, list, update, delete, interactions (add, delete, list), schema (get, update), annotations (upsert, delete)), model-pricing | src/commands/llm_obs.rs ||
7070
| reference-tables | list, get, create, batch-query | src/commands/reference_tables.rs ||
7171
| network | flows list, devices (list, get, interfaces, tags), interfaces (list, update) | src/commands/network.rs ||
7272
| cloud | aws, gcp, azure, oci | src/commands/cloud.rs ||
@@ -111,6 +111,7 @@ pup slos get abc-123-def
111111
```bash
112112
pup logs search --query="status:error" --from="1h"
113113
pup logs search --query="service:api" --from="7d" --storage="flex"
114+
pup logs patterns --query="status:error" --pattern-field="message" --from="1h"
114115
pup logs query --query="service:api" --index="main,security" --from="1h"
115116
pup logs saved-views create --file=saved-view.json
116117
pup dbm samples search --query="dbm_type:activity service:orders env:prod" --from="1h" --limit=10

docs/EXAMPLES.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,27 @@ pup logs query --query="service:api" --index="main,security" --from="1h"
131131
pup logs query --query="service:api" --index="main" --index="security" --from="1h"
132132
```
133133

134+
### Find Similar Log Patterns
135+
```bash
136+
# Cluster similar message values instead of grouping exact values
137+
pup logs patterns \
138+
--query="status:error" \
139+
--pattern-field="message" \
140+
--from="1h"
141+
142+
# Analyze a specific index with larger sampling limits and grouping fields
143+
pup logs patterns \
144+
--query="service:api" \
145+
--pattern-field="@request.path" \
146+
--group-by="service,status" \
147+
--index="main" \
148+
--sample-limit=100 \
149+
--event-limit=20000 \
150+
--from="24h"
151+
```
152+
153+
Pattern clustering returns similar-value groups. Use `logs aggregate --group-by` when exact-value buckets are required.
154+
134155
### Aggregate Logs
135156
```bash
136157
# Count logs by status

src/auth/types.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,23 @@ mod tests {
400400
assert!(!ro.contains(&"logs_write_pipelines"));
401401
}
402402

403+
#[test]
404+
fn test_default_scopes_excludes_workload_identity_federation() {
405+
let scopes = default_scopes();
406+
// workload_identity_federation_read/write are only ever granted to
407+
// admins, so they're opt-in only (see 'pup cloud-auth' AUTHENTICATION
408+
// doc) rather than requested by default.
409+
assert!(!scopes.contains(&"workload_identity_federation_read"));
410+
assert!(!scopes.contains(&"workload_identity_federation_write"));
411+
}
412+
413+
#[test]
414+
fn test_read_only_scopes_excludes_workload_identity_federation() {
415+
let ro = read_only_scopes();
416+
assert!(!ro.contains(&"workload_identity_federation_read"));
417+
assert!(!ro.contains(&"workload_identity_federation_write"));
418+
}
419+
403420
#[test]
404421
fn test_read_only_scopes_subset_of_default() {
405422
let default: std::collections::HashSet<&str> = default_scopes().into_iter().collect();

0 commit comments

Comments
 (0)