From 09f20bd43913a7a01985fd290964d134612c14eb Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Mon, 15 May 2023 15:58:34 +0530 Subject: [PATCH] feat: Add support for UpdateDatabase in Cloud Spanner (#2429) * feat: Add support for UpdateDatabase in Cloud Spanner PiperOrigin-RevId: 531423380 Source-Link: https://github.com/googleapis/googleapis/commit/3e054d1467e20b2f475eeb77f17a8595c5aa22d2 Source-Link: https://github.com/googleapis/googleapis-gen/commit/e347738483743e8e866cac722db0e9425356fc80 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZTM0NzczODQ4Mzc0M2U4ZTg2NmNhYzcyMmRiMGU5NDI1MzU2ZmM4MCJ9 Co-authored-by: Owl Bot Co-authored-by: Mend Renovate Co-authored-by: Rajat Bhatta <93644539+rajatbhatta@users.noreply.github.com> --- .../database/v1/DatabaseAdminClient.java | 231 +++ .../database/v1/DatabaseAdminSettings.java | 24 + .../admin/database/v1/gapic_metadata.json | 3 + .../database/v1/stub/DatabaseAdminStub.java | 11 + .../v1/stub/DatabaseAdminStubSettings.java | 71 + .../v1/stub/GrpcDatabaseAdminStub.java | 45 + .../v1/stub/HttpJsonDatabaseAdminStub.java | 74 + .../v1/DatabaseAdminClientHttpJsonTest.java | 103 ++ .../database/v1/DatabaseAdminClientTest.java | 76 + .../database/v1/MockDatabaseAdminImpl.java | 22 + .../admin/database/v1/DatabaseAdminGrpc.java | 267 +++- .../spanner/admin/database/v1/Database.java | 194 +++ .../admin/database/v1/DatabaseOrBuilder.java | 28 + .../v1/SpannerDatabaseAdminProto.java | 538 +++---- .../database/v1/UpdateDatabaseMetadata.java | 1291 +++++++++++++++++ .../v1/UpdateDatabaseMetadataOrBuilder.java | 142 ++ .../database/v1/UpdateDatabaseRequest.java | 1046 +++++++++++++ .../v1/UpdateDatabaseRequestOrBuilder.java | 113 ++ .../database/v1/spanner_database_admin.proto | 91 +- 19 files changed, 4107 insertions(+), 263 deletions(-) create mode 100644 proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseMetadata.java create mode 100644 proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseMetadataOrBuilder.java create mode 100644 proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseRequest.java create mode 100644 proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseRequestOrBuilder.java diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClient.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClient.java index d625748b5e..d7bfbec117 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClient.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClient.java @@ -74,6 +74,8 @@ import com.google.spanner.admin.database.v1.UpdateBackupRequest; import com.google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata; import com.google.spanner.admin.database.v1.UpdateDatabaseDdlRequest; +import com.google.spanner.admin.database.v1.UpdateDatabaseMetadata; +import com.google.spanner.admin.database.v1.UpdateDatabaseRequest; import java.io.IOException; import java.util.List; import java.util.concurrent.TimeUnit; @@ -725,6 +727,235 @@ public final UnaryCallable getDatabaseCallable() { return stub.getDatabaseCallable(); } + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Updates a Cloud Spanner database. The returned [long-running + * operation][google.longrunning.Operation] can be used to track the progress of updating the + * database. If the named database does not exist, returns `NOT_FOUND`. + * + *

While the operation is pending: + * + *

* The database's [reconciling][google.spanner.admin.database.v1.Database.reconciling] + * field is set to true. * Cancelling the operation is best-effort. If the cancellation + * succeeds, the operation metadata's + * [cancel_time][google.spanner.admin.database.v1.UpdateDatabaseMetadata.cancel_time] is set, the + * updates are reverted, and the operation terminates with a `CANCELLED` status. * New + * UpdateDatabase requests will return a `FAILED_PRECONDITION` error until the pending operation + * is done (returns successfully or with error). * Reading the database via the API continues + * to give the pre-request values. + * + *

Upon completion of the returned operation: + * + *

* The new values are in effect and readable via the API. * The database's + * [reconciling][google.spanner.admin.database.v1.Database.reconciling] field becomes false. + * + *

The returned [long-running operation][google.longrunning.Operation] will have a name of the + * format + * `projects/<project>/instances/<instance>/databases/<database>/operations/<operation_id>` + * and can be used to track the database modification. The + * [metadata][google.longrunning.Operation.metadata] field type is + * [UpdateDatabaseMetadata][google.spanner.admin.database.v1.UpdateDatabaseMetadata]. The + * [response][google.longrunning.Operation.response] field type is + * [Database][google.spanner.admin.database.v1.Database], if successful. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create()) {
+   *   Database database = Database.newBuilder().build();
+   *   FieldMask updateMask = FieldMask.newBuilder().build();
+   *   Database response = databaseAdminClient.updateDatabaseAsync(database, updateMask).get();
+   * }
+   * }
+ * + * @param database Required. The database to update. The `name` field of the database is of the + * form `projects/<project>/instances/<instance>/databases/<database>`. + * @param updateMask Required. The list of fields to update. Currently, only + * `enable_drop_protection` field can be updated. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final OperationFuture updateDatabaseAsync( + Database database, FieldMask updateMask) { + UpdateDatabaseRequest request = + UpdateDatabaseRequest.newBuilder().setDatabase(database).setUpdateMask(updateMask).build(); + return updateDatabaseAsync(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Updates a Cloud Spanner database. The returned [long-running + * operation][google.longrunning.Operation] can be used to track the progress of updating the + * database. If the named database does not exist, returns `NOT_FOUND`. + * + *

While the operation is pending: + * + *

* The database's [reconciling][google.spanner.admin.database.v1.Database.reconciling] + * field is set to true. * Cancelling the operation is best-effort. If the cancellation + * succeeds, the operation metadata's + * [cancel_time][google.spanner.admin.database.v1.UpdateDatabaseMetadata.cancel_time] is set, the + * updates are reverted, and the operation terminates with a `CANCELLED` status. * New + * UpdateDatabase requests will return a `FAILED_PRECONDITION` error until the pending operation + * is done (returns successfully or with error). * Reading the database via the API continues + * to give the pre-request values. + * + *

Upon completion of the returned operation: + * + *

* The new values are in effect and readable via the API. * The database's + * [reconciling][google.spanner.admin.database.v1.Database.reconciling] field becomes false. + * + *

The returned [long-running operation][google.longrunning.Operation] will have a name of the + * format + * `projects/<project>/instances/<instance>/databases/<database>/operations/<operation_id>` + * and can be used to track the database modification. The + * [metadata][google.longrunning.Operation.metadata] field type is + * [UpdateDatabaseMetadata][google.spanner.admin.database.v1.UpdateDatabaseMetadata]. The + * [response][google.longrunning.Operation.response] field type is + * [Database][google.spanner.admin.database.v1.Database], if successful. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create()) {
+   *   UpdateDatabaseRequest request =
+   *       UpdateDatabaseRequest.newBuilder()
+   *           .setDatabase(Database.newBuilder().build())
+   *           .setUpdateMask(FieldMask.newBuilder().build())
+   *           .build();
+   *   Database response = databaseAdminClient.updateDatabaseAsync(request).get();
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final OperationFuture updateDatabaseAsync( + UpdateDatabaseRequest request) { + return updateDatabaseOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Updates a Cloud Spanner database. The returned [long-running + * operation][google.longrunning.Operation] can be used to track the progress of updating the + * database. If the named database does not exist, returns `NOT_FOUND`. + * + *

While the operation is pending: + * + *

* The database's [reconciling][google.spanner.admin.database.v1.Database.reconciling] + * field is set to true. * Cancelling the operation is best-effort. If the cancellation + * succeeds, the operation metadata's + * [cancel_time][google.spanner.admin.database.v1.UpdateDatabaseMetadata.cancel_time] is set, the + * updates are reverted, and the operation terminates with a `CANCELLED` status. * New + * UpdateDatabase requests will return a `FAILED_PRECONDITION` error until the pending operation + * is done (returns successfully or with error). * Reading the database via the API continues + * to give the pre-request values. + * + *

Upon completion of the returned operation: + * + *

* The new values are in effect and readable via the API. * The database's + * [reconciling][google.spanner.admin.database.v1.Database.reconciling] field becomes false. + * + *

The returned [long-running operation][google.longrunning.Operation] will have a name of the + * format + * `projects/<project>/instances/<instance>/databases/<database>/operations/<operation_id>` + * and can be used to track the database modification. The + * [metadata][google.longrunning.Operation.metadata] field type is + * [UpdateDatabaseMetadata][google.spanner.admin.database.v1.UpdateDatabaseMetadata]. The + * [response][google.longrunning.Operation.response] field type is + * [Database][google.spanner.admin.database.v1.Database], if successful. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create()) {
+   *   UpdateDatabaseRequest request =
+   *       UpdateDatabaseRequest.newBuilder()
+   *           .setDatabase(Database.newBuilder().build())
+   *           .setUpdateMask(FieldMask.newBuilder().build())
+   *           .build();
+   *   OperationFuture future =
+   *       databaseAdminClient.updateDatabaseOperationCallable().futureCall(request);
+   *   // Do something.
+   *   Database response = future.get();
+   * }
+   * }
+ */ + public final OperationCallable + updateDatabaseOperationCallable() { + return stub.updateDatabaseOperationCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Updates a Cloud Spanner database. The returned [long-running + * operation][google.longrunning.Operation] can be used to track the progress of updating the + * database. If the named database does not exist, returns `NOT_FOUND`. + * + *

While the operation is pending: + * + *

* The database's [reconciling][google.spanner.admin.database.v1.Database.reconciling] + * field is set to true. * Cancelling the operation is best-effort. If the cancellation + * succeeds, the operation metadata's + * [cancel_time][google.spanner.admin.database.v1.UpdateDatabaseMetadata.cancel_time] is set, the + * updates are reverted, and the operation terminates with a `CANCELLED` status. * New + * UpdateDatabase requests will return a `FAILED_PRECONDITION` error until the pending operation + * is done (returns successfully or with error). * Reading the database via the API continues + * to give the pre-request values. + * + *

Upon completion of the returned operation: + * + *

* The new values are in effect and readable via the API. * The database's + * [reconciling][google.spanner.admin.database.v1.Database.reconciling] field becomes false. + * + *

The returned [long-running operation][google.longrunning.Operation] will have a name of the + * format + * `projects/<project>/instances/<instance>/databases/<database>/operations/<operation_id>` + * and can be used to track the database modification. The + * [metadata][google.longrunning.Operation.metadata] field type is + * [UpdateDatabaseMetadata][google.spanner.admin.database.v1.UpdateDatabaseMetadata]. The + * [response][google.longrunning.Operation.response] field type is + * [Database][google.spanner.admin.database.v1.Database], if successful. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create()) {
+   *   UpdateDatabaseRequest request =
+   *       UpdateDatabaseRequest.newBuilder()
+   *           .setDatabase(Database.newBuilder().build())
+   *           .setUpdateMask(FieldMask.newBuilder().build())
+   *           .build();
+   *   ApiFuture future =
+   *       databaseAdminClient.updateDatabaseCallable().futureCall(request);
+   *   // Do something.
+   *   Operation response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable updateDatabaseCallable() { + return stub.updateDatabaseCallable(); + } + // AUTO-GENERATED DOCUMENTATION AND METHOD. /** * Updates the schema of a Cloud Spanner database by creating/altering/dropping tables, columns, diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminSettings.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminSettings.java index 7f86f2a522..357efd0042 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminSettings.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminSettings.java @@ -72,6 +72,8 @@ import com.google.spanner.admin.database.v1.UpdateBackupRequest; import com.google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata; import com.google.spanner.admin.database.v1.UpdateDatabaseDdlRequest; +import com.google.spanner.admin.database.v1.UpdateDatabaseMetadata; +import com.google.spanner.admin.database.v1.UpdateDatabaseRequest; import java.io.IOException; import java.util.List; import javax.annotation.Generated; @@ -137,6 +139,17 @@ public UnaryCallSettings getDatabaseSettings() { return ((DatabaseAdminStubSettings) getStubSettings()).getDatabaseSettings(); } + /** Returns the object with the settings used for calls to updateDatabase. */ + public UnaryCallSettings updateDatabaseSettings() { + return ((DatabaseAdminStubSettings) getStubSettings()).updateDatabaseSettings(); + } + + /** Returns the object with the settings used for calls to updateDatabase. */ + public OperationCallSettings + updateDatabaseOperationSettings() { + return ((DatabaseAdminStubSettings) getStubSettings()).updateDatabaseOperationSettings(); + } + /** Returns the object with the settings used for calls to updateDatabaseDdl. */ public UnaryCallSettings updateDatabaseDdlSettings() { return ((DatabaseAdminStubSettings) getStubSettings()).updateDatabaseDdlSettings(); @@ -391,6 +404,17 @@ public UnaryCallSettings.Builder getDatabaseSettin return getStubSettingsBuilder().getDatabaseSettings(); } + /** Returns the builder for the settings used for calls to updateDatabase. */ + public UnaryCallSettings.Builder updateDatabaseSettings() { + return getStubSettingsBuilder().updateDatabaseSettings(); + } + + /** Returns the builder for the settings used for calls to updateDatabase. */ + public OperationCallSettings.Builder + updateDatabaseOperationSettings() { + return getStubSettingsBuilder().updateDatabaseOperationSettings(); + } + /** Returns the builder for the settings used for calls to updateDatabaseDdl. */ public UnaryCallSettings.Builder updateDatabaseDdlSettings() { diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/gapic_metadata.json b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/gapic_metadata.json index 9a63c0b689..01fcbd4de1 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/gapic_metadata.json +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/gapic_metadata.json @@ -64,6 +64,9 @@ "UpdateBackup": { "methods": ["updateBackup", "updateBackup", "updateBackupCallable"] }, + "UpdateDatabase": { + "methods": ["updateDatabaseAsync", "updateDatabaseAsync", "updateDatabaseOperationCallable", "updateDatabaseCallable"] + }, "UpdateDatabaseDdl": { "methods": ["updateDatabaseDdlAsync", "updateDatabaseDdlAsync", "updateDatabaseDdlAsync", "updateDatabaseDdlOperationCallable", "updateDatabaseDdlCallable"] } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStub.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStub.java index 4dbf5e3c21..3cebe17a2d 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStub.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStub.java @@ -62,6 +62,8 @@ import com.google.spanner.admin.database.v1.UpdateBackupRequest; import com.google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata; import com.google.spanner.admin.database.v1.UpdateDatabaseDdlRequest; +import com.google.spanner.admin.database.v1.UpdateDatabaseMetadata; +import com.google.spanner.admin.database.v1.UpdateDatabaseRequest; import javax.annotation.Generated; // AUTO-GENERATED DOCUMENTATION AND CLASS. @@ -103,6 +105,15 @@ public UnaryCallable getDatabaseCallable() { throw new UnsupportedOperationException("Not implemented: getDatabaseCallable()"); } + public OperationCallable + updateDatabaseOperationCallable() { + throw new UnsupportedOperationException("Not implemented: updateDatabaseOperationCallable()"); + } + + public UnaryCallable updateDatabaseCallable() { + throw new UnsupportedOperationException("Not implemented: updateDatabaseCallable()"); + } + public OperationCallable updateDatabaseDdlOperationCallable() { throw new UnsupportedOperationException( diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStubSettings.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStubSettings.java index f7836e028e..7f60dcc14a 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStubSettings.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/DatabaseAdminStubSettings.java @@ -92,6 +92,8 @@ import com.google.spanner.admin.database.v1.UpdateBackupRequest; import com.google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata; import com.google.spanner.admin.database.v1.UpdateDatabaseDdlRequest; +import com.google.spanner.admin.database.v1.UpdateDatabaseMetadata; +import com.google.spanner.admin.database.v1.UpdateDatabaseRequest; import java.io.IOException; import java.util.List; import javax.annotation.Generated; @@ -150,6 +152,9 @@ public class DatabaseAdminStubSettings extends StubSettings createDatabaseOperationSettings; private final UnaryCallSettings getDatabaseSettings; + private final UnaryCallSettings updateDatabaseSettings; + private final OperationCallSettings + updateDatabaseOperationSettings; private final UnaryCallSettings updateDatabaseDdlSettings; private final OperationCallSettings updateDatabaseDdlOperationSettings; @@ -506,6 +511,17 @@ public UnaryCallSettings getDatabaseSettings() { return getDatabaseSettings; } + /** Returns the object with the settings used for calls to updateDatabase. */ + public UnaryCallSettings updateDatabaseSettings() { + return updateDatabaseSettings; + } + + /** Returns the object with the settings used for calls to updateDatabase. */ + public OperationCallSettings + updateDatabaseOperationSettings() { + return updateDatabaseOperationSettings; + } + /** Returns the object with the settings used for calls to updateDatabaseDdl. */ public UnaryCallSettings updateDatabaseDdlSettings() { return updateDatabaseDdlSettings; @@ -732,6 +748,8 @@ protected DatabaseAdminStubSettings(Builder settingsBuilder) throws IOException createDatabaseSettings = settingsBuilder.createDatabaseSettings().build(); createDatabaseOperationSettings = settingsBuilder.createDatabaseOperationSettings().build(); getDatabaseSettings = settingsBuilder.getDatabaseSettings().build(); + updateDatabaseSettings = settingsBuilder.updateDatabaseSettings().build(); + updateDatabaseOperationSettings = settingsBuilder.updateDatabaseOperationSettings().build(); updateDatabaseDdlSettings = settingsBuilder.updateDatabaseDdlSettings().build(); updateDatabaseDdlOperationSettings = settingsBuilder.updateDatabaseDdlOperationSettings().build(); @@ -767,6 +785,11 @@ public static class Builder extends StubSettings.Builder createDatabaseOperationSettings; private final UnaryCallSettings.Builder getDatabaseSettings; + private final UnaryCallSettings.Builder + updateDatabaseSettings; + private final OperationCallSettings.Builder< + UpdateDatabaseRequest, Database, UpdateDatabaseMetadata> + updateDatabaseOperationSettings; private final UnaryCallSettings.Builder updateDatabaseDdlSettings; private final OperationCallSettings.Builder< @@ -889,6 +912,8 @@ protected Builder(ClientContext clientContext) { createDatabaseSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); createDatabaseOperationSettings = OperationCallSettings.newBuilder(); getDatabaseSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + updateDatabaseSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + updateDatabaseOperationSettings = OperationCallSettings.newBuilder(); updateDatabaseDdlSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); updateDatabaseDdlOperationSettings = OperationCallSettings.newBuilder(); dropDatabaseSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); @@ -917,6 +942,7 @@ protected Builder(ClientContext clientContext) { listDatabasesSettings, createDatabaseSettings, getDatabaseSettings, + updateDatabaseSettings, updateDatabaseDdlSettings, dropDatabaseSettings, getDatabaseDdlSettings, @@ -943,6 +969,8 @@ protected Builder(DatabaseAdminStubSettings settings) { createDatabaseSettings = settings.createDatabaseSettings.toBuilder(); createDatabaseOperationSettings = settings.createDatabaseOperationSettings.toBuilder(); getDatabaseSettings = settings.getDatabaseSettings.toBuilder(); + updateDatabaseSettings = settings.updateDatabaseSettings.toBuilder(); + updateDatabaseOperationSettings = settings.updateDatabaseOperationSettings.toBuilder(); updateDatabaseDdlSettings = settings.updateDatabaseDdlSettings.toBuilder(); updateDatabaseDdlOperationSettings = settings.updateDatabaseDdlOperationSettings.toBuilder(); dropDatabaseSettings = settings.dropDatabaseSettings.toBuilder(); @@ -969,6 +997,7 @@ protected Builder(DatabaseAdminStubSettings settings) { listDatabasesSettings, createDatabaseSettings, getDatabaseSettings, + updateDatabaseSettings, updateDatabaseDdlSettings, dropDatabaseSettings, getDatabaseDdlSettings, @@ -1029,6 +1058,11 @@ private static Builder initDefaults(Builder builder) { .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes")) .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params")); + builder + .updateDatabaseSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params")); + builder .updateDatabaseDdlSettings() .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes")) @@ -1133,6 +1167,30 @@ private static Builder initDefaults(Builder builder) { .setTotalTimeout(Duration.ofMillis(86400000L)) .build())); + builder + .updateDatabaseOperationSettings() + .setInitialCallSettings( + UnaryCallSettings + .newUnaryCallSettingsBuilder() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params")) + .build()) + .setResponseTransformer( + ProtoOperationTransformers.ResponseTransformer.create(Database.class)) + .setMetadataTransformer( + ProtoOperationTransformers.MetadataTransformer.create(UpdateDatabaseMetadata.class)) + .setPollingAlgorithm( + OperationTimedPollAlgorithm.create( + RetrySettings.newBuilder() + .setInitialRetryDelay(Duration.ofMillis(5000L)) + .setRetryDelayMultiplier(1.5) + .setMaxRetryDelay(Duration.ofMillis(45000L)) + .setInitialRpcTimeout(Duration.ZERO) + .setRpcTimeoutMultiplier(1.0) + .setMaxRpcTimeout(Duration.ZERO) + .setTotalTimeout(Duration.ofMillis(300000L)) + .build())); + builder .updateDatabaseDdlOperationSettings() .setInitialCallSettings( @@ -1272,6 +1330,19 @@ public UnaryCallSettings.Builder getDatabaseSettin return getDatabaseSettings; } + /** Returns the builder for the settings used for calls to updateDatabase. */ + public UnaryCallSettings.Builder updateDatabaseSettings() { + return updateDatabaseSettings; + } + + /** Returns the builder for the settings used for calls to updateDatabase. */ + @BetaApi( + "The surface for use by generated code is not stable yet and may change in the future.") + public OperationCallSettings.Builder + updateDatabaseOperationSettings() { + return updateDatabaseOperationSettings; + } + /** Returns the builder for the settings used for calls to updateDatabaseDdl. */ public UnaryCallSettings.Builder updateDatabaseDdlSettings() { diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/GrpcDatabaseAdminStub.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/GrpcDatabaseAdminStub.java index 84b44e2ded..97c318b056 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/GrpcDatabaseAdminStub.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/GrpcDatabaseAdminStub.java @@ -67,6 +67,8 @@ import com.google.spanner.admin.database.v1.UpdateBackupRequest; import com.google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata; import com.google.spanner.admin.database.v1.UpdateDatabaseDdlRequest; +import com.google.spanner.admin.database.v1.UpdateDatabaseMetadata; +import com.google.spanner.admin.database.v1.UpdateDatabaseRequest; import io.grpc.MethodDescriptor; import io.grpc.protobuf.ProtoUtils; import java.io.IOException; @@ -110,6 +112,16 @@ public class GrpcDatabaseAdminStub extends DatabaseAdminStub { .setResponseMarshaller(ProtoUtils.marshaller(Database.getDefaultInstance())) .build(); + private static final MethodDescriptor + updateDatabaseMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.spanner.admin.database.v1.DatabaseAdmin/UpdateDatabase") + .setRequestMarshaller( + ProtoUtils.marshaller(UpdateDatabaseRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(Operation.getDefaultInstance())) + .build(); + private static final MethodDescriptor updateDatabaseDdlMethodDescriptor = MethodDescriptor.newBuilder() @@ -272,6 +284,9 @@ public class GrpcDatabaseAdminStub extends DatabaseAdminStub { private final OperationCallable createDatabaseOperationCallable; private final UnaryCallable getDatabaseCallable; + private final UnaryCallable updateDatabaseCallable; + private final OperationCallable + updateDatabaseOperationCallable; private final UnaryCallable updateDatabaseDdlCallable; private final OperationCallable updateDatabaseDdlOperationCallable; @@ -381,6 +396,16 @@ protected GrpcDatabaseAdminStub( return params.build(); }) .build(); + GrpcCallSettings updateDatabaseTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(updateDatabaseMethodDescriptor) + .setParamsExtractor( + request -> { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("database.name", String.valueOf(request.getDatabase().getName())); + return params.build(); + }) + .build(); GrpcCallSettings updateDatabaseDdlTransportSettings = GrpcCallSettings.newBuilder() .setMethodDescriptor(updateDatabaseDdlMethodDescriptor) @@ -566,6 +591,15 @@ protected GrpcDatabaseAdminStub( this.getDatabaseCallable = callableFactory.createUnaryCallable( getDatabaseTransportSettings, settings.getDatabaseSettings(), clientContext); + this.updateDatabaseCallable = + callableFactory.createUnaryCallable( + updateDatabaseTransportSettings, settings.updateDatabaseSettings(), clientContext); + this.updateDatabaseOperationCallable = + callableFactory.createOperationCallable( + updateDatabaseTransportSettings, + settings.updateDatabaseOperationSettings(), + clientContext, + operationsStub); this.updateDatabaseDdlCallable = callableFactory.createUnaryCallable( updateDatabaseDdlTransportSettings, @@ -702,6 +736,17 @@ public UnaryCallable getDatabaseCallable() { return getDatabaseCallable; } + @Override + public UnaryCallable updateDatabaseCallable() { + return updateDatabaseCallable; + } + + @Override + public OperationCallable + updateDatabaseOperationCallable() { + return updateDatabaseOperationCallable; + } + @Override public UnaryCallable updateDatabaseDdlCallable() { return updateDatabaseDdlCallable; diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/HttpJsonDatabaseAdminStub.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/HttpJsonDatabaseAdminStub.java index af9509761d..12065de983 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/HttpJsonDatabaseAdminStub.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/admin/database/v1/stub/HttpJsonDatabaseAdminStub.java @@ -76,6 +76,8 @@ import com.google.spanner.admin.database.v1.UpdateBackupRequest; import com.google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata; import com.google.spanner.admin.database.v1.UpdateDatabaseDdlRequest; +import com.google.spanner.admin.database.v1.UpdateDatabaseMetadata; +import com.google.spanner.admin.database.v1.UpdateDatabaseRequest; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; @@ -102,6 +104,7 @@ public class HttpJsonDatabaseAdminStub extends DatabaseAdminStub { .add(Database.getDescriptor()) .add(Backup.getDescriptor()) .add(CopyBackupMetadata.getDescriptor()) + .add(UpdateDatabaseMetadata.getDescriptor()) .add(UpdateDatabaseDdlMetadata.getDescriptor()) .build(); @@ -215,6 +218,48 @@ public class HttpJsonDatabaseAdminStub extends DatabaseAdminStub { .build()) .build(); + private static final ApiMethodDescriptor + updateDatabaseMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.spanner.admin.database.v1.DatabaseAdmin/UpdateDatabase") + .setHttpMethod("PATCH") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/{database.name=projects/*/instances/*/databases/*}", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam( + fields, "database.name", request.getDatabase().getName()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "updateMask", request.getUpdateMask()); + serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("database", request.getDatabase(), true)) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(Operation.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .setOperationSnapshotFactory( + (UpdateDatabaseRequest request, Operation response) -> + HttpJsonOperationSnapshot.create(response)) + .build(); + private static final ApiMethodDescriptor updateDatabaseDdlMethodDescriptor = ApiMethodDescriptor.newBuilder() @@ -831,6 +876,9 @@ public class HttpJsonDatabaseAdminStub extends DatabaseAdminStub { private final OperationCallable createDatabaseOperationCallable; private final UnaryCallable getDatabaseCallable; + private final UnaryCallable updateDatabaseCallable; + private final OperationCallable + updateDatabaseOperationCallable; private final UnaryCallable updateDatabaseDdlCallable; private final OperationCallable updateDatabaseDdlOperationCallable; @@ -1006,6 +1054,11 @@ protected HttpJsonDatabaseAdminStub( .setMethodDescriptor(getDatabaseMethodDescriptor) .setTypeRegistry(typeRegistry) .build(); + HttpJsonCallSettings updateDatabaseTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(updateDatabaseMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); HttpJsonCallSettings updateDatabaseDdlTransportSettings = HttpJsonCallSettings.newBuilder() .setMethodDescriptor(updateDatabaseDdlMethodDescriptor) @@ -1112,6 +1165,15 @@ protected HttpJsonDatabaseAdminStub( this.getDatabaseCallable = callableFactory.createUnaryCallable( getDatabaseTransportSettings, settings.getDatabaseSettings(), clientContext); + this.updateDatabaseCallable = + callableFactory.createUnaryCallable( + updateDatabaseTransportSettings, settings.updateDatabaseSettings(), clientContext); + this.updateDatabaseOperationCallable = + callableFactory.createOperationCallable( + updateDatabaseTransportSettings, + settings.updateDatabaseOperationSettings(), + clientContext, + httpJsonOperationsStub); this.updateDatabaseDdlCallable = callableFactory.createUnaryCallable( updateDatabaseDdlTransportSettings, @@ -1223,6 +1285,7 @@ public static List getMethodDescriptors() { methodDescriptors.add(listDatabasesMethodDescriptor); methodDescriptors.add(createDatabaseMethodDescriptor); methodDescriptors.add(getDatabaseMethodDescriptor); + methodDescriptors.add(updateDatabaseMethodDescriptor); methodDescriptors.add(updateDatabaseDdlMethodDescriptor); methodDescriptors.add(dropDatabaseMethodDescriptor); methodDescriptors.add(getDatabaseDdlMethodDescriptor); @@ -1273,6 +1336,17 @@ public UnaryCallable getDatabaseCallable() { return getDatabaseCallable; } + @Override + public UnaryCallable updateDatabaseCallable() { + return updateDatabaseCallable; + } + + @Override + public OperationCallable + updateDatabaseOperationCallable() { + return updateDatabaseOperationCallable; + } + @Override public UnaryCallable updateDatabaseDdlCallable() { return updateDatabaseDdlCallable; diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClientHttpJsonTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClientHttpJsonTest.java index 31e6d9d97f..103d0f4f09 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClientHttpJsonTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClientHttpJsonTest.java @@ -221,6 +221,8 @@ public void createDatabaseTest() throws Exception { .setEarliestVersionTime(Timestamp.newBuilder().build()) .setDefaultLeader("defaultLeader759009962") .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .setEnableDropProtection(true) + .setReconciling(true) .build(); Operation resultOperation = Operation.newBuilder() @@ -280,6 +282,8 @@ public void createDatabaseTest2() throws Exception { .setEarliestVersionTime(Timestamp.newBuilder().build()) .setDefaultLeader("defaultLeader759009962") .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .setEnableDropProtection(true) + .setReconciling(true) .build(); Operation resultOperation = Operation.newBuilder() @@ -339,6 +343,8 @@ public void getDatabaseTest() throws Exception { .setEarliestVersionTime(Timestamp.newBuilder().build()) .setDefaultLeader("defaultLeader759009962") .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .setEnableDropProtection(true) + .setReconciling(true) .build(); mockService.addResponse(expectedResponse); @@ -391,6 +397,8 @@ public void getDatabaseTest2() throws Exception { .setEarliestVersionTime(Timestamp.newBuilder().build()) .setDefaultLeader("defaultLeader759009962") .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .setEnableDropProtection(true) + .setReconciling(true) .build(); mockService.addResponse(expectedResponse); @@ -430,6 +438,93 @@ public void getDatabaseExceptionTest2() throws Exception { } } + @Test + public void updateDatabaseTest() throws Exception { + Database expectedResponse = + Database.newBuilder() + .setName(DatabaseName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]").toString()) + .setCreateTime(Timestamp.newBuilder().build()) + .setRestoreInfo(RestoreInfo.newBuilder().build()) + .setEncryptionConfig(EncryptionConfig.newBuilder().build()) + .addAllEncryptionInfo(new ArrayList()) + .setVersionRetentionPeriod("versionRetentionPeriod-629783929") + .setEarliestVersionTime(Timestamp.newBuilder().build()) + .setDefaultLeader("defaultLeader759009962") + .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .setEnableDropProtection(true) + .setReconciling(true) + .build(); + Operation resultOperation = + Operation.newBuilder() + .setName("updateDatabaseTest") + .setDone(true) + .setResponse(Any.pack(expectedResponse)) + .build(); + mockService.addResponse(resultOperation); + + Database database = + Database.newBuilder() + .setName(DatabaseName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]").toString()) + .setCreateTime(Timestamp.newBuilder().build()) + .setRestoreInfo(RestoreInfo.newBuilder().build()) + .setEncryptionConfig(EncryptionConfig.newBuilder().build()) + .addAllEncryptionInfo(new ArrayList()) + .setVersionRetentionPeriod("versionRetentionPeriod-629783929") + .setEarliestVersionTime(Timestamp.newBuilder().build()) + .setDefaultLeader("defaultLeader759009962") + .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .setEnableDropProtection(true) + .setReconciling(true) + .build(); + FieldMask updateMask = FieldMask.newBuilder().build(); + + Database actualResponse = client.updateDatabaseAsync(database, updateMask).get(); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void updateDatabaseExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + Database database = + Database.newBuilder() + .setName(DatabaseName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]").toString()) + .setCreateTime(Timestamp.newBuilder().build()) + .setRestoreInfo(RestoreInfo.newBuilder().build()) + .setEncryptionConfig(EncryptionConfig.newBuilder().build()) + .addAllEncryptionInfo(new ArrayList()) + .setVersionRetentionPeriod("versionRetentionPeriod-629783929") + .setEarliestVersionTime(Timestamp.newBuilder().build()) + .setDefaultLeader("defaultLeader759009962") + .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .setEnableDropProtection(true) + .setReconciling(true) + .build(); + FieldMask updateMask = FieldMask.newBuilder().build(); + client.updateDatabaseAsync(database, updateMask).get(); + Assert.fail("No exception raised"); + } catch (ExecutionException e) { + } + } + @Test public void updateDatabaseDdlTest() throws Exception { Empty expectedResponse = Empty.newBuilder().build(); @@ -1741,6 +1836,8 @@ public void restoreDatabaseTest() throws Exception { .setEarliestVersionTime(Timestamp.newBuilder().build()) .setDefaultLeader("defaultLeader759009962") .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .setEnableDropProtection(true) + .setReconciling(true) .build(); Operation resultOperation = Operation.newBuilder() @@ -1802,6 +1899,8 @@ public void restoreDatabaseTest2() throws Exception { .setEarliestVersionTime(Timestamp.newBuilder().build()) .setDefaultLeader("defaultLeader759009962") .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .setEnableDropProtection(true) + .setReconciling(true) .build(); Operation resultOperation = Operation.newBuilder() @@ -1863,6 +1962,8 @@ public void restoreDatabaseTest3() throws Exception { .setEarliestVersionTime(Timestamp.newBuilder().build()) .setDefaultLeader("defaultLeader759009962") .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .setEnableDropProtection(true) + .setReconciling(true) .build(); Operation resultOperation = Operation.newBuilder() @@ -1924,6 +2025,8 @@ public void restoreDatabaseTest4() throws Exception { .setEarliestVersionTime(Timestamp.newBuilder().build()) .setDefaultLeader("defaultLeader759009962") .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .setEnableDropProtection(true) + .setReconciling(true) .build(); Operation resultOperation = Operation.newBuilder() diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClientTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClientTest.java index 51c780c982..9d2c02a661 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClientTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/DatabaseAdminClientTest.java @@ -78,6 +78,7 @@ import com.google.spanner.admin.database.v1.RestoreInfo; import com.google.spanner.admin.database.v1.UpdateBackupRequest; import com.google.spanner.admin.database.v1.UpdateDatabaseDdlRequest; +import com.google.spanner.admin.database.v1.UpdateDatabaseRequest; import io.grpc.StatusRuntimeException; import java.io.IOException; import java.util.ArrayList; @@ -232,6 +233,8 @@ public void createDatabaseTest() throws Exception { .setEarliestVersionTime(Timestamp.newBuilder().build()) .setDefaultLeader("defaultLeader759009962") .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .setEnableDropProtection(true) + .setReconciling(true) .build(); Operation resultOperation = Operation.newBuilder() @@ -289,6 +292,8 @@ public void createDatabaseTest2() throws Exception { .setEarliestVersionTime(Timestamp.newBuilder().build()) .setDefaultLeader("defaultLeader759009962") .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .setEnableDropProtection(true) + .setReconciling(true) .build(); Operation resultOperation = Operation.newBuilder() @@ -346,6 +351,8 @@ public void getDatabaseTest() throws Exception { .setEarliestVersionTime(Timestamp.newBuilder().build()) .setDefaultLeader("defaultLeader759009962") .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .setEnableDropProtection(true) + .setReconciling(true) .build(); mockDatabaseAdmin.addResponse(expectedResponse); @@ -392,6 +399,8 @@ public void getDatabaseTest2() throws Exception { .setEarliestVersionTime(Timestamp.newBuilder().build()) .setDefaultLeader("defaultLeader759009962") .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .setEnableDropProtection(true) + .setReconciling(true) .build(); mockDatabaseAdmin.addResponse(expectedResponse); @@ -425,6 +434,65 @@ public void getDatabaseExceptionTest2() throws Exception { } } + @Test + public void updateDatabaseTest() throws Exception { + Database expectedResponse = + Database.newBuilder() + .setName(DatabaseName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]").toString()) + .setCreateTime(Timestamp.newBuilder().build()) + .setRestoreInfo(RestoreInfo.newBuilder().build()) + .setEncryptionConfig(EncryptionConfig.newBuilder().build()) + .addAllEncryptionInfo(new ArrayList()) + .setVersionRetentionPeriod("versionRetentionPeriod-629783929") + .setEarliestVersionTime(Timestamp.newBuilder().build()) + .setDefaultLeader("defaultLeader759009962") + .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .setEnableDropProtection(true) + .setReconciling(true) + .build(); + Operation resultOperation = + Operation.newBuilder() + .setName("updateDatabaseTest") + .setDone(true) + .setResponse(Any.pack(expectedResponse)) + .build(); + mockDatabaseAdmin.addResponse(resultOperation); + + Database database = Database.newBuilder().build(); + FieldMask updateMask = FieldMask.newBuilder().build(); + + Database actualResponse = client.updateDatabaseAsync(database, updateMask).get(); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockDatabaseAdmin.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + UpdateDatabaseRequest actualRequest = ((UpdateDatabaseRequest) actualRequests.get(0)); + + Assert.assertEquals(database, actualRequest.getDatabase()); + Assert.assertEquals(updateMask, actualRequest.getUpdateMask()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void updateDatabaseExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockDatabaseAdmin.addException(exception); + + try { + Database database = Database.newBuilder().build(); + FieldMask updateMask = FieldMask.newBuilder().build(); + client.updateDatabaseAsync(database, updateMask).get(); + Assert.fail("No exception raised"); + } catch (ExecutionException e) { + Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass()); + InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause()); + Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); + } + } + @Test public void updateDatabaseDdlTest() throws Exception { Empty expectedResponse = Empty.newBuilder().build(); @@ -1607,6 +1675,8 @@ public void restoreDatabaseTest() throws Exception { .setEarliestVersionTime(Timestamp.newBuilder().build()) .setDefaultLeader("defaultLeader759009962") .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .setEnableDropProtection(true) + .setReconciling(true) .build(); Operation resultOperation = Operation.newBuilder() @@ -1667,6 +1737,8 @@ public void restoreDatabaseTest2() throws Exception { .setEarliestVersionTime(Timestamp.newBuilder().build()) .setDefaultLeader("defaultLeader759009962") .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .setEnableDropProtection(true) + .setReconciling(true) .build(); Operation resultOperation = Operation.newBuilder() @@ -1727,6 +1799,8 @@ public void restoreDatabaseTest3() throws Exception { .setEarliestVersionTime(Timestamp.newBuilder().build()) .setDefaultLeader("defaultLeader759009962") .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .setEnableDropProtection(true) + .setReconciling(true) .build(); Operation resultOperation = Operation.newBuilder() @@ -1787,6 +1861,8 @@ public void restoreDatabaseTest4() throws Exception { .setEarliestVersionTime(Timestamp.newBuilder().build()) .setDefaultLeader("defaultLeader759009962") .setDatabaseDialect(DatabaseDialect.forNumber(0)) + .setEnableDropProtection(true) + .setReconciling(true) .build(); Operation resultOperation = Operation.newBuilder() diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/MockDatabaseAdminImpl.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/MockDatabaseAdminImpl.java index 30199947ae..14ab13fd74 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/MockDatabaseAdminImpl.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/admin/database/v1/MockDatabaseAdminImpl.java @@ -50,6 +50,7 @@ import com.google.spanner.admin.database.v1.RestoreDatabaseRequest; import com.google.spanner.admin.database.v1.UpdateBackupRequest; import com.google.spanner.admin.database.v1.UpdateDatabaseDdlRequest; +import com.google.spanner.admin.database.v1.UpdateDatabaseRequest; import io.grpc.stub.StreamObserver; import java.util.ArrayList; import java.util.LinkedList; @@ -151,6 +152,27 @@ public void getDatabase(GetDatabaseRequest request, StreamObserver res } } + @Override + public void updateDatabase( + UpdateDatabaseRequest request, StreamObserver responseObserver) { + Object response = responses.poll(); + if (response instanceof Operation) { + requests.add(request); + responseObserver.onNext(((Operation) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method UpdateDatabase, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + Operation.class.getName(), + Exception.class.getName()))); + } + } + @Override public void updateDatabaseDdl( UpdateDatabaseDdlRequest request, StreamObserver responseObserver) { diff --git a/grpc-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseAdminGrpc.java b/grpc-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseAdminGrpc.java index 224679c601..5fb4137fd2 100644 --- a/grpc-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseAdminGrpc.java +++ b/grpc-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseAdminGrpc.java @@ -178,6 +178,52 @@ private DatabaseAdminGrpc() {} return getGetDatabaseMethod; } + private static volatile io.grpc.MethodDescriptor< + com.google.spanner.admin.database.v1.UpdateDatabaseRequest, + com.google.longrunning.Operation> + getUpdateDatabaseMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "UpdateDatabase", + requestType = com.google.spanner.admin.database.v1.UpdateDatabaseRequest.class, + responseType = com.google.longrunning.Operation.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor< + com.google.spanner.admin.database.v1.UpdateDatabaseRequest, + com.google.longrunning.Operation> + getUpdateDatabaseMethod() { + io.grpc.MethodDescriptor< + com.google.spanner.admin.database.v1.UpdateDatabaseRequest, + com.google.longrunning.Operation> + getUpdateDatabaseMethod; + if ((getUpdateDatabaseMethod = DatabaseAdminGrpc.getUpdateDatabaseMethod) == null) { + synchronized (DatabaseAdminGrpc.class) { + if ((getUpdateDatabaseMethod = DatabaseAdminGrpc.getUpdateDatabaseMethod) == null) { + DatabaseAdminGrpc.getUpdateDatabaseMethod = + getUpdateDatabaseMethod = + io.grpc.MethodDescriptor + . + newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "UpdateDatabase")) + .setSampledToLocalTracing(true) + .setRequestMarshaller( + io.grpc.protobuf.ProtoUtils.marshaller( + com.google.spanner.admin.database.v1.UpdateDatabaseRequest + .getDefaultInstance())) + .setResponseMarshaller( + io.grpc.protobuf.ProtoUtils.marshaller( + com.google.longrunning.Operation.getDefaultInstance())) + .setSchemaDescriptor( + new DatabaseAdminMethodDescriptorSupplier("UpdateDatabase")) + .build(); + } + } + } + return getUpdateDatabaseMethod; + } + private static volatile io.grpc.MethodDescriptor< com.google.spanner.admin.database.v1.UpdateDatabaseDdlRequest, com.google.longrunning.Operation> @@ -1002,6 +1048,50 @@ default void getDatabase( getGetDatabaseMethod(), responseObserver); } + /** + * + * + *
+     * Updates a Cloud Spanner database. The returned
+     * [long-running operation][google.longrunning.Operation] can be used to track
+     * the progress of updating the database. If the named database does not
+     * exist, returns `NOT_FOUND`.
+     * While the operation is pending:
+     *   * The database's
+     *     [reconciling][google.spanner.admin.database.v1.Database.reconciling]
+     *     field is set to true.
+     *   * Cancelling the operation is best-effort. If the cancellation succeeds,
+     *     the operation metadata's
+     *     [cancel_time][google.spanner.admin.database.v1.UpdateDatabaseMetadata.cancel_time]
+     *     is set, the updates are reverted, and the operation terminates with a
+     *     `CANCELLED` status.
+     *   * New UpdateDatabase requests will return a `FAILED_PRECONDITION` error
+     *     until the pending operation is done (returns successfully or with
+     *     error).
+     *   * Reading the database via the API continues to give the pre-request
+     *     values.
+     * Upon completion of the returned operation:
+     *   * The new values are in effect and readable via the API.
+     *   * The database's
+     *     [reconciling][google.spanner.admin.database.v1.Database.reconciling]
+     *     field becomes false.
+     * The returned [long-running operation][google.longrunning.Operation] will
+     * have a name of the format
+     * `projects/<project>/instances/<instance>/databases/<database>/operations/<operation_id>`
+     * and can be used to track the database modification. The
+     * [metadata][google.longrunning.Operation.metadata] field type is
+     * [UpdateDatabaseMetadata][google.spanner.admin.database.v1.UpdateDatabaseMetadata].
+     * The [response][google.longrunning.Operation.response] field type is
+     * [Database][google.spanner.admin.database.v1.Database], if successful.
+     * 
+ */ + default void updateDatabase( + com.google.spanner.admin.database.v1.UpdateDatabaseRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall( + getUpdateDatabaseMethod(), responseObserver); + } + /** * * @@ -1421,6 +1511,52 @@ public void getDatabase( responseObserver); } + /** + * + * + *
+     * Updates a Cloud Spanner database. The returned
+     * [long-running operation][google.longrunning.Operation] can be used to track
+     * the progress of updating the database. If the named database does not
+     * exist, returns `NOT_FOUND`.
+     * While the operation is pending:
+     *   * The database's
+     *     [reconciling][google.spanner.admin.database.v1.Database.reconciling]
+     *     field is set to true.
+     *   * Cancelling the operation is best-effort. If the cancellation succeeds,
+     *     the operation metadata's
+     *     [cancel_time][google.spanner.admin.database.v1.UpdateDatabaseMetadata.cancel_time]
+     *     is set, the updates are reverted, and the operation terminates with a
+     *     `CANCELLED` status.
+     *   * New UpdateDatabase requests will return a `FAILED_PRECONDITION` error
+     *     until the pending operation is done (returns successfully or with
+     *     error).
+     *   * Reading the database via the API continues to give the pre-request
+     *     values.
+     * Upon completion of the returned operation:
+     *   * The new values are in effect and readable via the API.
+     *   * The database's
+     *     [reconciling][google.spanner.admin.database.v1.Database.reconciling]
+     *     field becomes false.
+     * The returned [long-running operation][google.longrunning.Operation] will
+     * have a name of the format
+     * `projects/<project>/instances/<instance>/databases/<database>/operations/<operation_id>`
+     * and can be used to track the database modification. The
+     * [metadata][google.longrunning.Operation.metadata] field type is
+     * [UpdateDatabaseMetadata][google.spanner.admin.database.v1.UpdateDatabaseMetadata].
+     * The [response][google.longrunning.Operation.response] field type is
+     * [Database][google.spanner.admin.database.v1.Database], if successful.
+     * 
+ */ + public void updateDatabase( + com.google.spanner.admin.database.v1.UpdateDatabaseRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getUpdateDatabaseMethod(), getCallOptions()), + request, + responseObserver); + } + /** * * @@ -1839,6 +1975,49 @@ public com.google.spanner.admin.database.v1.Database getDatabase( getChannel(), getGetDatabaseMethod(), getCallOptions(), request); } + /** + * + * + *
+     * Updates a Cloud Spanner database. The returned
+     * [long-running operation][google.longrunning.Operation] can be used to track
+     * the progress of updating the database. If the named database does not
+     * exist, returns `NOT_FOUND`.
+     * While the operation is pending:
+     *   * The database's
+     *     [reconciling][google.spanner.admin.database.v1.Database.reconciling]
+     *     field is set to true.
+     *   * Cancelling the operation is best-effort. If the cancellation succeeds,
+     *     the operation metadata's
+     *     [cancel_time][google.spanner.admin.database.v1.UpdateDatabaseMetadata.cancel_time]
+     *     is set, the updates are reverted, and the operation terminates with a
+     *     `CANCELLED` status.
+     *   * New UpdateDatabase requests will return a `FAILED_PRECONDITION` error
+     *     until the pending operation is done (returns successfully or with
+     *     error).
+     *   * Reading the database via the API continues to give the pre-request
+     *     values.
+     * Upon completion of the returned operation:
+     *   * The new values are in effect and readable via the API.
+     *   * The database's
+     *     [reconciling][google.spanner.admin.database.v1.Database.reconciling]
+     *     field becomes false.
+     * The returned [long-running operation][google.longrunning.Operation] will
+     * have a name of the format
+     * `projects/<project>/instances/<instance>/databases/<database>/operations/<operation_id>`
+     * and can be used to track the database modification. The
+     * [metadata][google.longrunning.Operation.metadata] field type is
+     * [UpdateDatabaseMetadata][google.spanner.admin.database.v1.UpdateDatabaseMetadata].
+     * The [response][google.longrunning.Operation.response] field type is
+     * [Database][google.spanner.admin.database.v1.Database], if successful.
+     * 
+ */ + public com.google.longrunning.Operation updateDatabase( + com.google.spanner.admin.database.v1.UpdateDatabaseRequest request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getUpdateDatabaseMethod(), getCallOptions(), request); + } + /** * * @@ -2206,6 +2385,49 @@ protected DatabaseAdminFutureStub build( getChannel().newCall(getGetDatabaseMethod(), getCallOptions()), request); } + /** + * + * + *
+     * Updates a Cloud Spanner database. The returned
+     * [long-running operation][google.longrunning.Operation] can be used to track
+     * the progress of updating the database. If the named database does not
+     * exist, returns `NOT_FOUND`.
+     * While the operation is pending:
+     *   * The database's
+     *     [reconciling][google.spanner.admin.database.v1.Database.reconciling]
+     *     field is set to true.
+     *   * Cancelling the operation is best-effort. If the cancellation succeeds,
+     *     the operation metadata's
+     *     [cancel_time][google.spanner.admin.database.v1.UpdateDatabaseMetadata.cancel_time]
+     *     is set, the updates are reverted, and the operation terminates with a
+     *     `CANCELLED` status.
+     *   * New UpdateDatabase requests will return a `FAILED_PRECONDITION` error
+     *     until the pending operation is done (returns successfully or with
+     *     error).
+     *   * Reading the database via the API continues to give the pre-request
+     *     values.
+     * Upon completion of the returned operation:
+     *   * The new values are in effect and readable via the API.
+     *   * The database's
+     *     [reconciling][google.spanner.admin.database.v1.Database.reconciling]
+     *     field becomes false.
+     * The returned [long-running operation][google.longrunning.Operation] will
+     * have a name of the format
+     * `projects/<project>/instances/<instance>/databases/<database>/operations/<operation_id>`
+     * and can be used to track the database modification. The
+     * [metadata][google.longrunning.Operation.metadata] field type is
+     * [UpdateDatabaseMetadata][google.spanner.admin.database.v1.UpdateDatabaseMetadata].
+     * The [response][google.longrunning.Operation.response] field type is
+     * [Database][google.spanner.admin.database.v1.Database], if successful.
+     * 
+ */ + public com.google.common.util.concurrent.ListenableFuture + updateDatabase(com.google.spanner.admin.database.v1.UpdateDatabaseRequest request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getUpdateDatabaseMethod(), getCallOptions()), request); + } + /** * * @@ -2515,22 +2737,23 @@ protected DatabaseAdminFutureStub build( private static final int METHODID_LIST_DATABASES = 0; private static final int METHODID_CREATE_DATABASE = 1; private static final int METHODID_GET_DATABASE = 2; - private static final int METHODID_UPDATE_DATABASE_DDL = 3; - private static final int METHODID_DROP_DATABASE = 4; - private static final int METHODID_GET_DATABASE_DDL = 5; - private static final int METHODID_SET_IAM_POLICY = 6; - private static final int METHODID_GET_IAM_POLICY = 7; - private static final int METHODID_TEST_IAM_PERMISSIONS = 8; - private static final int METHODID_CREATE_BACKUP = 9; - private static final int METHODID_COPY_BACKUP = 10; - private static final int METHODID_GET_BACKUP = 11; - private static final int METHODID_UPDATE_BACKUP = 12; - private static final int METHODID_DELETE_BACKUP = 13; - private static final int METHODID_LIST_BACKUPS = 14; - private static final int METHODID_RESTORE_DATABASE = 15; - private static final int METHODID_LIST_DATABASE_OPERATIONS = 16; - private static final int METHODID_LIST_BACKUP_OPERATIONS = 17; - private static final int METHODID_LIST_DATABASE_ROLES = 18; + private static final int METHODID_UPDATE_DATABASE = 3; + private static final int METHODID_UPDATE_DATABASE_DDL = 4; + private static final int METHODID_DROP_DATABASE = 5; + private static final int METHODID_GET_DATABASE_DDL = 6; + private static final int METHODID_SET_IAM_POLICY = 7; + private static final int METHODID_GET_IAM_POLICY = 8; + private static final int METHODID_TEST_IAM_PERMISSIONS = 9; + private static final int METHODID_CREATE_BACKUP = 10; + private static final int METHODID_COPY_BACKUP = 11; + private static final int METHODID_GET_BACKUP = 12; + private static final int METHODID_UPDATE_BACKUP = 13; + private static final int METHODID_DELETE_BACKUP = 14; + private static final int METHODID_LIST_BACKUPS = 15; + private static final int METHODID_RESTORE_DATABASE = 16; + private static final int METHODID_LIST_DATABASE_OPERATIONS = 17; + private static final int METHODID_LIST_BACKUP_OPERATIONS = 18; + private static final int METHODID_LIST_DATABASE_ROLES = 19; private static final class MethodHandlers implements io.grpc.stub.ServerCalls.UnaryMethod, @@ -2567,6 +2790,11 @@ public void invoke(Req request, io.grpc.stub.StreamObserver responseObserv (io.grpc.stub.StreamObserver) responseObserver); break; + case METHODID_UPDATE_DATABASE: + serviceImpl.updateDatabase( + (com.google.spanner.admin.database.v1.UpdateDatabaseRequest) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; case METHODID_UPDATE_DATABASE_DDL: serviceImpl.updateDatabaseDdl( (com.google.spanner.admin.database.v1.UpdateDatabaseDdlRequest) request, @@ -2697,6 +2925,12 @@ public static final io.grpc.ServerServiceDefinition bindService(AsyncService ser new MethodHandlers< com.google.spanner.admin.database.v1.GetDatabaseRequest, com.google.spanner.admin.database.v1.Database>(service, METHODID_GET_DATABASE))) + .addMethod( + getUpdateDatabaseMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + com.google.spanner.admin.database.v1.UpdateDatabaseRequest, + com.google.longrunning.Operation>(service, METHODID_UPDATE_DATABASE))) .addMethod( getUpdateDatabaseDdlMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall( @@ -2851,6 +3085,7 @@ public static io.grpc.ServiceDescriptor getServiceDescriptor() { .addMethod(getListDatabasesMethod()) .addMethod(getCreateDatabaseMethod()) .addMethod(getGetDatabaseMethod()) + .addMethod(getUpdateDatabaseMethod()) .addMethod(getUpdateDatabaseDdlMethod()) .addMethod(getDropDatabaseMethod()) .addMethod(getGetDatabaseDdlMethod()) diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/Database.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/Database.java index 5473f4bc7f..f982cfe291 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/Database.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/Database.java @@ -879,6 +879,44 @@ public com.google.spanner.admin.database.v1.DatabaseDialect getDatabaseDialect() : result; } + public static final int ENABLE_DROP_PROTECTION_FIELD_NUMBER = 11; + private boolean enableDropProtection_ = false; + /** + * + * + *
+   * Whether drop protection is enabled for this database. Defaults to false,
+   * if not set.
+   * 
+ * + * bool enable_drop_protection = 11; + * + * @return The enableDropProtection. + */ + @java.lang.Override + public boolean getEnableDropProtection() { + return enableDropProtection_; + } + + public static final int RECONCILING_FIELD_NUMBER = 12; + private boolean reconciling_ = false; + /** + * + * + *
+   * Output only. If true, the database is being updated. If false, there are no
+   * ongoing update operations for the database.
+   * 
+ * + * bool reconciling = 12 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return The reconciling. + */ + @java.lang.Override + public boolean getReconciling() { + return reconciling_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -926,6 +964,12 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io .getNumber()) { output.writeEnum(10, databaseDialect_); } + if (enableDropProtection_ != false) { + output.writeBool(11, enableDropProtection_); + } + if (reconciling_ != false) { + output.writeBool(12, reconciling_); + } getUnknownFields().writeTo(output); } @@ -968,6 +1012,12 @@ public int getSerializedSize() { .getNumber()) { size += com.google.protobuf.CodedOutputStream.computeEnumSize(10, databaseDialect_); } + if (enableDropProtection_ != false) { + size += com.google.protobuf.CodedOutputStream.computeBoolSize(11, enableDropProtection_); + } + if (reconciling_ != false) { + size += com.google.protobuf.CodedOutputStream.computeBoolSize(12, reconciling_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -1006,6 +1056,8 @@ public boolean equals(final java.lang.Object obj) { } if (!getDefaultLeader().equals(other.getDefaultLeader())) return false; if (databaseDialect_ != other.databaseDialect_) return false; + if (getEnableDropProtection() != other.getEnableDropProtection()) return false; + if (getReconciling() != other.getReconciling()) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -1047,6 +1099,10 @@ public int hashCode() { hash = (53 * hash) + getDefaultLeader().hashCode(); hash = (37 * hash) + DATABASE_DIALECT_FIELD_NUMBER; hash = (53 * hash) + databaseDialect_; + hash = (37 * hash) + ENABLE_DROP_PROTECTION_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getEnableDropProtection()); + hash = (37 * hash) + RECONCILING_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getReconciling()); hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -1218,6 +1274,8 @@ public Builder clear() { } defaultLeader_ = ""; databaseDialect_ = 0; + enableDropProtection_ = false; + reconciling_ = false; return this; } @@ -1299,6 +1357,12 @@ private void buildPartial0(com.google.spanner.admin.database.v1.Database result) if (((from_bitField0_ & 0x00000200) != 0)) { result.databaseDialect_ = databaseDialect_; } + if (((from_bitField0_ & 0x00000400) != 0)) { + result.enableDropProtection_ = enableDropProtection_; + } + if (((from_bitField0_ & 0x00000800) != 0)) { + result.reconciling_ = reconciling_; + } } @java.lang.Override @@ -1406,6 +1470,12 @@ public Builder mergeFrom(com.google.spanner.admin.database.v1.Database other) { if (other.databaseDialect_ != 0) { setDatabaseDialectValue(other.getDatabaseDialectValue()); } + if (other.getEnableDropProtection() != false) { + setEnableDropProtection(other.getEnableDropProtection()); + } + if (other.getReconciling() != false) { + setReconciling(other.getReconciling()); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -1502,6 +1572,18 @@ public Builder mergeFrom( bitField0_ |= 0x00000200; break; } // case 80 + case 88: + { + enableDropProtection_ = input.readBool(); + bitField0_ |= 0x00000400; + break; + } // case 88 + case 96: + { + reconciling_ = input.readBool(); + bitField0_ |= 0x00000800; + break; + } // case 96 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -3498,6 +3580,118 @@ public Builder clearDatabaseDialect() { return this; } + private boolean enableDropProtection_; + /** + * + * + *
+     * Whether drop protection is enabled for this database. Defaults to false,
+     * if not set.
+     * 
+ * + * bool enable_drop_protection = 11; + * + * @return The enableDropProtection. + */ + @java.lang.Override + public boolean getEnableDropProtection() { + return enableDropProtection_; + } + /** + * + * + *
+     * Whether drop protection is enabled for this database. Defaults to false,
+     * if not set.
+     * 
+ * + * bool enable_drop_protection = 11; + * + * @param value The enableDropProtection to set. + * @return This builder for chaining. + */ + public Builder setEnableDropProtection(boolean value) { + + enableDropProtection_ = value; + bitField0_ |= 0x00000400; + onChanged(); + return this; + } + /** + * + * + *
+     * Whether drop protection is enabled for this database. Defaults to false,
+     * if not set.
+     * 
+ * + * bool enable_drop_protection = 11; + * + * @return This builder for chaining. + */ + public Builder clearEnableDropProtection() { + bitField0_ = (bitField0_ & ~0x00000400); + enableDropProtection_ = false; + onChanged(); + return this; + } + + private boolean reconciling_; + /** + * + * + *
+     * Output only. If true, the database is being updated. If false, there are no
+     * ongoing update operations for the database.
+     * 
+ * + * bool reconciling = 12 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return The reconciling. + */ + @java.lang.Override + public boolean getReconciling() { + return reconciling_; + } + /** + * + * + *
+     * Output only. If true, the database is being updated. If false, there are no
+     * ongoing update operations for the database.
+     * 
+ * + * bool reconciling = 12 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @param value The reconciling to set. + * @return This builder for chaining. + */ + public Builder setReconciling(boolean value) { + + reconciling_ = value; + bitField0_ |= 0x00000800; + onChanged(); + return this; + } + /** + * + * + *
+     * Output only. If true, the database is being updated. If false, there are no
+     * ongoing update operations for the database.
+     * 
+ * + * bool reconciling = 12 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return This builder for chaining. + */ + public Builder clearReconciling() { + bitField0_ = (bitField0_ & ~0x00000800); + reconciling_ = false; + onChanged(); + return this; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseOrBuilder.java index de9373a0f9..0252781fe9 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseOrBuilder.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/DatabaseOrBuilder.java @@ -457,4 +457,32 @@ com.google.spanner.admin.database.v1.EncryptionInfoOrBuilder getEncryptionInfoOr * @return The databaseDialect. */ com.google.spanner.admin.database.v1.DatabaseDialect getDatabaseDialect(); + + /** + * + * + *
+   * Whether drop protection is enabled for this database. Defaults to false,
+   * if not set.
+   * 
+ * + * bool enable_drop_protection = 11; + * + * @return The enableDropProtection. + */ + boolean getEnableDropProtection(); + + /** + * + * + *
+   * Output only. If true, the database is being updated. If false, there are no
+   * ongoing update operations for the database.
+   * 
+ * + * bool reconciling = 12 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * @return The reconciling. + */ + boolean getReconciling(); } diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/SpannerDatabaseAdminProto.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/SpannerDatabaseAdminProto.java index e91f9a6571..0045ee30f3 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/SpannerDatabaseAdminProto.java +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/SpannerDatabaseAdminProto.java @@ -55,6 +55,14 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r internal_static_google_spanner_admin_database_v1_GetDatabaseRequest_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_google_spanner_admin_database_v1_GetDatabaseRequest_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_spanner_admin_database_v1_UpdateDatabaseRequest_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_spanner_admin_database_v1_UpdateDatabaseRequest_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_spanner_admin_database_v1_UpdateDatabaseMetadata_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_spanner_admin_database_v1_UpdateDatabaseMetadata_fieldAccessorTable; static final com.google.protobuf.Descriptors.Descriptor internal_static_google_spanner_admin_database_v1_UpdateDatabaseDdlRequest_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable @@ -128,239 +136,257 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "source.proto\032\036google/iam/v1/iam_policy.p" + "roto\032\032google/iam/v1/policy.proto\032#google" + "/longrunning/operations.proto\032\033google/pr" - + "otobuf/empty.proto\032\037google/protobuf/time" - + "stamp.proto\032-google/spanner/admin/databa" - + "se/v1/backup.proto\032-google/spanner/admin" - + "/database/v1/common.proto\"\253\001\n\013RestoreInf" - + "o\022H\n\013source_type\030\001 \001(\01623.google.spanner." - + "admin.database.v1.RestoreSourceType\022C\n\013b" - + "ackup_info\030\002 \001(\0132,.google.spanner.admin." - + "database.v1.BackupInfoH\000B\r\n\013source_info\"" - + "\220\006\n\010Database\022\021\n\004name\030\001 \001(\tB\003\340A\002\022D\n\005state" - + "\030\002 \001(\01620.google.spanner.admin.database.v" - + "1.Database.StateB\003\340A\003\0224\n\013create_time\030\003 \001" - + "(\0132\032.google.protobuf.TimestampB\003\340A\003\022H\n\014r" - + "estore_info\030\004 \001(\0132-.google.spanner.admin" - + ".database.v1.RestoreInfoB\003\340A\003\022R\n\021encrypt" - + "ion_config\030\005 \001(\01322.google.spanner.admin." - + "database.v1.EncryptionConfigB\003\340A\003\022N\n\017enc" - + "ryption_info\030\010 \003(\01320.google.spanner.admi" - + "n.database.v1.EncryptionInfoB\003\340A\003\022%\n\030ver" - + "sion_retention_period\030\006 \001(\tB\003\340A\003\022>\n\025earl" - + "iest_version_time\030\007 \001(\0132\032.google.protobu" - + "f.TimestampB\003\340A\003\022\033\n\016default_leader\030\t \001(\t" - + "B\003\340A\003\022P\n\020database_dialect\030\n \001(\01621.google" - + ".spanner.admin.database.v1.DatabaseDiale" - + "ctB\003\340A\003\"M\n\005State\022\025\n\021STATE_UNSPECIFIED\020\000\022" - + "\014\n\010CREATING\020\001\022\t\n\005READY\020\002\022\024\n\020READY_OPTIMI" - + "ZING\020\003:b\352A_\n\037spanner.googleapis.com/Data" - + "base\022\202\323\344\223\002/\022-/v1/{parent=projects" - + "/*/instances/*}/databases\332A\006parent\022\244\002\n\016C" - + "reateDatabase\0227.google.spanner.admin.dat" - + "abase.v1.CreateDatabaseRequest\032\035.google." - + "longrunning.Operation\"\271\001\202\323\344\223\0022\"-/v1/{par" - + "ent=projects/*/instances/*}/databases:\001*" - + "\332A\027parent,create_statement\312Ad\n)google.sp" - + "anner.admin.database.v1.Database\0227google" - + ".spanner.admin.database.v1.CreateDatabas" - + "eMetadata\022\255\001\n\013GetDatabase\0224.google.spann" - + "er.admin.database.v1.GetDatabaseRequest\032" - + "*.google.spanner.admin.database.v1.Datab" - + "ase\"<\202\323\344\223\002/\022-/v1/{name=projects/*/instan" - + "ces/*/databases/*}\332A\004name\022\235\002\n\021UpdateData" - + "baseDdl\022:.google.spanner.admin.database." - + "v1.UpdateDatabaseDdlRequest\032\035.google.lon" - + "grunning.Operation\"\254\001\202\323\344\223\002:25/v1/{databa" - + "se=projects/*/instances/*/databases/*}/d" - + "dl:\001*\332A\023database,statements\312AS\n\025google.p" - + "rotobuf.Empty\022:google.spanner.admin.data" - + "base.v1.UpdateDatabaseDdlMetadata\022\243\001\n\014Dr" - + "opDatabase\0225.google.spanner.admin.databa" - + "se.v1.DropDatabaseRequest\032\026.google.proto" - + "buf.Empty\"D\202\323\344\223\0023*1/v1/{database=project" - + "s/*/instances/*/databases/*}\332A\010database\022" - + "\315\001\n\016GetDatabaseDdl\0227.google.spanner.admi" - + "n.database.v1.GetDatabaseDdlRequest\0328.go" - + "ogle.spanner.admin.database.v1.GetDataba" - + "seDdlResponse\"H\202\323\344\223\0027\0225/v1/{database=pro" - + "jects/*/instances/*/databases/*}/ddl\332A\010d" - + "atabase\022\353\001\n\014SetIamPolicy\022\".google.iam.v1" - + ".SetIamPolicyRequest\032\025.google.iam.v1.Pol" - + "icy\"\237\001\202\323\344\223\002\206\001\">/v1/{resource=projects/*/" - + "instances/*/databases/*}:setIamPolicy:\001*" - + "ZA\"/v1/{resource=projects/*/in" - + "stances/*/databases/*}:getIamPolicy:\001*ZA" - + "\".google.sp" - + "anner.admin.database.v1.ListBackupOperat" - + "ionsResponse\"E\202\323\344\223\0026\0224/v1/{parent=projec" - + "ts/*/instances/*}/backupOperations\332A\006par" - + "ent\022\334\001\n\021ListDatabaseRoles\022:.google.spann" - + "er.admin.database.v1.ListDatabaseRolesRe" - + "quest\032;.google.spanner.admin.database.v1" - + ".ListDatabaseRolesResponse\"N\202\323\344\223\002?\022=/v1/" - + "{parent=projects/*/instances/*/databases" - + "/*}/databaseRoles\332A\006parent\032x\312A\026spanner.g" - + "oogleapis.com\322A\\https://www.googleapis.c" - + "om/auth/cloud-platform,https://www.googl" - + "eapis.com/auth/spanner.adminB\330\002\n$com.goo" - + "gle.spanner.admin.database.v1B\031SpannerDa" - + "tabaseAdminProtoP\001ZFcloud.google.com/go/" - + "spanner/admin/database/apiv1/databasepb;" - + "databasepb\252\002&Google.Cloud.Spanner.Admin." - + "Database.V1\312\002&Google\\Cloud\\Spanner\\Admin" - + "\\Database\\V1\352\002+Google::Cloud::Spanner::A" - + "dmin::Database::V1\352AJ\n\037spanner.googleapi" - + "s.com/Instance\022\'projects/{project}/insta" - + "nces/{instance}b\006proto3" + + "info\030\002 \001(\0132,.google.spanner.admin.databa" + + "se.v1.BackupInfoH\000B\r\n\013source_info\"\312\006\n\010Da" + + "tabase\022\021\n\004name\030\001 \001(\tB\003\340A\002\022D\n\005state\030\002 \001(\016" + + "20.google.spanner.admin.database.v1.Data" + + "base.StateB\003\340A\003\0224\n\013create_time\030\003 \001(\0132\032.g" + + "oogle.protobuf.TimestampB\003\340A\003\022H\n\014restore" + + "_info\030\004 \001(\0132-.google.spanner.admin.datab" + + "ase.v1.RestoreInfoB\003\340A\003\022R\n\021encryption_co" + + "nfig\030\005 \001(\01322.google.spanner.admin.databa" + + "se.v1.EncryptionConfigB\003\340A\003\022N\n\017encryptio" + + "n_info\030\010 \003(\01320.google.spanner.admin.data" + + "base.v1.EncryptionInfoB\003\340A\003\022%\n\030version_r" + + "etention_period\030\006 \001(\tB\003\340A\003\022>\n\025earliest_v" + + "ersion_time\030\007 \001(\0132\032.google.protobuf.Time" + + "stampB\003\340A\003\022\033\n\016default_leader\030\t \001(\tB\003\340A\003\022" + + "P\n\020database_dialect\030\n \001(\01621.google.spann" + + "er.admin.database.v1.DatabaseDialectB\003\340A" + + "\003\022\036\n\026enable_drop_protection\030\013 \001(\010\022\030\n\013rec" + + "onciling\030\014 \001(\010B\003\340A\003\"M\n\005State\022\025\n\021STATE_UN" + + "SPECIFIED\020\000\022\014\n\010CREATING\020\001\022\t\n\005READY\020\002\022\024\n\020" + + "READY_OPTIMIZING\020\003:b\352A_\n\037spanner.googlea" + + "pis.com/Database\022\202\323\344\223\002/\022-" + + "/v1/{parent=projects/*/instances/*}/data" + + "bases\332A\006parent\022\244\002\n\016CreateDatabase\0227.goog" + + "le.spanner.admin.database.v1.CreateDatab" + + "aseRequest\032\035.google.longrunning.Operatio" + + "n\"\271\001\202\323\344\223\0022\"-/v1/{parent=projects/*/insta" + + "nces/*}/databases:\001*\332A\027parent,create_sta" + + "tement\312Ad\n)google.spanner.admin.database" + + ".v1.Database\0227google.spanner.admin.datab" + + "ase.v1.CreateDatabaseMetadata\022\255\001\n\013GetDat" + + "abase\0224.google.spanner.admin.database.v1" + + ".GetDatabaseRequest\032*.google.spanner.adm" + + "in.database.v1.Database\"<\202\323\344\223\002/\022-/v1/{na" + + "me=projects/*/instances/*/databases/*}\332A" + + "\004name\022\357\001\n\016UpdateDatabase\0227.google.spanne" + + "r.admin.database.v1.UpdateDatabaseReques" + + "t\032\035.google.longrunning.Operation\"\204\001\202\323\344\223\002" + + "B26/v1/{database.name=projects/*/instanc" + + "es/*/databases/*}:\010database\332A\024database,u" + + "pdate_mask\312A\"\n\010Database\022\026UpdateDatabaseM" + + "etadata\022\235\002\n\021UpdateDatabaseDdl\022:.google.s" + + "panner.admin.database.v1.UpdateDatabaseD" + + "dlRequest\032\035.google.longrunning.Operation" + + "\"\254\001\202\323\344\223\002:25/v1/{database=projects/*/inst" + + "ances/*/databases/*}/ddl:\001*\332A\023database,s" + + "tatements\312AS\n\025google.protobuf.Empty\022:goo" + + "gle.spanner.admin.database.v1.UpdateData" + + "baseDdlMetadata\022\243\001\n\014DropDatabase\0225.googl" + + "e.spanner.admin.database.v1.DropDatabase" + + "Request\032\026.google.protobuf.Empty\"D\202\323\344\223\0023*" + + "1/v1/{database=projects/*/instances/*/da" + + "tabases/*}\332A\010database\022\315\001\n\016GetDatabaseDdl" + + "\0227.google.spanner.admin.database.v1.GetD" + + "atabaseDdlRequest\0328.google.spanner.admin" + + ".database.v1.GetDatabaseDdlResponse\"H\202\323\344" + + "\223\0027\0225/v1/{database=projects/*/instances/" + + "*/databases/*}/ddl\332A\010database\022\353\001\n\014SetIam" + + "Policy\022\".google.iam.v1.SetIamPolicyReque" + + "st\032\025.google.iam.v1.Policy\"\237\001\202\323\344\223\002\206\001\">/v1" + + "/{resource=projects/*/instances/*/databa" + + "ses/*}:setIamPolicy:\001*ZA\"/v1/{" + + "resource=projects/*/instances/*/database" + + "s/*}:getIamPolicy:\001*ZA\".google.spanner.admin.databa" + + "se.v1.ListBackupOperationsResponse\"E\202\323\344\223" + + "\0026\0224/v1/{parent=projects/*/instances/*}/" + + "backupOperations\332A\006parent\022\334\001\n\021ListDataba" + + "seRoles\022:.google.spanner.admin.database." + + "v1.ListDatabaseRolesRequest\032;.google.spa" + + "nner.admin.database.v1.ListDatabaseRoles" + + "Response\"N\202\323\344\223\002?\022=/v1/{parent=projects/*" + + "/instances/*/databases/*}/databaseRoles\332" + + "A\006parent\032x\312A\026spanner.googleapis.com\322A\\ht" + + "tps://www.googleapis.com/auth/cloud-plat" + + "form,https://www.googleapis.com/auth/spa" + + "nner.adminB\330\002\n$com.google.spanner.admin." + + "database.v1B\031SpannerDatabaseAdminProtoP\001" + + "ZFcloud.google.com/go/spanner/admin/data" + + "base/apiv1/databasepb;databasepb\252\002&Googl" + + "e.Cloud.Spanner.Admin.Database.V1\312\002&Goog" + + "le\\Cloud\\Spanner\\Admin\\Database\\V1\352\002+Goo" + + "gle::Cloud::Spanner::Admin::Database::V1" + + "\352AJ\n\037spanner.googleapis.com/Instance\022\'pr" + + "ojects/{project}/instances/{instance}b\006p" + + "roto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( @@ -374,6 +400,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { com.google.iam.v1.PolicyProto.getDescriptor(), com.google.longrunning.OperationsProto.getDescriptor(), com.google.protobuf.EmptyProto.getDescriptor(), + com.google.protobuf.FieldMaskProto.getDescriptor(), com.google.protobuf.TimestampProto.getDescriptor(), com.google.spanner.admin.database.v1.BackupProto.getDescriptor(), com.google.spanner.admin.database.v1.CommonProto.getDescriptor(), @@ -402,6 +429,8 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "EarliestVersionTime", "DefaultLeader", "DatabaseDialect", + "EnableDropProtection", + "Reconciling", }); internal_static_google_spanner_admin_database_v1_ListDatabasesRequest_descriptor = getDescriptor().getMessageTypes().get(2); @@ -443,8 +472,24 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new java.lang.String[] { "Name", }); - internal_static_google_spanner_admin_database_v1_UpdateDatabaseDdlRequest_descriptor = + internal_static_google_spanner_admin_database_v1_UpdateDatabaseRequest_descriptor = getDescriptor().getMessageTypes().get(7); + internal_static_google_spanner_admin_database_v1_UpdateDatabaseRequest_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_spanner_admin_database_v1_UpdateDatabaseRequest_descriptor, + new java.lang.String[] { + "Database", "UpdateMask", + }); + internal_static_google_spanner_admin_database_v1_UpdateDatabaseMetadata_descriptor = + getDescriptor().getMessageTypes().get(8); + internal_static_google_spanner_admin_database_v1_UpdateDatabaseMetadata_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_spanner_admin_database_v1_UpdateDatabaseMetadata_descriptor, + new java.lang.String[] { + "Request", "Progress", "CancelTime", + }); + internal_static_google_spanner_admin_database_v1_UpdateDatabaseDdlRequest_descriptor = + getDescriptor().getMessageTypes().get(9); internal_static_google_spanner_admin_database_v1_UpdateDatabaseDdlRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_admin_database_v1_UpdateDatabaseDdlRequest_descriptor, @@ -452,7 +497,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Database", "Statements", "OperationId", }); internal_static_google_spanner_admin_database_v1_UpdateDatabaseDdlMetadata_descriptor = - getDescriptor().getMessageTypes().get(8); + getDescriptor().getMessageTypes().get(10); internal_static_google_spanner_admin_database_v1_UpdateDatabaseDdlMetadata_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_admin_database_v1_UpdateDatabaseDdlMetadata_descriptor, @@ -460,7 +505,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Database", "Statements", "CommitTimestamps", "Throttled", "Progress", }); internal_static_google_spanner_admin_database_v1_DropDatabaseRequest_descriptor = - getDescriptor().getMessageTypes().get(9); + getDescriptor().getMessageTypes().get(11); internal_static_google_spanner_admin_database_v1_DropDatabaseRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_admin_database_v1_DropDatabaseRequest_descriptor, @@ -468,7 +513,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Database", }); internal_static_google_spanner_admin_database_v1_GetDatabaseDdlRequest_descriptor = - getDescriptor().getMessageTypes().get(10); + getDescriptor().getMessageTypes().get(12); internal_static_google_spanner_admin_database_v1_GetDatabaseDdlRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_admin_database_v1_GetDatabaseDdlRequest_descriptor, @@ -476,7 +521,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Database", }); internal_static_google_spanner_admin_database_v1_GetDatabaseDdlResponse_descriptor = - getDescriptor().getMessageTypes().get(11); + getDescriptor().getMessageTypes().get(13); internal_static_google_spanner_admin_database_v1_GetDatabaseDdlResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_admin_database_v1_GetDatabaseDdlResponse_descriptor, @@ -484,7 +529,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Statements", }); internal_static_google_spanner_admin_database_v1_ListDatabaseOperationsRequest_descriptor = - getDescriptor().getMessageTypes().get(12); + getDescriptor().getMessageTypes().get(14); internal_static_google_spanner_admin_database_v1_ListDatabaseOperationsRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_admin_database_v1_ListDatabaseOperationsRequest_descriptor, @@ -492,7 +537,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Parent", "Filter", "PageSize", "PageToken", }); internal_static_google_spanner_admin_database_v1_ListDatabaseOperationsResponse_descriptor = - getDescriptor().getMessageTypes().get(13); + getDescriptor().getMessageTypes().get(15); internal_static_google_spanner_admin_database_v1_ListDatabaseOperationsResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_admin_database_v1_ListDatabaseOperationsResponse_descriptor, @@ -500,7 +545,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Operations", "NextPageToken", }); internal_static_google_spanner_admin_database_v1_RestoreDatabaseRequest_descriptor = - getDescriptor().getMessageTypes().get(14); + getDescriptor().getMessageTypes().get(16); internal_static_google_spanner_admin_database_v1_RestoreDatabaseRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_admin_database_v1_RestoreDatabaseRequest_descriptor, @@ -508,7 +553,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Parent", "DatabaseId", "Backup", "EncryptionConfig", "Source", }); internal_static_google_spanner_admin_database_v1_RestoreDatabaseEncryptionConfig_descriptor = - getDescriptor().getMessageTypes().get(15); + getDescriptor().getMessageTypes().get(17); internal_static_google_spanner_admin_database_v1_RestoreDatabaseEncryptionConfig_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_admin_database_v1_RestoreDatabaseEncryptionConfig_descriptor, @@ -516,7 +561,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "EncryptionType", "KmsKeyName", }); internal_static_google_spanner_admin_database_v1_RestoreDatabaseMetadata_descriptor = - getDescriptor().getMessageTypes().get(16); + getDescriptor().getMessageTypes().get(18); internal_static_google_spanner_admin_database_v1_RestoreDatabaseMetadata_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_admin_database_v1_RestoreDatabaseMetadata_descriptor, @@ -530,7 +575,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "SourceInfo", }); internal_static_google_spanner_admin_database_v1_OptimizeRestoredDatabaseMetadata_descriptor = - getDescriptor().getMessageTypes().get(17); + getDescriptor().getMessageTypes().get(19); internal_static_google_spanner_admin_database_v1_OptimizeRestoredDatabaseMetadata_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_admin_database_v1_OptimizeRestoredDatabaseMetadata_descriptor, @@ -538,7 +583,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Name", "Progress", }); internal_static_google_spanner_admin_database_v1_DatabaseRole_descriptor = - getDescriptor().getMessageTypes().get(18); + getDescriptor().getMessageTypes().get(20); internal_static_google_spanner_admin_database_v1_DatabaseRole_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_admin_database_v1_DatabaseRole_descriptor, @@ -546,7 +591,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Name", }); internal_static_google_spanner_admin_database_v1_ListDatabaseRolesRequest_descriptor = - getDescriptor().getMessageTypes().get(19); + getDescriptor().getMessageTypes().get(21); internal_static_google_spanner_admin_database_v1_ListDatabaseRolesRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_admin_database_v1_ListDatabaseRolesRequest_descriptor, @@ -554,7 +599,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Parent", "PageSize", "PageToken", }); internal_static_google_spanner_admin_database_v1_ListDatabaseRolesResponse_descriptor = - getDescriptor().getMessageTypes().get(20); + getDescriptor().getMessageTypes().get(22); internal_static_google_spanner_admin_database_v1_ListDatabaseRolesResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_admin_database_v1_ListDatabaseRolesResponse_descriptor, @@ -582,6 +627,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { com.google.iam.v1.PolicyProto.getDescriptor(); com.google.longrunning.OperationsProto.getDescriptor(); com.google.protobuf.EmptyProto.getDescriptor(); + com.google.protobuf.FieldMaskProto.getDescriptor(); com.google.protobuf.TimestampProto.getDescriptor(); com.google.spanner.admin.database.v1.BackupProto.getDescriptor(); com.google.spanner.admin.database.v1.CommonProto.getDescriptor(); diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseMetadata.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseMetadata.java new file mode 100644 index 0000000000..f37b1ad1ef --- /dev/null +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseMetadata.java @@ -0,0 +1,1291 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/spanner/admin/database/v1/spanner_database_admin.proto + +package com.google.spanner.admin.database.v1; + +/** + * + * + *
+ * Metadata type for the operation returned by
+ * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase].
+ * 
+ * + * Protobuf type {@code google.spanner.admin.database.v1.UpdateDatabaseMetadata} + */ +public final class UpdateDatabaseMetadata extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.spanner.admin.database.v1.UpdateDatabaseMetadata) + UpdateDatabaseMetadataOrBuilder { + private static final long serialVersionUID = 0L; + // Use UpdateDatabaseMetadata.newBuilder() to construct. + private UpdateDatabaseMetadata(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private UpdateDatabaseMetadata() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new UpdateDatabaseMetadata(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet getUnknownFields() { + return this.unknownFields; + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto + .internal_static_google_spanner_admin_database_v1_UpdateDatabaseMetadata_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto + .internal_static_google_spanner_admin_database_v1_UpdateDatabaseMetadata_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.admin.database.v1.UpdateDatabaseMetadata.class, + com.google.spanner.admin.database.v1.UpdateDatabaseMetadata.Builder.class); + } + + public static final int REQUEST_FIELD_NUMBER = 1; + private com.google.spanner.admin.database.v1.UpdateDatabaseRequest request_; + /** + * + * + *
+   * The request for
+   * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase].
+   * 
+ * + * .google.spanner.admin.database.v1.UpdateDatabaseRequest request = 1; + * + * @return Whether the request field is set. + */ + @java.lang.Override + public boolean hasRequest() { + return request_ != null; + } + /** + * + * + *
+   * The request for
+   * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase].
+   * 
+ * + * .google.spanner.admin.database.v1.UpdateDatabaseRequest request = 1; + * + * @return The request. + */ + @java.lang.Override + public com.google.spanner.admin.database.v1.UpdateDatabaseRequest getRequest() { + return request_ == null + ? com.google.spanner.admin.database.v1.UpdateDatabaseRequest.getDefaultInstance() + : request_; + } + /** + * + * + *
+   * The request for
+   * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase].
+   * 
+ * + * .google.spanner.admin.database.v1.UpdateDatabaseRequest request = 1; + */ + @java.lang.Override + public com.google.spanner.admin.database.v1.UpdateDatabaseRequestOrBuilder getRequestOrBuilder() { + return request_ == null + ? com.google.spanner.admin.database.v1.UpdateDatabaseRequest.getDefaultInstance() + : request_; + } + + public static final int PROGRESS_FIELD_NUMBER = 2; + private com.google.spanner.admin.database.v1.OperationProgress progress_; + /** + * + * + *
+   * The progress of the
+   * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase]
+   * operation.
+   * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 2; + * + * @return Whether the progress field is set. + */ + @java.lang.Override + public boolean hasProgress() { + return progress_ != null; + } + /** + * + * + *
+   * The progress of the
+   * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase]
+   * operation.
+   * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 2; + * + * @return The progress. + */ + @java.lang.Override + public com.google.spanner.admin.database.v1.OperationProgress getProgress() { + return progress_ == null + ? com.google.spanner.admin.database.v1.OperationProgress.getDefaultInstance() + : progress_; + } + /** + * + * + *
+   * The progress of the
+   * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase]
+   * operation.
+   * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 2; + */ + @java.lang.Override + public com.google.spanner.admin.database.v1.OperationProgressOrBuilder getProgressOrBuilder() { + return progress_ == null + ? com.google.spanner.admin.database.v1.OperationProgress.getDefaultInstance() + : progress_; + } + + public static final int CANCEL_TIME_FIELD_NUMBER = 3; + private com.google.protobuf.Timestamp cancelTime_; + /** + * + * + *
+   * The time at which this operation was cancelled. If set, this operation is
+   * in the process of undoing itself (which is best-effort).
+   * 
+ * + * .google.protobuf.Timestamp cancel_time = 3; + * + * @return Whether the cancelTime field is set. + */ + @java.lang.Override + public boolean hasCancelTime() { + return cancelTime_ != null; + } + /** + * + * + *
+   * The time at which this operation was cancelled. If set, this operation is
+   * in the process of undoing itself (which is best-effort).
+   * 
+ * + * .google.protobuf.Timestamp cancel_time = 3; + * + * @return The cancelTime. + */ + @java.lang.Override + public com.google.protobuf.Timestamp getCancelTime() { + return cancelTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : cancelTime_; + } + /** + * + * + *
+   * The time at which this operation was cancelled. If set, this operation is
+   * in the process of undoing itself (which is best-effort).
+   * 
+ * + * .google.protobuf.Timestamp cancel_time = 3; + */ + @java.lang.Override + public com.google.protobuf.TimestampOrBuilder getCancelTimeOrBuilder() { + return cancelTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : cancelTime_; + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (request_ != null) { + output.writeMessage(1, getRequest()); + } + if (progress_ != null) { + output.writeMessage(2, getProgress()); + } + if (cancelTime_ != null) { + output.writeMessage(3, getCancelTime()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (request_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getRequest()); + } + if (progress_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getProgress()); + } + if (cancelTime_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getCancelTime()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.spanner.admin.database.v1.UpdateDatabaseMetadata)) { + return super.equals(obj); + } + com.google.spanner.admin.database.v1.UpdateDatabaseMetadata other = + (com.google.spanner.admin.database.v1.UpdateDatabaseMetadata) obj; + + if (hasRequest() != other.hasRequest()) return false; + if (hasRequest()) { + if (!getRequest().equals(other.getRequest())) return false; + } + if (hasProgress() != other.hasProgress()) return false; + if (hasProgress()) { + if (!getProgress().equals(other.getProgress())) return false; + } + if (hasCancelTime() != other.hasCancelTime()) return false; + if (hasCancelTime()) { + if (!getCancelTime().equals(other.getCancelTime())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasRequest()) { + hash = (37 * hash) + REQUEST_FIELD_NUMBER; + hash = (53 * hash) + getRequest().hashCode(); + } + if (hasProgress()) { + hash = (37 * hash) + PROGRESS_FIELD_NUMBER; + hash = (53 * hash) + getProgress().hashCode(); + } + if (hasCancelTime()) { + hash = (37 * hash) + CANCEL_TIME_FIELD_NUMBER; + hash = (53 * hash) + getCancelTime().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.spanner.admin.database.v1.UpdateDatabaseMetadata parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.admin.database.v1.UpdateDatabaseMetadata parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.admin.database.v1.UpdateDatabaseMetadata parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.admin.database.v1.UpdateDatabaseMetadata parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.admin.database.v1.UpdateDatabaseMetadata parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.admin.database.v1.UpdateDatabaseMetadata parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.admin.database.v1.UpdateDatabaseMetadata parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.admin.database.v1.UpdateDatabaseMetadata parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.admin.database.v1.UpdateDatabaseMetadata parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.spanner.admin.database.v1.UpdateDatabaseMetadata parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.admin.database.v1.UpdateDatabaseMetadata parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.admin.database.v1.UpdateDatabaseMetadata parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.spanner.admin.database.v1.UpdateDatabaseMetadata prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * Metadata type for the operation returned by
+   * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase].
+   * 
+ * + * Protobuf type {@code google.spanner.admin.database.v1.UpdateDatabaseMetadata} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.spanner.admin.database.v1.UpdateDatabaseMetadata) + com.google.spanner.admin.database.v1.UpdateDatabaseMetadataOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto + .internal_static_google_spanner_admin_database_v1_UpdateDatabaseMetadata_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto + .internal_static_google_spanner_admin_database_v1_UpdateDatabaseMetadata_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.admin.database.v1.UpdateDatabaseMetadata.class, + com.google.spanner.admin.database.v1.UpdateDatabaseMetadata.Builder.class); + } + + // Construct using com.google.spanner.admin.database.v1.UpdateDatabaseMetadata.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + request_ = null; + if (requestBuilder_ != null) { + requestBuilder_.dispose(); + requestBuilder_ = null; + } + progress_ = null; + if (progressBuilder_ != null) { + progressBuilder_.dispose(); + progressBuilder_ = null; + } + cancelTime_ = null; + if (cancelTimeBuilder_ != null) { + cancelTimeBuilder_.dispose(); + cancelTimeBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto + .internal_static_google_spanner_admin_database_v1_UpdateDatabaseMetadata_descriptor; + } + + @java.lang.Override + public com.google.spanner.admin.database.v1.UpdateDatabaseMetadata getDefaultInstanceForType() { + return com.google.spanner.admin.database.v1.UpdateDatabaseMetadata.getDefaultInstance(); + } + + @java.lang.Override + public com.google.spanner.admin.database.v1.UpdateDatabaseMetadata build() { + com.google.spanner.admin.database.v1.UpdateDatabaseMetadata result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.spanner.admin.database.v1.UpdateDatabaseMetadata buildPartial() { + com.google.spanner.admin.database.v1.UpdateDatabaseMetadata result = + new com.google.spanner.admin.database.v1.UpdateDatabaseMetadata(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0(com.google.spanner.admin.database.v1.UpdateDatabaseMetadata result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.request_ = requestBuilder_ == null ? request_ : requestBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.progress_ = progressBuilder_ == null ? progress_ : progressBuilder_.build(); + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.cancelTime_ = cancelTimeBuilder_ == null ? cancelTime_ : cancelTimeBuilder_.build(); + } + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.spanner.admin.database.v1.UpdateDatabaseMetadata) { + return mergeFrom((com.google.spanner.admin.database.v1.UpdateDatabaseMetadata) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.spanner.admin.database.v1.UpdateDatabaseMetadata other) { + if (other == com.google.spanner.admin.database.v1.UpdateDatabaseMetadata.getDefaultInstance()) + return this; + if (other.hasRequest()) { + mergeRequest(other.getRequest()); + } + if (other.hasProgress()) { + mergeProgress(other.getProgress()); + } + if (other.hasCancelTime()) { + mergeCancelTime(other.getCancelTime()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getRequestFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 18: + { + input.readMessage(getProgressFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000002; + break; + } // case 18 + case 26: + { + input.readMessage(getCancelTimeFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000004; + break; + } // case 26 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private com.google.spanner.admin.database.v1.UpdateDatabaseRequest request_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.admin.database.v1.UpdateDatabaseRequest, + com.google.spanner.admin.database.v1.UpdateDatabaseRequest.Builder, + com.google.spanner.admin.database.v1.UpdateDatabaseRequestOrBuilder> + requestBuilder_; + /** + * + * + *
+     * The request for
+     * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase].
+     * 
+ * + * .google.spanner.admin.database.v1.UpdateDatabaseRequest request = 1; + * + * @return Whether the request field is set. + */ + public boolean hasRequest() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * + * + *
+     * The request for
+     * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase].
+     * 
+ * + * .google.spanner.admin.database.v1.UpdateDatabaseRequest request = 1; + * + * @return The request. + */ + public com.google.spanner.admin.database.v1.UpdateDatabaseRequest getRequest() { + if (requestBuilder_ == null) { + return request_ == null + ? com.google.spanner.admin.database.v1.UpdateDatabaseRequest.getDefaultInstance() + : request_; + } else { + return requestBuilder_.getMessage(); + } + } + /** + * + * + *
+     * The request for
+     * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase].
+     * 
+ * + * .google.spanner.admin.database.v1.UpdateDatabaseRequest request = 1; + */ + public Builder setRequest(com.google.spanner.admin.database.v1.UpdateDatabaseRequest value) { + if (requestBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + request_ = value; + } else { + requestBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+     * The request for
+     * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase].
+     * 
+ * + * .google.spanner.admin.database.v1.UpdateDatabaseRequest request = 1; + */ + public Builder setRequest( + com.google.spanner.admin.database.v1.UpdateDatabaseRequest.Builder builderForValue) { + if (requestBuilder_ == null) { + request_ = builderForValue.build(); + } else { + requestBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+     * The request for
+     * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase].
+     * 
+ * + * .google.spanner.admin.database.v1.UpdateDatabaseRequest request = 1; + */ + public Builder mergeRequest(com.google.spanner.admin.database.v1.UpdateDatabaseRequest value) { + if (requestBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) + && request_ != null + && request_ + != com.google.spanner.admin.database.v1.UpdateDatabaseRequest + .getDefaultInstance()) { + getRequestBuilder().mergeFrom(value); + } else { + request_ = value; + } + } else { + requestBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+     * The request for
+     * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase].
+     * 
+ * + * .google.spanner.admin.database.v1.UpdateDatabaseRequest request = 1; + */ + public Builder clearRequest() { + bitField0_ = (bitField0_ & ~0x00000001); + request_ = null; + if (requestBuilder_ != null) { + requestBuilder_.dispose(); + requestBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+     * The request for
+     * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase].
+     * 
+ * + * .google.spanner.admin.database.v1.UpdateDatabaseRequest request = 1; + */ + public com.google.spanner.admin.database.v1.UpdateDatabaseRequest.Builder getRequestBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getRequestFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * The request for
+     * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase].
+     * 
+ * + * .google.spanner.admin.database.v1.UpdateDatabaseRequest request = 1; + */ + public com.google.spanner.admin.database.v1.UpdateDatabaseRequestOrBuilder + getRequestOrBuilder() { + if (requestBuilder_ != null) { + return requestBuilder_.getMessageOrBuilder(); + } else { + return request_ == null + ? com.google.spanner.admin.database.v1.UpdateDatabaseRequest.getDefaultInstance() + : request_; + } + } + /** + * + * + *
+     * The request for
+     * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase].
+     * 
+ * + * .google.spanner.admin.database.v1.UpdateDatabaseRequest request = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.admin.database.v1.UpdateDatabaseRequest, + com.google.spanner.admin.database.v1.UpdateDatabaseRequest.Builder, + com.google.spanner.admin.database.v1.UpdateDatabaseRequestOrBuilder> + getRequestFieldBuilder() { + if (requestBuilder_ == null) { + requestBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.admin.database.v1.UpdateDatabaseRequest, + com.google.spanner.admin.database.v1.UpdateDatabaseRequest.Builder, + com.google.spanner.admin.database.v1.UpdateDatabaseRequestOrBuilder>( + getRequest(), getParentForChildren(), isClean()); + request_ = null; + } + return requestBuilder_; + } + + private com.google.spanner.admin.database.v1.OperationProgress progress_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.admin.database.v1.OperationProgress, + com.google.spanner.admin.database.v1.OperationProgress.Builder, + com.google.spanner.admin.database.v1.OperationProgressOrBuilder> + progressBuilder_; + /** + * + * + *
+     * The progress of the
+     * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase]
+     * operation.
+     * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 2; + * + * @return Whether the progress field is set. + */ + public boolean hasProgress() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + * + * + *
+     * The progress of the
+     * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase]
+     * operation.
+     * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 2; + * + * @return The progress. + */ + public com.google.spanner.admin.database.v1.OperationProgress getProgress() { + if (progressBuilder_ == null) { + return progress_ == null + ? com.google.spanner.admin.database.v1.OperationProgress.getDefaultInstance() + : progress_; + } else { + return progressBuilder_.getMessage(); + } + } + /** + * + * + *
+     * The progress of the
+     * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase]
+     * operation.
+     * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 2; + */ + public Builder setProgress(com.google.spanner.admin.database.v1.OperationProgress value) { + if (progressBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + progress_ = value; + } else { + progressBuilder_.setMessage(value); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * + * + *
+     * The progress of the
+     * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase]
+     * operation.
+     * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 2; + */ + public Builder setProgress( + com.google.spanner.admin.database.v1.OperationProgress.Builder builderForValue) { + if (progressBuilder_ == null) { + progress_ = builderForValue.build(); + } else { + progressBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * + * + *
+     * The progress of the
+     * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase]
+     * operation.
+     * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 2; + */ + public Builder mergeProgress(com.google.spanner.admin.database.v1.OperationProgress value) { + if (progressBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0) + && progress_ != null + && progress_ + != com.google.spanner.admin.database.v1.OperationProgress.getDefaultInstance()) { + getProgressBuilder().mergeFrom(value); + } else { + progress_ = value; + } + } else { + progressBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * + * + *
+     * The progress of the
+     * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase]
+     * operation.
+     * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 2; + */ + public Builder clearProgress() { + bitField0_ = (bitField0_ & ~0x00000002); + progress_ = null; + if (progressBuilder_ != null) { + progressBuilder_.dispose(); + progressBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+     * The progress of the
+     * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase]
+     * operation.
+     * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 2; + */ + public com.google.spanner.admin.database.v1.OperationProgress.Builder getProgressBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return getProgressFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * The progress of the
+     * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase]
+     * operation.
+     * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 2; + */ + public com.google.spanner.admin.database.v1.OperationProgressOrBuilder getProgressOrBuilder() { + if (progressBuilder_ != null) { + return progressBuilder_.getMessageOrBuilder(); + } else { + return progress_ == null + ? com.google.spanner.admin.database.v1.OperationProgress.getDefaultInstance() + : progress_; + } + } + /** + * + * + *
+     * The progress of the
+     * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase]
+     * operation.
+     * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.admin.database.v1.OperationProgress, + com.google.spanner.admin.database.v1.OperationProgress.Builder, + com.google.spanner.admin.database.v1.OperationProgressOrBuilder> + getProgressFieldBuilder() { + if (progressBuilder_ == null) { + progressBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.admin.database.v1.OperationProgress, + com.google.spanner.admin.database.v1.OperationProgress.Builder, + com.google.spanner.admin.database.v1.OperationProgressOrBuilder>( + getProgress(), getParentForChildren(), isClean()); + progress_ = null; + } + return progressBuilder_; + } + + private com.google.protobuf.Timestamp cancelTime_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder> + cancelTimeBuilder_; + /** + * + * + *
+     * The time at which this operation was cancelled. If set, this operation is
+     * in the process of undoing itself (which is best-effort).
+     * 
+ * + * .google.protobuf.Timestamp cancel_time = 3; + * + * @return Whether the cancelTime field is set. + */ + public boolean hasCancelTime() { + return ((bitField0_ & 0x00000004) != 0); + } + /** + * + * + *
+     * The time at which this operation was cancelled. If set, this operation is
+     * in the process of undoing itself (which is best-effort).
+     * 
+ * + * .google.protobuf.Timestamp cancel_time = 3; + * + * @return The cancelTime. + */ + public com.google.protobuf.Timestamp getCancelTime() { + if (cancelTimeBuilder_ == null) { + return cancelTime_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : cancelTime_; + } else { + return cancelTimeBuilder_.getMessage(); + } + } + /** + * + * + *
+     * The time at which this operation was cancelled. If set, this operation is
+     * in the process of undoing itself (which is best-effort).
+     * 
+ * + * .google.protobuf.Timestamp cancel_time = 3; + */ + public Builder setCancelTime(com.google.protobuf.Timestamp value) { + if (cancelTimeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + cancelTime_ = value; + } else { + cancelTimeBuilder_.setMessage(value); + } + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * + * + *
+     * The time at which this operation was cancelled. If set, this operation is
+     * in the process of undoing itself (which is best-effort).
+     * 
+ * + * .google.protobuf.Timestamp cancel_time = 3; + */ + public Builder setCancelTime(com.google.protobuf.Timestamp.Builder builderForValue) { + if (cancelTimeBuilder_ == null) { + cancelTime_ = builderForValue.build(); + } else { + cancelTimeBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * + * + *
+     * The time at which this operation was cancelled. If set, this operation is
+     * in the process of undoing itself (which is best-effort).
+     * 
+ * + * .google.protobuf.Timestamp cancel_time = 3; + */ + public Builder mergeCancelTime(com.google.protobuf.Timestamp value) { + if (cancelTimeBuilder_ == null) { + if (((bitField0_ & 0x00000004) != 0) + && cancelTime_ != null + && cancelTime_ != com.google.protobuf.Timestamp.getDefaultInstance()) { + getCancelTimeBuilder().mergeFrom(value); + } else { + cancelTime_ = value; + } + } else { + cancelTimeBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * + * + *
+     * The time at which this operation was cancelled. If set, this operation is
+     * in the process of undoing itself (which is best-effort).
+     * 
+ * + * .google.protobuf.Timestamp cancel_time = 3; + */ + public Builder clearCancelTime() { + bitField0_ = (bitField0_ & ~0x00000004); + cancelTime_ = null; + if (cancelTimeBuilder_ != null) { + cancelTimeBuilder_.dispose(); + cancelTimeBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+     * The time at which this operation was cancelled. If set, this operation is
+     * in the process of undoing itself (which is best-effort).
+     * 
+ * + * .google.protobuf.Timestamp cancel_time = 3; + */ + public com.google.protobuf.Timestamp.Builder getCancelTimeBuilder() { + bitField0_ |= 0x00000004; + onChanged(); + return getCancelTimeFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * The time at which this operation was cancelled. If set, this operation is
+     * in the process of undoing itself (which is best-effort).
+     * 
+ * + * .google.protobuf.Timestamp cancel_time = 3; + */ + public com.google.protobuf.TimestampOrBuilder getCancelTimeOrBuilder() { + if (cancelTimeBuilder_ != null) { + return cancelTimeBuilder_.getMessageOrBuilder(); + } else { + return cancelTime_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : cancelTime_; + } + } + /** + * + * + *
+     * The time at which this operation was cancelled. If set, this operation is
+     * in the process of undoing itself (which is best-effort).
+     * 
+ * + * .google.protobuf.Timestamp cancel_time = 3; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder> + getCancelTimeFieldBuilder() { + if (cancelTimeBuilder_ == null) { + cancelTimeBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder>( + getCancelTime(), getParentForChildren(), isClean()); + cancelTime_ = null; + } + return cancelTimeBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.spanner.admin.database.v1.UpdateDatabaseMetadata) + } + + // @@protoc_insertion_point(class_scope:google.spanner.admin.database.v1.UpdateDatabaseMetadata) + private static final com.google.spanner.admin.database.v1.UpdateDatabaseMetadata DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.spanner.admin.database.v1.UpdateDatabaseMetadata(); + } + + public static com.google.spanner.admin.database.v1.UpdateDatabaseMetadata getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public UpdateDatabaseMetadata parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.spanner.admin.database.v1.UpdateDatabaseMetadata getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseMetadataOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseMetadataOrBuilder.java new file mode 100644 index 0000000000..876bdd9440 --- /dev/null +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseMetadataOrBuilder.java @@ -0,0 +1,142 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/spanner/admin/database/v1/spanner_database_admin.proto + +package com.google.spanner.admin.database.v1; + +public interface UpdateDatabaseMetadataOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.spanner.admin.database.v1.UpdateDatabaseMetadata) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * The request for
+   * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase].
+   * 
+ * + * .google.spanner.admin.database.v1.UpdateDatabaseRequest request = 1; + * + * @return Whether the request field is set. + */ + boolean hasRequest(); + /** + * + * + *
+   * The request for
+   * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase].
+   * 
+ * + * .google.spanner.admin.database.v1.UpdateDatabaseRequest request = 1; + * + * @return The request. + */ + com.google.spanner.admin.database.v1.UpdateDatabaseRequest getRequest(); + /** + * + * + *
+   * The request for
+   * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase].
+   * 
+ * + * .google.spanner.admin.database.v1.UpdateDatabaseRequest request = 1; + */ + com.google.spanner.admin.database.v1.UpdateDatabaseRequestOrBuilder getRequestOrBuilder(); + + /** + * + * + *
+   * The progress of the
+   * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase]
+   * operation.
+   * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 2; + * + * @return Whether the progress field is set. + */ + boolean hasProgress(); + /** + * + * + *
+   * The progress of the
+   * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase]
+   * operation.
+   * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 2; + * + * @return The progress. + */ + com.google.spanner.admin.database.v1.OperationProgress getProgress(); + /** + * + * + *
+   * The progress of the
+   * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase]
+   * operation.
+   * 
+ * + * .google.spanner.admin.database.v1.OperationProgress progress = 2; + */ + com.google.spanner.admin.database.v1.OperationProgressOrBuilder getProgressOrBuilder(); + + /** + * + * + *
+   * The time at which this operation was cancelled. If set, this operation is
+   * in the process of undoing itself (which is best-effort).
+   * 
+ * + * .google.protobuf.Timestamp cancel_time = 3; + * + * @return Whether the cancelTime field is set. + */ + boolean hasCancelTime(); + /** + * + * + *
+   * The time at which this operation was cancelled. If set, this operation is
+   * in the process of undoing itself (which is best-effort).
+   * 
+ * + * .google.protobuf.Timestamp cancel_time = 3; + * + * @return The cancelTime. + */ + com.google.protobuf.Timestamp getCancelTime(); + /** + * + * + *
+   * The time at which this operation was cancelled. If set, this operation is
+   * in the process of undoing itself (which is best-effort).
+   * 
+ * + * .google.protobuf.Timestamp cancel_time = 3; + */ + com.google.protobuf.TimestampOrBuilder getCancelTimeOrBuilder(); +} diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseRequest.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseRequest.java new file mode 100644 index 0000000000..c496653a2f --- /dev/null +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseRequest.java @@ -0,0 +1,1046 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/spanner/admin/database/v1/spanner_database_admin.proto + +package com.google.spanner.admin.database.v1; + +/** + * + * + *
+ * The request for
+ * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase].
+ * 
+ * + * Protobuf type {@code google.spanner.admin.database.v1.UpdateDatabaseRequest} + */ +public final class UpdateDatabaseRequest extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.spanner.admin.database.v1.UpdateDatabaseRequest) + UpdateDatabaseRequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use UpdateDatabaseRequest.newBuilder() to construct. + private UpdateDatabaseRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private UpdateDatabaseRequest() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new UpdateDatabaseRequest(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet getUnknownFields() { + return this.unknownFields; + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto + .internal_static_google_spanner_admin_database_v1_UpdateDatabaseRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto + .internal_static_google_spanner_admin_database_v1_UpdateDatabaseRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.admin.database.v1.UpdateDatabaseRequest.class, + com.google.spanner.admin.database.v1.UpdateDatabaseRequest.Builder.class); + } + + public static final int DATABASE_FIELD_NUMBER = 1; + private com.google.spanner.admin.database.v1.Database database_; + /** + * + * + *
+   * Required. The database to update.
+   * The `name` field of the database is of the form
+   * `projects/<project>/instances/<instance>/databases/<database>`.
+   * 
+ * + * + * .google.spanner.admin.database.v1.Database database = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * + * @return Whether the database field is set. + */ + @java.lang.Override + public boolean hasDatabase() { + return database_ != null; + } + /** + * + * + *
+   * Required. The database to update.
+   * The `name` field of the database is of the form
+   * `projects/<project>/instances/<instance>/databases/<database>`.
+   * 
+ * + * + * .google.spanner.admin.database.v1.Database database = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * + * @return The database. + */ + @java.lang.Override + public com.google.spanner.admin.database.v1.Database getDatabase() { + return database_ == null + ? com.google.spanner.admin.database.v1.Database.getDefaultInstance() + : database_; + } + /** + * + * + *
+   * Required. The database to update.
+   * The `name` field of the database is of the form
+   * `projects/<project>/instances/<instance>/databases/<database>`.
+   * 
+ * + * + * .google.spanner.admin.database.v1.Database database = 1 [(.google.api.field_behavior) = REQUIRED]; + * + */ + @java.lang.Override + public com.google.spanner.admin.database.v1.DatabaseOrBuilder getDatabaseOrBuilder() { + return database_ == null + ? com.google.spanner.admin.database.v1.Database.getDefaultInstance() + : database_; + } + + public static final int UPDATE_MASK_FIELD_NUMBER = 2; + private com.google.protobuf.FieldMask updateMask_; + /** + * + * + *
+   * Required. The list of fields to update. Currently, only
+   * `enable_drop_protection` field can be updated.
+   * 
+ * + * .google.protobuf.FieldMask update_mask = 2 [(.google.api.field_behavior) = REQUIRED]; + * + * + * @return Whether the updateMask field is set. + */ + @java.lang.Override + public boolean hasUpdateMask() { + return updateMask_ != null; + } + /** + * + * + *
+   * Required. The list of fields to update. Currently, only
+   * `enable_drop_protection` field can be updated.
+   * 
+ * + * .google.protobuf.FieldMask update_mask = 2 [(.google.api.field_behavior) = REQUIRED]; + * + * + * @return The updateMask. + */ + @java.lang.Override + public com.google.protobuf.FieldMask getUpdateMask() { + return updateMask_ == null ? com.google.protobuf.FieldMask.getDefaultInstance() : updateMask_; + } + /** + * + * + *
+   * Required. The list of fields to update. Currently, only
+   * `enable_drop_protection` field can be updated.
+   * 
+ * + * .google.protobuf.FieldMask update_mask = 2 [(.google.api.field_behavior) = REQUIRED]; + * + */ + @java.lang.Override + public com.google.protobuf.FieldMaskOrBuilder getUpdateMaskOrBuilder() { + return updateMask_ == null ? com.google.protobuf.FieldMask.getDefaultInstance() : updateMask_; + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (database_ != null) { + output.writeMessage(1, getDatabase()); + } + if (updateMask_ != null) { + output.writeMessage(2, getUpdateMask()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (database_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getDatabase()); + } + if (updateMask_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getUpdateMask()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.spanner.admin.database.v1.UpdateDatabaseRequest)) { + return super.equals(obj); + } + com.google.spanner.admin.database.v1.UpdateDatabaseRequest other = + (com.google.spanner.admin.database.v1.UpdateDatabaseRequest) obj; + + if (hasDatabase() != other.hasDatabase()) return false; + if (hasDatabase()) { + if (!getDatabase().equals(other.getDatabase())) return false; + } + if (hasUpdateMask() != other.hasUpdateMask()) return false; + if (hasUpdateMask()) { + if (!getUpdateMask().equals(other.getUpdateMask())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasDatabase()) { + hash = (37 * hash) + DATABASE_FIELD_NUMBER; + hash = (53 * hash) + getDatabase().hashCode(); + } + if (hasUpdateMask()) { + hash = (37 * hash) + UPDATE_MASK_FIELD_NUMBER; + hash = (53 * hash) + getUpdateMask().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.spanner.admin.database.v1.UpdateDatabaseRequest parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.admin.database.v1.UpdateDatabaseRequest parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.admin.database.v1.UpdateDatabaseRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.admin.database.v1.UpdateDatabaseRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.admin.database.v1.UpdateDatabaseRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.admin.database.v1.UpdateDatabaseRequest parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.admin.database.v1.UpdateDatabaseRequest parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.admin.database.v1.UpdateDatabaseRequest parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.admin.database.v1.UpdateDatabaseRequest parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.spanner.admin.database.v1.UpdateDatabaseRequest parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.admin.database.v1.UpdateDatabaseRequest parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.admin.database.v1.UpdateDatabaseRequest parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.spanner.admin.database.v1.UpdateDatabaseRequest prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * The request for
+   * [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase].
+   * 
+ * + * Protobuf type {@code google.spanner.admin.database.v1.UpdateDatabaseRequest} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.spanner.admin.database.v1.UpdateDatabaseRequest) + com.google.spanner.admin.database.v1.UpdateDatabaseRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto + .internal_static_google_spanner_admin_database_v1_UpdateDatabaseRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto + .internal_static_google_spanner_admin_database_v1_UpdateDatabaseRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.admin.database.v1.UpdateDatabaseRequest.class, + com.google.spanner.admin.database.v1.UpdateDatabaseRequest.Builder.class); + } + + // Construct using com.google.spanner.admin.database.v1.UpdateDatabaseRequest.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + database_ = null; + if (databaseBuilder_ != null) { + databaseBuilder_.dispose(); + databaseBuilder_ = null; + } + updateMask_ = null; + if (updateMaskBuilder_ != null) { + updateMaskBuilder_.dispose(); + updateMaskBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.spanner.admin.database.v1.SpannerDatabaseAdminProto + .internal_static_google_spanner_admin_database_v1_UpdateDatabaseRequest_descriptor; + } + + @java.lang.Override + public com.google.spanner.admin.database.v1.UpdateDatabaseRequest getDefaultInstanceForType() { + return com.google.spanner.admin.database.v1.UpdateDatabaseRequest.getDefaultInstance(); + } + + @java.lang.Override + public com.google.spanner.admin.database.v1.UpdateDatabaseRequest build() { + com.google.spanner.admin.database.v1.UpdateDatabaseRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.spanner.admin.database.v1.UpdateDatabaseRequest buildPartial() { + com.google.spanner.admin.database.v1.UpdateDatabaseRequest result = + new com.google.spanner.admin.database.v1.UpdateDatabaseRequest(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0(com.google.spanner.admin.database.v1.UpdateDatabaseRequest result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.database_ = databaseBuilder_ == null ? database_ : databaseBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.updateMask_ = updateMaskBuilder_ == null ? updateMask_ : updateMaskBuilder_.build(); + } + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.spanner.admin.database.v1.UpdateDatabaseRequest) { + return mergeFrom((com.google.spanner.admin.database.v1.UpdateDatabaseRequest) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.spanner.admin.database.v1.UpdateDatabaseRequest other) { + if (other == com.google.spanner.admin.database.v1.UpdateDatabaseRequest.getDefaultInstance()) + return this; + if (other.hasDatabase()) { + mergeDatabase(other.getDatabase()); + } + if (other.hasUpdateMask()) { + mergeUpdateMask(other.getUpdateMask()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getDatabaseFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 18: + { + input.readMessage(getUpdateMaskFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000002; + break; + } // case 18 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private com.google.spanner.admin.database.v1.Database database_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.admin.database.v1.Database, + com.google.spanner.admin.database.v1.Database.Builder, + com.google.spanner.admin.database.v1.DatabaseOrBuilder> + databaseBuilder_; + /** + * + * + *
+     * Required. The database to update.
+     * The `name` field of the database is of the form
+     * `projects/<project>/instances/<instance>/databases/<database>`.
+     * 
+ * + * + * .google.spanner.admin.database.v1.Database database = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * + * @return Whether the database field is set. + */ + public boolean hasDatabase() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * + * + *
+     * Required. The database to update.
+     * The `name` field of the database is of the form
+     * `projects/<project>/instances/<instance>/databases/<database>`.
+     * 
+ * + * + * .google.spanner.admin.database.v1.Database database = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * + * @return The database. + */ + public com.google.spanner.admin.database.v1.Database getDatabase() { + if (databaseBuilder_ == null) { + return database_ == null + ? com.google.spanner.admin.database.v1.Database.getDefaultInstance() + : database_; + } else { + return databaseBuilder_.getMessage(); + } + } + /** + * + * + *
+     * Required. The database to update.
+     * The `name` field of the database is of the form
+     * `projects/<project>/instances/<instance>/databases/<database>`.
+     * 
+ * + * + * .google.spanner.admin.database.v1.Database database = 1 [(.google.api.field_behavior) = REQUIRED]; + * + */ + public Builder setDatabase(com.google.spanner.admin.database.v1.Database value) { + if (databaseBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + database_ = value; + } else { + databaseBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+     * Required. The database to update.
+     * The `name` field of the database is of the form
+     * `projects/<project>/instances/<instance>/databases/<database>`.
+     * 
+ * + * + * .google.spanner.admin.database.v1.Database database = 1 [(.google.api.field_behavior) = REQUIRED]; + * + */ + public Builder setDatabase( + com.google.spanner.admin.database.v1.Database.Builder builderForValue) { + if (databaseBuilder_ == null) { + database_ = builderForValue.build(); + } else { + databaseBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+     * Required. The database to update.
+     * The `name` field of the database is of the form
+     * `projects/<project>/instances/<instance>/databases/<database>`.
+     * 
+ * + * + * .google.spanner.admin.database.v1.Database database = 1 [(.google.api.field_behavior) = REQUIRED]; + * + */ + public Builder mergeDatabase(com.google.spanner.admin.database.v1.Database value) { + if (databaseBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) + && database_ != null + && database_ != com.google.spanner.admin.database.v1.Database.getDefaultInstance()) { + getDatabaseBuilder().mergeFrom(value); + } else { + database_ = value; + } + } else { + databaseBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+     * Required. The database to update.
+     * The `name` field of the database is of the form
+     * `projects/<project>/instances/<instance>/databases/<database>`.
+     * 
+ * + * + * .google.spanner.admin.database.v1.Database database = 1 [(.google.api.field_behavior) = REQUIRED]; + * + */ + public Builder clearDatabase() { + bitField0_ = (bitField0_ & ~0x00000001); + database_ = null; + if (databaseBuilder_ != null) { + databaseBuilder_.dispose(); + databaseBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+     * Required. The database to update.
+     * The `name` field of the database is of the form
+     * `projects/<project>/instances/<instance>/databases/<database>`.
+     * 
+ * + * + * .google.spanner.admin.database.v1.Database database = 1 [(.google.api.field_behavior) = REQUIRED]; + * + */ + public com.google.spanner.admin.database.v1.Database.Builder getDatabaseBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getDatabaseFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Required. The database to update.
+     * The `name` field of the database is of the form
+     * `projects/<project>/instances/<instance>/databases/<database>`.
+     * 
+ * + * + * .google.spanner.admin.database.v1.Database database = 1 [(.google.api.field_behavior) = REQUIRED]; + * + */ + public com.google.spanner.admin.database.v1.DatabaseOrBuilder getDatabaseOrBuilder() { + if (databaseBuilder_ != null) { + return databaseBuilder_.getMessageOrBuilder(); + } else { + return database_ == null + ? com.google.spanner.admin.database.v1.Database.getDefaultInstance() + : database_; + } + } + /** + * + * + *
+     * Required. The database to update.
+     * The `name` field of the database is of the form
+     * `projects/<project>/instances/<instance>/databases/<database>`.
+     * 
+ * + * + * .google.spanner.admin.database.v1.Database database = 1 [(.google.api.field_behavior) = REQUIRED]; + * + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.admin.database.v1.Database, + com.google.spanner.admin.database.v1.Database.Builder, + com.google.spanner.admin.database.v1.DatabaseOrBuilder> + getDatabaseFieldBuilder() { + if (databaseBuilder_ == null) { + databaseBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.admin.database.v1.Database, + com.google.spanner.admin.database.v1.Database.Builder, + com.google.spanner.admin.database.v1.DatabaseOrBuilder>( + getDatabase(), getParentForChildren(), isClean()); + database_ = null; + } + return databaseBuilder_; + } + + private com.google.protobuf.FieldMask updateMask_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.FieldMask, + com.google.protobuf.FieldMask.Builder, + com.google.protobuf.FieldMaskOrBuilder> + updateMaskBuilder_; + /** + * + * + *
+     * Required. The list of fields to update. Currently, only
+     * `enable_drop_protection` field can be updated.
+     * 
+ * + * .google.protobuf.FieldMask update_mask = 2 [(.google.api.field_behavior) = REQUIRED]; + * + * + * @return Whether the updateMask field is set. + */ + public boolean hasUpdateMask() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + * + * + *
+     * Required. The list of fields to update. Currently, only
+     * `enable_drop_protection` field can be updated.
+     * 
+ * + * .google.protobuf.FieldMask update_mask = 2 [(.google.api.field_behavior) = REQUIRED]; + * + * + * @return The updateMask. + */ + public com.google.protobuf.FieldMask getUpdateMask() { + if (updateMaskBuilder_ == null) { + return updateMask_ == null + ? com.google.protobuf.FieldMask.getDefaultInstance() + : updateMask_; + } else { + return updateMaskBuilder_.getMessage(); + } + } + /** + * + * + *
+     * Required. The list of fields to update. Currently, only
+     * `enable_drop_protection` field can be updated.
+     * 
+ * + * .google.protobuf.FieldMask update_mask = 2 [(.google.api.field_behavior) = REQUIRED]; + * + */ + public Builder setUpdateMask(com.google.protobuf.FieldMask value) { + if (updateMaskBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + updateMask_ = value; + } else { + updateMaskBuilder_.setMessage(value); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * + * + *
+     * Required. The list of fields to update. Currently, only
+     * `enable_drop_protection` field can be updated.
+     * 
+ * + * .google.protobuf.FieldMask update_mask = 2 [(.google.api.field_behavior) = REQUIRED]; + * + */ + public Builder setUpdateMask(com.google.protobuf.FieldMask.Builder builderForValue) { + if (updateMaskBuilder_ == null) { + updateMask_ = builderForValue.build(); + } else { + updateMaskBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * + * + *
+     * Required. The list of fields to update. Currently, only
+     * `enable_drop_protection` field can be updated.
+     * 
+ * + * .google.protobuf.FieldMask update_mask = 2 [(.google.api.field_behavior) = REQUIRED]; + * + */ + public Builder mergeUpdateMask(com.google.protobuf.FieldMask value) { + if (updateMaskBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0) + && updateMask_ != null + && updateMask_ != com.google.protobuf.FieldMask.getDefaultInstance()) { + getUpdateMaskBuilder().mergeFrom(value); + } else { + updateMask_ = value; + } + } else { + updateMaskBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * + * + *
+     * Required. The list of fields to update. Currently, only
+     * `enable_drop_protection` field can be updated.
+     * 
+ * + * .google.protobuf.FieldMask update_mask = 2 [(.google.api.field_behavior) = REQUIRED]; + * + */ + public Builder clearUpdateMask() { + bitField0_ = (bitField0_ & ~0x00000002); + updateMask_ = null; + if (updateMaskBuilder_ != null) { + updateMaskBuilder_.dispose(); + updateMaskBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+     * Required. The list of fields to update. Currently, only
+     * `enable_drop_protection` field can be updated.
+     * 
+ * + * .google.protobuf.FieldMask update_mask = 2 [(.google.api.field_behavior) = REQUIRED]; + * + */ + public com.google.protobuf.FieldMask.Builder getUpdateMaskBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return getUpdateMaskFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Required. The list of fields to update. Currently, only
+     * `enable_drop_protection` field can be updated.
+     * 
+ * + * .google.protobuf.FieldMask update_mask = 2 [(.google.api.field_behavior) = REQUIRED]; + * + */ + public com.google.protobuf.FieldMaskOrBuilder getUpdateMaskOrBuilder() { + if (updateMaskBuilder_ != null) { + return updateMaskBuilder_.getMessageOrBuilder(); + } else { + return updateMask_ == null + ? com.google.protobuf.FieldMask.getDefaultInstance() + : updateMask_; + } + } + /** + * + * + *
+     * Required. The list of fields to update. Currently, only
+     * `enable_drop_protection` field can be updated.
+     * 
+ * + * .google.protobuf.FieldMask update_mask = 2 [(.google.api.field_behavior) = REQUIRED]; + * + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.FieldMask, + com.google.protobuf.FieldMask.Builder, + com.google.protobuf.FieldMaskOrBuilder> + getUpdateMaskFieldBuilder() { + if (updateMaskBuilder_ == null) { + updateMaskBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.FieldMask, + com.google.protobuf.FieldMask.Builder, + com.google.protobuf.FieldMaskOrBuilder>( + getUpdateMask(), getParentForChildren(), isClean()); + updateMask_ = null; + } + return updateMaskBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.spanner.admin.database.v1.UpdateDatabaseRequest) + } + + // @@protoc_insertion_point(class_scope:google.spanner.admin.database.v1.UpdateDatabaseRequest) + private static final com.google.spanner.admin.database.v1.UpdateDatabaseRequest DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.spanner.admin.database.v1.UpdateDatabaseRequest(); + } + + public static com.google.spanner.admin.database.v1.UpdateDatabaseRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public UpdateDatabaseRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.spanner.admin.database.v1.UpdateDatabaseRequest getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseRequestOrBuilder.java b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseRequestOrBuilder.java new file mode 100644 index 0000000000..810c0bce69 --- /dev/null +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/java/com/google/spanner/admin/database/v1/UpdateDatabaseRequestOrBuilder.java @@ -0,0 +1,113 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/spanner/admin/database/v1/spanner_database_admin.proto + +package com.google.spanner.admin.database.v1; + +public interface UpdateDatabaseRequestOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.spanner.admin.database.v1.UpdateDatabaseRequest) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * Required. The database to update.
+   * The `name` field of the database is of the form
+   * `projects/<project>/instances/<instance>/databases/<database>`.
+   * 
+ * + * + * .google.spanner.admin.database.v1.Database database = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * + * @return Whether the database field is set. + */ + boolean hasDatabase(); + /** + * + * + *
+   * Required. The database to update.
+   * The `name` field of the database is of the form
+   * `projects/<project>/instances/<instance>/databases/<database>`.
+   * 
+ * + * + * .google.spanner.admin.database.v1.Database database = 1 [(.google.api.field_behavior) = REQUIRED]; + * + * + * @return The database. + */ + com.google.spanner.admin.database.v1.Database getDatabase(); + /** + * + * + *
+   * Required. The database to update.
+   * The `name` field of the database is of the form
+   * `projects/<project>/instances/<instance>/databases/<database>`.
+   * 
+ * + * + * .google.spanner.admin.database.v1.Database database = 1 [(.google.api.field_behavior) = REQUIRED]; + * + */ + com.google.spanner.admin.database.v1.DatabaseOrBuilder getDatabaseOrBuilder(); + + /** + * + * + *
+   * Required. The list of fields to update. Currently, only
+   * `enable_drop_protection` field can be updated.
+   * 
+ * + * .google.protobuf.FieldMask update_mask = 2 [(.google.api.field_behavior) = REQUIRED]; + * + * + * @return Whether the updateMask field is set. + */ + boolean hasUpdateMask(); + /** + * + * + *
+   * Required. The list of fields to update. Currently, only
+   * `enable_drop_protection` field can be updated.
+   * 
+ * + * .google.protobuf.FieldMask update_mask = 2 [(.google.api.field_behavior) = REQUIRED]; + * + * + * @return The updateMask. + */ + com.google.protobuf.FieldMask getUpdateMask(); + /** + * + * + *
+   * Required. The list of fields to update. Currently, only
+   * `enable_drop_protection` field can be updated.
+   * 
+ * + * .google.protobuf.FieldMask update_mask = 2 [(.google.api.field_behavior) = REQUIRED]; + * + */ + com.google.protobuf.FieldMaskOrBuilder getUpdateMaskOrBuilder(); +} diff --git a/proto-google-cloud-spanner-admin-database-v1/src/main/proto/google/spanner/admin/database/v1/spanner_database_admin.proto b/proto-google-cloud-spanner-admin-database-v1/src/main/proto/google/spanner/admin/database/v1/spanner_database_admin.proto index 4d98fa1313..f45bb932fd 100644 --- a/proto-google-cloud-spanner-admin-database-v1/src/main/proto/google/spanner/admin/database/v1/spanner_database_admin.proto +++ b/proto-google-cloud-spanner-admin-database-v1/src/main/proto/google/spanner/admin/database/v1/spanner_database_admin.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -24,6 +24,7 @@ import "google/iam/v1/iam_policy.proto"; import "google/iam/v1/policy.proto"; import "google/longrunning/operations.proto"; import "google/protobuf/empty.proto"; +import "google/protobuf/field_mask.proto"; import "google/protobuf/timestamp.proto"; import "google/spanner/admin/database/v1/backup.proto"; import "google/spanner/admin/database/v1/common.proto"; @@ -89,6 +90,55 @@ service DatabaseAdmin { option (google.api.method_signature) = "name"; } + // Updates a Cloud Spanner database. The returned + // [long-running operation][google.longrunning.Operation] can be used to track + // the progress of updating the database. If the named database does not + // exist, returns `NOT_FOUND`. + // + // While the operation is pending: + // + // * The database's + // [reconciling][google.spanner.admin.database.v1.Database.reconciling] + // field is set to true. + // * Cancelling the operation is best-effort. If the cancellation succeeds, + // the operation metadata's + // [cancel_time][google.spanner.admin.database.v1.UpdateDatabaseMetadata.cancel_time] + // is set, the updates are reverted, and the operation terminates with a + // `CANCELLED` status. + // * New UpdateDatabase requests will return a `FAILED_PRECONDITION` error + // until the pending operation is done (returns successfully or with + // error). + // * Reading the database via the API continues to give the pre-request + // values. + // + // Upon completion of the returned operation: + // + // * The new values are in effect and readable via the API. + // * The database's + // [reconciling][google.spanner.admin.database.v1.Database.reconciling] + // field becomes false. + // + // The returned [long-running operation][google.longrunning.Operation] will + // have a name of the format + // `projects//instances//databases//operations/` + // and can be used to track the database modification. The + // [metadata][google.longrunning.Operation.metadata] field type is + // [UpdateDatabaseMetadata][google.spanner.admin.database.v1.UpdateDatabaseMetadata]. + // The [response][google.longrunning.Operation.response] field type is + // [Database][google.spanner.admin.database.v1.Database], if successful. + rpc UpdateDatabase(UpdateDatabaseRequest) + returns (google.longrunning.Operation) { + option (google.api.http) = { + patch: "/v1/{database.name=projects/*/instances/*/databases/*}" + body: "database" + }; + option (google.api.method_signature) = "database,update_mask"; + option (google.longrunning.operation_info) = { + response_type: "Database" + metadata_type: "UpdateDatabaseMetadata" + }; + } + // Updates the schema of a Cloud Spanner database by // creating/altering/dropping tables, columns, indexes, etc. The returned // [long-running operation][google.longrunning.Operation] will have a name of @@ -449,6 +499,14 @@ message Database { // Output only. The dialect of the Cloud Spanner Database. DatabaseDialect database_dialect = 10 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Whether drop protection is enabled for this database. Defaults to false, + // if not set. + bool enable_drop_protection = 11; + + // Output only. If true, the database is being updated. If false, there are no + // ongoing update operations for the database. + bool reconciling = 12 [(google.api.field_behavior) = OUTPUT_ONLY]; } // The request for [ListDatabases][google.spanner.admin.database.v1.DatabaseAdmin.ListDatabases]. @@ -537,6 +595,37 @@ message GetDatabaseRequest { ]; } +// The request for +// [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase]. +message UpdateDatabaseRequest { + // Required. The database to update. + // The `name` field of the database is of the form + // `projects//instances//databases/`. + Database database = 1 [(google.api.field_behavior) = REQUIRED]; + + // Required. The list of fields to update. Currently, only + // `enable_drop_protection` field can be updated. + google.protobuf.FieldMask update_mask = 2 + [(google.api.field_behavior) = REQUIRED]; +} + +// Metadata type for the operation returned by +// [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase]. +message UpdateDatabaseMetadata { + // The request for + // [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase]. + UpdateDatabaseRequest request = 1; + + // The progress of the + // [UpdateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase] + // operation. + OperationProgress progress = 2; + + // The time at which this operation was cancelled. If set, this operation is + // in the process of undoing itself (which is best-effort). + google.protobuf.Timestamp cancel_time = 3; +} + // Enqueues the given DDL statements to be applied, in order but not // necessarily all at once, to the database schema at some point (or // points) in the future. The server checks that the statements