Skip to content

Commit

Permalink
Change the surface of LRO methods
Browse files Browse the repository at this point in the history
  • Loading branch information
yihanzhen committed Apr 9, 2018
2 parents f539045 + 89178d7 commit 8e96b66
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 51 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import com.google.api.gax.grpc.GaxGrpcProperties;
import com.google.api.gax.grpc.GrpcCallContext;
import com.google.api.gax.grpc.GrpcTransportChannel;
import com.google.api.gax.longrunning.OperationFuture;
import com.google.api.gax.rpc.ApiClientHeaderProvider;
import com.google.api.gax.rpc.FixedTransportChannelProvider;
import com.google.api.gax.rpc.HeaderProvider;
Expand All @@ -45,16 +46,18 @@
import com.google.cloud.spanner.v1.stub.SpannerStubSettings;
import com.google.common.base.MoreObjects;
import com.google.longrunning.GetOperationRequest;
import com.google.longrunning.Operation;
import com.google.protobuf.FieldMask;
import com.google.spanner.admin.database.v1.CreateDatabaseMetadata;
import com.google.spanner.admin.database.v1.CreateDatabaseRequest;
import com.google.spanner.admin.database.v1.Database;
import com.google.spanner.admin.database.v1.DropDatabaseRequest;
import com.google.spanner.admin.database.v1.GetDatabaseDdlRequest;
import com.google.spanner.admin.database.v1.GetDatabaseRequest;
import com.google.spanner.admin.database.v1.ListDatabasesRequest;
import com.google.spanner.admin.database.v1.ListDatabasesResponse;
import com.google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata;
import com.google.spanner.admin.database.v1.UpdateDatabaseDdlRequest;
import com.google.spanner.admin.instance.v1.CreateInstanceMetadata;
import com.google.spanner.admin.instance.v1.CreateInstanceRequest;
import com.google.spanner.admin.instance.v1.DeleteInstanceRequest;
import com.google.spanner.admin.instance.v1.GetInstanceConfigRequest;
Expand All @@ -65,6 +68,7 @@
import com.google.spanner.admin.instance.v1.ListInstanceConfigsResponse;
import com.google.spanner.admin.instance.v1.ListInstancesRequest;
import com.google.spanner.admin.instance.v1.ListInstancesResponse;
import com.google.spanner.admin.instance.v1.UpdateInstanceMetadata;
import com.google.spanner.admin.instance.v1.UpdateInstanceRequest;
import com.google.spanner.v1.BeginTransactionRequest;
import com.google.spanner.v1.CommitRequest;
Expand All @@ -88,6 +92,8 @@
import java.util.concurrent.Future;
import javax.annotation.Nullable;

import com.google.longrunning.Operation;

