feat(geneva-exporter): support agent-fed credentials#3579
Conversation
Pull request dashboard statusStatus last refreshed: 2026-07-26 03:48:26 UTC.
This automated status or its linked feedback items may be incorrect. If something looks wrong, please report it with the result you expected. |
There was a problem hiding this comment.
✅ Ready to approve
The implementation is cohesive, fail-closed, well-documented, and includes targeted unit/regression coverage for capability binding, routing precedence, rotation, and error handling paths.
Note: this review does not count toward required approvals for merging.
Pull request overview
Adds an agent-fed authentication mode to the Rust OTAP Dataflow Geneva exporter so an embedding host can supply bearer tokens and routing metadata via the extension capability framework, bypassing the Geneva Config Service (GCS) handshake.
Changes:
- Introduces
auth.type: agentfedfor the Geneva exporter, resolving credentials and routing frombearer_token_provider+vendor_bundlecapabilities bound to the same extension. - Adds an
AgentFedGenevaSourceadapter that fail-closes on invalid/unavailable credentials, supports host-side rotation via per-upload reads, and rate-limits warning logs. - Extends documentation and testing utilities to support real capability binding resolution in downstream component tests.
File summaries
| File | Description |
|---|---|
| rust/otap-dataflow/crates/engine/src/testing/capability/mod.rs | Adds a test-only helper to resolve real capability bindings for component tests. |
| rust/otap-dataflow/crates/engine/src/capability/vendor_bundle.rs | Clarifies non-atomic token/bundle read semantics and extension clone state-sharing requirements. |
| rust/otap-dataflow/crates/contrib-nodes/src/exporters/geneva_exporter/README.md | Documents agentfed configuration, binding requirements, routing precedence, and rotation behavior. |
| rust/otap-dataflow/crates/contrib-nodes/src/exporters/geneva_exporter/mod.rs | Implements agentfed config parsing/validation, capability binding checks, and client construction with an agent-fed source. |
| rust/otap-dataflow/crates/contrib-nodes/src/exporters/geneva_exporter/agent_fed_source.rs | Adds the adapter bridging engine capabilities to geneva-uploader’s agent-fed credential source + extensive unit tests. |
| rust/otap-dataflow/.chloggen/agent-fed-exporter-sources.yaml | Adds a user-facing changelog entry for agent-fed Geneva exporter credentials. |
Review details
- Files reviewed: 6/6 changed files
- Comments generated: 0
- Review effort level: Low
Note
Your feedback helps us improve the quality of this feature.
Please use 👍 or 👎 to tell us whether this assessment is correct.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #3579 +/- ##
==========================================
+ Coverage 86.88% 86.90% +0.01%
==========================================
Files 782 784 +2
Lines 319283 319912 +629
==========================================
+ Hits 277422 278021 +599
- Misses 41337 41367 +30
Partials 524 524
🚀 New features to boost your workflow:
|
Change Summary
Adds agent-fed authentication to the Geneva exporter. The exporter resolves bearer tokens and endpoint/moniker routing from the
BearerTokenProviderandVendorBundlecapabilities, bypassing the Geneva Config Service handshake.Both capabilities must bind to the same extension. Invalid or unavailable credentials fail closed, while per-upload credential reads support host-side rotation.
What issue does this PR close?
How are these changes tested?
zeroizefallback because ms-prod currently reports E9003 for its inline assembly barrier.Are there any user-facing changes?
Yes. Geneva exporters can now select
auth.type: agentfedand bind the following capabilities to the same host extension:bearer_token_providervendor_bundleThe
endpointandregionconfiguration fields are optional in agent-fed mode. Existing authentication modes retain their current behavior and requirements.Changelog
.chloggen/*.yamlentrychore(indicated in title)