Skip to content

Experiment(secret-manager): add tracing transport logic to google-cloud-secret-manager - #18188

Open
chalmerlowe wants to merge 31 commits into
mainfrom
feat/otel-tracing-transport-logic
Open

Experiment(secret-manager): add tracing transport logic to google-cloud-secret-manager#18188
chalmerlowe wants to merge 31 commits into
mainfrom
feat/otel-tracing-transport-logic

Conversation

@chalmerlowe

@chalmerlowe chalmerlowe commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Problem

Client libraries currently lack built-in support for OpenTelemetry tracing interceptors. We need a flexible, explicit mechanism to inject these interceptors into the transport pipeline without tying the core low-level helpers too tightly to specific observability features.

Note

This PR is NOT intended to be merged. It is a proof-of-concept intended to inform the design and implementation of changes that need to be made in the GAPIC Generator templates.

Solution

This PR implements explicit interceptor injection in the SecretManagerServiceClient and its gRPC transport.

  • Updated SecretManagerServiceClient to resolve OpenTelemetry interceptors using google-api-core helpers and explicitly pass them to the transport.
  • Updated SecretManagerServiceGrpcTransport to accept an interceptors list and explicitly apply them to the gRPC channel using grpc.intercept_channel.
  • Added unit tests (test_secret_manager_service_client_otel_interceptor_injection and *_disabled variant) to verify that interceptors are correctly injected and applied.

Notes to Reviewers

  • Async Deferred: As per the design plan, Async gRPC updates are deferred to a separate PR to keep this implementation small and clean.
  • Stacked PRs: This work builds on the foundational helpers introduced in the google-api-core PR (Phase 1).
  • Explicit Injection: This demonstrates the "active orchestrator" role of the generated client, delegating resolution to core helpers but explicitly controlling the pipeline.

Fixes #18139 (partially, this is Phase 2 of the larger effort)

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces OpenTelemetry (OTel) tracing support by adding a helper module _otel_helpers.py to resolve and instantiate OTel gRPC interceptors, extending ClientOptions to accept a tracer_provider, and updating the Secret Manager gRPC transport to inject these interceptors. The review feedback highlights Python compatibility issues in _otel_helpers.py due to the use of the | union operator, which is unsupported in older Python versions, and suggests using typing.Union instead. Additionally, it recommends adding a defensive None check for client_options to avoid calling getattr on a None object.

Comment thread packages/google-api-core/google/api_core/_otel_helpers.py
Comment thread packages/google-api-core/google/api_core/_otel_helpers.py
Comment thread packages/google-api-core/google/api_core/_otel_helpers.py Outdated
@chalmerlowe
chalmerlowe force-pushed the feat/otel-tracing-transport-logic branch from 916213b to d1a7a0f Compare August 21, 2026 14:16
@chalmerlowe
chalmerlowe changed the base branch from main to feat/otel-tracing-api-core-logic August 21, 2026 14:18
@chalmerlowe
chalmerlowe force-pushed the feat/otel-tracing-transport-logic branch from 37bdd10 to dab7994 Compare August 24, 2026 13:03
@chalmerlowe
chalmerlowe changed the base branch from feat/otel-tracing-api-core-logic to main August 25, 2026 14:41
@chalmerlowe
chalmerlowe changed the base branch from main to feat/otel-tracing-api-core-logic August 25, 2026 14:41
@chalmerlowe
chalmerlowe force-pushed the feat/otel-tracing-transport-logic branch from 67b4621 to 8a121ca Compare August 25, 2026 14:54
@chalmerlowe
chalmerlowe force-pushed the feat/otel-tracing-transport-logic branch from 8a121ca to 1b042a2 Compare August 25, 2026 16:54
@chalmerlowe chalmerlowe added the do not merge Indicates a pull request not ready for merge, due to either quality or timing. label Aug 26, 2026
@chalmerlowe chalmerlowe self-assigned this Aug 26, 2026
@chalmerlowe
chalmerlowe marked this pull request as ready for review August 26, 2026 13:56
@chalmerlowe
chalmerlowe requested a review from a team as a code owner August 26, 2026 13:56
@chalmerlowe

Copy link
Copy Markdown
Contributor Author

Warning

Do not merge label added because this is a prototype implementation to discover the needed edits to the GAPIC generator templates. This is not intended to be merged.

Base automatically changed from feat/otel-tracing-api-core-logic to main August 26, 2026 16:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

do not merge Indicates a pull request not ready for merge, due to either quality or timing.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant