From 6c0e54c270845b4d9fbe7112dff276ccc2928ca6 Mon Sep 17 00:00:00 2001 From: haphungw Date: Fri, 10 Apr 2026 22:14:29 +0000 Subject: [PATCH] feat(sidekick): inject ResourceName into gRPC request extensions in templates --- .../rust/templates/crate/src/tracing.rs.mustache | 5 ++++- .../rust/templates/grpc-client/transport.rs.mustache | 10 +++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/internal/sidekick/rust/templates/crate/src/tracing.rs.mustache b/internal/sidekick/rust/templates/crate/src/tracing.rs.mustache index a9805ea611..cc114838bc 100644 --- a/internal/sidekick/rust/templates/crate/src/tracing.rs.mustache +++ b/internal/sidekick/rust/templates/crate/src/tracing.rs.mustache @@ -87,8 +87,11 @@ where T: super::stub::{{Codec.Name}} + std::fmt::Debug + Send + Sync { pending.await } #[cfg(not(google_cloud_unstable_tracing))] - {{/Codec.DetailedTracingAttributes }} self.inner.{{Codec.Name}}(req, options).await + {{/Codec.DetailedTracingAttributes}} + {{^Codec.DetailedTracingAttributes}} + self.inner.{{Codec.Name}}(req, options).await + {{/Codec.DetailedTracingAttributes}} } {{/Codec.Methods}} {{#Codec.HasLROs}} diff --git a/internal/sidekick/rust/templates/grpc-client/transport.rs.mustache b/internal/sidekick/rust/templates/grpc-client/transport.rs.mustache index 06913ff3a6..feae3bbe8f 100644 --- a/internal/sidekick/rust/templates/grpc-client/transport.rs.mustache +++ b/internal/sidekick/rust/templates/grpc-client/transport.rs.mustache @@ -121,7 +121,7 @@ impl super::stub::{{Codec.Name}} for {{Codec.Name}} { {{PathInfo.Codec.IsIdempotent}}, {{/HasAutoPopulatedFields}} ); - let extensions = { + let mut extensions = { let mut e = Extensions::new(); e.insert(GrpcMethod::new("{{SourceService.Package}}.{{SourceService.Name}}", "{{Name}}")); e @@ -182,11 +182,15 @@ impl super::stub::{{Codec.Name}} for {{Codec.Name}} { Some(String::new()) {{/Codec.ResourceNameTemplateGrpc}} })(); - let attributes = if let Some(rn) = resource_name.filter(|s| !s.is_empty()) { - attributes.set_resource_name(rn) + let attributes = if let Some(rn) = resource_name.as_ref().filter(|s| !s.is_empty()) { + attributes.set_resource_name(rn.clone()) } else { attributes }; + + if let Some(rn) = resource_name { + extensions.insert(gaxi::observability::ResourceName::new(rn)); + } {{/Codec.HasGrpcResourceNameArgs}} recorder.on_client_request(attributes); }