Google Cloud Spanner C++ Client
A C++ Client Library for Google Cloud Spanner
instance_admin_connection.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_CONNECTION_H
16 #define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_SPANNER_INSTANCE_ADMIN_CONNECTION_H
17 
19 #include "google/cloud/spanner/internal/instance_admin_stub.h"
22 #include "google/cloud/internal/pagination_range.h"
23 #include <google/spanner/admin/instance/v1/spanner_instance_admin.grpc.pb.h>
24 #include <map>
25 
26 namespace google {
27 namespace cloud {
28 namespace spanner {
29 inline namespace SPANNER_CLIENT_NS {
30 
40 using ListInstancesRange = google::cloud::internal::PaginationRange<
41  google::spanner::admin::instance::v1::Instance,
42  google::spanner::admin::instance::v1::ListInstancesRequest,
43  google::spanner::admin::instance::v1::ListInstancesResponse>;
44 
54 using ListInstanceConfigsRange = google::cloud::internal::PaginationRange<
55  google::spanner::admin::instance::v1::InstanceConfig,
56  google::spanner::admin::instance::v1::ListInstanceConfigsRequest,
57  google::spanner::admin::instance::v1::ListInstanceConfigsResponse>;
58 
71  public:
72  virtual ~InstanceAdminConnection() = 0;
73 
75 
84  struct GetInstanceParams {
88  std::string instance_name;
89  };
90 
93  google::spanner::admin::instance::v1::CreateInstanceRequest request;
94  };
95 
98  google::spanner::admin::instance::v1::UpdateInstanceRequest request;
99  };
100 
103  std::string instance_name;
104  };
105 
108  std::string instance_config_name;
109  };
110 
113  std::string project_id;
114  };
115 
125  std::string project_id;
126 
137  std::string filter;
138  };
139 
142  std::string instance_name;
143  };
144 
147  std::string instance_name;
148  google::iam::v1::Policy policy;
149  };
150 
153  std::string instance_name;
154  std::vector<std::string> permissions;
155  };
157 
159  virtual StatusOr<google::spanner::admin::instance::v1::Instance> GetInstance(
160  GetInstanceParams) = 0;
161 
162  virtual future<StatusOr<google::spanner::admin::instance::v1::Instance>>
163  CreateInstance(CreateInstanceParams p) = 0;
164 
165  virtual future<StatusOr<google::spanner::admin::instance::v1::Instance>>
166  UpdateInstance(UpdateInstanceParams p) = 0;
167 
168  virtual Status DeleteInstance(DeleteInstanceParams p) = 0;
169 
171  virtual StatusOr<google::spanner::admin::instance::v1::InstanceConfig>
172  GetInstanceConfig(GetInstanceConfigParams) = 0;
173 
177  virtual ListInstanceConfigsRange ListInstanceConfigs(
179 
184  virtual ListInstancesRange ListInstances(ListInstancesParams params) = 0;
185 
188  virtual StatusOr<google::iam::v1::Policy> GetIamPolicy(
189  GetIamPolicyParams) = 0;
190 
193  virtual StatusOr<google::iam::v1::Policy> SetIamPolicy(
194  SetIamPolicyParams) = 0;
195 
198  virtual StatusOr<google::iam::v1::TestIamPermissionsResponse>
199  TestIamPermissions(TestIamPermissionsParams) = 0;
200 };
201 
214 std::shared_ptr<InstanceAdminConnection> MakeInstanceAdminConnection(
215  ConnectionOptions const& options = ConnectionOptions());
216 
230 std::shared_ptr<InstanceAdminConnection> MakeInstanceAdminConnection(
231  ConnectionOptions const& options, std::unique_ptr<RetryPolicy> retry_policy,
232  std::unique_ptr<BackoffPolicy> backoff_policy,
233  std::unique_ptr<PollingPolicy> polling_policy);
234 
235 namespace internal {
242 std::shared_ptr<InstanceAdminConnection> MakeInstanceAdminConnection(
243  std::shared_ptr<internal::InstanceAdminStub> base_stub,
244  ConnectionOptions const& options);
245 
246 std::shared_ptr<InstanceAdminConnection> MakeInstanceAdminConnection(
247  std::shared_ptr<internal::InstanceAdminStub> base_stub,
248  std::unique_ptr<RetryPolicy> retry_policy,
249  std::unique_ptr<BackoffPolicy> backoff_policy,
250  std::unique_ptr<PollingPolicy> polling_policy);
251 
252 } // namespace internal
253 
254 } // namespace SPANNER_CLIENT_NS
255 } // namespace spanner
256 } // namespace cloud
257 } // namespace google
258 
259 #endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_SPANNER_INSTANCE_ADMIN_CONNECTION_H
std::string instance_name
The full name of the instance in projects/<project-id>/instances/<instance-id> format.
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.
A connection to the Cloud Spanner instance administration service.
google::spanner::admin::instance::v1::CreateInstanceRequest request
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::ConnectionOptions< ConnectionOptionsTraits > ConnectionOptions
The options for Cloud Spanner connections.
#define SPANNER_CLIENT_NS
Definition: version.h:22
std::shared_ptr< InstanceAdminConnection > MakeInstanceAdminConnection(ConnectionOptions const &options)
Returns an InstanceAdminConnection object that can be used for interacting with Cloud Spanner's admin...
std::string filter
A filtering expression to restrict the set of instances included in the response.
google::spanner::admin::instance::v1::UpdateInstanceRequest request