Skip to content

Commit 18e61d2

Browse files
committed
Add implementation to: (googleapis#3043)
listInstances, listInstanceConfigs, listDatabases getInstance, getInstanceConfigs, getDatabase dropDatabase, deleteInstance getDatabaseDdl
1 parent 4465d6a commit 18e61d2

File tree

1 file changed

+81
-9
lines changed

1 file changed

+81
-9
lines changed

google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java

Lines changed: 81 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,22 @@
4848
import com.google.protobuf.FieldMask;
4949
import com.google.spanner.admin.database.v1.CreateDatabaseRequest;
5050
import com.google.spanner.admin.database.v1.Database;
51+
import com.google.spanner.admin.database.v1.DropDatabaseRequest;
52+
import com.google.spanner.admin.database.v1.GetDatabaseDdlRequest;
53+
import com.google.spanner.admin.database.v1.GetDatabaseRequest;
54+
import com.google.spanner.admin.database.v1.ListDatabasesRequest;
55+
import com.google.spanner.admin.database.v1.ListDatabasesResponse;
5156
import com.google.spanner.admin.database.v1.UpdateDatabaseDdlRequest;
5257
import com.google.spanner.admin.instance.v1.CreateInstanceRequest;
58+
import com.google.spanner.admin.instance.v1.DeleteInstanceRequest;
59+
import com.google.spanner.admin.instance.v1.GetInstanceConfigRequest;
60+
import com.google.spanner.admin.instance.v1.GetInstanceRequest;
5361
import com.google.spanner.admin.instance.v1.Instance;
5462
import com.google.spanner.admin.instance.v1.InstanceConfig;
63+
import com.google.spanner.admin.instance.v1.ListInstanceConfigsRequest;
64+
import com.google.spanner.admin.instance.v1.ListInstanceConfigsResponse;
65+
import com.google.spanner.admin.instance.v1.ListInstancesRequest;
66+
import com.google.spanner.admin.instance.v1.ListInstancesResponse;
5567
import com.google.spanner.admin.instance.v1.UpdateInstanceRequest;
5668
import com.google.spanner.v1.BeginTransactionRequest;
5769
import com.google.spanner.v1.CommitRequest;
@@ -75,6 +87,7 @@
7587

7688
/** Implementation of Cloud Spanner remote calls using Gapic libraries. */
7789
public class GapicSpannerRpc implements SpannerRpc {
90+
7891
private static final PathTemplate PROJECT_NAME_TEMPLATE =
7992
PathTemplate.create("projects/{project}");
8093

@@ -143,18 +156,45 @@ public GapicSpannerRpc(SpannerOptions options) throws IOException {
143156
@Override
144157
public Paginated<InstanceConfig> listInstanceConfigs(int pageSize, @Nullable String pageToken)
145158
throws SpannerException {
146-
throw new UnsupportedOperationException("Not implemented yet.");
159+
ListInstanceConfigsRequest.Builder requestBuilder =
160+
ListInstanceConfigsRequest.newBuilder().setParent(projectName).setPageSize(pageSize);
161+
if (pageToken != null) {
162+
requestBuilder.setPageToken(pageToken);
163+
}
164+
ListInstanceConfigsRequest request = requestBuilder.build();
165+
166+
// TODO: put projectName in metadata
167+
ListInstanceConfigsResponse response =
168+
get(instanceStub.listInstanceConfigsCallable().futureCall(request));
169+
return new Paginated<>(response.getInstanceConfigsList(), response.getNextPageToken());
147170
}
148171

149172
@Override
150173
public InstanceConfig getInstanceConfig(String instanceConfigName) throws SpannerException {
151-
throw new UnsupportedOperationException("Not implemented yet.");
174+
GetInstanceConfigRequest request =
175+
GetInstanceConfigRequest.newBuilder().setName(instanceConfigName).build();
176+
177+
// TODO: put projectName in metadata
178+
return get(instanceStub.getInstanceConfigCallable().futureCall(request));
152179
}
153180

154181
@Override
155182
public Paginated<Instance> listInstances(
156183
int pageSize, @Nullable String pageToken, @Nullable String filter) throws SpannerException {
157-
throw new UnsupportedOperationException("Not implemented yet.");
184+
ListInstancesRequest.Builder requestBuilder =
185+
ListInstancesRequest.newBuilder().setParent(projectName).setPageSize(pageSize);
186+
if (pageToken != null) {
187+
requestBuilder.setPageToken(pageToken);
188+
}
189+
if (filter != null) {
190+
requestBuilder.setFilter(filter);
191+
}
192+
ListInstancesRequest request = requestBuilder.build();
193+
194+
// TODO: put projectName in metadata
195+
ListInstancesResponse response =
196+
get(instanceStub.listInstancesCallable().futureCall(request));
197+
return new Paginated<>(response.getInstancesList(), response.getNextPageToken());
158198
}
159199

160200
@Override
@@ -180,18 +220,35 @@ public Operation updateInstance(Instance instance, FieldMask fieldMask) throws S
180220

181221
@Override
182222
public Instance getInstance(String instanceName) throws SpannerException {
183-
throw new UnsupportedOperationException("Not implemented yet.");
223+
GetInstanceRequest request =
224+
GetInstanceRequest.newBuilder().setName(instanceName).build();
225+
226+
// TODO: put instanceName in metadata
227+
return get(instanceStub.getInstanceCallable().futureCall(request));
184228
}
185229

186230
@Override
187231
public void deleteInstance(String instanceName) throws SpannerException {
188-
throw new UnsupportedOperationException("Not implemented yet.");
232+
DeleteInstanceRequest request =
233+
DeleteInstanceRequest.newBuilder().setName(instanceName).build();
234+
235+
// TODO: put instanceName in metadata
236+
get(instanceStub.deleteInstanceCallable().futureCall(request));
189237
}
190238

191239
@Override
192240
public Paginated<Database> listDatabases(
193241
String instanceName, int pageSize, @Nullable String pageToken) throws SpannerException {
194-
throw new UnsupportedOperationException("Not implemented yet.");
242+
ListDatabasesRequest.Builder requestBuilder =
243+
ListDatabasesRequest.newBuilder().setParent(instanceName).setPageSize(pageSize);
244+
if (pageToken != null) {
245+
requestBuilder.setPageToken(pageToken);
246+
}
247+
ListDatabasesRequest request = requestBuilder.build();
248+
249+
// TODO: put instanceName in metadata
250+
ListDatabasesResponse response = get(databaseStub.listDatabasesCallable().futureCall(request));
251+
return new Paginated<>(response.getDatabasesList(), response.getNextPageToken());
195252
}
196253

197254
@Override
@@ -222,17 +279,32 @@ public Operation updateDatabaseDdl(String databaseName, Iterable<String> updateD
222279

223280
@Override
224281
public void dropDatabase(String databaseName) throws SpannerException {
225-
throw new UnsupportedOperationException("Not implemented yet.");
282+
DropDatabaseRequest request =
283+
DropDatabaseRequest.newBuilder().setDatabase(databaseName).build();
284+
285+
// TODO: put databaseName in metadata
286+
get(databaseStub.dropDatabaseCallable().futureCall(request));
226287
}
227288

228289
@Override
229290
public Database getDatabase(String databaseName) throws SpannerException {
230-
throw new UnsupportedOperationException("Not implemented yet.");
291+
GetDatabaseRequest request =
292+
GetDatabaseRequest.newBuilder()
293+
.setName(databaseName)
294+
.build();
295+
296+
// TODO: put databaseName in metadata
297+
return get(databaseStub.getDatabaseCallable().futureCall(request));
231298
}
232299

233300
@Override
234301
public List<String> getDatabaseDdl(String databaseName) throws SpannerException {
235-
throw new UnsupportedOperationException("Not implemented yet.");
302+
GetDatabaseDdlRequest request =
303+
GetDatabaseDdlRequest.newBuilder().setDatabase(databaseName).build();
304+
305+
// TODO: put databaseName in metadata
306+
return get(databaseStub.getDatabaseDdlCallable().futureCall(request))
307+
.getStatementsList();
236308
}
237309

238310
@Override

0 commit comments

Comments
 (0)