Google Cloud Spanner C++ Client
A C++ Client Library for Google Cloud Spanner
instance_admin_client.h
Go to the documentation of this file.
1 // Copyright 2019 Google LLC
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #ifndef GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_SPANNER_INSTANCE_ADMIN_CLIENT_H
16 #define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_SPANNER_INSTANCE_ADMIN_CLIENT_H
17 
21 #include "google/cloud/status_or.h"
22 
23 namespace google {
24 namespace cloud {
25 namespace spanner {
26 inline namespace SPANNER_CLIENT_NS {
27 
62  public:
63  explicit InstanceAdminClient(std::shared_ptr<InstanceAdminConnection> conn)
64  : conn_(std::move(conn)) {}
65 
68  InstanceAdminClient() = delete;
69 
71  // @name Copy and move support
72  InstanceAdminClient(InstanceAdminClient const&) = default;
73  InstanceAdminClient& operator=(InstanceAdminClient const&) = default;
75  InstanceAdminClient& operator=(InstanceAdminClient&&) = default;
77 
79  // @name Equality
80  friend bool operator==(InstanceAdminClient const& a,
81  InstanceAdminClient const& b) {
82  return a.conn_ == b.conn_;
83  }
84  friend bool operator!=(InstanceAdminClient const& a,
85  InstanceAdminClient const& b) {
86  return !(a == b);
87  }
89 
100  StatusOr<google::spanner::admin::instance::v1::Instance> GetInstance(
101  Instance const& in);
102 
119  future<StatusOr<google::spanner::admin::instance::v1::Instance>>
120  CreateInstance(
121  google::spanner::admin::instance::v1::CreateInstanceRequest const&);
122 
139  future<StatusOr<google::spanner::admin::instance::v1::Instance>>
140  UpdateInstance(
141  google::spanner::admin::instance::v1::UpdateInstanceRequest const&);
142 
152  Status DeleteInstance(Instance const& in);
153 
164  StatusOr<google::spanner::admin::instance::v1::InstanceConfig>
165  GetInstanceConfig(std::string const& name);
166 
177  ListInstanceConfigsRange ListInstanceConfigs(std::string project_id);
178 
189  ListInstancesRange ListInstances(std::string project_id, std::string filter);
190 
212  StatusOr<google::iam::v1::Policy> GetIamPolicy(Instance const& in);
213 
235  StatusOr<google::iam::v1::Policy> SetIamPolicy(
236  Instance const& in, google::iam::v1::Policy policy);
237 
263  StatusOr<google::iam::v1::Policy> SetIamPolicy(Instance const& in,
264  IamUpdater const& updater);
265 
274  StatusOr<google::iam::v1::Policy> SetIamPolicy(
275  Instance const& in, IamUpdater const& updater,
276  std::unique_ptr<TransactionRerunPolicy> rerun_policy,
277  std::unique_ptr<BackoffPolicy> backoff_policy);
278 
298  StatusOr<google::iam::v1::TestIamPermissionsResponse> TestIamPermissions(
299  Instance const& in, std::vector<std::string> permissions);
300 
301  private:
302  std::shared_ptr<InstanceAdminConnection> conn_;
303 };
304 
305 } // namespace SPANNER_CLIENT_NS
306 } // namespace spanner
307 } // namespace cloud
308 } // namespace google
309 
310 #endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_SPANNER_INSTANCE_ADMIN_CLIENT_H
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.
friend bool operator==(InstanceAdminClient const &a, InstanceAdminClient const &b)
This class identifies a Cloud Spanner Instance.
Definition: instance.h:41
friend bool operator!=(InstanceAdminClient const &a, InstanceAdminClient const &b)
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.
Performs instance administration operations on Cloud Spanner.
InstanceAdminClient(std::shared_ptr< InstanceAdminConnection > conn)
#define SPANNER_CLIENT_NS
Definition: version.h:22
std::function< optional< google::iam::v1::Policy >(google::iam::v1::Policy)> IamUpdater
Definition: iam_updater.h:29