/** Implementation of Cloud Spanner remote calls using Gapic libraries. */
public class GapicSpannerRpc implements SpannerRpc {

Expand Down Expand Up @@ -212,8 +218,8 @@ public Paginated<Instance> listInstances(
}

@Override
public Operation createInstance(String parent, String instanceId, Instance instance)
throws SpannerException {
public OperationFuture<Instance, CreateInstanceMetadata> createInstance(
String parent, String instanceId, Instance instance) throws SpannerException {
CreateInstanceRequest request =
CreateInstanceRequest.newBuilder()
.setParent(parent)
Expand All @@ -223,17 +229,18 @@ public Operation createInstance(String parent, String instanceId, Instance insta

GrpcCallContext context = GrpcCallContext.createDefault()
.withExtraHeaders(metadataProvider.newExtraHeaders(parent, projectName));
return get(instanceStub.createInstanceCallable().futureCall(request, context));
return instanceStub.createInstanceCallable().futureCall(request, context);
}

@Override
public Operation updateInstance(Instance instance, FieldMask fieldMask) throws SpannerException {
public OperationFuture<Instance, UpdateInstanceMetadata> updateInstance(
Instance instance, FieldMask fieldMask) throws SpannerException {
UpdateInstanceRequest request =
UpdateInstanceRequest.newBuilder().setInstance(instance).setFieldMask(fieldMask).build();

GrpcCallContext context = GrpcCallContext.createDefault()
.withExtraHeaders(metadataProvider.newExtraHeaders(instance.getName(), projectName));
return get(instanceStub.updateInstanceCallable().futureCall(request, context));
return instanceStub.updateInstanceCallable().futureCall(request, context);
}

@Override
Expand Down Expand Up @@ -274,31 +281,33 @@ public Paginated<Database> listDatabases(
}

@Override
public Operation createDatabase(String instanceName, String createDatabaseStatement,
Iterable<String> additionalStatements) throws SpannerException {
public OperationFuture<Database, CreateDatabaseMetadata> createDatabase(
String instanceName, String createDatabaseStatement, Iterable<String> additionalStatements) throws SpannerException {
CreateDatabaseRequest request =
CreateDatabaseRequest.newBuilder()
.setParent(instanceName)
.setCreateStatement(createDatabaseStatement)
.addAllExtraStatements(additionalStatements)
.build();

GrpcCallContext context = GrpcCallContext.createDefault()
.withExtraHeaders(metadataProvider.newExtraHeaders(instanceName, projectName));
return get(databaseStub.createDatabaseCallable().futureCall(request, context));
return databaseStub.createDatabaseCallable().futureCall(request, context);
}

@Override
public Operation updateDatabaseDdl(String databaseName, Iterable<String> updateDatabaseStatements,
@Nullable String updateId) throws SpannerException {
public OperationFuture<Database, UpdateDatabaseDdlMetadata> updateDatabaseDdl(
String databaseName, Iterable<String> updateDatabaseStatements, @Nullable String updateId) throws SpannerException {
UpdateDatabaseDdlRequest request =
UpdateDatabaseDdlRequest.newBuilder()
.setDatabase(databaseName)
.addAllStatements(updateDatabaseStatements)
.setOperationId(MoreObjects.firstNonNull(updateId, ""))
.build();

GrpcCallContext context = GrpcCallContext.createDefault()
.withExtraHeaders(metadataProvider.newExtraHeaders(databaseName, projectName));
return get(databaseStub.updateDatabaseDdlCallable().futureCall(request, context));
return databaseStub.updateDatabaseDdlCallable().futureCall(request, context);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

import com.google.api.gax.core.GaxProperties;
import com.google.api.gax.grpc.GaxGrpcProperties;
import com.google.api.gax.longrunning.OperationFuture;
import com.google.api.gax.rpc.ApiClientHeaderProvider;
import com.google.api.gax.rpc.HeaderProvider;
import com.google.api.pathtemplate.PathTemplate;
Expand All @@ -32,17 +33,19 @@
import com.google.common.base.MoreObjects;
import com.google.common.collect.ImmutableList;
import com.google.longrunning.GetOperationRequest;
import com.google.longrunning.Operation;
import com.google.longrunning.OperationsGrpc;
import com.google.protobuf.FieldMask;
import com.google.spanner.admin.database.v1.CreateDatabaseMetadata;
import com.google.spanner.admin.database.v1.CreateDatabaseRequest;
import com.google.spanner.admin.database.v1.Database;
import com.google.spanner.admin.database.v1.DatabaseAdminGrpc;
import com.google.spanner.admin.database.v1.DropDatabaseRequest;
import com.google.spanner.admin.database.v1.GetDatabaseDdlRequest;
import com.google.spanner.admin.database.v1.GetDatabaseRequest;
import com.google.spanner.admin.database.v1.ListDatabasesRequest;
import com.google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata;
import com.google.spanner.admin.database.v1.UpdateDatabaseDdlRequest;
import com.google.spanner.admin.instance.v1.CreateInstanceMetadata;
import com.google.spanner.admin.instance.v1.CreateInstanceRequest;
import com.google.spanner.admin.instance.v1.DeleteInstanceRequest;
import com.google.spanner.admin.instance.v1.GetInstanceConfigRequest;
Expand All @@ -54,6 +57,7 @@
import com.google.spanner.admin.instance.v1.ListInstanceConfigsResponse;
import com.google.spanner.admin.instance.v1.ListInstancesRequest;
import com.google.spanner.admin.instance.v1.ListInstancesResponse;
import com.google.spanner.admin.instance.v1.UpdateInstanceMetadata;
import com.google.spanner.admin.instance.v1.UpdateInstanceRequest;
import com.google.spanner.v1.BeginTransactionRequest;
import com.google.spanner.v1.CommitRequest;
Expand Down Expand Up @@ -101,6 +105,8 @@
import java.util.logging.Logger;
import javax.annotation.Nullable;

import com.google.longrunning.Operation;

/** Implementation of Cloud Spanner remote calls using gRPC. */
public class GrpcSpannerRpc implements SpannerRpc {

Expand Down Expand Up @@ -222,23 +228,15 @@ public Paginated<Instance> listInstances(
}

@Override
public Operation createInstance(String parent, String instanceId, Instance instance)
throws SpannerException {
CreateInstanceRequest request =
CreateInstanceRequest.newBuilder()
.setParent(parent)
.setInstanceId(instanceId)
.setInstance(instance)
.build();
return get(doUnaryCall(InstanceAdminGrpc.METHOD_CREATE_INSTANCE, request, parent, null));
public OperationFuture<Instance, CreateInstanceMetadata> createInstance(
String parent, String instanceId, Instance instance) throws SpannerException {
throw new UnsupportedOperationException("Not implemented: createInstance");
}

@Override
public Operation updateInstance(Instance instance, FieldMask fieldMask) throws SpannerException {
UpdateInstanceRequest request =
UpdateInstanceRequest.newBuilder().setInstance(instance).setFieldMask(fieldMask).build();
return get(
doUnaryCall(InstanceAdminGrpc.METHOD_UPDATE_INSTANCE, request, instance.getName(), null));
public OperationFuture<Instance, UpdateInstanceMetadata> updateInstance(
Instance instance, FieldMask fieldMask) throws SpannerException {
throw new UnsupportedOperationException("Not implemented: createInstance");
}

@Override
Expand Down Expand Up @@ -277,30 +275,16 @@ public Paginated<Database> listDatabases(
}

@Override
public Operation createDatabase(
String instanceName, String createDatabaseStatement, Iterable<String> additionalStatements)
throws SpannerException {
CreateDatabaseRequest request =
CreateDatabaseRequest.newBuilder()
.setParent(instanceName)
.setCreateStatement(createDatabaseStatement)
.addAllExtraStatements(additionalStatements)
.build();
return get(doUnaryCall(DatabaseAdminGrpc.METHOD_CREATE_DATABASE, request, instanceName, null));
public OperationFuture<Database, CreateDatabaseMetadata> createDatabase(
String instanceName, String createDatabaseStatement, Iterable<String> additionalStatements) {
throw new UnsupportedOperationException("Not Implemented: createDatabase");
}

@Override
public Operation updateDatabaseDdl(
public OperationFuture<Database, UpdateDatabaseDdlMetadata> updateDatabaseDdl(
String databaseName, Iterable<String> updateStatements, @Nullable String operationId)
throws SpannerException {
UpdateDatabaseDdlRequest request =
UpdateDatabaseDdlRequest.newBuilder()
.setDatabase(databaseName)
.addAllStatements(updateStatements)
.setOperationId(MoreObjects.firstNonNull(operationId, ""))
.build();
return get(
doUnaryCall(DatabaseAdminGrpc.METHOD_UPDATE_DATABASE_DDL, request, databaseName, null));
throw new UnsupportedOperationException("Not Implemented: updateDatabaseDdl");
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,20 @@

package com.google.cloud.spanner.spi.v1;

import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.ServiceRpc;
import com.google.cloud.spanner.SpannerException;
import com.google.cloud.spanner.spi.v1.SpannerRpc.Option;
import com.google.common.collect.ImmutableList;
import com.google.longrunning.Operation;
import com.google.protobuf.FieldMask;
import com.google.spanner.admin.database.v1.CreateDatabaseMetadata;
import com.google.spanner.admin.database.v1.Database;
import com.google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata;
import com.google.spanner.admin.instance.v1.CreateInstanceMetadata;
import com.google.spanner.admin.instance.v1.Instance;
import com.google.spanner.admin.instance.v1.InstanceConfig;
import com.google.spanner.admin.instance.v1.UpdateInstanceMetadata;
import com.google.spanner.v1.BeginTransactionRequest;
import com.google.spanner.v1.CommitRequest;
import com.google.spanner.v1.CommitResponse;
Expand Down Expand Up @@ -162,10 +167,10 @@ Paginated<InstanceConfig> listInstanceConfigs(int pageSize, @Nullable String pag
Paginated<Instance> listInstances(
int pageSize, @Nullable String pageToken, @Nullable String filter) throws SpannerException;

Operation createInstance(String parent, String instanceId, Instance instance)
OperationFuture<Instance, CreateInstanceMetadata> createInstance(String parent, String instanceId, Instance instance)
throws SpannerException;

Operation updateInstance(Instance instance, FieldMask fieldMask) throws SpannerException;
OperationFuture<Instance, UpdateInstanceMetadata> updateInstance(Instance instance, FieldMask fieldMask) throws SpannerException;

Instance getInstance(String instanceName) throws SpannerException;

Expand All @@ -175,11 +180,11 @@ Operation createInstance(String parent, String instanceId, Instance instance)
Paginated<Database> listDatabases(String instanceName, int pageSize, @Nullable String pageToken)
throws SpannerException;

Operation createDatabase(
OperationFuture<Database, CreateDatabaseMetadata> createDatabase(
String instanceName, String createDatabaseStatement, Iterable<String> additionalStatements)
throws SpannerException;

Operation updateDatabaseDdl(
OperationFuture<Database, UpdateDatabaseDdlMetadata> updateDatabaseDdl(
String databaseName, Iterable<String> updateDatabaseStatements, @Nullable String updateId)
throws SpannerException;

Expand Down

0 comments on commit 8e96b66

Please sign in to comment.