use crate::Result;
#[derive(Clone, Debug)]
pub struct Iam<T>
where
T: super::stub::Iam + std::fmt::Debug + Send + Sync,
{
inner: T,
duration: gaxi::observability::DurationMetric,
}
impl<T> Iam<T>
where
T: super::stub::Iam + std::fmt::Debug + Send + Sync,
{
pub fn new(inner: T) -> Self {
Self {
inner,
duration: gaxi::observability::DurationMetric::new(&info::INSTRUMENTATION_CLIENT_INFO),
}
}
}
impl<T> super::stub::Iam for Iam<T>
where
T: super::stub::Iam + std::fmt::Debug + Send + Sync,
{
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn list_service_accounts(
&self,
req: crate::model::ListServiceAccountsRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ListServiceAccountsResponse>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::list_service_accounts",
self.inner.list_service_accounts(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn get_service_account(
&self,
req: crate::model::GetServiceAccountRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ServiceAccount>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::get_service_account",
self.inner.get_service_account(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn create_service_account(
&self,
req: crate::model::CreateServiceAccountRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ServiceAccount>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::create_service_account",
self.inner.create_service_account(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn update_service_account(
&self,
req: crate::model::ServiceAccount,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ServiceAccount>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::update_service_account",
self.inner.update_service_account(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn patch_service_account(
&self,
req: crate::model::PatchServiceAccountRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ServiceAccount>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::patch_service_account",
self.inner.patch_service_account(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn delete_service_account(
&self,
req: crate::model::DeleteServiceAccountRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<()>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::delete_service_account",
self.inner.delete_service_account(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn undelete_service_account(
&self,
req: crate::model::UndeleteServiceAccountRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::UndeleteServiceAccountResponse>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::undelete_service_account",
self.inner.undelete_service_account(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn enable_service_account(
&self,
req: crate::model::EnableServiceAccountRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<()>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::enable_service_account",
self.inner.enable_service_account(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn disable_service_account(
&self,
req: crate::model::DisableServiceAccountRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<()>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::disable_service_account",
self.inner.disable_service_account(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn list_service_account_keys(
&self,
req: crate::model::ListServiceAccountKeysRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ListServiceAccountKeysResponse>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::list_service_account_keys",
self.inner.list_service_account_keys(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn get_service_account_key(
&self,
req: crate::model::GetServiceAccountKeyRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ServiceAccountKey>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::get_service_account_key",
self.inner.get_service_account_key(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn create_service_account_key(
&self,
req: crate::model::CreateServiceAccountKeyRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ServiceAccountKey>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::create_service_account_key",
self.inner.create_service_account_key(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn upload_service_account_key(
&self,
req: crate::model::UploadServiceAccountKeyRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ServiceAccountKey>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::upload_service_account_key",
self.inner.upload_service_account_key(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn delete_service_account_key(
&self,
req: crate::model::DeleteServiceAccountKeyRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<()>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::delete_service_account_key",
self.inner.delete_service_account_key(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn disable_service_account_key(
&self,
req: crate::model::DisableServiceAccountKeyRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<()>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::disable_service_account_key",
self.inner.disable_service_account_key(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn enable_service_account_key(
&self,
req: crate::model::EnableServiceAccountKeyRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<()>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::enable_service_account_key",
self.inner.enable_service_account_key(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn sign_blob(
&self,
req: crate::model::SignBlobRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::SignBlobResponse>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::sign_blob",
self.inner.sign_blob(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn sign_jwt(
&self,
req: crate::model::SignJwtRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::SignJwtResponse>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::sign_jwt",
self.inner.sign_jwt(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn get_iam_policy(
&self,
req: google_cloud_iam_v1::model::GetIamPolicyRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<google_cloud_iam_v1::model::Policy>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::get_iam_policy",
self.inner.get_iam_policy(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn set_iam_policy(
&self,
req: google_cloud_iam_v1::model::SetIamPolicyRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<google_cloud_iam_v1::model::Policy>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::set_iam_policy",
self.inner.set_iam_policy(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn test_iam_permissions(
&self,
req: google_cloud_iam_v1::model::TestIamPermissionsRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<google_cloud_iam_v1::model::TestIamPermissionsResponse>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::test_iam_permissions",
self.inner.test_iam_permissions(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn query_grantable_roles(
&self,
req: crate::model::QueryGrantableRolesRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::QueryGrantableRolesResponse>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::query_grantable_roles",
self.inner.query_grantable_roles(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn list_roles(
&self,
req: crate::model::ListRolesRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ListRolesResponse>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::list_roles",
self.inner.list_roles(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn get_role(
&self,
req: crate::model::GetRoleRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::Role>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::get_role",
self.inner.get_role(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn create_role(
&self,
req: crate::model::CreateRoleRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::Role>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::create_role",
self.inner.create_role(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn update_role(
&self,
req: crate::model::UpdateRoleRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::Role>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::update_role",
self.inner.update_role(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn delete_role(
&self,
req: crate::model::DeleteRoleRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::Role>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::delete_role",
self.inner.delete_role(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn undelete_role(
&self,
req: crate::model::UndeleteRoleRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::Role>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::undelete_role",
self.inner.undelete_role(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn query_testable_permissions(
&self,
req: crate::model::QueryTestablePermissionsRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::QueryTestablePermissionsResponse>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::query_testable_permissions",
self.inner.query_testable_permissions(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn query_auditable_services(
&self,
req: crate::model::QueryAuditableServicesRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::QueryAuditableServicesResponse>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::query_auditable_services",
self.inner.query_auditable_services(req, options));
pending.await
}
#[tracing::instrument(level = tracing::Level::DEBUG, ret)]
async fn lint_policy(
&self,
req: crate::model::LintPolicyRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::LintPolicyResponse>> {
let (_span, pending) = gaxi::client_request_signals!(
metric: self.duration.clone(),
info: *info::INSTRUMENTATION_CLIENT_INFO,
method: "client::Iam::lint_policy",
self.inner.lint_policy(req, options));
pending.await
}
}
pub(crate) mod info {
const NAME: &str = env!("CARGO_PKG_NAME");
const VERSION: &str = env!("CARGO_PKG_VERSION");
pub(crate) static INSTRUMENTATION_CLIENT_INFO: std::sync::LazyLock<
gaxi::options::InstrumentationClientInfo,
> = std::sync::LazyLock::new(|| {
let mut info = gaxi::options::InstrumentationClientInfo::default();
info.service_name = "iam";
info.client_version = VERSION;
info.client_artifact = NAME;
info.default_host = "iam";
info
});
}