diff --git a/ci/cloudbuild/builds/cmake-install.sh b/ci/cloudbuild/builds/cmake-install.sh index 577d8ef4adbe7..e9f4ebd2a29a2 100755 --- a/ci/cloudbuild/builds/cmake-install.sh +++ b/ci/cloudbuild/builds/cmake-install.sh @@ -51,6 +51,9 @@ mapfile -t actual_dirs < <(env -C "${INSTALL_PREFIX}" find -type d) mapfile -t expected_dirs < <(cat ci/etc/expected_install_directories) expected_dirs+=( ./include/google/api + ./include/google/bigtable + ./include/google/bigtable/admin + ./include/google/bigtable/admin/v2 ./include/google/bigtable/v2 ./include/google/cloud/bigquery/connection ./include/google/cloud/bigquery/connection/v1 @@ -62,6 +65,7 @@ expected_dirs+=( ./include/google/cloud/bigquery/reservation ./include/google/cloud/bigquery/reservation/v1 ./include/google/cloud/bigquery/v2 + ./include/google/cloud/bigtable ./include/google/cloud/bigtable/internal ./include/google/cloud/dialogflow ./include/google/cloud/dialogflow/v2 diff --git a/ci/etc/expected_install_directories b/ci/etc/expected_install_directories index a9668895d9c43..a739a4a2ca65f 100644 --- a/ci/etc/expected_install_directories +++ b/ci/etc/expected_install_directories @@ -1,16 +1,12 @@ . ./include ./include/google -./include/google/bigtable -./include/google/bigtable/admin -./include/google/bigtable/admin/v2 ./include/google/cloud ./include/google/cloud/bigquery ./include/google/cloud/bigquery/internal ./include/google/cloud/bigquery/mocks ./include/google/cloud/bigquery/storage ./include/google/cloud/bigquery/storage/v1 -./include/google/cloud/bigtable ./include/google/cloud/iam ./include/google/cloud/iam/internal ./include/google/cloud/iam/mocks diff --git a/generator/integration_tests/golden/golden_kitchen_sink_client.cc b/generator/integration_tests/golden/golden_kitchen_sink_client.cc index 83d10a7093458..026d44e0da052 100644 --- a/generator/integration_tests/golden/golden_kitchen_sink_client.cc +++ b/generator/integration_tests/golden/golden_kitchen_sink_client.cc @@ -17,6 +17,7 @@ // source: generator/integration_tests/test.proto #include "generator/integration_tests/golden/golden_kitchen_sink_client.h" +#include "generator/integration_tests/golden/internal/golden_kitchen_sink_option_defaults.h" #include namespace google { @@ -24,11 +25,12 @@ namespace cloud { namespace golden { GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN -GoldenKitchenSinkClient::GoldenKitchenSinkClient(std::shared_ptr connection) : connection_(std::move(connection)) {} +GoldenKitchenSinkClient::GoldenKitchenSinkClient(std::shared_ptr connection, Options options) : connection_(std::move(connection)), options_(golden_internal::GoldenKitchenSinkDefaultOptions(std::move(options))) {} GoldenKitchenSinkClient::~GoldenKitchenSinkClient() = default; StatusOr -GoldenKitchenSinkClient::GenerateAccessToken(std::string const& name, std::vector const& delegates, std::vector const& scope, google::protobuf::Duration const& lifetime) { +GoldenKitchenSinkClient::GenerateAccessToken(std::string const& name, std::vector const& delegates, std::vector const& scope, google::protobuf::Duration const& lifetime, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); google::test::admin::database::v1::GenerateAccessTokenRequest request; request.set_name(name); *request.mutable_delegates() = {delegates.begin(), delegates.end()}; @@ -38,7 +40,8 @@ GoldenKitchenSinkClient::GenerateAccessToken(std::string const& name, std::vecto } StatusOr -GoldenKitchenSinkClient::GenerateIdToken(std::string const& name, std::vector const& delegates, std::string const& audience, bool include_email) { +GoldenKitchenSinkClient::GenerateIdToken(std::string const& name, std::vector const& delegates, std::string const& audience, bool include_email, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); google::test::admin::database::v1::GenerateIdTokenRequest request; request.set_name(name); *request.mutable_delegates() = {delegates.begin(), delegates.end()}; @@ -48,7 +51,8 @@ GoldenKitchenSinkClient::GenerateIdToken(std::string const& name, std::vector -GoldenKitchenSinkClient::WriteLogEntries(std::string const& log_name, std::map const& labels) { +GoldenKitchenSinkClient::WriteLogEntries(std::string const& log_name, std::map const& labels, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); google::test::admin::database::v1::WriteLogEntriesRequest request; request.set_log_name(log_name); *request.mutable_labels() = {labels.begin(), labels.end()}; @@ -56,21 +60,24 @@ GoldenKitchenSinkClient::WriteLogEntries(std::string const& log_name, std::map -GoldenKitchenSinkClient::ListLogs(std::string const& parent) { +GoldenKitchenSinkClient::ListLogs(std::string const& parent, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); google::test::admin::database::v1::ListLogsRequest request; request.set_parent(parent); return connection_->ListLogs(request); } StreamRange -GoldenKitchenSinkClient::TailLogEntries(std::vector const& resource_names) { +GoldenKitchenSinkClient::TailLogEntries(std::vector const& resource_names, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); google::test::admin::database::v1::TailLogEntriesRequest request; *request.mutable_resource_names() = {resource_names.begin(), resource_names.end()}; return connection_->TailLogEntries(request); } StatusOr -GoldenKitchenSinkClient::ListServiceAccountKeys(std::string const& name, std::vector const& key_types) { +GoldenKitchenSinkClient::ListServiceAccountKeys(std::string const& name, std::vector const& key_types, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); google::test::admin::database::v1::ListServiceAccountKeysRequest request; request.set_name(name); *request.mutable_key_types() = {key_types.begin(), key_types.end()}; @@ -78,32 +85,38 @@ GoldenKitchenSinkClient::ListServiceAccountKeys(std::string const& name, std::ve } StatusOr -GoldenKitchenSinkClient::GenerateAccessToken(google::test::admin::database::v1::GenerateAccessTokenRequest const& request) { +GoldenKitchenSinkClient::GenerateAccessToken(google::test::admin::database::v1::GenerateAccessTokenRequest const& request, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); return connection_->GenerateAccessToken(request); } StatusOr -GoldenKitchenSinkClient::GenerateIdToken(google::test::admin::database::v1::GenerateIdTokenRequest const& request) { +GoldenKitchenSinkClient::GenerateIdToken(google::test::admin::database::v1::GenerateIdTokenRequest const& request, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); return connection_->GenerateIdToken(request); } StatusOr -GoldenKitchenSinkClient::WriteLogEntries(google::test::admin::database::v1::WriteLogEntriesRequest const& request) { +GoldenKitchenSinkClient::WriteLogEntries(google::test::admin::database::v1::WriteLogEntriesRequest const& request, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); return connection_->WriteLogEntries(request); } StreamRange -GoldenKitchenSinkClient::ListLogs(google::test::admin::database::v1::ListLogsRequest request) { +GoldenKitchenSinkClient::ListLogs(google::test::admin::database::v1::ListLogsRequest request, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); return connection_->ListLogs(std::move(request)); } StreamRange -GoldenKitchenSinkClient::TailLogEntries(google::test::admin::database::v1::TailLogEntriesRequest const& request) { +GoldenKitchenSinkClient::TailLogEntries(google::test::admin::database::v1::TailLogEntriesRequest const& request, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); return connection_->TailLogEntries(request); } StatusOr -GoldenKitchenSinkClient::ListServiceAccountKeys(google::test::admin::database::v1::ListServiceAccountKeysRequest const& request) { +GoldenKitchenSinkClient::ListServiceAccountKeys(google::test::admin::database::v1::ListServiceAccountKeysRequest const& request, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); return connection_->ListServiceAccountKeys(request); } diff --git a/generator/integration_tests/golden/golden_kitchen_sink_client.h b/generator/integration_tests/golden/golden_kitchen_sink_client.h index cd24d0410162a..bea32e469f27a 100644 --- a/generator/integration_tests/golden/golden_kitchen_sink_client.h +++ b/generator/integration_tests/golden/golden_kitchen_sink_client.h @@ -21,6 +21,7 @@ #include "generator/integration_tests/golden/golden_kitchen_sink_connection.h" #include "google/cloud/future.h" +#include "google/cloud/options.h" #include "google/cloud/polling_policy.h" #include "google/cloud/status_or.h" #include "google/cloud/version.h" @@ -69,7 +70,7 @@ GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN /// class GoldenKitchenSinkClient { public: - explicit GoldenKitchenSinkClient(std::shared_ptr connection); + explicit GoldenKitchenSinkClient(std::shared_ptr connection, Options options = {}); ~GoldenKitchenSinkClient(); //@{ @@ -114,13 +115,14 @@ class GoldenKitchenSinkClient { /// Must be set to a value less than or equal to 3600 (1 hour). If a value is /// not specified, the token's lifetime will be set to a default value of one /// hour. + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::GenerateAccessTokenResponse,generator/integration_tests/test.proto#L872} /// /// [google.test.admin.database.v1.GenerateAccessTokenRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L835} /// [google.test.admin.database.v1.GenerateAccessTokenResponse]: @googleapis_reference_link{generator/integration_tests/test.proto#L872} /// StatusOr - GenerateAccessToken(std::string const& name, std::vector const& delegates, std::vector const& scope, google::protobuf::Duration const& lifetime); + GenerateAccessToken(std::string const& name, std::vector const& delegates, std::vector const& scope, google::protobuf::Duration const& lifetime, Options options = {}); /// /// Generates an OpenID Connect ID token for a service account. @@ -142,13 +144,14 @@ class GoldenKitchenSinkClient { /// grants access to. /// @param include_email Include the service account email in the token. If set to `true`, the /// token will contain `email` and `email_verified` claims. + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::GenerateIdTokenResponse,generator/integration_tests/test.proto#L914} /// /// [google.test.admin.database.v1.GenerateIdTokenRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L881} /// [google.test.admin.database.v1.GenerateIdTokenResponse]: @googleapis_reference_link{generator/integration_tests/test.proto#L914} /// StatusOr - GenerateIdToken(std::string const& name, std::vector const& delegates, std::string const& audience, bool include_email); + GenerateIdToken(std::string const& name, std::vector const& delegates, std::string const& audience, bool include_email, Options options = {}); /// /// Writes log entries to Logging. This API method is the @@ -176,13 +179,14 @@ class GoldenKitchenSinkClient { /// entries in `entries`. If a log entry already has a label with the same key /// as a label in this parameter, then the log entry's label is not changed. /// See [LogEntry][google.logging.v2.LogEntry]. Test delimiter$ + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::WriteLogEntriesResponse,generator/integration_tests/test.proto#L953} /// /// [google.test.admin.database.v1.WriteLogEntriesRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L920} /// [google.test.admin.database.v1.WriteLogEntriesResponse]: @googleapis_reference_link{generator/integration_tests/test.proto#L953} /// StatusOr - WriteLogEntries(std::string const& log_name, std::map const& labels); + WriteLogEntries(std::string const& log_name, std::map const& labels, Options options = {}); /// /// Lists the logs in projects, organizations, folders, or billing accounts. @@ -193,12 +197,13 @@ class GoldenKitchenSinkClient { /// "organizations/[ORGANIZATION_ID]" /// "billingAccounts/[BILLING_ACCOUNT_ID]" /// "folders/[FOLDER_ID]" + /// @param options Optional. Operation options. /// @return std::string /// /// [google.test.admin.database.v1.ListLogsRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L956} /// StreamRange - ListLogs(std::string const& parent); + ListLogs(std::string const& parent, Options options = {}); /// /// Streaming read of log entries as they are ingested. Until the stream is @@ -214,13 +219,14 @@ class GoldenKitchenSinkClient { /// "organization/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]" /// "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]" /// "folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]" + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::TailLogEntriesResponse,generator/integration_tests/test.proto#L1214} /// /// [google.test.admin.database.v1.TailLogEntriesRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L1182} /// [google.test.admin.database.v1.TailLogEntriesResponse]: @googleapis_reference_link{generator/integration_tests/test.proto#L1214} /// StreamRange - TailLogEntries(std::vector const& resource_names); + TailLogEntries(std::vector const& resource_names, Options options = {}); /// /// Lists every [ServiceAccountKey][google.iam.admin.v1.ServiceAccountKey] for a service account. @@ -233,37 +239,40 @@ class GoldenKitchenSinkClient { /// @param key_types Filters the types of keys the user wants to include in the list /// response. Duplicate key types are not allowed. If no key type /// is provided, all keys are returned. + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::ListServiceAccountKeysResponse,generator/integration_tests/test.proto#L1286} /// /// [google.test.admin.database.v1.ListServiceAccountKeysRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L1254} /// [google.test.admin.database.v1.ListServiceAccountKeysResponse]: @googleapis_reference_link{generator/integration_tests/test.proto#L1286} /// StatusOr - ListServiceAccountKeys(std::string const& name, std::vector const& key_types); + ListServiceAccountKeys(std::string const& name, std::vector const& key_types, Options options = {}); /// /// Generates an OAuth 2.0 access token for a service account. /// /// @param request @googleapis_link{google::test::admin::database::v1::GenerateAccessTokenRequest,generator/integration_tests/test.proto#L835} + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::GenerateAccessTokenResponse,generator/integration_tests/test.proto#L872} /// /// [google.test.admin.database.v1.GenerateAccessTokenRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L835} /// [google.test.admin.database.v1.GenerateAccessTokenResponse]: @googleapis_reference_link{generator/integration_tests/test.proto#L872} /// StatusOr - GenerateAccessToken(google::test::admin::database::v1::GenerateAccessTokenRequest const& request); + GenerateAccessToken(google::test::admin::database::v1::GenerateAccessTokenRequest const& request, Options options = {}); /// /// Generates an OpenID Connect ID token for a service account. /// /// @param request @googleapis_link{google::test::admin::database::v1::GenerateIdTokenRequest,generator/integration_tests/test.proto#L881} + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::GenerateIdTokenResponse,generator/integration_tests/test.proto#L914} /// /// [google.test.admin.database.v1.GenerateIdTokenRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L881} /// [google.test.admin.database.v1.GenerateIdTokenResponse]: @googleapis_reference_link{generator/integration_tests/test.proto#L914} /// StatusOr - GenerateIdToken(google::test::admin::database::v1::GenerateIdTokenRequest const& request); + GenerateIdToken(google::test::admin::database::v1::GenerateIdTokenRequest const& request, Options options = {}); /// /// Writes log entries to Logging. This API method is the @@ -275,53 +284,58 @@ class GoldenKitchenSinkClient { /// folders) /// /// @param request @googleapis_link{google::test::admin::database::v1::WriteLogEntriesRequest,generator/integration_tests/test.proto#L920} + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::WriteLogEntriesResponse,generator/integration_tests/test.proto#L953} /// /// [google.test.admin.database.v1.WriteLogEntriesRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L920} /// [google.test.admin.database.v1.WriteLogEntriesResponse]: @googleapis_reference_link{generator/integration_tests/test.proto#L953} /// StatusOr - WriteLogEntries(google::test::admin::database::v1::WriteLogEntriesRequest const& request); + WriteLogEntries(google::test::admin::database::v1::WriteLogEntriesRequest const& request, Options options = {}); /// /// Lists the logs in projects, organizations, folders, or billing accounts. /// Only logs that have entries are listed. /// /// @param request @googleapis_link{google::test::admin::database::v1::ListLogsRequest,generator/integration_tests/test.proto#L956} + /// @param options Optional. Operation options. /// @return std::string /// /// [google.test.admin.database.v1.ListLogsRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L956} /// StreamRange - ListLogs(google::test::admin::database::v1::ListLogsRequest request); + ListLogs(google::test::admin::database::v1::ListLogsRequest request, Options options = {}); /// /// Streaming read of log entries as they are ingested. Until the stream is /// terminated, it will continue reading logs. /// /// @param request @googleapis_link{google::test::admin::database::v1::TailLogEntriesRequest,generator/integration_tests/test.proto#L1182} + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::TailLogEntriesResponse,generator/integration_tests/test.proto#L1214} /// /// [google.test.admin.database.v1.TailLogEntriesRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L1182} /// [google.test.admin.database.v1.TailLogEntriesResponse]: @googleapis_reference_link{generator/integration_tests/test.proto#L1214} /// StreamRange - TailLogEntries(google::test::admin::database::v1::TailLogEntriesRequest const& request); + TailLogEntries(google::test::admin::database::v1::TailLogEntriesRequest const& request, Options options = {}); /// /// Lists every [ServiceAccountKey][google.iam.admin.v1.ServiceAccountKey] for a service account. /// /// @param request @googleapis_link{google::test::admin::database::v1::ListServiceAccountKeysRequest,generator/integration_tests/test.proto#L1254} + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::ListServiceAccountKeysResponse,generator/integration_tests/test.proto#L1286} /// /// [google.test.admin.database.v1.ListServiceAccountKeysRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L1254} /// [google.test.admin.database.v1.ListServiceAccountKeysResponse]: @googleapis_reference_link{generator/integration_tests/test.proto#L1286} /// StatusOr - ListServiceAccountKeys(google::test::admin::database::v1::ListServiceAccountKeysRequest const& request); + ListServiceAccountKeys(google::test::admin::database::v1::ListServiceAccountKeysRequest const& request, Options options = {}); private: std::shared_ptr connection_; + Options options_; }; GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END diff --git a/generator/integration_tests/golden/golden_thing_admin_client.cc b/generator/integration_tests/golden/golden_thing_admin_client.cc index 3f089deb68fe8..588e3ac00cb2c 100644 --- a/generator/integration_tests/golden/golden_thing_admin_client.cc +++ b/generator/integration_tests/golden/golden_thing_admin_client.cc @@ -17,9 +17,9 @@ // source: generator/integration_tests/test.proto #include "generator/integration_tests/golden/golden_thing_admin_client.h" +#include "generator/integration_tests/golden/internal/golden_thing_admin_option_defaults.h" #include #include "generator/integration_tests/golden/golden_thing_admin_options.h" -#include "generator/integration_tests/golden/internal/golden_thing_admin_option_defaults.h" #include namespace google { @@ -27,18 +27,20 @@ namespace cloud { namespace golden { GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN -GoldenThingAdminClient::GoldenThingAdminClient(std::shared_ptr connection) : connection_(std::move(connection)) {} +GoldenThingAdminClient::GoldenThingAdminClient(std::shared_ptr connection, Options options) : connection_(std::move(connection)), options_(golden_internal::GoldenThingAdminDefaultOptions(std::move(options))) {} GoldenThingAdminClient::~GoldenThingAdminClient() = default; StreamRange -GoldenThingAdminClient::ListDatabases(std::string const& parent) { +GoldenThingAdminClient::ListDatabases(std::string const& parent, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); google::test::admin::database::v1::ListDatabasesRequest request; request.set_parent(parent); return connection_->ListDatabases(request); } future> -GoldenThingAdminClient::CreateDatabase(std::string const& parent, std::string const& create_statement) { +GoldenThingAdminClient::CreateDatabase(std::string const& parent, std::string const& create_statement, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); google::test::admin::database::v1::CreateDatabaseRequest request; request.set_parent(parent); request.set_create_statement(create_statement); @@ -46,14 +48,16 @@ GoldenThingAdminClient::CreateDatabase(std::string const& parent, std::string co } StatusOr -GoldenThingAdminClient::GetDatabase(std::string const& name) { +GoldenThingAdminClient::GetDatabase(std::string const& name, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); google::test::admin::database::v1::GetDatabaseRequest request; request.set_name(name); return connection_->GetDatabase(request); } future> -GoldenThingAdminClient::UpdateDatabaseDdl(std::string const& database, std::vector const& statements) { +GoldenThingAdminClient::UpdateDatabaseDdl(std::string const& database, std::vector const& statements, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); google::test::admin::database::v1::UpdateDatabaseDdlRequest request; request.set_database(database); *request.mutable_statements() = {statements.begin(), statements.end()}; @@ -61,21 +65,24 @@ GoldenThingAdminClient::UpdateDatabaseDdl(std::string const& database, std::vect } Status -GoldenThingAdminClient::DropDatabase(std::string const& database) { +GoldenThingAdminClient::DropDatabase(std::string const& database, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); google::test::admin::database::v1::DropDatabaseRequest request; request.set_database(database); return connection_->DropDatabase(request); } StatusOr -GoldenThingAdminClient::GetDatabaseDdl(std::string const& database) { +GoldenThingAdminClient::GetDatabaseDdl(std::string const& database, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); google::test::admin::database::v1::GetDatabaseDdlRequest request; request.set_database(database); return connection_->GetDatabaseDdl(request); } StatusOr -GoldenThingAdminClient::SetIamPolicy(std::string const& resource, google::iam::v1::Policy const& policy) { +GoldenThingAdminClient::SetIamPolicy(std::string const& resource, google::iam::v1::Policy const& policy, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); google::iam::v1::SetIamPolicyRequest request; request.set_resource(resource); *request.mutable_policy() = policy; @@ -85,8 +92,8 @@ GoldenThingAdminClient::SetIamPolicy(std::string const& resource, google::iam::v StatusOr GoldenThingAdminClient::SetIamPolicy(std::string const& resource, IamUpdater const& updater, Options options) { internal::CheckExpectedOptions(options, __func__); - options = golden_internal::GoldenThingAdminDefaultOptions(std::move(options)); - auto backoff_policy = options.get()->clone(); + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); + auto backoff_policy = internal::CurrentOptions().get()->clone(); for (;;) { auto recent = GetIamPolicy(resource); if (!recent) { @@ -105,14 +112,16 @@ GoldenThingAdminClient::SetIamPolicy(std::string const& resource, IamUpdater con } StatusOr -GoldenThingAdminClient::GetIamPolicy(std::string const& resource) { +GoldenThingAdminClient::GetIamPolicy(std::string const& resource, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); google::iam::v1::GetIamPolicyRequest request; request.set_resource(resource); return connection_->GetIamPolicy(request); } StatusOr -GoldenThingAdminClient::TestIamPermissions(std::string const& resource, std::vector const& permissions) { +GoldenThingAdminClient::TestIamPermissions(std::string const& resource, std::vector const& permissions, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); google::iam::v1::TestIamPermissionsRequest request; request.set_resource(resource); *request.mutable_permissions() = {permissions.begin(), permissions.end()}; @@ -120,7 +129,8 @@ GoldenThingAdminClient::TestIamPermissions(std::string const& resource, std::vec } future> -GoldenThingAdminClient::CreateBackup(std::string const& parent, google::test::admin::database::v1::Backup const& backup, std::string const& backup_id) { +GoldenThingAdminClient::CreateBackup(std::string const& parent, google::test::admin::database::v1::Backup const& backup, std::string const& backup_id, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); google::test::admin::database::v1::CreateBackupRequest request; request.set_parent(parent); *request.mutable_backup() = backup; @@ -129,14 +139,16 @@ GoldenThingAdminClient::CreateBackup(std::string const& parent, google::test::ad } StatusOr -GoldenThingAdminClient::GetBackup(std::string const& name) { +GoldenThingAdminClient::GetBackup(std::string const& name, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); google::test::admin::database::v1::GetBackupRequest request; request.set_name(name); return connection_->GetBackup(request); } StatusOr -GoldenThingAdminClient::UpdateBackup(google::test::admin::database::v1::Backup const& backup, google::protobuf::FieldMask const& update_mask) { +GoldenThingAdminClient::UpdateBackup(google::test::admin::database::v1::Backup const& backup, google::protobuf::FieldMask const& update_mask, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); google::test::admin::database::v1::UpdateBackupRequest request; *request.mutable_backup() = backup; *request.mutable_update_mask() = update_mask; @@ -144,21 +156,24 @@ GoldenThingAdminClient::UpdateBackup(google::test::admin::database::v1::Backup c } Status -GoldenThingAdminClient::DeleteBackup(std::string const& name) { +GoldenThingAdminClient::DeleteBackup(std::string const& name, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); google::test::admin::database::v1::DeleteBackupRequest request; request.set_name(name); return connection_->DeleteBackup(request); } StreamRange -GoldenThingAdminClient::ListBackups(std::string const& parent) { +GoldenThingAdminClient::ListBackups(std::string const& parent, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); google::test::admin::database::v1::ListBackupsRequest request; request.set_parent(parent); return connection_->ListBackups(request); } future> -GoldenThingAdminClient::RestoreDatabase(std::string const& parent, std::string const& database_id, std::string const& backup) { +GoldenThingAdminClient::RestoreDatabase(std::string const& parent, std::string const& database_id, std::string const& backup, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); google::test::admin::database::v1::RestoreDatabaseRequest request; request.set_parent(parent); request.set_database_id(database_id); @@ -167,125 +182,148 @@ GoldenThingAdminClient::RestoreDatabase(std::string const& parent, std::string c } StreamRange -GoldenThingAdminClient::ListDatabaseOperations(std::string const& parent) { +GoldenThingAdminClient::ListDatabaseOperations(std::string const& parent, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); google::test::admin::database::v1::ListDatabaseOperationsRequest request; request.set_parent(parent); return connection_->ListDatabaseOperations(request); } StreamRange -GoldenThingAdminClient::ListBackupOperations(std::string const& parent) { +GoldenThingAdminClient::ListBackupOperations(std::string const& parent, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); google::test::admin::database::v1::ListBackupOperationsRequest request; request.set_parent(parent); return connection_->ListBackupOperations(request); } future> -GoldenThingAdminClient::AsyncGetDatabase(std::string const& name) { +GoldenThingAdminClient::AsyncGetDatabase(std::string const& name, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); google::test::admin::database::v1::GetDatabaseRequest request; request.set_name(name); return connection_->AsyncGetDatabase(request); } future -GoldenThingAdminClient::AsyncDropDatabase(std::string const& database) { +GoldenThingAdminClient::AsyncDropDatabase(std::string const& database, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); google::test::admin::database::v1::DropDatabaseRequest request; request.set_database(database); return connection_->AsyncDropDatabase(request); } StreamRange -GoldenThingAdminClient::ListDatabases(google::test::admin::database::v1::ListDatabasesRequest request) { +GoldenThingAdminClient::ListDatabases(google::test::admin::database::v1::ListDatabasesRequest request, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); return connection_->ListDatabases(std::move(request)); } future> -GoldenThingAdminClient::CreateDatabase(google::test::admin::database::v1::CreateDatabaseRequest const& request) { +GoldenThingAdminClient::CreateDatabase(google::test::admin::database::v1::CreateDatabaseRequest const& request, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); return connection_->CreateDatabase(request); } StatusOr -GoldenThingAdminClient::GetDatabase(google::test::admin::database::v1::GetDatabaseRequest const& request) { +GoldenThingAdminClient::GetDatabase(google::test::admin::database::v1::GetDatabaseRequest const& request, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); return connection_->GetDatabase(request); } future> -GoldenThingAdminClient::UpdateDatabaseDdl(google::test::admin::database::v1::UpdateDatabaseDdlRequest const& request) { +GoldenThingAdminClient::UpdateDatabaseDdl(google::test::admin::database::v1::UpdateDatabaseDdlRequest const& request, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); return connection_->UpdateDatabaseDdl(request); } Status -GoldenThingAdminClient::DropDatabase(google::test::admin::database::v1::DropDatabaseRequest const& request) { +GoldenThingAdminClient::DropDatabase(google::test::admin::database::v1::DropDatabaseRequest const& request, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); return connection_->DropDatabase(request); } StatusOr -GoldenThingAdminClient::GetDatabaseDdl(google::test::admin::database::v1::GetDatabaseDdlRequest const& request) { +GoldenThingAdminClient::GetDatabaseDdl(google::test::admin::database::v1::GetDatabaseDdlRequest const& request, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); return connection_->GetDatabaseDdl(request); } StatusOr -GoldenThingAdminClient::SetIamPolicy(google::iam::v1::SetIamPolicyRequest const& request) { +GoldenThingAdminClient::SetIamPolicy(google::iam::v1::SetIamPolicyRequest const& request, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); return connection_->SetIamPolicy(request); } StatusOr -GoldenThingAdminClient::GetIamPolicy(google::iam::v1::GetIamPolicyRequest const& request) { +GoldenThingAdminClient::GetIamPolicy(google::iam::v1::GetIamPolicyRequest const& request, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); return connection_->GetIamPolicy(request); } StatusOr -GoldenThingAdminClient::TestIamPermissions(google::iam::v1::TestIamPermissionsRequest const& request) { +GoldenThingAdminClient::TestIamPermissions(google::iam::v1::TestIamPermissionsRequest const& request, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); return connection_->TestIamPermissions(request); } future> -GoldenThingAdminClient::CreateBackup(google::test::admin::database::v1::CreateBackupRequest const& request) { +GoldenThingAdminClient::CreateBackup(google::test::admin::database::v1::CreateBackupRequest const& request, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); return connection_->CreateBackup(request); } StatusOr -GoldenThingAdminClient::GetBackup(google::test::admin::database::v1::GetBackupRequest const& request) { +GoldenThingAdminClient::GetBackup(google::test::admin::database::v1::GetBackupRequest const& request, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); return connection_->GetBackup(request); } StatusOr -GoldenThingAdminClient::UpdateBackup(google::test::admin::database::v1::UpdateBackupRequest const& request) { +GoldenThingAdminClient::UpdateBackup(google::test::admin::database::v1::UpdateBackupRequest const& request, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); return connection_->UpdateBackup(request); } Status -GoldenThingAdminClient::DeleteBackup(google::test::admin::database::v1::DeleteBackupRequest const& request) { +GoldenThingAdminClient::DeleteBackup(google::test::admin::database::v1::DeleteBackupRequest const& request, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); return connection_->DeleteBackup(request); } StreamRange -GoldenThingAdminClient::ListBackups(google::test::admin::database::v1::ListBackupsRequest request) { +GoldenThingAdminClient::ListBackups(google::test::admin::database::v1::ListBackupsRequest request, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); return connection_->ListBackups(std::move(request)); } future> -GoldenThingAdminClient::RestoreDatabase(google::test::admin::database::v1::RestoreDatabaseRequest const& request) { +GoldenThingAdminClient::RestoreDatabase(google::test::admin::database::v1::RestoreDatabaseRequest const& request, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); return connection_->RestoreDatabase(request); } StreamRange -GoldenThingAdminClient::ListDatabaseOperations(google::test::admin::database::v1::ListDatabaseOperationsRequest request) { +GoldenThingAdminClient::ListDatabaseOperations(google::test::admin::database::v1::ListDatabaseOperationsRequest request, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); return connection_->ListDatabaseOperations(std::move(request)); } StreamRange -GoldenThingAdminClient::ListBackupOperations(google::test::admin::database::v1::ListBackupOperationsRequest request) { +GoldenThingAdminClient::ListBackupOperations(google::test::admin::database::v1::ListBackupOperationsRequest request, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); return connection_->ListBackupOperations(std::move(request)); } future> -GoldenThingAdminClient::AsyncGetDatabase(google::test::admin::database::v1::GetDatabaseRequest const& request) { +GoldenThingAdminClient::AsyncGetDatabase(google::test::admin::database::v1::GetDatabaseRequest const& request, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); return connection_->AsyncGetDatabase(request); } future -GoldenThingAdminClient::AsyncDropDatabase(google::test::admin::database::v1::DropDatabaseRequest const& request) { +GoldenThingAdminClient::AsyncDropDatabase(google::test::admin::database::v1::DropDatabaseRequest const& request, Options options) { + internal::OptionsSpan span(internal::MergeOptions(std::move(options), options_)); return connection_->AsyncDropDatabase(request); } diff --git a/generator/integration_tests/golden/golden_thing_admin_client.h b/generator/integration_tests/golden/golden_thing_admin_client.h index 297d48f73ca07..b2d1bc32d228f 100644 --- a/generator/integration_tests/golden/golden_thing_admin_client.h +++ b/generator/integration_tests/golden/golden_thing_admin_client.h @@ -21,11 +21,11 @@ #include "generator/integration_tests/golden/golden_thing_admin_connection.h" #include "google/cloud/future.h" +#include "google/cloud/options.h" #include "google/cloud/polling_policy.h" #include "google/cloud/status_or.h" #include "google/cloud/version.h" #include "google/cloud/iam_updater.h" -#include "google/cloud/options.h" #include #include @@ -67,7 +67,7 @@ GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN /// class GoldenThingAdminClient { public: - explicit GoldenThingAdminClient(std::shared_ptr connection); + explicit GoldenThingAdminClient(std::shared_ptr connection, Options options = {}); ~GoldenThingAdminClient(); //@{ @@ -93,13 +93,14 @@ class GoldenThingAdminClient { /// /// @param parent Required. The instance whose databases should be listed. /// Values are of the form `projects//instances/`. + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::Database,generator/integration_tests/test.proto#L329} /// /// [google.test.admin.database.v1.ListDatabasesRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L377} /// [google.test.admin.database.v1.Database]: @googleapis_reference_link{generator/integration_tests/test.proto#L329} /// StreamRange - ListDatabases(std::string const& parent); + ListDatabases(std::string const& parent, Options options = {}); /// /// Creates a new Cloud Test database and starts to prepare it for serving. @@ -118,26 +119,28 @@ class GoldenThingAdminClient { /// `[a-z][a-z0-9_\-]*[a-z0-9]` and be between 2 and 30 characters in length. /// If the database ID is a reserved word or if it contains a hyphen, the /// database ID must be enclosed in backticks (`` ` ``). + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::Database,generator/integration_tests/test.proto#L329} /// /// [google.test.admin.database.v1.CreateDatabaseRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L409} /// [google.test.admin.database.v1.Database]: @googleapis_reference_link{generator/integration_tests/test.proto#L329} /// future> - CreateDatabase(std::string const& parent, std::string const& create_statement); + CreateDatabase(std::string const& parent, std::string const& create_statement, Options options = {}); /// /// Gets the state of a Cloud Test database. /// /// @param name Required. The name of the requested database. Values are of the form /// `projects//instances//databases/`. + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::Database,generator/integration_tests/test.proto#L329} /// /// [google.test.admin.database.v1.GetDatabaseRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L443} /// [google.test.admin.database.v1.Database]: @googleapis_reference_link{generator/integration_tests/test.proto#L329} /// StatusOr - GetDatabase(std::string const& name); + GetDatabase(std::string const& name, Options options = {}); /// /// Updates the schema of a Cloud Test database by @@ -150,13 +153,14 @@ class GoldenThingAdminClient { /// /// @param database Required. The database to update. /// @param statements Required. DDL statements to be applied to the database. + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::UpdateDatabaseDdlMetadata,generator/integration_tests/test.proto#L506} /// /// [google.test.admin.database.v1.UpdateDatabaseDdlRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L470} /// [google.test.admin.database.v1.UpdateDatabaseDdlMetadata]: @googleapis_reference_link{generator/integration_tests/test.proto#L506} /// future> - UpdateDatabaseDdl(std::string const& database, std::vector const& statements); + UpdateDatabaseDdl(std::string const& database, std::vector const& statements, Options options = {}); /// /// Drops (aka deletes) a Cloud Test database. @@ -164,11 +168,12 @@ class GoldenThingAdminClient { /// `expire_time`. /// /// @param database Required. The database to be dropped. + /// @param options Optional. Operation options. /// /// [google.test.admin.database.v1.DropDatabaseRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L523} /// Status - DropDatabase(std::string const& database); + DropDatabase(std::string const& database, Options options = {}); /// /// Returns the schema of a Cloud Test database as a list of formatted @@ -176,13 +181,14 @@ class GoldenThingAdminClient { /// be queried using the [Operations][google.longrunning.Operations] API. /// /// @param database Required. The database whose schema we wish to get. + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::GetDatabaseDdlResponse,generator/integration_tests/test.proto#L545} /// /// [google.test.admin.database.v1.GetDatabaseDdlRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L534} /// [google.test.admin.database.v1.GetDatabaseDdlResponse]: @googleapis_reference_link{generator/integration_tests/test.proto#L545} /// StatusOr - GetDatabaseDdl(std::string const& database); + GetDatabaseDdl(std::string const& database, Options options = {}); /// /// Sets the access control policy on a database or backup resource. @@ -199,13 +205,14 @@ class GoldenThingAdminClient { /// the policy is limited to a few 10s of KB. An empty policy is a /// valid policy but certain Cloud Platform services (such as Projects) /// might reject them. + /// @param options Optional. Operation options. /// @return @googleapis_link{google::iam::v1::Policy,google/iam/v1/policy.proto#L88} /// /// [google.iam.v1.SetIamPolicyRequest]: @googleapis_reference_link{google/iam/v1/iam_policy.proto#L98} /// [google.iam.v1.Policy]: @googleapis_reference_link{google/iam/v1/policy.proto#L88} /// StatusOr - SetIamPolicy(std::string const& resource, google::iam::v1::Policy const& policy); + SetIamPolicy(std::string const& resource, google::iam::v1::Policy const& policy, Options options = {}); /** * Updates the IAM policy for @p resource using an optimistic concurrency @@ -243,13 +250,14 @@ class GoldenThingAdminClient { /// /// @param resource REQUIRED: The resource for which the policy is being requested. /// See the operation documentation for the appropriate value for this field. + /// @param options Optional. Operation options. /// @return @googleapis_link{google::iam::v1::Policy,google/iam/v1/policy.proto#L88} /// /// [google.iam.v1.GetIamPolicyRequest]: @googleapis_reference_link{google/iam/v1/iam_policy.proto#L113} /// [google.iam.v1.Policy]: @googleapis_reference_link{google/iam/v1/policy.proto#L88} /// StatusOr - GetIamPolicy(std::string const& resource); + GetIamPolicy(std::string const& resource, Options options = {}); /// /// Returns permissions that the caller has on the specified database or backup @@ -269,13 +277,14 @@ class GoldenThingAdminClient { /// wildcards (such as '*' or 'storage.*') are not allowed. For more /// information see /// [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions). + /// @param options Optional. Operation options. /// @return @googleapis_link{google::iam::v1::TestIamPermissionsResponse,google/iam/v1/iam_policy.proto#L141} /// /// [google.iam.v1.TestIamPermissionsRequest]: @googleapis_reference_link{google/iam/v1/iam_policy.proto#L126} /// [google.iam.v1.TestIamPermissionsResponse]: @googleapis_reference_link{google/iam/v1/iam_policy.proto#L141} /// StatusOr - TestIamPermissions(std::string const& resource, std::vector const& permissions); + TestIamPermissions(std::string const& resource, std::vector const& permissions, Options options = {}); /// /// Starts creating a new Cloud Test Backup. @@ -301,13 +310,14 @@ class GoldenThingAdminClient { /// @param backup_id Required. The id of the backup to be created. The `backup_id` appended to /// `parent` forms the full backup name of the form /// `projects//instances//backups/`. + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::Backup,generator/integration_tests/backup.proto#L36} /// /// [google.test.admin.database.v1.CreateBackupRequest]: @googleapis_reference_link{generator/integration_tests/backup.proto#L110} /// [google.test.admin.database.v1.Backup]: @googleapis_reference_link{generator/integration_tests/backup.proto#L36} /// future> - CreateBackup(std::string const& parent, google::test::admin::database::v1::Backup const& backup, std::string const& backup_id); + CreateBackup(std::string const& parent, google::test::admin::database::v1::Backup const& backup, std::string const& backup_id, Options options = {}); /// /// Gets metadata on a pending or completed [Backup][google.test.admin.database.v1.Backup]. @@ -315,13 +325,14 @@ class GoldenThingAdminClient { /// @param name Required. Name of the backup. /// Values are of the form /// `projects//instances//backups/`. + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::Backup,generator/integration_tests/backup.proto#L36} /// /// [google.test.admin.database.v1.GetBackupRequest]: @googleapis_reference_link{generator/integration_tests/backup.proto#L177} /// [google.test.admin.database.v1.Backup]: @googleapis_reference_link{generator/integration_tests/backup.proto#L36} /// StatusOr - GetBackup(std::string const& name); + GetBackup(std::string const& name, Options options = {}); /// /// Updates a pending or completed [Backup][google.test.admin.database.v1.Backup]. @@ -335,13 +346,14 @@ class GoldenThingAdminClient { /// resource, not to the request message. The field mask must always be /// specified; this prevents any future fields from being erased accidentally /// by clients that do not know about them. + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::Backup,generator/integration_tests/backup.proto#L36} /// /// [google.test.admin.database.v1.UpdateBackupRequest]: @googleapis_reference_link{generator/integration_tests/backup.proto#L161} /// [google.test.admin.database.v1.Backup]: @googleapis_reference_link{generator/integration_tests/backup.proto#L36} /// StatusOr - UpdateBackup(google::test::admin::database::v1::Backup const& backup, google::protobuf::FieldMask const& update_mask); + UpdateBackup(google::test::admin::database::v1::Backup const& backup, google::protobuf::FieldMask const& update_mask, Options options = {}); /// /// Deletes a pending or completed [Backup][google.test.admin.database.v1.Backup]. @@ -349,11 +361,12 @@ class GoldenThingAdminClient { /// @param name Required. Name of the backup to delete. /// Values are of the form /// `projects//instances//backups/`. + /// @param options Optional. Operation options. /// /// [google.test.admin.database.v1.DeleteBackupRequest]: @googleapis_reference_link{generator/integration_tests/backup.proto#L190} /// Status - DeleteBackup(std::string const& name); + DeleteBackup(std::string const& name, Options options = {}); /// /// Lists completed and pending backups. @@ -362,13 +375,14 @@ class GoldenThingAdminClient { /// /// @param parent Required. The instance to list backups from. Values are of the /// form `projects//instances/`. + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::Backup,generator/integration_tests/backup.proto#L36} /// /// [google.test.admin.database.v1.ListBackupsRequest]: @googleapis_reference_link{generator/integration_tests/backup.proto#L203} /// [google.test.admin.database.v1.Backup]: @googleapis_reference_link{generator/integration_tests/backup.proto#L36} /// StreamRange - ListBackups(std::string const& parent); + ListBackups(std::string const& parent, Options options = {}); /// /// Create a new database by restoring from a completed backup. The new @@ -400,13 +414,14 @@ class GoldenThingAdminClient { /// `projects//instances//databases/`. /// @param backup Name of the backup from which to restore. Values are of the form /// `projects//instances//backups/`. + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::Database,generator/integration_tests/test.proto#L329} /// /// [google.test.admin.database.v1.RestoreDatabaseRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L634} /// [google.test.admin.database.v1.Database]: @googleapis_reference_link{generator/integration_tests/test.proto#L329} /// future> - RestoreDatabase(std::string const& parent, std::string const& database_id, std::string const& backup); + RestoreDatabase(std::string const& parent, std::string const& database_id, std::string const& backup, Options options = {}); /// /// Lists database [longrunning-operations][google.longrunning.Operation]. @@ -420,13 +435,14 @@ class GoldenThingAdminClient { /// /// @param parent Required. The instance of the database operations. /// Values are of the form `projects//instances/`. + /// @param options Optional. Operation options. /// @return @googleapis_link{google::longrunning::Operation,google/longrunning/operations.proto#L128} /// /// [google.test.admin.database.v1.ListDatabaseOperationsRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L553} /// [google.longrunning.Operation]: @googleapis_reference_link{google/longrunning/operations.proto#L128} /// StreamRange - ListDatabaseOperations(std::string const& parent); + ListDatabaseOperations(std::string const& parent, Options options = {}); /// /// Lists the backup [long-running operations][google.longrunning.Operation] in @@ -442,26 +458,28 @@ class GoldenThingAdminClient { /// /// @param parent Required. The instance of the backup operations. Values are of /// the form `projects//instances/`. + /// @param options Optional. Operation options. /// @return @googleapis_link{google::longrunning::Operation,google/longrunning/operations.proto#L128} /// /// [google.test.admin.database.v1.ListBackupOperationsRequest]: @googleapis_reference_link{generator/integration_tests/backup.proto#L274} /// [google.longrunning.Operation]: @googleapis_reference_link{google/longrunning/operations.proto#L128} /// StreamRange - ListBackupOperations(std::string const& parent); + ListBackupOperations(std::string const& parent, Options options = {}); /// /// Gets the state of a Cloud Test database. /// /// @param name Required. The name of the requested database. Values are of the form /// `projects//instances//databases/`. + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::Database,generator/integration_tests/test.proto#L329} /// /// [google.test.admin.database.v1.GetDatabaseRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L443} /// [google.test.admin.database.v1.Database]: @googleapis_reference_link{generator/integration_tests/test.proto#L329} /// future> - AsyncGetDatabase(std::string const& name); + AsyncGetDatabase(std::string const& name, Options options = {}); /// /// Drops (aka deletes) a Cloud Test database. @@ -469,23 +487,25 @@ class GoldenThingAdminClient { /// `expire_time`. /// /// @param database Required. The database to be dropped. + /// @param options Optional. Operation options. /// /// [google.test.admin.database.v1.DropDatabaseRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L523} /// future - AsyncDropDatabase(std::string const& database); + AsyncDropDatabase(std::string const& database, Options options = {}); /// /// Lists Cloud Test databases. /// /// @param request @googleapis_link{google::test::admin::database::v1::ListDatabasesRequest,generator/integration_tests/test.proto#L377} + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::Database,generator/integration_tests/test.proto#L329} /// /// [google.test.admin.database.v1.ListDatabasesRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L377} /// [google.test.admin.database.v1.Database]: @googleapis_reference_link{generator/integration_tests/test.proto#L329} /// StreamRange - ListDatabases(google::test::admin::database::v1::ListDatabasesRequest request); + ListDatabases(google::test::admin::database::v1::ListDatabasesRequest request, Options options = {}); /// /// Creates a new Cloud Test database and starts to prepare it for serving. @@ -498,25 +518,27 @@ class GoldenThingAdminClient { /// [Database][google.test.admin.database.v1.Database], if successful. /// /// @param request @googleapis_link{google::test::admin::database::v1::CreateDatabaseRequest,generator/integration_tests/test.proto#L409} + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::Database,generator/integration_tests/test.proto#L329} /// /// [google.test.admin.database.v1.CreateDatabaseRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L409} /// [google.test.admin.database.v1.Database]: @googleapis_reference_link{generator/integration_tests/test.proto#L329} /// future> - CreateDatabase(google::test::admin::database::v1::CreateDatabaseRequest const& request); + CreateDatabase(google::test::admin::database::v1::CreateDatabaseRequest const& request, Options options = {}); /// /// Gets the state of a Cloud Test database. /// /// @param request @googleapis_link{google::test::admin::database::v1::GetDatabaseRequest,generator/integration_tests/test.proto#L443} + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::Database,generator/integration_tests/test.proto#L329} /// /// [google.test.admin.database.v1.GetDatabaseRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L443} /// [google.test.admin.database.v1.Database]: @googleapis_reference_link{generator/integration_tests/test.proto#L329} /// StatusOr - GetDatabase(google::test::admin::database::v1::GetDatabaseRequest const& request); + GetDatabase(google::test::admin::database::v1::GetDatabaseRequest const& request, Options options = {}); /// /// Updates the schema of a Cloud Test database by @@ -528,13 +550,14 @@ class GoldenThingAdminClient { /// [UpdateDatabaseDdlMetadata][google.test.admin.database.v1.UpdateDatabaseDdlMetadata]. The operation has no response. /// /// @param request @googleapis_link{google::test::admin::database::v1::UpdateDatabaseDdlRequest,generator/integration_tests/test.proto#L470} + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::UpdateDatabaseDdlMetadata,generator/integration_tests/test.proto#L506} /// /// [google.test.admin.database.v1.UpdateDatabaseDdlRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L470} /// [google.test.admin.database.v1.UpdateDatabaseDdlMetadata]: @googleapis_reference_link{generator/integration_tests/test.proto#L506} /// future> - UpdateDatabaseDdl(google::test::admin::database::v1::UpdateDatabaseDdlRequest const& request); + UpdateDatabaseDdl(google::test::admin::database::v1::UpdateDatabaseDdlRequest const& request, Options options = {}); /// /// Drops (aka deletes) a Cloud Test database. @@ -542,11 +565,12 @@ class GoldenThingAdminClient { /// `expire_time`. /// /// @param request @googleapis_link{google::test::admin::database::v1::DropDatabaseRequest,generator/integration_tests/test.proto#L523} + /// @param options Optional. Operation options. /// /// [google.test.admin.database.v1.DropDatabaseRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L523} /// Status - DropDatabase(google::test::admin::database::v1::DropDatabaseRequest const& request); + DropDatabase(google::test::admin::database::v1::DropDatabaseRequest const& request, Options options = {}); /// /// Returns the schema of a Cloud Test database as a list of formatted @@ -554,13 +578,14 @@ class GoldenThingAdminClient { /// be queried using the [Operations][google.longrunning.Operations] API. /// /// @param request @googleapis_link{google::test::admin::database::v1::GetDatabaseDdlRequest,generator/integration_tests/test.proto#L534} + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::GetDatabaseDdlResponse,generator/integration_tests/test.proto#L545} /// /// [google.test.admin.database.v1.GetDatabaseDdlRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L534} /// [google.test.admin.database.v1.GetDatabaseDdlResponse]: @googleapis_reference_link{generator/integration_tests/test.proto#L545} /// StatusOr - GetDatabaseDdl(google::test::admin::database::v1::GetDatabaseDdlRequest const& request); + GetDatabaseDdl(google::test::admin::database::v1::GetDatabaseDdlRequest const& request, Options options = {}); /// /// Sets the access control policy on a database or backup resource. @@ -572,13 +597,14 @@ class GoldenThingAdminClient { /// permission on [resource][google.iam.v1.SetIamPolicyRequest.resource]. /// /// @param request @googleapis_link{google::iam::v1::SetIamPolicyRequest,google/iam/v1/iam_policy.proto#L98} + /// @param options Optional. Operation options. /// @return @googleapis_link{google::iam::v1::Policy,google/iam/v1/policy.proto#L88} /// /// [google.iam.v1.SetIamPolicyRequest]: @googleapis_reference_link{google/iam/v1/iam_policy.proto#L98} /// [google.iam.v1.Policy]: @googleapis_reference_link{google/iam/v1/policy.proto#L88} /// StatusOr - SetIamPolicy(google::iam::v1::SetIamPolicyRequest const& request); + SetIamPolicy(google::iam::v1::SetIamPolicyRequest const& request, Options options = {}); /// /// Gets the access control policy for a database or backup resource. @@ -591,13 +617,14 @@ class GoldenThingAdminClient { /// permission on [resource][google.iam.v1.GetIamPolicyRequest.resource]. /// /// @param request @googleapis_link{google::iam::v1::GetIamPolicyRequest,google/iam/v1/iam_policy.proto#L113} + /// @param options Optional. Operation options. /// @return @googleapis_link{google::iam::v1::Policy,google/iam/v1/policy.proto#L88} /// /// [google.iam.v1.GetIamPolicyRequest]: @googleapis_reference_link{google/iam/v1/iam_policy.proto#L113} /// [google.iam.v1.Policy]: @googleapis_reference_link{google/iam/v1/policy.proto#L88} /// StatusOr - GetIamPolicy(google::iam::v1::GetIamPolicyRequest const& request); + GetIamPolicy(google::iam::v1::GetIamPolicyRequest const& request, Options options = {}); /// /// Returns permissions that the caller has on the specified database or backup @@ -612,13 +639,14 @@ class GoldenThingAdminClient { /// `test.backups.list` permission on the containing instance. /// /// @param request @googleapis_link{google::iam::v1::TestIamPermissionsRequest,google/iam/v1/iam_policy.proto#L126} + /// @param options Optional. Operation options. /// @return @googleapis_link{google::iam::v1::TestIamPermissionsResponse,google/iam/v1/iam_policy.proto#L141} /// /// [google.iam.v1.TestIamPermissionsRequest]: @googleapis_reference_link{google/iam/v1/iam_policy.proto#L126} /// [google.iam.v1.TestIamPermissionsResponse]: @googleapis_reference_link{google/iam/v1/iam_policy.proto#L141} /// StatusOr - TestIamPermissions(google::iam::v1::TestIamPermissionsRequest const& request); + TestIamPermissions(google::iam::v1::TestIamPermissionsRequest const& request, Options options = {}); /// /// Starts creating a new Cloud Test Backup. @@ -635,47 +663,51 @@ class GoldenThingAdminClient { /// of different databases can run concurrently. /// /// @param request @googleapis_link{google::test::admin::database::v1::CreateBackupRequest,generator/integration_tests/backup.proto#L110} + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::Backup,generator/integration_tests/backup.proto#L36} /// /// [google.test.admin.database.v1.CreateBackupRequest]: @googleapis_reference_link{generator/integration_tests/backup.proto#L110} /// [google.test.admin.database.v1.Backup]: @googleapis_reference_link{generator/integration_tests/backup.proto#L36} /// future> - CreateBackup(google::test::admin::database::v1::CreateBackupRequest const& request); + CreateBackup(google::test::admin::database::v1::CreateBackupRequest const& request, Options options = {}); /// /// Gets metadata on a pending or completed [Backup][google.test.admin.database.v1.Backup]. /// /// @param request @googleapis_link{google::test::admin::database::v1::GetBackupRequest,generator/integration_tests/backup.proto#L177} + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::Backup,generator/integration_tests/backup.proto#L36} /// /// [google.test.admin.database.v1.GetBackupRequest]: @googleapis_reference_link{generator/integration_tests/backup.proto#L177} /// [google.test.admin.database.v1.Backup]: @googleapis_reference_link{generator/integration_tests/backup.proto#L36} /// StatusOr - GetBackup(google::test::admin::database::v1::GetBackupRequest const& request); + GetBackup(google::test::admin::database::v1::GetBackupRequest const& request, Options options = {}); /// /// Updates a pending or completed [Backup][google.test.admin.database.v1.Backup]. /// /// @param request @googleapis_link{google::test::admin::database::v1::UpdateBackupRequest,generator/integration_tests/backup.proto#L161} + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::Backup,generator/integration_tests/backup.proto#L36} /// /// [google.test.admin.database.v1.UpdateBackupRequest]: @googleapis_reference_link{generator/integration_tests/backup.proto#L161} /// [google.test.admin.database.v1.Backup]: @googleapis_reference_link{generator/integration_tests/backup.proto#L36} /// StatusOr - UpdateBackup(google::test::admin::database::v1::UpdateBackupRequest const& request); + UpdateBackup(google::test::admin::database::v1::UpdateBackupRequest const& request, Options options = {}); /// /// Deletes a pending or completed [Backup][google.test.admin.database.v1.Backup]. /// /// @param request @googleapis_link{google::test::admin::database::v1::DeleteBackupRequest,generator/integration_tests/backup.proto#L190} + /// @param options Optional. Operation options. /// /// [google.test.admin.database.v1.DeleteBackupRequest]: @googleapis_reference_link{generator/integration_tests/backup.proto#L190} /// Status - DeleteBackup(google::test::admin::database::v1::DeleteBackupRequest const& request); + DeleteBackup(google::test::admin::database::v1::DeleteBackupRequest const& request, Options options = {}); /// /// Lists completed and pending backups. @@ -683,13 +715,14 @@ class GoldenThingAdminClient { /// starting from the most recent `create_time`. /// /// @param request @googleapis_link{google::test::admin::database::v1::ListBackupsRequest,generator/integration_tests/backup.proto#L203} + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::Backup,generator/integration_tests/backup.proto#L36} /// /// [google.test.admin.database.v1.ListBackupsRequest]: @googleapis_reference_link{generator/integration_tests/backup.proto#L203} /// [google.test.admin.database.v1.Backup]: @googleapis_reference_link{generator/integration_tests/backup.proto#L36} /// StreamRange - ListBackups(google::test::admin::database::v1::ListBackupsRequest request); + ListBackups(google::test::admin::database::v1::ListBackupsRequest request, Options options = {}); /// /// Create a new database by restoring from a completed backup. The new @@ -711,13 +744,14 @@ class GoldenThingAdminClient { /// first restore to complete. /// /// @param request @googleapis_link{google::test::admin::database::v1::RestoreDatabaseRequest,generator/integration_tests/test.proto#L634} + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::Database,generator/integration_tests/test.proto#L329} /// /// [google.test.admin.database.v1.RestoreDatabaseRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L634} /// [google.test.admin.database.v1.Database]: @googleapis_reference_link{generator/integration_tests/test.proto#L329} /// future> - RestoreDatabase(google::test::admin::database::v1::RestoreDatabaseRequest const& request); + RestoreDatabase(google::test::admin::database::v1::RestoreDatabaseRequest const& request, Options options = {}); /// /// Lists database [longrunning-operations][google.longrunning.Operation]. @@ -730,13 +764,14 @@ class GoldenThingAdminClient { /// and pending operations. /// /// @param request @googleapis_link{google::test::admin::database::v1::ListDatabaseOperationsRequest,generator/integration_tests/test.proto#L553} + /// @param options Optional. Operation options. /// @return @googleapis_link{google::longrunning::Operation,google/longrunning/operations.proto#L128} /// /// [google.test.admin.database.v1.ListDatabaseOperationsRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L553} /// [google.longrunning.Operation]: @googleapis_reference_link{google/longrunning/operations.proto#L128} /// StreamRange - ListDatabaseOperations(google::test::admin::database::v1::ListDatabaseOperationsRequest request); + ListDatabaseOperations(google::test::admin::database::v1::ListDatabaseOperationsRequest request, Options options = {}); /// /// Lists the backup [long-running operations][google.longrunning.Operation] in @@ -751,25 +786,27 @@ class GoldenThingAdminClient { /// from the most recently started operation. /// /// @param request @googleapis_link{google::test::admin::database::v1::ListBackupOperationsRequest,generator/integration_tests/backup.proto#L274} + /// @param options Optional. Operation options. /// @return @googleapis_link{google::longrunning::Operation,google/longrunning/operations.proto#L128} /// /// [google.test.admin.database.v1.ListBackupOperationsRequest]: @googleapis_reference_link{generator/integration_tests/backup.proto#L274} /// [google.longrunning.Operation]: @googleapis_reference_link{google/longrunning/operations.proto#L128} /// StreamRange - ListBackupOperations(google::test::admin::database::v1::ListBackupOperationsRequest request); + ListBackupOperations(google::test::admin::database::v1::ListBackupOperationsRequest request, Options options = {}); /// /// Gets the state of a Cloud Test database. /// /// @param request @googleapis_link{google::test::admin::database::v1::GetDatabaseRequest,generator/integration_tests/test.proto#L443} + /// @param options Optional. Operation options. /// @return @googleapis_link{google::test::admin::database::v1::Database,generator/integration_tests/test.proto#L329} /// /// [google.test.admin.database.v1.GetDatabaseRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L443} /// [google.test.admin.database.v1.Database]: @googleapis_reference_link{generator/integration_tests/test.proto#L329} /// future> - AsyncGetDatabase(google::test::admin::database::v1::GetDatabaseRequest const& request); + AsyncGetDatabase(google::test::admin::database::v1::GetDatabaseRequest const& request, Options options = {}); /// /// Drops (aka deletes) a Cloud Test database. @@ -777,14 +814,16 @@ class GoldenThingAdminClient { /// `expire_time`. /// /// @param request @googleapis_link{google::test::admin::database::v1::DropDatabaseRequest,generator/integration_tests/test.proto#L523} + /// @param options Optional. Operation options. /// /// [google.test.admin.database.v1.DropDatabaseRequest]: @googleapis_reference_link{generator/integration_tests/test.proto#L523} /// future - AsyncDropDatabase(google::test::admin::database::v1::DropDatabaseRequest const& request); + AsyncDropDatabase(google::test::admin::database::v1::DropDatabaseRequest const& request, Options options = {}); private: std::shared_ptr connection_; + Options options_; }; GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END diff --git a/generator/internal/client_generator.cc b/generator/internal/client_generator.cc index 4f08221da7450..1a93a8b0cfec9 100644 --- a/generator/internal/client_generator.cc +++ b/generator/internal/client_generator.cc @@ -71,11 +71,11 @@ Status ClientGenerator::GenerateHeader() { // includes HeaderLocalIncludes({vars("connection_header_path"), "google/cloud/future.h", + "google/cloud/options.h", "google/cloud/polling_policy.h", "google/cloud/status_or.h", "google/cloud/version.h"}); if (get_iam_policy_extension_ && set_iam_policy_extension_) { - HeaderLocalIncludes( - {"google/cloud/iam_updater.h", "google/cloud/options.h"}); + HeaderLocalIncludes({"google/cloud/iam_updater.h"}); } HeaderSystemIncludes(MethodSignatureWellKnownProtobufTypeIncludes()); HeaderSystemIncludes( @@ -91,7 +91,7 @@ Status ClientGenerator::GenerateHeader() { "$class_comment_block$\n" "class $client_class_name$ {\n" " public:\n" - " explicit $client_class_name$(std::shared_ptr<$connection_class_name$> connection);\n" + " explicit $client_class_name$(std::shared_ptr<$connection_class_name$> connection, Options options = {});\n" " ~$client_class_name$();\n" "\n" " //@{\n" @@ -119,7 +119,8 @@ Status ClientGenerator::GenerateHeader() { method.options().GetRepeatedExtension(google::api::method_signature); for (int i = 0; i < method_signature_extension.size(); ++i) { std::string method_string = - absl::StrCat(" $method_name$($method_signature", i, "$);\n\n"); + absl::StrCat(" $method_name$($method_signature", i, + "$, Options options = {});\n\n"); HeaderPrintMethod( method, {MethodPattern( @@ -213,7 +214,8 @@ Status ClientGenerator::GenerateHeader() { method.options().GetRepeatedExtension(google::api::method_signature); for (int i = 0; i < method_signature_extension.size(); ++i) { std::string method_string = - absl::StrCat(" Async$method_name$($method_signature", i, "$);\n\n"); + absl::StrCat(" Async$method_name$($method_signature", i, + "$, Options options = {});\n\n"); HeaderPrintMethod( method, {MethodPattern( @@ -244,7 +246,7 @@ Status ClientGenerator::GenerateHeader() { // clang-format off " Status\n", " StatusOr<$response_type$>\n"}, - {" $method_name$($request_type$ const& request);\n" + {" $method_name$($request_type$ const& request, Options options = {});\n" "\n"} // clang-format on }, @@ -258,7 +260,7 @@ Status ClientGenerator::GenerateHeader() { // clang-format off " future\n", " future>\n"}, - {" $method_name$($request_type$ const& request);\n" + {" $method_name$($request_type$ const& request, Options options = {});\n" "\n"} // clang-format on }, @@ -269,7 +271,7 @@ Status ClientGenerator::GenerateHeader() { {FormatMethodCommentsFromRpcComments( method, MethodParameterStyle::kProtobufRequest)}, {" StreamRange<$range_output_type$>\n" - " $method_name$($request_type$ request);\n\n"}, + " $method_name$($request_type$ request, Options options = {});\n\n"}, // clang-format on }, All(IsNonStreaming, Not(IsLongrunningOperation), IsPaginated)), @@ -279,7 +281,7 @@ Status ClientGenerator::GenerateHeader() { {FormatMethodCommentsFromRpcComments( method, MethodParameterStyle::kProtobufRequest)}, {" StreamRange<$response_type$>\n" - " $method_name$($request_type$ const& request);\n\n"}, + " $method_name$($request_type$ const& request, Options options = {});\n\n"}, // clang-format on }, IsStreamingRead)}, @@ -297,7 +299,7 @@ Status ClientGenerator::GenerateHeader() { // clang-format off " future\n", " future>\n"}, - {" Async$method_name$($request_type$ const& request);\n" + {" Async$method_name$($request_type$ const& request, Options options = {});\n" "\n"} // clang-format on }, @@ -308,7 +310,8 @@ Status ClientGenerator::GenerateHeader() { HeaderPrint( // clang-format off " private:\n" - " std::shared_ptr<$connection_class_name$> connection_;\n"); + " std::shared_ptr<$connection_class_name$> connection_;\n" + " Options options_;\n"); // clang-format on // close Client class @@ -333,11 +336,11 @@ Status ClientGenerator::GenerateCc() { // clang-format on // includes - CcLocalIncludes({vars("client_header_path")}); + CcLocalIncludes( + {vars("client_header_path"), vars("option_defaults_header_path")}); CcSystemIncludes({"memory"}); if (get_iam_policy_extension_ && set_iam_policy_extension_) { - CcLocalIncludes( - {vars("options_header_path"), vars("option_defaults_header_path")}); + CcLocalIncludes({vars("options_header_path")}); CcSystemIncludes({"thread"}); } CcPrint("\n"); @@ -346,8 +349,9 @@ Status ClientGenerator::GenerateCc() { if (!result.ok()) return result; CcPrint( // clang-format off - "$client_class_name$::$client_class_name$(std::shared_ptr<$connection_class_name$> connection)" - " : connection_(std::move(connection)) {}\n"); + "$client_class_name$::$client_class_name$(std::shared_ptr<$connection_class_name$> connection, Options options)" + " : connection_(std::move(connection))," + " options_($product_internal_namespace$::$service_name$DefaultOptions(std::move(options))) {}\n"); // clang-format on CcPrint( // clang-format off @@ -358,8 +362,9 @@ Status ClientGenerator::GenerateCc() { auto method_signature_extension = method.options().GetRepeatedExtension(google::api::method_signature); for (int i = 0; i < method_signature_extension.size(); ++i) { - std::string method_string = absl::StrCat( - "$client_class_name$::$method_name$($method_signature", i, "$) {\n"); + std::string method_string = + absl::StrCat("$client_class_name$::$method_name$($method_signature", + i, "$, Options options) {\n"); std::string method_request_string = absl::StrCat("$method_request_setters", i, "$"); CcPrintMethod( @@ -371,6 +376,8 @@ Status ClientGenerator::GenerateCc() { "Status\n", "StatusOr<$response_type$>\n"}, {method_string}, + {" internal::OptionsSpan span(internal::MergeOptions(" + "std::move(options), options_));\n"}, {" $request_type$ request;\n"}, {method_request_string}, {" return connection_->$method_name$(request);\n" @@ -386,6 +393,8 @@ Status ClientGenerator::GenerateCc() { "future\n", "future>\n"}, {method_string}, + {" internal::OptionsSpan span(internal::MergeOptions(" + "std::move(options), options_));\n"}, {" $request_type$ request;\n"}, {method_request_string}, {" return connection_->$method_name$(request);\n" @@ -398,6 +407,8 @@ Status ClientGenerator::GenerateCc() { // clang-format off {"StreamRange<$range_output_type$>\n"}, {method_string}, + {" internal::OptionsSpan span(internal::MergeOptions(" + "std::move(options), options_));\n"}, {" $request_type$ request;\n"}, {method_request_string}, {" return connection_->$method_name$(request);\n" @@ -410,6 +421,8 @@ Status ClientGenerator::GenerateCc() { // clang-format off {"StreamRange<$response_type$>\n"}, {method_string}, + {" internal::OptionsSpan span(internal::MergeOptions(" + "std::move(options), options_));\n"}, {" $request_type$ request;\n"}, {method_request_string}, {" return connection_->$method_name$(request);\n" @@ -433,10 +446,10 @@ Status ClientGenerator::GenerateCc() { " Options options) {\n" " internal::CheckExpectedOptions<$service_name$" "BackoffPolicyOption>(options, __func__);\n" - " options = $product_internal_namespace$::$service_name$" - "DefaultOptions(std::move(options));\n" - " auto backoff_policy = options.get<$service_name$" - "BackoffPolicyOption>()->clone();\n" + " internal::OptionsSpan span(internal::MergeOptions(" + "std::move(options), options_));\n" + " auto backoff_policy = internal::CurrentOptions()" + ".get<$service_name$BackoffPolicyOption>()->clone();\n" " for (;;) {\n"}, {" auto recent = " + get_method_name + "(resource);\n"}, {" if (!recent) {\n" @@ -468,7 +481,7 @@ Status ClientGenerator::GenerateCc() { for (int i = 0; i < method_signature_extension.size(); ++i) { std::string method_string = absl::StrCat( "$client_class_name$::Async$method_name$($method_signature", i, - "$) {\n"); + "$, Options options) {\n"); std::string method_request_string = absl::StrCat("$method_request_setters", i, "$"); CcPrintMethod( @@ -480,6 +493,8 @@ Status ClientGenerator::GenerateCc() { "future\n", "future>\n"}, {method_string}, + {" internal::OptionsSpan span(internal::MergeOptions(" + "std::move(options), options_));\n"}, {" $request_type$ request;\n"}, {method_request_string}, {" return connection_->Async$method_name$(request);\n" @@ -501,7 +516,10 @@ Status ClientGenerator::GenerateCc() { // clang-format off "Status\n", "StatusOr<$response_type$>\n"}, - {"$client_class_name$::$method_name$($request_type$ const& request) {\n" + {"$client_class_name$::$method_name$($request_type$ const& request" + ", Options options) {\n" + " internal::OptionsSpan span(internal::MergeOptions(" + "std::move(options), options_));\n" " return connection_->$method_name$(request);\n" "}\n\n"} // clang-format on @@ -514,7 +532,10 @@ Status ClientGenerator::GenerateCc() { // clang-format off "future\n", "future>\n"}, - {"$client_class_name$::$method_name$($request_type$ const& request) {\n" + {"$client_class_name$::$method_name$($request_type$ const& request" + ", Options options) {\n" + " internal::OptionsSpan span(internal::MergeOptions(" + "std::move(options), options_));\n" " return connection_->$method_name$(request);\n" "}\n\n"} // clang-format on @@ -524,7 +545,10 @@ Status ClientGenerator::GenerateCc() { { // clang-format off {"StreamRange<$range_output_type$>\n" - "$client_class_name$::$method_name$($request_type$ request) {\n" + "$client_class_name$::$method_name$($request_type$ request" + ", Options options) {\n" + " internal::OptionsSpan span(internal::MergeOptions(" + "std::move(options), options_));\n" " return connection_->$method_name$(std::move(request));\n" "}\n\n"} // clang-format on @@ -534,7 +558,10 @@ Status ClientGenerator::GenerateCc() { { // clang-format off {"StreamRange<$response_type$>\n" - "$client_class_name$::$method_name$($request_type$ const& request) {\n" + "$client_class_name$::$method_name$($request_type$ const& request" + ", Options options) {\n" + " internal::OptionsSpan span(internal::MergeOptions(" + "std::move(options), options_));\n" " return connection_->$method_name$(request);\n" "}\n\n"} // clang-format on @@ -552,7 +579,10 @@ Status ClientGenerator::GenerateCc() { // clang-format off "future\n", "future>\n"}, - {"$client_class_name$::Async$method_name$($request_type$ const& request) {\n" + {"$client_class_name$::Async$method_name$($request_type$ const& request" + ", Options options) {\n" + " internal::OptionsSpan span(internal::MergeOptions(" + "std::move(options), options_));\n" " return connection_->Async$method_name$(request);\n" "}\n\n"} // clang-format on diff --git a/generator/internal/descriptor_utils.cc b/generator/internal/descriptor_utils.cc index e844c7f2c03a8..98a8d37247ec3 100644 --- a/generator/internal/descriptor_utils.cc +++ b/generator/internal/descriptor_utils.cc @@ -442,6 +442,8 @@ std::string FormatMethodCommentsFromRpcComments( } else { parameter_comment_string = FormatProtobufRequestParameters(method); } + parameter_comment_string += + absl::StrFormat(" /// @param options Optional. Operation options.\n"); std::string doxygen_formatted_function_comments = absl::StrReplaceAll( EscapePrinterDelimiter(method_source_location.leading_comments), diff --git a/generator/internal/descriptor_utils_test.cc b/generator/internal/descriptor_utils_test.cc index 5e0501e640f10..fb27d65b5e864 100644 --- a/generator/internal/descriptor_utils_test.cc +++ b/generator/internal/descriptor_utils_test.cc @@ -503,6 +503,7 @@ TEST_F(CreateMethodVarsTest, /// Leading comments about rpc Method0$$. /// /// @param request @googleapis_link{google::protobuf::Bar,google/foo/v1/service.proto#L14} + /// @param options Optional. Operation options. /// )""")); } @@ -518,6 +519,7 @@ TEST_F(CreateMethodVarsTest, /// Leading comments about rpc $$Method6. /// /// @param labels labels $$field comment. + /// @param options Optional. Operation options. /// )""")); } diff --git a/google/cloud/bigquery/bigquery_read_client.cc b/google/cloud/bigquery/bigquery_read_client.cc index f1cde3c2e5191..5081f2f432196 100644 --- a/google/cloud/bigquery/bigquery_read_client.cc +++ b/google/cloud/bigquery/bigquery_read_client.cc @@ -17,6 +17,7 @@ // source: google/cloud/bigquery/storage/v1/storage.proto #include "google/cloud/bigquery/bigquery_read_client.h" +#include "google/cloud/bigquery/internal/bigquery_read_option_defaults.h" #include namespace google { @@ -25,15 +26,19 @@ namespace bigquery { GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN BigQueryReadClient::BigQueryReadClient( - std::shared_ptr connection) - : connection_(std::move(connection)) {} + std::shared_ptr connection, Options options) + : connection_(std::move(connection)), + options_( + bigquery_internal::BigQueryReadDefaultOptions(std::move(options))) {} BigQueryReadClient::~BigQueryReadClient() = default; StatusOr BigQueryReadClient::CreateReadSession( std::string const& parent, google::cloud::bigquery::storage::v1::ReadSession const& read_session, - std::int32_t max_stream_count) { + std::int32_t max_stream_count, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::bigquery::storage::v1::CreateReadSessionRequest request; request.set_parent(parent); *request.mutable_read_session() = read_session; @@ -43,7 +48,9 @@ BigQueryReadClient::CreateReadSession( StreamRange BigQueryReadClient::ReadRows(std::string const& read_stream, - std::int64_t offset) { + std::int64_t offset, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::bigquery::storage::v1::ReadRowsRequest request; request.set_read_stream(read_stream); request.set_offset(offset); @@ -53,20 +60,28 @@ BigQueryReadClient::ReadRows(std::string const& read_stream, StatusOr BigQueryReadClient::CreateReadSession( google::cloud::bigquery::storage::v1::CreateReadSessionRequest const& - request) { + request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->CreateReadSession(request); } StreamRange BigQueryReadClient::ReadRows( - google::cloud::bigquery::storage::v1::ReadRowsRequest const& request) { + google::cloud::bigquery::storage::v1::ReadRowsRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->ReadRows(request); } StatusOr BigQueryReadClient::SplitReadStream( - google::cloud::bigquery::storage::v1::SplitReadStreamRequest const& - request) { + google::cloud::bigquery::storage::v1::SplitReadStreamRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->SplitReadStream(request); } diff --git a/google/cloud/bigquery/bigquery_read_client.h b/google/cloud/bigquery/bigquery_read_client.h index 7cce49a612911..ef895b0831dcf 100644 --- a/google/cloud/bigquery/bigquery_read_client.h +++ b/google/cloud/bigquery/bigquery_read_client.h @@ -21,6 +21,7 @@ #include "google/cloud/bigquery/bigquery_read_connection.h" #include "google/cloud/future.h" +#include "google/cloud/options.h" #include "google/cloud/polling_policy.h" #include "google/cloud/status_or.h" #include "google/cloud/version.h" @@ -62,7 +63,7 @@ GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN class BigQueryReadClient { public: explicit BigQueryReadClient( - std::shared_ptr connection); + std::shared_ptr connection, Options options = {}); ~BigQueryReadClient(); //@{ @@ -118,6 +119,7 @@ class BigQueryReadClient { /// table. Error will be returned if the max count is greater than the /// current system max limit of 1,000. Streams must be read starting from /// offset 0. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::bigquery::storage::v1::ReadSession,google/cloud/bigquery/storage/v1/stream.proto#L47} /// @@ -129,7 +131,7 @@ class BigQueryReadClient { StatusOr CreateReadSession( std::string const& parent, google::cloud::bigquery::storage::v1::ReadSession const& read_session, - std::int32_t max_stream_count); + std::int32_t max_stream_count, Options options = {}); /// /// Reads rows from the stream in the format prescribed by the ReadSession. @@ -145,6 +147,7 @@ class BigQueryReadClient { /// from Read. /// Requesting a larger offset is undefined. If not specified, start reading /// from offset zero. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::bigquery::storage::v1::ReadRowsResponse,google/cloud/bigquery/storage/v1/storage.proto#L304} /// @@ -154,7 +157,8 @@ class BigQueryReadClient { /// @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L304} /// StreamRange ReadRows( - std::string const& read_stream, std::int64_t offset); + std::string const& read_stream, std::int64_t offset, + Options options = {}); /// /// Creates a new read session. A read session divides the contents of a @@ -179,6 +183,7 @@ class BigQueryReadClient { /// /// @param request /// @googleapis_link{google::cloud::bigquery::storage::v1::CreateReadSessionRequest,google/cloud/bigquery/storage/v1/storage.proto#L229} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::bigquery::storage::v1::ReadSession,google/cloud/bigquery/storage/v1/stream.proto#L47} /// @@ -189,7 +194,8 @@ class BigQueryReadClient { /// StatusOr CreateReadSession( google::cloud::bigquery::storage::v1::CreateReadSessionRequest const& - request); + request, + Options options = {}); /// /// Reads rows from the stream in the format prescribed by the ReadSession. @@ -202,6 +208,7 @@ class BigQueryReadClient { /// /// @param request /// @googleapis_link{google::cloud::bigquery::storage::v1::ReadRowsRequest,google/cloud/bigquery/storage/v1/storage.proto#L254} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::bigquery::storage::v1::ReadRowsResponse,google/cloud/bigquery/storage/v1/storage.proto#L304} /// @@ -211,7 +218,8 @@ class BigQueryReadClient { /// @googleapis_reference_link{google/cloud/bigquery/storage/v1/storage.proto#L304} /// StreamRange ReadRows( - google::cloud::bigquery::storage::v1::ReadRowsRequest const& request); + google::cloud::bigquery::storage::v1::ReadRowsRequest const& request, + Options options = {}); /// /// Splits a given `ReadStream` into two `ReadStream` objects. These @@ -229,6 +237,7 @@ class BigQueryReadClient { /// /// @param request /// @googleapis_link{google::cloud::bigquery::storage::v1::SplitReadStreamRequest,google/cloud/bigquery/storage/v1/storage.proto#L339} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::bigquery::storage::v1::SplitReadStreamResponse,google/cloud/bigquery/storage/v1/storage.proto#L359} /// @@ -240,10 +249,12 @@ class BigQueryReadClient { StatusOr SplitReadStream( google::cloud::bigquery::storage::v1::SplitReadStreamRequest const& - request); + request, + Options options = {}); private: std::shared_ptr connection_; + Options options_; }; GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END diff --git a/google/cloud/iam/iam_client.cc b/google/cloud/iam/iam_client.cc index 7eb75479bb88b..e6f71e1e38bf5 100644 --- a/google/cloud/iam/iam_client.cc +++ b/google/cloud/iam/iam_client.cc @@ -27,19 +27,24 @@ namespace cloud { namespace iam { GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN -IAMClient::IAMClient(std::shared_ptr connection) - : connection_(std::move(connection)) {} +IAMClient::IAMClient(std::shared_ptr connection, Options options) + : connection_(std::move(connection)), + options_(iam_internal::IAMDefaultOptions(std::move(options))) {} IAMClient::~IAMClient() = default; StreamRange -IAMClient::ListServiceAccounts(std::string const& name) { +IAMClient::ListServiceAccounts(std::string const& name, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::iam::admin::v1::ListServiceAccountsRequest request; request.set_name(name); return connection_->ListServiceAccounts(request); } StatusOr IAMClient::GetServiceAccount( - std::string const& name) { + std::string const& name, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::iam::admin::v1::GetServiceAccountRequest request; request.set_name(name); return connection_->GetServiceAccount(request); @@ -48,7 +53,10 @@ StatusOr IAMClient::GetServiceAccount( StatusOr IAMClient::CreateServiceAccount( std::string const& name, std::string const& account_id, - google::iam::admin::v1::ServiceAccount const& service_account) { + google::iam::admin::v1::ServiceAccount const& service_account, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::iam::admin::v1::CreateServiceAccountRequest request; request.set_name(name); request.set_account_id(account_id); @@ -56,7 +64,10 @@ IAMClient::CreateServiceAccount( return connection_->CreateServiceAccount(request); } -Status IAMClient::DeleteServiceAccount(std::string const& name) { +Status IAMClient::DeleteServiceAccount(std::string const& name, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::iam::admin::v1::DeleteServiceAccountRequest request; request.set_name(name); return connection_->DeleteServiceAccount(request); @@ -67,7 +78,10 @@ IAMClient::ListServiceAccountKeys( std::string const& name, std::vector< google::iam::admin::v1::ListServiceAccountKeysRequest::KeyType> const& - key_types) { + key_types, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::iam::admin::v1::ListServiceAccountKeysRequest request; request.set_name(name); *request.mutable_key_types() = {key_types.begin(), key_types.end()}; @@ -77,7 +91,10 @@ IAMClient::ListServiceAccountKeys( StatusOr IAMClient::GetServiceAccountKey( std::string const& name, - google::iam::admin::v1::ServiceAccountPublicKeyType public_key_type) { + google::iam::admin::v1::ServiceAccountPublicKeyType public_key_type, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::iam::admin::v1::GetServiceAccountKeyRequest request; request.set_name(name); request.set_public_key_type(public_key_type); @@ -88,7 +105,10 @@ StatusOr IAMClient::CreateServiceAccountKey( std::string const& name, google::iam::admin::v1::ServiceAccountPrivateKeyType private_key_type, - google::iam::admin::v1::ServiceAccountKeyAlgorithm key_algorithm) { + google::iam::admin::v1::ServiceAccountKeyAlgorithm key_algorithm, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::iam::admin::v1::CreateServiceAccountKeyRequest request; request.set_name(name); request.set_private_key_type(private_key_type); @@ -96,21 +116,29 @@ IAMClient::CreateServiceAccountKey( return connection_->CreateServiceAccountKey(request); } -Status IAMClient::DeleteServiceAccountKey(std::string const& name) { +Status IAMClient::DeleteServiceAccountKey(std::string const& name, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::iam::admin::v1::DeleteServiceAccountKeyRequest request; request.set_name(name); return connection_->DeleteServiceAccountKey(request); } StatusOr IAMClient::GetIamPolicy( - std::string const& resource) { + std::string const& resource, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::iam::v1::GetIamPolicyRequest request; request.set_resource(resource); return connection_->GetIamPolicy(request); } StatusOr IAMClient::SetIamPolicy( - std::string const& resource, google::iam::v1::Policy const& policy) { + std::string const& resource, google::iam::v1::Policy const& policy, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::iam::v1::SetIamPolicyRequest request; request.set_resource(resource); *request.mutable_policy() = policy; @@ -120,8 +148,10 @@ StatusOr IAMClient::SetIamPolicy( StatusOr IAMClient::SetIamPolicy( std::string const& resource, IamUpdater const& updater, Options options) { internal::CheckExpectedOptions(options, __func__); - options = iam_internal::IAMDefaultOptions(std::move(options)); - auto backoff_policy = options.get()->clone(); + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); + auto backoff_policy = + internal::CurrentOptions().get()->clone(); for (;;) { auto recent = GetIamPolicy(resource); if (!recent) { @@ -141,7 +171,10 @@ StatusOr IAMClient::SetIamPolicy( StatusOr IAMClient::TestIamPermissions(std::string const& resource, - std::vector const& permissions) { + std::vector const& permissions, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::iam::v1::TestIamPermissionsRequest request; request.set_resource(resource); *request.mutable_permissions() = {permissions.begin(), permissions.end()}; @@ -149,7 +182,9 @@ IAMClient::TestIamPermissions(std::string const& resource, } StreamRange IAMClient::QueryGrantableRoles( - std::string const& full_resource_name) { + std::string const& full_resource_name, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::iam::admin::v1::QueryGrantableRolesRequest request; request.set_full_resource_name(full_resource_name); return connection_->QueryGrantableRoles(request); @@ -157,141 +192,211 @@ StreamRange IAMClient::QueryGrantableRoles( StreamRange IAMClient::ListServiceAccounts( - google::iam::admin::v1::ListServiceAccountsRequest request) { + google::iam::admin::v1::ListServiceAccountsRequest request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->ListServiceAccounts(std::move(request)); } StatusOr IAMClient::GetServiceAccount( - google::iam::admin::v1::GetServiceAccountRequest const& request) { + google::iam::admin::v1::GetServiceAccountRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->GetServiceAccount(request); } StatusOr IAMClient::CreateServiceAccount( - google::iam::admin::v1::CreateServiceAccountRequest const& request) { + google::iam::admin::v1::CreateServiceAccountRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->CreateServiceAccount(request); } StatusOr IAMClient::PatchServiceAccount( - google::iam::admin::v1::PatchServiceAccountRequest const& request) { + google::iam::admin::v1::PatchServiceAccountRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->PatchServiceAccount(request); } Status IAMClient::DeleteServiceAccount( - google::iam::admin::v1::DeleteServiceAccountRequest const& request) { + google::iam::admin::v1::DeleteServiceAccountRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->DeleteServiceAccount(request); } StatusOr IAMClient::UndeleteServiceAccount( - google::iam::admin::v1::UndeleteServiceAccountRequest const& request) { + google::iam::admin::v1::UndeleteServiceAccountRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->UndeleteServiceAccount(request); } Status IAMClient::EnableServiceAccount( - google::iam::admin::v1::EnableServiceAccountRequest const& request) { + google::iam::admin::v1::EnableServiceAccountRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->EnableServiceAccount(request); } Status IAMClient::DisableServiceAccount( - google::iam::admin::v1::DisableServiceAccountRequest const& request) { + google::iam::admin::v1::DisableServiceAccountRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->DisableServiceAccount(request); } StatusOr IAMClient::ListServiceAccountKeys( - google::iam::admin::v1::ListServiceAccountKeysRequest const& request) { + google::iam::admin::v1::ListServiceAccountKeysRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->ListServiceAccountKeys(request); } StatusOr IAMClient::GetServiceAccountKey( - google::iam::admin::v1::GetServiceAccountKeyRequest const& request) { + google::iam::admin::v1::GetServiceAccountKeyRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->GetServiceAccountKey(request); } StatusOr IAMClient::CreateServiceAccountKey( - google::iam::admin::v1::CreateServiceAccountKeyRequest const& request) { + google::iam::admin::v1::CreateServiceAccountKeyRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->CreateServiceAccountKey(request); } StatusOr IAMClient::UploadServiceAccountKey( - google::iam::admin::v1::UploadServiceAccountKeyRequest const& request) { + google::iam::admin::v1::UploadServiceAccountKeyRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->UploadServiceAccountKey(request); } Status IAMClient::DeleteServiceAccountKey( - google::iam::admin::v1::DeleteServiceAccountKeyRequest const& request) { + google::iam::admin::v1::DeleteServiceAccountKeyRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->DeleteServiceAccountKey(request); } StatusOr IAMClient::GetIamPolicy( - google::iam::v1::GetIamPolicyRequest const& request) { + google::iam::v1::GetIamPolicyRequest const& request, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->GetIamPolicy(request); } StatusOr IAMClient::SetIamPolicy( - google::iam::v1::SetIamPolicyRequest const& request) { + google::iam::v1::SetIamPolicyRequest const& request, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->SetIamPolicy(request); } StatusOr IAMClient::TestIamPermissions( - google::iam::v1::TestIamPermissionsRequest const& request) { + google::iam::v1::TestIamPermissionsRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->TestIamPermissions(request); } StreamRange IAMClient::QueryGrantableRoles( - google::iam::admin::v1::QueryGrantableRolesRequest request) { + google::iam::admin::v1::QueryGrantableRolesRequest request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->QueryGrantableRoles(std::move(request)); } StreamRange IAMClient::ListRoles( - google::iam::admin::v1::ListRolesRequest request) { + google::iam::admin::v1::ListRolesRequest request, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->ListRoles(std::move(request)); } StatusOr IAMClient::GetRole( - google::iam::admin::v1::GetRoleRequest const& request) { + google::iam::admin::v1::GetRoleRequest const& request, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->GetRole(request); } StatusOr IAMClient::CreateRole( - google::iam::admin::v1::CreateRoleRequest const& request) { + google::iam::admin::v1::CreateRoleRequest const& request, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->CreateRole(request); } StatusOr IAMClient::UpdateRole( - google::iam::admin::v1::UpdateRoleRequest const& request) { + google::iam::admin::v1::UpdateRoleRequest const& request, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->UpdateRole(request); } StatusOr IAMClient::DeleteRole( - google::iam::admin::v1::DeleteRoleRequest const& request) { + google::iam::admin::v1::DeleteRoleRequest const& request, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->DeleteRole(request); } StatusOr IAMClient::UndeleteRole( - google::iam::admin::v1::UndeleteRoleRequest const& request) { + google::iam::admin::v1::UndeleteRoleRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->UndeleteRole(request); } StreamRange IAMClient::QueryTestablePermissions( - google::iam::admin::v1::QueryTestablePermissionsRequest request) { + google::iam::admin::v1::QueryTestablePermissionsRequest request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->QueryTestablePermissions(std::move(request)); } StatusOr IAMClient::QueryAuditableServices( - google::iam::admin::v1::QueryAuditableServicesRequest const& request) { + google::iam::admin::v1::QueryAuditableServicesRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->QueryAuditableServices(request); } StatusOr IAMClient::LintPolicy( - google::iam::admin::v1::LintPolicyRequest const& request) { + google::iam::admin::v1::LintPolicyRequest const& request, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->LintPolicy(request); } diff --git a/google/cloud/iam/iam_client.h b/google/cloud/iam/iam_client.h index 7912cd6c2e875..9150ce4613997 100644 --- a/google/cloud/iam/iam_client.h +++ b/google/cloud/iam/iam_client.h @@ -79,7 +79,8 @@ GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN /// class IAMClient { public: - explicit IAMClient(std::shared_ptr connection); + explicit IAMClient(std::shared_ptr connection, + Options options = {}); ~IAMClient(); //@{ @@ -107,6 +108,7 @@ class IAMClient { /// @param name Required. The resource name of the project associated with /// the service /// accounts, such as `projects/my-project-123`. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::admin::v1::ServiceAccount,google/iam/admin/v1/iam.proto#L461} /// @@ -116,7 +118,7 @@ class IAMClient { /// @googleapis_reference_link{google/iam/admin/v1/iam.proto#L461} /// StreamRange ListServiceAccounts( - std::string const& name); + std::string const& name, Options options = {}); /// /// Gets a [ServiceAccount][google.iam.admin.v1.ServiceAccount]. @@ -127,6 +129,7 @@ class IAMClient { /// Using `-` as a wildcard for the `PROJECT_ID` will infer the project from /// the account. The `ACCOUNT` value can be the `email` address or the /// `unique_id` of the service account. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::admin::v1::ServiceAccount,google/iam/admin/v1/iam.proto#L461} /// @@ -136,7 +139,7 @@ class IAMClient { /// @googleapis_reference_link{google/iam/admin/v1/iam.proto#L461} /// StatusOr GetServiceAccount( - std::string const& name); + std::string const& name, Options options = {}); /// /// Creates a [ServiceAccount][google.iam.admin.v1.ServiceAccount]. @@ -153,6 +156,7 @@ class IAMClient { /// [ServiceAccount][google.iam.admin.v1.ServiceAccount] resource to /// create. Currently, only the following values are user assignable: /// `display_name` and `description`. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::admin::v1::ServiceAccount,google/iam/admin/v1/iam.proto#L461} /// @@ -163,7 +167,8 @@ class IAMClient { /// StatusOr CreateServiceAccount( std::string const& name, std::string const& account_id, - google::iam::admin::v1::ServiceAccount const& service_account); + google::iam::admin::v1::ServiceAccount const& service_account, + Options options = {}); /// /// Deletes a [ServiceAccount][google.iam.admin.v1.ServiceAccount]. @@ -191,11 +196,12 @@ class IAMClient { /// Using `-` as a wildcard for the `PROJECT_ID` will infer the project from /// the account. The `ACCOUNT` value can be the `email` address or the /// `unique_id` of the service account. + /// @param options Optional. Operation options. /// /// [google.iam.admin.v1.DeleteServiceAccountRequest]: /// @googleapis_reference_link{google/iam/admin/v1/iam.proto#L594} /// - Status DeleteServiceAccount(std::string const& name); + Status DeleteServiceAccount(std::string const& name, Options options = {}); /// /// Lists every [ServiceAccountKey][google.iam.admin.v1.ServiceAccountKey] for @@ -211,6 +217,7 @@ class IAMClient { /// the list /// response. Duplicate key types are not allowed. If no key type /// is provided, all keys are returned. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::admin::v1::ListServiceAccountKeysResponse,google/iam/admin/v1/iam.proto#L692} /// @@ -224,7 +231,8 @@ class IAMClient { std::string const& name, std::vector< google::iam::admin::v1::ListServiceAccountKeysRequest::KeyType> const& - key_types); + key_types, + Options options = {}); /// /// Gets a [ServiceAccountKey][google.iam.admin.v1.ServiceAccountKey]. @@ -237,6 +245,7 @@ class IAMClient { /// `unique_id` of the service account. /// @param public_key_type The output format of the public key requested. /// X509_PEM is the default output format. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::admin::v1::ServiceAccountKey,google/iam/admin/v1/iam.proto#L741} /// @@ -247,7 +256,8 @@ class IAMClient { /// StatusOr GetServiceAccountKey( std::string const& name, - google::iam::admin::v1::ServiceAccountPublicKeyType public_key_type); + google::iam::admin::v1::ServiceAccountPublicKeyType public_key_type, + Options options = {}); /// /// Creates a [ServiceAccountKey][google.iam.admin.v1.ServiceAccountKey]. @@ -265,6 +275,7 @@ class IAMClient { /// @param key_algorithm Which type of key and algorithm to use for the key. /// The default is currently a 2K RSA key. However this may change in the /// future. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::admin::v1::ServiceAccountKey,google/iam/admin/v1/iam.proto#L741} /// @@ -276,7 +287,8 @@ class IAMClient { StatusOr CreateServiceAccountKey( std::string const& name, google::iam::admin::v1::ServiceAccountPrivateKeyType private_key_type, - google::iam::admin::v1::ServiceAccountKeyAlgorithm key_algorithm); + google::iam::admin::v1::ServiceAccountKeyAlgorithm key_algorithm, + Options options = {}); /// /// Deletes a [ServiceAccountKey][google.iam.admin.v1.ServiceAccountKey]. @@ -289,11 +301,12 @@ class IAMClient { /// Using `-` as a wildcard for the `PROJECT_ID` will infer the project from /// the account. The `ACCOUNT` value can be the `email` address or the /// `unique_id` of the service account. + /// @param options Optional. Operation options. /// /// [google.iam.admin.v1.DeleteServiceAccountKeyRequest]: /// @googleapis_reference_link{google/iam/admin/v1/iam.proto#L832} /// - Status DeleteServiceAccountKey(std::string const& name); + Status DeleteServiceAccountKey(std::string const& name, Options options = {}); /// /// Gets the IAM policy that is attached to a @@ -311,6 +324,7 @@ class IAMClient { /// @param resource REQUIRED: The resource for which the policy is being /// requested. /// See the operation documentation for the appropriate value for this field. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::v1::Policy,google/iam/v1/policy.proto#L88} /// @@ -319,7 +333,8 @@ class IAMClient { /// [google.iam.v1.Policy]: /// @googleapis_reference_link{google/iam/v1/policy.proto#L88} /// - StatusOr GetIamPolicy(std::string const& resource); + StatusOr GetIamPolicy(std::string const& resource, + Options options = {}); /// /// Sets the IAM policy that is attached to a @@ -350,6 +365,7 @@ class IAMClient { /// the policy is limited to a few 10s of KB. An empty policy is a /// valid policy but certain Cloud Platform services (such as Projects) /// might reject them. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::v1::Policy,google/iam/v1/policy.proto#L88} /// @@ -359,7 +375,8 @@ class IAMClient { /// @googleapis_reference_link{google/iam/v1/policy.proto#L88} /// StatusOr SetIamPolicy( - std::string const& resource, google::iam::v1::Policy const& policy); + std::string const& resource, google::iam::v1::Policy const& policy, + Options options = {}); /** * Updates the IAM policy for @p resource using an optimistic concurrency @@ -398,6 +415,7 @@ class IAMClient { /// wildcards (such as '*' or 'storage.*') are not allowed. For more /// information see /// [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions). + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::v1::TestIamPermissionsResponse,google/iam/v1/iam_policy.proto#L141} /// @@ -407,7 +425,8 @@ class IAMClient { /// @googleapis_reference_link{google/iam/v1/iam_policy.proto#L141} /// StatusOr TestIamPermissions( - std::string const& resource, std::vector const& permissions); + std::string const& resource, std::vector const& permissions, + Options options = {}); /// /// Lists roles that can be granted on a Google Cloud resource. A role is @@ -419,6 +438,7 @@ class IAMClient { /// The name follows the Google Cloud Platform resource format. /// For example, a Cloud Platform project with id `my-project` will be named /// `//cloudresourcemanager.googleapis.com/projects/my-project`. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::admin::v1::Role,google/iam/admin/v1/iam.proto#L1004} /// @@ -428,7 +448,7 @@ class IAMClient { /// @googleapis_reference_link{google/iam/admin/v1/iam.proto#L1004} /// StreamRange QueryGrantableRoles( - std::string const& full_resource_name); + std::string const& full_resource_name, Options options = {}); /// /// Lists every [ServiceAccount][google.iam.admin.v1.ServiceAccount] that @@ -436,6 +456,7 @@ class IAMClient { /// /// @param request /// @googleapis_link{google::iam::admin::v1::ListServiceAccountsRequest,google/iam/admin/v1/iam.proto#L544} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::admin::v1::ServiceAccount,google/iam/admin/v1/iam.proto#L461} /// @@ -445,13 +466,15 @@ class IAMClient { /// @googleapis_reference_link{google/iam/admin/v1/iam.proto#L461} /// StreamRange ListServiceAccounts( - google::iam::admin::v1::ListServiceAccountsRequest request); + google::iam::admin::v1::ListServiceAccountsRequest request, + Options options = {}); /// /// Gets a [ServiceAccount][google.iam.admin.v1.ServiceAccount]. /// /// @param request /// @googleapis_link{google::iam::admin::v1::GetServiceAccountRequest,google/iam/admin/v1/iam.proto#L579} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::admin::v1::ServiceAccount,google/iam/admin/v1/iam.proto#L461} /// @@ -461,13 +484,15 @@ class IAMClient { /// @googleapis_reference_link{google/iam/admin/v1/iam.proto#L461} /// StatusOr GetServiceAccount( - google::iam::admin::v1::GetServiceAccountRequest const& request); + google::iam::admin::v1::GetServiceAccountRequest const& request, + Options options = {}); /// /// Creates a [ServiceAccount][google.iam.admin.v1.ServiceAccount]. /// /// @param request /// @googleapis_link{google::iam::admin::v1::CreateServiceAccountRequest,google/iam/admin/v1/iam.proto#L521} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::admin::v1::ServiceAccount,google/iam/admin/v1/iam.proto#L461} /// @@ -477,13 +502,15 @@ class IAMClient { /// @googleapis_reference_link{google/iam/admin/v1/iam.proto#L461} /// StatusOr CreateServiceAccount( - google::iam::admin::v1::CreateServiceAccountRequest const& request); + google::iam::admin::v1::CreateServiceAccountRequest const& request, + Options options = {}); /// /// Patches a [ServiceAccount][google.iam.admin.v1.ServiceAccount]. /// /// @param request /// @googleapis_link{google::iam::admin::v1::PatchServiceAccountRequest,google/iam/admin/v1/iam.proto#L616} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::admin::v1::ServiceAccount,google/iam/admin/v1/iam.proto#L461} /// @@ -493,7 +520,8 @@ class IAMClient { /// @googleapis_reference_link{google/iam/admin/v1/iam.proto#L461} /// StatusOr PatchServiceAccount( - google::iam::admin::v1::PatchServiceAccountRequest const& request); + google::iam::admin::v1::PatchServiceAccountRequest const& request, + Options options = {}); /// /// Deletes a [ServiceAccount][google.iam.admin.v1.ServiceAccount]. @@ -517,12 +545,14 @@ class IAMClient { /// /// @param request /// @googleapis_link{google::iam::admin::v1::DeleteServiceAccountRequest,google/iam/admin/v1/iam.proto#L594} + /// @param options Optional. Operation options. /// /// [google.iam.admin.v1.DeleteServiceAccountRequest]: /// @googleapis_reference_link{google/iam/admin/v1/iam.proto#L594} /// Status DeleteServiceAccount( - google::iam::admin::v1::DeleteServiceAccountRequest const& request); + google::iam::admin::v1::DeleteServiceAccountRequest const& request, + Options options = {}); /// /// Restores a deleted [ServiceAccount][google.iam.admin.v1.ServiceAccount]. @@ -536,6 +566,7 @@ class IAMClient { /// /// @param request /// @googleapis_link{google::iam::admin::v1::UndeleteServiceAccountRequest,google/iam/admin/v1/iam.proto#L623} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::admin::v1::UndeleteServiceAccountResponse,google/iam/admin/v1/iam.proto#L631} /// @@ -546,7 +577,8 @@ class IAMClient { /// StatusOr UndeleteServiceAccount( - google::iam::admin::v1::UndeleteServiceAccountRequest const& request); + google::iam::admin::v1::UndeleteServiceAccountRequest const& request, + Options options = {}); /// /// Enables a [ServiceAccount][google.iam.admin.v1.ServiceAccount] that was @@ -561,12 +593,14 @@ class IAMClient { /// /// @param request /// @googleapis_link{google::iam::admin::v1::EnableServiceAccountRequest,google/iam/admin/v1/iam.proto#L637} + /// @param options Optional. Operation options. /// /// [google.iam.admin.v1.EnableServiceAccountRequest]: /// @googleapis_reference_link{google/iam/admin/v1/iam.proto#L637} /// Status EnableServiceAccount( - google::iam::admin::v1::EnableServiceAccountRequest const& request); + google::iam::admin::v1::EnableServiceAccountRequest const& request, + Options options = {}); /// /// Disables a [ServiceAccount][google.iam.admin.v1.ServiceAccount] @@ -591,12 +625,14 @@ class IAMClient { /// /// @param request /// @googleapis_link{google::iam::admin::v1::DisableServiceAccountRequest,google/iam/admin/v1/iam.proto#L647} + /// @param options Optional. Operation options. /// /// [google.iam.admin.v1.DisableServiceAccountRequest]: /// @googleapis_reference_link{google/iam/admin/v1/iam.proto#L647} /// Status DisableServiceAccount( - google::iam::admin::v1::DisableServiceAccountRequest const& request); + google::iam::admin::v1::DisableServiceAccountRequest const& request, + Options options = {}); /// /// Lists every [ServiceAccountKey][google.iam.admin.v1.ServiceAccountKey] for @@ -604,6 +640,7 @@ class IAMClient { /// /// @param request /// @googleapis_link{google::iam::admin::v1::ListServiceAccountKeysRequest,google/iam/admin/v1/iam.proto#L657} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::admin::v1::ListServiceAccountKeysResponse,google/iam/admin/v1/iam.proto#L692} /// @@ -614,13 +651,15 @@ class IAMClient { /// StatusOr ListServiceAccountKeys( - google::iam::admin::v1::ListServiceAccountKeysRequest const& request); + google::iam::admin::v1::ListServiceAccountKeysRequest const& request, + Options options = {}); /// /// Gets a [ServiceAccountKey][google.iam.admin.v1.ServiceAccountKey]. /// /// @param request /// @googleapis_link{google::iam::admin::v1::GetServiceAccountKeyRequest,google/iam/admin/v1/iam.proto#L698} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::admin::v1::ServiceAccountKey,google/iam/admin/v1/iam.proto#L741} /// @@ -630,13 +669,15 @@ class IAMClient { /// @googleapis_reference_link{google/iam/admin/v1/iam.proto#L741} /// StatusOr GetServiceAccountKey( - google::iam::admin::v1::GetServiceAccountKeyRequest const& request); + google::iam::admin::v1::GetServiceAccountKeyRequest const& request, + Options options = {}); /// /// Creates a [ServiceAccountKey][google.iam.admin.v1.ServiceAccountKey]. /// /// @param request /// @googleapis_link{google::iam::admin::v1::CreateServiceAccountKeyRequest,google/iam/admin/v1/iam.proto#L791} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::admin::v1::ServiceAccountKey,google/iam/admin/v1/iam.proto#L741} /// @@ -646,7 +687,8 @@ class IAMClient { /// @googleapis_reference_link{google/iam/admin/v1/iam.proto#L741} /// StatusOr CreateServiceAccountKey( - google::iam::admin::v1::CreateServiceAccountKeyRequest const& request); + google::iam::admin::v1::CreateServiceAccountKeyRequest const& request, + Options options = {}); /// /// Creates a [ServiceAccountKey][google.iam.admin.v1.ServiceAccountKey], @@ -654,6 +696,7 @@ class IAMClient { /// /// @param request /// @googleapis_link{google::iam::admin::v1::UploadServiceAccountKeyRequest,google/iam/admin/v1/iam.proto#L816} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::admin::v1::ServiceAccountKey,google/iam/admin/v1/iam.proto#L741} /// @@ -663,7 +706,8 @@ class IAMClient { /// @googleapis_reference_link{google/iam/admin/v1/iam.proto#L741} /// StatusOr UploadServiceAccountKey( - google::iam::admin::v1::UploadServiceAccountKeyRequest const& request); + google::iam::admin::v1::UploadServiceAccountKeyRequest const& request, + Options options = {}); /// /// Deletes a [ServiceAccountKey][google.iam.admin.v1.ServiceAccountKey]. @@ -672,12 +716,14 @@ class IAMClient { /// /// @param request /// @googleapis_link{google::iam::admin::v1::DeleteServiceAccountKeyRequest,google/iam/admin/v1/iam.proto#L832} + /// @param options Optional. Operation options. /// /// [google.iam.admin.v1.DeleteServiceAccountKeyRequest]: /// @googleapis_reference_link{google/iam/admin/v1/iam.proto#L832} /// Status DeleteServiceAccountKey( - google::iam::admin::v1::DeleteServiceAccountKeyRequest const& request); + google::iam::admin::v1::DeleteServiceAccountKeyRequest const& request, + Options options = {}); /// /// Gets the IAM policy that is attached to a @@ -694,6 +740,7 @@ class IAMClient { /// /// @param request /// @googleapis_link{google::iam::v1::GetIamPolicyRequest,google/iam/v1/iam_policy.proto#L113} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::v1::Policy,google/iam/v1/policy.proto#L88} /// @@ -703,7 +750,8 @@ class IAMClient { /// @googleapis_reference_link{google/iam/v1/policy.proto#L88} /// StatusOr GetIamPolicy( - google::iam::v1::GetIamPolicyRequest const& request); + google::iam::v1::GetIamPolicyRequest const& request, + Options options = {}); /// /// Sets the IAM policy that is attached to a @@ -728,6 +776,7 @@ class IAMClient { /// /// @param request /// @googleapis_link{google::iam::v1::SetIamPolicyRequest,google/iam/v1/iam_policy.proto#L98} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::v1::Policy,google/iam/v1/policy.proto#L88} /// @@ -737,7 +786,8 @@ class IAMClient { /// @googleapis_reference_link{google/iam/v1/policy.proto#L88} /// StatusOr SetIamPolicy( - google::iam::v1::SetIamPolicyRequest const& request); + google::iam::v1::SetIamPolicyRequest const& request, + Options options = {}); /// /// Tests whether the caller has the specified permissions on a @@ -745,6 +795,7 @@ class IAMClient { /// /// @param request /// @googleapis_link{google::iam::v1::TestIamPermissionsRequest,google/iam/v1/iam_policy.proto#L126} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::v1::TestIamPermissionsResponse,google/iam/v1/iam_policy.proto#L141} /// @@ -754,7 +805,8 @@ class IAMClient { /// @googleapis_reference_link{google/iam/v1/iam_policy.proto#L141} /// StatusOr TestIamPermissions( - google::iam::v1::TestIamPermissionsRequest const& request); + google::iam::v1::TestIamPermissionsRequest const& request, + Options options = {}); /// /// Lists roles that can be granted on a Google Cloud resource. A role is @@ -763,6 +815,7 @@ class IAMClient { /// /// @param request /// @googleapis_link{google::iam::admin::v1::QueryGrantableRolesRequest,google/iam/admin/v1/iam.proto#L1062} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::admin::v1::Role,google/iam/admin/v1/iam.proto#L1004} /// @@ -772,7 +825,8 @@ class IAMClient { /// @googleapis_reference_link{google/iam/admin/v1/iam.proto#L1004} /// StreamRange QueryGrantableRoles( - google::iam::admin::v1::QueryGrantableRolesRequest request); + google::iam::admin::v1::QueryGrantableRolesRequest request, + Options options = {}); /// /// Lists every predefined [Role][google.iam.admin.v1.Role] that IAM supports, @@ -780,6 +834,7 @@ class IAMClient { /// /// @param request /// @googleapis_link{google::iam::admin::v1::ListRolesRequest,google/iam/admin/v1/iam.proto#L1093} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::admin::v1::Role,google/iam/admin/v1/iam.proto#L1004} /// @@ -789,13 +844,14 @@ class IAMClient { /// @googleapis_reference_link{google/iam/admin/v1/iam.proto#L1004} /// StreamRange ListRoles( - google::iam::admin::v1::ListRolesRequest request); + google::iam::admin::v1::ListRolesRequest request, Options options = {}); /// /// Gets the definition of a [Role][google.iam.admin.v1.Role]. /// /// @param request /// @googleapis_link{google::iam::admin::v1::GetRoleRequest,google/iam/admin/v1/iam.proto#L1152} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::admin::v1::Role,google/iam/admin/v1/iam.proto#L1004} /// @@ -805,13 +861,15 @@ class IAMClient { /// @googleapis_reference_link{google/iam/admin/v1/iam.proto#L1004} /// StatusOr GetRole( - google::iam::admin::v1::GetRoleRequest const& request); + google::iam::admin::v1::GetRoleRequest const& request, + Options options = {}); /// /// Creates a new custom [Role][google.iam.admin.v1.Role]. /// /// @param request /// @googleapis_link{google::iam::admin::v1::CreateRoleRequest,google/iam/admin/v1/iam.proto#L1184} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::admin::v1::Role,google/iam/admin/v1/iam.proto#L1004} /// @@ -821,13 +879,15 @@ class IAMClient { /// @googleapis_reference_link{google/iam/admin/v1/iam.proto#L1004} /// StatusOr CreateRole( - google::iam::admin::v1::CreateRoleRequest const& request); + google::iam::admin::v1::CreateRoleRequest const& request, + Options options = {}); /// /// Updates the definition of a custom [Role][google.iam.admin.v1.Role]. /// /// @param request /// @googleapis_link{google::iam::admin::v1::UpdateRoleRequest,google/iam/admin/v1/iam.proto#L1219} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::admin::v1::Role,google/iam/admin/v1/iam.proto#L1004} /// @@ -837,7 +897,8 @@ class IAMClient { /// @googleapis_reference_link{google/iam/admin/v1/iam.proto#L1004} /// StatusOr UpdateRole( - google::iam::admin::v1::UpdateRoleRequest const& request); + google::iam::admin::v1::UpdateRoleRequest const& request, + Options options = {}); /// /// Deletes a custom [Role][google.iam.admin.v1.Role]. @@ -861,6 +922,7 @@ class IAMClient { /// /// @param request /// @googleapis_link{google::iam::admin::v1::DeleteRoleRequest,google/iam/admin/v1/iam.proto#L1250} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::admin::v1::Role,google/iam/admin/v1/iam.proto#L1004} /// @@ -870,13 +932,15 @@ class IAMClient { /// @googleapis_reference_link{google/iam/admin/v1/iam.proto#L1004} /// StatusOr DeleteRole( - google::iam::admin::v1::DeleteRoleRequest const& request); + google::iam::admin::v1::DeleteRoleRequest const& request, + Options options = {}); /// /// Undeletes a custom [Role][google.iam.admin.v1.Role]. /// /// @param request /// @googleapis_link{google::iam::admin::v1::UndeleteRoleRequest,google/iam/admin/v1/iam.proto#L1278} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::admin::v1::Role,google/iam/admin/v1/iam.proto#L1004} /// @@ -886,7 +950,8 @@ class IAMClient { /// @googleapis_reference_link{google/iam/admin/v1/iam.proto#L1004} /// StatusOr UndeleteRole( - google::iam::admin::v1::UndeleteRoleRequest const& request); + google::iam::admin::v1::UndeleteRoleRequest const& request, + Options options = {}); /// /// Lists every permission that you can test on a resource. A permission is @@ -895,6 +960,7 @@ class IAMClient { /// /// @param request /// @googleapis_link{google::iam::admin::v1::QueryTestablePermissionsRequest,google/iam/admin/v1/iam.proto#L1361} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::admin::v1::Permission,google/iam/admin/v1/iam.proto#L1306} /// @@ -904,7 +970,8 @@ class IAMClient { /// @googleapis_reference_link{google/iam/admin/v1/iam.proto#L1306} /// StreamRange QueryTestablePermissions( - google::iam::admin::v1::QueryTestablePermissionsRequest request); + google::iam::admin::v1::QueryTestablePermissionsRequest request, + Options options = {}); /// /// Returns a list of services that allow you to opt into audit logs that are @@ -915,6 +982,7 @@ class IAMClient { /// /// @param request /// @googleapis_link{google::iam::admin::v1::QueryAuditableServicesRequest,google/iam/admin/v1/iam.proto#L1391} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::admin::v1::QueryAuditableServicesResponse,google/iam/admin/v1/iam.proto#L1402} /// @@ -925,7 +993,8 @@ class IAMClient { /// StatusOr QueryAuditableServices( - google::iam::admin::v1::QueryAuditableServicesRequest const& request); + google::iam::admin::v1::QueryAuditableServicesRequest const& request, + Options options = {}); /// /// Lints, or validates, an IAM policy. Currently checks the @@ -937,6 +1006,7 @@ class IAMClient { /// /// @param request /// @googleapis_link{google::iam::admin::v1::LintPolicyRequest,google/iam/admin/v1/iam.proto#L1415} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::admin::v1::LintPolicyResponse,google/iam/admin/v1/iam.proto#L1513} /// @@ -946,10 +1016,12 @@ class IAMClient { /// @googleapis_reference_link{google/iam/admin/v1/iam.proto#L1513} /// StatusOr LintPolicy( - google::iam::admin::v1::LintPolicyRequest const& request); + google::iam::admin::v1::LintPolicyRequest const& request, + Options options = {}); private: std::shared_ptr connection_; + Options options_; }; GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END diff --git a/google/cloud/iam/iam_credentials_client.cc b/google/cloud/iam/iam_credentials_client.cc index e200d30f3fd60..cbfc78e004665 100644 --- a/google/cloud/iam/iam_credentials_client.cc +++ b/google/cloud/iam/iam_credentials_client.cc @@ -17,6 +17,7 @@ // source: google/iam/credentials/v1/iamcredentials.proto #include "google/cloud/iam/iam_credentials_client.h" +#include "google/cloud/iam/internal/iam_credentials_option_defaults.h" #include namespace google { @@ -25,15 +26,19 @@ namespace iam { GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN IAMCredentialsClient::IAMCredentialsClient( - std::shared_ptr connection) - : connection_(std::move(connection)) {} + std::shared_ptr connection, Options options) + : connection_(std::move(connection)), + options_(iam_internal::IAMCredentialsDefaultOptions(std::move(options))) { +} IAMCredentialsClient::~IAMCredentialsClient() = default; StatusOr IAMCredentialsClient::GenerateAccessToken( std::string const& name, std::vector const& delegates, std::vector const& scope, - google::protobuf::Duration const& lifetime) { + google::protobuf::Duration const& lifetime, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::iam::credentials::v1::GenerateAccessTokenRequest request; request.set_name(name); *request.mutable_delegates() = {delegates.begin(), delegates.end()}; @@ -46,7 +51,9 @@ StatusOr IAMCredentialsClient::GenerateIdToken(std::string const& name, std::vector const& delegates, std::string const& audience, - bool include_email) { + bool include_email, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::iam::credentials::v1::GenerateIdTokenRequest request; request.set_name(name); *request.mutable_delegates() = {delegates.begin(), delegates.end()}; @@ -58,7 +65,9 @@ IAMCredentialsClient::GenerateIdToken(std::string const& name, StatusOr IAMCredentialsClient::SignBlob(std::string const& name, std::vector const& delegates, - std::string const& payload) { + std::string const& payload, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::iam::credentials::v1::SignBlobRequest request; request.set_name(name); *request.mutable_delegates() = {delegates.begin(), delegates.end()}; @@ -69,7 +78,9 @@ IAMCredentialsClient::SignBlob(std::string const& name, StatusOr IAMCredentialsClient::SignJwt(std::string const& name, std::vector const& delegates, - std::string const& payload) { + std::string const& payload, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::iam::credentials::v1::SignJwtRequest request; request.set_name(name); *request.mutable_delegates() = {delegates.begin(), delegates.end()}; @@ -79,25 +90,37 @@ IAMCredentialsClient::SignJwt(std::string const& name, StatusOr IAMCredentialsClient::GenerateAccessToken( - google::iam::credentials::v1::GenerateAccessTokenRequest const& request) { + google::iam::credentials::v1::GenerateAccessTokenRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->GenerateAccessToken(request); } StatusOr IAMCredentialsClient::GenerateIdToken( - google::iam::credentials::v1::GenerateIdTokenRequest const& request) { + google::iam::credentials::v1::GenerateIdTokenRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->GenerateIdToken(request); } StatusOr IAMCredentialsClient::SignBlob( - google::iam::credentials::v1::SignBlobRequest const& request) { + google::iam::credentials::v1::SignBlobRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->SignBlob(request); } StatusOr IAMCredentialsClient::SignJwt( - google::iam::credentials::v1::SignJwtRequest const& request) { + google::iam::credentials::v1::SignJwtRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->SignJwt(request); } diff --git a/google/cloud/iam/iam_credentials_client.h b/google/cloud/iam/iam_credentials_client.h index 1f97b998823de..12314bf981e21 100644 --- a/google/cloud/iam/iam_credentials_client.h +++ b/google/cloud/iam/iam_credentials_client.h @@ -21,6 +21,7 @@ #include "google/cloud/iam/iam_credentials_connection.h" #include "google/cloud/future.h" +#include "google/cloud/options.h" #include "google/cloud/polling_policy.h" #include "google/cloud/status_or.h" #include "google/cloud/version.h" @@ -69,7 +70,8 @@ GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN class IAMCredentialsClient { public: explicit IAMCredentialsClient( - std::shared_ptr connection); + std::shared_ptr connection, + Options options = {}); ~IAMCredentialsClient(); //@{ @@ -121,6 +123,7 @@ class IAMCredentialsClient { /// Must be set to a value less than or equal to 3600 (1 hour). If a value is /// not specified, the token's lifetime will be set to a default value of one /// hour. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::credentials::v1::GenerateAccessTokenResponse,google/iam/credentials/v1/common.proto#L72} /// @@ -133,7 +136,8 @@ class IAMCredentialsClient { GenerateAccessToken(std::string const& name, std::vector const& delegates, std::vector const& scope, - google::protobuf::Duration const& lifetime); + google::protobuf::Duration const& lifetime, + Options options = {}); /// /// Generates an OpenID Connect ID token for a service account. @@ -161,6 +165,7 @@ class IAMCredentialsClient { /// @param include_email Include the service account email in the token. If /// set to `true`, the /// token will contain `email` and `email_verified` claims. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::credentials::v1::GenerateIdTokenResponse,google/iam/credentials/v1/common.proto#L186} /// @@ -172,7 +177,8 @@ class IAMCredentialsClient { StatusOr GenerateIdToken(std::string const& name, std::vector const& delegates, - std::string const& audience, bool include_email); + std::string const& audience, bool include_email, + Options options = {}); /// /// Signs a blob using a service account's system-managed private key. @@ -195,6 +201,7 @@ class IAMCredentialsClient { /// wildcard character is required; replacing it with a project ID is /// invalid. /// @param payload Required. The bytes to sign. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::credentials::v1::SignBlobResponse,google/iam/credentials/v1/common.proto#L109} /// @@ -205,7 +212,7 @@ class IAMCredentialsClient { /// StatusOr SignBlob( std::string const& name, std::vector const& delegates, - std::string const& payload); + std::string const& payload, Options options = {}); /// /// Signs a JWT using a service account's system-managed private key. @@ -229,6 +236,7 @@ class IAMCredentialsClient { /// invalid. /// @param payload Required. The JWT payload to sign: a JSON object that /// contains a JWT Claims Set. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::credentials::v1::SignJwtResponse,google/iam/credentials/v1/common.proto#L145} /// @@ -239,13 +247,14 @@ class IAMCredentialsClient { /// StatusOr SignJwt( std::string const& name, std::vector const& delegates, - std::string const& payload); + std::string const& payload, Options options = {}); /// /// Generates an OAuth 2.0 access token for a service account. /// /// @param request /// @googleapis_link{google::iam::credentials::v1::GenerateAccessTokenRequest,google/iam/credentials/v1/common.proto#L35} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::credentials::v1::GenerateAccessTokenResponse,google/iam/credentials/v1/common.proto#L72} /// @@ -256,13 +265,15 @@ class IAMCredentialsClient { /// StatusOr GenerateAccessToken( - google::iam::credentials::v1::GenerateAccessTokenRequest const& request); + google::iam::credentials::v1::GenerateAccessTokenRequest const& request, + Options options = {}); /// /// Generates an OpenID Connect ID token for a service account. /// /// @param request /// @googleapis_link{google::iam::credentials::v1::GenerateIdTokenRequest,google/iam/credentials/v1/common.proto#L153} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::credentials::v1::GenerateIdTokenResponse,google/iam/credentials/v1/common.proto#L186} /// @@ -273,13 +284,15 @@ class IAMCredentialsClient { /// StatusOr GenerateIdToken( - google::iam::credentials::v1::GenerateIdTokenRequest const& request); + google::iam::credentials::v1::GenerateIdTokenRequest const& request, + Options options = {}); /// /// Signs a blob using a service account's system-managed private key. /// /// @param request /// @googleapis_link{google::iam::credentials::v1::SignBlobRequest,google/iam/credentials/v1/common.proto#L81} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::credentials::v1::SignBlobResponse,google/iam/credentials/v1/common.proto#L109} /// @@ -289,13 +302,15 @@ class IAMCredentialsClient { /// @googleapis_reference_link{google/iam/credentials/v1/common.proto#L109} /// StatusOr SignBlob( - google::iam::credentials::v1::SignBlobRequest const& request); + google::iam::credentials::v1::SignBlobRequest const& request, + Options options = {}); /// /// Signs a JWT using a service account's system-managed private key. /// /// @param request /// @googleapis_link{google::iam::credentials::v1::SignJwtRequest,google/iam/credentials/v1/common.proto#L117} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::credentials::v1::SignJwtResponse,google/iam/credentials/v1/common.proto#L145} /// @@ -305,10 +320,12 @@ class IAMCredentialsClient { /// @googleapis_reference_link{google/iam/credentials/v1/common.proto#L145} /// StatusOr SignJwt( - google::iam::credentials::v1::SignJwtRequest const& request); + google::iam::credentials::v1::SignJwtRequest const& request, + Options options = {}); private: std::shared_ptr connection_; + Options options_; }; GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END diff --git a/google/cloud/logging/logging_service_v2_client.cc b/google/cloud/logging/logging_service_v2_client.cc index 3ec55cf2a3c63..8b6433cbcac0f 100644 --- a/google/cloud/logging/logging_service_v2_client.cc +++ b/google/cloud/logging/logging_service_v2_client.cc @@ -17,6 +17,7 @@ // source: google/logging/v2/logging.proto #include "google/cloud/logging/logging_service_v2_client.h" +#include "google/cloud/logging/internal/logging_service_v2_option_defaults.h" #include namespace google { @@ -25,11 +26,16 @@ namespace logging { GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN LoggingServiceV2Client::LoggingServiceV2Client( - std::shared_ptr connection) - : connection_(std::move(connection)) {} + std::shared_ptr connection, Options options) + : connection_(std::move(connection)), + options_(logging_internal::LoggingServiceV2DefaultOptions( + std::move(options))) {} LoggingServiceV2Client::~LoggingServiceV2Client() = default; -Status LoggingServiceV2Client::DeleteLog(std::string const& log_name) { +Status LoggingServiceV2Client::DeleteLog(std::string const& log_name, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::logging::v2::DeleteLogRequest request; request.set_log_name(log_name); return connection_->DeleteLog(request); @@ -39,7 +45,10 @@ StatusOr LoggingServiceV2Client::WriteLogEntries( std::string const& log_name, google::api::MonitoredResource const& resource, std::map const& labels, - std::vector const& entries) { + std::vector const& entries, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::logging::v2::WriteLogEntriesRequest request; request.set_log_name(log_name); *request.mutable_resource() = resource; @@ -51,7 +60,9 @@ LoggingServiceV2Client::WriteLogEntries( StreamRange LoggingServiceV2Client::ListLogEntries( std::vector const& resource_names, std::string const& filter, - std::string const& order_by) { + std::string const& order_by, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::logging::v2::ListLogEntriesRequest request; *request.mutable_resource_names() = {resource_names.begin(), resource_names.end()}; @@ -61,37 +72,51 @@ LoggingServiceV2Client::ListLogEntries( } StreamRange LoggingServiceV2Client::ListLogs( - std::string const& parent) { + std::string const& parent, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::logging::v2::ListLogsRequest request; request.set_parent(parent); return connection_->ListLogs(request); } Status LoggingServiceV2Client::DeleteLog( - google::logging::v2::DeleteLogRequest const& request) { + google::logging::v2::DeleteLogRequest const& request, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->DeleteLog(request); } StatusOr LoggingServiceV2Client::WriteLogEntries( - google::logging::v2::WriteLogEntriesRequest const& request) { + google::logging::v2::WriteLogEntriesRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->WriteLogEntries(request); } StreamRange LoggingServiceV2Client::ListLogEntries( - google::logging::v2::ListLogEntriesRequest request) { + google::logging::v2::ListLogEntriesRequest request, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->ListLogEntries(std::move(request)); } StreamRange LoggingServiceV2Client::ListMonitoredResourceDescriptors( - google::logging::v2::ListMonitoredResourceDescriptorsRequest request) { + google::logging::v2::ListMonitoredResourceDescriptorsRequest request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->ListMonitoredResourceDescriptors(std::move(request)); } StreamRange LoggingServiceV2Client::ListLogs( - google::logging::v2::ListLogsRequest request) { + google::logging::v2::ListLogsRequest request, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->ListLogs(std::move(request)); } diff --git a/google/cloud/logging/logging_service_v2_client.h b/google/cloud/logging/logging_service_v2_client.h index 8cb49ad60faee..106d93f78c1e1 100644 --- a/google/cloud/logging/logging_service_v2_client.h +++ b/google/cloud/logging/logging_service_v2_client.h @@ -21,6 +21,7 @@ #include "google/cloud/logging/logging_service_v2_connection.h" #include "google/cloud/future.h" +#include "google/cloud/options.h" #include "google/cloud/polling_policy.h" #include "google/cloud/status_or.h" #include "google/cloud/version.h" @@ -61,7 +62,8 @@ GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN class LoggingServiceV2Client { public: explicit LoggingServiceV2Client( - std::shared_ptr connection); + std::shared_ptr connection, + Options options = {}); ~LoggingServiceV2Client(); //@{ @@ -100,11 +102,12 @@ class LoggingServiceV2Client { /// `"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity"`. /// For more information about log names, see /// [LogEntry][google.logging.v2.LogEntry]. + /// @param options Optional. Operation options. /// /// [google.logging.v2.DeleteLogRequest]: /// @googleapis_reference_link{google/logging/v2/logging.proto#L140} /// - Status DeleteLog(std::string const& log_name); + Status DeleteLog(std::string const& log_name, Options options = {}); /// /// Writes log entries to Logging. This API method is the @@ -163,6 +166,7 @@ class LoggingServiceV2Client { /// [quota limit](https://cloud.google.com/logging/quota-policy) for calls to /// `entries.write`, you should try to include several log entries in this /// list, rather than calling this method for each individual log entry. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::logging::v2::WriteLogEntriesResponse,google/logging/v2/logging.proto#L243} /// @@ -175,7 +179,8 @@ class LoggingServiceV2Client { std::string const& log_name, google::api::MonitoredResource const& resource, std::map const& labels, - std::vector const& entries); + std::vector const& entries, + Options options = {}); /// /// Lists log entries. Use this method to retrieve log entries that @@ -212,6 +217,7 @@ class LoggingServiceV2Client { /// `LogEntry.timestamp` (oldest first), and the second option returns /// entries in order of decreasing timestamps (newest first). Entries with /// equal timestamps are returned in order of their `insert_id` values. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::logging::v2::LogEntry,google/logging/v2/log_entry.proto#L42} /// @@ -222,7 +228,7 @@ class LoggingServiceV2Client { /// StreamRange ListLogEntries( std::vector const& resource_names, std::string const& filter, - std::string const& order_by); + std::string const& order_by, Options options = {}); /// /// Lists the logs in projects, organizations, folders, or billing accounts. @@ -233,12 +239,14 @@ class LoggingServiceV2Client { /// "organizations/[ORGANIZATION_ID]" /// "billingAccounts/[BILLING_ACCOUNT_ID]" /// "folders/[FOLDER_ID]" + /// @param options Optional. Operation options. /// @return std::string /// /// [google.logging.v2.ListLogsRequest]: /// @googleapis_reference_link{google/logging/v2/logging.proto#L356} /// - StreamRange ListLogs(std::string const& parent); + StreamRange ListLogs(std::string const& parent, + Options options = {}); /// /// Deletes all the log entries in a log. The log reappears if it receives new @@ -248,11 +256,13 @@ class LoggingServiceV2Client { /// /// @param request /// @googleapis_link{google::logging::v2::DeleteLogRequest,google/logging/v2/logging.proto#L140} + /// @param options Optional. Operation options. /// /// [google.logging.v2.DeleteLogRequest]: /// @googleapis_reference_link{google/logging/v2/logging.proto#L140} /// - Status DeleteLog(google::logging::v2::DeleteLogRequest const& request); + Status DeleteLog(google::logging::v2::DeleteLogRequest const& request, + Options options = {}); /// /// Writes log entries to Logging. This API method is the @@ -265,6 +275,7 @@ class LoggingServiceV2Client { /// /// @param request /// @googleapis_link{google::logging::v2::WriteLogEntriesRequest,google/logging/v2/logging.proto#L162} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::logging::v2::WriteLogEntriesResponse,google/logging/v2/logging.proto#L243} /// @@ -274,7 +285,8 @@ class LoggingServiceV2Client { /// @googleapis_reference_link{google/logging/v2/logging.proto#L243} /// StatusOr WriteLogEntries( - google::logging::v2::WriteLogEntriesRequest const& request); + google::logging::v2::WriteLogEntriesRequest const& request, + Options options = {}); /// /// Lists log entries. Use this method to retrieve log entries that @@ -284,6 +296,7 @@ class LoggingServiceV2Client { /// /// @param request /// @googleapis_link{google::logging::v2::ListLogEntriesRequest,google/logging/v2/logging.proto#L257} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::logging::v2::LogEntry,google/logging/v2/log_entry.proto#L42} /// @@ -293,13 +306,14 @@ class LoggingServiceV2Client { /// @googleapis_reference_link{google/logging/v2/log_entry.proto#L42} /// StreamRange ListLogEntries( - google::logging::v2::ListLogEntriesRequest request); + google::logging::v2::ListLogEntriesRequest request, Options options = {}); /// /// Lists the descriptors for monitored resource types used by Logging. /// /// @param request /// @googleapis_link{google::logging::v2::ListMonitoredResourceDescriptorsRequest,google/logging/v2/logging.proto#L331} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::api::MonitoredResourceDescriptor,google/api/monitored_resource.proto#L40} /// @@ -310,7 +324,8 @@ class LoggingServiceV2Client { /// StreamRange ListMonitoredResourceDescriptors( - google::logging::v2::ListMonitoredResourceDescriptorsRequest request); + google::logging::v2::ListMonitoredResourceDescriptorsRequest request, + Options options = {}); /// /// Lists the logs in projects, organizations, folders, or billing accounts. @@ -318,16 +333,18 @@ class LoggingServiceV2Client { /// /// @param request /// @googleapis_link{google::logging::v2::ListLogsRequest,google/logging/v2/logging.proto#L356} + /// @param options Optional. Operation options. /// @return std::string /// /// [google.logging.v2.ListLogsRequest]: /// @googleapis_reference_link{google/logging/v2/logging.proto#L356} /// StreamRange ListLogs( - google::logging::v2::ListLogsRequest request); + google::logging::v2::ListLogsRequest request, Options options = {}); private: std::shared_ptr connection_; + Options options_; }; GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END diff --git a/google/cloud/pubsublite/admin_client.cc b/google/cloud/pubsublite/admin_client.cc index 84c40f48e8b5a..7457a91f1e360 100644 --- a/google/cloud/pubsublite/admin_client.cc +++ b/google/cloud/pubsublite/admin_client.cc @@ -17,6 +17,7 @@ // source: google/cloud/pubsublite/v1/admin.proto #include "google/cloud/pubsublite/admin_client.h" +#include "google/cloud/pubsublite/internal/admin_option_defaults.h" #include namespace google { @@ -25,14 +26,19 @@ namespace pubsublite { GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN AdminServiceClient::AdminServiceClient( - std::shared_ptr connection) - : connection_(std::move(connection)) {} + std::shared_ptr connection, Options options) + : connection_(std::move(connection)), + options_( + pubsublite_internal::AdminServiceDefaultOptions(std::move(options))) { +} AdminServiceClient::~AdminServiceClient() = default; StatusOr AdminServiceClient::CreateTopic( std::string const& parent, google::cloud::pubsublite::v1::Topic const& topic, - std::string const& topic_id) { + std::string const& topic_id, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::pubsublite::v1::CreateTopicRequest request; request.set_parent(parent); *request.mutable_topic() = topic; @@ -41,21 +47,28 @@ StatusOr AdminServiceClient::CreateTopic( } StatusOr AdminServiceClient::GetTopic( - std::string const& name) { + std::string const& name, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::pubsublite::v1::GetTopicRequest request; request.set_name(name); return connection_->GetTopic(request); } StatusOr -AdminServiceClient::GetTopicPartitions(std::string const& name) { +AdminServiceClient::GetTopicPartitions(std::string const& name, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::pubsublite::v1::GetTopicPartitionsRequest request; request.set_name(name); return connection_->GetTopicPartitions(request); } StreamRange -AdminServiceClient::ListTopics(std::string const& parent) { +AdminServiceClient::ListTopics(std::string const& parent, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::pubsublite::v1::ListTopicsRequest request; request.set_parent(parent); return connection_->ListTopics(request); @@ -63,21 +76,28 @@ AdminServiceClient::ListTopics(std::string const& parent) { StatusOr AdminServiceClient::UpdateTopic( google::cloud::pubsublite::v1::Topic const& topic, - google::protobuf::FieldMask const& update_mask) { + google::protobuf::FieldMask const& update_mask, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::pubsublite::v1::UpdateTopicRequest request; *request.mutable_topic() = topic; *request.mutable_update_mask() = update_mask; return connection_->UpdateTopic(request); } -Status AdminServiceClient::DeleteTopic(std::string const& name) { +Status AdminServiceClient::DeleteTopic(std::string const& name, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::pubsublite::v1::DeleteTopicRequest request; request.set_name(name); return connection_->DeleteTopic(request); } StreamRange AdminServiceClient::ListTopicSubscriptions( - std::string const& name) { + std::string const& name, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::pubsublite::v1::ListTopicSubscriptionsRequest request; request.set_name(name); return connection_->ListTopicSubscriptions(request); @@ -87,7 +107,9 @@ StatusOr AdminServiceClient::CreateSubscription( std::string const& parent, google::cloud::pubsublite::v1::Subscription const& subscription, - std::string const& subscription_id) { + std::string const& subscription_id, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::pubsublite::v1::CreateSubscriptionRequest request; request.set_parent(parent); *request.mutable_subscription() = subscription; @@ -96,14 +118,19 @@ AdminServiceClient::CreateSubscription( } StatusOr -AdminServiceClient::GetSubscription(std::string const& name) { +AdminServiceClient::GetSubscription(std::string const& name, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::pubsublite::v1::GetSubscriptionRequest request; request.set_name(name); return connection_->GetSubscription(request); } StreamRange -AdminServiceClient::ListSubscriptions(std::string const& parent) { +AdminServiceClient::ListSubscriptions(std::string const& parent, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::pubsublite::v1::ListSubscriptionsRequest request; request.set_parent(parent); return connection_->ListSubscriptions(request); @@ -112,14 +139,19 @@ AdminServiceClient::ListSubscriptions(std::string const& parent) { StatusOr AdminServiceClient::UpdateSubscription( google::cloud::pubsublite::v1::Subscription const& subscription, - google::protobuf::FieldMask const& update_mask) { + google::protobuf::FieldMask const& update_mask, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::pubsublite::v1::UpdateSubscriptionRequest request; *request.mutable_subscription() = subscription; *request.mutable_update_mask() = update_mask; return connection_->UpdateSubscription(request); } -Status AdminServiceClient::DeleteSubscription(std::string const& name) { +Status AdminServiceClient::DeleteSubscription(std::string const& name, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::pubsublite::v1::DeleteSubscriptionRequest request; request.set_name(name); return connection_->DeleteSubscription(request); @@ -129,7 +161,9 @@ StatusOr AdminServiceClient::CreateReservation( std::string const& parent, google::cloud::pubsublite::v1::Reservation const& reservation, - std::string const& reservation_id) { + std::string const& reservation_id, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::pubsublite::v1::CreateReservationRequest request; request.set_parent(parent); *request.mutable_reservation() = reservation; @@ -138,14 +172,19 @@ AdminServiceClient::CreateReservation( } StatusOr -AdminServiceClient::GetReservation(std::string const& name) { +AdminServiceClient::GetReservation(std::string const& name, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::pubsublite::v1::GetReservationRequest request; request.set_name(name); return connection_->GetReservation(request); } StreamRange -AdminServiceClient::ListReservations(std::string const& parent) { +AdminServiceClient::ListReservations(std::string const& parent, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::pubsublite::v1::ListReservationsRequest request; request.set_parent(parent); return connection_->ListReservations(request); @@ -154,129 +193,192 @@ AdminServiceClient::ListReservations(std::string const& parent) { StatusOr AdminServiceClient::UpdateReservation( google::cloud::pubsublite::v1::Reservation const& reservation, - google::protobuf::FieldMask const& update_mask) { + google::protobuf::FieldMask const& update_mask, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::pubsublite::v1::UpdateReservationRequest request; *request.mutable_reservation() = reservation; *request.mutable_update_mask() = update_mask; return connection_->UpdateReservation(request); } -Status AdminServiceClient::DeleteReservation(std::string const& name) { +Status AdminServiceClient::DeleteReservation(std::string const& name, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::pubsublite::v1::DeleteReservationRequest request; request.set_name(name); return connection_->DeleteReservation(request); } StreamRange AdminServiceClient::ListReservationTopics( - std::string const& name) { + std::string const& name, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::pubsublite::v1::ListReservationTopicsRequest request; request.set_name(name); return connection_->ListReservationTopics(request); } StatusOr AdminServiceClient::CreateTopic( - google::cloud::pubsublite::v1::CreateTopicRequest const& request) { + google::cloud::pubsublite::v1::CreateTopicRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->CreateTopic(request); } StatusOr AdminServiceClient::GetTopic( - google::cloud::pubsublite::v1::GetTopicRequest const& request) { + google::cloud::pubsublite::v1::GetTopicRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->GetTopic(request); } StatusOr AdminServiceClient::GetTopicPartitions( - google::cloud::pubsublite::v1::GetTopicPartitionsRequest const& request) { + google::cloud::pubsublite::v1::GetTopicPartitionsRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->GetTopicPartitions(request); } StreamRange AdminServiceClient::ListTopics( - google::cloud::pubsublite::v1::ListTopicsRequest request) { + google::cloud::pubsublite::v1::ListTopicsRequest request, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->ListTopics(std::move(request)); } StatusOr AdminServiceClient::UpdateTopic( - google::cloud::pubsublite::v1::UpdateTopicRequest const& request) { + google::cloud::pubsublite::v1::UpdateTopicRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->UpdateTopic(request); } Status AdminServiceClient::DeleteTopic( - google::cloud::pubsublite::v1::DeleteTopicRequest const& request) { + google::cloud::pubsublite::v1::DeleteTopicRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->DeleteTopic(request); } StreamRange AdminServiceClient::ListTopicSubscriptions( - google::cloud::pubsublite::v1::ListTopicSubscriptionsRequest request) { + google::cloud::pubsublite::v1::ListTopicSubscriptionsRequest request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->ListTopicSubscriptions(std::move(request)); } StatusOr AdminServiceClient::CreateSubscription( - google::cloud::pubsublite::v1::CreateSubscriptionRequest const& request) { + google::cloud::pubsublite::v1::CreateSubscriptionRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->CreateSubscription(request); } StatusOr AdminServiceClient::GetSubscription( - google::cloud::pubsublite::v1::GetSubscriptionRequest const& request) { + google::cloud::pubsublite::v1::GetSubscriptionRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->GetSubscription(request); } StreamRange AdminServiceClient::ListSubscriptions( - google::cloud::pubsublite::v1::ListSubscriptionsRequest request) { + google::cloud::pubsublite::v1::ListSubscriptionsRequest request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->ListSubscriptions(std::move(request)); } StatusOr AdminServiceClient::UpdateSubscription( - google::cloud::pubsublite::v1::UpdateSubscriptionRequest const& request) { + google::cloud::pubsublite::v1::UpdateSubscriptionRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->UpdateSubscription(request); } Status AdminServiceClient::DeleteSubscription( - google::cloud::pubsublite::v1::DeleteSubscriptionRequest const& request) { + google::cloud::pubsublite::v1::DeleteSubscriptionRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->DeleteSubscription(request); } future> AdminServiceClient::SeekSubscription( - google::cloud::pubsublite::v1::SeekSubscriptionRequest const& request) { + google::cloud::pubsublite::v1::SeekSubscriptionRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->SeekSubscription(request); } StatusOr AdminServiceClient::CreateReservation( - google::cloud::pubsublite::v1::CreateReservationRequest const& request) { + google::cloud::pubsublite::v1::CreateReservationRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->CreateReservation(request); } StatusOr AdminServiceClient::GetReservation( - google::cloud::pubsublite::v1::GetReservationRequest const& request) { + google::cloud::pubsublite::v1::GetReservationRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->GetReservation(request); } StreamRange AdminServiceClient::ListReservations( - google::cloud::pubsublite::v1::ListReservationsRequest request) { + google::cloud::pubsublite::v1::ListReservationsRequest request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->ListReservations(std::move(request)); } StatusOr AdminServiceClient::UpdateReservation( - google::cloud::pubsublite::v1::UpdateReservationRequest const& request) { + google::cloud::pubsublite::v1::UpdateReservationRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->UpdateReservation(request); } Status AdminServiceClient::DeleteReservation( - google::cloud::pubsublite::v1::DeleteReservationRequest const& request) { + google::cloud::pubsublite::v1::DeleteReservationRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->DeleteReservation(request); } StreamRange AdminServiceClient::ListReservationTopics( - google::cloud::pubsublite::v1::ListReservationTopicsRequest request) { + google::cloud::pubsublite::v1::ListReservationTopicsRequest request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->ListReservationTopics(std::move(request)); } diff --git a/google/cloud/pubsublite/admin_client.h b/google/cloud/pubsublite/admin_client.h index 7ab4134393a29..9ba75c22da3a9 100644 --- a/google/cloud/pubsublite/admin_client.h +++ b/google/cloud/pubsublite/admin_client.h @@ -21,6 +21,7 @@ #include "google/cloud/pubsublite/admin_connection.h" #include "google/cloud/future.h" +#include "google/cloud/options.h" #include "google/cloud/polling_policy.h" #include "google/cloud/status_or.h" #include "google/cloud/version.h" @@ -63,7 +64,7 @@ GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN class AdminServiceClient { public: explicit AdminServiceClient( - std::shared_ptr connection); + std::shared_ptr connection, Options options = {}); ~AdminServiceClient(); //@{ @@ -97,6 +98,7 @@ class AdminServiceClient { /// the final component of /// the topic's name. /// This value is structured like: `my-topic-name`. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::pubsublite::v1::Topic,google/cloud/pubsublite/v1/common.proto#L102} /// @@ -108,13 +110,14 @@ class AdminServiceClient { StatusOr CreateTopic( std::string const& parent, google::cloud::pubsublite::v1::Topic const& topic, - std::string const& topic_id); + std::string const& topic_id, Options options = {}); /// /// Returns the topic configuration. /// /// @param name Required. The name of the topic whose configuration to /// return. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::pubsublite::v1::Topic,google/cloud/pubsublite/v1/common.proto#L102} /// @@ -124,12 +127,13 @@ class AdminServiceClient { /// @googleapis_reference_link{google/cloud/pubsublite/v1/common.proto#L102} /// StatusOr GetTopic( - std::string const& name); + std::string const& name, Options options = {}); /// /// Returns the partition information for the requested topic. /// /// @param name Required. The topic whose partition information to return. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::pubsublite::v1::TopicPartitions,google/cloud/pubsublite/v1/admin.proto#L270} /// @@ -139,13 +143,14 @@ class AdminServiceClient { /// @googleapis_reference_link{google/cloud/pubsublite/v1/admin.proto#L270} /// StatusOr GetTopicPartitions( - std::string const& name); + std::string const& name, Options options = {}); /// /// Returns the list of topics for the given project. /// /// @param parent Required. The parent whose topics are to be listed. /// Structured like `projects/{project_number}/locations/{location}`. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::pubsublite::v1::Topic,google/cloud/pubsublite/v1/common.proto#L102} /// @@ -155,7 +160,7 @@ class AdminServiceClient { /// @googleapis_reference_link{google/cloud/pubsublite/v1/common.proto#L102} /// StreamRange ListTopics( - std::string const& parent); + std::string const& parent, Options options = {}); /// /// Updates properties of the specified topic. @@ -164,6 +169,7 @@ class AdminServiceClient { /// populated. /// @param update_mask Required. A mask specifying the topic fields to /// change. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::pubsublite::v1::Topic,google/cloud/pubsublite/v1/common.proto#L102} /// @@ -174,28 +180,31 @@ class AdminServiceClient { /// StatusOr UpdateTopic( google::cloud::pubsublite::v1::Topic const& topic, - google::protobuf::FieldMask const& update_mask); + google::protobuf::FieldMask const& update_mask, Options options = {}); /// /// Deletes the specified topic. /// /// @param name Required. The name of the topic to delete. + /// @param options Optional. Operation options. /// /// [google.cloud.pubsublite.v1.DeleteTopicRequest]: /// @googleapis_reference_link{google/cloud/pubsublite/v1/admin.proto#L320} /// - Status DeleteTopic(std::string const& name); + Status DeleteTopic(std::string const& name, Options options = {}); /// /// Lists the subscriptions attached to the specified topic. /// /// @param name Required. The name of the topic whose subscriptions to list. + /// @param options Optional. Operation options. /// @return std::string /// /// [google.cloud.pubsublite.v1.ListTopicSubscriptionsRequest]: /// @googleapis_reference_link{google/cloud/pubsublite/v1/admin.proto#L331} /// - StreamRange ListTopicSubscriptions(std::string const& name); + StreamRange ListTopicSubscriptions(std::string const& name, + Options options = {}); /// /// Creates a new subscription. @@ -209,6 +218,7 @@ class AdminServiceClient { /// which will become the final component /// of the subscription's name. /// This value is structured like: `my-sub-name`. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::pubsublite::v1::Subscription,google/cloud/pubsublite/v1/common.proto#L186} /// @@ -220,13 +230,14 @@ class AdminServiceClient { StatusOr CreateSubscription( std::string const& parent, google::cloud::pubsublite::v1::Subscription const& subscription, - std::string const& subscription_id); + std::string const& subscription_id, Options options = {}); /// /// Returns the subscription configuration. /// /// @param name Required. The name of the subscription whose configuration to /// return. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::pubsublite::v1::Subscription,google/cloud/pubsublite/v1/common.proto#L186} /// @@ -236,13 +247,14 @@ class AdminServiceClient { /// @googleapis_reference_link{google/cloud/pubsublite/v1/common.proto#L186} /// StatusOr GetSubscription( - std::string const& name); + std::string const& name, Options options = {}); /// /// Returns the list of subscriptions for the given project. /// /// @param parent Required. The parent whose subscriptions are to be listed. /// Structured like `projects/{project_number}/locations/{location}`. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::pubsublite::v1::Subscription,google/cloud/pubsublite/v1/common.proto#L186} /// @@ -252,7 +264,7 @@ class AdminServiceClient { /// @googleapis_reference_link{google/cloud/pubsublite/v1/common.proto#L186} /// StreamRange ListSubscriptions( - std::string const& parent); + std::string const& parent, Options options = {}); /// /// Updates properties of the specified subscription. @@ -262,6 +274,7 @@ class AdminServiceClient { /// Topic field must not be populated. /// @param update_mask Required. A mask specifying the subscription fields to /// change. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::pubsublite::v1::Subscription,google/cloud/pubsublite/v1/common.proto#L186} /// @@ -272,17 +285,18 @@ class AdminServiceClient { /// StatusOr UpdateSubscription( google::cloud::pubsublite::v1::Subscription const& subscription, - google::protobuf::FieldMask const& update_mask); + google::protobuf::FieldMask const& update_mask, Options options = {}); /// /// Deletes the specified subscription. /// /// @param name Required. The name of the subscription to delete. + /// @param options Optional. Operation options. /// /// [google.cloud.pubsublite.v1.DeleteSubscriptionRequest]: /// @googleapis_reference_link{google/cloud/pubsublite/v1/admin.proto#L447} /// - Status DeleteSubscription(std::string const& name); + Status DeleteSubscription(std::string const& name, Options options = {}); /// /// Creates a new reservation. @@ -296,6 +310,7 @@ class AdminServiceClient { /// will become the final component of /// the reservation's name. /// This value is structured like: `my-reservation-name`. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::pubsublite::v1::Reservation,google/cloud/pubsublite/v1/common.proto#L80} /// @@ -307,7 +322,7 @@ class AdminServiceClient { StatusOr CreateReservation( std::string const& parent, google::cloud::pubsublite::v1::Reservation const& reservation, - std::string const& reservation_id); + std::string const& reservation_id, Options options = {}); /// /// Returns the reservation configuration. @@ -316,6 +331,7 @@ class AdminServiceClient { /// return. /// Structured like: /// projects/{project_number}/locations/{location}/reservations/{reservation_id} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::pubsublite::v1::Reservation,google/cloud/pubsublite/v1/common.proto#L80} /// @@ -325,13 +341,14 @@ class AdminServiceClient { /// @googleapis_reference_link{google/cloud/pubsublite/v1/common.proto#L80} /// StatusOr GetReservation( - std::string const& name); + std::string const& name, Options options = {}); /// /// Returns the list of reservations for the given project. /// /// @param parent Required. The parent whose reservations are to be listed. /// Structured like `projects/{project_number}/locations/{location}`. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::pubsublite::v1::Reservation,google/cloud/pubsublite/v1/common.proto#L80} /// @@ -341,7 +358,7 @@ class AdminServiceClient { /// @googleapis_reference_link{google/cloud/pubsublite/v1/common.proto#L80} /// StreamRange ListReservations( - std::string const& parent); + std::string const& parent, Options options = {}); /// /// Updates properties of the specified reservation. @@ -350,6 +367,7 @@ class AdminServiceClient { /// must be populated. /// @param update_mask Required. A mask specifying the reservation fields to /// change. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::pubsublite::v1::Reservation,google/cloud/pubsublite/v1/common.proto#L80} /// @@ -360,7 +378,7 @@ class AdminServiceClient { /// StatusOr UpdateReservation( google::cloud::pubsublite::v1::Reservation const& reservation, - google::protobuf::FieldMask const& update_mask); + google::protobuf::FieldMask const& update_mask, Options options = {}); /// /// Deletes the specified reservation. @@ -368,11 +386,12 @@ class AdminServiceClient { /// @param name Required. The name of the reservation to delete. /// Structured like: /// projects/{project_number}/locations/{location}/reservations/{reservation_id} + /// @param options Optional. Operation options. /// /// [google.cloud.pubsublite.v1.DeleteReservationRequest]: /// @googleapis_reference_link{google/cloud/pubsublite/v1/admin.proto#L594} /// - Status DeleteReservation(std::string const& name); + Status DeleteReservation(std::string const& name, Options options = {}); /// /// Lists the topics attached to the specified reservation. @@ -380,18 +399,21 @@ class AdminServiceClient { /// @param name Required. The name of the reservation whose topics to list. /// Structured like: /// projects/{project_number}/locations/{location}/reservations/{reservation_id} + /// @param options Optional. Operation options. /// @return std::string /// /// [google.cloud.pubsublite.v1.ListReservationTopicsRequest]: /// @googleapis_reference_link{google/cloud/pubsublite/v1/admin.proto#L607} /// - StreamRange ListReservationTopics(std::string const& name); + StreamRange ListReservationTopics(std::string const& name, + Options options = {}); /// /// Creates a new topic. /// /// @param request /// @googleapis_link{google::cloud::pubsublite::v1::CreateTopicRequest,google/cloud/pubsublite/v1/admin.proto#L227} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::pubsublite::v1::Topic,google/cloud/pubsublite/v1/common.proto#L102} /// @@ -401,13 +423,15 @@ class AdminServiceClient { /// @googleapis_reference_link{google/cloud/pubsublite/v1/common.proto#L102} /// StatusOr CreateTopic( - google::cloud::pubsublite::v1::CreateTopicRequest const& request); + google::cloud::pubsublite::v1::CreateTopicRequest const& request, + Options options = {}); /// /// Returns the topic configuration. /// /// @param request /// @googleapis_link{google::cloud::pubsublite::v1::GetTopicRequest,google/cloud/pubsublite/v1/admin.proto#L248} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::pubsublite::v1::Topic,google/cloud/pubsublite/v1/common.proto#L102} /// @@ -417,13 +441,15 @@ class AdminServiceClient { /// @googleapis_reference_link{google/cloud/pubsublite/v1/common.proto#L102} /// StatusOr GetTopic( - google::cloud::pubsublite::v1::GetTopicRequest const& request); + google::cloud::pubsublite::v1::GetTopicRequest const& request, + Options options = {}); /// /// Returns the partition information for the requested topic. /// /// @param request /// @googleapis_link{google::cloud::pubsublite::v1::GetTopicPartitionsRequest,google/cloud/pubsublite/v1/admin.proto#L259} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::pubsublite::v1::TopicPartitions,google/cloud/pubsublite/v1/admin.proto#L270} /// @@ -433,13 +459,15 @@ class AdminServiceClient { /// @googleapis_reference_link{google/cloud/pubsublite/v1/admin.proto#L270} /// StatusOr GetTopicPartitions( - google::cloud::pubsublite::v1::GetTopicPartitionsRequest const& request); + google::cloud::pubsublite::v1::GetTopicPartitionsRequest const& request, + Options options = {}); /// /// Returns the list of topics for the given project. /// /// @param request /// @googleapis_link{google::cloud::pubsublite::v1::ListTopicsRequest,google/cloud/pubsublite/v1/admin.proto#L276} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::pubsublite::v1::Topic,google/cloud/pubsublite/v1/common.proto#L102} /// @@ -449,13 +477,15 @@ class AdminServiceClient { /// @googleapis_reference_link{google/cloud/pubsublite/v1/common.proto#L102} /// StreamRange ListTopics( - google::cloud::pubsublite::v1::ListTopicsRequest request); + google::cloud::pubsublite::v1::ListTopicsRequest request, + Options options = {}); /// /// Updates properties of the specified topic. /// /// @param request /// @googleapis_link{google::cloud::pubsublite::v1::UpdateTopicRequest,google/cloud/pubsublite/v1/admin.proto#L311} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::pubsublite::v1::Topic,google/cloud/pubsublite/v1/common.proto#L102} /// @@ -465,38 +495,44 @@ class AdminServiceClient { /// @googleapis_reference_link{google/cloud/pubsublite/v1/common.proto#L102} /// StatusOr UpdateTopic( - google::cloud::pubsublite::v1::UpdateTopicRequest const& request); + google::cloud::pubsublite::v1::UpdateTopicRequest const& request, + Options options = {}); /// /// Deletes the specified topic. /// /// @param request /// @googleapis_link{google::cloud::pubsublite::v1::DeleteTopicRequest,google/cloud/pubsublite/v1/admin.proto#L320} + /// @param options Optional. Operation options. /// /// [google.cloud.pubsublite.v1.DeleteTopicRequest]: /// @googleapis_reference_link{google/cloud/pubsublite/v1/admin.proto#L320} /// Status DeleteTopic( - google::cloud::pubsublite::v1::DeleteTopicRequest const& request); + google::cloud::pubsublite::v1::DeleteTopicRequest const& request, + Options options = {}); /// /// Lists the subscriptions attached to the specified topic. /// /// @param request /// @googleapis_link{google::cloud::pubsublite::v1::ListTopicSubscriptionsRequest,google/cloud/pubsublite/v1/admin.proto#L331} + /// @param options Optional. Operation options. /// @return std::string /// /// [google.cloud.pubsublite.v1.ListTopicSubscriptionsRequest]: /// @googleapis_reference_link{google/cloud/pubsublite/v1/admin.proto#L331} /// StreamRange ListTopicSubscriptions( - google::cloud::pubsublite::v1::ListTopicSubscriptionsRequest request); + google::cloud::pubsublite::v1::ListTopicSubscriptionsRequest request, + Options options = {}); /// /// Creates a new subscription. /// /// @param request /// @googleapis_link{google::cloud::pubsublite::v1::CreateSubscriptionRequest,google/cloud/pubsublite/v1/admin.proto#L365} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::pubsublite::v1::Subscription,google/cloud/pubsublite/v1/common.proto#L186} /// @@ -506,13 +542,15 @@ class AdminServiceClient { /// @googleapis_reference_link{google/cloud/pubsublite/v1/common.proto#L186} /// StatusOr CreateSubscription( - google::cloud::pubsublite::v1::CreateSubscriptionRequest const& request); + google::cloud::pubsublite::v1::CreateSubscriptionRequest const& request, + Options options = {}); /// /// Returns the subscription configuration. /// /// @param request /// @googleapis_link{google::cloud::pubsublite::v1::GetSubscriptionRequest,google/cloud/pubsublite/v1/admin.proto#L391} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::pubsublite::v1::Subscription,google/cloud/pubsublite/v1/common.proto#L186} /// @@ -522,13 +560,15 @@ class AdminServiceClient { /// @googleapis_reference_link{google/cloud/pubsublite/v1/common.proto#L186} /// StatusOr GetSubscription( - google::cloud::pubsublite::v1::GetSubscriptionRequest const& request); + google::cloud::pubsublite::v1::GetSubscriptionRequest const& request, + Options options = {}); /// /// Returns the list of subscriptions for the given project. /// /// @param request /// @googleapis_link{google::cloud::pubsublite::v1::ListSubscriptionsRequest,google/cloud/pubsublite/v1/admin.proto#L402} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::pubsublite::v1::Subscription,google/cloud/pubsublite/v1/common.proto#L186} /// @@ -538,13 +578,15 @@ class AdminServiceClient { /// @googleapis_reference_link{google/cloud/pubsublite/v1/common.proto#L186} /// StreamRange ListSubscriptions( - google::cloud::pubsublite::v1::ListSubscriptionsRequest request); + google::cloud::pubsublite::v1::ListSubscriptionsRequest request, + Options options = {}); /// /// Updates properties of the specified subscription. /// /// @param request /// @googleapis_link{google::cloud::pubsublite::v1::UpdateSubscriptionRequest,google/cloud/pubsublite/v1/admin.proto#L437} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::pubsublite::v1::Subscription,google/cloud/pubsublite/v1/common.proto#L186} /// @@ -554,19 +596,22 @@ class AdminServiceClient { /// @googleapis_reference_link{google/cloud/pubsublite/v1/common.proto#L186} /// StatusOr UpdateSubscription( - google::cloud::pubsublite::v1::UpdateSubscriptionRequest const& request); + google::cloud::pubsublite::v1::UpdateSubscriptionRequest const& request, + Options options = {}); /// /// Deletes the specified subscription. /// /// @param request /// @googleapis_link{google::cloud::pubsublite::v1::DeleteSubscriptionRequest,google/cloud/pubsublite/v1/admin.proto#L447} + /// @param options Optional. Operation options. /// /// [google.cloud.pubsublite.v1.DeleteSubscriptionRequest]: /// @googleapis_reference_link{google/cloud/pubsublite/v1/admin.proto#L447} /// Status DeleteSubscription( - google::cloud::pubsublite::v1::DeleteSubscriptionRequest const& request); + google::cloud::pubsublite::v1::DeleteSubscriptionRequest const& request, + Options options = {}); /// /// Performs an out-of-band seek for a subscription to a specified target, @@ -593,6 +638,7 @@ class AdminServiceClient { /// /// @param request /// @googleapis_link{google::cloud::pubsublite::v1::SeekSubscriptionRequest,google/cloud/pubsublite/v1/admin.proto#L458} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::pubsublite::v1::SeekSubscriptionResponse,google/cloud/pubsublite/v1/admin.proto#L493} /// @@ -603,13 +649,15 @@ class AdminServiceClient { /// future> SeekSubscription( - google::cloud::pubsublite::v1::SeekSubscriptionRequest const& request); + google::cloud::pubsublite::v1::SeekSubscriptionRequest const& request, + Options options = {}); /// /// Creates a new reservation. /// /// @param request /// @googleapis_link{google::cloud::pubsublite::v1::CreateReservationRequest,google/cloud/pubsublite/v1/admin.proto#L516} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::pubsublite::v1::Reservation,google/cloud/pubsublite/v1/common.proto#L80} /// @@ -619,13 +667,15 @@ class AdminServiceClient { /// @googleapis_reference_link{google/cloud/pubsublite/v1/common.proto#L80} /// StatusOr CreateReservation( - google::cloud::pubsublite::v1::CreateReservationRequest const& request); + google::cloud::pubsublite::v1::CreateReservationRequest const& request, + Options options = {}); /// /// Returns the reservation configuration. /// /// @param request /// @googleapis_link{google::cloud::pubsublite::v1::GetReservationRequest,google/cloud/pubsublite/v1/admin.proto#L537} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::pubsublite::v1::Reservation,google/cloud/pubsublite/v1/common.proto#L80} /// @@ -635,13 +685,15 @@ class AdminServiceClient { /// @googleapis_reference_link{google/cloud/pubsublite/v1/common.proto#L80} /// StatusOr GetReservation( - google::cloud::pubsublite::v1::GetReservationRequest const& request); + google::cloud::pubsublite::v1::GetReservationRequest const& request, + Options options = {}); /// /// Returns the list of reservations for the given project. /// /// @param request /// @googleapis_link{google::cloud::pubsublite::v1::ListReservationsRequest,google/cloud/pubsublite/v1/admin.proto#L550} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::pubsublite::v1::Reservation,google/cloud/pubsublite/v1/common.proto#L80} /// @@ -651,13 +703,15 @@ class AdminServiceClient { /// @googleapis_reference_link{google/cloud/pubsublite/v1/common.proto#L80} /// StreamRange ListReservations( - google::cloud::pubsublite::v1::ListReservationsRequest request); + google::cloud::pubsublite::v1::ListReservationsRequest request, + Options options = {}); /// /// Updates properties of the specified reservation. /// /// @param request /// @googleapis_link{google::cloud::pubsublite::v1::UpdateReservationRequest,google/cloud/pubsublite/v1/admin.proto#L585} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::pubsublite::v1::Reservation,google/cloud/pubsublite/v1/common.proto#L80} /// @@ -667,35 +721,41 @@ class AdminServiceClient { /// @googleapis_reference_link{google/cloud/pubsublite/v1/common.proto#L80} /// StatusOr UpdateReservation( - google::cloud::pubsublite::v1::UpdateReservationRequest const& request); + google::cloud::pubsublite::v1::UpdateReservationRequest const& request, + Options options = {}); /// /// Deletes the specified reservation. /// /// @param request /// @googleapis_link{google::cloud::pubsublite::v1::DeleteReservationRequest,google/cloud/pubsublite/v1/admin.proto#L594} + /// @param options Optional. Operation options. /// /// [google.cloud.pubsublite.v1.DeleteReservationRequest]: /// @googleapis_reference_link{google/cloud/pubsublite/v1/admin.proto#L594} /// Status DeleteReservation( - google::cloud::pubsublite::v1::DeleteReservationRequest const& request); + google::cloud::pubsublite::v1::DeleteReservationRequest const& request, + Options options = {}); /// /// Lists the topics attached to the specified reservation. /// /// @param request /// @googleapis_link{google::cloud::pubsublite::v1::ListReservationTopicsRequest,google/cloud/pubsublite/v1/admin.proto#L607} + /// @param options Optional. Operation options. /// @return std::string /// /// [google.cloud.pubsublite.v1.ListReservationTopicsRequest]: /// @googleapis_reference_link{google/cloud/pubsublite/v1/admin.proto#L607} /// StreamRange ListReservationTopics( - google::cloud::pubsublite::v1::ListReservationTopicsRequest request); + google::cloud::pubsublite::v1::ListReservationTopicsRequest request, + Options options = {}); private: std::shared_ptr connection_; + Options options_; }; GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END diff --git a/google/cloud/secretmanager/secret_manager_client.cc b/google/cloud/secretmanager/secret_manager_client.cc index 6295069ee06d0..10a7c42a1a57d 100644 --- a/google/cloud/secretmanager/secret_manager_client.cc +++ b/google/cloud/secretmanager/secret_manager_client.cc @@ -17,6 +17,7 @@ // source: google/cloud/secretmanager/v1/service.proto #include "google/cloud/secretmanager/secret_manager_client.h" +#include "google/cloud/secretmanager/internal/secret_manager_option_defaults.h" #include namespace google { @@ -25,12 +26,17 @@ namespace secretmanager { GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN SecretManagerServiceClient::SecretManagerServiceClient( - std::shared_ptr connection) - : connection_(std::move(connection)) {} + std::shared_ptr connection, Options options) + : connection_(std::move(connection)), + options_(secretmanager_internal::SecretManagerServiceDefaultOptions( + std::move(options))) {} SecretManagerServiceClient::~SecretManagerServiceClient() = default; StreamRange -SecretManagerServiceClient::ListSecrets(std::string const& parent) { +SecretManagerServiceClient::ListSecrets(std::string const& parent, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::secretmanager::v1::ListSecretsRequest request; request.set_parent(parent); return connection_->ListSecrets(request); @@ -39,7 +45,9 @@ SecretManagerServiceClient::ListSecrets(std::string const& parent) { StatusOr SecretManagerServiceClient::CreateSecret( std::string const& parent, std::string const& secret_id, - google::cloud::secretmanager::v1::Secret const& secret) { + google::cloud::secretmanager::v1::Secret const& secret, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::secretmanager::v1::CreateSecretRequest request; request.set_parent(parent); request.set_secret_id(secret_id); @@ -50,7 +58,10 @@ SecretManagerServiceClient::CreateSecret( StatusOr SecretManagerServiceClient::AddSecretVersion( std::string const& parent, - google::cloud::secretmanager::v1::SecretPayload const& payload) { + google::cloud::secretmanager::v1::SecretPayload const& payload, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::secretmanager::v1::AddSecretVersionRequest request; request.set_parent(parent); *request.mutable_payload() = payload; @@ -58,7 +69,10 @@ SecretManagerServiceClient::AddSecretVersion( } StatusOr -SecretManagerServiceClient::GetSecret(std::string const& name) { +SecretManagerServiceClient::GetSecret(std::string const& name, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::secretmanager::v1::GetSecretRequest request; request.set_name(name); return connection_->GetSecret(request); @@ -67,56 +81,79 @@ SecretManagerServiceClient::GetSecret(std::string const& name) { StatusOr SecretManagerServiceClient::UpdateSecret( google::cloud::secretmanager::v1::Secret const& secret, - google::protobuf::FieldMask const& update_mask) { + google::protobuf::FieldMask const& update_mask, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::secretmanager::v1::UpdateSecretRequest request; *request.mutable_secret() = secret; *request.mutable_update_mask() = update_mask; return connection_->UpdateSecret(request); } -Status SecretManagerServiceClient::DeleteSecret(std::string const& name) { +Status SecretManagerServiceClient::DeleteSecret(std::string const& name, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::secretmanager::v1::DeleteSecretRequest request; request.set_name(name); return connection_->DeleteSecret(request); } StreamRange -SecretManagerServiceClient::ListSecretVersions(std::string const& parent) { +SecretManagerServiceClient::ListSecretVersions(std::string const& parent, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::secretmanager::v1::ListSecretVersionsRequest request; request.set_parent(parent); return connection_->ListSecretVersions(request); } StatusOr -SecretManagerServiceClient::GetSecretVersion(std::string const& name) { +SecretManagerServiceClient::GetSecretVersion(std::string const& name, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::secretmanager::v1::GetSecretVersionRequest request; request.set_name(name); return connection_->GetSecretVersion(request); } StatusOr -SecretManagerServiceClient::AccessSecretVersion(std::string const& name) { +SecretManagerServiceClient::AccessSecretVersion(std::string const& name, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::secretmanager::v1::AccessSecretVersionRequest request; request.set_name(name); return connection_->AccessSecretVersion(request); } StatusOr -SecretManagerServiceClient::DisableSecretVersion(std::string const& name) { +SecretManagerServiceClient::DisableSecretVersion(std::string const& name, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::secretmanager::v1::DisableSecretVersionRequest request; request.set_name(name); return connection_->DisableSecretVersion(request); } StatusOr -SecretManagerServiceClient::EnableSecretVersion(std::string const& name) { +SecretManagerServiceClient::EnableSecretVersion(std::string const& name, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::secretmanager::v1::EnableSecretVersionRequest request; request.set_name(name); return connection_->EnableSecretVersion(request); } StatusOr -SecretManagerServiceClient::DestroySecretVersion(std::string const& name) { +SecretManagerServiceClient::DestroySecretVersion(std::string const& name, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::secretmanager::v1::DestroySecretVersionRequest request; request.set_name(name); return connection_->DestroySecretVersion(request); @@ -124,92 +161,133 @@ SecretManagerServiceClient::DestroySecretVersion(std::string const& name) { StreamRange SecretManagerServiceClient::ListSecrets( - google::cloud::secretmanager::v1::ListSecretsRequest request) { + google::cloud::secretmanager::v1::ListSecretsRequest request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->ListSecrets(std::move(request)); } StatusOr SecretManagerServiceClient::CreateSecret( - google::cloud::secretmanager::v1::CreateSecretRequest const& request) { + google::cloud::secretmanager::v1::CreateSecretRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->CreateSecret(request); } StatusOr SecretManagerServiceClient::AddSecretVersion( - google::cloud::secretmanager::v1::AddSecretVersionRequest const& request) { + google::cloud::secretmanager::v1::AddSecretVersionRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->AddSecretVersion(request); } StatusOr SecretManagerServiceClient::GetSecret( - google::cloud::secretmanager::v1::GetSecretRequest const& request) { + google::cloud::secretmanager::v1::GetSecretRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->GetSecret(request); } StatusOr SecretManagerServiceClient::UpdateSecret( - google::cloud::secretmanager::v1::UpdateSecretRequest const& request) { + google::cloud::secretmanager::v1::UpdateSecretRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->UpdateSecret(request); } Status SecretManagerServiceClient::DeleteSecret( - google::cloud::secretmanager::v1::DeleteSecretRequest const& request) { + google::cloud::secretmanager::v1::DeleteSecretRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->DeleteSecret(request); } StreamRange SecretManagerServiceClient::ListSecretVersions( - google::cloud::secretmanager::v1::ListSecretVersionsRequest request) { + google::cloud::secretmanager::v1::ListSecretVersionsRequest request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->ListSecretVersions(std::move(request)); } StatusOr SecretManagerServiceClient::GetSecretVersion( - google::cloud::secretmanager::v1::GetSecretVersionRequest const& request) { + google::cloud::secretmanager::v1::GetSecretVersionRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->GetSecretVersion(request); } StatusOr SecretManagerServiceClient::AccessSecretVersion( - google::cloud::secretmanager::v1::AccessSecretVersionRequest const& - request) { + google::cloud::secretmanager::v1::AccessSecretVersionRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->AccessSecretVersion(request); } StatusOr SecretManagerServiceClient::DisableSecretVersion( google::cloud::secretmanager::v1::DisableSecretVersionRequest const& - request) { + request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->DisableSecretVersion(request); } StatusOr SecretManagerServiceClient::EnableSecretVersion( - google::cloud::secretmanager::v1::EnableSecretVersionRequest const& - request) { + google::cloud::secretmanager::v1::EnableSecretVersionRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->EnableSecretVersion(request); } StatusOr SecretManagerServiceClient::DestroySecretVersion( google::cloud::secretmanager::v1::DestroySecretVersionRequest const& - request) { + request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->DestroySecretVersion(request); } StatusOr SecretManagerServiceClient::SetIamPolicy( - google::iam::v1::SetIamPolicyRequest const& request) { + google::iam::v1::SetIamPolicyRequest const& request, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->SetIamPolicy(request); } StatusOr SecretManagerServiceClient::GetIamPolicy( - google::iam::v1::GetIamPolicyRequest const& request) { + google::iam::v1::GetIamPolicyRequest const& request, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->GetIamPolicy(request); } StatusOr SecretManagerServiceClient::TestIamPermissions( - google::iam::v1::TestIamPermissionsRequest const& request) { + google::iam::v1::TestIamPermissionsRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->TestIamPermissions(request); } diff --git a/google/cloud/secretmanager/secret_manager_client.h b/google/cloud/secretmanager/secret_manager_client.h index 66f19c7786307..0321baf698463 100644 --- a/google/cloud/secretmanager/secret_manager_client.h +++ b/google/cloud/secretmanager/secret_manager_client.h @@ -21,6 +21,7 @@ #include "google/cloud/secretmanager/secret_manager_connection.h" #include "google/cloud/future.h" +#include "google/cloud/options.h" #include "google/cloud/polling_policy.h" #include "google/cloud/status_or.h" #include "google/cloud/version.h" @@ -67,7 +68,8 @@ GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN class SecretManagerServiceClient { public: explicit SecretManagerServiceClient( - std::shared_ptr connection); + std::shared_ptr connection, + Options options = {}); ~SecretManagerServiceClient(); //@{ @@ -98,6 +100,7 @@ class SecretManagerServiceClient { /// the /// [Secrets][google.cloud.secretmanager.v1.Secret], in the format /// `projects/*`. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::secretmanager::v1::Secret,google/cloud/secretmanager/v1/resources.proto#L40} /// @@ -107,7 +110,7 @@ class SecretManagerServiceClient { /// @googleapis_reference_link{google/cloud/secretmanager/v1/resources.proto#L40} /// StreamRange ListSecrets( - std::string const& parent); + std::string const& parent, Options options = {}); /// /// Creates a new [Secret][google.cloud.secretmanager.v1.Secret] containing no @@ -123,6 +126,7 @@ class SecretManagerServiceClient { /// and underscore (`_`) characters. /// @param secret Required. A [Secret][google.cloud.secretmanager.v1.Secret] /// with initial field values. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::secretmanager::v1::Secret,google/cloud/secretmanager/v1/resources.proto#L40} /// @@ -133,7 +137,8 @@ class SecretManagerServiceClient { /// StatusOr CreateSecret( std::string const& parent, std::string const& secret_id, - google::cloud::secretmanager::v1::Secret const& secret); + google::cloud::secretmanager::v1::Secret const& secret, + Options options = {}); /// /// Creates a new [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] @@ -146,6 +151,7 @@ class SecretManagerServiceClient { /// format `projects/*/secrets/*`. /// @param payload Required. The secret payload of the /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::secretmanager::v1::SecretVersion,google/cloud/secretmanager/v1/resources.proto#L103} /// @@ -156,7 +162,8 @@ class SecretManagerServiceClient { /// StatusOr AddSecretVersion( std::string const& parent, - google::cloud::secretmanager::v1::SecretPayload const& payload); + google::cloud::secretmanager::v1::SecretPayload const& payload, + Options options = {}); /// /// Gets metadata for a given [Secret][google.cloud.secretmanager.v1.Secret]. @@ -164,6 +171,7 @@ class SecretManagerServiceClient { /// @param name Required. The resource name of the /// [Secret][google.cloud.secretmanager.v1.Secret], in the format /// `projects/*/secrets/*`. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::secretmanager::v1::Secret,google/cloud/secretmanager/v1/resources.proto#L40} /// @@ -173,7 +181,7 @@ class SecretManagerServiceClient { /// @googleapis_reference_link{google/cloud/secretmanager/v1/resources.proto#L40} /// StatusOr GetSecret( - std::string const& name); + std::string const& name, Options options = {}); /// /// Updates metadata of an existing @@ -182,6 +190,7 @@ class SecretManagerServiceClient { /// @param secret Required. [Secret][google.cloud.secretmanager.v1.Secret] /// with updated field values. /// @param update_mask Required. Specifies the fields to be updated. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::secretmanager::v1::Secret,google/cloud/secretmanager/v1/resources.proto#L40} /// @@ -192,7 +201,7 @@ class SecretManagerServiceClient { /// StatusOr UpdateSecret( google::cloud::secretmanager::v1::Secret const& secret, - google::protobuf::FieldMask const& update_mask); + google::protobuf::FieldMask const& update_mask, Options options = {}); /// /// Deletes a [Secret][google.cloud.secretmanager.v1.Secret]. @@ -200,11 +209,12 @@ class SecretManagerServiceClient { /// @param name Required. The resource name of the /// [Secret][google.cloud.secretmanager.v1.Secret] to delete in the format /// `projects/*/secrets/*`. + /// @param options Optional. Operation options. /// /// [google.cloud.secretmanager.v1.DeleteSecretRequest]: /// @googleapis_reference_link{google/cloud/secretmanager/v1/service.proto#L390} /// - Status DeleteSecret(std::string const& name); + Status DeleteSecret(std::string const& name, Options options = {}); /// /// Lists [SecretVersions][google.cloud.secretmanager.v1.SecretVersion]. This @@ -214,6 +224,7 @@ class SecretManagerServiceClient { /// [Secret][google.cloud.secretmanager.v1.Secret] associated with the /// [SecretVersions][google.cloud.secretmanager.v1.SecretVersion] to list, in /// the format `projects/*/secrets/*`. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::secretmanager::v1::SecretVersion,google/cloud/secretmanager/v1/resources.proto#L103} /// @@ -223,7 +234,7 @@ class SecretManagerServiceClient { /// @googleapis_reference_link{google/cloud/secretmanager/v1/resources.proto#L103} /// StreamRange - ListSecretVersions(std::string const& parent); + ListSecretVersions(std::string const& parent, Options options = {}); /// /// Gets metadata for a @@ -237,6 +248,7 @@ class SecretManagerServiceClient { /// `projects/*/secrets/*/versions/*`. /// `projects/*/secrets/*/versions/latest` is an alias to the most recently /// created [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::secretmanager::v1::SecretVersion,google/cloud/secretmanager/v1/resources.proto#L103} /// @@ -246,7 +258,7 @@ class SecretManagerServiceClient { /// @googleapis_reference_link{google/cloud/secretmanager/v1/resources.proto#L103} /// StatusOr GetSecretVersion( - std::string const& name); + std::string const& name, Options options = {}); /// /// Accesses a [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. @@ -260,6 +272,7 @@ class SecretManagerServiceClient { /// `projects/*/secrets/*/versions/*`. /// `projects/*/secrets/*/versions/latest` is an alias to the most recently /// created [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::secretmanager::v1::AccessSecretVersionResponse,google/cloud/secretmanager/v1/service.proto#L378} /// @@ -269,7 +282,7 @@ class SecretManagerServiceClient { /// @googleapis_reference_link{google/cloud/secretmanager/v1/service.proto#L378} /// StatusOr - AccessSecretVersion(std::string const& name); + AccessSecretVersion(std::string const& name, Options options = {}); /// /// Disables a [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. @@ -282,6 +295,7 @@ class SecretManagerServiceClient { /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] to disable in /// the format /// `projects/*/secrets/*/versions/*`. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::secretmanager::v1::SecretVersion,google/cloud/secretmanager/v1/resources.proto#L103} /// @@ -291,7 +305,7 @@ class SecretManagerServiceClient { /// @googleapis_reference_link{google/cloud/secretmanager/v1/resources.proto#L103} /// StatusOr - DisableSecretVersion(std::string const& name); + DisableSecretVersion(std::string const& name, Options options = {}); /// /// Enables a [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. @@ -304,6 +318,7 @@ class SecretManagerServiceClient { /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] to enable in /// the format /// `projects/*/secrets/*/versions/*`. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::secretmanager::v1::SecretVersion,google/cloud/secretmanager/v1/resources.proto#L103} /// @@ -313,7 +328,7 @@ class SecretManagerServiceClient { /// @googleapis_reference_link{google/cloud/secretmanager/v1/resources.proto#L103} /// StatusOr EnableSecretVersion( - std::string const& name); + std::string const& name, Options options = {}); /// /// Destroys a [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. @@ -327,6 +342,7 @@ class SecretManagerServiceClient { /// [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] to destroy in /// the format /// `projects/*/secrets/*/versions/*`. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::secretmanager::v1::SecretVersion,google/cloud/secretmanager/v1/resources.proto#L103} /// @@ -336,13 +352,14 @@ class SecretManagerServiceClient { /// @googleapis_reference_link{google/cloud/secretmanager/v1/resources.proto#L103} /// StatusOr - DestroySecretVersion(std::string const& name); + DestroySecretVersion(std::string const& name, Options options = {}); /// /// Lists [Secrets][google.cloud.secretmanager.v1.Secret]. /// /// @param request /// @googleapis_link{google::cloud::secretmanager::v1::ListSecretsRequest,google/cloud/secretmanager/v1/service.proto#L206} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::secretmanager::v1::Secret,google/cloud/secretmanager/v1/resources.proto#L40} /// @@ -352,7 +369,8 @@ class SecretManagerServiceClient { /// @googleapis_reference_link{google/cloud/secretmanager/v1/resources.proto#L40} /// StreamRange ListSecrets( - google::cloud::secretmanager::v1::ListSecretsRequest request); + google::cloud::secretmanager::v1::ListSecretsRequest request, + Options options = {}); /// /// Creates a new [Secret][google.cloud.secretmanager.v1.Secret] containing no @@ -360,6 +378,7 @@ class SecretManagerServiceClient { /// /// @param request /// @googleapis_link{google::cloud::secretmanager::v1::CreateSecretRequest,google/cloud/secretmanager/v1/service.proto#L248} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::secretmanager::v1::Secret,google/cloud/secretmanager/v1/resources.proto#L40} /// @@ -369,7 +388,8 @@ class SecretManagerServiceClient { /// @googleapis_reference_link{google/cloud/secretmanager/v1/resources.proto#L40} /// StatusOr CreateSecret( - google::cloud::secretmanager::v1::CreateSecretRequest const& request); + google::cloud::secretmanager::v1::CreateSecretRequest const& request, + Options options = {}); /// /// Creates a new [SecretVersion][google.cloud.secretmanager.v1.SecretVersion] @@ -378,6 +398,7 @@ class SecretManagerServiceClient { /// /// @param request /// @googleapis_link{google::cloud::secretmanager::v1::AddSecretVersionRequest,google/cloud/secretmanager/v1/service.proto#L270} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::secretmanager::v1::SecretVersion,google/cloud/secretmanager/v1/resources.proto#L103} /// @@ -387,13 +408,15 @@ class SecretManagerServiceClient { /// @googleapis_reference_link{google/cloud/secretmanager/v1/resources.proto#L103} /// StatusOr AddSecretVersion( - google::cloud::secretmanager::v1::AddSecretVersionRequest const& request); + google::cloud::secretmanager::v1::AddSecretVersionRequest const& request, + Options options = {}); /// /// Gets metadata for a given [Secret][google.cloud.secretmanager.v1.Secret]. /// /// @param request /// @googleapis_link{google::cloud::secretmanager::v1::GetSecretRequest,google/cloud/secretmanager/v1/service.proto#L285} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::secretmanager::v1::Secret,google/cloud/secretmanager/v1/resources.proto#L40} /// @@ -403,7 +426,8 @@ class SecretManagerServiceClient { /// @googleapis_reference_link{google/cloud/secretmanager/v1/resources.proto#L40} /// StatusOr GetSecret( - google::cloud::secretmanager::v1::GetSecretRequest const& request); + google::cloud::secretmanager::v1::GetSecretRequest const& request, + Options options = {}); /// /// Updates metadata of an existing @@ -411,6 +435,7 @@ class SecretManagerServiceClient { /// /// @param request /// @googleapis_link{google::cloud::secretmanager::v1::UpdateSecretRequest,google/cloud/secretmanager/v1/service.proto#L354} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::secretmanager::v1::Secret,google/cloud/secretmanager/v1/resources.proto#L40} /// @@ -420,19 +445,22 @@ class SecretManagerServiceClient { /// @googleapis_reference_link{google/cloud/secretmanager/v1/resources.proto#L40} /// StatusOr UpdateSecret( - google::cloud::secretmanager::v1::UpdateSecretRequest const& request); + google::cloud::secretmanager::v1::UpdateSecretRequest const& request, + Options options = {}); /// /// Deletes a [Secret][google.cloud.secretmanager.v1.Secret]. /// /// @param request /// @googleapis_link{google::cloud::secretmanager::v1::DeleteSecretRequest,google/cloud/secretmanager/v1/service.proto#L390} + /// @param options Optional. Operation options. /// /// [google.cloud.secretmanager.v1.DeleteSecretRequest]: /// @googleapis_reference_link{google/cloud/secretmanager/v1/service.proto#L390} /// Status DeleteSecret( - google::cloud::secretmanager::v1::DeleteSecretRequest const& request); + google::cloud::secretmanager::v1::DeleteSecretRequest const& request, + Options options = {}); /// /// Lists [SecretVersions][google.cloud.secretmanager.v1.SecretVersion]. This @@ -440,6 +468,7 @@ class SecretManagerServiceClient { /// /// @param request /// @googleapis_link{google::cloud::secretmanager::v1::ListSecretVersionsRequest,google/cloud/secretmanager/v1/service.proto#L296} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::secretmanager::v1::SecretVersion,google/cloud/secretmanager/v1/resources.proto#L103} /// @@ -450,7 +479,8 @@ class SecretManagerServiceClient { /// StreamRange ListSecretVersions( - google::cloud::secretmanager::v1::ListSecretVersionsRequest request); + google::cloud::secretmanager::v1::ListSecretVersionsRequest request, + Options options = {}); /// /// Gets metadata for a @@ -461,6 +491,7 @@ class SecretManagerServiceClient { /// /// @param request /// @googleapis_link{google::cloud::secretmanager::v1::GetSecretVersionRequest,google/cloud/secretmanager/v1/service.proto#L339} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::secretmanager::v1::SecretVersion,google/cloud/secretmanager/v1/resources.proto#L103} /// @@ -470,7 +501,8 @@ class SecretManagerServiceClient { /// @googleapis_reference_link{google/cloud/secretmanager/v1/resources.proto#L103} /// StatusOr GetSecretVersion( - google::cloud::secretmanager::v1::GetSecretVersionRequest const& request); + google::cloud::secretmanager::v1::GetSecretVersionRequest const& request, + Options options = {}); /// /// Accesses a [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. @@ -481,6 +513,7 @@ class SecretManagerServiceClient { /// /// @param request /// @googleapis_link{google::cloud::secretmanager::v1::AccessSecretVersionRequest,google/cloud/secretmanager/v1/service.proto#L363} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::secretmanager::v1::AccessSecretVersionResponse,google/cloud/secretmanager/v1/service.proto#L378} /// @@ -492,7 +525,8 @@ class SecretManagerServiceClient { StatusOr AccessSecretVersion( google::cloud::secretmanager::v1::AccessSecretVersionRequest const& - request); + request, + Options options = {}); /// /// Disables a [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. @@ -503,6 +537,7 @@ class SecretManagerServiceClient { /// /// @param request /// @googleapis_link{google::cloud::secretmanager::v1::DisableSecretVersionRequest,google/cloud/secretmanager/v1/service.proto#L407} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::secretmanager::v1::SecretVersion,google/cloud/secretmanager/v1/resources.proto#L103} /// @@ -514,7 +549,8 @@ class SecretManagerServiceClient { StatusOr DisableSecretVersion( google::cloud::secretmanager::v1::DisableSecretVersionRequest const& - request); + request, + Options options = {}); /// /// Enables a [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. @@ -525,6 +561,7 @@ class SecretManagerServiceClient { /// /// @param request /// @googleapis_link{google::cloud::secretmanager::v1::EnableSecretVersionRequest,google/cloud/secretmanager/v1/service.proto#L424} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::secretmanager::v1::SecretVersion,google/cloud/secretmanager/v1/resources.proto#L103} /// @@ -535,7 +572,8 @@ class SecretManagerServiceClient { /// StatusOr EnableSecretVersion( google::cloud::secretmanager::v1::EnableSecretVersionRequest const& - request); + request, + Options options = {}); /// /// Destroys a [SecretVersion][google.cloud.secretmanager.v1.SecretVersion]. @@ -547,6 +585,7 @@ class SecretManagerServiceClient { /// /// @param request /// @googleapis_link{google::cloud::secretmanager::v1::DestroySecretVersionRequest,google/cloud/secretmanager/v1/service.proto#L441} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::secretmanager::v1::SecretVersion,google/cloud/secretmanager/v1/resources.proto#L103} /// @@ -558,7 +597,8 @@ class SecretManagerServiceClient { StatusOr DestroySecretVersion( google::cloud::secretmanager::v1::DestroySecretVersionRequest const& - request); + request, + Options options = {}); /// /// Sets the access control policy on the specified secret. Replaces any @@ -571,6 +611,7 @@ class SecretManagerServiceClient { /// /// @param request /// @googleapis_link{google::iam::v1::SetIamPolicyRequest,google/iam/v1/iam_policy.proto#L98} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::v1::Policy,google/iam/v1/policy.proto#L88} /// @@ -580,7 +621,8 @@ class SecretManagerServiceClient { /// @googleapis_reference_link{google/iam/v1/policy.proto#L88} /// StatusOr SetIamPolicy( - google::iam::v1::SetIamPolicyRequest const& request); + google::iam::v1::SetIamPolicyRequest const& request, + Options options = {}); /// /// Gets the access control policy for a secret. @@ -588,6 +630,7 @@ class SecretManagerServiceClient { /// /// @param request /// @googleapis_link{google::iam::v1::GetIamPolicyRequest,google/iam/v1/iam_policy.proto#L113} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::v1::Policy,google/iam/v1/policy.proto#L88} /// @@ -597,7 +640,8 @@ class SecretManagerServiceClient { /// @googleapis_reference_link{google/iam/v1/policy.proto#L88} /// StatusOr GetIamPolicy( - google::iam::v1::GetIamPolicyRequest const& request); + google::iam::v1::GetIamPolicyRequest const& request, + Options options = {}); /// /// Returns permissions that a caller has for the specified secret. @@ -610,6 +654,7 @@ class SecretManagerServiceClient { /// /// @param request /// @googleapis_link{google::iam::v1::TestIamPermissionsRequest,google/iam/v1/iam_policy.proto#L126} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::v1::TestIamPermissionsResponse,google/iam/v1/iam_policy.proto#L141} /// @@ -619,10 +664,12 @@ class SecretManagerServiceClient { /// @googleapis_reference_link{google/iam/v1/iam_policy.proto#L141} /// StatusOr TestIamPermissions( - google::iam::v1::TestIamPermissionsRequest const& request); + google::iam::v1::TestIamPermissionsRequest const& request, + Options options = {}); private: std::shared_ptr connection_; + Options options_; }; GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END diff --git a/google/cloud/spanner/admin/database_admin_client.cc b/google/cloud/spanner/admin/database_admin_client.cc index 0fd9ba3c8c679..b16d151c9bd5a 100644 --- a/google/cloud/spanner/admin/database_admin_client.cc +++ b/google/cloud/spanner/admin/database_admin_client.cc @@ -28,12 +28,16 @@ namespace spanner_admin { GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN DatabaseAdminClient::DatabaseAdminClient( - std::shared_ptr connection) - : connection_(std::move(connection)) {} + std::shared_ptr connection, Options options) + : connection_(std::move(connection)), + options_(spanner_admin_internal::DatabaseAdminDefaultOptions( + std::move(options))) {} DatabaseAdminClient::~DatabaseAdminClient() = default; StreamRange -DatabaseAdminClient::ListDatabases(std::string const& parent) { +DatabaseAdminClient::ListDatabases(std::string const& parent, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::spanner::admin::database::v1::ListDatabasesRequest request; request.set_parent(parent); return connection_->ListDatabases(request); @@ -41,7 +45,10 @@ DatabaseAdminClient::ListDatabases(std::string const& parent) { future> DatabaseAdminClient::CreateDatabase(std::string const& parent, - std::string const& create_statement) { + std::string const& create_statement, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::spanner::admin::database::v1::CreateDatabaseRequest request; request.set_parent(parent); request.set_create_statement(create_statement); @@ -49,7 +56,9 @@ DatabaseAdminClient::CreateDatabase(std::string const& parent, } StatusOr -DatabaseAdminClient::GetDatabase(std::string const& name) { +DatabaseAdminClient::GetDatabase(std::string const& name, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::spanner::admin::database::v1::GetDatabaseRequest request; request.set_name(name); return connection_->GetDatabase(request); @@ -58,28 +67,40 @@ DatabaseAdminClient::GetDatabase(std::string const& name) { future< StatusOr> DatabaseAdminClient::UpdateDatabaseDdl( - std::string const& database, std::vector const& statements) { + std::string const& database, std::vector const& statements, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::spanner::admin::database::v1::UpdateDatabaseDdlRequest request; request.set_database(database); *request.mutable_statements() = {statements.begin(), statements.end()}; return connection_->UpdateDatabaseDdl(request); } -Status DatabaseAdminClient::DropDatabase(std::string const& database) { +Status DatabaseAdminClient::DropDatabase(std::string const& database, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::spanner::admin::database::v1::DropDatabaseRequest request; request.set_database(database); return connection_->DropDatabase(request); } StatusOr -DatabaseAdminClient::GetDatabaseDdl(std::string const& database) { +DatabaseAdminClient::GetDatabaseDdl(std::string const& database, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::spanner::admin::database::v1::GetDatabaseDdlRequest request; request.set_database(database); return connection_->GetDatabaseDdl(request); } StatusOr DatabaseAdminClient::SetIamPolicy( - std::string const& resource, google::iam::v1::Policy const& policy) { + std::string const& resource, google::iam::v1::Policy const& policy, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::iam::v1::SetIamPolicyRequest request; request.set_resource(resource); *request.mutable_policy() = policy; @@ -90,10 +111,11 @@ StatusOr DatabaseAdminClient::SetIamPolicy( std::string const& resource, IamUpdater const& updater, Options options) { internal::CheckExpectedOptions(options, __func__); - options = - spanner_admin_internal::DatabaseAdminDefaultOptions(std::move(options)); - auto backoff_policy = - options.get()->clone(); + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); + auto backoff_policy = internal::CurrentOptions() + .get() + ->clone(); for (;;) { auto recent = GetIamPolicy(resource); if (!recent) { @@ -112,7 +134,9 @@ StatusOr DatabaseAdminClient::SetIamPolicy( } StatusOr DatabaseAdminClient::GetIamPolicy( - std::string const& resource) { + std::string const& resource, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::iam::v1::GetIamPolicyRequest request; request.set_resource(resource); return connection_->GetIamPolicy(request); @@ -120,7 +144,10 @@ StatusOr DatabaseAdminClient::GetIamPolicy( StatusOr DatabaseAdminClient::TestIamPermissions( - std::string const& resource, std::vector const& permissions) { + std::string const& resource, std::vector const& permissions, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::iam::v1::TestIamPermissionsRequest request; request.set_resource(resource); *request.mutable_permissions() = {permissions.begin(), permissions.end()}; @@ -131,7 +158,9 @@ future> DatabaseAdminClient::CreateBackup( std::string const& parent, google::spanner::admin::database::v1::Backup const& backup, - std::string const& backup_id) { + std::string const& backup_id, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::spanner::admin::database::v1::CreateBackupRequest request; request.set_parent(parent); *request.mutable_backup() = backup; @@ -140,7 +169,9 @@ DatabaseAdminClient::CreateBackup( } StatusOr -DatabaseAdminClient::GetBackup(std::string const& name) { +DatabaseAdminClient::GetBackup(std::string const& name, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::spanner::admin::database::v1::GetBackupRequest request; request.set_name(name); return connection_->GetBackup(request); @@ -149,21 +180,28 @@ DatabaseAdminClient::GetBackup(std::string const& name) { StatusOr DatabaseAdminClient::UpdateBackup( google::spanner::admin::database::v1::Backup const& backup, - google::protobuf::FieldMask const& update_mask) { + google::protobuf::FieldMask const& update_mask, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::spanner::admin::database::v1::UpdateBackupRequest request; *request.mutable_backup() = backup; *request.mutable_update_mask() = update_mask; return connection_->UpdateBackup(request); } -Status DatabaseAdminClient::DeleteBackup(std::string const& name) { +Status DatabaseAdminClient::DeleteBackup(std::string const& name, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::spanner::admin::database::v1::DeleteBackupRequest request; request.set_name(name); return connection_->DeleteBackup(request); } StreamRange -DatabaseAdminClient::ListBackups(std::string const& parent) { +DatabaseAdminClient::ListBackups(std::string const& parent, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::spanner::admin::database::v1::ListBackupsRequest request; request.set_parent(parent); return connection_->ListBackups(request); @@ -172,7 +210,10 @@ DatabaseAdminClient::ListBackups(std::string const& parent) { future> DatabaseAdminClient::RestoreDatabase(std::string const& parent, std::string const& database_id, - std::string const& backup) { + std::string const& backup, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::spanner::admin::database::v1::RestoreDatabaseRequest request; request.set_parent(parent); request.set_database_id(database_id); @@ -181,14 +222,20 @@ DatabaseAdminClient::RestoreDatabase(std::string const& parent, } StreamRange -DatabaseAdminClient::ListDatabaseOperations(std::string const& parent) { +DatabaseAdminClient::ListDatabaseOperations(std::string const& parent, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::spanner::admin::database::v1::ListDatabaseOperationsRequest request; request.set_parent(parent); return connection_->ListDatabaseOperations(request); } StreamRange -DatabaseAdminClient::ListBackupOperations(std::string const& parent) { +DatabaseAdminClient::ListBackupOperations(std::string const& parent, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::spanner::admin::database::v1::ListBackupOperationsRequest request; request.set_parent(parent); return connection_->ListBackupOperations(request); @@ -196,20 +243,28 @@ DatabaseAdminClient::ListBackupOperations(std::string const& parent) { StreamRange DatabaseAdminClient::ListDatabases( - google::spanner::admin::database::v1::ListDatabasesRequest request) { + google::spanner::admin::database::v1::ListDatabasesRequest request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->ListDatabases(std::move(request)); } future> DatabaseAdminClient::CreateDatabase( - google::spanner::admin::database::v1::CreateDatabaseRequest const& - request) { + google::spanner::admin::database::v1::CreateDatabaseRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->CreateDatabase(request); } StatusOr DatabaseAdminClient::GetDatabase( - google::spanner::admin::database::v1::GetDatabaseRequest const& request) { + google::spanner::admin::database::v1::GetDatabaseRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->GetDatabase(request); } @@ -217,84 +272,121 @@ future< StatusOr> DatabaseAdminClient::UpdateDatabaseDdl( google::spanner::admin::database::v1::UpdateDatabaseDdlRequest const& - request) { + request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->UpdateDatabaseDdl(request); } Status DatabaseAdminClient::DropDatabase( - google::spanner::admin::database::v1::DropDatabaseRequest const& request) { + google::spanner::admin::database::v1::DropDatabaseRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->DropDatabase(request); } StatusOr DatabaseAdminClient::GetDatabaseDdl( - google::spanner::admin::database::v1::GetDatabaseDdlRequest const& - request) { + google::spanner::admin::database::v1::GetDatabaseDdlRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->GetDatabaseDdl(request); } StatusOr DatabaseAdminClient::SetIamPolicy( - google::iam::v1::SetIamPolicyRequest const& request) { + google::iam::v1::SetIamPolicyRequest const& request, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->SetIamPolicy(request); } StatusOr DatabaseAdminClient::GetIamPolicy( - google::iam::v1::GetIamPolicyRequest const& request) { + google::iam::v1::GetIamPolicyRequest const& request, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->GetIamPolicy(request); } StatusOr DatabaseAdminClient::TestIamPermissions( - google::iam::v1::TestIamPermissionsRequest const& request) { + google::iam::v1::TestIamPermissionsRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->TestIamPermissions(request); } future> DatabaseAdminClient::CreateBackup( - google::spanner::admin::database::v1::CreateBackupRequest const& request) { + google::spanner::admin::database::v1::CreateBackupRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->CreateBackup(request); } StatusOr DatabaseAdminClient::GetBackup( - google::spanner::admin::database::v1::GetBackupRequest const& request) { + google::spanner::admin::database::v1::GetBackupRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->GetBackup(request); } StatusOr DatabaseAdminClient::UpdateBackup( - google::spanner::admin::database::v1::UpdateBackupRequest const& request) { + google::spanner::admin::database::v1::UpdateBackupRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->UpdateBackup(request); } Status DatabaseAdminClient::DeleteBackup( - google::spanner::admin::database::v1::DeleteBackupRequest const& request) { + google::spanner::admin::database::v1::DeleteBackupRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->DeleteBackup(request); } StreamRange DatabaseAdminClient::ListBackups( - google::spanner::admin::database::v1::ListBackupsRequest request) { + google::spanner::admin::database::v1::ListBackupsRequest request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->ListBackups(std::move(request)); } future> DatabaseAdminClient::RestoreDatabase( - google::spanner::admin::database::v1::RestoreDatabaseRequest const& - request) { + google::spanner::admin::database::v1::RestoreDatabaseRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->RestoreDatabase(request); } StreamRange DatabaseAdminClient::ListDatabaseOperations( - google::spanner::admin::database::v1::ListDatabaseOperationsRequest - request) { + google::spanner::admin::database::v1::ListDatabaseOperationsRequest request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->ListDatabaseOperations(std::move(request)); } StreamRange DatabaseAdminClient::ListBackupOperations( - google::spanner::admin::database::v1::ListBackupOperationsRequest request) { + google::spanner::admin::database::v1::ListBackupOperationsRequest request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->ListBackupOperations(std::move(request)); } diff --git a/google/cloud/spanner/admin/database_admin_client.h b/google/cloud/spanner/admin/database_admin_client.h index 3c342bf9a36be..6c30ff1c1c2f4 100644 --- a/google/cloud/spanner/admin/database_admin_client.h +++ b/google/cloud/spanner/admin/database_admin_client.h @@ -68,7 +68,8 @@ GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN class DatabaseAdminClient { public: explicit DatabaseAdminClient( - std::shared_ptr connection); + std::shared_ptr connection, + Options options = {}); ~DatabaseAdminClient(); //@{ @@ -96,6 +97,7 @@ class DatabaseAdminClient { /// /// @param parent Required. The instance whose databases should be listed. /// Values are of the form `projects//instances/`. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::database::v1::Database,google/spanner/admin/database/v1/spanner_database_admin.proto#L326} /// @@ -105,7 +107,7 @@ class DatabaseAdminClient { /// @googleapis_reference_link{google/spanner/admin/database/v1/spanner_database_admin.proto#L326} /// StreamRange ListDatabases( - std::string const& parent); + std::string const& parent, Options options = {}); /// /// Creates a new Cloud Spanner database and starts to prepare it for serving. @@ -126,6 +128,7 @@ class DatabaseAdminClient { /// `[a-z][a-z0-9_\-]*[a-z0-9]` and be between 2 and 30 characters in length. /// If the database ID is a reserved word or if it contains a hyphen, the /// database ID must be enclosed in backticks (`` ` ``). + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::database::v1::Database,google/spanner/admin/database/v1/spanner_database_admin.proto#L326} /// @@ -135,8 +138,8 @@ class DatabaseAdminClient { /// @googleapis_reference_link{google/spanner/admin/database/v1/spanner_database_admin.proto#L326} /// future> - CreateDatabase(std::string const& parent, - std::string const& create_statement); + CreateDatabase(std::string const& parent, std::string const& create_statement, + Options options = {}); /// /// Gets the state of a Cloud Spanner database. @@ -144,6 +147,7 @@ class DatabaseAdminClient { /// @param name Required. The name of the requested database. Values are of /// the form /// `projects//instances//databases/`. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::database::v1::Database,google/spanner/admin/database/v1/spanner_database_admin.proto#L326} /// @@ -153,7 +157,7 @@ class DatabaseAdminClient { /// @googleapis_reference_link{google/spanner/admin/database/v1/spanner_database_admin.proto#L326} /// StatusOr GetDatabase( - std::string const& name); + std::string const& name, Options options = {}); /// /// Updates the schema of a Cloud Spanner database by @@ -167,6 +171,7 @@ class DatabaseAdminClient { /// /// @param database Required. The database to update. /// @param statements Required. DDL statements to be applied to the database. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::database::v1::UpdateDatabaseDdlMetadata,google/spanner/admin/database/v1/spanner_database_admin.proto#L547} /// @@ -178,7 +183,8 @@ class DatabaseAdminClient { future< StatusOr> UpdateDatabaseDdl(std::string const& database, - std::vector const& statements); + std::vector const& statements, + Options options = {}); /// /// Drops (aka deletes) a Cloud Spanner database. @@ -186,11 +192,12 @@ class DatabaseAdminClient { /// `expire_time`. /// /// @param database Required. The database to be dropped. + /// @param options Optional. Operation options. /// /// [google.spanner.admin.database.v1.DropDatabaseRequest]: /// @googleapis_reference_link{google/spanner/admin/database/v1/spanner_database_admin.proto#L579} /// - Status DropDatabase(std::string const& database); + Status DropDatabase(std::string const& database, Options options = {}); /// /// Returns the schema of a Cloud Spanner database as a list of formatted @@ -200,6 +207,7 @@ class DatabaseAdminClient { /// @param database Required. The database whose schema we wish to get. /// Values are of the form /// `projects//instances//databases/` + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::database::v1::GetDatabaseDdlResponse,google/spanner/admin/database/v1/spanner_database_admin.proto#L603} /// @@ -209,7 +217,7 @@ class DatabaseAdminClient { /// @googleapis_reference_link{google/spanner/admin/database/v1/spanner_database_admin.proto#L603} /// StatusOr - GetDatabaseDdl(std::string const& database); + GetDatabaseDdl(std::string const& database, Options options = {}); /// /// Sets the access control policy on a database or backup resource. @@ -228,6 +236,7 @@ class DatabaseAdminClient { /// the policy is limited to a few 10s of KB. An empty policy is a /// valid policy but certain Cloud Platform services (such as Projects) /// might reject them. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::v1::Policy,google/iam/v1/policy.proto#L88} /// @@ -237,7 +246,8 @@ class DatabaseAdminClient { /// @googleapis_reference_link{google/iam/v1/policy.proto#L88} /// StatusOr SetIamPolicy( - std::string const& resource, google::iam::v1::Policy const& policy); + std::string const& resource, google::iam::v1::Policy const& policy, + Options options = {}); /** * Updates the IAM policy for @p resource using an optimistic concurrency @@ -277,6 +287,7 @@ class DatabaseAdminClient { /// @param resource REQUIRED: The resource for which the policy is being /// requested. /// See the operation documentation for the appropriate value for this field. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::v1::Policy,google/iam/v1/policy.proto#L88} /// @@ -285,7 +296,8 @@ class DatabaseAdminClient { /// [google.iam.v1.Policy]: /// @googleapis_reference_link{google/iam/v1/policy.proto#L88} /// - StatusOr GetIamPolicy(std::string const& resource); + StatusOr GetIamPolicy(std::string const& resource, + Options options = {}); /// /// Returns permissions that the caller has on the specified database or @@ -307,6 +319,7 @@ class DatabaseAdminClient { /// wildcards (such as '*' or 'storage.*') are not allowed. For more /// information see /// [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions). + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::v1::TestIamPermissionsResponse,google/iam/v1/iam_policy.proto#L141} /// @@ -316,7 +329,8 @@ class DatabaseAdminClient { /// @googleapis_reference_link{google/iam/v1/iam_policy.proto#L141} /// StatusOr TestIamPermissions( - std::string const& resource, std::vector const& permissions); + std::string const& resource, std::vector const& permissions, + Options options = {}); /// /// Starts creating a new Cloud Spanner Backup. @@ -344,6 +358,7 @@ class DatabaseAdminClient { /// `backup_id` appended to /// `parent` forms the full backup name of the form /// `projects//instances//backups/`. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::database::v1::Backup,google/spanner/admin/database/v1/backup.proto#L36} /// @@ -355,7 +370,7 @@ class DatabaseAdminClient { future> CreateBackup( std::string const& parent, google::spanner::admin::database::v1::Backup const& backup, - std::string const& backup_id); + std::string const& backup_id, Options options = {}); /// /// Gets metadata on a pending or completed @@ -364,6 +379,7 @@ class DatabaseAdminClient { /// @param name Required. Name of the backup. /// Values are of the form /// `projects//instances//backups/`. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::database::v1::Backup,google/spanner/admin/database/v1/backup.proto#L36} /// @@ -373,7 +389,7 @@ class DatabaseAdminClient { /// @googleapis_reference_link{google/spanner/admin/database/v1/backup.proto#L36} /// StatusOr GetBackup( - std::string const& name); + std::string const& name, Options options = {}); /// /// Updates a pending or completed @@ -390,6 +406,7 @@ class DatabaseAdminClient { /// resource, not to the request message. The field mask must always be /// specified; this prevents any future fields from being erased accidentally /// by clients that do not know about them. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::database::v1::Backup,google/spanner/admin/database/v1/backup.proto#L36} /// @@ -400,7 +417,7 @@ class DatabaseAdminClient { /// StatusOr UpdateBackup( google::spanner::admin::database::v1::Backup const& backup, - google::protobuf::FieldMask const& update_mask); + google::protobuf::FieldMask const& update_mask, Options options = {}); /// /// Deletes a pending or completed @@ -409,11 +426,12 @@ class DatabaseAdminClient { /// @param name Required. Name of the backup to delete. /// Values are of the form /// `projects//instances//backups/`. + /// @param options Optional. Operation options. /// /// [google.spanner.admin.database.v1.DeleteBackupRequest]: /// @googleapis_reference_link{google/spanner/admin/database/v1/backup.proto#L215} /// - Status DeleteBackup(std::string const& name); + Status DeleteBackup(std::string const& name, Options options = {}); /// /// Lists completed and pending backups. @@ -423,6 +441,7 @@ class DatabaseAdminClient { /// @param parent Required. The instance to list backups from. Values are of /// the /// form `projects//instances/`. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::database::v1::Backup,google/spanner/admin/database/v1/backup.proto#L36} /// @@ -432,7 +451,7 @@ class DatabaseAdminClient { /// @googleapis_reference_link{google/spanner/admin/database/v1/backup.proto#L36} /// StreamRange ListBackups( - std::string const& parent); + std::string const& parent, Options options = {}); /// /// Create a new database by restoring from a completed backup. The new @@ -466,6 +485,7 @@ class DatabaseAdminClient { /// @param backup Name of the backup from which to restore. Values are of /// the form /// `projects//instances//backups/`. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::database::v1::Database,google/spanner/admin/database/v1/spanner_database_admin.proto#L326} /// @@ -476,7 +496,7 @@ class DatabaseAdminClient { /// future> RestoreDatabase(std::string const& parent, std::string const& database_id, - std::string const& backup); + std::string const& backup, Options options = {}); /// /// Lists database [longrunning-operations][google.longrunning.Operation]. @@ -490,6 +510,7 @@ class DatabaseAdminClient { /// /// @param parent Required. The instance of the database operations. /// Values are of the form `projects//instances/`. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::longrunning::Operation,google/longrunning/operations.proto#L128} /// @@ -499,7 +520,7 @@ class DatabaseAdminClient { /// @googleapis_reference_link{google/longrunning/operations.proto#L128} /// StreamRange ListDatabaseOperations( - std::string const& parent); + std::string const& parent, Options options = {}); /// /// Lists the backup [long-running operations][google.longrunning.Operation] @@ -516,6 +537,7 @@ class DatabaseAdminClient { /// @param parent Required. The instance of the backup operations. Values are /// of /// the form `projects//instances/`. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::longrunning::Operation,google/longrunning/operations.proto#L128} /// @@ -525,13 +547,14 @@ class DatabaseAdminClient { /// @googleapis_reference_link{google/longrunning/operations.proto#L128} /// StreamRange ListBackupOperations( - std::string const& parent); + std::string const& parent, Options options = {}); /// /// Lists Cloud Spanner databases. /// /// @param request /// @googleapis_link{google::spanner::admin::database::v1::ListDatabasesRequest,google/spanner/admin/database/v1/spanner_database_admin.proto#L413} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::database::v1::Database,google/spanner/admin/database/v1/spanner_database_admin.proto#L326} /// @@ -541,7 +564,8 @@ class DatabaseAdminClient { /// @googleapis_reference_link{google/spanner/admin/database/v1/spanner_database_admin.proto#L326} /// StreamRange ListDatabases( - google::spanner::admin::database::v1::ListDatabasesRequest request); + google::spanner::admin::database::v1::ListDatabasesRequest request, + Options options = {}); /// /// Creates a new Cloud Spanner database and starts to prepare it for serving. @@ -555,6 +579,7 @@ class DatabaseAdminClient { /// /// @param request /// @googleapis_link{google::spanner::admin::database::v1::CreateDatabaseRequest,google/spanner/admin/database/v1/spanner_database_admin.proto#L445} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::database::v1::Database,google/spanner/admin/database/v1/spanner_database_admin.proto#L326} /// @@ -566,13 +591,15 @@ class DatabaseAdminClient { future> CreateDatabase( google::spanner::admin::database::v1::CreateDatabaseRequest const& - request); + request, + Options options = {}); /// /// Gets the state of a Cloud Spanner database. /// /// @param request /// @googleapis_link{google::spanner::admin::database::v1::GetDatabaseRequest,google/spanner/admin/database/v1/spanner_database_admin.proto#L484} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::database::v1::Database,google/spanner/admin/database/v1/spanner_database_admin.proto#L326} /// @@ -582,7 +609,8 @@ class DatabaseAdminClient { /// @googleapis_reference_link{google/spanner/admin/database/v1/spanner_database_admin.proto#L326} /// StatusOr GetDatabase( - google::spanner::admin::database::v1::GetDatabaseRequest const& request); + google::spanner::admin::database::v1::GetDatabaseRequest const& request, + Options options = {}); /// /// Updates the schema of a Cloud Spanner database by @@ -596,6 +624,7 @@ class DatabaseAdminClient { /// /// @param request /// @googleapis_link{google::spanner::admin::database::v1::UpdateDatabaseDdlRequest,google/spanner/admin/database/v1/spanner_database_admin.proto#L511} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::database::v1::UpdateDatabaseDdlMetadata,google/spanner/admin/database/v1/spanner_database_admin.proto#L547} /// @@ -608,7 +637,8 @@ class DatabaseAdminClient { StatusOr> UpdateDatabaseDdl( google::spanner::admin::database::v1::UpdateDatabaseDdlRequest const& - request); + request, + Options options = {}); /// /// Drops (aka deletes) a Cloud Spanner database. @@ -617,12 +647,14 @@ class DatabaseAdminClient { /// /// @param request /// @googleapis_link{google::spanner::admin::database::v1::DropDatabaseRequest,google/spanner/admin/database/v1/spanner_database_admin.proto#L579} + /// @param options Optional. Operation options. /// /// [google.spanner.admin.database.v1.DropDatabaseRequest]: /// @googleapis_reference_link{google/spanner/admin/database/v1/spanner_database_admin.proto#L579} /// Status DropDatabase( - google::spanner::admin::database::v1::DropDatabaseRequest const& request); + google::spanner::admin::database::v1::DropDatabaseRequest const& request, + Options options = {}); /// /// Returns the schema of a Cloud Spanner database as a list of formatted @@ -631,6 +663,7 @@ class DatabaseAdminClient { /// /// @param request /// @googleapis_link{google::spanner::admin::database::v1::GetDatabaseDdlRequest,google/spanner/admin/database/v1/spanner_database_admin.proto#L590} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::database::v1::GetDatabaseDdlResponse,google/spanner/admin/database/v1/spanner_database_admin.proto#L603} /// @@ -642,7 +675,8 @@ class DatabaseAdminClient { StatusOr GetDatabaseDdl( google::spanner::admin::database::v1::GetDatabaseDdlRequest const& - request); + request, + Options options = {}); /// /// Sets the access control policy on a database or backup resource. @@ -655,6 +689,7 @@ class DatabaseAdminClient { /// /// @param request /// @googleapis_link{google::iam::v1::SetIamPolicyRequest,google/iam/v1/iam_policy.proto#L98} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::v1::Policy,google/iam/v1/policy.proto#L88} /// @@ -664,7 +699,8 @@ class DatabaseAdminClient { /// @googleapis_reference_link{google/iam/v1/policy.proto#L88} /// StatusOr SetIamPolicy( - google::iam::v1::SetIamPolicyRequest const& request); + google::iam::v1::SetIamPolicyRequest const& request, + Options options = {}); /// /// Gets the access control policy for a database or backup resource. @@ -678,6 +714,7 @@ class DatabaseAdminClient { /// /// @param request /// @googleapis_link{google::iam::v1::GetIamPolicyRequest,google/iam/v1/iam_policy.proto#L113} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::v1::Policy,google/iam/v1/policy.proto#L88} /// @@ -687,7 +724,8 @@ class DatabaseAdminClient { /// @googleapis_reference_link{google/iam/v1/policy.proto#L88} /// StatusOr GetIamPolicy( - google::iam::v1::GetIamPolicyRequest const& request); + google::iam::v1::GetIamPolicyRequest const& request, + Options options = {}); /// /// Returns permissions that the caller has on the specified database or @@ -703,6 +741,7 @@ class DatabaseAdminClient { /// /// @param request /// @googleapis_link{google::iam::v1::TestIamPermissionsRequest,google/iam/v1/iam_policy.proto#L126} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::v1::TestIamPermissionsResponse,google/iam/v1/iam_policy.proto#L141} /// @@ -712,7 +751,8 @@ class DatabaseAdminClient { /// @googleapis_reference_link{google/iam/v1/iam_policy.proto#L141} /// StatusOr TestIamPermissions( - google::iam::v1::TestIamPermissionsRequest const& request); + google::iam::v1::TestIamPermissionsRequest const& request, + Options options = {}); /// /// Starts creating a new Cloud Spanner Backup. @@ -730,6 +770,7 @@ class DatabaseAdminClient { /// /// @param request /// @googleapis_link{google::spanner::admin::database::v1::CreateBackupRequest,google/spanner/admin/database/v1/backup.proto#L123} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::database::v1::Backup,google/spanner/admin/database/v1/backup.proto#L36} /// @@ -739,7 +780,8 @@ class DatabaseAdminClient { /// @googleapis_reference_link{google/spanner/admin/database/v1/backup.proto#L36} /// future> CreateBackup( - google::spanner::admin::database::v1::CreateBackupRequest const& request); + google::spanner::admin::database::v1::CreateBackupRequest const& request, + Options options = {}); /// /// Gets metadata on a pending or completed @@ -747,6 +789,7 @@ class DatabaseAdminClient { /// /// @param request /// @googleapis_link{google::spanner::admin::database::v1::GetBackupRequest,google/spanner/admin/database/v1/backup.proto#L202} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::database::v1::Backup,google/spanner/admin/database/v1/backup.proto#L36} /// @@ -756,7 +799,8 @@ class DatabaseAdminClient { /// @googleapis_reference_link{google/spanner/admin/database/v1/backup.proto#L36} /// StatusOr GetBackup( - google::spanner::admin::database::v1::GetBackupRequest const& request); + google::spanner::admin::database::v1::GetBackupRequest const& request, + Options options = {}); /// /// Updates a pending or completed @@ -764,6 +808,7 @@ class DatabaseAdminClient { /// /// @param request /// @googleapis_link{google::spanner::admin::database::v1::UpdateBackupRequest,google/spanner/admin/database/v1/backup.proto#L186} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::database::v1::Backup,google/spanner/admin/database/v1/backup.proto#L36} /// @@ -773,7 +818,8 @@ class DatabaseAdminClient { /// @googleapis_reference_link{google/spanner/admin/database/v1/backup.proto#L36} /// StatusOr UpdateBackup( - google::spanner::admin::database::v1::UpdateBackupRequest const& request); + google::spanner::admin::database::v1::UpdateBackupRequest const& request, + Options options = {}); /// /// Deletes a pending or completed @@ -781,12 +827,14 @@ class DatabaseAdminClient { /// /// @param request /// @googleapis_link{google::spanner::admin::database::v1::DeleteBackupRequest,google/spanner/admin/database/v1/backup.proto#L215} + /// @param options Optional. Operation options. /// /// [google.spanner.admin.database.v1.DeleteBackupRequest]: /// @googleapis_reference_link{google/spanner/admin/database/v1/backup.proto#L215} /// Status DeleteBackup( - google::spanner::admin::database::v1::DeleteBackupRequest const& request); + google::spanner::admin::database::v1::DeleteBackupRequest const& request, + Options options = {}); /// /// Lists completed and pending backups. @@ -795,6 +843,7 @@ class DatabaseAdminClient { /// /// @param request /// @googleapis_link{google::spanner::admin::database::v1::ListBackupsRequest,google/spanner/admin/database/v1/backup.proto#L228} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::database::v1::Backup,google/spanner/admin/database/v1/backup.proto#L36} /// @@ -804,7 +853,8 @@ class DatabaseAdminClient { /// @googleapis_reference_link{google/spanner/admin/database/v1/backup.proto#L36} /// StreamRange ListBackups( - google::spanner::admin::database::v1::ListBackupsRequest request); + google::spanner::admin::database::v1::ListBackupsRequest request, + Options options = {}); /// /// Create a new database by restoring from a completed backup. The new @@ -827,6 +877,7 @@ class DatabaseAdminClient { /// /// @param request /// @googleapis_link{google::spanner::admin::database::v1::RestoreDatabaseRequest,google/spanner/admin/database/v1/spanner_database_admin.proto#L692} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::database::v1::Database,google/spanner/admin/database/v1/spanner_database_admin.proto#L326} /// @@ -838,7 +889,8 @@ class DatabaseAdminClient { future> RestoreDatabase( google::spanner::admin::database::v1::RestoreDatabaseRequest const& - request); + request, + Options options = {}); /// /// Lists database [longrunning-operations][google.longrunning.Operation]. @@ -852,6 +904,7 @@ class DatabaseAdminClient { /// /// @param request /// @googleapis_link{google::spanner::admin::database::v1::ListDatabaseOperationsRequest,google/spanner/admin/database/v1/spanner_database_admin.proto#L611} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::longrunning::Operation,google/longrunning/operations.proto#L128} /// @@ -862,7 +915,8 @@ class DatabaseAdminClient { /// StreamRange ListDatabaseOperations( google::spanner::admin::database::v1::ListDatabaseOperationsRequest - request); + request, + Options options = {}); /// /// Lists the backup [long-running operations][google.longrunning.Operation] @@ -878,6 +932,7 @@ class DatabaseAdminClient { /// /// @param request /// @googleapis_link{google::spanner::admin::database::v1::ListBackupOperationsRequest,google/spanner/admin/database/v1/backup.proto#L300} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::longrunning::Operation,google/longrunning/operations.proto#L128} /// @@ -887,11 +942,12 @@ class DatabaseAdminClient { /// @googleapis_reference_link{google/longrunning/operations.proto#L128} /// StreamRange ListBackupOperations( - google::spanner::admin::database::v1::ListBackupOperationsRequest - request); + google::spanner::admin::database::v1::ListBackupOperationsRequest request, + Options options = {}); private: std::shared_ptr connection_; + Options options_; }; GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END diff --git a/google/cloud/spanner/admin/instance_admin_client.cc b/google/cloud/spanner/admin/instance_admin_client.cc index a13b6a8529ada..9b63f43cf367a 100644 --- a/google/cloud/spanner/admin/instance_admin_client.cc +++ b/google/cloud/spanner/admin/instance_admin_client.cc @@ -28,33 +28,45 @@ namespace spanner_admin { GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN InstanceAdminClient::InstanceAdminClient( - std::shared_ptr connection) - : connection_(std::move(connection)) {} + std::shared_ptr connection, Options options) + : connection_(std::move(connection)), + options_(spanner_admin_internal::InstanceAdminDefaultOptions( + std::move(options))) {} InstanceAdminClient::~InstanceAdminClient() = default; StreamRange -InstanceAdminClient::ListInstanceConfigs(std::string const& parent) { +InstanceAdminClient::ListInstanceConfigs(std::string const& parent, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::spanner::admin::instance::v1::ListInstanceConfigsRequest request; request.set_parent(parent); return connection_->ListInstanceConfigs(request); } StatusOr -InstanceAdminClient::GetInstanceConfig(std::string const& name) { +InstanceAdminClient::GetInstanceConfig(std::string const& name, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::spanner::admin::instance::v1::GetInstanceConfigRequest request; request.set_name(name); return connection_->GetInstanceConfig(request); } StreamRange -InstanceAdminClient::ListInstances(std::string const& parent) { +InstanceAdminClient::ListInstances(std::string const& parent, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::spanner::admin::instance::v1::ListInstancesRequest request; request.set_parent(parent); return connection_->ListInstances(request); } StatusOr -InstanceAdminClient::GetInstance(std::string const& name) { +InstanceAdminClient::GetInstance(std::string const& name, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::spanner::admin::instance::v1::GetInstanceRequest request; request.set_name(name); return connection_->GetInstance(request); @@ -63,7 +75,10 @@ InstanceAdminClient::GetInstance(std::string const& name) { future> InstanceAdminClient::CreateInstance( std::string const& parent, std::string const& instance_id, - google::spanner::admin::instance::v1::Instance const& instance) { + google::spanner::admin::instance::v1::Instance const& instance, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::spanner::admin::instance::v1::CreateInstanceRequest request; request.set_parent(parent); request.set_instance_id(instance_id); @@ -74,21 +89,29 @@ InstanceAdminClient::CreateInstance( future> InstanceAdminClient::UpdateInstance( google::spanner::admin::instance::v1::Instance const& instance, - google::protobuf::FieldMask const& field_mask) { + google::protobuf::FieldMask const& field_mask, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::spanner::admin::instance::v1::UpdateInstanceRequest request; *request.mutable_instance() = instance; *request.mutable_field_mask() = field_mask; return connection_->UpdateInstance(request); } -Status InstanceAdminClient::DeleteInstance(std::string const& name) { +Status InstanceAdminClient::DeleteInstance(std::string const& name, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::spanner::admin::instance::v1::DeleteInstanceRequest request; request.set_name(name); return connection_->DeleteInstance(request); } StatusOr InstanceAdminClient::SetIamPolicy( - std::string const& resource, google::iam::v1::Policy const& policy) { + std::string const& resource, google::iam::v1::Policy const& policy, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::iam::v1::SetIamPolicyRequest request; request.set_resource(resource); *request.mutable_policy() = policy; @@ -99,10 +122,11 @@ StatusOr InstanceAdminClient::SetIamPolicy( std::string const& resource, IamUpdater const& updater, Options options) { internal::CheckExpectedOptions(options, __func__); - options = - spanner_admin_internal::InstanceAdminDefaultOptions(std::move(options)); - auto backoff_policy = - options.get()->clone(); + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); + auto backoff_policy = internal::CurrentOptions() + .get() + ->clone(); for (;;) { auto recent = GetIamPolicy(resource); if (!recent) { @@ -121,7 +145,9 @@ StatusOr InstanceAdminClient::SetIamPolicy( } StatusOr InstanceAdminClient::GetIamPolicy( - std::string const& resource) { + std::string const& resource, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::iam::v1::GetIamPolicyRequest request; request.set_resource(resource); return connection_->GetIamPolicy(request); @@ -129,7 +155,10 @@ StatusOr InstanceAdminClient::GetIamPolicy( StatusOr InstanceAdminClient::TestIamPermissions( - std::string const& resource, std::vector const& permissions) { + std::string const& resource, std::vector const& permissions, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::iam::v1::TestIamPermissionsRequest request; request.set_resource(resource); *request.mutable_permissions() = {permissions.begin(), permissions.end()}; @@ -138,62 +167,87 @@ InstanceAdminClient::TestIamPermissions( StreamRange InstanceAdminClient::ListInstanceConfigs( - google::spanner::admin::instance::v1::ListInstanceConfigsRequest request) { + google::spanner::admin::instance::v1::ListInstanceConfigsRequest request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->ListInstanceConfigs(std::move(request)); } StatusOr InstanceAdminClient::GetInstanceConfig( google::spanner::admin::instance::v1::GetInstanceConfigRequest const& - request) { + request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->GetInstanceConfig(request); } StreamRange InstanceAdminClient::ListInstances( - google::spanner::admin::instance::v1::ListInstancesRequest request) { + google::spanner::admin::instance::v1::ListInstancesRequest request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->ListInstances(std::move(request)); } StatusOr InstanceAdminClient::GetInstance( - google::spanner::admin::instance::v1::GetInstanceRequest const& request) { + google::spanner::admin::instance::v1::GetInstanceRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->GetInstance(request); } future> InstanceAdminClient::CreateInstance( - google::spanner::admin::instance::v1::CreateInstanceRequest const& - request) { + google::spanner::admin::instance::v1::CreateInstanceRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->CreateInstance(request); } future> InstanceAdminClient::UpdateInstance( - google::spanner::admin::instance::v1::UpdateInstanceRequest const& - request) { + google::spanner::admin::instance::v1::UpdateInstanceRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->UpdateInstance(request); } Status InstanceAdminClient::DeleteInstance( - google::spanner::admin::instance::v1::DeleteInstanceRequest const& - request) { + google::spanner::admin::instance::v1::DeleteInstanceRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->DeleteInstance(request); } StatusOr InstanceAdminClient::SetIamPolicy( - google::iam::v1::SetIamPolicyRequest const& request) { + google::iam::v1::SetIamPolicyRequest const& request, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->SetIamPolicy(request); } StatusOr InstanceAdminClient::GetIamPolicy( - google::iam::v1::GetIamPolicyRequest const& request) { + google::iam::v1::GetIamPolicyRequest const& request, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->GetIamPolicy(request); } StatusOr InstanceAdminClient::TestIamPermissions( - google::iam::v1::TestIamPermissionsRequest const& request) { + google::iam::v1::TestIamPermissionsRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->TestIamPermissions(request); } diff --git a/google/cloud/spanner/admin/instance_admin_client.h b/google/cloud/spanner/admin/instance_admin_client.h index 4b942df4e3e5c..024d82068e554 100644 --- a/google/cloud/spanner/admin/instance_admin_client.h +++ b/google/cloud/spanner/admin/instance_admin_client.h @@ -84,7 +84,8 @@ GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN class InstanceAdminClient { public: explicit InstanceAdminClient( - std::shared_ptr connection); + std::shared_ptr connection, + Options options = {}); ~InstanceAdminClient(); //@{ @@ -114,6 +115,7 @@ class InstanceAdminClient { /// supported instance /// configurations is requested. Values are of the form /// `projects/`. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::instance::v1::InstanceConfig,google/spanner/admin/instance/v1/spanner_instance_admin.proto#L304} /// @@ -123,7 +125,7 @@ class InstanceAdminClient { /// @googleapis_reference_link{google/spanner/admin/instance/v1/spanner_instance_admin.proto#L304} /// StreamRange - ListInstanceConfigs(std::string const& parent); + ListInstanceConfigs(std::string const& parent, Options options = {}); /// /// Gets information about a particular instance configuration. @@ -131,6 +133,7 @@ class InstanceAdminClient { /// @param name Required. The name of the requested instance configuration. /// Values are of /// the form `projects//instanceConfigs/`. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::instance::v1::InstanceConfig,google/spanner/admin/instance/v1/spanner_instance_admin.proto#L304} /// @@ -140,7 +143,7 @@ class InstanceAdminClient { /// @googleapis_reference_link{google/spanner/admin/instance/v1/spanner_instance_admin.proto#L304} /// StatusOr - GetInstanceConfig(std::string const& name); + GetInstanceConfig(std::string const& name, Options options = {}); /// /// Lists all instances in the given project. @@ -148,6 +151,7 @@ class InstanceAdminClient { /// @param parent Required. The name of the project for which a list of /// instances is /// requested. Values are of the form `projects/`. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::instance::v1::Instance,google/spanner/admin/instance/v1/spanner_instance_admin.proto#L328} /// @@ -157,7 +161,7 @@ class InstanceAdminClient { /// @googleapis_reference_link{google/spanner/admin/instance/v1/spanner_instance_admin.proto#L328} /// StreamRange ListInstances( - std::string const& parent); + std::string const& parent, Options options = {}); /// /// Gets information about a particular instance. @@ -165,6 +169,7 @@ class InstanceAdminClient { /// @param name Required. The name of the requested instance. Values are of /// the form /// `projects//instances/`. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::instance::v1::Instance,google/spanner/admin/instance/v1/spanner_instance_admin.proto#L328} /// @@ -174,7 +179,7 @@ class InstanceAdminClient { /// @googleapis_reference_link{google/spanner/admin/instance/v1/spanner_instance_admin.proto#L328} /// StatusOr GetInstance( - std::string const& name); + std::string const& name, Options options = {}); /// /// Creates an instance and begins preparing it to begin serving. The @@ -222,6 +227,7 @@ class InstanceAdminClient { /// @param instance Required. The instance to create. The name may be /// omitted, but if /// specified must be `/instances/`. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::instance::v1::Instance,google/spanner/admin/instance/v1/spanner_instance_admin.proto#L328} /// @@ -231,9 +237,9 @@ class InstanceAdminClient { /// @googleapis_reference_link{google/spanner/admin/instance/v1/spanner_instance_admin.proto#L328} /// future> - CreateInstance( - std::string const& parent, std::string const& instance_id, - google::spanner::admin::instance::v1::Instance const& instance); + CreateInstance(std::string const& parent, std::string const& instance_id, + google::spanner::admin::instance::v1::Instance const& instance, + Options options = {}); /// /// Updates an instance, and begins allocating or releasing resources @@ -287,6 +293,7 @@ class InstanceAdminClient { /// The field mask must always be specified; this prevents any future fields /// in [Instance][google.spanner.admin.instance.v1.Instance] from being /// erased accidentally by clients that do not know about them. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::instance::v1::Instance,google/spanner/admin/instance/v1/spanner_instance_admin.proto#L328} /// @@ -297,7 +304,8 @@ class InstanceAdminClient { /// future> UpdateInstance(google::spanner::admin::instance::v1::Instance const& instance, - google::protobuf::FieldMask const& field_mask); + google::protobuf::FieldMask const& field_mask, + Options options = {}); /// /// Deletes an instance. @@ -315,11 +323,12 @@ class InstanceAdminClient { /// @param name Required. The name of the instance to be deleted. Values are /// of the form /// `projects//instances/` + /// @param options Optional. Operation options. /// /// [google.spanner.admin.instance.v1.DeleteInstanceRequest]: /// @googleapis_reference_link{google/spanner/admin/instance/v1/spanner_instance_admin.proto#L565} /// - Status DeleteInstance(std::string const& name); + Status DeleteInstance(std::string const& name, Options options = {}); /// /// Sets the access control policy on an instance resource. Replaces any @@ -336,6 +345,7 @@ class InstanceAdminClient { /// the policy is limited to a few 10s of KB. An empty policy is a /// valid policy but certain Cloud Platform services (such as Projects) /// might reject them. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::v1::Policy,google/iam/v1/policy.proto#L88} /// @@ -345,7 +355,8 @@ class InstanceAdminClient { /// @googleapis_reference_link{google/iam/v1/policy.proto#L88} /// StatusOr SetIamPolicy( - std::string const& resource, google::iam::v1::Policy const& policy); + std::string const& resource, google::iam::v1::Policy const& policy, + Options options = {}); /** * Updates the IAM policy for @p resource using an optimistic concurrency @@ -382,6 +393,7 @@ class InstanceAdminClient { /// @param resource REQUIRED: The resource for which the policy is being /// requested. /// See the operation documentation for the appropriate value for this field. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::v1::Policy,google/iam/v1/policy.proto#L88} /// @@ -390,7 +402,8 @@ class InstanceAdminClient { /// [google.iam.v1.Policy]: /// @googleapis_reference_link{google/iam/v1/policy.proto#L88} /// - StatusOr GetIamPolicy(std::string const& resource); + StatusOr GetIamPolicy(std::string const& resource, + Options options = {}); /// /// Returns permissions that the caller has on the specified instance @@ -409,6 +422,7 @@ class InstanceAdminClient { /// wildcards (such as '*' or 'storage.*') are not allowed. For more /// information see /// [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions). + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::v1::TestIamPermissionsResponse,google/iam/v1/iam_policy.proto#L141} /// @@ -418,13 +432,15 @@ class InstanceAdminClient { /// @googleapis_reference_link{google/iam/v1/iam_policy.proto#L141} /// StatusOr TestIamPermissions( - std::string const& resource, std::vector const& permissions); + std::string const& resource, std::vector const& permissions, + Options options = {}); /// /// Lists the supported instance configurations for a given project. /// /// @param request /// @googleapis_link{google::spanner::admin::instance::v1::ListInstanceConfigsRequest,google/spanner/admin/instance/v1/spanner_instance_admin.proto#L415} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::instance::v1::InstanceConfig,google/spanner/admin/instance/v1/spanner_instance_admin.proto#L304} /// @@ -435,13 +451,15 @@ class InstanceAdminClient { /// StreamRange ListInstanceConfigs( - google::spanner::admin::instance::v1::ListInstanceConfigsRequest request); + google::spanner::admin::instance::v1::ListInstanceConfigsRequest request, + Options options = {}); /// /// Gets information about a particular instance configuration. /// /// @param request /// @googleapis_link{google::spanner::admin::instance::v1::GetInstanceConfigRequest,google/spanner/admin/instance/v1/spanner_instance_admin.proto#L449} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::instance::v1::InstanceConfig,google/spanner/admin/instance/v1/spanner_instance_admin.proto#L304} /// @@ -453,13 +471,15 @@ class InstanceAdminClient { StatusOr GetInstanceConfig( google::spanner::admin::instance::v1::GetInstanceConfigRequest const& - request); + request, + Options options = {}); /// /// Lists all instances in the given project. /// /// @param request /// @googleapis_link{google::spanner::admin::instance::v1::ListInstancesRequest,google/spanner/admin/instance/v1/spanner_instance_admin.proto#L499} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::instance::v1::Instance,google/spanner/admin/instance/v1/spanner_instance_admin.proto#L328} /// @@ -469,13 +489,15 @@ class InstanceAdminClient { /// @googleapis_reference_link{google/spanner/admin/instance/v1/spanner_instance_admin.proto#L328} /// StreamRange ListInstances( - google::spanner::admin::instance::v1::ListInstancesRequest request); + google::spanner::admin::instance::v1::ListInstancesRequest request, + Options options = {}); /// /// Gets information about a particular instance. /// /// @param request /// @googleapis_link{google::spanner::admin::instance::v1::GetInstanceRequest,google/spanner/admin/instance/v1/spanner_instance_admin.proto#L461} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::instance::v1::Instance,google/spanner/admin/instance/v1/spanner_instance_admin.proto#L328} /// @@ -485,7 +507,8 @@ class InstanceAdminClient { /// @googleapis_reference_link{google/spanner/admin/instance/v1/spanner_instance_admin.proto#L328} /// StatusOr GetInstance( - google::spanner::admin::instance::v1::GetInstanceRequest const& request); + google::spanner::admin::instance::v1::GetInstanceRequest const& request, + Options options = {}); /// /// Creates an instance and begins preparing it to begin serving. The @@ -525,6 +548,7 @@ class InstanceAdminClient { /// /// @param request /// @googleapis_link{google::spanner::admin::instance::v1::CreateInstanceRequest,google/spanner/admin/instance/v1/spanner_instance_admin.proto#L478} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::instance::v1::Instance,google/spanner/admin/instance/v1/spanner_instance_admin.proto#L328} /// @@ -536,7 +560,8 @@ class InstanceAdminClient { future> CreateInstance( google::spanner::admin::instance::v1::CreateInstanceRequest const& - request); + request, + Options options = {}); /// /// Updates an instance, and begins allocating or releasing resources @@ -582,6 +607,7 @@ class InstanceAdminClient { /// /// @param request /// @googleapis_link{google::spanner::admin::instance::v1::UpdateInstanceRequest,google/spanner/admin/instance/v1/spanner_instance_admin.proto#L552} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::spanner::admin::instance::v1::Instance,google/spanner/admin/instance/v1/spanner_instance_admin.proto#L328} /// @@ -593,7 +619,8 @@ class InstanceAdminClient { future> UpdateInstance( google::spanner::admin::instance::v1::UpdateInstanceRequest const& - request); + request, + Options options = {}); /// /// Deletes an instance. @@ -610,13 +637,15 @@ class InstanceAdminClient { /// /// @param request /// @googleapis_link{google::spanner::admin::instance::v1::DeleteInstanceRequest,google/spanner/admin/instance/v1/spanner_instance_admin.proto#L565} + /// @param options Optional. Operation options. /// /// [google.spanner.admin.instance.v1.DeleteInstanceRequest]: /// @googleapis_reference_link{google/spanner/admin/instance/v1/spanner_instance_admin.proto#L565} /// Status DeleteInstance( google::spanner::admin::instance::v1::DeleteInstanceRequest const& - request); + request, + Options options = {}); /// /// Sets the access control policy on an instance resource. Replaces any @@ -627,6 +656,7 @@ class InstanceAdminClient { /// /// @param request /// @googleapis_link{google::iam::v1::SetIamPolicyRequest,google/iam/v1/iam_policy.proto#L98} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::v1::Policy,google/iam/v1/policy.proto#L88} /// @@ -636,7 +666,8 @@ class InstanceAdminClient { /// @googleapis_reference_link{google/iam/v1/policy.proto#L88} /// StatusOr SetIamPolicy( - google::iam::v1::SetIamPolicyRequest const& request); + google::iam::v1::SetIamPolicyRequest const& request, + Options options = {}); /// /// Gets the access control policy for an instance resource. Returns an empty @@ -647,6 +678,7 @@ class InstanceAdminClient { /// /// @param request /// @googleapis_link{google::iam::v1::GetIamPolicyRequest,google/iam/v1/iam_policy.proto#L113} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::v1::Policy,google/iam/v1/policy.proto#L88} /// @@ -656,7 +688,8 @@ class InstanceAdminClient { /// @googleapis_reference_link{google/iam/v1/policy.proto#L88} /// StatusOr GetIamPolicy( - google::iam::v1::GetIamPolicyRequest const& request); + google::iam::v1::GetIamPolicyRequest const& request, + Options options = {}); /// /// Returns permissions that the caller has on the specified instance @@ -669,6 +702,7 @@ class InstanceAdminClient { /// /// @param request /// @googleapis_link{google::iam::v1::TestIamPermissionsRequest,google/iam/v1/iam_policy.proto#L126} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::v1::TestIamPermissionsResponse,google/iam/v1/iam_policy.proto#L141} /// @@ -678,10 +712,12 @@ class InstanceAdminClient { /// @googleapis_reference_link{google/iam/v1/iam_policy.proto#L141} /// StatusOr TestIamPermissions( - google::iam::v1::TestIamPermissionsRequest const& request); + google::iam::v1::TestIamPermissionsRequest const& request, + Options options = {}); private: std::shared_ptr connection_; + Options options_; }; GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END diff --git a/google/cloud/tasks/cloud_tasks_client.cc b/google/cloud/tasks/cloud_tasks_client.cc index 0243f6cb64e54..fa039f6f199e1 100644 --- a/google/cloud/tasks/cloud_tasks_client.cc +++ b/google/cloud/tasks/cloud_tasks_client.cc @@ -28,26 +28,34 @@ namespace tasks { GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN CloudTasksClient::CloudTasksClient( - std::shared_ptr connection) - : connection_(std::move(connection)) {} + std::shared_ptr connection, Options options) + : connection_(std::move(connection)), + options_(tasks_internal::CloudTasksDefaultOptions(std::move(options))) {} CloudTasksClient::~CloudTasksClient() = default; StreamRange CloudTasksClient::ListQueues( - std::string const& parent) { + std::string const& parent, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::tasks::v2::ListQueuesRequest request; request.set_parent(parent); return connection_->ListQueues(request); } StatusOr CloudTasksClient::GetQueue( - std::string const& name) { + std::string const& name, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::tasks::v2::GetQueueRequest request; request.set_name(name); return connection_->GetQueue(request); } StatusOr CloudTasksClient::CreateQueue( - std::string const& parent, google::cloud::tasks::v2::Queue const& queue) { + std::string const& parent, google::cloud::tasks::v2::Queue const& queue, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::tasks::v2::CreateQueueRequest request; request.set_parent(parent); *request.mutable_queue() = queue; @@ -56,49 +64,64 @@ StatusOr CloudTasksClient::CreateQueue( StatusOr CloudTasksClient::UpdateQueue( google::cloud::tasks::v2::Queue const& queue, - google::protobuf::FieldMask const& update_mask) { + google::protobuf::FieldMask const& update_mask, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::tasks::v2::UpdateQueueRequest request; *request.mutable_queue() = queue; *request.mutable_update_mask() = update_mask; return connection_->UpdateQueue(request); } -Status CloudTasksClient::DeleteQueue(std::string const& name) { +Status CloudTasksClient::DeleteQueue(std::string const& name, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::tasks::v2::DeleteQueueRequest request; request.set_name(name); return connection_->DeleteQueue(request); } StatusOr CloudTasksClient::PurgeQueue( - std::string const& name) { + std::string const& name, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::tasks::v2::PurgeQueueRequest request; request.set_name(name); return connection_->PurgeQueue(request); } StatusOr CloudTasksClient::PauseQueue( - std::string const& name) { + std::string const& name, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::tasks::v2::PauseQueueRequest request; request.set_name(name); return connection_->PauseQueue(request); } StatusOr CloudTasksClient::ResumeQueue( - std::string const& name) { + std::string const& name, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::tasks::v2::ResumeQueueRequest request; request.set_name(name); return connection_->ResumeQueue(request); } StatusOr CloudTasksClient::GetIamPolicy( - std::string const& resource) { + std::string const& resource, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::iam::v1::GetIamPolicyRequest request; request.set_resource(resource); return connection_->GetIamPolicy(request); } StatusOr CloudTasksClient::SetIamPolicy( - std::string const& resource, google::iam::v1::Policy const& policy) { + std::string const& resource, google::iam::v1::Policy const& policy, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::iam::v1::SetIamPolicyRequest request; request.set_resource(resource); *request.mutable_policy() = policy; @@ -109,8 +132,10 @@ StatusOr CloudTasksClient::SetIamPolicy( std::string const& resource, IamUpdater const& updater, Options options) { internal::CheckExpectedOptions(options, __func__); - options = tasks_internal::CloudTasksDefaultOptions(std::move(options)); - auto backoff_policy = options.get()->clone(); + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); + auto backoff_policy = + internal::CurrentOptions().get()->clone(); for (;;) { auto recent = GetIamPolicy(resource); if (!recent) { @@ -130,7 +155,10 @@ StatusOr CloudTasksClient::SetIamPolicy( StatusOr CloudTasksClient::TestIamPermissions( - std::string const& resource, std::vector const& permissions) { + std::string const& resource, std::vector const& permissions, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::iam::v1::TestIamPermissionsRequest request; request.set_resource(resource); *request.mutable_permissions() = {permissions.begin(), permissions.end()}; @@ -138,118 +166,170 @@ CloudTasksClient::TestIamPermissions( } StreamRange CloudTasksClient::ListTasks( - std::string const& parent) { + std::string const& parent, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::tasks::v2::ListTasksRequest request; request.set_parent(parent); return connection_->ListTasks(request); } StatusOr CloudTasksClient::GetTask( - std::string const& name) { + std::string const& name, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::tasks::v2::GetTaskRequest request; request.set_name(name); return connection_->GetTask(request); } StatusOr CloudTasksClient::CreateTask( - std::string const& parent, google::cloud::tasks::v2::Task const& task) { + std::string const& parent, google::cloud::tasks::v2::Task const& task, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::tasks::v2::CreateTaskRequest request; request.set_parent(parent); *request.mutable_task() = task; return connection_->CreateTask(request); } -Status CloudTasksClient::DeleteTask(std::string const& name) { +Status CloudTasksClient::DeleteTask(std::string const& name, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::tasks::v2::DeleteTaskRequest request; request.set_name(name); return connection_->DeleteTask(request); } StatusOr CloudTasksClient::RunTask( - std::string const& name) { + std::string const& name, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); google::cloud::tasks::v2::RunTaskRequest request; request.set_name(name); return connection_->RunTask(request); } StreamRange CloudTasksClient::ListQueues( - google::cloud::tasks::v2::ListQueuesRequest request) { + google::cloud::tasks::v2::ListQueuesRequest request, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->ListQueues(std::move(request)); } StatusOr CloudTasksClient::GetQueue( - google::cloud::tasks::v2::GetQueueRequest const& request) { + google::cloud::tasks::v2::GetQueueRequest const& request, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->GetQueue(request); } StatusOr CloudTasksClient::CreateQueue( - google::cloud::tasks::v2::CreateQueueRequest const& request) { + google::cloud::tasks::v2::CreateQueueRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->CreateQueue(request); } StatusOr CloudTasksClient::UpdateQueue( - google::cloud::tasks::v2::UpdateQueueRequest const& request) { + google::cloud::tasks::v2::UpdateQueueRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->UpdateQueue(request); } Status CloudTasksClient::DeleteQueue( - google::cloud::tasks::v2::DeleteQueueRequest const& request) { + google::cloud::tasks::v2::DeleteQueueRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->DeleteQueue(request); } StatusOr CloudTasksClient::PurgeQueue( - google::cloud::tasks::v2::PurgeQueueRequest const& request) { + google::cloud::tasks::v2::PurgeQueueRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->PurgeQueue(request); } StatusOr CloudTasksClient::PauseQueue( - google::cloud::tasks::v2::PauseQueueRequest const& request) { + google::cloud::tasks::v2::PauseQueueRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->PauseQueue(request); } StatusOr CloudTasksClient::ResumeQueue( - google::cloud::tasks::v2::ResumeQueueRequest const& request) { + google::cloud::tasks::v2::ResumeQueueRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->ResumeQueue(request); } StatusOr CloudTasksClient::GetIamPolicy( - google::iam::v1::GetIamPolicyRequest const& request) { + google::iam::v1::GetIamPolicyRequest const& request, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->GetIamPolicy(request); } StatusOr CloudTasksClient::SetIamPolicy( - google::iam::v1::SetIamPolicyRequest const& request) { + google::iam::v1::SetIamPolicyRequest const& request, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->SetIamPolicy(request); } StatusOr CloudTasksClient::TestIamPermissions( - google::iam::v1::TestIamPermissionsRequest const& request) { + google::iam::v1::TestIamPermissionsRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->TestIamPermissions(request); } StreamRange CloudTasksClient::ListTasks( - google::cloud::tasks::v2::ListTasksRequest request) { + google::cloud::tasks::v2::ListTasksRequest request, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->ListTasks(std::move(request)); } StatusOr CloudTasksClient::GetTask( - google::cloud::tasks::v2::GetTaskRequest const& request) { + google::cloud::tasks::v2::GetTaskRequest const& request, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->GetTask(request); } StatusOr CloudTasksClient::CreateTask( - google::cloud::tasks::v2::CreateTaskRequest const& request) { + google::cloud::tasks::v2::CreateTaskRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->CreateTask(request); } Status CloudTasksClient::DeleteTask( - google::cloud::tasks::v2::DeleteTaskRequest const& request) { + google::cloud::tasks::v2::DeleteTaskRequest const& request, + Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->DeleteTask(request); } StatusOr CloudTasksClient::RunTask( - google::cloud::tasks::v2::RunTaskRequest const& request) { + google::cloud::tasks::v2::RunTaskRequest const& request, Options options) { + internal::OptionsSpan span( + internal::MergeOptions(std::move(options), options_)); return connection_->RunTask(request); } diff --git a/google/cloud/tasks/cloud_tasks_client.h b/google/cloud/tasks/cloud_tasks_client.h index bfc495577a023..81064ff167b59 100644 --- a/google/cloud/tasks/cloud_tasks_client.h +++ b/google/cloud/tasks/cloud_tasks_client.h @@ -62,7 +62,8 @@ GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN /// class CloudTasksClient { public: - explicit CloudTasksClient(std::shared_ptr connection); + explicit CloudTasksClient(std::shared_ptr connection, + Options options = {}); ~CloudTasksClient(); //@{ @@ -90,6 +91,7 @@ class CloudTasksClient { /// /// @param parent Required. The location name. /// For example: `projects/PROJECT_ID/locations/LOCATION_ID` + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::tasks::v2::Queue,google/cloud/tasks/v2/queue.proto#L34} /// @@ -99,13 +101,14 @@ class CloudTasksClient { /// @googleapis_reference_link{google/cloud/tasks/v2/queue.proto#L34} /// StreamRange ListQueues( - std::string const& parent); + std::string const& parent, Options options = {}); /// /// Gets a queue. /// /// @param name Required. The resource name of the queue. For example: /// `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID` + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::tasks::v2::Queue,google/cloud/tasks/v2/queue.proto#L34} /// @@ -114,7 +117,8 @@ class CloudTasksClient { /// [google.cloud.tasks.v2.Queue]: /// @googleapis_reference_link{google/cloud/tasks/v2/queue.proto#L34} /// - StatusOr GetQueue(std::string const& name); + StatusOr GetQueue(std::string const& name, + Options options = {}); /// /// Creates a queue. @@ -138,6 +142,7 @@ class CloudTasksClient { /// @param queue Required. The queue to create. /// [Queue's name][google.cloud.tasks.v2.Queue.name] cannot be the same as an /// existing queue. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::tasks::v2::Queue,google/cloud/tasks/v2/queue.proto#L34} /// @@ -147,7 +152,8 @@ class CloudTasksClient { /// @googleapis_reference_link{google/cloud/tasks/v2/queue.proto#L34} /// StatusOr CreateQueue( - std::string const& parent, google::cloud::tasks::v2::Queue const& queue); + std::string const& parent, google::cloud::tasks::v2::Queue const& queue, + Options options = {}); /// /// Updates a queue. @@ -173,6 +179,7 @@ class CloudTasksClient { /// @param update_mask A mask used to specify which fields of the queue are /// being updated. /// If empty, then all fields will be updated. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::tasks::v2::Queue,google/cloud/tasks/v2/queue.proto#L34} /// @@ -183,7 +190,7 @@ class CloudTasksClient { /// StatusOr UpdateQueue( google::cloud::tasks::v2::Queue const& queue, - google::protobuf::FieldMask const& update_mask); + google::protobuf::FieldMask const& update_mask, Options options = {}); /// /// Deletes a queue. @@ -201,11 +208,12 @@ class CloudTasksClient { /// /// @param name Required. The queue name. For example: /// `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID` + /// @param options Optional. Operation options. /// /// [google.cloud.tasks.v2.DeleteQueueRequest]: /// @googleapis_reference_link{google/cloud/tasks/v2/cloudtasks.proto#L419} /// - Status DeleteQueue(std::string const& name); + Status DeleteQueue(std::string const& name, Options options = {}); /// /// Purges a queue by deleting all of its tasks. @@ -218,6 +226,7 @@ class CloudTasksClient { /// /// @param name Required. The queue name. For example: /// `projects/PROJECT_ID/location/LOCATION_ID/queues/QUEUE_ID` + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::tasks::v2::Queue,google/cloud/tasks/v2/queue.proto#L34} /// @@ -226,7 +235,8 @@ class CloudTasksClient { /// [google.cloud.tasks.v2.Queue]: /// @googleapis_reference_link{google/cloud/tasks/v2/queue.proto#L34} /// - StatusOr PurgeQueue(std::string const& name); + StatusOr PurgeQueue(std::string const& name, + Options options = {}); /// /// Pauses the queue. @@ -240,6 +250,7 @@ class CloudTasksClient { /// /// @param name Required. The queue name. For example: /// `projects/PROJECT_ID/location/LOCATION_ID/queues/QUEUE_ID` + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::tasks::v2::Queue,google/cloud/tasks/v2/queue.proto#L34} /// @@ -248,7 +259,8 @@ class CloudTasksClient { /// [google.cloud.tasks.v2.Queue]: /// @googleapis_reference_link{google/cloud/tasks/v2/queue.proto#L34} /// - StatusOr PauseQueue(std::string const& name); + StatusOr PauseQueue(std::string const& name, + Options options = {}); /// /// Resume a queue. @@ -268,6 +280,7 @@ class CloudTasksClient { /// /// @param name Required. The queue name. For example: /// `projects/PROJECT_ID/location/LOCATION_ID/queues/QUEUE_ID` + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::tasks::v2::Queue,google/cloud/tasks/v2/queue.proto#L34} /// @@ -276,8 +289,8 @@ class CloudTasksClient { /// [google.cloud.tasks.v2.Queue]: /// @googleapis_reference_link{google/cloud/tasks/v2/queue.proto#L34} /// - StatusOr ResumeQueue( - std::string const& name); + StatusOr ResumeQueue(std::string const& name, + Options options = {}); /// /// Gets the access control policy for a [Queue][google.cloud.tasks.v2.Queue]. @@ -293,6 +306,7 @@ class CloudTasksClient { /// @param resource REQUIRED: The resource for which the policy is being /// requested. /// See the operation documentation for the appropriate value for this field. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::v1::Policy,google/iam/v1/policy.proto#L88} /// @@ -301,7 +315,8 @@ class CloudTasksClient { /// [google.iam.v1.Policy]: /// @googleapis_reference_link{google/iam/v1/policy.proto#L88} /// - StatusOr GetIamPolicy(std::string const& resource); + StatusOr GetIamPolicy(std::string const& resource, + Options options = {}); /// /// Sets the access control policy for a [Queue][google.cloud.tasks.v2.Queue]. @@ -324,6 +339,7 @@ class CloudTasksClient { /// the policy is limited to a few 10s of KB. An empty policy is a /// valid policy but certain Cloud Platform services (such as Projects) /// might reject them. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::v1::Policy,google/iam/v1/policy.proto#L88} /// @@ -333,7 +349,8 @@ class CloudTasksClient { /// @googleapis_reference_link{google/iam/v1/policy.proto#L88} /// StatusOr SetIamPolicy( - std::string const& resource, google::iam::v1::Policy const& policy); + std::string const& resource, google::iam::v1::Policy const& policy, + Options options = {}); /** * Updates the IAM policy for @p resource using an optimistic concurrency @@ -378,6 +395,7 @@ class CloudTasksClient { /// wildcards (such as '*' or 'storage.*') are not allowed. For more /// information see /// [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions). + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::v1::TestIamPermissionsResponse,google/iam/v1/iam_policy.proto#L141} /// @@ -387,7 +405,8 @@ class CloudTasksClient { /// @googleapis_reference_link{google/iam/v1/iam_policy.proto#L141} /// StatusOr TestIamPermissions( - std::string const& resource, std::vector const& permissions); + std::string const& resource, std::vector const& permissions, + Options options = {}); /// /// Lists the tasks in a queue. @@ -402,6 +421,7 @@ class CloudTasksClient { /// /// @param parent Required. The queue name. For example: /// `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID` + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::tasks::v2::Task,google/cloud/tasks/v2/task.proto#L33} /// @@ -411,13 +431,14 @@ class CloudTasksClient { /// @googleapis_reference_link{google/cloud/tasks/v2/task.proto#L33} /// StreamRange ListTasks( - std::string const& parent); + std::string const& parent, Options options = {}); /// /// Gets a task. /// /// @param name Required. The task name. For example: /// `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID` + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::tasks::v2::Task,google/cloud/tasks/v2/task.proto#L33} /// @@ -426,7 +447,8 @@ class CloudTasksClient { /// [google.cloud.tasks.v2.Task]: /// @googleapis_reference_link{google/cloud/tasks/v2/task.proto#L33} /// - StatusOr GetTask(std::string const& name); + StatusOr GetTask(std::string const& name, + Options options = {}); /// /// Creates a task and adds it to a queue. @@ -465,6 +487,7 @@ class CloudTasksClient { /// task commands. The infrastructure relies on an approximately /// uniform distribution of task ids to store and serve tasks /// efficiently. + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::tasks::v2::Task,google/cloud/tasks/v2/task.proto#L33} /// @@ -474,7 +497,8 @@ class CloudTasksClient { /// @googleapis_reference_link{google/cloud/tasks/v2/task.proto#L33} /// StatusOr CreateTask( - std::string const& parent, google::cloud::tasks::v2::Task const& task); + std::string const& parent, google::cloud::tasks::v2::Task const& task, + Options options = {}); /// /// Deletes a task. @@ -485,11 +509,12 @@ class CloudTasksClient { /// /// @param name Required. The task name. For example: /// `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID` + /// @param options Optional. Operation options. /// /// [google.cloud.tasks.v2.DeleteTaskRequest]: /// @googleapis_reference_link{google/cloud/tasks/v2/cloudtasks.proto#L619} /// - Status DeleteTask(std::string const& name); + Status DeleteTask(std::string const& name, Options options = {}); /// /// Forces a task to run now. @@ -521,6 +546,7 @@ class CloudTasksClient { /// /// @param name Required. The task name. For example: /// `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID` + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::tasks::v2::Task,google/cloud/tasks/v2/task.proto#L33} /// @@ -529,7 +555,8 @@ class CloudTasksClient { /// [google.cloud.tasks.v2.Task]: /// @googleapis_reference_link{google/cloud/tasks/v2/task.proto#L33} /// - StatusOr RunTask(std::string const& name); + StatusOr RunTask(std::string const& name, + Options options = {}); /// /// Lists queues. @@ -538,6 +565,7 @@ class CloudTasksClient { /// /// @param request /// @googleapis_link{google::cloud::tasks::v2::ListQueuesRequest,google/cloud/tasks/v2/cloudtasks.proto#L308} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::tasks::v2::Queue,google/cloud/tasks/v2/queue.proto#L34} /// @@ -547,13 +575,15 @@ class CloudTasksClient { /// @googleapis_reference_link{google/cloud/tasks/v2/queue.proto#L34} /// StreamRange ListQueues( - google::cloud::tasks::v2::ListQueuesRequest request); + google::cloud::tasks::v2::ListQueuesRequest request, + Options options = {}); /// /// Gets a queue. /// /// @param request /// @googleapis_link{google::cloud::tasks::v2::GetQueueRequest,google/cloud/tasks/v2/cloudtasks.proto#L369} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::tasks::v2::Queue,google/cloud/tasks/v2/queue.proto#L34} /// @@ -563,7 +593,8 @@ class CloudTasksClient { /// @googleapis_reference_link{google/cloud/tasks/v2/queue.proto#L34} /// StatusOr GetQueue( - google::cloud::tasks::v2::GetQueueRequest const& request); + google::cloud::tasks::v2::GetQueueRequest const& request, + Options options = {}); /// /// Creates a queue. @@ -580,6 +611,7 @@ class CloudTasksClient { /// /// @param request /// @googleapis_link{google::cloud::tasks::v2::CreateQueueRequest,google/cloud/tasks/v2/cloudtasks.proto#L381} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::tasks::v2::Queue,google/cloud/tasks/v2/queue.proto#L34} /// @@ -589,7 +621,8 @@ class CloudTasksClient { /// @googleapis_reference_link{google/cloud/tasks/v2/queue.proto#L34} /// StatusOr CreateQueue( - google::cloud::tasks::v2::CreateQueueRequest const& request); + google::cloud::tasks::v2::CreateQueueRequest const& request, + Options options = {}); /// /// Updates a queue. @@ -609,6 +642,7 @@ class CloudTasksClient { /// /// @param request /// @googleapis_link{google::cloud::tasks::v2::UpdateQueueRequest,google/cloud/tasks/v2/cloudtasks.proto#L402} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::tasks::v2::Queue,google/cloud/tasks/v2/queue.proto#L34} /// @@ -618,7 +652,8 @@ class CloudTasksClient { /// @googleapis_reference_link{google/cloud/tasks/v2/queue.proto#L34} /// StatusOr UpdateQueue( - google::cloud::tasks::v2::UpdateQueueRequest const& request); + google::cloud::tasks::v2::UpdateQueueRequest const& request, + Options options = {}); /// /// Deletes a queue. @@ -636,12 +671,14 @@ class CloudTasksClient { /// /// @param request /// @googleapis_link{google::cloud::tasks::v2::DeleteQueueRequest,google/cloud/tasks/v2/cloudtasks.proto#L419} + /// @param options Optional. Operation options. /// /// [google.cloud.tasks.v2.DeleteQueueRequest]: /// @googleapis_reference_link{google/cloud/tasks/v2/cloudtasks.proto#L419} /// Status DeleteQueue( - google::cloud::tasks::v2::DeleteQueueRequest const& request); + google::cloud::tasks::v2::DeleteQueueRequest const& request, + Options options = {}); /// /// Purges a queue by deleting all of its tasks. @@ -654,6 +691,7 @@ class CloudTasksClient { /// /// @param request /// @googleapis_link{google::cloud::tasks::v2::PurgeQueueRequest,google/cloud/tasks/v2/cloudtasks.proto#L431} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::tasks::v2::Queue,google/cloud/tasks/v2/queue.proto#L34} /// @@ -663,7 +701,8 @@ class CloudTasksClient { /// @googleapis_reference_link{google/cloud/tasks/v2/queue.proto#L34} /// StatusOr PurgeQueue( - google::cloud::tasks::v2::PurgeQueueRequest const& request); + google::cloud::tasks::v2::PurgeQueueRequest const& request, + Options options = {}); /// /// Pauses the queue. @@ -677,6 +716,7 @@ class CloudTasksClient { /// /// @param request /// @googleapis_link{google::cloud::tasks::v2::PauseQueueRequest,google/cloud/tasks/v2/cloudtasks.proto#L443} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::tasks::v2::Queue,google/cloud/tasks/v2/queue.proto#L34} /// @@ -686,7 +726,8 @@ class CloudTasksClient { /// @googleapis_reference_link{google/cloud/tasks/v2/queue.proto#L34} /// StatusOr PauseQueue( - google::cloud::tasks::v2::PauseQueueRequest const& request); + google::cloud::tasks::v2::PauseQueueRequest const& request, + Options options = {}); /// /// Resume a queue. @@ -706,6 +747,7 @@ class CloudTasksClient { /// /// @param request /// @googleapis_link{google::cloud::tasks::v2::ResumeQueueRequest,google/cloud/tasks/v2/cloudtasks.proto#L455} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::tasks::v2::Queue,google/cloud/tasks/v2/queue.proto#L34} /// @@ -715,7 +757,8 @@ class CloudTasksClient { /// @googleapis_reference_link{google/cloud/tasks/v2/queue.proto#L34} /// StatusOr ResumeQueue( - google::cloud::tasks::v2::ResumeQueueRequest const& request); + google::cloud::tasks::v2::ResumeQueueRequest const& request, + Options options = {}); /// /// Gets the access control policy for a [Queue][google.cloud.tasks.v2.Queue]. @@ -730,6 +773,7 @@ class CloudTasksClient { /// /// @param request /// @googleapis_link{google::iam::v1::GetIamPolicyRequest,google/iam/v1/iam_policy.proto#L113} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::v1::Policy,google/iam/v1/policy.proto#L88} /// @@ -739,7 +783,8 @@ class CloudTasksClient { /// @googleapis_reference_link{google/iam/v1/policy.proto#L88} /// StatusOr GetIamPolicy( - google::iam::v1::GetIamPolicyRequest const& request); + google::iam::v1::GetIamPolicyRequest const& request, + Options options = {}); /// /// Sets the access control policy for a [Queue][google.cloud.tasks.v2.Queue]. @@ -756,6 +801,7 @@ class CloudTasksClient { /// /// @param request /// @googleapis_link{google::iam::v1::SetIamPolicyRequest,google/iam/v1/iam_policy.proto#L98} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::v1::Policy,google/iam/v1/policy.proto#L88} /// @@ -765,7 +811,8 @@ class CloudTasksClient { /// @googleapis_reference_link{google/iam/v1/policy.proto#L88} /// StatusOr SetIamPolicy( - google::iam::v1::SetIamPolicyRequest const& request); + google::iam::v1::SetIamPolicyRequest const& request, + Options options = {}); /// /// Returns permissions that a caller has on a @@ -779,6 +826,7 @@ class CloudTasksClient { /// /// @param request /// @googleapis_link{google::iam::v1::TestIamPermissionsRequest,google/iam/v1/iam_policy.proto#L126} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::iam::v1::TestIamPermissionsResponse,google/iam/v1/iam_policy.proto#L141} /// @@ -788,7 +836,8 @@ class CloudTasksClient { /// @googleapis_reference_link{google/iam/v1/iam_policy.proto#L141} /// StatusOr TestIamPermissions( - google::iam::v1::TestIamPermissionsRequest const& request); + google::iam::v1::TestIamPermissionsRequest const& request, + Options options = {}); /// /// Lists the tasks in a queue. @@ -803,6 +852,7 @@ class CloudTasksClient { /// /// @param request /// @googleapis_link{google::cloud::tasks::v2::ListTasksRequest,google/cloud/tasks/v2/cloudtasks.proto#L467} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::tasks::v2::Task,google/cloud/tasks/v2/task.proto#L33} /// @@ -812,13 +862,14 @@ class CloudTasksClient { /// @googleapis_reference_link{google/cloud/tasks/v2/task.proto#L33} /// StreamRange ListTasks( - google::cloud::tasks::v2::ListTasksRequest request); + google::cloud::tasks::v2::ListTasksRequest request, Options options = {}); /// /// Gets a task. /// /// @param request /// @googleapis_link{google::cloud::tasks::v2::GetTaskRequest,google/cloud/tasks/v2/cloudtasks.proto#L529} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::tasks::v2::Task,google/cloud/tasks/v2/task.proto#L33} /// @@ -828,7 +879,8 @@ class CloudTasksClient { /// @googleapis_reference_link{google/cloud/tasks/v2/task.proto#L33} /// StatusOr GetTask( - google::cloud::tasks::v2::GetTaskRequest const& request); + google::cloud::tasks::v2::GetTaskRequest const& request, + Options options = {}); /// /// Creates a task and adds it to a queue. @@ -839,6 +891,7 @@ class CloudTasksClient { /// /// @param request /// @googleapis_link{google::cloud::tasks::v2::CreateTaskRequest,google/cloud/tasks/v2/cloudtasks.proto#L555} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::tasks::v2::Task,google/cloud/tasks/v2/task.proto#L33} /// @@ -848,7 +901,8 @@ class CloudTasksClient { /// @googleapis_reference_link{google/cloud/tasks/v2/task.proto#L33} /// StatusOr CreateTask( - google::cloud::tasks::v2::CreateTaskRequest const& request); + google::cloud::tasks::v2::CreateTaskRequest const& request, + Options options = {}); /// /// Deletes a task. @@ -859,11 +913,13 @@ class CloudTasksClient { /// /// @param request /// @googleapis_link{google::cloud::tasks::v2::DeleteTaskRequest,google/cloud/tasks/v2/cloudtasks.proto#L619} + /// @param options Optional. Operation options. /// /// [google.cloud.tasks.v2.DeleteTaskRequest]: /// @googleapis_reference_link{google/cloud/tasks/v2/cloudtasks.proto#L619} /// - Status DeleteTask(google::cloud::tasks::v2::DeleteTaskRequest const& request); + Status DeleteTask(google::cloud::tasks::v2::DeleteTaskRequest const& request, + Options options = {}); /// /// Forces a task to run now. @@ -895,6 +951,7 @@ class CloudTasksClient { /// /// @param request /// @googleapis_link{google::cloud::tasks::v2::RunTaskRequest,google/cloud/tasks/v2/cloudtasks.proto#L632} + /// @param options Optional. Operation options. /// @return /// @googleapis_link{google::cloud::tasks::v2::Task,google/cloud/tasks/v2/task.proto#L33} /// @@ -904,10 +961,12 @@ class CloudTasksClient { /// @googleapis_reference_link{google/cloud/tasks/v2/task.proto#L33} /// StatusOr RunTask( - google::cloud::tasks::v2::RunTaskRequest const& request); + google::cloud::tasks::v2::RunTaskRequest const& request, + Options options = {}); private: std::shared_ptr connection_; + Options options_; }; GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END