22 StatusOr<google::spanner::admin::instance::v1::Instance>
23 InstanceAdminClient::GetInstance(
Instance const& in) {
24 return conn_->GetInstance({in.
FullName()});
27 future<StatusOr<google::spanner::admin::instance::v1::Instance>>
28 InstanceAdminClient::CreateInstance(
29 google::spanner::admin::instance::v1::CreateInstanceRequest
const&
31 return conn_->CreateInstance({request});
34 future<StatusOr<google::spanner::admin::instance::v1::Instance>>
35 InstanceAdminClient::UpdateInstance(
36 google::spanner::admin::instance::v1::UpdateInstanceRequest
const&
38 return conn_->UpdateInstance({request});
41 Status InstanceAdminClient::DeleteInstance(
Instance const& in) {
42 return conn_->DeleteInstance({in.
FullName()});
45 StatusOr<google::spanner::admin::instance::v1::InstanceConfig>
46 InstanceAdminClient::GetInstanceConfig(std::string
const& name) {
47 return conn_->GetInstanceConfig({name});
51 std::string project_id) {
52 return conn_->ListInstanceConfigs({std::move(project_id)});
57 return conn_->ListInstances({std::move(project_id), std::move(filter)});
60 StatusOr<google::iam::v1::Policy> InstanceAdminClient::GetIamPolicy(
62 return conn_->GetIamPolicy({in.
FullName()});
65 StatusOr<google::iam::v1::Policy> InstanceAdminClient::SetIamPolicy(
66 Instance const& in, google::iam::v1::Policy policy) {
67 return conn_->SetIamPolicy({in.
FullName(), std::move(policy)});
70 StatusOr<google::iam::v1::Policy> InstanceAdminClient::SetIamPolicy(
72 auto const rerun_maximum_duration = std::chrono::minutes(15);
73 auto default_rerun_policy =
76 auto const backoff_initial_delay = std::chrono::milliseconds(1000);
77 auto const backoff_maximum_delay = std::chrono::minutes(5);
78 auto const backoff_scaling = 2.0;
79 auto default_backoff_policy =
84 return SetIamPolicy(in, updater, std::move(default_rerun_policy),
85 std::move(default_backoff_policy));
88 StatusOr<google::iam::v1::Policy> InstanceAdminClient::SetIamPolicy(
90 std::unique_ptr<TransactionRerunPolicy> rerun_policy,
91 std::unique_ptr<BackoffPolicy> backoff_policy) {
92 using RerunnablePolicy = internal::SafeTransactionRerun;
96 auto current_policy = GetIamPolicy(in);
97 if (!current_policy) {
98 last_status = std::move(current_policy).status();
100 auto etag = current_policy->etag();
101 auto desired = updater(*current_policy);
102 if (!desired.has_value()) {
103 return current_policy;
105 desired->set_etag(std::move(etag));
106 auto result = SetIamPolicy(in, *std::move(desired));
107 if (RerunnablePolicy::IsOk(result.status())) {
110 last_status = std::move(result).status();
112 if (!rerun_policy->OnFailure(last_status))
break;
113 std::this_thread::sleep_for(backoff_policy->OnCompletion());
114 }
while (!rerun_policy->IsExhausted());
118 StatusOr<google::iam::v1::TestIamPermissionsResponse>
119 InstanceAdminClient::TestIamPermissions(
Instance const& in,
120 std::vector<std::string> permissions) {
121 return conn_->TestIamPermissions({in.
FullName(), std::move(permissions)});
google::cloud::internal::PaginationRange< google::spanner::admin::instance::v1::InstanceConfig, google::spanner::admin::instance::v1::ListInstanceConfigsRequest, google::spanner::admin::instance::v1::ListInstanceConfigsResponse > ListInstanceConfigsRange
An input range to stream all the instance configs in a Cloud project.
This class identifies a Cloud Spanner Instance.
google::cloud::internal::LimitedTimeRetryPolicy< google::cloud::Status, internal::SafeTransactionRerun > LimitedTimeTransactionRerunPolicy
A transaction rerun policy that limits the duration of the rerun loop.
Contains all the Cloud Spanner C++ client types and functions.
google::cloud::internal::PaginationRange< google::spanner::admin::instance::v1::Instance, google::spanner::admin::instance::v1::ListInstancesRequest, google::spanner::admin::instance::v1::ListInstancesResponse > ListInstancesRange
An input range to stream all the instances in a Cloud project.
google::cloud::internal::ExponentialBackoffPolicy ExponentialBackoffPolicy
A truncated exponential backoff policy with randomized periods.
#define SPANNER_CLIENT_NS
std::function< optional< google::iam::v1::Policy >(google::iam::v1::Policy)> IamUpdater
std::string FullName() const
Returns the fully qualified instance name as a string of the form: "projects/<project-id>/instances/<...