diff --git a/google-cloud-clients/google-cloud-compute/pom.xml b/google-cloud-clients/google-cloud-compute/pom.xml index bd956f431738..1562f1224a38 100644 --- a/google-cloud-clients/google-cloud-compute/pom.xml +++ b/google-cloud-clients/google-cloud-compute/pom.xml @@ -31,6 +31,11 @@ google-api-services-compute compile + + com.google.auto.value + auto-value + provided + diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/AddressClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/AddressClient.java index 350917331d05..11ea2e0a2174 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/AddressClient.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/AddressClient.java @@ -20,9 +20,12 @@ import com.google.api.core.ApiFutures; import com.google.api.core.BetaApi; import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.httpjson.EmptyMessage; +import com.google.api.gax.longrunning.OperationFuture; import com.google.api.gax.paging.AbstractFixedSizeCollection; import com.google.api.gax.paging.AbstractPage; import com.google.api.gax.paging.AbstractPagedListResponse; +import com.google.api.gax.rpc.OperationCallable; import com.google.api.gax.rpc.PageContext; import com.google.api.gax.rpc.UnaryCallable; import com.google.cloud.compute.v1.stub.AddressStub; @@ -43,7 +46,7 @@ * * try (AddressClient addressClient = AddressClient.create()) { * ProjectRegionAddressName address = ProjectRegionAddressName.of("[PROJECT]", "[REGION]", "[ADDRESS]"); - * Operation response = addressClient.deleteAddress(address); + * Address response = addressClient.getAddress(address); * } * * @@ -103,6 +106,7 @@ public class AddressClient implements BackgroundResource { private final AddressSettings settings; private final AddressStub stub; + private final RegionOperationClient operationsClient; /** Constructs an instance of AddressClient with default settings. */ public static final AddressClient create() throws IOException { @@ -133,12 +137,14 @@ public static final AddressClient create(AddressStub stub) { protected AddressClient(AddressSettings settings) throws IOException { this.settings = settings; this.stub = ((AddressStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected AddressClient(AddressStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub()); } public final AddressSettings getSettings() { @@ -150,6 +156,16 @@ public AddressStub getStub() { return stub; } + /** + * Returns the RegionOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final RegionOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Retrieves an aggregated list of addresses. @@ -298,21 +314,23 @@ public final AggregatedListAddressesPagedResponse aggregatedListAddresses( *

    * try (AddressClient addressClient = AddressClient.create()) {
    *   ProjectRegionAddressName address = ProjectRegionAddressName.of("[PROJECT]", "[REGION]", "[ADDRESS]");
-   *   Operation response = addressClient.deleteAddress(address);
+   *   addressClient.deleteAddressAsync(address).get();
    * }
    * 
* * @param address Name of the address resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteAddress(ProjectRegionAddressName address) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteAddressAsync( + ProjectRegionAddressName address) { DeleteAddressHttpRequest request = DeleteAddressHttpRequest.newBuilder() .setAddress(address == null ? null : address.toString()) .build(); - return deleteAddress(request); + return deleteAddressAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -324,19 +342,20 @@ public final Operation deleteAddress(ProjectRegionAddressName address) { *

    * try (AddressClient addressClient = AddressClient.create()) {
    *   ProjectRegionAddressName address = ProjectRegionAddressName.of("[PROJECT]", "[REGION]", "[ADDRESS]");
-   *   Operation response = addressClient.deleteAddress(address.toString());
+   *   addressClient.deleteAddressAsync(address.toString()).get();
    * }
    * 
* * @param address Name of the address resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteAddress(String address) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteAddressAsync(String address) { DeleteAddressHttpRequest request = DeleteAddressHttpRequest.newBuilder().setAddress(address).build(); - return deleteAddress(request); + return deleteAddressAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -351,16 +370,42 @@ public final Operation deleteAddress(String address) { * DeleteAddressHttpRequest request = DeleteAddressHttpRequest.newBuilder() * .setAddress(address.toString()) * .build(); - * Operation response = addressClient.deleteAddress(request); + * addressClient.deleteAddressAsync(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 */ - @BetaApi - public final Operation deleteAddress(DeleteAddressHttpRequest request) { - return deleteAddressCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteAddressAsync( + DeleteAddressHttpRequest request) { + return deleteAddressOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified address resource. + * + *

Sample code: + * + *


+   * try (AddressClient addressClient = AddressClient.create()) {
+   *   ProjectRegionAddressName address = ProjectRegionAddressName.of("[PROJECT]", "[REGION]", "[ADDRESS]");
+   *   DeleteAddressHttpRequest request = DeleteAddressHttpRequest.newBuilder()
+   *     .setAddress(address.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = addressClient.deleteAddressOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteAddressOperationCallable() { + return stub.deleteAddressOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -377,7 +422,7 @@ public final Operation deleteAddress(DeleteAddressHttpRequest request) { * .build(); * ApiFuture<Operation> future = addressClient.deleteAddressCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -492,7 +537,7 @@ public final UnaryCallable getAddressCallable() * try (AddressClient addressClient = AddressClient.create()) { * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * Address addressResource = Address.newBuilder().build(); - * Operation response = addressClient.insertAddress(region, addressResource); + * addressClient.insertAddressAsync(region, addressResource).get(); * } * * @@ -502,15 +547,17 @@ public final UnaryCallable getAddressCallable() * v1.globalAddresses ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertAddress(ProjectRegionName region, Address addressResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertAddressAsync( + ProjectRegionName region, Address addressResource) { InsertAddressHttpRequest request = InsertAddressHttpRequest.newBuilder() .setRegion(region == null ? null : region.toString()) .setAddressResource(addressResource) .build(); - return insertAddress(request); + return insertAddressAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -523,7 +570,7 @@ public final Operation insertAddress(ProjectRegionName region, Address addressRe * try (AddressClient addressClient = AddressClient.create()) { * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * Address addressResource = Address.newBuilder().build(); - * Operation response = addressClient.insertAddress(region.toString(), addressResource); + * addressClient.insertAddressAsync(region.toString(), addressResource).get(); * } * * @@ -533,15 +580,17 @@ public final Operation insertAddress(ProjectRegionName region, Address addressRe * v1.globalAddresses ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertAddress(String region, Address addressResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertAddressAsync( + String region, Address addressResource) { InsertAddressHttpRequest request = InsertAddressHttpRequest.newBuilder() .setRegion(region) .setAddressResource(addressResource) .build(); - return insertAddress(request); + return insertAddressAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -558,16 +607,44 @@ public final Operation insertAddress(String region, Address addressResource) { * .setRegion(region.toString()) * .setAddressResource(addressResource) * .build(); - * Operation response = addressClient.insertAddress(request); + * addressClient.insertAddressAsync(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 */ - @BetaApi - public final Operation insertAddress(InsertAddressHttpRequest request) { - return insertAddressCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertAddressAsync( + InsertAddressHttpRequest request) { + return insertAddressOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates an address resource in the specified project using the data included in the request. + * + *

Sample code: + * + *


+   * try (AddressClient addressClient = AddressClient.create()) {
+   *   ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
+   *   Address addressResource = Address.newBuilder().build();
+   *   InsertAddressHttpRequest request = InsertAddressHttpRequest.newBuilder()
+   *     .setRegion(region.toString())
+   *     .setAddressResource(addressResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = addressClient.insertAddressOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertAddressOperationCallable() { + return stub.insertAddressOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -586,7 +663,7 @@ public final Operation insertAddress(InsertAddressHttpRequest request) { * .build(); * ApiFuture<Operation> future = addressClient.insertAddressCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/AddressSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/AddressSettings.java index ea1108fe195e..30b0b485a72d 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/AddressSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/AddressSettings.java @@ -22,10 +22,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -49,13 +51,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteAddress to 30 seconds: + * example, to set the total timeout of getAddress to 30 seconds: * *

  * 
  * AddressSettings.Builder addressSettingsBuilder =
  *     AddressSettings.newBuilder();
- * addressSettingsBuilder.deleteAddressSettings().getRetrySettings().toBuilder()
+ * addressSettingsBuilder.getAddressSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * AddressSettings addressSettings = addressSettingsBuilder.build();
  * 
@@ -78,6 +80,14 @@ public UnaryCallSettings deleteAddressSetti
     return ((AddressStubSettings) getStubSettings()).deleteAddressSettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteAddress. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteAddressOperationSettings() {
+    return ((AddressStubSettings) getStubSettings()).deleteAddressOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getAddress. */
   public UnaryCallSettings getAddressSettings() {
     return ((AddressStubSettings) getStubSettings()).getAddressSettings();
@@ -88,6 +98,14 @@ public UnaryCallSettings insertAddressSetti
     return ((AddressStubSettings) getStubSettings()).insertAddressSettings();
   }
 
+  /** Returns the object with the settings used for calls to insertAddress. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertAddressOperationSettings() {
+    return ((AddressStubSettings) getStubSettings()).insertAddressOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listAddresses. */
   public PagedCallSettings
       listAddressesSettings() {
@@ -209,6 +227,14 @@ public UnaryCallSettings.Builder deleteAddr
       return getStubSettingsBuilder().deleteAddressSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteAddress. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteAddressOperationSettings() {
+      return getStubSettingsBuilder().deleteAddressOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getAddress. */
     public UnaryCallSettings.Builder getAddressSettings() {
       return getStubSettingsBuilder().getAddressSettings();
@@ -219,6 +245,14 @@ public UnaryCallSettings.Builder insertAddr
       return getStubSettingsBuilder().insertAddressSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertAddress. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertAddressOperationSettings() {
+      return getStubSettingsBuilder().insertAddressOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listAddresses. */
     public PagedCallSettings.Builder<
             ListAddressesHttpRequest, AddressList, ListAddressesPagedResponse>
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/AutoscalerClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/AutoscalerClient.java
index e1a36fe8bb5e..b7145323b3c8 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/AutoscalerClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/AutoscalerClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.AutoscalerStub;
@@ -43,7 +46,7 @@
  * 
  * try (AutoscalerClient autoscalerClient = AutoscalerClient.create()) {
  *   ProjectZoneAutoscalerName autoscaler = ProjectZoneAutoscalerName.of("[PROJECT]", "[ZONE]", "[AUTOSCALER]");
- *   Operation response = autoscalerClient.deleteAutoscaler(autoscaler);
+ *   Autoscaler response = autoscalerClient.getAutoscaler(autoscaler);
  * }
  * 
  * 
@@ -103,6 +106,7 @@ public class AutoscalerClient implements BackgroundResource { private final AutoscalerSettings settings; private final AutoscalerStub stub; + private final ZoneOperationClient operationsClient; /** Constructs an instance of AutoscalerClient with default settings. */ public static final AutoscalerClient create() throws IOException { @@ -133,12 +137,14 @@ public static final AutoscalerClient create(AutoscalerStub stub) { protected AutoscalerClient(AutoscalerSettings settings) throws IOException { this.settings = settings; this.stub = ((AutoscalerStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = ZoneOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected AutoscalerClient(AutoscalerStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = ZoneOperationClient.create(this.stub.getOperationsStub()); } public final AutoscalerSettings getSettings() { @@ -150,6 +156,16 @@ public AutoscalerStub getStub() { return stub; } + /** + * Returns the ZoneOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final ZoneOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Retrieves an aggregated list of autoscalers. @@ -299,21 +315,23 @@ public final AggregatedListAutoscalersPagedResponse aggregatedListAutoscalers( *

    * try (AutoscalerClient autoscalerClient = AutoscalerClient.create()) {
    *   ProjectZoneAutoscalerName autoscaler = ProjectZoneAutoscalerName.of("[PROJECT]", "[ZONE]", "[AUTOSCALER]");
-   *   Operation response = autoscalerClient.deleteAutoscaler(autoscaler);
+   *   autoscalerClient.deleteAutoscalerAsync(autoscaler).get();
    * }
    * 
* * @param autoscaler Name of the autoscaler to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteAutoscaler(ProjectZoneAutoscalerName autoscaler) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteAutoscalerAsync( + ProjectZoneAutoscalerName autoscaler) { DeleteAutoscalerHttpRequest request = DeleteAutoscalerHttpRequest.newBuilder() .setAutoscaler(autoscaler == null ? null : autoscaler.toString()) .build(); - return deleteAutoscaler(request); + return deleteAutoscalerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -325,19 +343,20 @@ public final Operation deleteAutoscaler(ProjectZoneAutoscalerName autoscaler) { *

    * try (AutoscalerClient autoscalerClient = AutoscalerClient.create()) {
    *   ProjectZoneAutoscalerName autoscaler = ProjectZoneAutoscalerName.of("[PROJECT]", "[ZONE]", "[AUTOSCALER]");
-   *   Operation response = autoscalerClient.deleteAutoscaler(autoscaler.toString());
+   *   autoscalerClient.deleteAutoscalerAsync(autoscaler.toString()).get();
    * }
    * 
* * @param autoscaler Name of the autoscaler to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteAutoscaler(String autoscaler) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteAutoscalerAsync(String autoscaler) { DeleteAutoscalerHttpRequest request = DeleteAutoscalerHttpRequest.newBuilder().setAutoscaler(autoscaler).build(); - return deleteAutoscaler(request); + return deleteAutoscalerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -352,16 +371,42 @@ public final Operation deleteAutoscaler(String autoscaler) { * DeleteAutoscalerHttpRequest request = DeleteAutoscalerHttpRequest.newBuilder() * .setAutoscaler(autoscaler.toString()) * .build(); - * Operation response = autoscalerClient.deleteAutoscaler(request); + * autoscalerClient.deleteAutoscalerAsync(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 */ - @BetaApi - public final Operation deleteAutoscaler(DeleteAutoscalerHttpRequest request) { - return deleteAutoscalerCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteAutoscalerAsync( + DeleteAutoscalerHttpRequest request) { + return deleteAutoscalerOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified autoscaler. + * + *

Sample code: + * + *


+   * try (AutoscalerClient autoscalerClient = AutoscalerClient.create()) {
+   *   ProjectZoneAutoscalerName autoscaler = ProjectZoneAutoscalerName.of("[PROJECT]", "[ZONE]", "[AUTOSCALER]");
+   *   DeleteAutoscalerHttpRequest request = DeleteAutoscalerHttpRequest.newBuilder()
+   *     .setAutoscaler(autoscaler.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = autoscalerClient.deleteAutoscalerOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteAutoscalerOperationCallable() { + return stub.deleteAutoscalerOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -378,7 +423,7 @@ public final Operation deleteAutoscaler(DeleteAutoscalerHttpRequest request) { * .build(); * ApiFuture<Operation> future = autoscalerClient.deleteAutoscalerCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -498,7 +543,7 @@ public final UnaryCallable getAutoscalerCa * try (AutoscalerClient autoscalerClient = AutoscalerClient.create()) { * ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]"); * Autoscaler autoscalerResource = Autoscaler.newBuilder().build(); - * Operation response = autoscalerClient.insertAutoscaler(zone, autoscalerResource); + * autoscalerClient.insertAutoscalerAsync(zone, autoscalerResource).get(); * } * * @@ -510,15 +555,17 @@ public final UnaryCallable getAutoscalerCa * resource_for beta.regionAutoscalers ==) (== resource_for v1.regionAutoscalers ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertAutoscaler(ProjectZoneName zone, Autoscaler autoscalerResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertAutoscalerAsync( + ProjectZoneName zone, Autoscaler autoscalerResource) { InsertAutoscalerHttpRequest request = InsertAutoscalerHttpRequest.newBuilder() .setZone(zone == null ? null : zone.toString()) .setAutoscalerResource(autoscalerResource) .build(); - return insertAutoscaler(request); + return insertAutoscalerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -531,7 +578,7 @@ public final Operation insertAutoscaler(ProjectZoneName zone, Autoscaler autosca * try (AutoscalerClient autoscalerClient = AutoscalerClient.create()) { * ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]"); * Autoscaler autoscalerResource = Autoscaler.newBuilder().build(); - * Operation response = autoscalerClient.insertAutoscaler(zone.toString(), autoscalerResource); + * autoscalerClient.insertAutoscalerAsync(zone.toString(), autoscalerResource).get(); * } * * @@ -543,15 +590,17 @@ public final Operation insertAutoscaler(ProjectZoneName zone, Autoscaler autosca * resource_for beta.regionAutoscalers ==) (== resource_for v1.regionAutoscalers ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertAutoscaler(String zone, Autoscaler autoscalerResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertAutoscalerAsync( + String zone, Autoscaler autoscalerResource) { InsertAutoscalerHttpRequest request = InsertAutoscalerHttpRequest.newBuilder() .setZone(zone) .setAutoscalerResource(autoscalerResource) .build(); - return insertAutoscaler(request); + return insertAutoscalerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -568,16 +617,44 @@ public final Operation insertAutoscaler(String zone, Autoscaler autoscalerResour * .setZone(zone.toString()) * .setAutoscalerResource(autoscalerResource) * .build(); - * Operation response = autoscalerClient.insertAutoscaler(request); + * autoscalerClient.insertAutoscalerAsync(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 */ - @BetaApi - public final Operation insertAutoscaler(InsertAutoscalerHttpRequest request) { - return insertAutoscalerCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertAutoscalerAsync( + InsertAutoscalerHttpRequest request) { + return insertAutoscalerOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates an autoscaler in the specified project using the data included in the request. + * + *

Sample code: + * + *


+   * try (AutoscalerClient autoscalerClient = AutoscalerClient.create()) {
+   *   ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
+   *   Autoscaler autoscalerResource = Autoscaler.newBuilder().build();
+   *   InsertAutoscalerHttpRequest request = InsertAutoscalerHttpRequest.newBuilder()
+   *     .setZone(zone.toString())
+   *     .setAutoscalerResource(autoscalerResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = autoscalerClient.insertAutoscalerOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertAutoscalerOperationCallable() { + return stub.insertAutoscalerOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -596,7 +673,7 @@ public final Operation insertAutoscaler(InsertAutoscalerHttpRequest request) { * .build(); * ApiFuture<Operation> future = autoscalerClient.insertAutoscalerCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -754,7 +831,7 @@ public final UnaryCallable listAutos * ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]"); * Autoscaler autoscalerResource = Autoscaler.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = autoscalerClient.patchAutoscaler(autoscaler, zone, autoscalerResource, fieldMask); + * autoscalerClient.patchAutoscalerAsync(autoscaler, zone, autoscalerResource, fieldMask).get(); * } * * @@ -771,8 +848,9 @@ public final UnaryCallable listAutos * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchAutoscaler( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchAutoscalerAsync( String autoscaler, ProjectZoneName zone, Autoscaler autoscalerResource, @@ -785,7 +863,7 @@ public final Operation patchAutoscaler( .setAutoscalerResource(autoscalerResource) .addAllFieldMask(fieldMask) .build(); - return patchAutoscaler(request); + return patchAutoscalerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -801,7 +879,7 @@ public final Operation patchAutoscaler( * ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]"); * Autoscaler autoscalerResource = Autoscaler.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = autoscalerClient.patchAutoscaler(autoscaler, zone.toString(), autoscalerResource, fieldMask); + * autoscalerClient.patchAutoscalerAsync(autoscaler, zone.toString(), autoscalerResource, fieldMask).get(); * } * * @@ -818,8 +896,9 @@ public final Operation patchAutoscaler( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchAutoscaler( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchAutoscalerAsync( String autoscaler, String zone, Autoscaler autoscalerResource, List fieldMask) { PatchAutoscalerHttpRequest request = @@ -829,7 +908,7 @@ public final Operation patchAutoscaler( .setAutoscalerResource(autoscalerResource) .addAllFieldMask(fieldMask) .build(); - return patchAutoscaler(request); + return patchAutoscalerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -851,16 +930,49 @@ public final Operation patchAutoscaler( * .setAutoscalerResource(autoscalerResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = autoscalerClient.patchAutoscaler(request); + * autoscalerClient.patchAutoscalerAsync(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 */ - @BetaApi - public final Operation patchAutoscaler(PatchAutoscalerHttpRequest request) { - return patchAutoscalerCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchAutoscalerAsync( + PatchAutoscalerHttpRequest request) { + return patchAutoscalerOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Updates an autoscaler in the specified project using the data included in the request. This + * method supports PATCH semantics and uses the JSON merge patch format and processing rules. + * + *

Sample code: + * + *


+   * try (AutoscalerClient autoscalerClient = AutoscalerClient.create()) {
+   *   String autoscaler = "";
+   *   ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
+   *   Autoscaler autoscalerResource = Autoscaler.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   PatchAutoscalerHttpRequest request = PatchAutoscalerHttpRequest.newBuilder()
+   *     .setAutoscaler(autoscaler)
+   *     .setZone(zone.toString())
+   *     .setAutoscalerResource(autoscalerResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = autoscalerClient.patchAutoscalerOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + patchAutoscalerOperationCallable() { + return stub.patchAutoscalerOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -884,7 +996,7 @@ public final Operation patchAutoscaler(PatchAutoscalerHttpRequest request) { * .build(); * ApiFuture<Operation> future = autoscalerClient.patchAutoscalerCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -905,7 +1017,7 @@ public final UnaryCallable patchAutoscale * ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]"); * Autoscaler autoscalerResource = Autoscaler.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = autoscalerClient.updateAutoscaler(autoscaler, zone, autoscalerResource, fieldMask); + * autoscalerClient.updateAutoscalerAsync(autoscaler, zone, autoscalerResource, fieldMask).get(); * } * * @@ -922,8 +1034,9 @@ public final UnaryCallable patchAutoscale * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation updateAutoscaler( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateAutoscalerAsync( String autoscaler, ProjectZoneName zone, Autoscaler autoscalerResource, @@ -936,7 +1049,7 @@ public final Operation updateAutoscaler( .setAutoscalerResource(autoscalerResource) .addAllFieldMask(fieldMask) .build(); - return updateAutoscaler(request); + return updateAutoscalerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -951,7 +1064,7 @@ public final Operation updateAutoscaler( * ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]"); * Autoscaler autoscalerResource = Autoscaler.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = autoscalerClient.updateAutoscaler(autoscaler, zone.toString(), autoscalerResource, fieldMask); + * autoscalerClient.updateAutoscalerAsync(autoscaler, zone.toString(), autoscalerResource, fieldMask).get(); * } * * @@ -968,8 +1081,9 @@ public final Operation updateAutoscaler( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation updateAutoscaler( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateAutoscalerAsync( String autoscaler, String zone, Autoscaler autoscalerResource, List fieldMask) { UpdateAutoscalerHttpRequest request = @@ -979,7 +1093,7 @@ public final Operation updateAutoscaler( .setAutoscalerResource(autoscalerResource) .addAllFieldMask(fieldMask) .build(); - return updateAutoscaler(request); + return updateAutoscalerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1000,16 +1114,48 @@ public final Operation updateAutoscaler( * .setAutoscalerResource(autoscalerResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = autoscalerClient.updateAutoscaler(request); + * autoscalerClient.updateAutoscalerAsync(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 */ - @BetaApi - public final Operation updateAutoscaler(UpdateAutoscalerHttpRequest request) { - return updateAutoscalerCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateAutoscalerAsync( + UpdateAutoscalerHttpRequest request) { + return updateAutoscalerOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Updates an autoscaler in the specified project using the data included in the request. + * + *

Sample code: + * + *


+   * try (AutoscalerClient autoscalerClient = AutoscalerClient.create()) {
+   *   String autoscaler = "";
+   *   ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
+   *   Autoscaler autoscalerResource = Autoscaler.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   UpdateAutoscalerHttpRequest request = UpdateAutoscalerHttpRequest.newBuilder()
+   *     .setAutoscaler(autoscaler)
+   *     .setZone(zone.toString())
+   *     .setAutoscalerResource(autoscalerResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = autoscalerClient.updateAutoscalerOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + updateAutoscalerOperationCallable() { + return stub.updateAutoscalerOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1032,7 +1178,7 @@ public final Operation updateAutoscaler(UpdateAutoscalerHttpRequest request) { * .build(); * ApiFuture<Operation> future = autoscalerClient.updateAutoscalerCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/AutoscalerSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/AutoscalerSettings.java index 4db44b598b57..5291dda1f328 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/AutoscalerSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/AutoscalerSettings.java @@ -22,10 +22,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -49,13 +51,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteAutoscaler to 30 seconds: + * example, to set the total timeout of getAutoscaler to 30 seconds: * *

  * 
  * AutoscalerSettings.Builder autoscalerSettingsBuilder =
  *     AutoscalerSettings.newBuilder();
- * autoscalerSettingsBuilder.deleteAutoscalerSettings().getRetrySettings().toBuilder()
+ * autoscalerSettingsBuilder.getAutoscalerSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * AutoscalerSettings autoscalerSettings = autoscalerSettingsBuilder.build();
  * 
@@ -78,6 +80,14 @@ public UnaryCallSettings deleteAutoscale
     return ((AutoscalerStubSettings) getStubSettings()).deleteAutoscalerSettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteAutoscaler. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteAutoscalerOperationSettings() {
+    return ((AutoscalerStubSettings) getStubSettings()).deleteAutoscalerOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getAutoscaler. */
   public UnaryCallSettings getAutoscalerSettings() {
     return ((AutoscalerStubSettings) getStubSettings()).getAutoscalerSettings();
@@ -88,6 +98,14 @@ public UnaryCallSettings insertAutoscale
     return ((AutoscalerStubSettings) getStubSettings()).insertAutoscalerSettings();
   }
 
+  /** Returns the object with the settings used for calls to insertAutoscaler. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertAutoscalerOperationSettings() {
+    return ((AutoscalerStubSettings) getStubSettings()).insertAutoscalerOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listAutoscalers. */
   public PagedCallSettings
       listAutoscalersSettings() {
@@ -99,11 +117,27 @@ public UnaryCallSettings patchAutoscalerS
     return ((AutoscalerStubSettings) getStubSettings()).patchAutoscalerSettings();
   }
 
+  /** Returns the object with the settings used for calls to patchAutoscaler. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      patchAutoscalerOperationSettings() {
+    return ((AutoscalerStubSettings) getStubSettings()).patchAutoscalerOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to updateAutoscaler. */
   public UnaryCallSettings updateAutoscalerSettings() {
     return ((AutoscalerStubSettings) getStubSettings()).updateAutoscalerSettings();
   }
 
+  /** Returns the object with the settings used for calls to updateAutoscaler. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      updateAutoscalerOperationSettings() {
+    return ((AutoscalerStubSettings) getStubSettings()).updateAutoscalerOperationSettings();
+  }
+
   public static final AutoscalerSettings create(AutoscalerStubSettings stub) throws IOException {
     return new AutoscalerSettings.Builder(stub.toBuilder()).build();
   }
@@ -220,6 +254,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteAutoscalerSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteAutoscaler. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteAutoscalerOperationSettings() {
+      return getStubSettingsBuilder().deleteAutoscalerOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getAutoscaler. */
     public UnaryCallSettings.Builder getAutoscalerSettings() {
       return getStubSettingsBuilder().getAutoscalerSettings();
@@ -231,6 +273,14 @@ public UnaryCallSettings.Builder getAutosc
       return getStubSettingsBuilder().insertAutoscalerSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertAutoscaler. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertAutoscalerOperationSettings() {
+      return getStubSettingsBuilder().insertAutoscalerOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listAutoscalers. */
     public PagedCallSettings.Builder<
             ListAutoscalersHttpRequest, AutoscalerList, ListAutoscalersPagedResponse>
@@ -244,12 +294,28 @@ public UnaryCallSettings.Builder getAutosc
       return getStubSettingsBuilder().patchAutoscalerSettings();
     }
 
+    /** Returns the builder for the settings used for calls to patchAutoscaler. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchAutoscalerOperationSettings() {
+      return getStubSettingsBuilder().patchAutoscalerOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to updateAutoscaler. */
     public UnaryCallSettings.Builder
         updateAutoscalerSettings() {
       return getStubSettingsBuilder().updateAutoscalerSettings();
     }
 
+    /** Returns the builder for the settings used for calls to updateAutoscaler. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        updateAutoscalerOperationSettings() {
+      return getStubSettingsBuilder().updateAutoscalerOperationSettings();
+    }
+
     @Override
     public AutoscalerSettings build() throws IOException {
       return new AutoscalerSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/BackendBucketClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/BackendBucketClient.java
index 108449139b62..06b8a3c63179 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/BackendBucketClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/BackendBucketClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.BackendBucketStub;
@@ -43,8 +46,7 @@
  * 
  * try (BackendBucketClient backendBucketClient = BackendBucketClient.create()) {
  *   ProjectGlobalBackendBucketName backendBucket = ProjectGlobalBackendBucketName.of("[PROJECT]", "[BACKEND_BUCKET]");
- *   SignedUrlKey signedUrlKeyResource = SignedUrlKey.newBuilder().build();
- *   Operation response = backendBucketClient.addSignedUrlKeyBackendBucket(backendBucket, signedUrlKeyResource);
+ *   BackendBucket response = backendBucketClient.getBackendBucket(backendBucket);
  * }
  * 
  * 
@@ -104,6 +106,7 @@ public class BackendBucketClient implements BackgroundResource { private final BackendBucketSettings settings; private final BackendBucketStub stub; + private final GlobalOperationClient operationsClient; /** Constructs an instance of BackendBucketClient with default settings. */ public static final BackendBucketClient create() throws IOException { @@ -136,12 +139,14 @@ public static final BackendBucketClient create(BackendBucketStub stub) { protected BackendBucketClient(BackendBucketSettings settings) throws IOException { this.settings = settings; this.stub = ((BackendBucketStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected BackendBucketClient(BackendBucketStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } public final BackendBucketSettings getSettings() { @@ -153,6 +158,16 @@ public BackendBucketStub getStub() { return stub; } + /** + * Returns the GlobalOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final GlobalOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Adds a key for validating requests with signed URLs for this backend bucket. @@ -163,7 +178,7 @@ public BackendBucketStub getStub() { * try (BackendBucketClient backendBucketClient = BackendBucketClient.create()) { * ProjectGlobalBackendBucketName backendBucket = ProjectGlobalBackendBucketName.of("[PROJECT]", "[BACKEND_BUCKET]"); * SignedUrlKey signedUrlKeyResource = SignedUrlKey.newBuilder().build(); - * Operation response = backendBucketClient.addSignedUrlKeyBackendBucket(backendBucket, signedUrlKeyResource); + * backendBucketClient.addSignedUrlKeyBackendBucketAsync(backendBucket, signedUrlKeyResource).get(); * } * * @@ -173,8 +188,9 @@ public BackendBucketStub getStub() { * URLs * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation addSignedUrlKeyBackendBucket( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture addSignedUrlKeyBackendBucketAsync( ProjectGlobalBackendBucketName backendBucket, SignedUrlKey signedUrlKeyResource) { AddSignedUrlKeyBackendBucketHttpRequest request = @@ -182,7 +198,7 @@ public final Operation addSignedUrlKeyBackendBucket( .setBackendBucket(backendBucket == null ? null : backendBucket.toString()) .setSignedUrlKeyResource(signedUrlKeyResource) .build(); - return addSignedUrlKeyBackendBucket(request); + return addSignedUrlKeyBackendBucketAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -195,7 +211,7 @@ public final Operation addSignedUrlKeyBackendBucket( * try (BackendBucketClient backendBucketClient = BackendBucketClient.create()) { * ProjectGlobalBackendBucketName backendBucket = ProjectGlobalBackendBucketName.of("[PROJECT]", "[BACKEND_BUCKET]"); * SignedUrlKey signedUrlKeyResource = SignedUrlKey.newBuilder().build(); - * Operation response = backendBucketClient.addSignedUrlKeyBackendBucket(backendBucket.toString(), signedUrlKeyResource); + * backendBucketClient.addSignedUrlKeyBackendBucketAsync(backendBucket.toString(), signedUrlKeyResource).get(); * } * * @@ -205,8 +221,9 @@ public final Operation addSignedUrlKeyBackendBucket( * URLs * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation addSignedUrlKeyBackendBucket( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture addSignedUrlKeyBackendBucketAsync( String backendBucket, SignedUrlKey signedUrlKeyResource) { AddSignedUrlKeyBackendBucketHttpRequest request = @@ -214,7 +231,7 @@ public final Operation addSignedUrlKeyBackendBucket( .setBackendBucket(backendBucket) .setSignedUrlKeyResource(signedUrlKeyResource) .build(); - return addSignedUrlKeyBackendBucket(request); + return addSignedUrlKeyBackendBucketAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -231,17 +248,44 @@ public final Operation addSignedUrlKeyBackendBucket( * .setBackendBucket(backendBucket.toString()) * .setSignedUrlKeyResource(signedUrlKeyResource) * .build(); - * Operation response = backendBucketClient.addSignedUrlKeyBackendBucket(request); + * backendBucketClient.addSignedUrlKeyBackendBucketAsync(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 */ - @BetaApi - public final Operation addSignedUrlKeyBackendBucket( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture addSignedUrlKeyBackendBucketAsync( AddSignedUrlKeyBackendBucketHttpRequest request) { - return addSignedUrlKeyBackendBucketCallable().call(request); + return addSignedUrlKeyBackendBucketOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Adds a key for validating requests with signed URLs for this backend bucket. + * + *

Sample code: + * + *


+   * try (BackendBucketClient backendBucketClient = BackendBucketClient.create()) {
+   *   ProjectGlobalBackendBucketName backendBucket = ProjectGlobalBackendBucketName.of("[PROJECT]", "[BACKEND_BUCKET]");
+   *   SignedUrlKey signedUrlKeyResource = SignedUrlKey.newBuilder().build();
+   *   AddSignedUrlKeyBackendBucketHttpRequest request = AddSignedUrlKeyBackendBucketHttpRequest.newBuilder()
+   *     .setBackendBucket(backendBucket.toString())
+   *     .setSignedUrlKeyResource(signedUrlKeyResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = backendBucketClient.addSignedUrlKeyBackendBucketOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + addSignedUrlKeyBackendBucketOperationCallable() { + return stub.addSignedUrlKeyBackendBucketOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -260,7 +304,7 @@ public final Operation addSignedUrlKeyBackendBucket( * .build(); * ApiFuture<Operation> future = backendBucketClient.addSignedUrlKeyBackendBucketCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -279,21 +323,23 @@ public final Operation addSignedUrlKeyBackendBucket( *

    * try (BackendBucketClient backendBucketClient = BackendBucketClient.create()) {
    *   ProjectGlobalBackendBucketName backendBucket = ProjectGlobalBackendBucketName.of("[PROJECT]", "[BACKEND_BUCKET]");
-   *   Operation response = backendBucketClient.deleteBackendBucket(backendBucket);
+   *   backendBucketClient.deleteBackendBucketAsync(backendBucket).get();
    * }
    * 
* * @param backendBucket Name of the BackendBucket resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteBackendBucket(ProjectGlobalBackendBucketName backendBucket) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteBackendBucketAsync( + ProjectGlobalBackendBucketName backendBucket) { DeleteBackendBucketHttpRequest request = DeleteBackendBucketHttpRequest.newBuilder() .setBackendBucket(backendBucket == null ? null : backendBucket.toString()) .build(); - return deleteBackendBucket(request); + return deleteBackendBucketAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -305,19 +351,21 @@ public final Operation deleteBackendBucket(ProjectGlobalBackendBucketName backen *

    * try (BackendBucketClient backendBucketClient = BackendBucketClient.create()) {
    *   ProjectGlobalBackendBucketName backendBucket = ProjectGlobalBackendBucketName.of("[PROJECT]", "[BACKEND_BUCKET]");
-   *   Operation response = backendBucketClient.deleteBackendBucket(backendBucket.toString());
+   *   backendBucketClient.deleteBackendBucketAsync(backendBucket.toString()).get();
    * }
    * 
* * @param backendBucket Name of the BackendBucket resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteBackendBucket(String backendBucket) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteBackendBucketAsync( + String backendBucket) { DeleteBackendBucketHttpRequest request = DeleteBackendBucketHttpRequest.newBuilder().setBackendBucket(backendBucket).build(); - return deleteBackendBucket(request); + return deleteBackendBucketAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -332,16 +380,42 @@ public final Operation deleteBackendBucket(String backendBucket) { * DeleteBackendBucketHttpRequest request = DeleteBackendBucketHttpRequest.newBuilder() * .setBackendBucket(backendBucket.toString()) * .build(); - * Operation response = backendBucketClient.deleteBackendBucket(request); + * backendBucketClient.deleteBackendBucketAsync(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 */ - @BetaApi - public final Operation deleteBackendBucket(DeleteBackendBucketHttpRequest request) { - return deleteBackendBucketCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteBackendBucketAsync( + DeleteBackendBucketHttpRequest request) { + return deleteBackendBucketOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified BackendBucket resource. + * + *

Sample code: + * + *


+   * try (BackendBucketClient backendBucketClient = BackendBucketClient.create()) {
+   *   ProjectGlobalBackendBucketName backendBucket = ProjectGlobalBackendBucketName.of("[PROJECT]", "[BACKEND_BUCKET]");
+   *   DeleteBackendBucketHttpRequest request = DeleteBackendBucketHttpRequest.newBuilder()
+   *     .setBackendBucket(backendBucket.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = backendBucketClient.deleteBackendBucketOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteBackendBucketOperationCallable() { + return stub.deleteBackendBucketOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -358,7 +432,7 @@ public final Operation deleteBackendBucket(DeleteBackendBucketHttpRequest reques * .build(); * ApiFuture<Operation> future = backendBucketClient.deleteBackendBucketCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -378,7 +452,7 @@ public final Operation deleteBackendBucket(DeleteBackendBucketHttpRequest reques * try (BackendBucketClient backendBucketClient = BackendBucketClient.create()) { * ProjectGlobalBackendBucketName backendBucket = ProjectGlobalBackendBucketName.of("[PROJECT]", "[BACKEND_BUCKET]"); * String keyName = ""; - * Operation response = backendBucketClient.deleteSignedUrlKeyBackendBucket(backendBucket, keyName); + * backendBucketClient.deleteSignedUrlKeyBackendBucketAsync(backendBucket, keyName).get(); * } * * @@ -387,8 +461,9 @@ public final Operation deleteBackendBucket(DeleteBackendBucketHttpRequest reques * @param keyName The name of the Signed URL Key to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteSignedUrlKeyBackendBucket( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteSignedUrlKeyBackendBucketAsync( ProjectGlobalBackendBucketName backendBucket, String keyName) { DeleteSignedUrlKeyBackendBucketHttpRequest request = @@ -396,7 +471,7 @@ public final Operation deleteSignedUrlKeyBackendBucket( .setBackendBucket(backendBucket == null ? null : backendBucket.toString()) .setKeyName(keyName) .build(); - return deleteSignedUrlKeyBackendBucket(request); + return deleteSignedUrlKeyBackendBucketAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -409,7 +484,7 @@ public final Operation deleteSignedUrlKeyBackendBucket( * try (BackendBucketClient backendBucketClient = BackendBucketClient.create()) { * ProjectGlobalBackendBucketName backendBucket = ProjectGlobalBackendBucketName.of("[PROJECT]", "[BACKEND_BUCKET]"); * String keyName = ""; - * Operation response = backendBucketClient.deleteSignedUrlKeyBackendBucket(backendBucket.toString(), keyName); + * backendBucketClient.deleteSignedUrlKeyBackendBucketAsync(backendBucket.toString(), keyName).get(); * } * * @@ -418,15 +493,17 @@ public final Operation deleteSignedUrlKeyBackendBucket( * @param keyName The name of the Signed URL Key to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteSignedUrlKeyBackendBucket(String backendBucket, String keyName) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteSignedUrlKeyBackendBucketAsync( + String backendBucket, String keyName) { DeleteSignedUrlKeyBackendBucketHttpRequest request = DeleteSignedUrlKeyBackendBucketHttpRequest.newBuilder() .setBackendBucket(backendBucket) .setKeyName(keyName) .build(); - return deleteSignedUrlKeyBackendBucket(request); + return deleteSignedUrlKeyBackendBucketAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -443,17 +520,45 @@ public final Operation deleteSignedUrlKeyBackendBucket(String backendBucket, Str * .setBackendBucket(backendBucket.toString()) * .setKeyName(keyName) * .build(); - * Operation response = backendBucketClient.deleteSignedUrlKeyBackendBucket(request); + * backendBucketClient.deleteSignedUrlKeyBackendBucketAsync(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 */ - @BetaApi - public final Operation deleteSignedUrlKeyBackendBucket( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteSignedUrlKeyBackendBucketAsync( DeleteSignedUrlKeyBackendBucketHttpRequest request) { - return deleteSignedUrlKeyBackendBucketCallable().call(request); + return deleteSignedUrlKeyBackendBucketOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes a key for validating requests with signed URLs for this backend bucket. + * + *

Sample code: + * + *


+   * try (BackendBucketClient backendBucketClient = BackendBucketClient.create()) {
+   *   ProjectGlobalBackendBucketName backendBucket = ProjectGlobalBackendBucketName.of("[PROJECT]", "[BACKEND_BUCKET]");
+   *   String keyName = "";
+   *   DeleteSignedUrlKeyBackendBucketHttpRequest request = DeleteSignedUrlKeyBackendBucketHttpRequest.newBuilder()
+   *     .setBackendBucket(backendBucket.toString())
+   *     .setKeyName(keyName)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = backendBucketClient.deleteSignedUrlKeyBackendBucketOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable< + DeleteSignedUrlKeyBackendBucketHttpRequest, EmptyMessage, Operation> + deleteSignedUrlKeyBackendBucketOperationCallable() { + return stub.deleteSignedUrlKeyBackendBucketOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -472,7 +577,7 @@ public final Operation deleteSignedUrlKeyBackendBucket( * .build(); * ApiFuture<Operation> future = backendBucketClient.deleteSignedUrlKeyBackendBucketCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -595,7 +700,7 @@ public final BackendBucket getBackendBucket(GetBackendBucketHttpRequest request) * try (BackendBucketClient backendBucketClient = BackendBucketClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * BackendBucket backendBucketResource = BackendBucket.newBuilder().build(); - * Operation response = backendBucketClient.insertBackendBucket(project, backendBucketResource); + * backendBucketClient.insertBackendBucketAsync(project, backendBucketResource).get(); * } * * @@ -604,8 +709,9 @@ public final BackendBucket getBackendBucket(GetBackendBucketHttpRequest request) * bucket. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertBackendBucket( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertBackendBucketAsync( ProjectName project, BackendBucket backendBucketResource) { InsertBackendBucketHttpRequest request = @@ -613,7 +719,7 @@ public final Operation insertBackendBucket( .setProject(project == null ? null : project.toString()) .setBackendBucketResource(backendBucketResource) .build(); - return insertBackendBucket(request); + return insertBackendBucketAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -627,7 +733,7 @@ public final Operation insertBackendBucket( * try (BackendBucketClient backendBucketClient = BackendBucketClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * BackendBucket backendBucketResource = BackendBucket.newBuilder().build(); - * Operation response = backendBucketClient.insertBackendBucket(project.toString(), backendBucketResource); + * backendBucketClient.insertBackendBucketAsync(project.toString(), backendBucketResource).get(); * } * * @@ -636,15 +742,17 @@ public final Operation insertBackendBucket( * bucket. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertBackendBucket(String project, BackendBucket backendBucketResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertBackendBucketAsync( + String project, BackendBucket backendBucketResource) { InsertBackendBucketHttpRequest request = InsertBackendBucketHttpRequest.newBuilder() .setProject(project) .setBackendBucketResource(backendBucketResource) .build(); - return insertBackendBucket(request); + return insertBackendBucketAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -662,16 +770,45 @@ public final Operation insertBackendBucket(String project, BackendBucket backend * .setProject(project.toString()) * .setBackendBucketResource(backendBucketResource) * .build(); - * Operation response = backendBucketClient.insertBackendBucket(request); + * backendBucketClient.insertBackendBucketAsync(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 */ - @BetaApi - public final Operation insertBackendBucket(InsertBackendBucketHttpRequest request) { - return insertBackendBucketCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertBackendBucketAsync( + InsertBackendBucketHttpRequest request) { + return insertBackendBucketOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a BackendBucket resource in the specified project using the data included in the + * request. + * + *

Sample code: + * + *


+   * try (BackendBucketClient backendBucketClient = BackendBucketClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   BackendBucket backendBucketResource = BackendBucket.newBuilder().build();
+   *   InsertBackendBucketHttpRequest request = InsertBackendBucketHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .setBackendBucketResource(backendBucketResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = backendBucketClient.insertBackendBucketOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertBackendBucketOperationCallable() { + return stub.insertBackendBucketOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -691,7 +828,7 @@ public final Operation insertBackendBucket(InsertBackendBucketHttpRequest reques * .build(); * ApiFuture<Operation> future = backendBucketClient.insertBackendBucketCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -851,7 +988,7 @@ public final ListBackendBucketsPagedResponse listBackendBuckets( * ProjectGlobalBackendBucketName backendBucket = ProjectGlobalBackendBucketName.of("[PROJECT]", "[BACKEND_BUCKET]"); * BackendBucket backendBucketResource = BackendBucket.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = backendBucketClient.patchBackendBucket(backendBucket, backendBucketResource, fieldMask); + * backendBucketClient.patchBackendBucketAsync(backendBucket, backendBucketResource, fieldMask).get(); * } * * @@ -864,8 +1001,9 @@ public final ListBackendBucketsPagedResponse listBackendBuckets( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchBackendBucket( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchBackendBucketAsync( ProjectGlobalBackendBucketName backendBucket, BackendBucket backendBucketResource, List fieldMask) { @@ -876,7 +1014,7 @@ public final Operation patchBackendBucket( .setBackendBucketResource(backendBucketResource) .addAllFieldMask(fieldMask) .build(); - return patchBackendBucket(request); + return patchBackendBucketAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -891,7 +1029,7 @@ public final Operation patchBackendBucket( * ProjectGlobalBackendBucketName backendBucket = ProjectGlobalBackendBucketName.of("[PROJECT]", "[BACKEND_BUCKET]"); * BackendBucket backendBucketResource = BackendBucket.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = backendBucketClient.patchBackendBucket(backendBucket.toString(), backendBucketResource, fieldMask); + * backendBucketClient.patchBackendBucketAsync(backendBucket.toString(), backendBucketResource, fieldMask).get(); * } * * @@ -904,8 +1042,9 @@ public final Operation patchBackendBucket( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchBackendBucket( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchBackendBucketAsync( String backendBucket, BackendBucket backendBucketResource, List fieldMask) { PatchBackendBucketHttpRequest request = @@ -914,7 +1053,7 @@ public final Operation patchBackendBucket( .setBackendBucketResource(backendBucketResource) .addAllFieldMask(fieldMask) .build(); - return patchBackendBucket(request); + return patchBackendBucketAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -934,16 +1073,47 @@ public final Operation patchBackendBucket( * .setBackendBucketResource(backendBucketResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = backendBucketClient.patchBackendBucket(request); + * backendBucketClient.patchBackendBucketAsync(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 */ - @BetaApi - public final Operation patchBackendBucket(PatchBackendBucketHttpRequest request) { - return patchBackendBucketCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchBackendBucketAsync( + PatchBackendBucketHttpRequest request) { + return patchBackendBucketOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Updates the specified BackendBucket resource with the data included in the request. This method + * supports PATCH semantics and uses the JSON merge patch format and processing rules. + * + *

Sample code: + * + *


+   * try (BackendBucketClient backendBucketClient = BackendBucketClient.create()) {
+   *   ProjectGlobalBackendBucketName backendBucket = ProjectGlobalBackendBucketName.of("[PROJECT]", "[BACKEND_BUCKET]");
+   *   BackendBucket backendBucketResource = BackendBucket.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   PatchBackendBucketHttpRequest request = PatchBackendBucketHttpRequest.newBuilder()
+   *     .setBackendBucket(backendBucket.toString())
+   *     .setBackendBucketResource(backendBucketResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = backendBucketClient.patchBackendBucketOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + patchBackendBucketOperationCallable() { + return stub.patchBackendBucketOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -965,7 +1135,7 @@ public final Operation patchBackendBucket(PatchBackendBucketHttpRequest request) * .build(); * ApiFuture<Operation> future = backendBucketClient.patchBackendBucketCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -986,7 +1156,7 @@ public final Operation patchBackendBucket(PatchBackendBucketHttpRequest request) * ProjectGlobalBackendBucketName backendBucket = ProjectGlobalBackendBucketName.of("[PROJECT]", "[BACKEND_BUCKET]"); * BackendBucket backendBucketResource = BackendBucket.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = backendBucketClient.updateBackendBucket(backendBucket, backendBucketResource, fieldMask); + * backendBucketClient.updateBackendBucketAsync(backendBucket, backendBucketResource, fieldMask).get(); * } * * @@ -999,8 +1169,9 @@ public final Operation patchBackendBucket(PatchBackendBucketHttpRequest request) * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation updateBackendBucket( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateBackendBucketAsync( ProjectGlobalBackendBucketName backendBucket, BackendBucket backendBucketResource, List fieldMask) { @@ -1011,7 +1182,7 @@ public final Operation updateBackendBucket( .setBackendBucketResource(backendBucketResource) .addAllFieldMask(fieldMask) .build(); - return updateBackendBucket(request); + return updateBackendBucketAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1025,7 +1196,7 @@ public final Operation updateBackendBucket( * ProjectGlobalBackendBucketName backendBucket = ProjectGlobalBackendBucketName.of("[PROJECT]", "[BACKEND_BUCKET]"); * BackendBucket backendBucketResource = BackendBucket.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = backendBucketClient.updateBackendBucket(backendBucket.toString(), backendBucketResource, fieldMask); + * backendBucketClient.updateBackendBucketAsync(backendBucket.toString(), backendBucketResource, fieldMask).get(); * } * * @@ -1038,8 +1209,9 @@ public final Operation updateBackendBucket( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation updateBackendBucket( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateBackendBucketAsync( String backendBucket, BackendBucket backendBucketResource, List fieldMask) { UpdateBackendBucketHttpRequest request = @@ -1048,7 +1220,7 @@ public final Operation updateBackendBucket( .setBackendBucketResource(backendBucketResource) .addAllFieldMask(fieldMask) .build(); - return updateBackendBucket(request); + return updateBackendBucketAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1067,16 +1239,46 @@ public final Operation updateBackendBucket( * .setBackendBucketResource(backendBucketResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = backendBucketClient.updateBackendBucket(request); + * backendBucketClient.updateBackendBucketAsync(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 */ - @BetaApi - public final Operation updateBackendBucket(UpdateBackendBucketHttpRequest request) { - return updateBackendBucketCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateBackendBucketAsync( + UpdateBackendBucketHttpRequest request) { + return updateBackendBucketOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Updates the specified BackendBucket resource with the data included in the request. + * + *

Sample code: + * + *


+   * try (BackendBucketClient backendBucketClient = BackendBucketClient.create()) {
+   *   ProjectGlobalBackendBucketName backendBucket = ProjectGlobalBackendBucketName.of("[PROJECT]", "[BACKEND_BUCKET]");
+   *   BackendBucket backendBucketResource = BackendBucket.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   UpdateBackendBucketHttpRequest request = UpdateBackendBucketHttpRequest.newBuilder()
+   *     .setBackendBucket(backendBucket.toString())
+   *     .setBackendBucketResource(backendBucketResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = backendBucketClient.updateBackendBucketOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + updateBackendBucketOperationCallable() { + return stub.updateBackendBucketOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1097,7 +1299,7 @@ public final Operation updateBackendBucket(UpdateBackendBucketHttpRequest reques * .build(); * ApiFuture<Operation> future = backendBucketClient.updateBackendBucketCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/BackendBucketSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/BackendBucketSettings.java index 92e0aa886ea3..c21a0ac021ce 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/BackendBucketSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/BackendBucketSettings.java @@ -21,10 +21,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -48,13 +50,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of addSignedUrlKeyBackendBucket to 30 seconds: + * example, to set the total timeout of getBackendBucket to 30 seconds: * *

  * 
  * BackendBucketSettings.Builder backendBucketSettingsBuilder =
  *     BackendBucketSettings.newBuilder();
- * backendBucketSettingsBuilder.addSignedUrlKeyBackendBucketSettings().getRetrySettings().toBuilder()
+ * backendBucketSettingsBuilder.getBackendBucketSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * BackendBucketSettings backendBucketSettings = backendBucketSettingsBuilder.build();
  * 
@@ -69,12 +71,29 @@ public class BackendBucketSettings extends ClientSettings
     return ((BackendBucketStubSettings) getStubSettings()).addSignedUrlKeyBackendBucketSettings();
   }
 
+  /** Returns the object with the settings used for calls to addSignedUrlKeyBackendBucket. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      addSignedUrlKeyBackendBucketOperationSettings() {
+    return ((BackendBucketStubSettings) getStubSettings())
+        .addSignedUrlKeyBackendBucketOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to deleteBackendBucket. */
   public UnaryCallSettings
       deleteBackendBucketSettings() {
     return ((BackendBucketStubSettings) getStubSettings()).deleteBackendBucketSettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteBackendBucket. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteBackendBucketOperationSettings() {
+    return ((BackendBucketStubSettings) getStubSettings()).deleteBackendBucketOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to deleteSignedUrlKeyBackendBucket. */
   public UnaryCallSettings
       deleteSignedUrlKeyBackendBucketSettings() {
@@ -82,6 +101,15 @@ public class BackendBucketSettings extends ClientSettings
         .deleteSignedUrlKeyBackendBucketSettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteSignedUrlKeyBackendBucket. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteSignedUrlKeyBackendBucketOperationSettings() {
+    return ((BackendBucketStubSettings) getStubSettings())
+        .deleteSignedUrlKeyBackendBucketOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getBackendBucket. */
   public UnaryCallSettings getBackendBucketSettings() {
     return ((BackendBucketStubSettings) getStubSettings()).getBackendBucketSettings();
@@ -93,6 +121,14 @@ public UnaryCallSettings getBackendB
     return ((BackendBucketStubSettings) getStubSettings()).insertBackendBucketSettings();
   }
 
+  /** Returns the object with the settings used for calls to insertBackendBucket. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertBackendBucketOperationSettings() {
+    return ((BackendBucketStubSettings) getStubSettings()).insertBackendBucketOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listBackendBuckets. */
   public PagedCallSettings<
           ListBackendBucketsHttpRequest, BackendBucketList, ListBackendBucketsPagedResponse>
@@ -105,12 +141,28 @@ public UnaryCallSettings patchBackendB
     return ((BackendBucketStubSettings) getStubSettings()).patchBackendBucketSettings();
   }
 
+  /** Returns the object with the settings used for calls to patchBackendBucket. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      patchBackendBucketOperationSettings() {
+    return ((BackendBucketStubSettings) getStubSettings()).patchBackendBucketOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to updateBackendBucket. */
   public UnaryCallSettings
       updateBackendBucketSettings() {
     return ((BackendBucketStubSettings) getStubSettings()).updateBackendBucketSettings();
   }
 
+  /** Returns the object with the settings used for calls to updateBackendBucket. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      updateBackendBucketOperationSettings() {
+    return ((BackendBucketStubSettings) getStubSettings()).updateBackendBucketOperationSettings();
+  }
+
   public static final BackendBucketSettings create(BackendBucketStubSettings stub)
       throws IOException {
     return new BackendBucketSettings.Builder(stub.toBuilder()).build();
@@ -219,18 +271,44 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().addSignedUrlKeyBackendBucketSettings();
     }
 
+    /** Returns the builder for the settings used for calls to addSignedUrlKeyBackendBucket. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            AddSignedUrlKeyBackendBucketHttpRequest, EmptyMessage, Operation>
+        addSignedUrlKeyBackendBucketOperationSettings() {
+      return getStubSettingsBuilder().addSignedUrlKeyBackendBucketOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to deleteBackendBucket. */
     public UnaryCallSettings.Builder
         deleteBackendBucketSettings() {
       return getStubSettingsBuilder().deleteBackendBucketSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteBackendBucket. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteBackendBucketOperationSettings() {
+      return getStubSettingsBuilder().deleteBackendBucketOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to deleteSignedUrlKeyBackendBucket. */
     public UnaryCallSettings.Builder
         deleteSignedUrlKeyBackendBucketSettings() {
       return getStubSettingsBuilder().deleteSignedUrlKeyBackendBucketSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteSignedUrlKeyBackendBucket. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            DeleteSignedUrlKeyBackendBucketHttpRequest, EmptyMessage, Operation>
+        deleteSignedUrlKeyBackendBucketOperationSettings() {
+      return getStubSettingsBuilder().deleteSignedUrlKeyBackendBucketOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getBackendBucket. */
     public UnaryCallSettings.Builder
         getBackendBucketSettings() {
@@ -243,6 +321,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().insertBackendBucketSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertBackendBucket. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertBackendBucketOperationSettings() {
+      return getStubSettingsBuilder().insertBackendBucketOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listBackendBuckets. */
     public PagedCallSettings.Builder<
             ListBackendBucketsHttpRequest, BackendBucketList, ListBackendBucketsPagedResponse>
@@ -256,12 +342,28 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().patchBackendBucketSettings();
     }
 
+    /** Returns the builder for the settings used for calls to patchBackendBucket. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchBackendBucketOperationSettings() {
+      return getStubSettingsBuilder().patchBackendBucketOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to updateBackendBucket. */
     public UnaryCallSettings.Builder
         updateBackendBucketSettings() {
       return getStubSettingsBuilder().updateBackendBucketSettings();
     }
 
+    /** Returns the builder for the settings used for calls to updateBackendBucket. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        updateBackendBucketOperationSettings() {
+      return getStubSettingsBuilder().updateBackendBucketOperationSettings();
+    }
+
     @Override
     public BackendBucketSettings build() throws IOException {
       return new BackendBucketSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/BackendServiceClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/BackendServiceClient.java
index 04290a2a09cd..8a3742c98662 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/BackendServiceClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/BackendServiceClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.BackendServiceStub;
@@ -43,8 +46,7 @@
  * 
  * try (BackendServiceClient backendServiceClient = BackendServiceClient.create()) {
  *   ProjectGlobalBackendServiceName backendService = ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]");
- *   SignedUrlKey signedUrlKeyResource = SignedUrlKey.newBuilder().build();
- *   Operation response = backendServiceClient.addSignedUrlKeyBackendService(backendService, signedUrlKeyResource);
+ *   BackendService response = backendServiceClient.getBackendService(backendService);
  * }
  * 
  * 
@@ -104,6 +106,7 @@ public class BackendServiceClient implements BackgroundResource { private final BackendServiceSettings settings; private final BackendServiceStub stub; + private final GlobalOperationClient operationsClient; /** Constructs an instance of BackendServiceClient with default settings. */ public static final BackendServiceClient create() throws IOException { @@ -136,12 +139,14 @@ public static final BackendServiceClient create(BackendServiceStub stub) { protected BackendServiceClient(BackendServiceSettings settings) throws IOException { this.settings = settings; this.stub = ((BackendServiceStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected BackendServiceClient(BackendServiceStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } public final BackendServiceSettings getSettings() { @@ -153,6 +158,16 @@ public BackendServiceStub getStub() { return stub; } + /** + * Returns the GlobalOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final GlobalOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Adds a key for validating requests with signed URLs for this backend service. @@ -163,7 +178,7 @@ public BackendServiceStub getStub() { * try (BackendServiceClient backendServiceClient = BackendServiceClient.create()) { * ProjectGlobalBackendServiceName backendService = ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]"); * SignedUrlKey signedUrlKeyResource = SignedUrlKey.newBuilder().build(); - * Operation response = backendServiceClient.addSignedUrlKeyBackendService(backendService, signedUrlKeyResource); + * backendServiceClient.addSignedUrlKeyBackendServiceAsync(backendService, signedUrlKeyResource).get(); * } * * @@ -173,8 +188,9 @@ public BackendServiceStub getStub() { * URLs * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation addSignedUrlKeyBackendService( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture addSignedUrlKeyBackendServiceAsync( ProjectGlobalBackendServiceName backendService, SignedUrlKey signedUrlKeyResource) { AddSignedUrlKeyBackendServiceHttpRequest request = @@ -182,7 +198,7 @@ public final Operation addSignedUrlKeyBackendService( .setBackendService(backendService == null ? null : backendService.toString()) .setSignedUrlKeyResource(signedUrlKeyResource) .build(); - return addSignedUrlKeyBackendService(request); + return addSignedUrlKeyBackendServiceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -195,7 +211,7 @@ public final Operation addSignedUrlKeyBackendService( * try (BackendServiceClient backendServiceClient = BackendServiceClient.create()) { * ProjectGlobalBackendServiceName backendService = ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]"); * SignedUrlKey signedUrlKeyResource = SignedUrlKey.newBuilder().build(); - * Operation response = backendServiceClient.addSignedUrlKeyBackendService(backendService.toString(), signedUrlKeyResource); + * backendServiceClient.addSignedUrlKeyBackendServiceAsync(backendService.toString(), signedUrlKeyResource).get(); * } * * @@ -205,8 +221,9 @@ public final Operation addSignedUrlKeyBackendService( * URLs * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation addSignedUrlKeyBackendService( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture addSignedUrlKeyBackendServiceAsync( String backendService, SignedUrlKey signedUrlKeyResource) { AddSignedUrlKeyBackendServiceHttpRequest request = @@ -214,7 +231,7 @@ public final Operation addSignedUrlKeyBackendService( .setBackendService(backendService) .setSignedUrlKeyResource(signedUrlKeyResource) .build(); - return addSignedUrlKeyBackendService(request); + return addSignedUrlKeyBackendServiceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -231,17 +248,44 @@ public final Operation addSignedUrlKeyBackendService( * .setBackendService(backendService.toString()) * .setSignedUrlKeyResource(signedUrlKeyResource) * .build(); - * Operation response = backendServiceClient.addSignedUrlKeyBackendService(request); + * backendServiceClient.addSignedUrlKeyBackendServiceAsync(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 */ - @BetaApi - public final Operation addSignedUrlKeyBackendService( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture addSignedUrlKeyBackendServiceAsync( AddSignedUrlKeyBackendServiceHttpRequest request) { - return addSignedUrlKeyBackendServiceCallable().call(request); + return addSignedUrlKeyBackendServiceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Adds a key for validating requests with signed URLs for this backend service. + * + *

Sample code: + * + *


+   * try (BackendServiceClient backendServiceClient = BackendServiceClient.create()) {
+   *   ProjectGlobalBackendServiceName backendService = ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]");
+   *   SignedUrlKey signedUrlKeyResource = SignedUrlKey.newBuilder().build();
+   *   AddSignedUrlKeyBackendServiceHttpRequest request = AddSignedUrlKeyBackendServiceHttpRequest.newBuilder()
+   *     .setBackendService(backendService.toString())
+   *     .setSignedUrlKeyResource(signedUrlKeyResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = backendServiceClient.addSignedUrlKeyBackendServiceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + addSignedUrlKeyBackendServiceOperationCallable() { + return stub.addSignedUrlKeyBackendServiceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -260,7 +304,7 @@ public final Operation addSignedUrlKeyBackendService( * .build(); * ApiFuture<Operation> future = backendServiceClient.addSignedUrlKeyBackendServiceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -425,21 +469,23 @@ public final AggregatedListBackendServicesPagedResponse aggregatedListBackendSer *

    * try (BackendServiceClient backendServiceClient = BackendServiceClient.create()) {
    *   ProjectGlobalBackendServiceName backendService = ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]");
-   *   Operation response = backendServiceClient.deleteBackendService(backendService);
+   *   backendServiceClient.deleteBackendServiceAsync(backendService).get();
    * }
    * 
* * @param backendService Name of the BackendService resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteBackendService(ProjectGlobalBackendServiceName backendService) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteBackendServiceAsync( + ProjectGlobalBackendServiceName backendService) { DeleteBackendServiceHttpRequest request = DeleteBackendServiceHttpRequest.newBuilder() .setBackendService(backendService == null ? null : backendService.toString()) .build(); - return deleteBackendService(request); + return deleteBackendServiceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -451,19 +497,21 @@ public final Operation deleteBackendService(ProjectGlobalBackendServiceName back *

    * try (BackendServiceClient backendServiceClient = BackendServiceClient.create()) {
    *   ProjectGlobalBackendServiceName backendService = ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]");
-   *   Operation response = backendServiceClient.deleteBackendService(backendService.toString());
+   *   backendServiceClient.deleteBackendServiceAsync(backendService.toString()).get();
    * }
    * 
* * @param backendService Name of the BackendService resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteBackendService(String backendService) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteBackendServiceAsync( + String backendService) { DeleteBackendServiceHttpRequest request = DeleteBackendServiceHttpRequest.newBuilder().setBackendService(backendService).build(); - return deleteBackendService(request); + return deleteBackendServiceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -478,16 +526,42 @@ public final Operation deleteBackendService(String backendService) { * DeleteBackendServiceHttpRequest request = DeleteBackendServiceHttpRequest.newBuilder() * .setBackendService(backendService.toString()) * .build(); - * Operation response = backendServiceClient.deleteBackendService(request); + * backendServiceClient.deleteBackendServiceAsync(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 */ - @BetaApi - public final Operation deleteBackendService(DeleteBackendServiceHttpRequest request) { - return deleteBackendServiceCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteBackendServiceAsync( + DeleteBackendServiceHttpRequest request) { + return deleteBackendServiceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified BackendService resource. + * + *

Sample code: + * + *


+   * try (BackendServiceClient backendServiceClient = BackendServiceClient.create()) {
+   *   ProjectGlobalBackendServiceName backendService = ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]");
+   *   DeleteBackendServiceHttpRequest request = DeleteBackendServiceHttpRequest.newBuilder()
+   *     .setBackendService(backendService.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = backendServiceClient.deleteBackendServiceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteBackendServiceOperationCallable() { + return stub.deleteBackendServiceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -504,7 +578,7 @@ public final Operation deleteBackendService(DeleteBackendServiceHttpRequest requ * .build(); * ApiFuture<Operation> future = backendServiceClient.deleteBackendServiceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -524,7 +598,7 @@ public final Operation deleteBackendService(DeleteBackendServiceHttpRequest requ * try (BackendServiceClient backendServiceClient = BackendServiceClient.create()) { * ProjectGlobalBackendServiceName backendService = ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]"); * String keyName = ""; - * Operation response = backendServiceClient.deleteSignedUrlKeyBackendService(backendService, keyName); + * backendServiceClient.deleteSignedUrlKeyBackendServiceAsync(backendService, keyName).get(); * } * * @@ -533,8 +607,9 @@ public final Operation deleteBackendService(DeleteBackendServiceHttpRequest requ * @param keyName The name of the Signed URL Key to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteSignedUrlKeyBackendService( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteSignedUrlKeyBackendServiceAsync( ProjectGlobalBackendServiceName backendService, String keyName) { DeleteSignedUrlKeyBackendServiceHttpRequest request = @@ -542,7 +617,7 @@ public final Operation deleteSignedUrlKeyBackendService( .setBackendService(backendService == null ? null : backendService.toString()) .setKeyName(keyName) .build(); - return deleteSignedUrlKeyBackendService(request); + return deleteSignedUrlKeyBackendServiceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -555,7 +630,7 @@ public final Operation deleteSignedUrlKeyBackendService( * try (BackendServiceClient backendServiceClient = BackendServiceClient.create()) { * ProjectGlobalBackendServiceName backendService = ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]"); * String keyName = ""; - * Operation response = backendServiceClient.deleteSignedUrlKeyBackendService(backendService.toString(), keyName); + * backendServiceClient.deleteSignedUrlKeyBackendServiceAsync(backendService.toString(), keyName).get(); * } * * @@ -564,15 +639,17 @@ public final Operation deleteSignedUrlKeyBackendService( * @param keyName The name of the Signed URL Key to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteSignedUrlKeyBackendService(String backendService, String keyName) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteSignedUrlKeyBackendServiceAsync( + String backendService, String keyName) { DeleteSignedUrlKeyBackendServiceHttpRequest request = DeleteSignedUrlKeyBackendServiceHttpRequest.newBuilder() .setBackendService(backendService) .setKeyName(keyName) .build(); - return deleteSignedUrlKeyBackendService(request); + return deleteSignedUrlKeyBackendServiceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -589,17 +666,45 @@ public final Operation deleteSignedUrlKeyBackendService(String backendService, S * .setBackendService(backendService.toString()) * .setKeyName(keyName) * .build(); - * Operation response = backendServiceClient.deleteSignedUrlKeyBackendService(request); + * backendServiceClient.deleteSignedUrlKeyBackendServiceAsync(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 */ - @BetaApi - public final Operation deleteSignedUrlKeyBackendService( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteSignedUrlKeyBackendServiceAsync( DeleteSignedUrlKeyBackendServiceHttpRequest request) { - return deleteSignedUrlKeyBackendServiceCallable().call(request); + return deleteSignedUrlKeyBackendServiceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes a key for validating requests with signed URLs for this backend service. + * + *

Sample code: + * + *


+   * try (BackendServiceClient backendServiceClient = BackendServiceClient.create()) {
+   *   ProjectGlobalBackendServiceName backendService = ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]");
+   *   String keyName = "";
+   *   DeleteSignedUrlKeyBackendServiceHttpRequest request = DeleteSignedUrlKeyBackendServiceHttpRequest.newBuilder()
+   *     .setBackendService(backendService.toString())
+   *     .setKeyName(keyName)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = backendServiceClient.deleteSignedUrlKeyBackendServiceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable< + DeleteSignedUrlKeyBackendServiceHttpRequest, EmptyMessage, Operation> + deleteSignedUrlKeyBackendServiceOperationCallable() { + return stub.deleteSignedUrlKeyBackendServiceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -618,7 +723,7 @@ public final Operation deleteSignedUrlKeyBackendService( * .build(); * ApiFuture<Operation> future = backendServiceClient.deleteSignedUrlKeyBackendServiceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -854,7 +959,7 @@ public final BackendServiceGroupHealth getHealthBackendService( * try (BackendServiceClient backendServiceClient = BackendServiceClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * BackendService backendServiceResource = BackendService.newBuilder().build(); - * Operation response = backendServiceClient.insertBackendService(project, backendServiceResource); + * backendServiceClient.insertBackendServiceAsync(project, backendServiceResource).get(); * } * * @@ -864,8 +969,9 @@ public final BackendServiceGroupHealth getHealthBackendService( * (== resource_for beta.backendService ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertBackendService( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertBackendServiceAsync( ProjectName project, BackendService backendServiceResource) { InsertBackendServiceHttpRequest request = @@ -873,7 +979,7 @@ public final Operation insertBackendService( .setProject(project == null ? null : project.toString()) .setBackendServiceResource(backendServiceResource) .build(); - return insertBackendService(request); + return insertBackendServiceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -888,7 +994,7 @@ public final Operation insertBackendService( * try (BackendServiceClient backendServiceClient = BackendServiceClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * BackendService backendServiceResource = BackendService.newBuilder().build(); - * Operation response = backendServiceClient.insertBackendService(project.toString(), backendServiceResource); + * backendServiceClient.insertBackendServiceAsync(project.toString(), backendServiceResource).get(); * } * * @@ -898,8 +1004,9 @@ public final Operation insertBackendService( * (== resource_for beta.backendService ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertBackendService( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertBackendServiceAsync( String project, BackendService backendServiceResource) { InsertBackendServiceHttpRequest request = @@ -907,7 +1014,7 @@ public final Operation insertBackendService( .setProject(project) .setBackendServiceResource(backendServiceResource) .build(); - return insertBackendService(request); + return insertBackendServiceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -926,16 +1033,46 @@ public final Operation insertBackendService( * .setProject(project.toString()) * .setBackendServiceResource(backendServiceResource) * .build(); - * Operation response = backendServiceClient.insertBackendService(request); + * backendServiceClient.insertBackendServiceAsync(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 */ - @BetaApi - public final Operation insertBackendService(InsertBackendServiceHttpRequest request) { - return insertBackendServiceCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertBackendServiceAsync( + InsertBackendServiceHttpRequest request) { + return insertBackendServiceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a BackendService resource in the specified project using the data included in the + * request. There are several restrictions and guidelines to keep in mind when creating a backend + * service. Read Restrictions and Guidelines for more information. + * + *

Sample code: + * + *


+   * try (BackendServiceClient backendServiceClient = BackendServiceClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   BackendService backendServiceResource = BackendService.newBuilder().build();
+   *   InsertBackendServiceHttpRequest request = InsertBackendServiceHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .setBackendServiceResource(backendServiceResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = backendServiceClient.insertBackendServiceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertBackendServiceOperationCallable() { + return stub.insertBackendServiceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -956,7 +1093,7 @@ public final Operation insertBackendService(InsertBackendServiceHttpRequest requ * .build(); * ApiFuture<Operation> future = backendServiceClient.insertBackendServiceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1118,7 +1255,7 @@ public final ListBackendServicesPagedResponse listBackendServices( * ProjectGlobalBackendServiceName backendService = ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]"); * BackendService backendServiceResource = BackendService.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = backendServiceClient.patchBackendService(backendService, backendServiceResource, fieldMask); + * backendServiceClient.patchBackendServiceAsync(backendService, backendServiceResource, fieldMask).get(); * } * * @@ -1132,8 +1269,9 @@ public final ListBackendServicesPagedResponse listBackendServices( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchBackendService( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchBackendServiceAsync( ProjectGlobalBackendServiceName backendService, BackendService backendServiceResource, List fieldMask) { @@ -1144,7 +1282,7 @@ public final Operation patchBackendService( .setBackendServiceResource(backendServiceResource) .addAllFieldMask(fieldMask) .build(); - return patchBackendService(request); + return patchBackendServiceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1161,7 +1299,7 @@ public final Operation patchBackendService( * ProjectGlobalBackendServiceName backendService = ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]"); * BackendService backendServiceResource = BackendService.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = backendServiceClient.patchBackendService(backendService.toString(), backendServiceResource, fieldMask); + * backendServiceClient.patchBackendServiceAsync(backendService.toString(), backendServiceResource, fieldMask).get(); * } * * @@ -1175,8 +1313,9 @@ public final Operation patchBackendService( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchBackendService( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchBackendServiceAsync( String backendService, BackendService backendServiceResource, List fieldMask) { PatchBackendServiceHttpRequest request = @@ -1185,7 +1324,7 @@ public final Operation patchBackendService( .setBackendServiceResource(backendServiceResource) .addAllFieldMask(fieldMask) .build(); - return patchBackendService(request); + return patchBackendServiceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1207,16 +1346,49 @@ public final Operation patchBackendService( * .setBackendServiceResource(backendServiceResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = backendServiceClient.patchBackendService(request); + * backendServiceClient.patchBackendServiceAsync(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 */ - @BetaApi - public final Operation patchBackendService(PatchBackendServiceHttpRequest request) { - return patchBackendServiceCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchBackendServiceAsync( + PatchBackendServiceHttpRequest request) { + return patchBackendServiceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Patches the specified BackendService resource with the data included in the request. There are + * several restrictions and guidelines to keep in mind when updating a backend service. Read + * Restrictions and Guidelines for more information. This method supports PATCH semantics and uses + * the JSON merge patch format and processing rules. + * + *

Sample code: + * + *


+   * try (BackendServiceClient backendServiceClient = BackendServiceClient.create()) {
+   *   ProjectGlobalBackendServiceName backendService = ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]");
+   *   BackendService backendServiceResource = BackendService.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   PatchBackendServiceHttpRequest request = PatchBackendServiceHttpRequest.newBuilder()
+   *     .setBackendService(backendService.toString())
+   *     .setBackendServiceResource(backendServiceResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = backendServiceClient.patchBackendServiceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + patchBackendServiceOperationCallable() { + return stub.patchBackendServiceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1240,7 +1412,7 @@ public final Operation patchBackendService(PatchBackendServiceHttpRequest reques * .build(); * ApiFuture<Operation> future = backendServiceClient.patchBackendServiceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1260,7 +1432,7 @@ public final Operation patchBackendService(PatchBackendServiceHttpRequest reques * try (BackendServiceClient backendServiceClient = BackendServiceClient.create()) { * ProjectGlobalBackendServiceName backendService = ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]"); * SecurityPolicyReference securityPolicyReferenceResource = SecurityPolicyReference.newBuilder().build(); - * Operation response = backendServiceClient.setSecurityPolicyBackendService(backendService, securityPolicyReferenceResource); + * backendServiceClient.setSecurityPolicyBackendServiceAsync(backendService, securityPolicyReferenceResource).get(); * } * * @@ -1269,8 +1441,9 @@ public final Operation patchBackendService(PatchBackendServiceHttpRequest reques * @param securityPolicyReferenceResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setSecurityPolicyBackendService( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setSecurityPolicyBackendServiceAsync( ProjectGlobalBackendServiceName backendService, SecurityPolicyReference securityPolicyReferenceResource) { @@ -1279,7 +1452,7 @@ public final Operation setSecurityPolicyBackendService( .setBackendService(backendService == null ? null : backendService.toString()) .setSecurityPolicyReferenceResource(securityPolicyReferenceResource) .build(); - return setSecurityPolicyBackendService(request); + return setSecurityPolicyBackendServiceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1292,7 +1465,7 @@ public final Operation setSecurityPolicyBackendService( * try (BackendServiceClient backendServiceClient = BackendServiceClient.create()) { * ProjectGlobalBackendServiceName backendService = ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]"); * SecurityPolicyReference securityPolicyReferenceResource = SecurityPolicyReference.newBuilder().build(); - * Operation response = backendServiceClient.setSecurityPolicyBackendService(backendService.toString(), securityPolicyReferenceResource); + * backendServiceClient.setSecurityPolicyBackendServiceAsync(backendService.toString(), securityPolicyReferenceResource).get(); * } * * @@ -1301,8 +1474,9 @@ public final Operation setSecurityPolicyBackendService( * @param securityPolicyReferenceResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setSecurityPolicyBackendService( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setSecurityPolicyBackendServiceAsync( String backendService, SecurityPolicyReference securityPolicyReferenceResource) { SetSecurityPolicyBackendServiceHttpRequest request = @@ -1310,7 +1484,7 @@ public final Operation setSecurityPolicyBackendService( .setBackendService(backendService) .setSecurityPolicyReferenceResource(securityPolicyReferenceResource) .build(); - return setSecurityPolicyBackendService(request); + return setSecurityPolicyBackendServiceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1327,17 +1501,45 @@ public final Operation setSecurityPolicyBackendService( * .setBackendService(backendService.toString()) * .setSecurityPolicyReferenceResource(securityPolicyReferenceResource) * .build(); - * Operation response = backendServiceClient.setSecurityPolicyBackendService(request); + * backendServiceClient.setSecurityPolicyBackendServiceAsync(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 */ - @BetaApi - public final Operation setSecurityPolicyBackendService( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setSecurityPolicyBackendServiceAsync( SetSecurityPolicyBackendServiceHttpRequest request) { - return setSecurityPolicyBackendServiceCallable().call(request); + return setSecurityPolicyBackendServiceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Sets the security policy for the specified backend service. + * + *

Sample code: + * + *


+   * try (BackendServiceClient backendServiceClient = BackendServiceClient.create()) {
+   *   ProjectGlobalBackendServiceName backendService = ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]");
+   *   SecurityPolicyReference securityPolicyReferenceResource = SecurityPolicyReference.newBuilder().build();
+   *   SetSecurityPolicyBackendServiceHttpRequest request = SetSecurityPolicyBackendServiceHttpRequest.newBuilder()
+   *     .setBackendService(backendService.toString())
+   *     .setSecurityPolicyReferenceResource(securityPolicyReferenceResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = backendServiceClient.setSecurityPolicyBackendServiceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable< + SetSecurityPolicyBackendServiceHttpRequest, EmptyMessage, Operation> + setSecurityPolicyBackendServiceOperationCallable() { + return stub.setSecurityPolicyBackendServiceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1356,7 +1558,7 @@ public final Operation setSecurityPolicyBackendService( * .build(); * ApiFuture<Operation> future = backendServiceClient.setSecurityPolicyBackendServiceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1379,7 +1581,7 @@ public final Operation setSecurityPolicyBackendService( * ProjectGlobalBackendServiceName backendService = ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]"); * BackendService backendServiceResource = BackendService.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = backendServiceClient.updateBackendService(backendService, backendServiceResource, fieldMask); + * backendServiceClient.updateBackendServiceAsync(backendService, backendServiceResource, fieldMask).get(); * } * * @@ -1393,8 +1595,9 @@ public final Operation setSecurityPolicyBackendService( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation updateBackendService( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateBackendServiceAsync( ProjectGlobalBackendServiceName backendService, BackendService backendServiceResource, List fieldMask) { @@ -1405,7 +1608,7 @@ public final Operation updateBackendService( .setBackendServiceResource(backendServiceResource) .addAllFieldMask(fieldMask) .build(); - return updateBackendService(request); + return updateBackendServiceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1421,7 +1624,7 @@ public final Operation updateBackendService( * ProjectGlobalBackendServiceName backendService = ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]"); * BackendService backendServiceResource = BackendService.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = backendServiceClient.updateBackendService(backendService.toString(), backendServiceResource, fieldMask); + * backendServiceClient.updateBackendServiceAsync(backendService.toString(), backendServiceResource, fieldMask).get(); * } * * @@ -1435,8 +1638,9 @@ public final Operation updateBackendService( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation updateBackendService( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateBackendServiceAsync( String backendService, BackendService backendServiceResource, List fieldMask) { UpdateBackendServiceHttpRequest request = @@ -1445,7 +1649,7 @@ public final Operation updateBackendService( .setBackendServiceResource(backendServiceResource) .addAllFieldMask(fieldMask) .build(); - return updateBackendService(request); + return updateBackendServiceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1466,16 +1670,48 @@ public final Operation updateBackendService( * .setBackendServiceResource(backendServiceResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = backendServiceClient.updateBackendService(request); + * backendServiceClient.updateBackendServiceAsync(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 */ - @BetaApi - public final Operation updateBackendService(UpdateBackendServiceHttpRequest request) { - return updateBackendServiceCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateBackendServiceAsync( + UpdateBackendServiceHttpRequest request) { + return updateBackendServiceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Updates the specified BackendService resource with the data included in the request. There are + * several restrictions and guidelines to keep in mind when updating a backend service. Read + * Restrictions and Guidelines for more information. + * + *

Sample code: + * + *


+   * try (BackendServiceClient backendServiceClient = BackendServiceClient.create()) {
+   *   ProjectGlobalBackendServiceName backendService = ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]");
+   *   BackendService backendServiceResource = BackendService.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   UpdateBackendServiceHttpRequest request = UpdateBackendServiceHttpRequest.newBuilder()
+   *     .setBackendService(backendService.toString())
+   *     .setBackendServiceResource(backendServiceResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = backendServiceClient.updateBackendServiceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + updateBackendServiceOperationCallable() { + return stub.updateBackendServiceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1498,7 +1734,7 @@ public final Operation updateBackendService(UpdateBackendServiceHttpRequest requ * .build(); * ApiFuture<Operation> future = backendServiceClient.updateBackendServiceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/BackendServiceSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/BackendServiceSettings.java index 2c3f31461c39..6bdb5bfa5099 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/BackendServiceSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/BackendServiceSettings.java @@ -22,10 +22,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -49,13 +51,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of addSignedUrlKeyBackendService to 30 seconds: + * example, to set the total timeout of getBackendService to 30 seconds: * *

  * 
  * BackendServiceSettings.Builder backendServiceSettingsBuilder =
  *     BackendServiceSettings.newBuilder();
- * backendServiceSettingsBuilder.addSignedUrlKeyBackendServiceSettings().getRetrySettings().toBuilder()
+ * backendServiceSettingsBuilder.getBackendServiceSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * BackendServiceSettings backendServiceSettings = backendServiceSettingsBuilder.build();
  * 
@@ -70,6 +72,15 @@ public class BackendServiceSettings extends ClientSettings
+      addSignedUrlKeyBackendServiceOperationSettings() {
+    return ((BackendServiceStubSettings) getStubSettings())
+        .addSignedUrlKeyBackendServiceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to aggregatedListBackendServices. */
   public PagedCallSettings<
           AggregatedListBackendServicesHttpRequest,
@@ -85,6 +96,14 @@ public class BackendServiceSettings extends ClientSettings
+      deleteBackendServiceOperationSettings() {
+    return ((BackendServiceStubSettings) getStubSettings()).deleteBackendServiceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to deleteSignedUrlKeyBackendService. */
   public UnaryCallSettings
       deleteSignedUrlKeyBackendServiceSettings() {
@@ -92,6 +111,15 @@ public class BackendServiceSettings extends ClientSettings
+      deleteSignedUrlKeyBackendServiceOperationSettings() {
+    return ((BackendServiceStubSettings) getStubSettings())
+        .deleteSignedUrlKeyBackendServiceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getBackendService. */
   public UnaryCallSettings
       getBackendServiceSettings() {
@@ -110,6 +138,14 @@ public class BackendServiceSettings extends ClientSettings
+      insertBackendServiceOperationSettings() {
+    return ((BackendServiceStubSettings) getStubSettings()).insertBackendServiceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listBackendServices. */
   public PagedCallSettings<
           ListBackendServicesHttpRequest, BackendServiceList, ListBackendServicesPagedResponse>
@@ -123,6 +159,14 @@ public class BackendServiceSettings extends ClientSettings
+      patchBackendServiceOperationSettings() {
+    return ((BackendServiceStubSettings) getStubSettings()).patchBackendServiceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to setSecurityPolicyBackendService. */
   public UnaryCallSettings
       setSecurityPolicyBackendServiceSettings() {
@@ -130,12 +174,29 @@ public class BackendServiceSettings extends ClientSettings
+      setSecurityPolicyBackendServiceOperationSettings() {
+    return ((BackendServiceStubSettings) getStubSettings())
+        .setSecurityPolicyBackendServiceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to updateBackendService. */
   public UnaryCallSettings
       updateBackendServiceSettings() {
     return ((BackendServiceStubSettings) getStubSettings()).updateBackendServiceSettings();
   }
 
+  /** Returns the object with the settings used for calls to updateBackendService. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      updateBackendServiceOperationSettings() {
+    return ((BackendServiceStubSettings) getStubSettings()).updateBackendServiceOperationSettings();
+  }
+
   public static final BackendServiceSettings create(BackendServiceStubSettings stub)
       throws IOException {
     return new BackendServiceSettings.Builder(stub.toBuilder()).build();
@@ -244,6 +305,15 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().addSignedUrlKeyBackendServiceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to addSignedUrlKeyBackendService. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            AddSignedUrlKeyBackendServiceHttpRequest, EmptyMessage, Operation>
+        addSignedUrlKeyBackendServiceOperationSettings() {
+      return getStubSettingsBuilder().addSignedUrlKeyBackendServiceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to aggregatedListBackendServices. */
     public PagedCallSettings.Builder<
             AggregatedListBackendServicesHttpRequest,
@@ -259,12 +329,29 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteBackendServiceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteBackendService. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteBackendServiceOperationSettings() {
+      return getStubSettingsBuilder().deleteBackendServiceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to deleteSignedUrlKeyBackendService. */
     public UnaryCallSettings.Builder
         deleteSignedUrlKeyBackendServiceSettings() {
       return getStubSettingsBuilder().deleteSignedUrlKeyBackendServiceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteSignedUrlKeyBackendService. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            DeleteSignedUrlKeyBackendServiceHttpRequest, EmptyMessage, Operation>
+        deleteSignedUrlKeyBackendServiceOperationSettings() {
+      return getStubSettingsBuilder().deleteSignedUrlKeyBackendServiceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getBackendService. */
     public UnaryCallSettings.Builder
         getBackendServiceSettings() {
@@ -283,6 +370,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().insertBackendServiceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertBackendService. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertBackendServiceOperationSettings() {
+      return getStubSettingsBuilder().insertBackendServiceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listBackendServices. */
     public PagedCallSettings.Builder<
             ListBackendServicesHttpRequest, BackendServiceList, ListBackendServicesPagedResponse>
@@ -296,18 +391,43 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().patchBackendServiceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to patchBackendService. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchBackendServiceOperationSettings() {
+      return getStubSettingsBuilder().patchBackendServiceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to setSecurityPolicyBackendService. */
     public UnaryCallSettings.Builder
         setSecurityPolicyBackendServiceSettings() {
       return getStubSettingsBuilder().setSecurityPolicyBackendServiceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to setSecurityPolicyBackendService. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetSecurityPolicyBackendServiceHttpRequest, EmptyMessage, Operation>
+        setSecurityPolicyBackendServiceOperationSettings() {
+      return getStubSettingsBuilder().setSecurityPolicyBackendServiceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to updateBackendService. */
     public UnaryCallSettings.Builder
         updateBackendServiceSettings() {
       return getStubSettingsBuilder().updateBackendServiceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to updateBackendService. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        updateBackendServiceOperationSettings() {
+      return getStubSettingsBuilder().updateBackendServiceOperationSettings();
+    }
+
     @Override
     public BackendServiceSettings build() throws IOException {
       return new BackendServiceSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/DiskClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/DiskClient.java
index acad92e6aea4..de966bdc2323 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/DiskClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/DiskClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.DiskStub;
@@ -43,9 +46,7 @@
  * 
  * try (DiskClient diskClient = DiskClient.create()) {
  *   ProjectZoneDiskName disk = ProjectZoneDiskName.of("[PROJECT]", "[ZONE]", "[DISK]");
- *   Boolean guestFlush = false;
- *   Snapshot snapshotResource = Snapshot.newBuilder().build();
- *   Operation response = diskClient.createSnapshotDisk(disk, guestFlush, snapshotResource);
+ *   Disk response = diskClient.getDisk(disk);
  * }
  * 
  * 
@@ -105,6 +106,7 @@ public class DiskClient implements BackgroundResource { private final DiskSettings settings; private final DiskStub stub; + private final ZoneOperationClient operationsClient; /** Constructs an instance of DiskClient with default settings. */ public static final DiskClient create() throws IOException { @@ -135,12 +137,14 @@ public static final DiskClient create(DiskStub stub) { protected DiskClient(DiskSettings settings) throws IOException { this.settings = settings; this.stub = ((DiskStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = ZoneOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected DiskClient(DiskStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = ZoneOperationClient.create(this.stub.getOperationsStub()); } public final DiskSettings getSettings() { @@ -152,6 +156,16 @@ public DiskStub getStub() { return stub; } + /** + * Returns the ZoneOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final ZoneOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Retrieves an aggregated list of persistent disks. @@ -301,7 +315,7 @@ public final AggregatedListDisksPagedResponse aggregatedListDisks( * ProjectZoneDiskName disk = ProjectZoneDiskName.of("[PROJECT]", "[ZONE]", "[DISK]"); * Boolean guestFlush = false; * Snapshot snapshotResource = Snapshot.newBuilder().build(); - * Operation response = diskClient.createSnapshotDisk(disk, guestFlush, snapshotResource); + * diskClient.createSnapshotDiskAsync(disk, guestFlush, snapshotResource).get(); * } * * @@ -311,8 +325,9 @@ public final AggregatedListDisksPagedResponse aggregatedListDisks( * ==) (== resource_for v1.snapshots ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation createSnapshotDisk( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture createSnapshotDiskAsync( ProjectZoneDiskName disk, Boolean guestFlush, Snapshot snapshotResource) { CreateSnapshotDiskHttpRequest request = @@ -321,7 +336,7 @@ public final Operation createSnapshotDisk( .setGuestFlush(guestFlush) .setSnapshotResource(snapshotResource) .build(); - return createSnapshotDisk(request); + return createSnapshotDiskAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -335,7 +350,7 @@ public final Operation createSnapshotDisk( * ProjectZoneDiskName disk = ProjectZoneDiskName.of("[PROJECT]", "[ZONE]", "[DISK]"); * Boolean guestFlush = false; * Snapshot snapshotResource = Snapshot.newBuilder().build(); - * Operation response = diskClient.createSnapshotDisk(disk.toString(), guestFlush, snapshotResource); + * diskClient.createSnapshotDiskAsync(disk.toString(), guestFlush, snapshotResource).get(); * } * * @@ -345,8 +360,9 @@ public final Operation createSnapshotDisk( * ==) (== resource_for v1.snapshots ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation createSnapshotDisk( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture createSnapshotDiskAsync( String disk, Boolean guestFlush, Snapshot snapshotResource) { CreateSnapshotDiskHttpRequest request = @@ -355,7 +371,7 @@ public final Operation createSnapshotDisk( .setGuestFlush(guestFlush) .setSnapshotResource(snapshotResource) .build(); - return createSnapshotDisk(request); + return createSnapshotDiskAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -374,16 +390,46 @@ public final Operation createSnapshotDisk( * .setGuestFlush(guestFlush) * .setSnapshotResource(snapshotResource) * .build(); - * Operation response = diskClient.createSnapshotDisk(request); + * diskClient.createSnapshotDiskAsync(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 */ - @BetaApi - public final Operation createSnapshotDisk(CreateSnapshotDiskHttpRequest request) { - return createSnapshotDiskCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture createSnapshotDiskAsync( + CreateSnapshotDiskHttpRequest request) { + return createSnapshotDiskOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a snapshot of a specified persistent disk. + * + *

Sample code: + * + *


+   * try (DiskClient diskClient = DiskClient.create()) {
+   *   ProjectZoneDiskName disk = ProjectZoneDiskName.of("[PROJECT]", "[ZONE]", "[DISK]");
+   *   Boolean guestFlush = false;
+   *   Snapshot snapshotResource = Snapshot.newBuilder().build();
+   *   CreateSnapshotDiskHttpRequest request = CreateSnapshotDiskHttpRequest.newBuilder()
+   *     .setDisk(disk.toString())
+   *     .setGuestFlush(guestFlush)
+   *     .setSnapshotResource(snapshotResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = diskClient.createSnapshotDiskOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + createSnapshotDiskOperationCallable() { + return stub.createSnapshotDiskOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -404,7 +450,7 @@ public final Operation createSnapshotDisk(CreateSnapshotDiskHttpRequest request) * .build(); * ApiFuture<Operation> future = diskClient.createSnapshotDiskCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -425,19 +471,20 @@ public final Operation createSnapshotDisk(CreateSnapshotDiskHttpRequest request) *

    * try (DiskClient diskClient = DiskClient.create()) {
    *   ProjectZoneDiskName disk = ProjectZoneDiskName.of("[PROJECT]", "[ZONE]", "[DISK]");
-   *   Operation response = diskClient.deleteDisk(disk);
+   *   diskClient.deleteDiskAsync(disk).get();
    * }
    * 
* * @param disk Name of the persistent disk to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteDisk(ProjectZoneDiskName disk) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteDiskAsync(ProjectZoneDiskName disk) { DeleteDiskHttpRequest request = DeleteDiskHttpRequest.newBuilder().setDisk(disk == null ? null : disk.toString()).build(); - return deleteDisk(request); + return deleteDiskAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -451,18 +498,19 @@ public final Operation deleteDisk(ProjectZoneDiskName disk) { *

    * try (DiskClient diskClient = DiskClient.create()) {
    *   ProjectZoneDiskName disk = ProjectZoneDiskName.of("[PROJECT]", "[ZONE]", "[DISK]");
-   *   Operation response = diskClient.deleteDisk(disk.toString());
+   *   diskClient.deleteDiskAsync(disk.toString()).get();
    * }
    * 
* * @param disk Name of the persistent disk to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteDisk(String disk) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteDiskAsync(String disk) { DeleteDiskHttpRequest request = DeleteDiskHttpRequest.newBuilder().setDisk(disk).build(); - return deleteDisk(request); + return deleteDiskAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -479,16 +527,44 @@ public final Operation deleteDisk(String disk) { * DeleteDiskHttpRequest request = DeleteDiskHttpRequest.newBuilder() * .setDisk(disk.toString()) * .build(); - * Operation response = diskClient.deleteDisk(request); + * diskClient.deleteDiskAsync(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 */ - @BetaApi - public final Operation deleteDisk(DeleteDiskHttpRequest request) { - return deleteDiskCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteDiskAsync( + DeleteDiskHttpRequest request) { + return deleteDiskOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified persistent disk. Deleting a disk removes its data permanently and is + * irreversible. However, deleting a disk does not delete any snapshots previously made from the + * disk. You must separately delete snapshots. + * + *

Sample code: + * + *


+   * try (DiskClient diskClient = DiskClient.create()) {
+   *   ProjectZoneDiskName disk = ProjectZoneDiskName.of("[PROJECT]", "[ZONE]", "[DISK]");
+   *   DeleteDiskHttpRequest request = DeleteDiskHttpRequest.newBuilder()
+   *     .setDisk(disk.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = diskClient.deleteDiskOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteDiskOperationCallable() { + return stub.deleteDiskOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -507,7 +583,7 @@ public final Operation deleteDisk(DeleteDiskHttpRequest request) { * .build(); * ApiFuture<Operation> future = diskClient.deleteDiskCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -728,7 +804,7 @@ public final UnaryCallable getIamPolicyDisk * try (DiskClient diskClient = DiskClient.create()) { * ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]"); * Disk diskResource = Disk.newBuilder().build(); - * Operation response = diskClient.insertDisk(zone, diskResource); + * diskClient.insertDiskAsync(zone, diskResource).get(); * } * * @@ -737,15 +813,17 @@ public final UnaryCallable getIamPolicyDisk * ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertDisk(ProjectZoneName zone, Disk diskResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertDiskAsync( + ProjectZoneName zone, Disk diskResource) { InsertDiskHttpRequest request = InsertDiskHttpRequest.newBuilder() .setZone(zone == null ? null : zone.toString()) .setDiskResource(diskResource) .build(); - return insertDisk(request); + return insertDiskAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -761,7 +839,7 @@ public final Operation insertDisk(ProjectZoneName zone, Disk diskResource) { * try (DiskClient diskClient = DiskClient.create()) { * ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]"); * Disk diskResource = Disk.newBuilder().build(); - * Operation response = diskClient.insertDisk(zone.toString(), diskResource); + * diskClient.insertDiskAsync(zone.toString(), diskResource).get(); * } * * @@ -770,12 +848,14 @@ public final Operation insertDisk(ProjectZoneName zone, Disk diskResource) { * ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertDisk(String zone, Disk diskResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertDiskAsync( + String zone, Disk diskResource) { InsertDiskHttpRequest request = InsertDiskHttpRequest.newBuilder().setZone(zone).setDiskResource(diskResource).build(); - return insertDisk(request); + return insertDiskAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -795,16 +875,47 @@ public final Operation insertDisk(String zone, Disk diskResource) { * .setZone(zone.toString()) * .setDiskResource(diskResource) * .build(); - * Operation response = diskClient.insertDisk(request); + * diskClient.insertDiskAsync(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 */ - @BetaApi - public final Operation insertDisk(InsertDiskHttpRequest request) { - return insertDiskCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertDiskAsync( + InsertDiskHttpRequest request) { + return insertDiskOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a persistent disk in the specified project using the data in the request. You can + * create a disk with a sourceImage, a sourceSnapshot, or create an empty 500 GB data disk by + * omitting all properties. You can also create a disk that is larger than the default size by + * specifying the sizeGb property. + * + *

Sample code: + * + *


+   * try (DiskClient diskClient = DiskClient.create()) {
+   *   ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
+   *   Disk diskResource = Disk.newBuilder().build();
+   *   InsertDiskHttpRequest request = InsertDiskHttpRequest.newBuilder()
+   *     .setZone(zone.toString())
+   *     .setDiskResource(diskResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = diskClient.insertDiskOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertDiskOperationCallable() { + return stub.insertDiskOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -826,7 +937,7 @@ public final Operation insertDisk(InsertDiskHttpRequest request) { * .build(); * ApiFuture<Operation> future = diskClient.insertDiskCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -978,7 +1089,7 @@ public final UnaryCallable listDisksCallable() { * try (DiskClient diskClient = DiskClient.create()) { * ProjectZoneDiskName disk = ProjectZoneDiskName.of("[PROJECT]", "[ZONE]", "[DISK]"); * DisksResizeRequest disksResizeRequestResource = DisksResizeRequest.newBuilder().build(); - * Operation response = diskClient.resizeDisk(disk, disksResizeRequestResource); + * diskClient.resizeDiskAsync(disk, disksResizeRequestResource).get(); * } * * @@ -986,8 +1097,9 @@ public final UnaryCallable listDisksCallable() { * @param disksResizeRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation resizeDisk( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture resizeDiskAsync( ProjectZoneDiskName disk, DisksResizeRequest disksResizeRequestResource) { ResizeDiskHttpRequest request = @@ -995,7 +1107,7 @@ public final Operation resizeDisk( .setDisk(disk == null ? null : disk.toString()) .setDisksResizeRequestResource(disksResizeRequestResource) .build(); - return resizeDisk(request); + return resizeDiskAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1008,7 +1120,7 @@ public final Operation resizeDisk( * try (DiskClient diskClient = DiskClient.create()) { * ProjectZoneDiskName disk = ProjectZoneDiskName.of("[PROJECT]", "[ZONE]", "[DISK]"); * DisksResizeRequest disksResizeRequestResource = DisksResizeRequest.newBuilder().build(); - * Operation response = diskClient.resizeDisk(disk.toString(), disksResizeRequestResource); + * diskClient.resizeDiskAsync(disk.toString(), disksResizeRequestResource).get(); * } * * @@ -1016,15 +1128,17 @@ public final Operation resizeDisk( * @param disksResizeRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation resizeDisk(String disk, DisksResizeRequest disksResizeRequestResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture resizeDiskAsync( + String disk, DisksResizeRequest disksResizeRequestResource) { ResizeDiskHttpRequest request = ResizeDiskHttpRequest.newBuilder() .setDisk(disk) .setDisksResizeRequestResource(disksResizeRequestResource) .build(); - return resizeDisk(request); + return resizeDiskAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1041,16 +1155,44 @@ public final Operation resizeDisk(String disk, DisksResizeRequest disksResizeReq * .setDisk(disk.toString()) * .setDisksResizeRequestResource(disksResizeRequestResource) * .build(); - * Operation response = diskClient.resizeDisk(request); + * diskClient.resizeDiskAsync(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 */ - @BetaApi - public final Operation resizeDisk(ResizeDiskHttpRequest request) { - return resizeDiskCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture resizeDiskAsync( + ResizeDiskHttpRequest request) { + return resizeDiskOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Resizes the specified persistent disk. You can only increase the size of the disk. + * + *

Sample code: + * + *


+   * try (DiskClient diskClient = DiskClient.create()) {
+   *   ProjectZoneDiskName disk = ProjectZoneDiskName.of("[PROJECT]", "[ZONE]", "[DISK]");
+   *   DisksResizeRequest disksResizeRequestResource = DisksResizeRequest.newBuilder().build();
+   *   ResizeDiskHttpRequest request = ResizeDiskHttpRequest.newBuilder()
+   *     .setDisk(disk.toString())
+   *     .setDisksResizeRequestResource(disksResizeRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = diskClient.resizeDiskOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + resizeDiskOperationCallable() { + return stub.resizeDiskOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1069,7 +1211,7 @@ public final Operation resizeDisk(ResizeDiskHttpRequest request) { * .build(); * ApiFuture<Operation> future = diskClient.resizeDiskCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1200,7 +1342,7 @@ public final UnaryCallable setIamPolicyDisk * try (DiskClient diskClient = DiskClient.create()) { * ProjectZoneDiskResourceName resource = ProjectZoneDiskResourceName.of("[PROJECT]", "[ZONE]", "[RESOURCE]"); * ZoneSetLabelsRequest zoneSetLabelsRequestResource = ZoneSetLabelsRequest.newBuilder().build(); - * Operation response = diskClient.setLabelsDisk(resource, zoneSetLabelsRequestResource); + * diskClient.setLabelsDiskAsync(resource, zoneSetLabelsRequestResource).get(); * } * * @@ -1208,8 +1350,9 @@ public final UnaryCallable setIamPolicyDisk * @param zoneSetLabelsRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setLabelsDisk( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setLabelsDiskAsync( ProjectZoneDiskResourceName resource, ZoneSetLabelsRequest zoneSetLabelsRequestResource) { SetLabelsDiskHttpRequest request = @@ -1217,7 +1360,7 @@ public final Operation setLabelsDisk( .setResource(resource == null ? null : resource.toString()) .setZoneSetLabelsRequestResource(zoneSetLabelsRequestResource) .build(); - return setLabelsDisk(request); + return setLabelsDiskAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1231,7 +1374,7 @@ public final Operation setLabelsDisk( * try (DiskClient diskClient = DiskClient.create()) { * ProjectZoneDiskResourceName resource = ProjectZoneDiskResourceName.of("[PROJECT]", "[ZONE]", "[RESOURCE]"); * ZoneSetLabelsRequest zoneSetLabelsRequestResource = ZoneSetLabelsRequest.newBuilder().build(); - * Operation response = diskClient.setLabelsDisk(resource.toString(), zoneSetLabelsRequestResource); + * diskClient.setLabelsDiskAsync(resource.toString(), zoneSetLabelsRequestResource).get(); * } * * @@ -1239,8 +1382,9 @@ public final Operation setLabelsDisk( * @param zoneSetLabelsRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setLabelsDisk( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setLabelsDiskAsync( String resource, ZoneSetLabelsRequest zoneSetLabelsRequestResource) { SetLabelsDiskHttpRequest request = @@ -1248,7 +1392,7 @@ public final Operation setLabelsDisk( .setResource(resource) .setZoneSetLabelsRequestResource(zoneSetLabelsRequestResource) .build(); - return setLabelsDisk(request); + return setLabelsDiskAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1266,16 +1410,45 @@ public final Operation setLabelsDisk( * .setResource(resource.toString()) * .setZoneSetLabelsRequestResource(zoneSetLabelsRequestResource) * .build(); - * Operation response = diskClient.setLabelsDisk(request); + * diskClient.setLabelsDiskAsync(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 */ - @BetaApi - public final Operation setLabelsDisk(SetLabelsDiskHttpRequest request) { - return setLabelsDiskCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setLabelsDiskAsync( + SetLabelsDiskHttpRequest request) { + return setLabelsDiskOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Sets the labels on a disk. To learn more about labels, read the Labeling Resources + * documentation. + * + *

Sample code: + * + *


+   * try (DiskClient diskClient = DiskClient.create()) {
+   *   ProjectZoneDiskResourceName resource = ProjectZoneDiskResourceName.of("[PROJECT]", "[ZONE]", "[RESOURCE]");
+   *   ZoneSetLabelsRequest zoneSetLabelsRequestResource = ZoneSetLabelsRequest.newBuilder().build();
+   *   SetLabelsDiskHttpRequest request = SetLabelsDiskHttpRequest.newBuilder()
+   *     .setResource(resource.toString())
+   *     .setZoneSetLabelsRequestResource(zoneSetLabelsRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = diskClient.setLabelsDiskOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + setLabelsDiskOperationCallable() { + return stub.setLabelsDiskOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1295,7 +1468,7 @@ public final Operation setLabelsDisk(SetLabelsDiskHttpRequest request) { * .build(); * ApiFuture<Operation> future = diskClient.setLabelsDiskCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/DiskSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/DiskSettings.java index d379ae074f9c..1199f58f497c 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/DiskSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/DiskSettings.java @@ -22,10 +22,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -49,13 +51,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of createSnapshotDisk to 30 seconds: + * example, to set the total timeout of getDisk to 30 seconds: * *

  * 
  * DiskSettings.Builder diskSettingsBuilder =
  *     DiskSettings.newBuilder();
- * diskSettingsBuilder.createSnapshotDiskSettings().getRetrySettings().toBuilder()
+ * diskSettingsBuilder.getDiskSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * DiskSettings diskSettings = diskSettingsBuilder.build();
  * 
@@ -76,11 +78,27 @@ public UnaryCallSettings createSnapsho
     return ((DiskStubSettings) getStubSettings()).createSnapshotDiskSettings();
   }
 
+  /** Returns the object with the settings used for calls to createSnapshotDisk. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      createSnapshotDiskOperationSettings() {
+    return ((DiskStubSettings) getStubSettings()).createSnapshotDiskOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to deleteDisk. */
   public UnaryCallSettings deleteDiskSettings() {
     return ((DiskStubSettings) getStubSettings()).deleteDiskSettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteDisk. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteDiskOperationSettings() {
+    return ((DiskStubSettings) getStubSettings()).deleteDiskOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getDisk. */
   public UnaryCallSettings getDiskSettings() {
     return ((DiskStubSettings) getStubSettings()).getDiskSettings();
@@ -96,6 +114,14 @@ public UnaryCallSettings insertDiskSettings()
     return ((DiskStubSettings) getStubSettings()).insertDiskSettings();
   }
 
+  /** Returns the object with the settings used for calls to insertDisk. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertDiskOperationSettings() {
+    return ((DiskStubSettings) getStubSettings()).insertDiskOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listDisks. */
   public PagedCallSettings
       listDisksSettings() {
@@ -107,6 +133,14 @@ public UnaryCallSettings resizeDiskSettings()
     return ((DiskStubSettings) getStubSettings()).resizeDiskSettings();
   }
 
+  /** Returns the object with the settings used for calls to resizeDisk. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      resizeDiskOperationSettings() {
+    return ((DiskStubSettings) getStubSettings()).resizeDiskOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to setIamPolicyDisk. */
   public UnaryCallSettings setIamPolicyDiskSettings() {
     return ((DiskStubSettings) getStubSettings()).setIamPolicyDiskSettings();
@@ -117,6 +151,14 @@ public UnaryCallSettings setLabelsDiskSetti
     return ((DiskStubSettings) getStubSettings()).setLabelsDiskSettings();
   }
 
+  /** Returns the object with the settings used for calls to setLabelsDisk. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setLabelsDiskOperationSettings() {
+    return ((DiskStubSettings) getStubSettings()).setLabelsDiskOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to testIamPermissionsDisk. */
   public UnaryCallSettings
       testIamPermissionsDiskSettings() {
@@ -237,11 +279,27 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().createSnapshotDiskSettings();
     }
 
+    /** Returns the builder for the settings used for calls to createSnapshotDisk. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        createSnapshotDiskOperationSettings() {
+      return getStubSettingsBuilder().createSnapshotDiskOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to deleteDisk. */
     public UnaryCallSettings.Builder deleteDiskSettings() {
       return getStubSettingsBuilder().deleteDiskSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteDisk. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteDiskOperationSettings() {
+      return getStubSettingsBuilder().deleteDiskOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getDisk. */
     public UnaryCallSettings.Builder getDiskSettings() {
       return getStubSettingsBuilder().getDiskSettings();
@@ -258,6 +316,14 @@ public UnaryCallSettings.Builder insertDiskSet
       return getStubSettingsBuilder().insertDiskSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertDisk. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertDiskOperationSettings() {
+      return getStubSettingsBuilder().insertDiskOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listDisks. */
     public PagedCallSettings.Builder
         listDisksSettings() {
@@ -269,6 +335,14 @@ public UnaryCallSettings.Builder resizeDiskSet
       return getStubSettingsBuilder().resizeDiskSettings();
     }
 
+    /** Returns the builder for the settings used for calls to resizeDisk. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        resizeDiskOperationSettings() {
+      return getStubSettingsBuilder().resizeDiskOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to setIamPolicyDisk. */
     public UnaryCallSettings.Builder
         setIamPolicyDiskSettings() {
@@ -280,6 +354,14 @@ public UnaryCallSettings.Builder setLabelsD
       return getStubSettingsBuilder().setLabelsDiskSettings();
     }
 
+    /** Returns the builder for the settings used for calls to setLabelsDisk. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        setLabelsDiskOperationSettings() {
+      return getStubSettingsBuilder().setLabelsDiskOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to testIamPermissionsDisk. */
     public UnaryCallSettings.Builder
         testIamPermissionsDiskSettings() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/FirewallClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/FirewallClient.java
index 6bc1ca517763..f63c55a87760 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/FirewallClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/FirewallClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.FirewallStub;
@@ -43,7 +46,7 @@
  * 
  * try (FirewallClient firewallClient = FirewallClient.create()) {
  *   ProjectGlobalFirewallName firewall = ProjectGlobalFirewallName.of("[PROJECT]", "[FIREWALL]");
- *   Operation response = firewallClient.deleteFirewall(firewall);
+ *   Firewall response = firewallClient.getFirewall(firewall);
  * }
  * 
  * 
@@ -103,6 +106,7 @@ public class FirewallClient implements BackgroundResource { private final FirewallSettings settings; private final FirewallStub stub; + private final GlobalOperationClient operationsClient; /** Constructs an instance of FirewallClient with default settings. */ public static final FirewallClient create() throws IOException { @@ -133,12 +137,14 @@ public static final FirewallClient create(FirewallStub stub) { protected FirewallClient(FirewallSettings settings) throws IOException { this.settings = settings; this.stub = ((FirewallStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected FirewallClient(FirewallStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } public final FirewallSettings getSettings() { @@ -150,6 +156,16 @@ public FirewallStub getStub() { return stub; } + /** + * Returns the GlobalOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final GlobalOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Deletes the specified firewall. @@ -159,21 +175,23 @@ public FirewallStub getStub() { *

    * try (FirewallClient firewallClient = FirewallClient.create()) {
    *   ProjectGlobalFirewallName firewall = ProjectGlobalFirewallName.of("[PROJECT]", "[FIREWALL]");
-   *   Operation response = firewallClient.deleteFirewall(firewall);
+   *   firewallClient.deleteFirewallAsync(firewall).get();
    * }
    * 
* * @param firewall Name of the firewall rule to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteFirewall(ProjectGlobalFirewallName firewall) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteFirewallAsync( + ProjectGlobalFirewallName firewall) { DeleteFirewallHttpRequest request = DeleteFirewallHttpRequest.newBuilder() .setFirewall(firewall == null ? null : firewall.toString()) .build(); - return deleteFirewall(request); + return deleteFirewallAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -185,19 +203,20 @@ public final Operation deleteFirewall(ProjectGlobalFirewallName firewall) { *

    * try (FirewallClient firewallClient = FirewallClient.create()) {
    *   ProjectGlobalFirewallName firewall = ProjectGlobalFirewallName.of("[PROJECT]", "[FIREWALL]");
-   *   Operation response = firewallClient.deleteFirewall(firewall.toString());
+   *   firewallClient.deleteFirewallAsync(firewall.toString()).get();
    * }
    * 
* * @param firewall Name of the firewall rule to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteFirewall(String firewall) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteFirewallAsync(String firewall) { DeleteFirewallHttpRequest request = DeleteFirewallHttpRequest.newBuilder().setFirewall(firewall).build(); - return deleteFirewall(request); + return deleteFirewallAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -212,16 +231,42 @@ public final Operation deleteFirewall(String firewall) { * DeleteFirewallHttpRequest request = DeleteFirewallHttpRequest.newBuilder() * .setFirewall(firewall.toString()) * .build(); - * Operation response = firewallClient.deleteFirewall(request); + * firewallClient.deleteFirewallAsync(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 */ - @BetaApi - public final Operation deleteFirewall(DeleteFirewallHttpRequest request) { - return deleteFirewallCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteFirewallAsync( + DeleteFirewallHttpRequest request) { + return deleteFirewallOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified firewall. + * + *

Sample code: + * + *


+   * try (FirewallClient firewallClient = FirewallClient.create()) {
+   *   ProjectGlobalFirewallName firewall = ProjectGlobalFirewallName.of("[PROJECT]", "[FIREWALL]");
+   *   DeleteFirewallHttpRequest request = DeleteFirewallHttpRequest.newBuilder()
+   *     .setFirewall(firewall.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = firewallClient.deleteFirewallOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteFirewallOperationCallable() { + return stub.deleteFirewallOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -238,7 +283,7 @@ public final Operation deleteFirewall(DeleteFirewallHttpRequest request) { * .build(); * ApiFuture<Operation> future = firewallClient.deleteFirewallCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -354,7 +399,7 @@ public final UnaryCallable getFirewallCallable * try (FirewallClient firewallClient = FirewallClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * Firewall firewallResource = Firewall.newBuilder().build(); - * Operation response = firewallClient.insertFirewall(project, firewallResource); + * firewallClient.insertFirewallAsync(project, firewallResource).get(); * } * * @@ -362,15 +407,17 @@ public final UnaryCallable getFirewallCallable * @param firewallResource Represents a Firewall resource. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertFirewall(ProjectName project, Firewall firewallResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertFirewallAsync( + ProjectName project, Firewall firewallResource) { InsertFirewallHttpRequest request = InsertFirewallHttpRequest.newBuilder() .setProject(project == null ? null : project.toString()) .setFirewallResource(firewallResource) .build(); - return insertFirewall(request); + return insertFirewallAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -383,7 +430,7 @@ public final Operation insertFirewall(ProjectName project, Firewall firewallReso * try (FirewallClient firewallClient = FirewallClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * Firewall firewallResource = Firewall.newBuilder().build(); - * Operation response = firewallClient.insertFirewall(project.toString(), firewallResource); + * firewallClient.insertFirewallAsync(project.toString(), firewallResource).get(); * } * * @@ -391,15 +438,17 @@ public final Operation insertFirewall(ProjectName project, Firewall firewallReso * @param firewallResource Represents a Firewall resource. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertFirewall(String project, Firewall firewallResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertFirewallAsync( + String project, Firewall firewallResource) { InsertFirewallHttpRequest request = InsertFirewallHttpRequest.newBuilder() .setProject(project) .setFirewallResource(firewallResource) .build(); - return insertFirewall(request); + return insertFirewallAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -416,16 +465,44 @@ public final Operation insertFirewall(String project, Firewall firewallResource) * .setProject(project.toString()) * .setFirewallResource(firewallResource) * .build(); - * Operation response = firewallClient.insertFirewall(request); + * firewallClient.insertFirewallAsync(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 */ - @BetaApi - public final Operation insertFirewall(InsertFirewallHttpRequest request) { - return insertFirewallCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertFirewallAsync( + InsertFirewallHttpRequest request) { + return insertFirewallOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a firewall rule in the specified project using the data included in the request. + * + *

Sample code: + * + *


+   * try (FirewallClient firewallClient = FirewallClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   Firewall firewallResource = Firewall.newBuilder().build();
+   *   InsertFirewallHttpRequest request = InsertFirewallHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .setFirewallResource(firewallResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = firewallClient.insertFirewallOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertFirewallOperationCallable() { + return stub.insertFirewallOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -444,7 +521,7 @@ public final Operation insertFirewall(InsertFirewallHttpRequest request) { * .build(); * ApiFuture<Operation> future = firewallClient.insertFirewallCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -601,7 +678,7 @@ public final UnaryCallable listFirewalls * ProjectGlobalFirewallName firewall = ProjectGlobalFirewallName.of("[PROJECT]", "[FIREWALL]"); * Firewall firewallResource = Firewall.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = firewallClient.patchFirewall(firewall, firewallResource, fieldMask); + * firewallClient.patchFirewallAsync(firewall, firewallResource, fieldMask).get(); * } * * @@ -613,8 +690,9 @@ public final UnaryCallable listFirewalls * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchFirewall( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchFirewallAsync( ProjectGlobalFirewallName firewall, Firewall firewallResource, List fieldMask) { PatchFirewallHttpRequest request = @@ -623,7 +701,7 @@ public final Operation patchFirewall( .setFirewallResource(firewallResource) .addAllFieldMask(fieldMask) .build(); - return patchFirewall(request); + return patchFirewallAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -638,7 +716,7 @@ public final Operation patchFirewall( * ProjectGlobalFirewallName firewall = ProjectGlobalFirewallName.of("[PROJECT]", "[FIREWALL]"); * Firewall firewallResource = Firewall.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = firewallClient.patchFirewall(firewall.toString(), firewallResource, fieldMask); + * firewallClient.patchFirewallAsync(firewall.toString(), firewallResource, fieldMask).get(); * } * * @@ -650,8 +728,9 @@ public final Operation patchFirewall( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchFirewall( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchFirewallAsync( String firewall, Firewall firewallResource, List fieldMask) { PatchFirewallHttpRequest request = @@ -660,7 +739,7 @@ public final Operation patchFirewall( .setFirewallResource(firewallResource) .addAllFieldMask(fieldMask) .build(); - return patchFirewall(request); + return patchFirewallAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -680,16 +759,47 @@ public final Operation patchFirewall( * .setFirewallResource(firewallResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = firewallClient.patchFirewall(request); + * firewallClient.patchFirewallAsync(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 */ - @BetaApi - public final Operation patchFirewall(PatchFirewallHttpRequest request) { - return patchFirewallCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchFirewallAsync( + PatchFirewallHttpRequest request) { + return patchFirewallOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Updates the specified firewall rule with the data included in the request. This method supports + * PATCH semantics and uses the JSON merge patch format and processing rules. + * + *

Sample code: + * + *


+   * try (FirewallClient firewallClient = FirewallClient.create()) {
+   *   ProjectGlobalFirewallName firewall = ProjectGlobalFirewallName.of("[PROJECT]", "[FIREWALL]");
+   *   Firewall firewallResource = Firewall.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   PatchFirewallHttpRequest request = PatchFirewallHttpRequest.newBuilder()
+   *     .setFirewall(firewall.toString())
+   *     .setFirewallResource(firewallResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = firewallClient.patchFirewallOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + patchFirewallOperationCallable() { + return stub.patchFirewallOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -711,7 +821,7 @@ public final Operation patchFirewall(PatchFirewallHttpRequest request) { * .build(); * ApiFuture<Operation> future = firewallClient.patchFirewallCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -733,7 +843,7 @@ public final UnaryCallable patchFirewallCal * ProjectGlobalFirewallName firewall = ProjectGlobalFirewallName.of("[PROJECT]", "[FIREWALL]"); * Firewall firewallResource = Firewall.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = firewallClient.updateFirewall(firewall, firewallResource, fieldMask); + * firewallClient.updateFirewallAsync(firewall, firewallResource, fieldMask).get(); * } * * @@ -745,8 +855,9 @@ public final UnaryCallable patchFirewallCal * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation updateFirewall( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateFirewallAsync( ProjectGlobalFirewallName firewall, Firewall firewallResource, List fieldMask) { UpdateFirewallHttpRequest request = @@ -755,7 +866,7 @@ public final Operation updateFirewall( .setFirewallResource(firewallResource) .addAllFieldMask(fieldMask) .build(); - return updateFirewall(request); + return updateFirewallAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -771,7 +882,7 @@ public final Operation updateFirewall( * ProjectGlobalFirewallName firewall = ProjectGlobalFirewallName.of("[PROJECT]", "[FIREWALL]"); * Firewall firewallResource = Firewall.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = firewallClient.updateFirewall(firewall.toString(), firewallResource, fieldMask); + * firewallClient.updateFirewallAsync(firewall.toString(), firewallResource, fieldMask).get(); * } * * @@ -783,8 +894,9 @@ public final Operation updateFirewall( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation updateFirewall( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateFirewallAsync( String firewall, Firewall firewallResource, List fieldMask) { UpdateFirewallHttpRequest request = @@ -793,7 +905,7 @@ public final Operation updateFirewall( .setFirewallResource(firewallResource) .addAllFieldMask(fieldMask) .build(); - return updateFirewall(request); + return updateFirewallAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -814,16 +926,48 @@ public final Operation updateFirewall( * .setFirewallResource(firewallResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = firewallClient.updateFirewall(request); + * firewallClient.updateFirewallAsync(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 */ - @BetaApi - public final Operation updateFirewall(UpdateFirewallHttpRequest request) { - return updateFirewallCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateFirewallAsync( + UpdateFirewallHttpRequest request) { + return updateFirewallOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Updates the specified firewall rule with the data included in the request. The PUT method can + * only update the following fields of firewall rule: allowed, description, sourceRanges, + * sourceTags, targetTags. + * + *

Sample code: + * + *


+   * try (FirewallClient firewallClient = FirewallClient.create()) {
+   *   ProjectGlobalFirewallName firewall = ProjectGlobalFirewallName.of("[PROJECT]", "[FIREWALL]");
+   *   Firewall firewallResource = Firewall.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   UpdateFirewallHttpRequest request = UpdateFirewallHttpRequest.newBuilder()
+   *     .setFirewall(firewall.toString())
+   *     .setFirewallResource(firewallResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = firewallClient.updateFirewallOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + updateFirewallOperationCallable() { + return stub.updateFirewallOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -846,7 +990,7 @@ public final Operation updateFirewall(UpdateFirewallHttpRequest request) { * .build(); * ApiFuture<Operation> future = firewallClient.updateFirewallCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/FirewallSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/FirewallSettings.java index b5c7163a9e1b..abb4d5b0fa4f 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/FirewallSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/FirewallSettings.java @@ -21,10 +21,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -48,13 +50,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteFirewall to 30 seconds: + * example, to set the total timeout of getFirewall to 30 seconds: * *

  * 
  * FirewallSettings.Builder firewallSettingsBuilder =
  *     FirewallSettings.newBuilder();
- * firewallSettingsBuilder.deleteFirewallSettings().getRetrySettings().toBuilder()
+ * firewallSettingsBuilder.getFirewallSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * FirewallSettings firewallSettings = firewallSettingsBuilder.build();
  * 
@@ -68,6 +70,14 @@ public UnaryCallSettings deleteFirewallSet
     return ((FirewallStubSettings) getStubSettings()).deleteFirewallSettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteFirewall. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteFirewallOperationSettings() {
+    return ((FirewallStubSettings) getStubSettings()).deleteFirewallOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getFirewall. */
   public UnaryCallSettings getFirewallSettings() {
     return ((FirewallStubSettings) getStubSettings()).getFirewallSettings();
@@ -78,6 +88,14 @@ public UnaryCallSettings insertFirewallSet
     return ((FirewallStubSettings) getStubSettings()).insertFirewallSettings();
   }
 
+  /** Returns the object with the settings used for calls to insertFirewall. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertFirewallOperationSettings() {
+    return ((FirewallStubSettings) getStubSettings()).insertFirewallOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listFirewalls. */
   public PagedCallSettings
       listFirewallsSettings() {
@@ -89,11 +107,27 @@ public UnaryCallSettings patchFirewallSetti
     return ((FirewallStubSettings) getStubSettings()).patchFirewallSettings();
   }
 
+  /** Returns the object with the settings used for calls to patchFirewall. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      patchFirewallOperationSettings() {
+    return ((FirewallStubSettings) getStubSettings()).patchFirewallOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to updateFirewall. */
   public UnaryCallSettings updateFirewallSettings() {
     return ((FirewallStubSettings) getStubSettings()).updateFirewallSettings();
   }
 
+  /** Returns the object with the settings used for calls to updateFirewall. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      updateFirewallOperationSettings() {
+    return ((FirewallStubSettings) getStubSettings()).updateFirewallOperationSettings();
+  }
+
   public static final FirewallSettings create(FirewallStubSettings stub) throws IOException {
     return new FirewallSettings.Builder(stub.toBuilder()).build();
   }
@@ -201,6 +235,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteFirewallSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteFirewall. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteFirewallOperationSettings() {
+      return getStubSettingsBuilder().deleteFirewallOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getFirewall. */
     public UnaryCallSettings.Builder getFirewallSettings() {
       return getStubSettingsBuilder().getFirewallSettings();
@@ -212,6 +254,14 @@ public UnaryCallSettings.Builder getFirewallSe
       return getStubSettingsBuilder().insertFirewallSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertFirewall. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertFirewallOperationSettings() {
+      return getStubSettingsBuilder().insertFirewallOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listFirewalls. */
     public PagedCallSettings.Builder<
             ListFirewallsHttpRequest, FirewallList, ListFirewallsPagedResponse>
@@ -224,12 +274,28 @@ public UnaryCallSettings.Builder patchFirew
       return getStubSettingsBuilder().patchFirewallSettings();
     }
 
+    /** Returns the builder for the settings used for calls to patchFirewall. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchFirewallOperationSettings() {
+      return getStubSettingsBuilder().patchFirewallOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to updateFirewall. */
     public UnaryCallSettings.Builder
         updateFirewallSettings() {
       return getStubSettingsBuilder().updateFirewallSettings();
     }
 
+    /** Returns the builder for the settings used for calls to updateFirewall. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        updateFirewallOperationSettings() {
+      return getStubSettingsBuilder().updateFirewallOperationSettings();
+    }
+
     @Override
     public FirewallSettings build() throws IOException {
       return new FirewallSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ForwardingRuleClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ForwardingRuleClient.java
index ba45653bc3ea..18ff46d57b03 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ForwardingRuleClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ForwardingRuleClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.ForwardingRuleStub;
@@ -43,7 +46,7 @@
  * 
  * try (ForwardingRuleClient forwardingRuleClient = ForwardingRuleClient.create()) {
  *   ProjectRegionForwardingRuleName forwardingRule = ProjectRegionForwardingRuleName.of("[PROJECT]", "[REGION]", "[FORWARDING_RULE]");
- *   Operation response = forwardingRuleClient.deleteForwardingRule(forwardingRule);
+ *   ForwardingRule response = forwardingRuleClient.getForwardingRule(forwardingRule);
  * }
  * 
  * 
@@ -103,6 +106,7 @@ public class ForwardingRuleClient implements BackgroundResource { private final ForwardingRuleSettings settings; private final ForwardingRuleStub stub; + private final RegionOperationClient operationsClient; /** Constructs an instance of ForwardingRuleClient with default settings. */ public static final ForwardingRuleClient create() throws IOException { @@ -135,12 +139,14 @@ public static final ForwardingRuleClient create(ForwardingRuleStub stub) { protected ForwardingRuleClient(ForwardingRuleSettings settings) throws IOException { this.settings = settings; this.stub = ((ForwardingRuleStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected ForwardingRuleClient(ForwardingRuleStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub()); } public final ForwardingRuleSettings getSettings() { @@ -152,6 +158,16 @@ public ForwardingRuleStub getStub() { return stub; } + /** + * Returns the RegionOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final RegionOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Retrieves an aggregated list of forwarding rules. @@ -302,21 +318,23 @@ public final AggregatedListForwardingRulesPagedResponse aggregatedListForwarding *

    * try (ForwardingRuleClient forwardingRuleClient = ForwardingRuleClient.create()) {
    *   ProjectRegionForwardingRuleName forwardingRule = ProjectRegionForwardingRuleName.of("[PROJECT]", "[REGION]", "[FORWARDING_RULE]");
-   *   Operation response = forwardingRuleClient.deleteForwardingRule(forwardingRule);
+   *   forwardingRuleClient.deleteForwardingRuleAsync(forwardingRule).get();
    * }
    * 
* * @param forwardingRule Name of the ForwardingRule resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteForwardingRule(ProjectRegionForwardingRuleName forwardingRule) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteForwardingRuleAsync( + ProjectRegionForwardingRuleName forwardingRule) { DeleteForwardingRuleHttpRequest request = DeleteForwardingRuleHttpRequest.newBuilder() .setForwardingRule(forwardingRule == null ? null : forwardingRule.toString()) .build(); - return deleteForwardingRule(request); + return deleteForwardingRuleAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -328,19 +346,21 @@ public final Operation deleteForwardingRule(ProjectRegionForwardingRuleName forw *

    * try (ForwardingRuleClient forwardingRuleClient = ForwardingRuleClient.create()) {
    *   ProjectRegionForwardingRuleName forwardingRule = ProjectRegionForwardingRuleName.of("[PROJECT]", "[REGION]", "[FORWARDING_RULE]");
-   *   Operation response = forwardingRuleClient.deleteForwardingRule(forwardingRule.toString());
+   *   forwardingRuleClient.deleteForwardingRuleAsync(forwardingRule.toString()).get();
    * }
    * 
* * @param forwardingRule Name of the ForwardingRule resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteForwardingRule(String forwardingRule) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteForwardingRuleAsync( + String forwardingRule) { DeleteForwardingRuleHttpRequest request = DeleteForwardingRuleHttpRequest.newBuilder().setForwardingRule(forwardingRule).build(); - return deleteForwardingRule(request); + return deleteForwardingRuleAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -355,16 +375,42 @@ public final Operation deleteForwardingRule(String forwardingRule) { * DeleteForwardingRuleHttpRequest request = DeleteForwardingRuleHttpRequest.newBuilder() * .setForwardingRule(forwardingRule.toString()) * .build(); - * Operation response = forwardingRuleClient.deleteForwardingRule(request); + * forwardingRuleClient.deleteForwardingRuleAsync(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 */ - @BetaApi - public final Operation deleteForwardingRule(DeleteForwardingRuleHttpRequest request) { - return deleteForwardingRuleCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteForwardingRuleAsync( + DeleteForwardingRuleHttpRequest request) { + return deleteForwardingRuleOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified ForwardingRule resource. + * + *

Sample code: + * + *


+   * try (ForwardingRuleClient forwardingRuleClient = ForwardingRuleClient.create()) {
+   *   ProjectRegionForwardingRuleName forwardingRule = ProjectRegionForwardingRuleName.of("[PROJECT]", "[REGION]", "[FORWARDING_RULE]");
+   *   DeleteForwardingRuleHttpRequest request = DeleteForwardingRuleHttpRequest.newBuilder()
+   *     .setForwardingRule(forwardingRule.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = forwardingRuleClient.deleteForwardingRuleOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteForwardingRuleOperationCallable() { + return stub.deleteForwardingRuleOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -381,7 +427,7 @@ public final Operation deleteForwardingRule(DeleteForwardingRuleHttpRequest requ * .build(); * ApiFuture<Operation> future = forwardingRuleClient.deleteForwardingRuleCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -500,7 +546,7 @@ public final ForwardingRule getForwardingRule(GetForwardingRuleHttpRequest reque * try (ForwardingRuleClient forwardingRuleClient = ForwardingRuleClient.create()) { * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * ForwardingRule forwardingRuleResource = ForwardingRule.newBuilder().build(); - * Operation response = forwardingRuleClient.insertForwardingRule(region, forwardingRuleResource); + * forwardingRuleClient.insertForwardingRuleAsync(region, forwardingRuleResource).get(); * } * * @@ -513,8 +559,9 @@ public final ForwardingRule getForwardingRule(GetForwardingRuleHttpRequest reque * (== resource_for v1.regionForwardingRules ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertForwardingRule( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertForwardingRuleAsync( ProjectRegionName region, ForwardingRule forwardingRuleResource) { InsertForwardingRuleHttpRequest request = @@ -522,7 +569,7 @@ public final Operation insertForwardingRule( .setRegion(region == null ? null : region.toString()) .setForwardingRuleResource(forwardingRuleResource) .build(); - return insertForwardingRule(request); + return insertForwardingRuleAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -536,7 +583,7 @@ public final Operation insertForwardingRule( * try (ForwardingRuleClient forwardingRuleClient = ForwardingRuleClient.create()) { * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * ForwardingRule forwardingRuleResource = ForwardingRule.newBuilder().build(); - * Operation response = forwardingRuleClient.insertForwardingRule(region.toString(), forwardingRuleResource); + * forwardingRuleClient.insertForwardingRuleAsync(region.toString(), forwardingRuleResource).get(); * } * * @@ -549,8 +596,9 @@ public final Operation insertForwardingRule( * (== resource_for v1.regionForwardingRules ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertForwardingRule( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertForwardingRuleAsync( String region, ForwardingRule forwardingRuleResource) { InsertForwardingRuleHttpRequest request = @@ -558,7 +606,7 @@ public final Operation insertForwardingRule( .setRegion(region) .setForwardingRuleResource(forwardingRuleResource) .build(); - return insertForwardingRule(request); + return insertForwardingRuleAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -576,16 +624,45 @@ public final Operation insertForwardingRule( * .setRegion(region.toString()) * .setForwardingRuleResource(forwardingRuleResource) * .build(); - * Operation response = forwardingRuleClient.insertForwardingRule(request); + * forwardingRuleClient.insertForwardingRuleAsync(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 */ - @BetaApi - public final Operation insertForwardingRule(InsertForwardingRuleHttpRequest request) { - return insertForwardingRuleCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertForwardingRuleAsync( + InsertForwardingRuleHttpRequest request) { + return insertForwardingRuleOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a ForwardingRule resource in the specified project and region using the data included + * in the request. + * + *

Sample code: + * + *


+   * try (ForwardingRuleClient forwardingRuleClient = ForwardingRuleClient.create()) {
+   *   ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
+   *   ForwardingRule forwardingRuleResource = ForwardingRule.newBuilder().build();
+   *   InsertForwardingRuleHttpRequest request = InsertForwardingRuleHttpRequest.newBuilder()
+   *     .setRegion(region.toString())
+   *     .setForwardingRuleResource(forwardingRuleResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = forwardingRuleClient.insertForwardingRuleOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertForwardingRuleOperationCallable() { + return stub.insertForwardingRuleOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -605,7 +682,7 @@ public final Operation insertForwardingRule(InsertForwardingRuleHttpRequest requ * .build(); * ApiFuture<Operation> future = forwardingRuleClient.insertForwardingRuleCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -764,7 +841,7 @@ public final ListForwardingRulesPagedResponse listForwardingRules( * try (ForwardingRuleClient forwardingRuleClient = ForwardingRuleClient.create()) { * ProjectRegionForwardingRuleName forwardingRule = ProjectRegionForwardingRuleName.of("[PROJECT]", "[REGION]", "[FORWARDING_RULE]"); * TargetReference targetReferenceResource = TargetReference.newBuilder().build(); - * Operation response = forwardingRuleClient.setTargetForwardingRule(forwardingRule, targetReferenceResource); + * forwardingRuleClient.setTargetForwardingRuleAsync(forwardingRule, targetReferenceResource).get(); * } * * @@ -772,8 +849,9 @@ public final ListForwardingRulesPagedResponse listForwardingRules( * @param targetReferenceResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setTargetForwardingRule( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setTargetForwardingRuleAsync( ProjectRegionForwardingRuleName forwardingRule, TargetReference targetReferenceResource) { SetTargetForwardingRuleHttpRequest request = @@ -781,7 +859,7 @@ public final Operation setTargetForwardingRule( .setForwardingRule(forwardingRule == null ? null : forwardingRule.toString()) .setTargetReferenceResource(targetReferenceResource) .build(); - return setTargetForwardingRule(request); + return setTargetForwardingRuleAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -795,7 +873,7 @@ public final Operation setTargetForwardingRule( * try (ForwardingRuleClient forwardingRuleClient = ForwardingRuleClient.create()) { * ProjectRegionForwardingRuleName forwardingRule = ProjectRegionForwardingRuleName.of("[PROJECT]", "[REGION]", "[FORWARDING_RULE]"); * TargetReference targetReferenceResource = TargetReference.newBuilder().build(); - * Operation response = forwardingRuleClient.setTargetForwardingRule(forwardingRule.toString(), targetReferenceResource); + * forwardingRuleClient.setTargetForwardingRuleAsync(forwardingRule.toString(), targetReferenceResource).get(); * } * * @@ -803,8 +881,9 @@ public final Operation setTargetForwardingRule( * @param targetReferenceResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setTargetForwardingRule( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setTargetForwardingRuleAsync( String forwardingRule, TargetReference targetReferenceResource) { SetTargetForwardingRuleHttpRequest request = @@ -812,7 +891,7 @@ public final Operation setTargetForwardingRule( .setForwardingRule(forwardingRule) .setTargetReferenceResource(targetReferenceResource) .build(); - return setTargetForwardingRule(request); + return setTargetForwardingRuleAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -830,16 +909,45 @@ public final Operation setTargetForwardingRule( * .setForwardingRule(forwardingRule.toString()) * .setTargetReferenceResource(targetReferenceResource) * .build(); - * Operation response = forwardingRuleClient.setTargetForwardingRule(request); + * forwardingRuleClient.setTargetForwardingRuleAsync(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 */ - @BetaApi - public final Operation setTargetForwardingRule(SetTargetForwardingRuleHttpRequest request) { - return setTargetForwardingRuleCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setTargetForwardingRuleAsync( + SetTargetForwardingRuleHttpRequest request) { + return setTargetForwardingRuleOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Changes target URL for forwarding rule. The new target should be of the same type as the old + * target. + * + *

Sample code: + * + *


+   * try (ForwardingRuleClient forwardingRuleClient = ForwardingRuleClient.create()) {
+   *   ProjectRegionForwardingRuleName forwardingRule = ProjectRegionForwardingRuleName.of("[PROJECT]", "[REGION]", "[FORWARDING_RULE]");
+   *   TargetReference targetReferenceResource = TargetReference.newBuilder().build();
+   *   SetTargetForwardingRuleHttpRequest request = SetTargetForwardingRuleHttpRequest.newBuilder()
+   *     .setForwardingRule(forwardingRule.toString())
+   *     .setTargetReferenceResource(targetReferenceResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = forwardingRuleClient.setTargetForwardingRuleOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + setTargetForwardingRuleOperationCallable() { + return stub.setTargetForwardingRuleOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -859,7 +967,7 @@ public final Operation setTargetForwardingRule(SetTargetForwardingRuleHttpReques * .build(); * ApiFuture<Operation> future = forwardingRuleClient.setTargetForwardingRuleCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ForwardingRuleSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ForwardingRuleSettings.java index 14f7413d3f60..007ca1c730ca 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ForwardingRuleSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ForwardingRuleSettings.java @@ -22,10 +22,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -49,13 +51,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteForwardingRule to 30 seconds: + * example, to set the total timeout of getForwardingRule to 30 seconds: * *

  * 
  * ForwardingRuleSettings.Builder forwardingRuleSettingsBuilder =
  *     ForwardingRuleSettings.newBuilder();
- * forwardingRuleSettingsBuilder.deleteForwardingRuleSettings().getRetrySettings().toBuilder()
+ * forwardingRuleSettingsBuilder.getForwardingRuleSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * ForwardingRuleSettings forwardingRuleSettings = forwardingRuleSettingsBuilder.build();
  * 
@@ -79,6 +81,14 @@ public class ForwardingRuleSettings extends ClientSettings
+      deleteForwardingRuleOperationSettings() {
+    return ((ForwardingRuleStubSettings) getStubSettings()).deleteForwardingRuleOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getForwardingRule. */
   public UnaryCallSettings
       getForwardingRuleSettings() {
@@ -91,6 +101,14 @@ public class ForwardingRuleSettings extends ClientSettings
+      insertForwardingRuleOperationSettings() {
+    return ((ForwardingRuleStubSettings) getStubSettings()).insertForwardingRuleOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listForwardingRules. */
   public PagedCallSettings<
           ListForwardingRulesHttpRequest, ForwardingRuleList, ListForwardingRulesPagedResponse>
@@ -104,6 +122,15 @@ public class ForwardingRuleSettings extends ClientSettings
+      setTargetForwardingRuleOperationSettings() {
+    return ((ForwardingRuleStubSettings) getStubSettings())
+        .setTargetForwardingRuleOperationSettings();
+  }
+
   public static final ForwardingRuleSettings create(ForwardingRuleStubSettings stub)
       throws IOException {
     return new ForwardingRuleSettings.Builder(stub.toBuilder()).build();
@@ -221,6 +248,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteForwardingRuleSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteForwardingRule. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteForwardingRuleOperationSettings() {
+      return getStubSettingsBuilder().deleteForwardingRuleOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getForwardingRule. */
     public UnaryCallSettings.Builder
         getForwardingRuleSettings() {
@@ -233,6 +268,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().insertForwardingRuleSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertForwardingRule. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertForwardingRuleOperationSettings() {
+      return getStubSettingsBuilder().insertForwardingRuleOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listForwardingRules. */
     public PagedCallSettings.Builder<
             ListForwardingRulesHttpRequest, ForwardingRuleList, ListForwardingRulesPagedResponse>
@@ -246,6 +289,15 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().setTargetForwardingRuleSettings();
     }
 
+    /** Returns the builder for the settings used for calls to setTargetForwardingRule. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetTargetForwardingRuleHttpRequest, EmptyMessage, Operation>
+        setTargetForwardingRuleOperationSettings() {
+      return getStubSettingsBuilder().setTargetForwardingRuleOperationSettings();
+    }
+
     @Override
     public ForwardingRuleSettings build() throws IOException {
       return new ForwardingRuleSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/GlobalAddressClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/GlobalAddressClient.java
index 9aa48d06041f..1783e026afe3 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/GlobalAddressClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/GlobalAddressClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.GlobalAddressStub;
@@ -43,7 +46,7 @@
  * 
  * try (GlobalAddressClient globalAddressClient = GlobalAddressClient.create()) {
  *   ProjectGlobalAddressName address = ProjectGlobalAddressName.of("[PROJECT]", "[ADDRESS]");
- *   Operation response = globalAddressClient.deleteGlobalAddress(address);
+ *   Address response = globalAddressClient.getGlobalAddress(address);
  * }
  * 
  * 
@@ -103,6 +106,7 @@ public class GlobalAddressClient implements BackgroundResource { private final GlobalAddressSettings settings; private final GlobalAddressStub stub; + private final GlobalOperationClient operationsClient; /** Constructs an instance of GlobalAddressClient with default settings. */ public static final GlobalAddressClient create() throws IOException { @@ -135,12 +139,14 @@ public static final GlobalAddressClient create(GlobalAddressStub stub) { protected GlobalAddressClient(GlobalAddressSettings settings) throws IOException { this.settings = settings; this.stub = ((GlobalAddressStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected GlobalAddressClient(GlobalAddressStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } public final GlobalAddressSettings getSettings() { @@ -152,6 +158,16 @@ public GlobalAddressStub getStub() { return stub; } + /** + * Returns the GlobalOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final GlobalOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Deletes the specified address resource. @@ -161,21 +177,23 @@ public GlobalAddressStub getStub() { *

    * try (GlobalAddressClient globalAddressClient = GlobalAddressClient.create()) {
    *   ProjectGlobalAddressName address = ProjectGlobalAddressName.of("[PROJECT]", "[ADDRESS]");
-   *   Operation response = globalAddressClient.deleteGlobalAddress(address);
+   *   globalAddressClient.deleteGlobalAddressAsync(address).get();
    * }
    * 
* * @param address Name of the address resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteGlobalAddress(ProjectGlobalAddressName address) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteGlobalAddressAsync( + ProjectGlobalAddressName address) { DeleteGlobalAddressHttpRequest request = DeleteGlobalAddressHttpRequest.newBuilder() .setAddress(address == null ? null : address.toString()) .build(); - return deleteGlobalAddress(request); + return deleteGlobalAddressAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -187,19 +205,20 @@ public final Operation deleteGlobalAddress(ProjectGlobalAddressName address) { *

    * try (GlobalAddressClient globalAddressClient = GlobalAddressClient.create()) {
    *   ProjectGlobalAddressName address = ProjectGlobalAddressName.of("[PROJECT]", "[ADDRESS]");
-   *   Operation response = globalAddressClient.deleteGlobalAddress(address.toString());
+   *   globalAddressClient.deleteGlobalAddressAsync(address.toString()).get();
    * }
    * 
* * @param address Name of the address resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteGlobalAddress(String address) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteGlobalAddressAsync(String address) { DeleteGlobalAddressHttpRequest request = DeleteGlobalAddressHttpRequest.newBuilder().setAddress(address).build(); - return deleteGlobalAddress(request); + return deleteGlobalAddressAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -214,16 +233,42 @@ public final Operation deleteGlobalAddress(String address) { * DeleteGlobalAddressHttpRequest request = DeleteGlobalAddressHttpRequest.newBuilder() * .setAddress(address.toString()) * .build(); - * Operation response = globalAddressClient.deleteGlobalAddress(request); + * globalAddressClient.deleteGlobalAddressAsync(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 */ - @BetaApi - public final Operation deleteGlobalAddress(DeleteGlobalAddressHttpRequest request) { - return deleteGlobalAddressCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteGlobalAddressAsync( + DeleteGlobalAddressHttpRequest request) { + return deleteGlobalAddressOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified address resource. + * + *

Sample code: + * + *


+   * try (GlobalAddressClient globalAddressClient = GlobalAddressClient.create()) {
+   *   ProjectGlobalAddressName address = ProjectGlobalAddressName.of("[PROJECT]", "[ADDRESS]");
+   *   DeleteGlobalAddressHttpRequest request = DeleteGlobalAddressHttpRequest.newBuilder()
+   *     .setAddress(address.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = globalAddressClient.deleteGlobalAddressOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteGlobalAddressOperationCallable() { + return stub.deleteGlobalAddressOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -240,7 +285,7 @@ public final Operation deleteGlobalAddress(DeleteGlobalAddressHttpRequest reques * .build(); * ApiFuture<Operation> future = globalAddressClient.deleteGlobalAddressCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -361,7 +406,7 @@ public final UnaryCallable getGlobalAddres * try (GlobalAddressClient globalAddressClient = GlobalAddressClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * Address addressResource = Address.newBuilder().build(); - * Operation response = globalAddressClient.insertGlobalAddress(project, addressResource); + * globalAddressClient.insertGlobalAddressAsync(project, addressResource).get(); * } * * @@ -371,15 +416,17 @@ public final UnaryCallable getGlobalAddres * v1.globalAddresses ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertGlobalAddress(ProjectName project, Address addressResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertGlobalAddressAsync( + ProjectName project, Address addressResource) { InsertGlobalAddressHttpRequest request = InsertGlobalAddressHttpRequest.newBuilder() .setProject(project == null ? null : project.toString()) .setAddressResource(addressResource) .build(); - return insertGlobalAddress(request); + return insertGlobalAddressAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -392,7 +439,7 @@ public final Operation insertGlobalAddress(ProjectName project, Address addressR * try (GlobalAddressClient globalAddressClient = GlobalAddressClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * Address addressResource = Address.newBuilder().build(); - * Operation response = globalAddressClient.insertGlobalAddress(project.toString(), addressResource); + * globalAddressClient.insertGlobalAddressAsync(project.toString(), addressResource).get(); * } * * @@ -402,15 +449,17 @@ public final Operation insertGlobalAddress(ProjectName project, Address addressR * v1.globalAddresses ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertGlobalAddress(String project, Address addressResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertGlobalAddressAsync( + String project, Address addressResource) { InsertGlobalAddressHttpRequest request = InsertGlobalAddressHttpRequest.newBuilder() .setProject(project) .setAddressResource(addressResource) .build(); - return insertGlobalAddress(request); + return insertGlobalAddressAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -427,16 +476,44 @@ public final Operation insertGlobalAddress(String project, Address addressResour * .setProject(project.toString()) * .setAddressResource(addressResource) * .build(); - * Operation response = globalAddressClient.insertGlobalAddress(request); + * globalAddressClient.insertGlobalAddressAsync(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 */ - @BetaApi - public final Operation insertGlobalAddress(InsertGlobalAddressHttpRequest request) { - return insertGlobalAddressCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertGlobalAddressAsync( + InsertGlobalAddressHttpRequest request) { + return insertGlobalAddressOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates an address resource in the specified project using the data included in the request. + * + *

Sample code: + * + *


+   * try (GlobalAddressClient globalAddressClient = GlobalAddressClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   Address addressResource = Address.newBuilder().build();
+   *   InsertGlobalAddressHttpRequest request = InsertGlobalAddressHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .setAddressResource(addressResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = globalAddressClient.insertGlobalAddressOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertGlobalAddressOperationCallable() { + return stub.insertGlobalAddressOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -455,7 +532,7 @@ public final Operation insertGlobalAddress(InsertGlobalAddressHttpRequest reques * .build(); * ApiFuture<Operation> future = globalAddressClient.insertGlobalAddressCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/GlobalAddressSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/GlobalAddressSettings.java index 7539e81ce69a..dfff9be07efb 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/GlobalAddressSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/GlobalAddressSettings.java @@ -21,10 +21,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -48,13 +50,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteGlobalAddress to 30 seconds: + * example, to set the total timeout of getGlobalAddress to 30 seconds: * *

  * 
  * GlobalAddressSettings.Builder globalAddressSettingsBuilder =
  *     GlobalAddressSettings.newBuilder();
- * globalAddressSettingsBuilder.deleteGlobalAddressSettings().getRetrySettings().toBuilder()
+ * globalAddressSettingsBuilder.getGlobalAddressSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * GlobalAddressSettings globalAddressSettings = globalAddressSettingsBuilder.build();
  * 
@@ -69,6 +71,14 @@ public class GlobalAddressSettings extends ClientSettings
     return ((GlobalAddressStubSettings) getStubSettings()).deleteGlobalAddressSettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteGlobalAddress. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteGlobalAddressOperationSettings() {
+    return ((GlobalAddressStubSettings) getStubSettings()).deleteGlobalAddressOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getGlobalAddress. */
   public UnaryCallSettings getGlobalAddressSettings() {
     return ((GlobalAddressStubSettings) getStubSettings()).getGlobalAddressSettings();
@@ -80,6 +90,14 @@ public UnaryCallSettings getGlobalAddressS
     return ((GlobalAddressStubSettings) getStubSettings()).insertGlobalAddressSettings();
   }
 
+  /** Returns the object with the settings used for calls to insertGlobalAddress. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertGlobalAddressOperationSettings() {
+    return ((GlobalAddressStubSettings) getStubSettings()).insertGlobalAddressOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listGlobalAddresses. */
   public PagedCallSettings<
           ListGlobalAddressesHttpRequest, AddressList, ListGlobalAddressesPagedResponse>
@@ -195,6 +213,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteGlobalAddressSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteGlobalAddress. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteGlobalAddressOperationSettings() {
+      return getStubSettingsBuilder().deleteGlobalAddressOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getGlobalAddress. */
     public UnaryCallSettings.Builder
         getGlobalAddressSettings() {
@@ -207,6 +233,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().insertGlobalAddressSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertGlobalAddress. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertGlobalAddressOperationSettings() {
+      return getStubSettingsBuilder().insertGlobalAddressOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listGlobalAddresses. */
     public PagedCallSettings.Builder<
             ListGlobalAddressesHttpRequest, AddressList, ListGlobalAddressesPagedResponse>
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/GlobalForwardingRuleClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/GlobalForwardingRuleClient.java
index 64156dde5424..e7543a904b64 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/GlobalForwardingRuleClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/GlobalForwardingRuleClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.GlobalForwardingRuleStub;
@@ -43,7 +46,7 @@
  * 
  * try (GlobalForwardingRuleClient globalForwardingRuleClient = GlobalForwardingRuleClient.create()) {
  *   ProjectGlobalForwardingRuleName forwardingRule = ProjectGlobalForwardingRuleName.of("[PROJECT]", "[FORWARDING_RULE]");
- *   Operation response = globalForwardingRuleClient.deleteGlobalForwardingRule(forwardingRule);
+ *   ForwardingRule response = globalForwardingRuleClient.getGlobalForwardingRule(forwardingRule);
  * }
  * 
  * 
@@ -104,6 +107,7 @@ public class GlobalForwardingRuleClient implements BackgroundResource { private final GlobalForwardingRuleSettings settings; private final GlobalForwardingRuleStub stub; + private final GlobalOperationClient operationsClient; /** Constructs an instance of GlobalForwardingRuleClient with default settings. */ public static final GlobalForwardingRuleClient create() throws IOException { @@ -136,12 +140,14 @@ public static final GlobalForwardingRuleClient create(GlobalForwardingRuleStub s protected GlobalForwardingRuleClient(GlobalForwardingRuleSettings settings) throws IOException { this.settings = settings; this.stub = ((GlobalForwardingRuleStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected GlobalForwardingRuleClient(GlobalForwardingRuleStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } public final GlobalForwardingRuleSettings getSettings() { @@ -153,6 +159,16 @@ public GlobalForwardingRuleStub getStub() { return stub; } + /** + * Returns the GlobalOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final GlobalOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Deletes the specified GlobalForwardingRule resource. @@ -162,22 +178,23 @@ public GlobalForwardingRuleStub getStub() { *

    * try (GlobalForwardingRuleClient globalForwardingRuleClient = GlobalForwardingRuleClient.create()) {
    *   ProjectGlobalForwardingRuleName forwardingRule = ProjectGlobalForwardingRuleName.of("[PROJECT]", "[FORWARDING_RULE]");
-   *   Operation response = globalForwardingRuleClient.deleteGlobalForwardingRule(forwardingRule);
+   *   globalForwardingRuleClient.deleteGlobalForwardingRuleAsync(forwardingRule).get();
    * }
    * 
* * @param forwardingRule Name of the ForwardingRule resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteGlobalForwardingRule( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteGlobalForwardingRuleAsync( ProjectGlobalForwardingRuleName forwardingRule) { DeleteGlobalForwardingRuleHttpRequest request = DeleteGlobalForwardingRuleHttpRequest.newBuilder() .setForwardingRule(forwardingRule == null ? null : forwardingRule.toString()) .build(); - return deleteGlobalForwardingRule(request); + return deleteGlobalForwardingRuleAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -189,21 +206,23 @@ public final Operation deleteGlobalForwardingRule( *

    * try (GlobalForwardingRuleClient globalForwardingRuleClient = GlobalForwardingRuleClient.create()) {
    *   ProjectGlobalForwardingRuleName forwardingRule = ProjectGlobalForwardingRuleName.of("[PROJECT]", "[FORWARDING_RULE]");
-   *   Operation response = globalForwardingRuleClient.deleteGlobalForwardingRule(forwardingRule.toString());
+   *   globalForwardingRuleClient.deleteGlobalForwardingRuleAsync(forwardingRule.toString()).get();
    * }
    * 
* * @param forwardingRule Name of the ForwardingRule resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteGlobalForwardingRule(String forwardingRule) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteGlobalForwardingRuleAsync( + String forwardingRule) { DeleteGlobalForwardingRuleHttpRequest request = DeleteGlobalForwardingRuleHttpRequest.newBuilder() .setForwardingRule(forwardingRule) .build(); - return deleteGlobalForwardingRule(request); + return deleteGlobalForwardingRuleAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -218,16 +237,42 @@ public final Operation deleteGlobalForwardingRule(String forwardingRule) { * DeleteGlobalForwardingRuleHttpRequest request = DeleteGlobalForwardingRuleHttpRequest.newBuilder() * .setForwardingRule(forwardingRule.toString()) * .build(); - * Operation response = globalForwardingRuleClient.deleteGlobalForwardingRule(request); + * globalForwardingRuleClient.deleteGlobalForwardingRuleAsync(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 */ - @BetaApi - public final Operation deleteGlobalForwardingRule(DeleteGlobalForwardingRuleHttpRequest request) { - return deleteGlobalForwardingRuleCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteGlobalForwardingRuleAsync( + DeleteGlobalForwardingRuleHttpRequest request) { + return deleteGlobalForwardingRuleOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified GlobalForwardingRule resource. + * + *

Sample code: + * + *


+   * try (GlobalForwardingRuleClient globalForwardingRuleClient = GlobalForwardingRuleClient.create()) {
+   *   ProjectGlobalForwardingRuleName forwardingRule = ProjectGlobalForwardingRuleName.of("[PROJECT]", "[FORWARDING_RULE]");
+   *   DeleteGlobalForwardingRuleHttpRequest request = DeleteGlobalForwardingRuleHttpRequest.newBuilder()
+   *     .setForwardingRule(forwardingRule.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = globalForwardingRuleClient.deleteGlobalForwardingRuleOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteGlobalForwardingRuleOperationCallable() { + return stub.deleteGlobalForwardingRuleOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -244,7 +289,7 @@ public final Operation deleteGlobalForwardingRule(DeleteGlobalForwardingRuleHttp * .build(); * ApiFuture<Operation> future = globalForwardingRuleClient.deleteGlobalForwardingRuleCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -368,7 +413,7 @@ public final ForwardingRule getGlobalForwardingRule(GetGlobalForwardingRuleHttpR * try (GlobalForwardingRuleClient globalForwardingRuleClient = GlobalForwardingRuleClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * ForwardingRule forwardingRuleResource = ForwardingRule.newBuilder().build(); - * Operation response = globalForwardingRuleClient.insertGlobalForwardingRule(project, forwardingRuleResource); + * globalForwardingRuleClient.insertGlobalForwardingRuleAsync(project, forwardingRuleResource).get(); * } * * @@ -381,8 +426,9 @@ public final ForwardingRule getGlobalForwardingRule(GetGlobalForwardingRuleHttpR * (== resource_for v1.regionForwardingRules ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertGlobalForwardingRule( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertGlobalForwardingRuleAsync( ProjectName project, ForwardingRule forwardingRuleResource) { InsertGlobalForwardingRuleHttpRequest request = @@ -390,7 +436,7 @@ public final Operation insertGlobalForwardingRule( .setProject(project == null ? null : project.toString()) .setForwardingRuleResource(forwardingRuleResource) .build(); - return insertGlobalForwardingRule(request); + return insertGlobalForwardingRuleAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -404,7 +450,7 @@ public final Operation insertGlobalForwardingRule( * try (GlobalForwardingRuleClient globalForwardingRuleClient = GlobalForwardingRuleClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * ForwardingRule forwardingRuleResource = ForwardingRule.newBuilder().build(); - * Operation response = globalForwardingRuleClient.insertGlobalForwardingRule(project.toString(), forwardingRuleResource); + * globalForwardingRuleClient.insertGlobalForwardingRuleAsync(project.toString(), forwardingRuleResource).get(); * } * * @@ -417,8 +463,9 @@ public final Operation insertGlobalForwardingRule( * (== resource_for v1.regionForwardingRules ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertGlobalForwardingRule( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertGlobalForwardingRuleAsync( String project, ForwardingRule forwardingRuleResource) { InsertGlobalForwardingRuleHttpRequest request = @@ -426,7 +473,7 @@ public final Operation insertGlobalForwardingRule( .setProject(project) .setForwardingRuleResource(forwardingRuleResource) .build(); - return insertGlobalForwardingRule(request); + return insertGlobalForwardingRuleAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -444,16 +491,45 @@ public final Operation insertGlobalForwardingRule( * .setProject(project.toString()) * .setForwardingRuleResource(forwardingRuleResource) * .build(); - * Operation response = globalForwardingRuleClient.insertGlobalForwardingRule(request); + * globalForwardingRuleClient.insertGlobalForwardingRuleAsync(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 */ - @BetaApi - public final Operation insertGlobalForwardingRule(InsertGlobalForwardingRuleHttpRequest request) { - return insertGlobalForwardingRuleCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertGlobalForwardingRuleAsync( + InsertGlobalForwardingRuleHttpRequest request) { + return insertGlobalForwardingRuleOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a GlobalForwardingRule resource in the specified project using the data included in the + * request. + * + *

Sample code: + * + *


+   * try (GlobalForwardingRuleClient globalForwardingRuleClient = GlobalForwardingRuleClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   ForwardingRule forwardingRuleResource = ForwardingRule.newBuilder().build();
+   *   InsertGlobalForwardingRuleHttpRequest request = InsertGlobalForwardingRuleHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .setForwardingRuleResource(forwardingRuleResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = globalForwardingRuleClient.insertGlobalForwardingRuleOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertGlobalForwardingRuleOperationCallable() { + return stub.insertGlobalForwardingRuleOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -473,7 +549,7 @@ public final Operation insertGlobalForwardingRule(InsertGlobalForwardingRuleHttp * .build(); * ApiFuture<Operation> future = globalForwardingRuleClient.insertGlobalForwardingRuleCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -634,7 +710,7 @@ public final ListGlobalForwardingRulesPagedResponse listGlobalForwardingRules( * try (GlobalForwardingRuleClient globalForwardingRuleClient = GlobalForwardingRuleClient.create()) { * ProjectGlobalForwardingRuleName forwardingRule = ProjectGlobalForwardingRuleName.of("[PROJECT]", "[FORWARDING_RULE]"); * TargetReference targetReferenceResource = TargetReference.newBuilder().build(); - * Operation response = globalForwardingRuleClient.setTargetGlobalForwardingRule(forwardingRule, targetReferenceResource); + * globalForwardingRuleClient.setTargetGlobalForwardingRuleAsync(forwardingRule, targetReferenceResource).get(); * } * * @@ -642,8 +718,9 @@ public final ListGlobalForwardingRulesPagedResponse listGlobalForwardingRules( * @param targetReferenceResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setTargetGlobalForwardingRule( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setTargetGlobalForwardingRuleAsync( ProjectGlobalForwardingRuleName forwardingRule, TargetReference targetReferenceResource) { SetTargetGlobalForwardingRuleHttpRequest request = @@ -651,7 +728,7 @@ public final Operation setTargetGlobalForwardingRule( .setForwardingRule(forwardingRule == null ? null : forwardingRule.toString()) .setTargetReferenceResource(targetReferenceResource) .build(); - return setTargetGlobalForwardingRule(request); + return setTargetGlobalForwardingRuleAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -665,7 +742,7 @@ public final Operation setTargetGlobalForwardingRule( * try (GlobalForwardingRuleClient globalForwardingRuleClient = GlobalForwardingRuleClient.create()) { * ProjectGlobalForwardingRuleName forwardingRule = ProjectGlobalForwardingRuleName.of("[PROJECT]", "[FORWARDING_RULE]"); * TargetReference targetReferenceResource = TargetReference.newBuilder().build(); - * Operation response = globalForwardingRuleClient.setTargetGlobalForwardingRule(forwardingRule.toString(), targetReferenceResource); + * globalForwardingRuleClient.setTargetGlobalForwardingRuleAsync(forwardingRule.toString(), targetReferenceResource).get(); * } * * @@ -673,8 +750,9 @@ public final Operation setTargetGlobalForwardingRule( * @param targetReferenceResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setTargetGlobalForwardingRule( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setTargetGlobalForwardingRuleAsync( String forwardingRule, TargetReference targetReferenceResource) { SetTargetGlobalForwardingRuleHttpRequest request = @@ -682,7 +760,7 @@ public final Operation setTargetGlobalForwardingRule( .setForwardingRule(forwardingRule) .setTargetReferenceResource(targetReferenceResource) .build(); - return setTargetGlobalForwardingRule(request); + return setTargetGlobalForwardingRuleAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -700,17 +778,45 @@ public final Operation setTargetGlobalForwardingRule( * .setForwardingRule(forwardingRule.toString()) * .setTargetReferenceResource(targetReferenceResource) * .build(); - * Operation response = globalForwardingRuleClient.setTargetGlobalForwardingRule(request); + * globalForwardingRuleClient.setTargetGlobalForwardingRuleAsync(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 */ - @BetaApi - public final Operation setTargetGlobalForwardingRule( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setTargetGlobalForwardingRuleAsync( SetTargetGlobalForwardingRuleHttpRequest request) { - return setTargetGlobalForwardingRuleCallable().call(request); + return setTargetGlobalForwardingRuleOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Changes target URL for the GlobalForwardingRule resource. The new target should be of the same + * type as the old target. + * + *

Sample code: + * + *


+   * try (GlobalForwardingRuleClient globalForwardingRuleClient = GlobalForwardingRuleClient.create()) {
+   *   ProjectGlobalForwardingRuleName forwardingRule = ProjectGlobalForwardingRuleName.of("[PROJECT]", "[FORWARDING_RULE]");
+   *   TargetReference targetReferenceResource = TargetReference.newBuilder().build();
+   *   SetTargetGlobalForwardingRuleHttpRequest request = SetTargetGlobalForwardingRuleHttpRequest.newBuilder()
+   *     .setForwardingRule(forwardingRule.toString())
+   *     .setTargetReferenceResource(targetReferenceResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = globalForwardingRuleClient.setTargetGlobalForwardingRuleOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + setTargetGlobalForwardingRuleOperationCallable() { + return stub.setTargetGlobalForwardingRuleOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -730,7 +836,7 @@ public final Operation setTargetGlobalForwardingRule( * .build(); * ApiFuture<Operation> future = globalForwardingRuleClient.setTargetGlobalForwardingRuleCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/GlobalForwardingRuleSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/GlobalForwardingRuleSettings.java index acec8173719d..3f79d7d5dcac 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/GlobalForwardingRuleSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/GlobalForwardingRuleSettings.java @@ -21,10 +21,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -48,13 +50,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteGlobalForwardingRule to 30 seconds: + * example, to set the total timeout of getGlobalForwardingRule to 30 seconds: * *

  * 
  * GlobalForwardingRuleSettings.Builder globalForwardingRuleSettingsBuilder =
  *     GlobalForwardingRuleSettings.newBuilder();
- * globalForwardingRuleSettingsBuilder.deleteGlobalForwardingRuleSettings().getRetrySettings().toBuilder()
+ * globalForwardingRuleSettingsBuilder.getGlobalForwardingRuleSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * GlobalForwardingRuleSettings globalForwardingRuleSettings = globalForwardingRuleSettingsBuilder.build();
  * 
@@ -70,6 +72,15 @@ public class GlobalForwardingRuleSettings extends ClientSettings
+      deleteGlobalForwardingRuleOperationSettings() {
+    return ((GlobalForwardingRuleStubSettings) getStubSettings())
+        .deleteGlobalForwardingRuleOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getGlobalForwardingRule. */
   public UnaryCallSettings
       getGlobalForwardingRuleSettings() {
@@ -83,6 +94,15 @@ public class GlobalForwardingRuleSettings extends ClientSettings
+      insertGlobalForwardingRuleOperationSettings() {
+    return ((GlobalForwardingRuleStubSettings) getStubSettings())
+        .insertGlobalForwardingRuleOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listGlobalForwardingRules. */
   public PagedCallSettings<
           ListGlobalForwardingRulesHttpRequest,
@@ -100,6 +120,15 @@ public class GlobalForwardingRuleSettings extends ClientSettings
+      setTargetGlobalForwardingRuleOperationSettings() {
+    return ((GlobalForwardingRuleStubSettings) getStubSettings())
+        .setTargetGlobalForwardingRuleOperationSettings();
+  }
+
   public static final GlobalForwardingRuleSettings create(GlobalForwardingRuleStubSettings stub)
       throws IOException {
     return new GlobalForwardingRuleSettings.Builder(stub.toBuilder()).build();
@@ -209,6 +238,15 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteGlobalForwardingRuleSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteGlobalForwardingRule. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            DeleteGlobalForwardingRuleHttpRequest, EmptyMessage, Operation>
+        deleteGlobalForwardingRuleOperationSettings() {
+      return getStubSettingsBuilder().deleteGlobalForwardingRuleOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getGlobalForwardingRule. */
     public UnaryCallSettings.Builder
         getGlobalForwardingRuleSettings() {
@@ -221,6 +259,15 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().insertGlobalForwardingRuleSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertGlobalForwardingRule. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            InsertGlobalForwardingRuleHttpRequest, EmptyMessage, Operation>
+        insertGlobalForwardingRuleOperationSettings() {
+      return getStubSettingsBuilder().insertGlobalForwardingRuleOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listGlobalForwardingRules. */
     public PagedCallSettings.Builder<
             ListGlobalForwardingRulesHttpRequest,
@@ -236,6 +283,15 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().setTargetGlobalForwardingRuleSettings();
     }
 
+    /** Returns the builder for the settings used for calls to setTargetGlobalForwardingRule. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetTargetGlobalForwardingRuleHttpRequest, EmptyMessage, Operation>
+        setTargetGlobalForwardingRuleOperationSettings() {
+      return getStubSettingsBuilder().setTargetGlobalForwardingRuleOperationSettings();
+    }
+
     @Override
     public GlobalForwardingRuleSettings build() throws IOException {
       return new GlobalForwardingRuleSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/GlobalOperationClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/GlobalOperationClient.java
index cf3ff11bfbfe..1f8c5af1629d 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/GlobalOperationClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/GlobalOperationClient.java
@@ -20,6 +20,7 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
@@ -387,7 +388,7 @@ public final void deleteGlobalOperation(DeleteGlobalOperationHttpRequest request
    * 
*/ @BetaApi - public final UnaryCallable + public final UnaryCallable deleteGlobalOperationCallable() { return stub.deleteGlobalOperationCallable(); } diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/GlobalOperationSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/GlobalOperationSettings.java index 51772546798b..09ec9aacfd53 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/GlobalOperationSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/GlobalOperationSettings.java @@ -22,6 +22,7 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; @@ -75,7 +76,8 @@ public class GlobalOperationSettings extends ClientSettings deleteGlobalOperationSettings() { + public UnaryCallSettings + deleteGlobalOperationSettings() { return ((GlobalOperationStubSettings) getStubSettings()).deleteGlobalOperationSettings(); } @@ -203,7 +205,7 @@ public Builder applyToAllUnaryMethods( } /** Returns the builder for the settings used for calls to deleteGlobalOperation. */ - public UnaryCallSettings.Builder + public UnaryCallSettings.Builder deleteGlobalOperationSettings() { return getStubSettingsBuilder().deleteGlobalOperationSettings(); } diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/HealthCheckClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/HealthCheckClient.java index 0eaa5d6ed784..04edf93c2b4f 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/HealthCheckClient.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/HealthCheckClient.java @@ -20,9 +20,12 @@ import com.google.api.core.ApiFutures; import com.google.api.core.BetaApi; import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.httpjson.EmptyMessage; +import com.google.api.gax.longrunning.OperationFuture; import com.google.api.gax.paging.AbstractFixedSizeCollection; import com.google.api.gax.paging.AbstractPage; import com.google.api.gax.paging.AbstractPagedListResponse; +import com.google.api.gax.rpc.OperationCallable; import com.google.api.gax.rpc.PageContext; import com.google.api.gax.rpc.UnaryCallable; import com.google.cloud.compute.v1.stub.HealthCheckStub; @@ -43,7 +46,7 @@ * * try (HealthCheckClient healthCheckClient = HealthCheckClient.create()) { * ProjectGlobalHealthCheckName healthCheck = ProjectGlobalHealthCheckName.of("[PROJECT]", "[HEALTH_CHECK]"); - * Operation response = healthCheckClient.deleteHealthCheck(healthCheck); + * HealthCheck response = healthCheckClient.getHealthCheck(healthCheck); * } * * @@ -103,6 +106,7 @@ public class HealthCheckClient implements BackgroundResource { private final HealthCheckSettings settings; private final HealthCheckStub stub; + private final GlobalOperationClient operationsClient; /** Constructs an instance of HealthCheckClient with default settings. */ public static final HealthCheckClient create() throws IOException { @@ -134,12 +138,14 @@ public static final HealthCheckClient create(HealthCheckStub stub) { protected HealthCheckClient(HealthCheckSettings settings) throws IOException { this.settings = settings; this.stub = ((HealthCheckStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected HealthCheckClient(HealthCheckStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } public final HealthCheckSettings getSettings() { @@ -151,6 +157,16 @@ public HealthCheckStub getStub() { return stub; } + /** + * Returns the GlobalOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final GlobalOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Deletes the specified HealthCheck resource. @@ -160,21 +176,23 @@ public HealthCheckStub getStub() { *

    * try (HealthCheckClient healthCheckClient = HealthCheckClient.create()) {
    *   ProjectGlobalHealthCheckName healthCheck = ProjectGlobalHealthCheckName.of("[PROJECT]", "[HEALTH_CHECK]");
-   *   Operation response = healthCheckClient.deleteHealthCheck(healthCheck);
+   *   healthCheckClient.deleteHealthCheckAsync(healthCheck).get();
    * }
    * 
* * @param healthCheck Name of the HealthCheck resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteHealthCheck(ProjectGlobalHealthCheckName healthCheck) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteHealthCheckAsync( + ProjectGlobalHealthCheckName healthCheck) { DeleteHealthCheckHttpRequest request = DeleteHealthCheckHttpRequest.newBuilder() .setHealthCheck(healthCheck == null ? null : healthCheck.toString()) .build(); - return deleteHealthCheck(request); + return deleteHealthCheckAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -186,19 +204,20 @@ public final Operation deleteHealthCheck(ProjectGlobalHealthCheckName healthChec *

    * try (HealthCheckClient healthCheckClient = HealthCheckClient.create()) {
    *   ProjectGlobalHealthCheckName healthCheck = ProjectGlobalHealthCheckName.of("[PROJECT]", "[HEALTH_CHECK]");
-   *   Operation response = healthCheckClient.deleteHealthCheck(healthCheck.toString());
+   *   healthCheckClient.deleteHealthCheckAsync(healthCheck.toString()).get();
    * }
    * 
* * @param healthCheck Name of the HealthCheck resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteHealthCheck(String healthCheck) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteHealthCheckAsync(String healthCheck) { DeleteHealthCheckHttpRequest request = DeleteHealthCheckHttpRequest.newBuilder().setHealthCheck(healthCheck).build(); - return deleteHealthCheck(request); + return deleteHealthCheckAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -213,16 +232,42 @@ public final Operation deleteHealthCheck(String healthCheck) { * DeleteHealthCheckHttpRequest request = DeleteHealthCheckHttpRequest.newBuilder() * .setHealthCheck(healthCheck.toString()) * .build(); - * Operation response = healthCheckClient.deleteHealthCheck(request); + * healthCheckClient.deleteHealthCheckAsync(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 */ - @BetaApi - public final Operation deleteHealthCheck(DeleteHealthCheckHttpRequest request) { - return deleteHealthCheckCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteHealthCheckAsync( + DeleteHealthCheckHttpRequest request) { + return deleteHealthCheckOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified HealthCheck resource. + * + *

Sample code: + * + *


+   * try (HealthCheckClient healthCheckClient = HealthCheckClient.create()) {
+   *   ProjectGlobalHealthCheckName healthCheck = ProjectGlobalHealthCheckName.of("[PROJECT]", "[HEALTH_CHECK]");
+   *   DeleteHealthCheckHttpRequest request = DeleteHealthCheckHttpRequest.newBuilder()
+   *     .setHealthCheck(healthCheck.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = healthCheckClient.deleteHealthCheckOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteHealthCheckOperationCallable() { + return stub.deleteHealthCheckOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -239,7 +284,7 @@ public final Operation deleteHealthCheck(DeleteHealthCheckHttpRequest request) { * .build(); * ApiFuture<Operation> future = healthCheckClient.deleteHealthCheckCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -359,7 +404,7 @@ public final UnaryCallable getHealthChec * try (HealthCheckClient healthCheckClient = HealthCheckClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * HealthCheck healthCheckResource = HealthCheck.newBuilder().build(); - * Operation response = healthCheckClient.insertHealthCheck(project, healthCheckResource); + * healthCheckClient.insertHealthCheckAsync(project, healthCheckResource).get(); * } * * @@ -369,15 +414,17 @@ public final UnaryCallable getHealthChec * protocols. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertHealthCheck(ProjectName project, HealthCheck healthCheckResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertHealthCheckAsync( + ProjectName project, HealthCheck healthCheckResource) { InsertHealthCheckHttpRequest request = InsertHealthCheckHttpRequest.newBuilder() .setProject(project == null ? null : project.toString()) .setHealthCheckResource(healthCheckResource) .build(); - return insertHealthCheck(request); + return insertHealthCheckAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -390,7 +437,7 @@ public final Operation insertHealthCheck(ProjectName project, HealthCheck health * try (HealthCheckClient healthCheckClient = HealthCheckClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * HealthCheck healthCheckResource = HealthCheck.newBuilder().build(); - * Operation response = healthCheckClient.insertHealthCheck(project.toString(), healthCheckResource); + * healthCheckClient.insertHealthCheckAsync(project.toString(), healthCheckResource).get(); * } * * @@ -400,15 +447,17 @@ public final Operation insertHealthCheck(ProjectName project, HealthCheck health * protocols. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertHealthCheck(String project, HealthCheck healthCheckResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertHealthCheckAsync( + String project, HealthCheck healthCheckResource) { InsertHealthCheckHttpRequest request = InsertHealthCheckHttpRequest.newBuilder() .setProject(project) .setHealthCheckResource(healthCheckResource) .build(); - return insertHealthCheck(request); + return insertHealthCheckAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -425,16 +474,44 @@ public final Operation insertHealthCheck(String project, HealthCheck healthCheck * .setProject(project.toString()) * .setHealthCheckResource(healthCheckResource) * .build(); - * Operation response = healthCheckClient.insertHealthCheck(request); + * healthCheckClient.insertHealthCheckAsync(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 */ - @BetaApi - public final Operation insertHealthCheck(InsertHealthCheckHttpRequest request) { - return insertHealthCheckCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertHealthCheckAsync( + InsertHealthCheckHttpRequest request) { + return insertHealthCheckOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a HealthCheck resource in the specified project using the data included in the request. + * + *

Sample code: + * + *


+   * try (HealthCheckClient healthCheckClient = HealthCheckClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   HealthCheck healthCheckResource = HealthCheck.newBuilder().build();
+   *   InsertHealthCheckHttpRequest request = InsertHealthCheckHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .setHealthCheckResource(healthCheckResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = healthCheckClient.insertHealthCheckOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertHealthCheckOperationCallable() { + return stub.insertHealthCheckOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -453,7 +530,7 @@ public final Operation insertHealthCheck(InsertHealthCheckHttpRequest request) { * .build(); * ApiFuture<Operation> future = healthCheckClient.insertHealthCheckCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -611,7 +688,7 @@ public final ListHealthChecksPagedResponse listHealthChecks(ListHealthChecksHttp * ProjectGlobalHealthCheckName healthCheck = ProjectGlobalHealthCheckName.of("[PROJECT]", "[HEALTH_CHECK]"); * HealthCheck healthCheckResource = HealthCheck.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = healthCheckClient.patchHealthCheck(healthCheck, healthCheckResource, fieldMask); + * healthCheckClient.patchHealthCheckAsync(healthCheck, healthCheckResource, fieldMask).get(); * } * * @@ -625,8 +702,9 @@ public final ListHealthChecksPagedResponse listHealthChecks(ListHealthChecksHttp * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchHealthCheck( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchHealthCheckAsync( ProjectGlobalHealthCheckName healthCheck, HealthCheck healthCheckResource, List fieldMask) { @@ -637,7 +715,7 @@ public final Operation patchHealthCheck( .setHealthCheckResource(healthCheckResource) .addAllFieldMask(fieldMask) .build(); - return patchHealthCheck(request); + return patchHealthCheckAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -652,7 +730,7 @@ public final Operation patchHealthCheck( * ProjectGlobalHealthCheckName healthCheck = ProjectGlobalHealthCheckName.of("[PROJECT]", "[HEALTH_CHECK]"); * HealthCheck healthCheckResource = HealthCheck.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = healthCheckClient.patchHealthCheck(healthCheck.toString(), healthCheckResource, fieldMask); + * healthCheckClient.patchHealthCheckAsync(healthCheck.toString(), healthCheckResource, fieldMask).get(); * } * * @@ -666,8 +744,9 @@ public final Operation patchHealthCheck( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchHealthCheck( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchHealthCheckAsync( String healthCheck, HealthCheck healthCheckResource, List fieldMask) { PatchHealthCheckHttpRequest request = @@ -676,7 +755,7 @@ public final Operation patchHealthCheck( .setHealthCheckResource(healthCheckResource) .addAllFieldMask(fieldMask) .build(); - return patchHealthCheck(request); + return patchHealthCheckAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -696,16 +775,47 @@ public final Operation patchHealthCheck( * .setHealthCheckResource(healthCheckResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = healthCheckClient.patchHealthCheck(request); + * healthCheckClient.patchHealthCheckAsync(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 */ - @BetaApi - public final Operation patchHealthCheck(PatchHealthCheckHttpRequest request) { - return patchHealthCheckCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchHealthCheckAsync( + PatchHealthCheckHttpRequest request) { + return patchHealthCheckOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Updates a HealthCheck resource in the specified project using the data included in the request. + * This method supports PATCH semantics and uses the JSON merge patch format and processing rules. + * + *

Sample code: + * + *


+   * try (HealthCheckClient healthCheckClient = HealthCheckClient.create()) {
+   *   ProjectGlobalHealthCheckName healthCheck = ProjectGlobalHealthCheckName.of("[PROJECT]", "[HEALTH_CHECK]");
+   *   HealthCheck healthCheckResource = HealthCheck.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   PatchHealthCheckHttpRequest request = PatchHealthCheckHttpRequest.newBuilder()
+   *     .setHealthCheck(healthCheck.toString())
+   *     .setHealthCheckResource(healthCheckResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = healthCheckClient.patchHealthCheckOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + patchHealthCheckOperationCallable() { + return stub.patchHealthCheckOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -727,7 +837,7 @@ public final Operation patchHealthCheck(PatchHealthCheckHttpRequest request) { * .build(); * ApiFuture<Operation> future = healthCheckClient.patchHealthCheckCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -747,7 +857,7 @@ public final UnaryCallable patchHealthCh * ProjectGlobalHealthCheckName healthCheck = ProjectGlobalHealthCheckName.of("[PROJECT]", "[HEALTH_CHECK]"); * HealthCheck healthCheckResource = HealthCheck.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = healthCheckClient.updateHealthCheck(healthCheck, healthCheckResource, fieldMask); + * healthCheckClient.updateHealthCheckAsync(healthCheck, healthCheckResource, fieldMask).get(); * } * * @@ -761,8 +871,9 @@ public final UnaryCallable patchHealthCh * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation updateHealthCheck( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateHealthCheckAsync( ProjectGlobalHealthCheckName healthCheck, HealthCheck healthCheckResource, List fieldMask) { @@ -773,7 +884,7 @@ public final Operation updateHealthCheck( .setHealthCheckResource(healthCheckResource) .addAllFieldMask(fieldMask) .build(); - return updateHealthCheck(request); + return updateHealthCheckAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -787,7 +898,7 @@ public final Operation updateHealthCheck( * ProjectGlobalHealthCheckName healthCheck = ProjectGlobalHealthCheckName.of("[PROJECT]", "[HEALTH_CHECK]"); * HealthCheck healthCheckResource = HealthCheck.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = healthCheckClient.updateHealthCheck(healthCheck.toString(), healthCheckResource, fieldMask); + * healthCheckClient.updateHealthCheckAsync(healthCheck.toString(), healthCheckResource, fieldMask).get(); * } * * @@ -801,8 +912,9 @@ public final Operation updateHealthCheck( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation updateHealthCheck( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateHealthCheckAsync( String healthCheck, HealthCheck healthCheckResource, List fieldMask) { UpdateHealthCheckHttpRequest request = @@ -811,7 +923,7 @@ public final Operation updateHealthCheck( .setHealthCheckResource(healthCheckResource) .addAllFieldMask(fieldMask) .build(); - return updateHealthCheck(request); + return updateHealthCheckAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -830,16 +942,46 @@ public final Operation updateHealthCheck( * .setHealthCheckResource(healthCheckResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = healthCheckClient.updateHealthCheck(request); + * healthCheckClient.updateHealthCheckAsync(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 */ - @BetaApi - public final Operation updateHealthCheck(UpdateHealthCheckHttpRequest request) { - return updateHealthCheckCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateHealthCheckAsync( + UpdateHealthCheckHttpRequest request) { + return updateHealthCheckOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Updates a HealthCheck resource in the specified project using the data included in the request. + * + *

Sample code: + * + *


+   * try (HealthCheckClient healthCheckClient = HealthCheckClient.create()) {
+   *   ProjectGlobalHealthCheckName healthCheck = ProjectGlobalHealthCheckName.of("[PROJECT]", "[HEALTH_CHECK]");
+   *   HealthCheck healthCheckResource = HealthCheck.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   UpdateHealthCheckHttpRequest request = UpdateHealthCheckHttpRequest.newBuilder()
+   *     .setHealthCheck(healthCheck.toString())
+   *     .setHealthCheckResource(healthCheckResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = healthCheckClient.updateHealthCheckOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + updateHealthCheckOperationCallable() { + return stub.updateHealthCheckOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -860,7 +1002,7 @@ public final Operation updateHealthCheck(UpdateHealthCheckHttpRequest request) { * .build(); * ApiFuture<Operation> future = healthCheckClient.updateHealthCheckCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/HealthCheckSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/HealthCheckSettings.java index f10e60d3cff0..9b53d4674629 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/HealthCheckSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/HealthCheckSettings.java @@ -21,10 +21,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -48,13 +50,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteHealthCheck to 30 seconds: + * example, to set the total timeout of getHealthCheck to 30 seconds: * *

  * 
  * HealthCheckSettings.Builder healthCheckSettingsBuilder =
  *     HealthCheckSettings.newBuilder();
- * healthCheckSettingsBuilder.deleteHealthCheckSettings().getRetrySettings().toBuilder()
+ * healthCheckSettingsBuilder.getHealthCheckSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * HealthCheckSettings healthCheckSettings = healthCheckSettingsBuilder.build();
  * 
@@ -68,6 +70,14 @@ public UnaryCallSettings deleteHealthCh
     return ((HealthCheckStubSettings) getStubSettings()).deleteHealthCheckSettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteHealthCheck. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteHealthCheckOperationSettings() {
+    return ((HealthCheckStubSettings) getStubSettings()).deleteHealthCheckOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getHealthCheck. */
   public UnaryCallSettings getHealthCheckSettings() {
     return ((HealthCheckStubSettings) getStubSettings()).getHealthCheckSettings();
@@ -78,6 +88,14 @@ public UnaryCallSettings insertHealthCh
     return ((HealthCheckStubSettings) getStubSettings()).insertHealthCheckSettings();
   }
 
+  /** Returns the object with the settings used for calls to insertHealthCheck. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertHealthCheckOperationSettings() {
+    return ((HealthCheckStubSettings) getStubSettings()).insertHealthCheckOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listHealthChecks. */
   public PagedCallSettings<
           ListHealthChecksHttpRequest, HealthCheckList, ListHealthChecksPagedResponse>
@@ -90,11 +108,27 @@ public UnaryCallSettings patchHealthChec
     return ((HealthCheckStubSettings) getStubSettings()).patchHealthCheckSettings();
   }
 
+  /** Returns the object with the settings used for calls to patchHealthCheck. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      patchHealthCheckOperationSettings() {
+    return ((HealthCheckStubSettings) getStubSettings()).patchHealthCheckOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to updateHealthCheck. */
   public UnaryCallSettings updateHealthCheckSettings() {
     return ((HealthCheckStubSettings) getStubSettings()).updateHealthCheckSettings();
   }
 
+  /** Returns the object with the settings used for calls to updateHealthCheck. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      updateHealthCheckOperationSettings() {
+    return ((HealthCheckStubSettings) getStubSettings()).updateHealthCheckOperationSettings();
+  }
+
   public static final HealthCheckSettings create(HealthCheckStubSettings stub) throws IOException {
     return new HealthCheckSettings.Builder(stub.toBuilder()).build();
   }
@@ -202,6 +236,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteHealthCheckSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteHealthCheck. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteHealthCheckOperationSettings() {
+      return getStubSettingsBuilder().deleteHealthCheckOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getHealthCheck. */
     public UnaryCallSettings.Builder
         getHealthCheckSettings() {
@@ -214,6 +256,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().insertHealthCheckSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertHealthCheck. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertHealthCheckOperationSettings() {
+      return getStubSettingsBuilder().insertHealthCheckOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listHealthChecks. */
     public PagedCallSettings.Builder<
             ListHealthChecksHttpRequest, HealthCheckList, ListHealthChecksPagedResponse>
@@ -227,12 +277,28 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().patchHealthCheckSettings();
     }
 
+    /** Returns the builder for the settings used for calls to patchHealthCheck. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchHealthCheckOperationSettings() {
+      return getStubSettingsBuilder().patchHealthCheckOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to updateHealthCheck. */
     public UnaryCallSettings.Builder
         updateHealthCheckSettings() {
       return getStubSettingsBuilder().updateHealthCheckSettings();
     }
 
+    /** Returns the builder for the settings used for calls to updateHealthCheck. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        updateHealthCheckOperationSettings() {
+      return getStubSettingsBuilder().updateHealthCheckOperationSettings();
+    }
+
     @Override
     public HealthCheckSettings build() throws IOException {
       return new HealthCheckSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/HttpHealthCheckClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/HttpHealthCheckClient.java
index dd2f1223f2f2..b514566de3e5 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/HttpHealthCheckClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/HttpHealthCheckClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.HttpHealthCheckStub;
@@ -43,7 +46,7 @@
  * 
  * try (HttpHealthCheckClient httpHealthCheckClient = HttpHealthCheckClient.create()) {
  *   ProjectGlobalHttpHealthCheckName httpHealthCheck = ProjectGlobalHttpHealthCheckName.of("[PROJECT]", "[HTTP_HEALTH_CHECK]");
- *   Operation response = httpHealthCheckClient.deleteHttpHealthCheck(httpHealthCheck);
+ *   HttpHealthCheck2 response = httpHealthCheckClient.getHttpHealthCheck(httpHealthCheck);
  * }
  * 
  * 
@@ -104,6 +107,7 @@ public class HttpHealthCheckClient implements BackgroundResource { private final HttpHealthCheckSettings settings; private final HttpHealthCheckStub stub; + private final GlobalOperationClient operationsClient; /** Constructs an instance of HttpHealthCheckClient with default settings. */ public static final HttpHealthCheckClient create() throws IOException { @@ -136,12 +140,14 @@ public static final HttpHealthCheckClient create(HttpHealthCheckStub stub) { protected HttpHealthCheckClient(HttpHealthCheckSettings settings) throws IOException { this.settings = settings; this.stub = ((HttpHealthCheckStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected HttpHealthCheckClient(HttpHealthCheckStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } public final HttpHealthCheckSettings getSettings() { @@ -153,6 +159,16 @@ public HttpHealthCheckStub getStub() { return stub; } + /** + * Returns the GlobalOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final GlobalOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Deletes the specified HttpHealthCheck resource. @@ -162,21 +178,23 @@ public HttpHealthCheckStub getStub() { *

    * try (HttpHealthCheckClient httpHealthCheckClient = HttpHealthCheckClient.create()) {
    *   ProjectGlobalHttpHealthCheckName httpHealthCheck = ProjectGlobalHttpHealthCheckName.of("[PROJECT]", "[HTTP_HEALTH_CHECK]");
-   *   Operation response = httpHealthCheckClient.deleteHttpHealthCheck(httpHealthCheck);
+   *   httpHealthCheckClient.deleteHttpHealthCheckAsync(httpHealthCheck).get();
    * }
    * 
* * @param httpHealthCheck Name of the HttpHealthCheck resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteHttpHealthCheck(ProjectGlobalHttpHealthCheckName httpHealthCheck) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteHttpHealthCheckAsync( + ProjectGlobalHttpHealthCheckName httpHealthCheck) { DeleteHttpHealthCheckHttpRequest request = DeleteHttpHealthCheckHttpRequest.newBuilder() .setHttpHealthCheck(httpHealthCheck == null ? null : httpHealthCheck.toString()) .build(); - return deleteHttpHealthCheck(request); + return deleteHttpHealthCheckAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -188,19 +206,21 @@ public final Operation deleteHttpHealthCheck(ProjectGlobalHttpHealthCheckName ht *

    * try (HttpHealthCheckClient httpHealthCheckClient = HttpHealthCheckClient.create()) {
    *   ProjectGlobalHttpHealthCheckName httpHealthCheck = ProjectGlobalHttpHealthCheckName.of("[PROJECT]", "[HTTP_HEALTH_CHECK]");
-   *   Operation response = httpHealthCheckClient.deleteHttpHealthCheck(httpHealthCheck.toString());
+   *   httpHealthCheckClient.deleteHttpHealthCheckAsync(httpHealthCheck.toString()).get();
    * }
    * 
* * @param httpHealthCheck Name of the HttpHealthCheck resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteHttpHealthCheck(String httpHealthCheck) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteHttpHealthCheckAsync( + String httpHealthCheck) { DeleteHttpHealthCheckHttpRequest request = DeleteHttpHealthCheckHttpRequest.newBuilder().setHttpHealthCheck(httpHealthCheck).build(); - return deleteHttpHealthCheck(request); + return deleteHttpHealthCheckAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -215,16 +235,42 @@ public final Operation deleteHttpHealthCheck(String httpHealthCheck) { * DeleteHttpHealthCheckHttpRequest request = DeleteHttpHealthCheckHttpRequest.newBuilder() * .setHttpHealthCheck(httpHealthCheck.toString()) * .build(); - * Operation response = httpHealthCheckClient.deleteHttpHealthCheck(request); + * httpHealthCheckClient.deleteHttpHealthCheckAsync(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 */ - @BetaApi - public final Operation deleteHttpHealthCheck(DeleteHttpHealthCheckHttpRequest request) { - return deleteHttpHealthCheckCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteHttpHealthCheckAsync( + DeleteHttpHealthCheckHttpRequest request) { + return deleteHttpHealthCheckOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified HttpHealthCheck resource. + * + *

Sample code: + * + *


+   * try (HttpHealthCheckClient httpHealthCheckClient = HttpHealthCheckClient.create()) {
+   *   ProjectGlobalHttpHealthCheckName httpHealthCheck = ProjectGlobalHttpHealthCheckName.of("[PROJECT]", "[HTTP_HEALTH_CHECK]");
+   *   DeleteHttpHealthCheckHttpRequest request = DeleteHttpHealthCheckHttpRequest.newBuilder()
+   *     .setHttpHealthCheck(httpHealthCheck.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = httpHealthCheckClient.deleteHttpHealthCheckOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteHttpHealthCheckOperationCallable() { + return stub.deleteHttpHealthCheckOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -241,7 +287,7 @@ public final Operation deleteHttpHealthCheck(DeleteHttpHealthCheckHttpRequest re * .build(); * ApiFuture<Operation> future = httpHealthCheckClient.deleteHttpHealthCheckCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -365,7 +411,7 @@ public final HttpHealthCheck2 getHttpHealthCheck(GetHttpHealthCheckHttpRequest r * try (HttpHealthCheckClient httpHealthCheckClient = HttpHealthCheckClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * HttpHealthCheck2 httpHealthCheckResource = HttpHealthCheck2.newBuilder().build(); - * Operation response = httpHealthCheckClient.insertHttpHealthCheck(project, httpHealthCheckResource); + * httpHealthCheckClient.insertHttpHealthCheckAsync(project, httpHealthCheckResource).get(); * } * * @@ -374,8 +420,9 @@ public final HttpHealthCheck2 getHttpHealthCheck(GetHttpHealthCheckHttpRequest r * for how individual instances should be checked for health, via HTTP. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertHttpHealthCheck( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertHttpHealthCheckAsync( ProjectName project, HttpHealthCheck2 httpHealthCheckResource) { InsertHttpHealthCheckHttpRequest request = @@ -383,7 +430,7 @@ public final Operation insertHttpHealthCheck( .setProject(project == null ? null : project.toString()) .setHttpHealthCheckResource(httpHealthCheckResource) .build(); - return insertHttpHealthCheck(request); + return insertHttpHealthCheckAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -397,7 +444,7 @@ public final Operation insertHttpHealthCheck( * try (HttpHealthCheckClient httpHealthCheckClient = HttpHealthCheckClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * HttpHealthCheck2 httpHealthCheckResource = HttpHealthCheck2.newBuilder().build(); - * Operation response = httpHealthCheckClient.insertHttpHealthCheck(project.toString(), httpHealthCheckResource); + * httpHealthCheckClient.insertHttpHealthCheckAsync(project.toString(), httpHealthCheckResource).get(); * } * * @@ -406,8 +453,9 @@ public final Operation insertHttpHealthCheck( * for how individual instances should be checked for health, via HTTP. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertHttpHealthCheck( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertHttpHealthCheckAsync( String project, HttpHealthCheck2 httpHealthCheckResource) { InsertHttpHealthCheckHttpRequest request = @@ -415,7 +463,7 @@ public final Operation insertHttpHealthCheck( .setProject(project) .setHttpHealthCheckResource(httpHealthCheckResource) .build(); - return insertHttpHealthCheck(request); + return insertHttpHealthCheckAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -433,16 +481,45 @@ public final Operation insertHttpHealthCheck( * .setProject(project.toString()) * .setHttpHealthCheckResource(httpHealthCheckResource) * .build(); - * Operation response = httpHealthCheckClient.insertHttpHealthCheck(request); + * httpHealthCheckClient.insertHttpHealthCheckAsync(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 */ - @BetaApi - public final Operation insertHttpHealthCheck(InsertHttpHealthCheckHttpRequest request) { - return insertHttpHealthCheckCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertHttpHealthCheckAsync( + InsertHttpHealthCheckHttpRequest request) { + return insertHttpHealthCheckOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a HttpHealthCheck resource in the specified project using the data included in the + * request. + * + *

Sample code: + * + *


+   * try (HttpHealthCheckClient httpHealthCheckClient = HttpHealthCheckClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   HttpHealthCheck2 httpHealthCheckResource = HttpHealthCheck2.newBuilder().build();
+   *   InsertHttpHealthCheckHttpRequest request = InsertHttpHealthCheckHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .setHttpHealthCheckResource(httpHealthCheckResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = httpHealthCheckClient.insertHttpHealthCheckOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertHttpHealthCheckOperationCallable() { + return stub.insertHttpHealthCheckOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -462,7 +539,7 @@ public final Operation insertHttpHealthCheck(InsertHttpHealthCheckHttpRequest re * .build(); * ApiFuture<Operation> future = httpHealthCheckClient.insertHttpHealthCheckCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -623,7 +700,7 @@ public final ListHttpHealthChecksPagedResponse listHttpHealthChecks( * ProjectGlobalHttpHealthCheckName httpHealthCheck = ProjectGlobalHttpHealthCheckName.of("[PROJECT]", "[HTTP_HEALTH_CHECK]"); * HttpHealthCheck2 httpHealthCheckResource = HttpHealthCheck2.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = httpHealthCheckClient.patchHttpHealthCheck(httpHealthCheck, httpHealthCheckResource, fieldMask); + * httpHealthCheckClient.patchHttpHealthCheckAsync(httpHealthCheck, httpHealthCheckResource, fieldMask).get(); * } * * @@ -636,8 +713,9 @@ public final ListHttpHealthChecksPagedResponse listHttpHealthChecks( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchHttpHealthCheck( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchHttpHealthCheckAsync( ProjectGlobalHttpHealthCheckName httpHealthCheck, HttpHealthCheck2 httpHealthCheckResource, List fieldMask) { @@ -648,7 +726,7 @@ public final Operation patchHttpHealthCheck( .setHttpHealthCheckResource(httpHealthCheckResource) .addAllFieldMask(fieldMask) .build(); - return patchHttpHealthCheck(request); + return patchHttpHealthCheckAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -664,7 +742,7 @@ public final Operation patchHttpHealthCheck( * ProjectGlobalHttpHealthCheckName httpHealthCheck = ProjectGlobalHttpHealthCheckName.of("[PROJECT]", "[HTTP_HEALTH_CHECK]"); * HttpHealthCheck2 httpHealthCheckResource = HttpHealthCheck2.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = httpHealthCheckClient.patchHttpHealthCheck(httpHealthCheck.toString(), httpHealthCheckResource, fieldMask); + * httpHealthCheckClient.patchHttpHealthCheckAsync(httpHealthCheck.toString(), httpHealthCheckResource, fieldMask).get(); * } * * @@ -677,8 +755,9 @@ public final Operation patchHttpHealthCheck( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchHttpHealthCheck( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchHttpHealthCheckAsync( String httpHealthCheck, HttpHealthCheck2 httpHealthCheckResource, List fieldMask) { PatchHttpHealthCheckHttpRequest request = @@ -687,7 +766,7 @@ public final Operation patchHttpHealthCheck( .setHttpHealthCheckResource(httpHealthCheckResource) .addAllFieldMask(fieldMask) .build(); - return patchHttpHealthCheck(request); + return patchHttpHealthCheckAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -708,16 +787,48 @@ public final Operation patchHttpHealthCheck( * .setHttpHealthCheckResource(httpHealthCheckResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = httpHealthCheckClient.patchHttpHealthCheck(request); + * httpHealthCheckClient.patchHttpHealthCheckAsync(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 */ - @BetaApi - public final Operation patchHttpHealthCheck(PatchHttpHealthCheckHttpRequest request) { - return patchHttpHealthCheckCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchHttpHealthCheckAsync( + PatchHttpHealthCheckHttpRequest request) { + return patchHttpHealthCheckOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Updates a HttpHealthCheck resource in the specified project using the data included in the + * request. This method supports PATCH semantics and uses the JSON merge patch format and + * processing rules. + * + *

Sample code: + * + *


+   * try (HttpHealthCheckClient httpHealthCheckClient = HttpHealthCheckClient.create()) {
+   *   ProjectGlobalHttpHealthCheckName httpHealthCheck = ProjectGlobalHttpHealthCheckName.of("[PROJECT]", "[HTTP_HEALTH_CHECK]");
+   *   HttpHealthCheck2 httpHealthCheckResource = HttpHealthCheck2.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   PatchHttpHealthCheckHttpRequest request = PatchHttpHealthCheckHttpRequest.newBuilder()
+   *     .setHttpHealthCheck(httpHealthCheck.toString())
+   *     .setHttpHealthCheckResource(httpHealthCheckResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = httpHealthCheckClient.patchHttpHealthCheckOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + patchHttpHealthCheckOperationCallable() { + return stub.patchHttpHealthCheckOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -740,7 +851,7 @@ public final Operation patchHttpHealthCheck(PatchHttpHealthCheckHttpRequest requ * .build(); * ApiFuture<Operation> future = httpHealthCheckClient.patchHttpHealthCheckCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -762,7 +873,7 @@ public final Operation patchHttpHealthCheck(PatchHttpHealthCheckHttpRequest requ * ProjectGlobalHttpHealthCheckName httpHealthCheck = ProjectGlobalHttpHealthCheckName.of("[PROJECT]", "[HTTP_HEALTH_CHECK]"); * HttpHealthCheck2 httpHealthCheckResource = HttpHealthCheck2.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = httpHealthCheckClient.updateHttpHealthCheck(httpHealthCheck, httpHealthCheckResource, fieldMask); + * httpHealthCheckClient.updateHttpHealthCheckAsync(httpHealthCheck, httpHealthCheckResource, fieldMask).get(); * } * * @@ -775,8 +886,9 @@ public final Operation patchHttpHealthCheck(PatchHttpHealthCheckHttpRequest requ * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation updateHttpHealthCheck( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateHttpHealthCheckAsync( ProjectGlobalHttpHealthCheckName httpHealthCheck, HttpHealthCheck2 httpHealthCheckResource, List fieldMask) { @@ -787,7 +899,7 @@ public final Operation updateHttpHealthCheck( .setHttpHealthCheckResource(httpHealthCheckResource) .addAllFieldMask(fieldMask) .build(); - return updateHttpHealthCheck(request); + return updateHttpHealthCheckAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -802,7 +914,7 @@ public final Operation updateHttpHealthCheck( * ProjectGlobalHttpHealthCheckName httpHealthCheck = ProjectGlobalHttpHealthCheckName.of("[PROJECT]", "[HTTP_HEALTH_CHECK]"); * HttpHealthCheck2 httpHealthCheckResource = HttpHealthCheck2.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = httpHealthCheckClient.updateHttpHealthCheck(httpHealthCheck.toString(), httpHealthCheckResource, fieldMask); + * httpHealthCheckClient.updateHttpHealthCheckAsync(httpHealthCheck.toString(), httpHealthCheckResource, fieldMask).get(); * } * * @@ -815,8 +927,9 @@ public final Operation updateHttpHealthCheck( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation updateHttpHealthCheck( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateHttpHealthCheckAsync( String httpHealthCheck, HttpHealthCheck2 httpHealthCheckResource, List fieldMask) { UpdateHttpHealthCheckHttpRequest request = @@ -825,7 +938,7 @@ public final Operation updateHttpHealthCheck( .setHttpHealthCheckResource(httpHealthCheckResource) .addAllFieldMask(fieldMask) .build(); - return updateHttpHealthCheck(request); + return updateHttpHealthCheckAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -845,16 +958,47 @@ public final Operation updateHttpHealthCheck( * .setHttpHealthCheckResource(httpHealthCheckResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = httpHealthCheckClient.updateHttpHealthCheck(request); + * httpHealthCheckClient.updateHttpHealthCheckAsync(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 */ - @BetaApi - public final Operation updateHttpHealthCheck(UpdateHttpHealthCheckHttpRequest request) { - return updateHttpHealthCheckCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateHttpHealthCheckAsync( + UpdateHttpHealthCheckHttpRequest request) { + return updateHttpHealthCheckOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Updates a HttpHealthCheck resource in the specified project using the data included in the + * request. + * + *

Sample code: + * + *


+   * try (HttpHealthCheckClient httpHealthCheckClient = HttpHealthCheckClient.create()) {
+   *   ProjectGlobalHttpHealthCheckName httpHealthCheck = ProjectGlobalHttpHealthCheckName.of("[PROJECT]", "[HTTP_HEALTH_CHECK]");
+   *   HttpHealthCheck2 httpHealthCheckResource = HttpHealthCheck2.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   UpdateHttpHealthCheckHttpRequest request = UpdateHttpHealthCheckHttpRequest.newBuilder()
+   *     .setHttpHealthCheck(httpHealthCheck.toString())
+   *     .setHttpHealthCheckResource(httpHealthCheckResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = httpHealthCheckClient.updateHttpHealthCheckOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + updateHttpHealthCheckOperationCallable() { + return stub.updateHttpHealthCheckOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -876,7 +1020,7 @@ public final Operation updateHttpHealthCheck(UpdateHttpHealthCheckHttpRequest re * .build(); * ApiFuture<Operation> future = httpHealthCheckClient.updateHttpHealthCheckCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/HttpHealthCheckSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/HttpHealthCheckSettings.java index f352d44fd012..d3c72cd9e928 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/HttpHealthCheckSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/HttpHealthCheckSettings.java @@ -21,10 +21,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -48,13 +50,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteHttpHealthCheck to 30 seconds: + * example, to set the total timeout of getHttpHealthCheck to 30 seconds: * *

  * 
  * HttpHealthCheckSettings.Builder httpHealthCheckSettingsBuilder =
  *     HttpHealthCheckSettings.newBuilder();
- * httpHealthCheckSettingsBuilder.deleteHttpHealthCheckSettings().getRetrySettings().toBuilder()
+ * httpHealthCheckSettingsBuilder.getHttpHealthCheckSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * HttpHealthCheckSettings httpHealthCheckSettings = httpHealthCheckSettingsBuilder.build();
  * 
@@ -69,6 +71,15 @@ public class HttpHealthCheckSettings extends ClientSettings
+      deleteHttpHealthCheckOperationSettings() {
+    return ((HttpHealthCheckStubSettings) getStubSettings())
+        .deleteHttpHealthCheckOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getHttpHealthCheck. */
   public UnaryCallSettings
       getHttpHealthCheckSettings() {
@@ -81,6 +92,15 @@ public class HttpHealthCheckSettings extends ClientSettings
+      insertHttpHealthCheckOperationSettings() {
+    return ((HttpHealthCheckStubSettings) getStubSettings())
+        .insertHttpHealthCheckOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listHttpHealthChecks. */
   public PagedCallSettings<
           ListHttpHealthChecksHttpRequest, HttpHealthCheckList, ListHttpHealthChecksPagedResponse>
@@ -94,12 +114,30 @@ public class HttpHealthCheckSettings extends ClientSettings
+      patchHttpHealthCheckOperationSettings() {
+    return ((HttpHealthCheckStubSettings) getStubSettings())
+        .patchHttpHealthCheckOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to updateHttpHealthCheck. */
   public UnaryCallSettings
       updateHttpHealthCheckSettings() {
     return ((HttpHealthCheckStubSettings) getStubSettings()).updateHttpHealthCheckSettings();
   }
 
+  /** Returns the object with the settings used for calls to updateHttpHealthCheck. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      updateHttpHealthCheckOperationSettings() {
+    return ((HttpHealthCheckStubSettings) getStubSettings())
+        .updateHttpHealthCheckOperationSettings();
+  }
+
   public static final HttpHealthCheckSettings create(HttpHealthCheckStubSettings stub)
       throws IOException {
     return new HttpHealthCheckSettings.Builder(stub.toBuilder()).build();
@@ -208,6 +246,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteHttpHealthCheckSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteHttpHealthCheck. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteHttpHealthCheckOperationSettings() {
+      return getStubSettingsBuilder().deleteHttpHealthCheckOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getHttpHealthCheck. */
     public UnaryCallSettings.Builder
         getHttpHealthCheckSettings() {
@@ -220,6 +266,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().insertHttpHealthCheckSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertHttpHealthCheck. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertHttpHealthCheckOperationSettings() {
+      return getStubSettingsBuilder().insertHttpHealthCheckOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listHttpHealthChecks. */
     public PagedCallSettings.Builder<
             ListHttpHealthChecksHttpRequest, HttpHealthCheckList, ListHttpHealthChecksPagedResponse>
@@ -233,12 +287,28 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().patchHttpHealthCheckSettings();
     }
 
+    /** Returns the builder for the settings used for calls to patchHttpHealthCheck. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchHttpHealthCheckOperationSettings() {
+      return getStubSettingsBuilder().patchHttpHealthCheckOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to updateHttpHealthCheck. */
     public UnaryCallSettings.Builder
         updateHttpHealthCheckSettings() {
       return getStubSettingsBuilder().updateHttpHealthCheckSettings();
     }
 
+    /** Returns the builder for the settings used for calls to updateHttpHealthCheck. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        updateHttpHealthCheckOperationSettings() {
+      return getStubSettingsBuilder().updateHttpHealthCheckOperationSettings();
+    }
+
     @Override
     public HttpHealthCheckSettings build() throws IOException {
       return new HttpHealthCheckSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/HttpsHealthCheckClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/HttpsHealthCheckClient.java
index 7fcf330f460b..ed2f564546eb 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/HttpsHealthCheckClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/HttpsHealthCheckClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.HttpsHealthCheckStub;
@@ -43,7 +46,7 @@
  * 
  * try (HttpsHealthCheckClient httpsHealthCheckClient = HttpsHealthCheckClient.create()) {
  *   ProjectGlobalHttpsHealthCheckName httpsHealthCheck = ProjectGlobalHttpsHealthCheckName.of("[PROJECT]", "[HTTPS_HEALTH_CHECK]");
- *   Operation response = httpsHealthCheckClient.deleteHttpsHealthCheck(httpsHealthCheck);
+ *   HttpsHealthCheck2 response = httpsHealthCheckClient.getHttpsHealthCheck(httpsHealthCheck);
  * }
  * 
  * 
@@ -104,6 +107,7 @@ public class HttpsHealthCheckClient implements BackgroundResource { private final HttpsHealthCheckSettings settings; private final HttpsHealthCheckStub stub; + private final GlobalOperationClient operationsClient; /** Constructs an instance of HttpsHealthCheckClient with default settings. */ public static final HttpsHealthCheckClient create() throws IOException { @@ -136,12 +140,14 @@ public static final HttpsHealthCheckClient create(HttpsHealthCheckStub stub) { protected HttpsHealthCheckClient(HttpsHealthCheckSettings settings) throws IOException { this.settings = settings; this.stub = ((HttpsHealthCheckStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected HttpsHealthCheckClient(HttpsHealthCheckStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } public final HttpsHealthCheckSettings getSettings() { @@ -153,6 +159,16 @@ public HttpsHealthCheckStub getStub() { return stub; } + /** + * Returns the GlobalOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final GlobalOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Deletes the specified HttpsHealthCheck resource. @@ -162,22 +178,23 @@ public HttpsHealthCheckStub getStub() { *

    * try (HttpsHealthCheckClient httpsHealthCheckClient = HttpsHealthCheckClient.create()) {
    *   ProjectGlobalHttpsHealthCheckName httpsHealthCheck = ProjectGlobalHttpsHealthCheckName.of("[PROJECT]", "[HTTPS_HEALTH_CHECK]");
-   *   Operation response = httpsHealthCheckClient.deleteHttpsHealthCheck(httpsHealthCheck);
+   *   httpsHealthCheckClient.deleteHttpsHealthCheckAsync(httpsHealthCheck).get();
    * }
    * 
* * @param httpsHealthCheck Name of the HttpsHealthCheck resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteHttpsHealthCheck( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteHttpsHealthCheckAsync( ProjectGlobalHttpsHealthCheckName httpsHealthCheck) { DeleteHttpsHealthCheckHttpRequest request = DeleteHttpsHealthCheckHttpRequest.newBuilder() .setHttpsHealthCheck(httpsHealthCheck == null ? null : httpsHealthCheck.toString()) .build(); - return deleteHttpsHealthCheck(request); + return deleteHttpsHealthCheckAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -189,21 +206,23 @@ public final Operation deleteHttpsHealthCheck( *

    * try (HttpsHealthCheckClient httpsHealthCheckClient = HttpsHealthCheckClient.create()) {
    *   ProjectGlobalHttpsHealthCheckName httpsHealthCheck = ProjectGlobalHttpsHealthCheckName.of("[PROJECT]", "[HTTPS_HEALTH_CHECK]");
-   *   Operation response = httpsHealthCheckClient.deleteHttpsHealthCheck(httpsHealthCheck.toString());
+   *   httpsHealthCheckClient.deleteHttpsHealthCheckAsync(httpsHealthCheck.toString()).get();
    * }
    * 
* * @param httpsHealthCheck Name of the HttpsHealthCheck resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteHttpsHealthCheck(String httpsHealthCheck) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteHttpsHealthCheckAsync( + String httpsHealthCheck) { DeleteHttpsHealthCheckHttpRequest request = DeleteHttpsHealthCheckHttpRequest.newBuilder() .setHttpsHealthCheck(httpsHealthCheck) .build(); - return deleteHttpsHealthCheck(request); + return deleteHttpsHealthCheckAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -218,16 +237,42 @@ public final Operation deleteHttpsHealthCheck(String httpsHealthCheck) { * DeleteHttpsHealthCheckHttpRequest request = DeleteHttpsHealthCheckHttpRequest.newBuilder() * .setHttpsHealthCheck(httpsHealthCheck.toString()) * .build(); - * Operation response = httpsHealthCheckClient.deleteHttpsHealthCheck(request); + * httpsHealthCheckClient.deleteHttpsHealthCheckAsync(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 */ - @BetaApi - public final Operation deleteHttpsHealthCheck(DeleteHttpsHealthCheckHttpRequest request) { - return deleteHttpsHealthCheckCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteHttpsHealthCheckAsync( + DeleteHttpsHealthCheckHttpRequest request) { + return deleteHttpsHealthCheckOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified HttpsHealthCheck resource. + * + *

Sample code: + * + *


+   * try (HttpsHealthCheckClient httpsHealthCheckClient = HttpsHealthCheckClient.create()) {
+   *   ProjectGlobalHttpsHealthCheckName httpsHealthCheck = ProjectGlobalHttpsHealthCheckName.of("[PROJECT]", "[HTTPS_HEALTH_CHECK]");
+   *   DeleteHttpsHealthCheckHttpRequest request = DeleteHttpsHealthCheckHttpRequest.newBuilder()
+   *     .setHttpsHealthCheck(httpsHealthCheck.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = httpsHealthCheckClient.deleteHttpsHealthCheckOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteHttpsHealthCheckOperationCallable() { + return stub.deleteHttpsHealthCheckOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -244,7 +289,7 @@ public final Operation deleteHttpsHealthCheck(DeleteHttpsHealthCheckHttpRequest * .build(); * ApiFuture<Operation> future = httpsHealthCheckClient.deleteHttpsHealthCheckCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -368,7 +413,7 @@ public final HttpsHealthCheck2 getHttpsHealthCheck(GetHttpsHealthCheckHttpReques * try (HttpsHealthCheckClient httpsHealthCheckClient = HttpsHealthCheckClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * HttpsHealthCheck2 httpsHealthCheckResource = HttpsHealthCheck2.newBuilder().build(); - * Operation response = httpsHealthCheckClient.insertHttpsHealthCheck(project, httpsHealthCheckResource); + * httpsHealthCheckClient.insertHttpsHealthCheckAsync(project, httpsHealthCheckResource).get(); * } * * @@ -377,8 +422,9 @@ public final HttpsHealthCheck2 getHttpsHealthCheck(GetHttpsHealthCheckHttpReques * for how individual instances should be checked for health, via HTTPS. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertHttpsHealthCheck( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertHttpsHealthCheckAsync( ProjectName project, HttpsHealthCheck2 httpsHealthCheckResource) { InsertHttpsHealthCheckHttpRequest request = @@ -386,7 +432,7 @@ public final Operation insertHttpsHealthCheck( .setProject(project == null ? null : project.toString()) .setHttpsHealthCheckResource(httpsHealthCheckResource) .build(); - return insertHttpsHealthCheck(request); + return insertHttpsHealthCheckAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -400,7 +446,7 @@ public final Operation insertHttpsHealthCheck( * try (HttpsHealthCheckClient httpsHealthCheckClient = HttpsHealthCheckClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * HttpsHealthCheck2 httpsHealthCheckResource = HttpsHealthCheck2.newBuilder().build(); - * Operation response = httpsHealthCheckClient.insertHttpsHealthCheck(project.toString(), httpsHealthCheckResource); + * httpsHealthCheckClient.insertHttpsHealthCheckAsync(project.toString(), httpsHealthCheckResource).get(); * } * * @@ -409,8 +455,9 @@ public final Operation insertHttpsHealthCheck( * for how individual instances should be checked for health, via HTTPS. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertHttpsHealthCheck( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertHttpsHealthCheckAsync( String project, HttpsHealthCheck2 httpsHealthCheckResource) { InsertHttpsHealthCheckHttpRequest request = @@ -418,7 +465,7 @@ public final Operation insertHttpsHealthCheck( .setProject(project) .setHttpsHealthCheckResource(httpsHealthCheckResource) .build(); - return insertHttpsHealthCheck(request); + return insertHttpsHealthCheckAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -436,16 +483,45 @@ public final Operation insertHttpsHealthCheck( * .setProject(project.toString()) * .setHttpsHealthCheckResource(httpsHealthCheckResource) * .build(); - * Operation response = httpsHealthCheckClient.insertHttpsHealthCheck(request); + * httpsHealthCheckClient.insertHttpsHealthCheckAsync(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 */ - @BetaApi - public final Operation insertHttpsHealthCheck(InsertHttpsHealthCheckHttpRequest request) { - return insertHttpsHealthCheckCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertHttpsHealthCheckAsync( + InsertHttpsHealthCheckHttpRequest request) { + return insertHttpsHealthCheckOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a HttpsHealthCheck resource in the specified project using the data included in the + * request. + * + *

Sample code: + * + *


+   * try (HttpsHealthCheckClient httpsHealthCheckClient = HttpsHealthCheckClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   HttpsHealthCheck2 httpsHealthCheckResource = HttpsHealthCheck2.newBuilder().build();
+   *   InsertHttpsHealthCheckHttpRequest request = InsertHttpsHealthCheckHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .setHttpsHealthCheckResource(httpsHealthCheckResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = httpsHealthCheckClient.insertHttpsHealthCheckOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertHttpsHealthCheckOperationCallable() { + return stub.insertHttpsHealthCheckOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -465,7 +541,7 @@ public final Operation insertHttpsHealthCheck(InsertHttpsHealthCheckHttpRequest * .build(); * ApiFuture<Operation> future = httpsHealthCheckClient.insertHttpsHealthCheckCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -626,7 +702,7 @@ public final ListHttpsHealthChecksPagedResponse listHttpsHealthChecks( * ProjectGlobalHttpsHealthCheckName httpsHealthCheck = ProjectGlobalHttpsHealthCheckName.of("[PROJECT]", "[HTTPS_HEALTH_CHECK]"); * HttpsHealthCheck2 httpsHealthCheckResource = HttpsHealthCheck2.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = httpsHealthCheckClient.patchHttpsHealthCheck(httpsHealthCheck, httpsHealthCheckResource, fieldMask); + * httpsHealthCheckClient.patchHttpsHealthCheckAsync(httpsHealthCheck, httpsHealthCheckResource, fieldMask).get(); * } * * @@ -639,8 +715,9 @@ public final ListHttpsHealthChecksPagedResponse listHttpsHealthChecks( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchHttpsHealthCheck( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchHttpsHealthCheckAsync( ProjectGlobalHttpsHealthCheckName httpsHealthCheck, HttpsHealthCheck2 httpsHealthCheckResource, List fieldMask) { @@ -651,7 +728,7 @@ public final Operation patchHttpsHealthCheck( .setHttpsHealthCheckResource(httpsHealthCheckResource) .addAllFieldMask(fieldMask) .build(); - return patchHttpsHealthCheck(request); + return patchHttpsHealthCheckAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -667,7 +744,7 @@ public final Operation patchHttpsHealthCheck( * ProjectGlobalHttpsHealthCheckName httpsHealthCheck = ProjectGlobalHttpsHealthCheckName.of("[PROJECT]", "[HTTPS_HEALTH_CHECK]"); * HttpsHealthCheck2 httpsHealthCheckResource = HttpsHealthCheck2.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = httpsHealthCheckClient.patchHttpsHealthCheck(httpsHealthCheck.toString(), httpsHealthCheckResource, fieldMask); + * httpsHealthCheckClient.patchHttpsHealthCheckAsync(httpsHealthCheck.toString(), httpsHealthCheckResource, fieldMask).get(); * } * * @@ -680,8 +757,9 @@ public final Operation patchHttpsHealthCheck( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchHttpsHealthCheck( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchHttpsHealthCheckAsync( String httpsHealthCheck, HttpsHealthCheck2 httpsHealthCheckResource, List fieldMask) { PatchHttpsHealthCheckHttpRequest request = @@ -690,7 +768,7 @@ public final Operation patchHttpsHealthCheck( .setHttpsHealthCheckResource(httpsHealthCheckResource) .addAllFieldMask(fieldMask) .build(); - return patchHttpsHealthCheck(request); + return patchHttpsHealthCheckAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -711,16 +789,48 @@ public final Operation patchHttpsHealthCheck( * .setHttpsHealthCheckResource(httpsHealthCheckResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = httpsHealthCheckClient.patchHttpsHealthCheck(request); + * httpsHealthCheckClient.patchHttpsHealthCheckAsync(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 */ - @BetaApi - public final Operation patchHttpsHealthCheck(PatchHttpsHealthCheckHttpRequest request) { - return patchHttpsHealthCheckCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchHttpsHealthCheckAsync( + PatchHttpsHealthCheckHttpRequest request) { + return patchHttpsHealthCheckOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Updates a HttpsHealthCheck resource in the specified project using the data included in the + * request. This method supports PATCH semantics and uses the JSON merge patch format and + * processing rules. + * + *

Sample code: + * + *


+   * try (HttpsHealthCheckClient httpsHealthCheckClient = HttpsHealthCheckClient.create()) {
+   *   ProjectGlobalHttpsHealthCheckName httpsHealthCheck = ProjectGlobalHttpsHealthCheckName.of("[PROJECT]", "[HTTPS_HEALTH_CHECK]");
+   *   HttpsHealthCheck2 httpsHealthCheckResource = HttpsHealthCheck2.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   PatchHttpsHealthCheckHttpRequest request = PatchHttpsHealthCheckHttpRequest.newBuilder()
+   *     .setHttpsHealthCheck(httpsHealthCheck.toString())
+   *     .setHttpsHealthCheckResource(httpsHealthCheckResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = httpsHealthCheckClient.patchHttpsHealthCheckOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + patchHttpsHealthCheckOperationCallable() { + return stub.patchHttpsHealthCheckOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -743,7 +853,7 @@ public final Operation patchHttpsHealthCheck(PatchHttpsHealthCheckHttpRequest re * .build(); * ApiFuture<Operation> future = httpsHealthCheckClient.patchHttpsHealthCheckCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -765,7 +875,7 @@ public final Operation patchHttpsHealthCheck(PatchHttpsHealthCheckHttpRequest re * ProjectGlobalHttpsHealthCheckName httpsHealthCheck = ProjectGlobalHttpsHealthCheckName.of("[PROJECT]", "[HTTPS_HEALTH_CHECK]"); * HttpsHealthCheck2 httpsHealthCheckResource = HttpsHealthCheck2.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = httpsHealthCheckClient.updateHttpsHealthCheck(httpsHealthCheck, httpsHealthCheckResource, fieldMask); + * httpsHealthCheckClient.updateHttpsHealthCheckAsync(httpsHealthCheck, httpsHealthCheckResource, fieldMask).get(); * } * * @@ -778,8 +888,9 @@ public final Operation patchHttpsHealthCheck(PatchHttpsHealthCheckHttpRequest re * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation updateHttpsHealthCheck( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateHttpsHealthCheckAsync( ProjectGlobalHttpsHealthCheckName httpsHealthCheck, HttpsHealthCheck2 httpsHealthCheckResource, List fieldMask) { @@ -790,7 +901,7 @@ public final Operation updateHttpsHealthCheck( .setHttpsHealthCheckResource(httpsHealthCheckResource) .addAllFieldMask(fieldMask) .build(); - return updateHttpsHealthCheck(request); + return updateHttpsHealthCheckAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -805,7 +916,7 @@ public final Operation updateHttpsHealthCheck( * ProjectGlobalHttpsHealthCheckName httpsHealthCheck = ProjectGlobalHttpsHealthCheckName.of("[PROJECT]", "[HTTPS_HEALTH_CHECK]"); * HttpsHealthCheck2 httpsHealthCheckResource = HttpsHealthCheck2.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = httpsHealthCheckClient.updateHttpsHealthCheck(httpsHealthCheck.toString(), httpsHealthCheckResource, fieldMask); + * httpsHealthCheckClient.updateHttpsHealthCheckAsync(httpsHealthCheck.toString(), httpsHealthCheckResource, fieldMask).get(); * } * * @@ -818,8 +929,9 @@ public final Operation updateHttpsHealthCheck( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation updateHttpsHealthCheck( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateHttpsHealthCheckAsync( String httpsHealthCheck, HttpsHealthCheck2 httpsHealthCheckResource, List fieldMask) { UpdateHttpsHealthCheckHttpRequest request = @@ -828,7 +940,7 @@ public final Operation updateHttpsHealthCheck( .setHttpsHealthCheckResource(httpsHealthCheckResource) .addAllFieldMask(fieldMask) .build(); - return updateHttpsHealthCheck(request); + return updateHttpsHealthCheckAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -848,16 +960,47 @@ public final Operation updateHttpsHealthCheck( * .setHttpsHealthCheckResource(httpsHealthCheckResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = httpsHealthCheckClient.updateHttpsHealthCheck(request); + * httpsHealthCheckClient.updateHttpsHealthCheckAsync(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 */ - @BetaApi - public final Operation updateHttpsHealthCheck(UpdateHttpsHealthCheckHttpRequest request) { - return updateHttpsHealthCheckCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateHttpsHealthCheckAsync( + UpdateHttpsHealthCheckHttpRequest request) { + return updateHttpsHealthCheckOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Updates a HttpsHealthCheck resource in the specified project using the data included in the + * request. + * + *

Sample code: + * + *


+   * try (HttpsHealthCheckClient httpsHealthCheckClient = HttpsHealthCheckClient.create()) {
+   *   ProjectGlobalHttpsHealthCheckName httpsHealthCheck = ProjectGlobalHttpsHealthCheckName.of("[PROJECT]", "[HTTPS_HEALTH_CHECK]");
+   *   HttpsHealthCheck2 httpsHealthCheckResource = HttpsHealthCheck2.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   UpdateHttpsHealthCheckHttpRequest request = UpdateHttpsHealthCheckHttpRequest.newBuilder()
+   *     .setHttpsHealthCheck(httpsHealthCheck.toString())
+   *     .setHttpsHealthCheckResource(httpsHealthCheckResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = httpsHealthCheckClient.updateHttpsHealthCheckOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + updateHttpsHealthCheckOperationCallable() { + return stub.updateHttpsHealthCheckOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -879,7 +1022,7 @@ public final Operation updateHttpsHealthCheck(UpdateHttpsHealthCheckHttpRequest * .build(); * ApiFuture<Operation> future = httpsHealthCheckClient.updateHttpsHealthCheckCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/HttpsHealthCheckSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/HttpsHealthCheckSettings.java index 9451ef907783..2990b4ab6402 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/HttpsHealthCheckSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/HttpsHealthCheckSettings.java @@ -21,10 +21,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -48,13 +50,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteHttpsHealthCheck to 30 seconds: + * example, to set the total timeout of getHttpsHealthCheck to 30 seconds: * *

  * 
  * HttpsHealthCheckSettings.Builder httpsHealthCheckSettingsBuilder =
  *     HttpsHealthCheckSettings.newBuilder();
- * httpsHealthCheckSettingsBuilder.deleteHttpsHealthCheckSettings().getRetrySettings().toBuilder()
+ * httpsHealthCheckSettingsBuilder.getHttpsHealthCheckSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * HttpsHealthCheckSettings httpsHealthCheckSettings = httpsHealthCheckSettingsBuilder.build();
  * 
@@ -69,6 +71,15 @@ public class HttpsHealthCheckSettings extends ClientSettings
+      deleteHttpsHealthCheckOperationSettings() {
+    return ((HttpsHealthCheckStubSettings) getStubSettings())
+        .deleteHttpsHealthCheckOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getHttpsHealthCheck. */
   public UnaryCallSettings
       getHttpsHealthCheckSettings() {
@@ -81,6 +92,15 @@ public class HttpsHealthCheckSettings extends ClientSettings
+      insertHttpsHealthCheckOperationSettings() {
+    return ((HttpsHealthCheckStubSettings) getStubSettings())
+        .insertHttpsHealthCheckOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listHttpsHealthChecks. */
   public PagedCallSettings<
           ListHttpsHealthChecksHttpRequest,
@@ -96,12 +116,30 @@ public class HttpsHealthCheckSettings extends ClientSettings
+      patchHttpsHealthCheckOperationSettings() {
+    return ((HttpsHealthCheckStubSettings) getStubSettings())
+        .patchHttpsHealthCheckOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to updateHttpsHealthCheck. */
   public UnaryCallSettings
       updateHttpsHealthCheckSettings() {
     return ((HttpsHealthCheckStubSettings) getStubSettings()).updateHttpsHealthCheckSettings();
   }
 
+  /** Returns the object with the settings used for calls to updateHttpsHealthCheck. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      updateHttpsHealthCheckOperationSettings() {
+    return ((HttpsHealthCheckStubSettings) getStubSettings())
+        .updateHttpsHealthCheckOperationSettings();
+  }
+
   public static final HttpsHealthCheckSettings create(HttpsHealthCheckStubSettings stub)
       throws IOException {
     return new HttpsHealthCheckSettings.Builder(stub.toBuilder()).build();
@@ -210,6 +248,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteHttpsHealthCheckSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteHttpsHealthCheck. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteHttpsHealthCheckOperationSettings() {
+      return getStubSettingsBuilder().deleteHttpsHealthCheckOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getHttpsHealthCheck. */
     public UnaryCallSettings.Builder
         getHttpsHealthCheckSettings() {
@@ -222,6 +268,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().insertHttpsHealthCheckSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertHttpsHealthCheck. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertHttpsHealthCheckOperationSettings() {
+      return getStubSettingsBuilder().insertHttpsHealthCheckOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listHttpsHealthChecks. */
     public PagedCallSettings.Builder<
             ListHttpsHealthChecksHttpRequest,
@@ -237,12 +291,28 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().patchHttpsHealthCheckSettings();
     }
 
+    /** Returns the builder for the settings used for calls to patchHttpsHealthCheck. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchHttpsHealthCheckOperationSettings() {
+      return getStubSettingsBuilder().patchHttpsHealthCheckOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to updateHttpsHealthCheck. */
     public UnaryCallSettings.Builder
         updateHttpsHealthCheckSettings() {
       return getStubSettingsBuilder().updateHttpsHealthCheckSettings();
     }
 
+    /** Returns the builder for the settings used for calls to updateHttpsHealthCheck. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        updateHttpsHealthCheckOperationSettings() {
+      return getStubSettingsBuilder().updateHttpsHealthCheckOperationSettings();
+    }
+
     @Override
     public HttpsHealthCheckSettings build() throws IOException {
       return new HttpsHealthCheckSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ImageClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ImageClient.java
index cdef2a1d21b7..24a5f90c5231 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ImageClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ImageClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.ImageStub;
@@ -43,7 +46,7 @@
  * 
  * try (ImageClient imageClient = ImageClient.create()) {
  *   ProjectGlobalImageName image = ProjectGlobalImageName.of("[PROJECT]", "[IMAGE]");
- *   Operation response = imageClient.deleteImage(image);
+ *   Image response = imageClient.getImage(image);
  * }
  * 
  * 
@@ -103,6 +106,7 @@ public class ImageClient implements BackgroundResource { private final ImageSettings settings; private final ImageStub stub; + private final GlobalOperationClient operationsClient; /** Constructs an instance of ImageClient with default settings. */ public static final ImageClient create() throws IOException { @@ -133,12 +137,14 @@ public static final ImageClient create(ImageStub stub) { protected ImageClient(ImageSettings settings) throws IOException { this.settings = settings; this.stub = ((ImageStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected ImageClient(ImageStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } public final ImageSettings getSettings() { @@ -150,6 +156,16 @@ public ImageStub getStub() { return stub; } + /** + * Returns the GlobalOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final GlobalOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Deletes the specified image. @@ -159,21 +175,23 @@ public ImageStub getStub() { *

    * try (ImageClient imageClient = ImageClient.create()) {
    *   ProjectGlobalImageName image = ProjectGlobalImageName.of("[PROJECT]", "[IMAGE]");
-   *   Operation response = imageClient.deleteImage(image);
+   *   imageClient.deleteImageAsync(image).get();
    * }
    * 
* * @param image Name of the image resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteImage(ProjectGlobalImageName image) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteImageAsync( + ProjectGlobalImageName image) { DeleteImageHttpRequest request = DeleteImageHttpRequest.newBuilder() .setImage(image == null ? null : image.toString()) .build(); - return deleteImage(request); + return deleteImageAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -185,18 +203,19 @@ public final Operation deleteImage(ProjectGlobalImageName image) { *

    * try (ImageClient imageClient = ImageClient.create()) {
    *   ProjectGlobalImageName image = ProjectGlobalImageName.of("[PROJECT]", "[IMAGE]");
-   *   Operation response = imageClient.deleteImage(image.toString());
+   *   imageClient.deleteImageAsync(image.toString()).get();
    * }
    * 
* * @param image Name of the image resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteImage(String image) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteImageAsync(String image) { DeleteImageHttpRequest request = DeleteImageHttpRequest.newBuilder().setImage(image).build(); - return deleteImage(request); + return deleteImageAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -211,16 +230,42 @@ public final Operation deleteImage(String image) { * DeleteImageHttpRequest request = DeleteImageHttpRequest.newBuilder() * .setImage(image.toString()) * .build(); - * Operation response = imageClient.deleteImage(request); + * imageClient.deleteImageAsync(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 */ - @BetaApi - public final Operation deleteImage(DeleteImageHttpRequest request) { - return deleteImageCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteImageAsync( + DeleteImageHttpRequest request) { + return deleteImageOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified image. + * + *

Sample code: + * + *


+   * try (ImageClient imageClient = ImageClient.create()) {
+   *   ProjectGlobalImageName image = ProjectGlobalImageName.of("[PROJECT]", "[IMAGE]");
+   *   DeleteImageHttpRequest request = DeleteImageHttpRequest.newBuilder()
+   *     .setImage(image.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = imageClient.deleteImageOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteImageOperationCallable() { + return stub.deleteImageOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -237,7 +282,7 @@ public final Operation deleteImage(DeleteImageHttpRequest request) { * .build(); * ApiFuture<Operation> future = imageClient.deleteImageCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -258,7 +303,7 @@ public final UnaryCallable deleteImageCallabl * try (ImageClient imageClient = ImageClient.create()) { * ProjectGlobalImageName image = ProjectGlobalImageName.of("[PROJECT]", "[IMAGE]"); * DeprecationStatus deprecationStatusResource = DeprecationStatus.newBuilder().build(); - * Operation response = imageClient.deprecateImage(image, deprecationStatusResource); + * imageClient.deprecateImageAsync(image, deprecationStatusResource).get(); * } * * @@ -266,8 +311,9 @@ public final UnaryCallable deleteImageCallabl * @param deprecationStatusResource Deprecation status for a public resource. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deprecateImage( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deprecateImageAsync( ProjectGlobalImageName image, DeprecationStatus deprecationStatusResource) { DeprecateImageHttpRequest request = @@ -275,7 +321,7 @@ public final Operation deprecateImage( .setImage(image == null ? null : image.toString()) .setDeprecationStatusResource(deprecationStatusResource) .build(); - return deprecateImage(request); + return deprecateImageAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -290,7 +336,7 @@ public final Operation deprecateImage( * try (ImageClient imageClient = ImageClient.create()) { * ProjectGlobalImageName image = ProjectGlobalImageName.of("[PROJECT]", "[IMAGE]"); * DeprecationStatus deprecationStatusResource = DeprecationStatus.newBuilder().build(); - * Operation response = imageClient.deprecateImage(image.toString(), deprecationStatusResource); + * imageClient.deprecateImageAsync(image.toString(), deprecationStatusResource).get(); * } * * @@ -298,15 +344,17 @@ public final Operation deprecateImage( * @param deprecationStatusResource Deprecation status for a public resource. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deprecateImage(String image, DeprecationStatus deprecationStatusResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deprecateImageAsync( + String image, DeprecationStatus deprecationStatusResource) { DeprecateImageHttpRequest request = DeprecateImageHttpRequest.newBuilder() .setImage(image) .setDeprecationStatusResource(deprecationStatusResource) .build(); - return deprecateImage(request); + return deprecateImageAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -325,16 +373,46 @@ public final Operation deprecateImage(String image, DeprecationStatus deprecatio * .setImage(image.toString()) * .setDeprecationStatusResource(deprecationStatusResource) * .build(); - * Operation response = imageClient.deprecateImage(request); + * imageClient.deprecateImageAsync(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 */ - @BetaApi - public final Operation deprecateImage(DeprecateImageHttpRequest request) { - return deprecateImageCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deprecateImageAsync( + DeprecateImageHttpRequest request) { + return deprecateImageOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Sets the deprecation status of an image. + * + *

If an empty request body is given, clears the deprecation status instead. + * + *

Sample code: + * + *


+   * try (ImageClient imageClient = ImageClient.create()) {
+   *   ProjectGlobalImageName image = ProjectGlobalImageName.of("[PROJECT]", "[IMAGE]");
+   *   DeprecationStatus deprecationStatusResource = DeprecationStatus.newBuilder().build();
+   *   DeprecateImageHttpRequest request = DeprecateImageHttpRequest.newBuilder()
+   *     .setImage(image.toString())
+   *     .setDeprecationStatusResource(deprecationStatusResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = imageClient.deprecateImageOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deprecateImageOperationCallable() { + return stub.deprecateImageOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -355,7 +433,7 @@ public final Operation deprecateImage(DeprecateImageHttpRequest request) { * .build(); * ApiFuture<Operation> future = imageClient.deprecateImageCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -667,7 +745,7 @@ public final UnaryCallable getIamPolicyIma * Boolean forceCreate = false; * ProjectName project = ProjectName.of("[PROJECT]"); * Image imageResource = Image.newBuilder().build(); - * Operation response = imageClient.insertImage(forceCreate, project, imageResource); + * imageClient.insertImageAsync(forceCreate, project, imageResource).get(); * } * * @@ -677,8 +755,9 @@ public final UnaryCallable getIamPolicyIma * v1.images ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertImage( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertImageAsync( Boolean forceCreate, ProjectName project, Image imageResource) { InsertImageHttpRequest request = @@ -687,7 +766,7 @@ public final Operation insertImage( .setProject(project == null ? null : project.toString()) .setImageResource(imageResource) .build(); - return insertImage(request); + return insertImageAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -701,7 +780,7 @@ public final Operation insertImage( * Boolean forceCreate = false; * ProjectName project = ProjectName.of("[PROJECT]"); * Image imageResource = Image.newBuilder().build(); - * Operation response = imageClient.insertImage(forceCreate, project.toString(), imageResource); + * imageClient.insertImageAsync(forceCreate, project.toString(), imageResource).get(); * } * * @@ -711,8 +790,10 @@ public final Operation insertImage( * v1.images ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertImage(Boolean forceCreate, String project, Image imageResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertImageAsync( + Boolean forceCreate, String project, Image imageResource) { InsertImageHttpRequest request = InsertImageHttpRequest.newBuilder() @@ -720,7 +801,7 @@ public final Operation insertImage(Boolean forceCreate, String project, Image im .setProject(project) .setImageResource(imageResource) .build(); - return insertImage(request); + return insertImageAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -739,16 +820,46 @@ public final Operation insertImage(Boolean forceCreate, String project, Image im * .setProject(project.toString()) * .setImageResource(imageResource) * .build(); - * Operation response = imageClient.insertImage(request); + * imageClient.insertImageAsync(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 */ - @BetaApi - public final Operation insertImage(InsertImageHttpRequest request) { - return insertImageCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertImageAsync( + InsertImageHttpRequest request) { + return insertImageOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates an image in the specified project using the data included in the request. + * + *

Sample code: + * + *


+   * try (ImageClient imageClient = ImageClient.create()) {
+   *   Boolean forceCreate = false;
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   Image imageResource = Image.newBuilder().build();
+   *   InsertImageHttpRequest request = InsertImageHttpRequest.newBuilder()
+   *     .setForceCreate(forceCreate)
+   *     .setProject(project.toString())
+   *     .setImageResource(imageResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = imageClient.insertImageOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertImageOperationCallable() { + return stub.insertImageOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -769,7 +880,7 @@ public final Operation insertImage(InsertImageHttpRequest request) { * .build(); * ApiFuture<Operation> future = imageClient.insertImageCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1056,7 +1167,7 @@ public final UnaryCallable setIamPolicyIma * try (ImageClient imageClient = ImageClient.create()) { * ProjectGlobalImageResourceName resource = ProjectGlobalImageResourceName.of("[PROJECT]", "[RESOURCE]"); * GlobalSetLabelsRequest globalSetLabelsRequestResource = GlobalSetLabelsRequest.newBuilder().build(); - * Operation response = imageClient.setLabelsImage(resource, globalSetLabelsRequestResource); + * imageClient.setLabelsImageAsync(resource, globalSetLabelsRequestResource).get(); * } * * @@ -1064,8 +1175,9 @@ public final UnaryCallable setIamPolicyIma * @param globalSetLabelsRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setLabelsImage( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setLabelsImageAsync( ProjectGlobalImageResourceName resource, GlobalSetLabelsRequest globalSetLabelsRequestResource) { @@ -1074,7 +1186,7 @@ public final Operation setLabelsImage( .setResource(resource == null ? null : resource.toString()) .setGlobalSetLabelsRequestResource(globalSetLabelsRequestResource) .build(); - return setLabelsImage(request); + return setLabelsImageAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1088,7 +1200,7 @@ public final Operation setLabelsImage( * try (ImageClient imageClient = ImageClient.create()) { * ProjectGlobalImageResourceName resource = ProjectGlobalImageResourceName.of("[PROJECT]", "[RESOURCE]"); * GlobalSetLabelsRequest globalSetLabelsRequestResource = GlobalSetLabelsRequest.newBuilder().build(); - * Operation response = imageClient.setLabelsImage(resource.toString(), globalSetLabelsRequestResource); + * imageClient.setLabelsImageAsync(resource.toString(), globalSetLabelsRequestResource).get(); * } * * @@ -1096,8 +1208,9 @@ public final Operation setLabelsImage( * @param globalSetLabelsRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setLabelsImage( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setLabelsImageAsync( String resource, GlobalSetLabelsRequest globalSetLabelsRequestResource) { SetLabelsImageHttpRequest request = @@ -1105,7 +1218,7 @@ public final Operation setLabelsImage( .setResource(resource) .setGlobalSetLabelsRequestResource(globalSetLabelsRequestResource) .build(); - return setLabelsImage(request); + return setLabelsImageAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1123,16 +1236,45 @@ public final Operation setLabelsImage( * .setResource(resource.toString()) * .setGlobalSetLabelsRequestResource(globalSetLabelsRequestResource) * .build(); - * Operation response = imageClient.setLabelsImage(request); + * imageClient.setLabelsImageAsync(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 */ - @BetaApi - public final Operation setLabelsImage(SetLabelsImageHttpRequest request) { - return setLabelsImageCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setLabelsImageAsync( + SetLabelsImageHttpRequest request) { + return setLabelsImageOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Sets the labels on an image. To learn more about labels, read the Labeling Resources + * documentation. + * + *

Sample code: + * + *


+   * try (ImageClient imageClient = ImageClient.create()) {
+   *   ProjectGlobalImageResourceName resource = ProjectGlobalImageResourceName.of("[PROJECT]", "[RESOURCE]");
+   *   GlobalSetLabelsRequest globalSetLabelsRequestResource = GlobalSetLabelsRequest.newBuilder().build();
+   *   SetLabelsImageHttpRequest request = SetLabelsImageHttpRequest.newBuilder()
+   *     .setResource(resource.toString())
+   *     .setGlobalSetLabelsRequestResource(globalSetLabelsRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = imageClient.setLabelsImageOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + setLabelsImageOperationCallable() { + return stub.setLabelsImageOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1152,7 +1294,7 @@ public final Operation setLabelsImage(SetLabelsImageHttpRequest request) { * .build(); * ApiFuture<Operation> future = imageClient.setLabelsImageCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ImageSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ImageSettings.java index 97f9d48dcbb0..7555ab9339b4 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ImageSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ImageSettings.java @@ -21,10 +21,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -48,13 +50,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteImage to 30 seconds: + * example, to set the total timeout of getImage to 30 seconds: * *

  * 
  * ImageSettings.Builder imageSettingsBuilder =
  *     ImageSettings.newBuilder();
- * imageSettingsBuilder.deleteImageSettings().getRetrySettings().toBuilder()
+ * imageSettingsBuilder.getImageSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * ImageSettings imageSettings = imageSettingsBuilder.build();
  * 
@@ -68,11 +70,27 @@ public UnaryCallSettings deleteImageSettings(
     return ((ImageStubSettings) getStubSettings()).deleteImageSettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteImage. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteImageOperationSettings() {
+    return ((ImageStubSettings) getStubSettings()).deleteImageOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to deprecateImage. */
   public UnaryCallSettings deprecateImageSettings() {
     return ((ImageStubSettings) getStubSettings()).deprecateImageSettings();
   }
 
+  /** Returns the object with the settings used for calls to deprecateImage. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deprecateImageOperationSettings() {
+    return ((ImageStubSettings) getStubSettings()).deprecateImageOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getImage. */
   public UnaryCallSettings getImageSettings() {
     return ((ImageStubSettings) getStubSettings()).getImageSettings();
@@ -93,6 +111,14 @@ public UnaryCallSettings insertImageSettings(
     return ((ImageStubSettings) getStubSettings()).insertImageSettings();
   }
 
+  /** Returns the object with the settings used for calls to insertImage. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertImageOperationSettings() {
+    return ((ImageStubSettings) getStubSettings()).insertImageOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listImages. */
   public PagedCallSettings
       listImagesSettings() {
@@ -109,6 +135,14 @@ public UnaryCallSettings setLabelsImageSet
     return ((ImageStubSettings) getStubSettings()).setLabelsImageSettings();
   }
 
+  /** Returns the object with the settings used for calls to setLabelsImage. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setLabelsImageOperationSettings() {
+    return ((ImageStubSettings) getStubSettings()).setLabelsImageOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to testIamPermissionsImage. */
   public UnaryCallSettings
       testIamPermissionsImageSettings() {
@@ -221,12 +255,28 @@ public UnaryCallSettings.Builder deleteImageS
       return getStubSettingsBuilder().deleteImageSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteImage. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteImageOperationSettings() {
+      return getStubSettingsBuilder().deleteImageOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to deprecateImage. */
     public UnaryCallSettings.Builder
         deprecateImageSettings() {
       return getStubSettingsBuilder().deprecateImageSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deprecateImage. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deprecateImageOperationSettings() {
+      return getStubSettingsBuilder().deprecateImageOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getImage. */
     public UnaryCallSettings.Builder getImageSettings() {
       return getStubSettingsBuilder().getImageSettings();
@@ -249,6 +299,14 @@ public UnaryCallSettings.Builder insertImageS
       return getStubSettingsBuilder().insertImageSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertImage. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertImageOperationSettings() {
+      return getStubSettingsBuilder().insertImageOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listImages. */
     public PagedCallSettings.Builder
         listImagesSettings() {
@@ -267,6 +325,14 @@ public UnaryCallSettings.Builder insertImageS
       return getStubSettingsBuilder().setLabelsImageSettings();
     }
 
+    /** Returns the builder for the settings used for calls to setLabelsImage. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        setLabelsImageOperationSettings() {
+      return getStubSettingsBuilder().setLabelsImageOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to testIamPermissionsImage. */
     public UnaryCallSettings.Builder
         testIamPermissionsImageSettings() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceClient.java
index 7458a77b898a..611aef241520 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.InstanceStub;
@@ -43,9 +46,7 @@
  * 
  * try (InstanceClient instanceClient = InstanceClient.create()) {
  *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
- *   String networkInterface = "";
- *   AccessConfig accessConfigResource = AccessConfig.newBuilder().build();
- *   Operation response = instanceClient.addAccessConfigInstance(instance, networkInterface, accessConfigResource);
+ *   Instance response = instanceClient.getInstance(instance);
  * }
  * 
  * 
@@ -105,6 +106,7 @@ public class InstanceClient implements BackgroundResource { private final InstanceSettings settings; private final InstanceStub stub; + private final ZoneOperationClient operationsClient; /** Constructs an instance of InstanceClient with default settings. */ public static final InstanceClient create() throws IOException { @@ -135,12 +137,14 @@ public static final InstanceClient create(InstanceStub stub) { protected InstanceClient(InstanceSettings settings) throws IOException { this.settings = settings; this.stub = ((InstanceStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = ZoneOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected InstanceClient(InstanceStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = ZoneOperationClient.create(this.stub.getOperationsStub()); } public final InstanceSettings getSettings() { @@ -152,6 +156,16 @@ public InstanceStub getStub() { return stub; } + /** + * Returns the ZoneOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final ZoneOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Adds an access config to an instance's network interface. @@ -163,7 +177,7 @@ public InstanceStub getStub() { * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * String networkInterface = ""; * AccessConfig accessConfigResource = AccessConfig.newBuilder().build(); - * Operation response = instanceClient.addAccessConfigInstance(instance, networkInterface, accessConfigResource); + * instanceClient.addAccessConfigInstanceAsync(instance, networkInterface, accessConfigResource).get(); * } * * @@ -173,8 +187,9 @@ public InstanceStub getStub() { * interface. Only one access config per instance is supported. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation addAccessConfigInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture addAccessConfigInstanceAsync( ProjectZoneInstanceName instance, String networkInterface, AccessConfig accessConfigResource) { @@ -185,7 +200,7 @@ public final Operation addAccessConfigInstance( .setNetworkInterface(networkInterface) .setAccessConfigResource(accessConfigResource) .build(); - return addAccessConfigInstance(request); + return addAccessConfigInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -199,7 +214,7 @@ public final Operation addAccessConfigInstance( * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * String networkInterface = ""; * AccessConfig accessConfigResource = AccessConfig.newBuilder().build(); - * Operation response = instanceClient.addAccessConfigInstance(instance.toString(), networkInterface, accessConfigResource); + * instanceClient.addAccessConfigInstanceAsync(instance.toString(), networkInterface, accessConfigResource).get(); * } * * @@ -209,8 +224,9 @@ public final Operation addAccessConfigInstance( * interface. Only one access config per instance is supported. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation addAccessConfigInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture addAccessConfigInstanceAsync( String instance, String networkInterface, AccessConfig accessConfigResource) { AddAccessConfigInstanceHttpRequest request = @@ -219,7 +235,7 @@ public final Operation addAccessConfigInstance( .setNetworkInterface(networkInterface) .setAccessConfigResource(accessConfigResource) .build(); - return addAccessConfigInstance(request); + return addAccessConfigInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -238,16 +254,46 @@ public final Operation addAccessConfigInstance( * .setNetworkInterface(networkInterface) * .setAccessConfigResource(accessConfigResource) * .build(); - * Operation response = instanceClient.addAccessConfigInstance(request); + * instanceClient.addAccessConfigInstanceAsync(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 */ - @BetaApi - public final Operation addAccessConfigInstance(AddAccessConfigInstanceHttpRequest request) { - return addAccessConfigInstanceCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture addAccessConfigInstanceAsync( + AddAccessConfigInstanceHttpRequest request) { + return addAccessConfigInstanceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Adds an access config to an instance's network interface. + * + *

Sample code: + * + *


+   * try (InstanceClient instanceClient = InstanceClient.create()) {
+   *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
+   *   String networkInterface = "";
+   *   AccessConfig accessConfigResource = AccessConfig.newBuilder().build();
+   *   AddAccessConfigInstanceHttpRequest request = AddAccessConfigInstanceHttpRequest.newBuilder()
+   *     .setInstance(instance.toString())
+   *     .setNetworkInterface(networkInterface)
+   *     .setAccessConfigResource(accessConfigResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceClient.addAccessConfigInstanceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + addAccessConfigInstanceOperationCallable() { + return stub.addAccessConfigInstanceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -268,7 +314,7 @@ public final Operation addAccessConfigInstance(AddAccessConfigInstanceHttpReques * .build(); * ApiFuture<Operation> future = instanceClient.addAccessConfigInstanceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -430,7 +476,7 @@ public final AggregatedListInstancesPagedResponse aggregatedListInstances( * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * Boolean forceAttach = false; * AttachedDisk attachedDiskResource = AttachedDisk.newBuilder().build(); - * Operation response = instanceClient.attachDiskInstance(instance, forceAttach, attachedDiskResource); + * instanceClient.attachDiskInstanceAsync(instance, forceAttach, attachedDiskResource).get(); * } * * @@ -440,8 +486,9 @@ public final AggregatedListInstancesPagedResponse aggregatedListInstances( * @param attachedDiskResource An instance-attached disk resource. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation attachDiskInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture attachDiskInstanceAsync( ProjectZoneInstanceName instance, Boolean forceAttach, AttachedDisk attachedDiskResource) { AttachDiskInstanceHttpRequest request = @@ -450,7 +497,7 @@ public final Operation attachDiskInstance( .setForceAttach(forceAttach) .setAttachedDiskResource(attachedDiskResource) .build(); - return attachDiskInstance(request); + return attachDiskInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -466,7 +513,7 @@ public final Operation attachDiskInstance( * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * Boolean forceAttach = false; * AttachedDisk attachedDiskResource = AttachedDisk.newBuilder().build(); - * Operation response = instanceClient.attachDiskInstance(instance.toString(), forceAttach, attachedDiskResource); + * instanceClient.attachDiskInstanceAsync(instance.toString(), forceAttach, attachedDiskResource).get(); * } * * @@ -476,8 +523,9 @@ public final Operation attachDiskInstance( * @param attachedDiskResource An instance-attached disk resource. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation attachDiskInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture attachDiskInstanceAsync( String instance, Boolean forceAttach, AttachedDisk attachedDiskResource) { AttachDiskInstanceHttpRequest request = @@ -486,7 +534,7 @@ public final Operation attachDiskInstance( .setForceAttach(forceAttach) .setAttachedDiskResource(attachedDiskResource) .build(); - return attachDiskInstance(request); + return attachDiskInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -507,16 +555,48 @@ public final Operation attachDiskInstance( * .setForceAttach(forceAttach) * .setAttachedDiskResource(attachedDiskResource) * .build(); - * Operation response = instanceClient.attachDiskInstance(request); + * instanceClient.attachDiskInstanceAsync(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 */ - @BetaApi - public final Operation attachDiskInstance(AttachDiskInstanceHttpRequest request) { - return attachDiskInstanceCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture attachDiskInstanceAsync( + AttachDiskInstanceHttpRequest request) { + return attachDiskInstanceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Attaches an existing Disk resource to an instance. You must first create the disk before you + * can attach it. It is not possible to create and attach a disk at the same time. For more + * information, read Adding a persistent disk to your instance. + * + *

Sample code: + * + *


+   * try (InstanceClient instanceClient = InstanceClient.create()) {
+   *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
+   *   Boolean forceAttach = false;
+   *   AttachedDisk attachedDiskResource = AttachedDisk.newBuilder().build();
+   *   AttachDiskInstanceHttpRequest request = AttachDiskInstanceHttpRequest.newBuilder()
+   *     .setInstance(instance.toString())
+   *     .setForceAttach(forceAttach)
+   *     .setAttachedDiskResource(attachedDiskResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceClient.attachDiskInstanceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + attachDiskInstanceOperationCallable() { + return stub.attachDiskInstanceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -539,7 +619,7 @@ public final Operation attachDiskInstance(AttachDiskInstanceHttpRequest request) * .build(); * ApiFuture<Operation> future = instanceClient.attachDiskInstanceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -559,21 +639,23 @@ public final Operation attachDiskInstance(AttachDiskInstanceHttpRequest request) *

    * try (InstanceClient instanceClient = InstanceClient.create()) {
    *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
-   *   Operation response = instanceClient.deleteInstance(instance);
+   *   instanceClient.deleteInstanceAsync(instance).get();
    * }
    * 
* * @param instance Name of the instance resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteInstance(ProjectZoneInstanceName instance) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteInstanceAsync( + ProjectZoneInstanceName instance) { DeleteInstanceHttpRequest request = DeleteInstanceHttpRequest.newBuilder() .setInstance(instance == null ? null : instance.toString()) .build(); - return deleteInstance(request); + return deleteInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -586,19 +668,20 @@ public final Operation deleteInstance(ProjectZoneInstanceName instance) { *

    * try (InstanceClient instanceClient = InstanceClient.create()) {
    *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
-   *   Operation response = instanceClient.deleteInstance(instance.toString());
+   *   instanceClient.deleteInstanceAsync(instance.toString()).get();
    * }
    * 
* * @param instance Name of the instance resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteInstance(String instance) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteInstanceAsync(String instance) { DeleteInstanceHttpRequest request = DeleteInstanceHttpRequest.newBuilder().setInstance(instance).build(); - return deleteInstance(request); + return deleteInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -614,16 +697,43 @@ public final Operation deleteInstance(String instance) { * DeleteInstanceHttpRequest request = DeleteInstanceHttpRequest.newBuilder() * .setInstance(instance.toString()) * .build(); - * Operation response = instanceClient.deleteInstance(request); + * instanceClient.deleteInstanceAsync(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 */ - @BetaApi - public final Operation deleteInstance(DeleteInstanceHttpRequest request) { - return deleteInstanceCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteInstanceAsync( + DeleteInstanceHttpRequest request) { + return deleteInstanceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified Instance resource. For more information, see Stopping or Deleting an + * Instance. + * + *

Sample code: + * + *


+   * try (InstanceClient instanceClient = InstanceClient.create()) {
+   *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
+   *   DeleteInstanceHttpRequest request = DeleteInstanceHttpRequest.newBuilder()
+   *     .setInstance(instance.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceClient.deleteInstanceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteInstanceOperationCallable() { + return stub.deleteInstanceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -641,7 +751,7 @@ public final Operation deleteInstance(DeleteInstanceHttpRequest request) { * .build(); * ApiFuture<Operation> future = instanceClient.deleteInstanceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -661,7 +771,7 @@ public final UnaryCallable deleteInstanceC * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * String networkInterface = ""; * String accessConfig = ""; - * Operation response = instanceClient.deleteAccessConfigInstance(instance, networkInterface, accessConfig); + * instanceClient.deleteAccessConfigInstanceAsync(instance, networkInterface, accessConfig).get(); * } * * @@ -670,8 +780,9 @@ public final UnaryCallable deleteInstanceC * @param accessConfig The name of the access config to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteAccessConfigInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteAccessConfigInstanceAsync( ProjectZoneInstanceName instance, String networkInterface, String accessConfig) { DeleteAccessConfigInstanceHttpRequest request = @@ -680,7 +791,7 @@ public final Operation deleteAccessConfigInstance( .setNetworkInterface(networkInterface) .setAccessConfig(accessConfig) .build(); - return deleteAccessConfigInstance(request); + return deleteAccessConfigInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -694,7 +805,7 @@ public final Operation deleteAccessConfigInstance( * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * String networkInterface = ""; * String accessConfig = ""; - * Operation response = instanceClient.deleteAccessConfigInstance(instance.toString(), networkInterface, accessConfig); + * instanceClient.deleteAccessConfigInstanceAsync(instance.toString(), networkInterface, accessConfig).get(); * } * * @@ -703,8 +814,9 @@ public final Operation deleteAccessConfigInstance( * @param accessConfig The name of the access config to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteAccessConfigInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteAccessConfigInstanceAsync( String instance, String networkInterface, String accessConfig) { DeleteAccessConfigInstanceHttpRequest request = @@ -713,7 +825,7 @@ public final Operation deleteAccessConfigInstance( .setNetworkInterface(networkInterface) .setAccessConfig(accessConfig) .build(); - return deleteAccessConfigInstance(request); + return deleteAccessConfigInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -732,16 +844,46 @@ public final Operation deleteAccessConfigInstance( * .setNetworkInterface(networkInterface) * .setAccessConfig(accessConfig) * .build(); - * Operation response = instanceClient.deleteAccessConfigInstance(request); + * instanceClient.deleteAccessConfigInstanceAsync(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 */ - @BetaApi - public final Operation deleteAccessConfigInstance(DeleteAccessConfigInstanceHttpRequest request) { - return deleteAccessConfigInstanceCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteAccessConfigInstanceAsync( + DeleteAccessConfigInstanceHttpRequest request) { + return deleteAccessConfigInstanceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes an access config from an instance's network interface. + * + *

Sample code: + * + *


+   * try (InstanceClient instanceClient = InstanceClient.create()) {
+   *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
+   *   String networkInterface = "";
+   *   String accessConfig = "";
+   *   DeleteAccessConfigInstanceHttpRequest request = DeleteAccessConfigInstanceHttpRequest.newBuilder()
+   *     .setInstance(instance.toString())
+   *     .setNetworkInterface(networkInterface)
+   *     .setAccessConfig(accessConfig)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceClient.deleteAccessConfigInstanceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteAccessConfigInstanceOperationCallable() { + return stub.deleteAccessConfigInstanceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -762,7 +904,7 @@ public final Operation deleteAccessConfigInstance(DeleteAccessConfigInstanceHttp * .build(); * ApiFuture<Operation> future = instanceClient.deleteAccessConfigInstanceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -782,7 +924,7 @@ public final Operation deleteAccessConfigInstance(DeleteAccessConfigInstanceHttp * try (InstanceClient instanceClient = InstanceClient.create()) { * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * String deviceName = ""; - * Operation response = instanceClient.detachDiskInstance(instance, deviceName); + * instanceClient.detachDiskInstanceAsync(instance, deviceName).get(); * } * * @@ -791,15 +933,17 @@ public final Operation deleteAccessConfigInstance(DeleteAccessConfigInstanceHttp * to view currently attached disks and device names. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation detachDiskInstance(ProjectZoneInstanceName instance, String deviceName) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture detachDiskInstanceAsync( + ProjectZoneInstanceName instance, String deviceName) { DetachDiskInstanceHttpRequest request = DetachDiskInstanceHttpRequest.newBuilder() .setInstance(instance == null ? null : instance.toString()) .setDeviceName(deviceName) .build(); - return detachDiskInstance(request); + return detachDiskInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -812,7 +956,7 @@ public final Operation detachDiskInstance(ProjectZoneInstanceName instance, Stri * try (InstanceClient instanceClient = InstanceClient.create()) { * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * String deviceName = ""; - * Operation response = instanceClient.detachDiskInstance(instance.toString(), deviceName); + * instanceClient.detachDiskInstanceAsync(instance.toString(), deviceName).get(); * } * * @@ -821,15 +965,17 @@ public final Operation detachDiskInstance(ProjectZoneInstanceName instance, Stri * to view currently attached disks and device names. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation detachDiskInstance(String instance, String deviceName) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture detachDiskInstanceAsync( + String instance, String deviceName) { DetachDiskInstanceHttpRequest request = DetachDiskInstanceHttpRequest.newBuilder() .setInstance(instance) .setDeviceName(deviceName) .build(); - return detachDiskInstance(request); + return detachDiskInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -846,16 +992,44 @@ public final Operation detachDiskInstance(String instance, String deviceName) { * .setInstance(instance.toString()) * .setDeviceName(deviceName) * .build(); - * Operation response = instanceClient.detachDiskInstance(request); + * instanceClient.detachDiskInstanceAsync(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 */ - @BetaApi - public final Operation detachDiskInstance(DetachDiskInstanceHttpRequest request) { - return detachDiskInstanceCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture detachDiskInstanceAsync( + DetachDiskInstanceHttpRequest request) { + return detachDiskInstanceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Detaches a disk from an instance. + * + *

Sample code: + * + *


+   * try (InstanceClient instanceClient = InstanceClient.create()) {
+   *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
+   *   String deviceName = "";
+   *   DetachDiskInstanceHttpRequest request = DetachDiskInstanceHttpRequest.newBuilder()
+   *     .setInstance(instance.toString())
+   *     .setDeviceName(deviceName)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceClient.detachDiskInstanceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + detachDiskInstanceOperationCallable() { + return stub.detachDiskInstanceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -874,7 +1048,7 @@ public final Operation detachDiskInstance(DetachDiskInstanceHttpRequest request) * .build(); * ApiFuture<Operation> future = instanceClient.detachDiskInstanceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1226,7 +1400,7 @@ public final SerialPortOutput getSerialPortOutputInstance( * try (InstanceClient instanceClient = InstanceClient.create()) { * ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]"); * Instance instanceResource = Instance.newBuilder().build(); - * Operation response = instanceClient.insertInstance(zone, instanceResource); + * instanceClient.insertInstanceAsync(zone, instanceResource).get(); * } * * @@ -1235,15 +1409,17 @@ public final SerialPortOutput getSerialPortOutputInstance( * resource_for v1.instances ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertInstance(ProjectZoneName zone, Instance instanceResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertInstanceAsync( + ProjectZoneName zone, Instance instanceResource) { InsertInstanceHttpRequest request = InsertInstanceHttpRequest.newBuilder() .setZone(zone == null ? null : zone.toString()) .setInstanceResource(instanceResource) .build(); - return insertInstance(request); + return insertInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1256,7 +1432,7 @@ public final Operation insertInstance(ProjectZoneName zone, Instance instanceRes * try (InstanceClient instanceClient = InstanceClient.create()) { * ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]"); * Instance instanceResource = Instance.newBuilder().build(); - * Operation response = instanceClient.insertInstance(zone.toString(), instanceResource); + * instanceClient.insertInstanceAsync(zone.toString(), instanceResource).get(); * } * * @@ -1265,15 +1441,17 @@ public final Operation insertInstance(ProjectZoneName zone, Instance instanceRes * resource_for v1.instances ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertInstance(String zone, Instance instanceResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertInstanceAsync( + String zone, Instance instanceResource) { InsertInstanceHttpRequest request = InsertInstanceHttpRequest.newBuilder() .setZone(zone) .setInstanceResource(instanceResource) .build(); - return insertInstance(request); + return insertInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1290,16 +1468,44 @@ public final Operation insertInstance(String zone, Instance instanceResource) { * .setZone(zone.toString()) * .setInstanceResource(instanceResource) * .build(); - * Operation response = instanceClient.insertInstance(request); + * instanceClient.insertInstanceAsync(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 */ - @BetaApi - public final Operation insertInstance(InsertInstanceHttpRequest request) { - return insertInstanceCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertInstanceAsync( + InsertInstanceHttpRequest request) { + return insertInstanceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates an instance resource in the specified project using the data included in the request. + * + *

Sample code: + * + *


+   * try (InstanceClient instanceClient = InstanceClient.create()) {
+   *   ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
+   *   Instance instanceResource = Instance.newBuilder().build();
+   *   InsertInstanceHttpRequest request = InsertInstanceHttpRequest.newBuilder()
+   *     .setZone(zone.toString())
+   *     .setInstanceResource(instanceResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceClient.insertInstanceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertInstanceOperationCallable() { + return stub.insertInstanceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1318,7 +1524,7 @@ public final Operation insertInstance(InsertInstanceHttpRequest request) { * .build(); * ApiFuture<Operation> future = instanceClient.insertInstanceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1618,21 +1824,23 @@ public final ListReferrersInstancesPagedResponse listReferrersInstances( *

    * try (InstanceClient instanceClient = InstanceClient.create()) {
    *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
-   *   Operation response = instanceClient.resetInstance(instance);
+   *   instanceClient.resetInstanceAsync(instance).get();
    * }
    * 
* * @param instance Name of the instance scoping this request. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation resetInstance(ProjectZoneInstanceName instance) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture resetInstanceAsync( + ProjectZoneInstanceName instance) { ResetInstanceHttpRequest request = ResetInstanceHttpRequest.newBuilder() .setInstance(instance == null ? null : instance.toString()) .build(); - return resetInstance(request); + return resetInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1645,19 +1853,20 @@ public final Operation resetInstance(ProjectZoneInstanceName instance) { *

    * try (InstanceClient instanceClient = InstanceClient.create()) {
    *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
-   *   Operation response = instanceClient.resetInstance(instance.toString());
+   *   instanceClient.resetInstanceAsync(instance.toString()).get();
    * }
    * 
* * @param instance Name of the instance scoping this request. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation resetInstance(String instance) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture resetInstanceAsync(String instance) { ResetInstanceHttpRequest request = ResetInstanceHttpRequest.newBuilder().setInstance(instance).build(); - return resetInstance(request); + return resetInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1673,16 +1882,43 @@ public final Operation resetInstance(String instance) { * ResetInstanceHttpRequest request = ResetInstanceHttpRequest.newBuilder() * .setInstance(instance.toString()) * .build(); - * Operation response = instanceClient.resetInstance(request); + * instanceClient.resetInstanceAsync(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 */ - @BetaApi - public final Operation resetInstance(ResetInstanceHttpRequest request) { - return resetInstanceCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture resetInstanceAsync( + ResetInstanceHttpRequest request) { + return resetInstanceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Performs a reset on the instance. This is a hard reset; the VM does not do a graceful shutdown. + * For more information, see Resetting an instance. + * + *

Sample code: + * + *


+   * try (InstanceClient instanceClient = InstanceClient.create()) {
+   *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
+   *   ResetInstanceHttpRequest request = ResetInstanceHttpRequest.newBuilder()
+   *     .setInstance(instance.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceClient.resetInstanceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + resetInstanceOperationCallable() { + return stub.resetInstanceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1700,7 +1936,7 @@ public final Operation resetInstance(ResetInstanceHttpRequest request) { * .build(); * ApiFuture<Operation> future = instanceClient.resetInstanceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1719,7 +1955,7 @@ public final UnaryCallable resetInstanceCal * try (InstanceClient instanceClient = InstanceClient.create()) { * ProjectZoneInstanceResourceName resource = ProjectZoneInstanceResourceName.of("[PROJECT]", "[ZONE]", "[RESOURCE]"); * Boolean deletionProtection = false; - * Operation response = instanceClient.setDeletionProtectionInstance(resource, deletionProtection); + * instanceClient.setDeletionProtectionInstanceAsync(resource, deletionProtection).get(); * } * * @@ -1727,8 +1963,9 @@ public final UnaryCallable resetInstanceCal * @param deletionProtection Whether the resource should be protected against deletion. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setDeletionProtectionInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setDeletionProtectionInstanceAsync( ProjectZoneInstanceResourceName resource, Boolean deletionProtection) { SetDeletionProtectionInstanceHttpRequest request = @@ -1736,7 +1973,7 @@ public final Operation setDeletionProtectionInstance( .setResource(resource == null ? null : resource.toString()) .setDeletionProtection(deletionProtection) .build(); - return setDeletionProtectionInstance(request); + return setDeletionProtectionInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1749,7 +1986,7 @@ public final Operation setDeletionProtectionInstance( * try (InstanceClient instanceClient = InstanceClient.create()) { * ProjectZoneInstanceResourceName resource = ProjectZoneInstanceResourceName.of("[PROJECT]", "[ZONE]", "[RESOURCE]"); * Boolean deletionProtection = false; - * Operation response = instanceClient.setDeletionProtectionInstance(resource.toString(), deletionProtection); + * instanceClient.setDeletionProtectionInstanceAsync(resource.toString(), deletionProtection).get(); * } * * @@ -1757,8 +1994,9 @@ public final Operation setDeletionProtectionInstance( * @param deletionProtection Whether the resource should be protected against deletion. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setDeletionProtectionInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setDeletionProtectionInstanceAsync( String resource, Boolean deletionProtection) { SetDeletionProtectionInstanceHttpRequest request = @@ -1766,7 +2004,7 @@ public final Operation setDeletionProtectionInstance( .setResource(resource) .setDeletionProtection(deletionProtection) .build(); - return setDeletionProtectionInstance(request); + return setDeletionProtectionInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1783,17 +2021,44 @@ public final Operation setDeletionProtectionInstance( * .setResource(resource.toString()) * .setDeletionProtection(deletionProtection) * .build(); - * Operation response = instanceClient.setDeletionProtectionInstance(request); + * instanceClient.setDeletionProtectionInstanceAsync(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 */ - @BetaApi - public final Operation setDeletionProtectionInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setDeletionProtectionInstanceAsync( SetDeletionProtectionInstanceHttpRequest request) { - return setDeletionProtectionInstanceCallable().call(request); + return setDeletionProtectionInstanceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Sets deletion protection on the instance. + * + *

Sample code: + * + *


+   * try (InstanceClient instanceClient = InstanceClient.create()) {
+   *   ProjectZoneInstanceResourceName resource = ProjectZoneInstanceResourceName.of("[PROJECT]", "[ZONE]", "[RESOURCE]");
+   *   Boolean deletionProtection = false;
+   *   SetDeletionProtectionInstanceHttpRequest request = SetDeletionProtectionInstanceHttpRequest.newBuilder()
+   *     .setResource(resource.toString())
+   *     .setDeletionProtection(deletionProtection)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceClient.setDeletionProtectionInstanceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + setDeletionProtectionInstanceOperationCallable() { + return stub.setDeletionProtectionInstanceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1812,7 +2077,7 @@ public final Operation setDeletionProtectionInstance( * .build(); * ApiFuture<Operation> future = instanceClient.setDeletionProtectionInstanceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1833,7 +2098,7 @@ public final Operation setDeletionProtectionInstance( * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * Boolean autoDelete = false; * String deviceName = ""; - * Operation response = instanceClient.setDiskAutoDeleteInstance(instance, autoDelete, deviceName); + * instanceClient.setDiskAutoDeleteInstanceAsync(instance, autoDelete, deviceName).get(); * } * * @@ -1843,8 +2108,9 @@ public final Operation setDeletionProtectionInstance( * to view currently attached disks and device names. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setDiskAutoDeleteInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setDiskAutoDeleteInstanceAsync( ProjectZoneInstanceName instance, Boolean autoDelete, String deviceName) { SetDiskAutoDeleteInstanceHttpRequest request = @@ -1853,7 +2119,7 @@ public final Operation setDiskAutoDeleteInstance( .setAutoDelete(autoDelete) .setDeviceName(deviceName) .build(); - return setDiskAutoDeleteInstance(request); + return setDiskAutoDeleteInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1867,7 +2133,7 @@ public final Operation setDiskAutoDeleteInstance( * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * Boolean autoDelete = false; * String deviceName = ""; - * Operation response = instanceClient.setDiskAutoDeleteInstance(instance.toString(), autoDelete, deviceName); + * instanceClient.setDiskAutoDeleteInstanceAsync(instance.toString(), autoDelete, deviceName).get(); * } * * @@ -1877,8 +2143,9 @@ public final Operation setDiskAutoDeleteInstance( * to view currently attached disks and device names. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setDiskAutoDeleteInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setDiskAutoDeleteInstanceAsync( String instance, Boolean autoDelete, String deviceName) { SetDiskAutoDeleteInstanceHttpRequest request = @@ -1887,7 +2154,7 @@ public final Operation setDiskAutoDeleteInstance( .setAutoDelete(autoDelete) .setDeviceName(deviceName) .build(); - return setDiskAutoDeleteInstance(request); + return setDiskAutoDeleteInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1906,16 +2173,46 @@ public final Operation setDiskAutoDeleteInstance( * .setAutoDelete(autoDelete) * .setDeviceName(deviceName) * .build(); - * Operation response = instanceClient.setDiskAutoDeleteInstance(request); + * instanceClient.setDiskAutoDeleteInstanceAsync(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 */ - @BetaApi - public final Operation setDiskAutoDeleteInstance(SetDiskAutoDeleteInstanceHttpRequest request) { - return setDiskAutoDeleteInstanceCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setDiskAutoDeleteInstanceAsync( + SetDiskAutoDeleteInstanceHttpRequest request) { + return setDiskAutoDeleteInstanceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Sets the auto-delete flag for a disk attached to an instance. + * + *

Sample code: + * + *


+   * try (InstanceClient instanceClient = InstanceClient.create()) {
+   *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
+   *   Boolean autoDelete = false;
+   *   String deviceName = "";
+   *   SetDiskAutoDeleteInstanceHttpRequest request = SetDiskAutoDeleteInstanceHttpRequest.newBuilder()
+   *     .setInstance(instance.toString())
+   *     .setAutoDelete(autoDelete)
+   *     .setDeviceName(deviceName)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceClient.setDiskAutoDeleteInstanceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + setDiskAutoDeleteInstanceOperationCallable() { + return stub.setDiskAutoDeleteInstanceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1936,7 +2233,7 @@ public final Operation setDiskAutoDeleteInstance(SetDiskAutoDeleteInstanceHttpRe * .build(); * ApiFuture<Operation> future = instanceClient.setDiskAutoDeleteInstanceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -2069,7 +2366,7 @@ public final Policy setIamPolicyInstance(SetIamPolicyInstanceHttpRequest request * try (InstanceClient instanceClient = InstanceClient.create()) { * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * InstancesSetLabelsRequest instancesSetLabelsRequestResource = InstancesSetLabelsRequest.newBuilder().build(); - * Operation response = instanceClient.setLabelsInstance(instance, instancesSetLabelsRequestResource); + * instanceClient.setLabelsInstanceAsync(instance, instancesSetLabelsRequestResource).get(); * } * * @@ -2077,8 +2374,9 @@ public final Policy setIamPolicyInstance(SetIamPolicyInstanceHttpRequest request * @param instancesSetLabelsRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setLabelsInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setLabelsInstanceAsync( ProjectZoneInstanceName instance, InstancesSetLabelsRequest instancesSetLabelsRequestResource) { @@ -2087,7 +2385,7 @@ public final Operation setLabelsInstance( .setInstance(instance == null ? null : instance.toString()) .setInstancesSetLabelsRequestResource(instancesSetLabelsRequestResource) .build(); - return setLabelsInstance(request); + return setLabelsInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -2101,7 +2399,7 @@ public final Operation setLabelsInstance( * try (InstanceClient instanceClient = InstanceClient.create()) { * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * InstancesSetLabelsRequest instancesSetLabelsRequestResource = InstancesSetLabelsRequest.newBuilder().build(); - * Operation response = instanceClient.setLabelsInstance(instance.toString(), instancesSetLabelsRequestResource); + * instanceClient.setLabelsInstanceAsync(instance.toString(), instancesSetLabelsRequestResource).get(); * } * * @@ -2109,8 +2407,9 @@ public final Operation setLabelsInstance( * @param instancesSetLabelsRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setLabelsInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setLabelsInstanceAsync( String instance, InstancesSetLabelsRequest instancesSetLabelsRequestResource) { SetLabelsInstanceHttpRequest request = @@ -2118,7 +2417,7 @@ public final Operation setLabelsInstance( .setInstance(instance) .setInstancesSetLabelsRequestResource(instancesSetLabelsRequestResource) .build(); - return setLabelsInstance(request); + return setLabelsInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -2136,16 +2435,45 @@ public final Operation setLabelsInstance( * .setInstance(instance.toString()) * .setInstancesSetLabelsRequestResource(instancesSetLabelsRequestResource) * .build(); - * Operation response = instanceClient.setLabelsInstance(request); + * instanceClient.setLabelsInstanceAsync(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 */ - @BetaApi - public final Operation setLabelsInstance(SetLabelsInstanceHttpRequest request) { - return setLabelsInstanceCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setLabelsInstanceAsync( + SetLabelsInstanceHttpRequest request) { + return setLabelsInstanceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Sets labels on an instance. To learn more about labels, read the Labeling Resources + * documentation. + * + *

Sample code: + * + *


+   * try (InstanceClient instanceClient = InstanceClient.create()) {
+   *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
+   *   InstancesSetLabelsRequest instancesSetLabelsRequestResource = InstancesSetLabelsRequest.newBuilder().build();
+   *   SetLabelsInstanceHttpRequest request = SetLabelsInstanceHttpRequest.newBuilder()
+   *     .setInstance(instance.toString())
+   *     .setInstancesSetLabelsRequestResource(instancesSetLabelsRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceClient.setLabelsInstanceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + setLabelsInstanceOperationCallable() { + return stub.setLabelsInstanceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -2165,7 +2493,7 @@ public final Operation setLabelsInstance(SetLabelsInstanceHttpRequest request) { * .build(); * ApiFuture<Operation> future = instanceClient.setLabelsInstanceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -2185,7 +2513,7 @@ public final UnaryCallable setLabelsIns * try (InstanceClient instanceClient = InstanceClient.create()) { * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * InstancesSetMachineResourcesRequest instancesSetMachineResourcesRequestResource = InstancesSetMachineResourcesRequest.newBuilder().build(); - * Operation response = instanceClient.setMachineResourcesInstance(instance, instancesSetMachineResourcesRequestResource); + * instanceClient.setMachineResourcesInstanceAsync(instance, instancesSetMachineResourcesRequestResource).get(); * } * * @@ -2193,8 +2521,9 @@ public final UnaryCallable setLabelsIns * @param instancesSetMachineResourcesRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setMachineResourcesInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setMachineResourcesInstanceAsync( ProjectZoneInstanceName instance, InstancesSetMachineResourcesRequest instancesSetMachineResourcesRequestResource) { @@ -2204,7 +2533,7 @@ public final Operation setMachineResourcesInstance( .setInstancesSetMachineResourcesRequestResource( instancesSetMachineResourcesRequestResource) .build(); - return setMachineResourcesInstance(request); + return setMachineResourcesInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -2218,7 +2547,7 @@ public final Operation setMachineResourcesInstance( * try (InstanceClient instanceClient = InstanceClient.create()) { * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * InstancesSetMachineResourcesRequest instancesSetMachineResourcesRequestResource = InstancesSetMachineResourcesRequest.newBuilder().build(); - * Operation response = instanceClient.setMachineResourcesInstance(instance.toString(), instancesSetMachineResourcesRequestResource); + * instanceClient.setMachineResourcesInstanceAsync(instance.toString(), instancesSetMachineResourcesRequestResource).get(); * } * * @@ -2226,8 +2555,9 @@ public final Operation setMachineResourcesInstance( * @param instancesSetMachineResourcesRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setMachineResourcesInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setMachineResourcesInstanceAsync( String instance, InstancesSetMachineResourcesRequest instancesSetMachineResourcesRequestResource) { @@ -2237,7 +2567,7 @@ public final Operation setMachineResourcesInstance( .setInstancesSetMachineResourcesRequestResource( instancesSetMachineResourcesRequestResource) .build(); - return setMachineResourcesInstance(request); + return setMachineResourcesInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -2255,17 +2585,18 @@ public final Operation setMachineResourcesInstance( * .setInstance(instance.toString()) * .setInstancesSetMachineResourcesRequestResource(instancesSetMachineResourcesRequestResource) * .build(); - * Operation response = instanceClient.setMachineResourcesInstance(request); + * instanceClient.setMachineResourcesInstanceAsync(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 */ - @BetaApi - public final Operation setMachineResourcesInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setMachineResourcesInstanceAsync( SetMachineResourcesInstanceHttpRequest request) { - return setMachineResourcesInstanceCallable().call(request); + return setMachineResourcesInstanceOperationCallable().futureCall(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -2283,21 +2614,48 @@ public final Operation setMachineResourcesInstance( * .setInstance(instance.toString()) * .setInstancesSetMachineResourcesRequestResource(instancesSetMachineResourcesRequestResource) * .build(); - * ApiFuture<Operation> future = instanceClient.setMachineResourcesInstanceCallable().futureCall(request); + * OperationFuture<EmptyMessage, Operation> future = instanceClient.setMachineResourcesInstanceOperationCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ - @BetaApi - public final UnaryCallable - setMachineResourcesInstanceCallable() { - return stub.setMachineResourcesInstanceCallable(); + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + setMachineResourcesInstanceOperationCallable() { + return stub.setMachineResourcesInstanceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD /** - * Changes the machine type for a stopped instance to the machine type specified in the request. + * Changes the number and/or type of accelerator for a stopped instance to the values specified in + * the request. + * + *

Sample code: + * + *


+   * try (InstanceClient instanceClient = InstanceClient.create()) {
+   *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
+   *   InstancesSetMachineResourcesRequest instancesSetMachineResourcesRequestResource = InstancesSetMachineResourcesRequest.newBuilder().build();
+   *   SetMachineResourcesInstanceHttpRequest request = SetMachineResourcesInstanceHttpRequest.newBuilder()
+   *     .setInstance(instance.toString())
+   *     .setInstancesSetMachineResourcesRequestResource(instancesSetMachineResourcesRequestResource)
+   *     .build();
+   *   ApiFuture<Operation> future = instanceClient.setMachineResourcesInstanceCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi + public final UnaryCallable + setMachineResourcesInstanceCallable() { + return stub.setMachineResourcesInstanceCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Changes the machine type for a stopped instance to the machine type specified in the request. * *

Sample code: * @@ -2305,7 +2663,7 @@ public final Operation setMachineResourcesInstance( * try (InstanceClient instanceClient = InstanceClient.create()) { * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * InstancesSetMachineTypeRequest instancesSetMachineTypeRequestResource = InstancesSetMachineTypeRequest.newBuilder().build(); - * Operation response = instanceClient.setMachineTypeInstance(instance, instancesSetMachineTypeRequestResource); + * instanceClient.setMachineTypeInstanceAsync(instance, instancesSetMachineTypeRequestResource).get(); * } * * @@ -2313,8 +2671,9 @@ public final Operation setMachineResourcesInstance( * @param instancesSetMachineTypeRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setMachineTypeInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setMachineTypeInstanceAsync( ProjectZoneInstanceName instance, InstancesSetMachineTypeRequest instancesSetMachineTypeRequestResource) { @@ -2323,7 +2682,7 @@ public final Operation setMachineTypeInstance( .setInstance(instance == null ? null : instance.toString()) .setInstancesSetMachineTypeRequestResource(instancesSetMachineTypeRequestResource) .build(); - return setMachineTypeInstance(request); + return setMachineTypeInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -2336,7 +2695,7 @@ public final Operation setMachineTypeInstance( * try (InstanceClient instanceClient = InstanceClient.create()) { * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * InstancesSetMachineTypeRequest instancesSetMachineTypeRequestResource = InstancesSetMachineTypeRequest.newBuilder().build(); - * Operation response = instanceClient.setMachineTypeInstance(instance.toString(), instancesSetMachineTypeRequestResource); + * instanceClient.setMachineTypeInstanceAsync(instance.toString(), instancesSetMachineTypeRequestResource).get(); * } * * @@ -2344,8 +2703,9 @@ public final Operation setMachineTypeInstance( * @param instancesSetMachineTypeRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setMachineTypeInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setMachineTypeInstanceAsync( String instance, InstancesSetMachineTypeRequest instancesSetMachineTypeRequestResource) { SetMachineTypeInstanceHttpRequest request = @@ -2353,7 +2713,7 @@ public final Operation setMachineTypeInstance( .setInstance(instance) .setInstancesSetMachineTypeRequestResource(instancesSetMachineTypeRequestResource) .build(); - return setMachineTypeInstance(request); + return setMachineTypeInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -2370,16 +2730,44 @@ public final Operation setMachineTypeInstance( * .setInstance(instance.toString()) * .setInstancesSetMachineTypeRequestResource(instancesSetMachineTypeRequestResource) * .build(); - * Operation response = instanceClient.setMachineTypeInstance(request); + * instanceClient.setMachineTypeInstanceAsync(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 */ - @BetaApi - public final Operation setMachineTypeInstance(SetMachineTypeInstanceHttpRequest request) { - return setMachineTypeInstanceCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setMachineTypeInstanceAsync( + SetMachineTypeInstanceHttpRequest request) { + return setMachineTypeInstanceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Changes the machine type for a stopped instance to the machine type specified in the request. + * + *

Sample code: + * + *


+   * try (InstanceClient instanceClient = InstanceClient.create()) {
+   *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
+   *   InstancesSetMachineTypeRequest instancesSetMachineTypeRequestResource = InstancesSetMachineTypeRequest.newBuilder().build();
+   *   SetMachineTypeInstanceHttpRequest request = SetMachineTypeInstanceHttpRequest.newBuilder()
+   *     .setInstance(instance.toString())
+   *     .setInstancesSetMachineTypeRequestResource(instancesSetMachineTypeRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceClient.setMachineTypeInstanceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + setMachineTypeInstanceOperationCallable() { + return stub.setMachineTypeInstanceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -2398,7 +2786,7 @@ public final Operation setMachineTypeInstance(SetMachineTypeInstanceHttpRequest * .build(); * ApiFuture<Operation> future = instanceClient.setMachineTypeInstanceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -2418,7 +2806,7 @@ public final Operation setMachineTypeInstance(SetMachineTypeInstanceHttpRequest * try (InstanceClient instanceClient = InstanceClient.create()) { * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * Metadata metadataResource = Metadata.newBuilder().build(); - * Operation response = instanceClient.setMetadataInstance(instance, metadataResource); + * instanceClient.setMetadataInstanceAsync(instance, metadataResource).get(); * } * * @@ -2426,8 +2814,9 @@ public final Operation setMachineTypeInstance(SetMachineTypeInstanceHttpRequest * @param metadataResource A metadata key/value entry. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setMetadataInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setMetadataInstanceAsync( ProjectZoneInstanceName instance, Metadata metadataResource) { SetMetadataInstanceHttpRequest request = @@ -2435,7 +2824,7 @@ public final Operation setMetadataInstance( .setInstance(instance == null ? null : instance.toString()) .setMetadataResource(metadataResource) .build(); - return setMetadataInstance(request); + return setMetadataInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -2448,7 +2837,7 @@ public final Operation setMetadataInstance( * try (InstanceClient instanceClient = InstanceClient.create()) { * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * Metadata metadataResource = Metadata.newBuilder().build(); - * Operation response = instanceClient.setMetadataInstance(instance.toString(), metadataResource); + * instanceClient.setMetadataInstanceAsync(instance.toString(), metadataResource).get(); * } * * @@ -2456,15 +2845,17 @@ public final Operation setMetadataInstance( * @param metadataResource A metadata key/value entry. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setMetadataInstance(String instance, Metadata metadataResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setMetadataInstanceAsync( + String instance, Metadata metadataResource) { SetMetadataInstanceHttpRequest request = SetMetadataInstanceHttpRequest.newBuilder() .setInstance(instance) .setMetadataResource(metadataResource) .build(); - return setMetadataInstance(request); + return setMetadataInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -2481,16 +2872,44 @@ public final Operation setMetadataInstance(String instance, Metadata metadataRes * .setInstance(instance.toString()) * .setMetadataResource(metadataResource) * .build(); - * Operation response = instanceClient.setMetadataInstance(request); + * instanceClient.setMetadataInstanceAsync(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 */ - @BetaApi - public final Operation setMetadataInstance(SetMetadataInstanceHttpRequest request) { - return setMetadataInstanceCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setMetadataInstanceAsync( + SetMetadataInstanceHttpRequest request) { + return setMetadataInstanceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Sets metadata for the specified instance to the data included in the request. + * + *

Sample code: + * + *


+   * try (InstanceClient instanceClient = InstanceClient.create()) {
+   *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
+   *   Metadata metadataResource = Metadata.newBuilder().build();
+   *   SetMetadataInstanceHttpRequest request = SetMetadataInstanceHttpRequest.newBuilder()
+   *     .setInstance(instance.toString())
+   *     .setMetadataResource(metadataResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceClient.setMetadataInstanceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + setMetadataInstanceOperationCallable() { + return stub.setMetadataInstanceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -2509,7 +2928,7 @@ public final Operation setMetadataInstance(SetMetadataInstanceHttpRequest reques * .build(); * ApiFuture<Operation> future = instanceClient.setMetadataInstanceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -2530,7 +2949,7 @@ public final Operation setMetadataInstance(SetMetadataInstanceHttpRequest reques * try (InstanceClient instanceClient = InstanceClient.create()) { * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * InstancesSetMinCpuPlatformRequest instancesSetMinCpuPlatformRequestResource = InstancesSetMinCpuPlatformRequest.newBuilder().build(); - * Operation response = instanceClient.setMinCpuPlatformInstance(instance, instancesSetMinCpuPlatformRequestResource); + * instanceClient.setMinCpuPlatformInstanceAsync(instance, instancesSetMinCpuPlatformRequestResource).get(); * } * * @@ -2538,8 +2957,9 @@ public final Operation setMetadataInstance(SetMetadataInstanceHttpRequest reques * @param instancesSetMinCpuPlatformRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setMinCpuPlatformInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setMinCpuPlatformInstanceAsync( ProjectZoneInstanceName instance, InstancesSetMinCpuPlatformRequest instancesSetMinCpuPlatformRequestResource) { @@ -2548,7 +2968,7 @@ public final Operation setMinCpuPlatformInstance( .setInstance(instance == null ? null : instance.toString()) .setInstancesSetMinCpuPlatformRequestResource(instancesSetMinCpuPlatformRequestResource) .build(); - return setMinCpuPlatformInstance(request); + return setMinCpuPlatformInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -2562,7 +2982,7 @@ public final Operation setMinCpuPlatformInstance( * try (InstanceClient instanceClient = InstanceClient.create()) { * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * InstancesSetMinCpuPlatformRequest instancesSetMinCpuPlatformRequestResource = InstancesSetMinCpuPlatformRequest.newBuilder().build(); - * Operation response = instanceClient.setMinCpuPlatformInstance(instance.toString(), instancesSetMinCpuPlatformRequestResource); + * instanceClient.setMinCpuPlatformInstanceAsync(instance.toString(), instancesSetMinCpuPlatformRequestResource).get(); * } * * @@ -2570,8 +2990,9 @@ public final Operation setMinCpuPlatformInstance( * @param instancesSetMinCpuPlatformRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setMinCpuPlatformInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setMinCpuPlatformInstanceAsync( String instance, InstancesSetMinCpuPlatformRequest instancesSetMinCpuPlatformRequestResource) { @@ -2580,7 +3001,7 @@ public final Operation setMinCpuPlatformInstance( .setInstance(instance) .setInstancesSetMinCpuPlatformRequestResource(instancesSetMinCpuPlatformRequestResource) .build(); - return setMinCpuPlatformInstance(request); + return setMinCpuPlatformInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -2598,16 +3019,45 @@ public final Operation setMinCpuPlatformInstance( * .setInstance(instance.toString()) * .setInstancesSetMinCpuPlatformRequestResource(instancesSetMinCpuPlatformRequestResource) * .build(); - * Operation response = instanceClient.setMinCpuPlatformInstance(request); + * instanceClient.setMinCpuPlatformInstanceAsync(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 */ - @BetaApi - public final Operation setMinCpuPlatformInstance(SetMinCpuPlatformInstanceHttpRequest request) { - return setMinCpuPlatformInstanceCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setMinCpuPlatformInstanceAsync( + SetMinCpuPlatformInstanceHttpRequest request) { + return setMinCpuPlatformInstanceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Changes the minimum CPU platform that this instance should use. This method can only be called + * on a stopped instance. For more information, read Specifying a Minimum CPU Platform. + * + *

Sample code: + * + *


+   * try (InstanceClient instanceClient = InstanceClient.create()) {
+   *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
+   *   InstancesSetMinCpuPlatformRequest instancesSetMinCpuPlatformRequestResource = InstancesSetMinCpuPlatformRequest.newBuilder().build();
+   *   SetMinCpuPlatformInstanceHttpRequest request = SetMinCpuPlatformInstanceHttpRequest.newBuilder()
+   *     .setInstance(instance.toString())
+   *     .setInstancesSetMinCpuPlatformRequestResource(instancesSetMinCpuPlatformRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceClient.setMinCpuPlatformInstanceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + setMinCpuPlatformInstanceOperationCallable() { + return stub.setMinCpuPlatformInstanceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -2627,7 +3077,7 @@ public final Operation setMinCpuPlatformInstance(SetMinCpuPlatformInstanceHttpRe * .build(); * ApiFuture<Operation> future = instanceClient.setMinCpuPlatformInstanceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -2647,7 +3097,7 @@ public final Operation setMinCpuPlatformInstance(SetMinCpuPlatformInstanceHttpRe * try (InstanceClient instanceClient = InstanceClient.create()) { * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * Scheduling schedulingResource = Scheduling.newBuilder().build(); - * Operation response = instanceClient.setSchedulingInstance(instance, schedulingResource); + * instanceClient.setSchedulingInstanceAsync(instance, schedulingResource).get(); * } * * @@ -2655,8 +3105,9 @@ public final Operation setMinCpuPlatformInstance(SetMinCpuPlatformInstanceHttpRe * @param schedulingResource Sets the scheduling options for an Instance. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setSchedulingInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setSchedulingInstanceAsync( ProjectZoneInstanceName instance, Scheduling schedulingResource) { SetSchedulingInstanceHttpRequest request = @@ -2664,7 +3115,7 @@ public final Operation setSchedulingInstance( .setInstance(instance == null ? null : instance.toString()) .setSchedulingResource(schedulingResource) .build(); - return setSchedulingInstance(request); + return setSchedulingInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -2677,7 +3128,7 @@ public final Operation setSchedulingInstance( * try (InstanceClient instanceClient = InstanceClient.create()) { * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * Scheduling schedulingResource = Scheduling.newBuilder().build(); - * Operation response = instanceClient.setSchedulingInstance(instance.toString(), schedulingResource); + * instanceClient.setSchedulingInstanceAsync(instance.toString(), schedulingResource).get(); * } * * @@ -2685,15 +3136,17 @@ public final Operation setSchedulingInstance( * @param schedulingResource Sets the scheduling options for an Instance. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setSchedulingInstance(String instance, Scheduling schedulingResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setSchedulingInstanceAsync( + String instance, Scheduling schedulingResource) { SetSchedulingInstanceHttpRequest request = SetSchedulingInstanceHttpRequest.newBuilder() .setInstance(instance) .setSchedulingResource(schedulingResource) .build(); - return setSchedulingInstance(request); + return setSchedulingInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -2710,16 +3163,44 @@ public final Operation setSchedulingInstance(String instance, Scheduling schedul * .setInstance(instance.toString()) * .setSchedulingResource(schedulingResource) * .build(); - * Operation response = instanceClient.setSchedulingInstance(request); + * instanceClient.setSchedulingInstanceAsync(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 */ - @BetaApi - public final Operation setSchedulingInstance(SetSchedulingInstanceHttpRequest request) { - return setSchedulingInstanceCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setSchedulingInstanceAsync( + SetSchedulingInstanceHttpRequest request) { + return setSchedulingInstanceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Sets an instance's scheduling options. + * + *

Sample code: + * + *


+   * try (InstanceClient instanceClient = InstanceClient.create()) {
+   *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
+   *   Scheduling schedulingResource = Scheduling.newBuilder().build();
+   *   SetSchedulingInstanceHttpRequest request = SetSchedulingInstanceHttpRequest.newBuilder()
+   *     .setInstance(instance.toString())
+   *     .setSchedulingResource(schedulingResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceClient.setSchedulingInstanceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + setSchedulingInstanceOperationCallable() { + return stub.setSchedulingInstanceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -2738,7 +3219,7 @@ public final Operation setSchedulingInstance(SetSchedulingInstanceHttpRequest re * .build(); * ApiFuture<Operation> future = instanceClient.setSchedulingInstanceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -2759,7 +3240,7 @@ public final Operation setSchedulingInstance(SetSchedulingInstanceHttpRequest re * try (InstanceClient instanceClient = InstanceClient.create()) { * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * InstancesSetServiceAccountRequest instancesSetServiceAccountRequestResource = InstancesSetServiceAccountRequest.newBuilder().build(); - * Operation response = instanceClient.setServiceAccountInstance(instance, instancesSetServiceAccountRequestResource); + * instanceClient.setServiceAccountInstanceAsync(instance, instancesSetServiceAccountRequestResource).get(); * } * * @@ -2767,8 +3248,9 @@ public final Operation setSchedulingInstance(SetSchedulingInstanceHttpRequest re * @param instancesSetServiceAccountRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setServiceAccountInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setServiceAccountInstanceAsync( ProjectZoneInstanceName instance, InstancesSetServiceAccountRequest instancesSetServiceAccountRequestResource) { @@ -2777,7 +3259,7 @@ public final Operation setServiceAccountInstance( .setInstance(instance == null ? null : instance.toString()) .setInstancesSetServiceAccountRequestResource(instancesSetServiceAccountRequestResource) .build(); - return setServiceAccountInstance(request); + return setServiceAccountInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -2791,7 +3273,7 @@ public final Operation setServiceAccountInstance( * try (InstanceClient instanceClient = InstanceClient.create()) { * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * InstancesSetServiceAccountRequest instancesSetServiceAccountRequestResource = InstancesSetServiceAccountRequest.newBuilder().build(); - * Operation response = instanceClient.setServiceAccountInstance(instance.toString(), instancesSetServiceAccountRequestResource); + * instanceClient.setServiceAccountInstanceAsync(instance.toString(), instancesSetServiceAccountRequestResource).get(); * } * * @@ -2799,8 +3281,9 @@ public final Operation setServiceAccountInstance( * @param instancesSetServiceAccountRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setServiceAccountInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setServiceAccountInstanceAsync( String instance, InstancesSetServiceAccountRequest instancesSetServiceAccountRequestResource) { @@ -2809,7 +3292,7 @@ public final Operation setServiceAccountInstance( .setInstance(instance) .setInstancesSetServiceAccountRequestResource(instancesSetServiceAccountRequestResource) .build(); - return setServiceAccountInstance(request); + return setServiceAccountInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -2827,16 +3310,45 @@ public final Operation setServiceAccountInstance( * .setInstance(instance.toString()) * .setInstancesSetServiceAccountRequestResource(instancesSetServiceAccountRequestResource) * .build(); - * Operation response = instanceClient.setServiceAccountInstance(request); + * instanceClient.setServiceAccountInstanceAsync(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 */ - @BetaApi - public final Operation setServiceAccountInstance(SetServiceAccountInstanceHttpRequest request) { - return setServiceAccountInstanceCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setServiceAccountInstanceAsync( + SetServiceAccountInstanceHttpRequest request) { + return setServiceAccountInstanceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Sets the service account on the instance. For more information, read Changing the service + * account and access scopes for an instance. + * + *

Sample code: + * + *


+   * try (InstanceClient instanceClient = InstanceClient.create()) {
+   *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
+   *   InstancesSetServiceAccountRequest instancesSetServiceAccountRequestResource = InstancesSetServiceAccountRequest.newBuilder().build();
+   *   SetServiceAccountInstanceHttpRequest request = SetServiceAccountInstanceHttpRequest.newBuilder()
+   *     .setInstance(instance.toString())
+   *     .setInstancesSetServiceAccountRequestResource(instancesSetServiceAccountRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceClient.setServiceAccountInstanceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + setServiceAccountInstanceOperationCallable() { + return stub.setServiceAccountInstanceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -2856,7 +3368,7 @@ public final Operation setServiceAccountInstance(SetServiceAccountInstanceHttpRe * .build(); * ApiFuture<Operation> future = instanceClient.setServiceAccountInstanceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -2876,7 +3388,7 @@ public final Operation setServiceAccountInstance(SetServiceAccountInstanceHttpRe * try (InstanceClient instanceClient = InstanceClient.create()) { * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * Tags tagsResource = Tags.newBuilder().build(); - * Operation response = instanceClient.setTagsInstance(instance, tagsResource); + * instanceClient.setTagsInstanceAsync(instance, tagsResource).get(); * } * * @@ -2884,15 +3396,17 @@ public final Operation setServiceAccountInstance(SetServiceAccountInstanceHttpRe * @param tagsResource A set of instance tags. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setTagsInstance(ProjectZoneInstanceName instance, Tags tagsResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setTagsInstanceAsync( + ProjectZoneInstanceName instance, Tags tagsResource) { SetTagsInstanceHttpRequest request = SetTagsInstanceHttpRequest.newBuilder() .setInstance(instance == null ? null : instance.toString()) .setTagsResource(tagsResource) .build(); - return setTagsInstance(request); + return setTagsInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -2905,7 +3419,7 @@ public final Operation setTagsInstance(ProjectZoneInstanceName instance, Tags ta * try (InstanceClient instanceClient = InstanceClient.create()) { * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * Tags tagsResource = Tags.newBuilder().build(); - * Operation response = instanceClient.setTagsInstance(instance.toString(), tagsResource); + * instanceClient.setTagsInstanceAsync(instance.toString(), tagsResource).get(); * } * * @@ -2913,15 +3427,17 @@ public final Operation setTagsInstance(ProjectZoneInstanceName instance, Tags ta * @param tagsResource A set of instance tags. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setTagsInstance(String instance, Tags tagsResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setTagsInstanceAsync( + String instance, Tags tagsResource) { SetTagsInstanceHttpRequest request = SetTagsInstanceHttpRequest.newBuilder() .setInstance(instance) .setTagsResource(tagsResource) .build(); - return setTagsInstance(request); + return setTagsInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -2938,16 +3454,44 @@ public final Operation setTagsInstance(String instance, Tags tagsResource) { * .setInstance(instance.toString()) * .setTagsResource(tagsResource) * .build(); - * Operation response = instanceClient.setTagsInstance(request); + * instanceClient.setTagsInstanceAsync(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 */ - @BetaApi - public final Operation setTagsInstance(SetTagsInstanceHttpRequest request) { - return setTagsInstanceCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setTagsInstanceAsync( + SetTagsInstanceHttpRequest request) { + return setTagsInstanceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Sets network tags for the specified instance to the data included in the request. + * + *

Sample code: + * + *


+   * try (InstanceClient instanceClient = InstanceClient.create()) {
+   *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
+   *   Tags tagsResource = Tags.newBuilder().build();
+   *   SetTagsInstanceHttpRequest request = SetTagsInstanceHttpRequest.newBuilder()
+   *     .setInstance(instance.toString())
+   *     .setTagsResource(tagsResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceClient.setTagsInstanceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + setTagsInstanceOperationCallable() { + return stub.setTagsInstanceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -2966,7 +3510,7 @@ public final Operation setTagsInstance(SetTagsInstanceHttpRequest request) { * .build(); * ApiFuture<Operation> future = instanceClient.setTagsInstanceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -2984,21 +3528,23 @@ public final UnaryCallable setTagsInstanc *

    * try (InstanceClient instanceClient = InstanceClient.create()) {
    *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
-   *   Operation response = instanceClient.simulateMaintenanceEventInstance(instance);
+   *   instanceClient.simulateMaintenanceEventInstanceAsync(instance).get();
    * }
    * 
* * @param instance Name of the instance scoping this request. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation simulateMaintenanceEventInstance(ProjectZoneInstanceName instance) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture simulateMaintenanceEventInstanceAsync( + ProjectZoneInstanceName instance) { SimulateMaintenanceEventInstanceHttpRequest request = SimulateMaintenanceEventInstanceHttpRequest.newBuilder() .setInstance(instance == null ? null : instance.toString()) .build(); - return simulateMaintenanceEventInstance(request); + return simulateMaintenanceEventInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -3010,19 +3556,21 @@ public final Operation simulateMaintenanceEventInstance(ProjectZoneInstanceName *

    * try (InstanceClient instanceClient = InstanceClient.create()) {
    *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
-   *   Operation response = instanceClient.simulateMaintenanceEventInstance(instance.toString());
+   *   instanceClient.simulateMaintenanceEventInstanceAsync(instance.toString()).get();
    * }
    * 
* * @param instance Name of the instance scoping this request. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation simulateMaintenanceEventInstance(String instance) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture simulateMaintenanceEventInstanceAsync( + String instance) { SimulateMaintenanceEventInstanceHttpRequest request = SimulateMaintenanceEventInstanceHttpRequest.newBuilder().setInstance(instance).build(); - return simulateMaintenanceEventInstance(request); + return simulateMaintenanceEventInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -3037,17 +3585,43 @@ public final Operation simulateMaintenanceEventInstance(String instance) { * SimulateMaintenanceEventInstanceHttpRequest request = SimulateMaintenanceEventInstanceHttpRequest.newBuilder() * .setInstance(instance.toString()) * .build(); - * Operation response = instanceClient.simulateMaintenanceEventInstance(request); + * instanceClient.simulateMaintenanceEventInstanceAsync(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 */ - @BetaApi - public final Operation simulateMaintenanceEventInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture simulateMaintenanceEventInstanceAsync( SimulateMaintenanceEventInstanceHttpRequest request) { - return simulateMaintenanceEventInstanceCallable().call(request); + return simulateMaintenanceEventInstanceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Simulates a maintenance event on the instance. + * + *

Sample code: + * + *


+   * try (InstanceClient instanceClient = InstanceClient.create()) {
+   *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
+   *   SimulateMaintenanceEventInstanceHttpRequest request = SimulateMaintenanceEventInstanceHttpRequest.newBuilder()
+   *     .setInstance(instance.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceClient.simulateMaintenanceEventInstanceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable< + SimulateMaintenanceEventInstanceHttpRequest, EmptyMessage, Operation> + simulateMaintenanceEventInstanceOperationCallable() { + return stub.simulateMaintenanceEventInstanceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -3064,7 +3638,7 @@ public final Operation simulateMaintenanceEventInstance( * .build(); * ApiFuture<Operation> future = instanceClient.simulateMaintenanceEventInstanceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -3084,21 +3658,23 @@ public final Operation simulateMaintenanceEventInstance( *

    * try (InstanceClient instanceClient = InstanceClient.create()) {
    *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
-   *   Operation response = instanceClient.startInstance(instance);
+   *   instanceClient.startInstanceAsync(instance).get();
    * }
    * 
* * @param instance Name of the instance resource to start. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation startInstance(ProjectZoneInstanceName instance) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture startInstanceAsync( + ProjectZoneInstanceName instance) { StartInstanceHttpRequest request = StartInstanceHttpRequest.newBuilder() .setInstance(instance == null ? null : instance.toString()) .build(); - return startInstance(request); + return startInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -3111,19 +3687,20 @@ public final Operation startInstance(ProjectZoneInstanceName instance) { *

    * try (InstanceClient instanceClient = InstanceClient.create()) {
    *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
-   *   Operation response = instanceClient.startInstance(instance.toString());
+   *   instanceClient.startInstanceAsync(instance.toString()).get();
    * }
    * 
* * @param instance Name of the instance resource to start. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation startInstance(String instance) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture startInstanceAsync(String instance) { StartInstanceHttpRequest request = StartInstanceHttpRequest.newBuilder().setInstance(instance).build(); - return startInstance(request); + return startInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -3139,16 +3716,43 @@ public final Operation startInstance(String instance) { * StartInstanceHttpRequest request = StartInstanceHttpRequest.newBuilder() * .setInstance(instance.toString()) * .build(); - * Operation response = instanceClient.startInstance(request); + * instanceClient.startInstanceAsync(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 */ - @BetaApi - public final Operation startInstance(StartInstanceHttpRequest request) { - return startInstanceCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture startInstanceAsync( + StartInstanceHttpRequest request) { + return startInstanceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Starts an instance that was stopped using the instances().stop method. For more information, + * see Restart an instance. + * + *

Sample code: + * + *


+   * try (InstanceClient instanceClient = InstanceClient.create()) {
+   *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
+   *   StartInstanceHttpRequest request = StartInstanceHttpRequest.newBuilder()
+   *     .setInstance(instance.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceClient.startInstanceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + startInstanceOperationCallable() { + return stub.startInstanceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -3166,7 +3770,7 @@ public final Operation startInstance(StartInstanceHttpRequest request) { * .build(); * ApiFuture<Operation> future = instanceClient.startInstanceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -3186,7 +3790,7 @@ public final UnaryCallable startInstanceCal * try (InstanceClient instanceClient = InstanceClient.create()) { * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * InstancesStartWithEncryptionKeyRequest instancesStartWithEncryptionKeyRequestResource = InstancesStartWithEncryptionKeyRequest.newBuilder().build(); - * Operation response = instanceClient.startWithEncryptionKeyInstance(instance, instancesStartWithEncryptionKeyRequestResource); + * instanceClient.startWithEncryptionKeyInstanceAsync(instance, instancesStartWithEncryptionKeyRequestResource).get(); * } * * @@ -3194,8 +3798,9 @@ public final UnaryCallable startInstanceCal * @param instancesStartWithEncryptionKeyRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation startWithEncryptionKeyInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture startWithEncryptionKeyInstanceAsync( ProjectZoneInstanceName instance, InstancesStartWithEncryptionKeyRequest instancesStartWithEncryptionKeyRequestResource) { @@ -3205,7 +3810,7 @@ public final Operation startWithEncryptionKeyInstance( .setInstancesStartWithEncryptionKeyRequestResource( instancesStartWithEncryptionKeyRequestResource) .build(); - return startWithEncryptionKeyInstance(request); + return startWithEncryptionKeyInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -3219,7 +3824,7 @@ public final Operation startWithEncryptionKeyInstance( * try (InstanceClient instanceClient = InstanceClient.create()) { * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * InstancesStartWithEncryptionKeyRequest instancesStartWithEncryptionKeyRequestResource = InstancesStartWithEncryptionKeyRequest.newBuilder().build(); - * Operation response = instanceClient.startWithEncryptionKeyInstance(instance.toString(), instancesStartWithEncryptionKeyRequestResource); + * instanceClient.startWithEncryptionKeyInstanceAsync(instance.toString(), instancesStartWithEncryptionKeyRequestResource).get(); * } * * @@ -3227,8 +3832,9 @@ public final Operation startWithEncryptionKeyInstance( * @param instancesStartWithEncryptionKeyRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation startWithEncryptionKeyInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture startWithEncryptionKeyInstanceAsync( String instance, InstancesStartWithEncryptionKeyRequest instancesStartWithEncryptionKeyRequestResource) { @@ -3238,7 +3844,7 @@ public final Operation startWithEncryptionKeyInstance( .setInstancesStartWithEncryptionKeyRequestResource( instancesStartWithEncryptionKeyRequestResource) .build(); - return startWithEncryptionKeyInstance(request); + return startWithEncryptionKeyInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -3256,17 +3862,45 @@ public final Operation startWithEncryptionKeyInstance( * .setInstance(instance.toString()) * .setInstancesStartWithEncryptionKeyRequestResource(instancesStartWithEncryptionKeyRequestResource) * .build(); - * Operation response = instanceClient.startWithEncryptionKeyInstance(request); + * instanceClient.startWithEncryptionKeyInstanceAsync(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 */ - @BetaApi - public final Operation startWithEncryptionKeyInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture startWithEncryptionKeyInstanceAsync( StartWithEncryptionKeyInstanceHttpRequest request) { - return startWithEncryptionKeyInstanceCallable().call(request); + return startWithEncryptionKeyInstanceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Starts an instance that was stopped using the instances().stop method. For more information, + * see Restart an instance. + * + *

Sample code: + * + *


+   * try (InstanceClient instanceClient = InstanceClient.create()) {
+   *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
+   *   InstancesStartWithEncryptionKeyRequest instancesStartWithEncryptionKeyRequestResource = InstancesStartWithEncryptionKeyRequest.newBuilder().build();
+   *   StartWithEncryptionKeyInstanceHttpRequest request = StartWithEncryptionKeyInstanceHttpRequest.newBuilder()
+   *     .setInstance(instance.toString())
+   *     .setInstancesStartWithEncryptionKeyRequestResource(instancesStartWithEncryptionKeyRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceClient.startWithEncryptionKeyInstanceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + startWithEncryptionKeyInstanceOperationCallable() { + return stub.startWithEncryptionKeyInstanceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -3286,7 +3920,7 @@ public final Operation startWithEncryptionKeyInstance( * .build(); * ApiFuture<Operation> future = instanceClient.startWithEncryptionKeyInstanceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -3308,21 +3942,23 @@ public final Operation startWithEncryptionKeyInstance( *

    * try (InstanceClient instanceClient = InstanceClient.create()) {
    *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
-   *   Operation response = instanceClient.stopInstance(instance);
+   *   instanceClient.stopInstanceAsync(instance).get();
    * }
    * 
* * @param instance Name of the instance resource to stop. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation stopInstance(ProjectZoneInstanceName instance) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture stopInstanceAsync( + ProjectZoneInstanceName instance) { StopInstanceHttpRequest request = StopInstanceHttpRequest.newBuilder() .setInstance(instance == null ? null : instance.toString()) .build(); - return stopInstance(request); + return stopInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -3337,19 +3973,20 @@ public final Operation stopInstance(ProjectZoneInstanceName instance) { *

    * try (InstanceClient instanceClient = InstanceClient.create()) {
    *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
-   *   Operation response = instanceClient.stopInstance(instance.toString());
+   *   instanceClient.stopInstanceAsync(instance.toString()).get();
    * }
    * 
* * @param instance Name of the instance resource to stop. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation stopInstance(String instance) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture stopInstanceAsync(String instance) { StopInstanceHttpRequest request = StopInstanceHttpRequest.newBuilder().setInstance(instance).build(); - return stopInstance(request); + return stopInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -3367,16 +4004,45 @@ public final Operation stopInstance(String instance) { * StopInstanceHttpRequest request = StopInstanceHttpRequest.newBuilder() * .setInstance(instance.toString()) * .build(); - * Operation response = instanceClient.stopInstance(request); + * instanceClient.stopInstanceAsync(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 */ - @BetaApi - public final Operation stopInstance(StopInstanceHttpRequest request) { - return stopInstanceCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture stopInstanceAsync( + StopInstanceHttpRequest request) { + return stopInstanceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Stops a running instance, shutting it down cleanly, and allows you to restart the instance at a + * later time. Stopped instances do not incur VM usage charges while they are stopped. However, + * resources that the VM is using, such as persistent disks and static IP addresses, will continue + * to be charged until they are deleted. For more information, see Stopping an instance. + * + *

Sample code: + * + *


+   * try (InstanceClient instanceClient = InstanceClient.create()) {
+   *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
+   *   StopInstanceHttpRequest request = StopInstanceHttpRequest.newBuilder()
+   *     .setInstance(instance.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceClient.stopInstanceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + stopInstanceOperationCallable() { + return stub.stopInstanceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -3396,7 +4062,7 @@ public final Operation stopInstance(StopInstanceHttpRequest request) { * .build(); * ApiFuture<Operation> future = instanceClient.stopInstanceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -3532,7 +4198,7 @@ public final TestPermissionsResponse testIamPermissionsInstance( * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * String networkInterface = ""; * AccessConfig accessConfigResource = AccessConfig.newBuilder().build(); - * Operation response = instanceClient.updateAccessConfigInstance(instance, networkInterface, accessConfigResource); + * instanceClient.updateAccessConfigInstanceAsync(instance, networkInterface, accessConfigResource).get(); * } * * @@ -3542,8 +4208,9 @@ public final TestPermissionsResponse testIamPermissionsInstance( * interface. Only one access config per instance is supported. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation updateAccessConfigInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateAccessConfigInstanceAsync( ProjectZoneInstanceName instance, String networkInterface, AccessConfig accessConfigResource) { @@ -3554,7 +4221,7 @@ public final Operation updateAccessConfigInstance( .setNetworkInterface(networkInterface) .setAccessConfigResource(accessConfigResource) .build(); - return updateAccessConfigInstance(request); + return updateAccessConfigInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -3570,7 +4237,7 @@ public final Operation updateAccessConfigInstance( * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); * String networkInterface = ""; * AccessConfig accessConfigResource = AccessConfig.newBuilder().build(); - * Operation response = instanceClient.updateAccessConfigInstance(instance.toString(), networkInterface, accessConfigResource); + * instanceClient.updateAccessConfigInstanceAsync(instance.toString(), networkInterface, accessConfigResource).get(); * } * * @@ -3580,8 +4247,9 @@ public final Operation updateAccessConfigInstance( * interface. Only one access config per instance is supported. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation updateAccessConfigInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateAccessConfigInstanceAsync( String instance, String networkInterface, AccessConfig accessConfigResource) { UpdateAccessConfigInstanceHttpRequest request = @@ -3590,7 +4258,7 @@ public final Operation updateAccessConfigInstance( .setNetworkInterface(networkInterface) .setAccessConfigResource(accessConfigResource) .build(); - return updateAccessConfigInstance(request); + return updateAccessConfigInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -3611,16 +4279,48 @@ public final Operation updateAccessConfigInstance( * .setNetworkInterface(networkInterface) * .setAccessConfigResource(accessConfigResource) * .build(); - * Operation response = instanceClient.updateAccessConfigInstance(request); + * instanceClient.updateAccessConfigInstanceAsync(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 */ - @BetaApi - public final Operation updateAccessConfigInstance(UpdateAccessConfigInstanceHttpRequest request) { - return updateAccessConfigInstanceCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateAccessConfigInstanceAsync( + UpdateAccessConfigInstanceHttpRequest request) { + return updateAccessConfigInstanceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Updates the specified access config from an instance's network interface with the data included + * in the request. This method supports PATCH semantics and uses the JSON merge patch format and + * processing rules. + * + *

Sample code: + * + *


+   * try (InstanceClient instanceClient = InstanceClient.create()) {
+   *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
+   *   String networkInterface = "";
+   *   AccessConfig accessConfigResource = AccessConfig.newBuilder().build();
+   *   UpdateAccessConfigInstanceHttpRequest request = UpdateAccessConfigInstanceHttpRequest.newBuilder()
+   *     .setInstance(instance.toString())
+   *     .setNetworkInterface(networkInterface)
+   *     .setAccessConfigResource(accessConfigResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceClient.updateAccessConfigInstanceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + updateAccessConfigInstanceOperationCallable() { + return stub.updateAccessConfigInstanceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -3643,7 +4343,7 @@ public final Operation updateAccessConfigInstance(UpdateAccessConfigInstanceHttp * .build(); * ApiFuture<Operation> future = instanceClient.updateAccessConfigInstanceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -3665,7 +4365,7 @@ public final Operation updateAccessConfigInstance(UpdateAccessConfigInstanceHttp * String networkInterface = ""; * NetworkInterface networkInterfaceResource = NetworkInterface.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = instanceClient.updateNetworkInterfaceInstance(instance, networkInterface, networkInterfaceResource, fieldMask); + * instanceClient.updateNetworkInterfaceInstanceAsync(instance, networkInterface, networkInterfaceResource, fieldMask).get(); * } * * @@ -3678,8 +4378,9 @@ public final Operation updateAccessConfigInstance(UpdateAccessConfigInstanceHttp * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation updateNetworkInterfaceInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateNetworkInterfaceInstanceAsync( ProjectZoneInstanceName instance, String networkInterface, NetworkInterface networkInterfaceResource, @@ -3692,7 +4393,7 @@ public final Operation updateNetworkInterfaceInstance( .setNetworkInterfaceResource(networkInterfaceResource) .addAllFieldMask(fieldMask) .build(); - return updateNetworkInterfaceInstance(request); + return updateNetworkInterfaceInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -3707,7 +4408,7 @@ public final Operation updateNetworkInterfaceInstance( * String networkInterface = ""; * NetworkInterface networkInterfaceResource = NetworkInterface.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = instanceClient.updateNetworkInterfaceInstance(instance.toString(), networkInterface, networkInterfaceResource, fieldMask); + * instanceClient.updateNetworkInterfaceInstanceAsync(instance.toString(), networkInterface, networkInterfaceResource, fieldMask).get(); * } * * @@ -3720,8 +4421,9 @@ public final Operation updateNetworkInterfaceInstance( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation updateNetworkInterfaceInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateNetworkInterfaceInstanceAsync( String instance, String networkInterface, NetworkInterface networkInterfaceResource, @@ -3734,7 +4436,7 @@ public final Operation updateNetworkInterfaceInstance( .setNetworkInterfaceResource(networkInterfaceResource) .addAllFieldMask(fieldMask) .build(); - return updateNetworkInterfaceInstance(request); + return updateNetworkInterfaceInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -3755,17 +4457,48 @@ public final Operation updateNetworkInterfaceInstance( * .setNetworkInterfaceResource(networkInterfaceResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = instanceClient.updateNetworkInterfaceInstance(request); + * instanceClient.updateNetworkInterfaceInstanceAsync(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 */ - @BetaApi - public final Operation updateNetworkInterfaceInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateNetworkInterfaceInstanceAsync( UpdateNetworkInterfaceInstanceHttpRequest request) { - return updateNetworkInterfaceInstanceCallable().call(request); + return updateNetworkInterfaceInstanceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Updates an instance's network interface. This method follows PATCH semantics. + * + *

Sample code: + * + *


+   * try (InstanceClient instanceClient = InstanceClient.create()) {
+   *   ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
+   *   String networkInterface = "";
+   *   NetworkInterface networkInterfaceResource = NetworkInterface.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   UpdateNetworkInterfaceInstanceHttpRequest request = UpdateNetworkInterfaceInstanceHttpRequest.newBuilder()
+   *     .setInstance(instance.toString())
+   *     .setNetworkInterface(networkInterface)
+   *     .setNetworkInterfaceResource(networkInterfaceResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceClient.updateNetworkInterfaceInstanceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + updateNetworkInterfaceInstanceOperationCallable() { + return stub.updateNetworkInterfaceInstanceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -3788,7 +4521,7 @@ public final Operation updateNetworkInterfaceInstance( * .build(); * ApiFuture<Operation> future = instanceClient.updateNetworkInterfaceInstanceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceGroupClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceGroupClient.java index 11efff7ab9d4..c2ec5613a36d 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceGroupClient.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceGroupClient.java @@ -20,9 +20,12 @@ import com.google.api.core.ApiFutures; import com.google.api.core.BetaApi; import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.httpjson.EmptyMessage; +import com.google.api.gax.longrunning.OperationFuture; import com.google.api.gax.paging.AbstractFixedSizeCollection; import com.google.api.gax.paging.AbstractPage; import com.google.api.gax.paging.AbstractPagedListResponse; +import com.google.api.gax.rpc.OperationCallable; import com.google.api.gax.rpc.PageContext; import com.google.api.gax.rpc.UnaryCallable; import com.google.cloud.compute.v1.stub.InstanceGroupStub; @@ -43,8 +46,7 @@ * * try (InstanceGroupClient instanceGroupClient = InstanceGroupClient.create()) { * ProjectZoneInstanceGroupName instanceGroup = ProjectZoneInstanceGroupName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP]"); - * InstanceGroupsAddInstancesRequest instanceGroupsAddInstancesRequestResource = InstanceGroupsAddInstancesRequest.newBuilder().build(); - * Operation response = instanceGroupClient.addInstancesInstanceGroup(instanceGroup, instanceGroupsAddInstancesRequestResource); + * InstanceGroup response = instanceGroupClient.getInstanceGroup(instanceGroup); * } * * @@ -104,6 +106,7 @@ public class InstanceGroupClient implements BackgroundResource { private final InstanceGroupSettings settings; private final InstanceGroupStub stub; + private final ZoneOperationClient operationsClient; /** Constructs an instance of InstanceGroupClient with default settings. */ public static final InstanceGroupClient create() throws IOException { @@ -136,12 +139,14 @@ public static final InstanceGroupClient create(InstanceGroupStub stub) { protected InstanceGroupClient(InstanceGroupSettings settings) throws IOException { this.settings = settings; this.stub = ((InstanceGroupStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = ZoneOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected InstanceGroupClient(InstanceGroupStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = ZoneOperationClient.create(this.stub.getOperationsStub()); } public final InstanceGroupSettings getSettings() { @@ -153,6 +158,16 @@ public InstanceGroupStub getStub() { return stub; } + /** + * Returns the ZoneOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final ZoneOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Adds a list of instances to the specified instance group. All of the instances in the instance @@ -164,7 +179,7 @@ public InstanceGroupStub getStub() { * try (InstanceGroupClient instanceGroupClient = InstanceGroupClient.create()) { * ProjectZoneInstanceGroupName instanceGroup = ProjectZoneInstanceGroupName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP]"); * InstanceGroupsAddInstancesRequest instanceGroupsAddInstancesRequestResource = InstanceGroupsAddInstancesRequest.newBuilder().build(); - * Operation response = instanceGroupClient.addInstancesInstanceGroup(instanceGroup, instanceGroupsAddInstancesRequestResource); + * instanceGroupClient.addInstancesInstanceGroupAsync(instanceGroup, instanceGroupsAddInstancesRequestResource).get(); * } * * @@ -172,8 +187,9 @@ public InstanceGroupStub getStub() { * @param instanceGroupsAddInstancesRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation addInstancesInstanceGroup( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture addInstancesInstanceGroupAsync( ProjectZoneInstanceGroupName instanceGroup, InstanceGroupsAddInstancesRequest instanceGroupsAddInstancesRequestResource) { @@ -182,7 +198,7 @@ public final Operation addInstancesInstanceGroup( .setInstanceGroup(instanceGroup == null ? null : instanceGroup.toString()) .setInstanceGroupsAddInstancesRequestResource(instanceGroupsAddInstancesRequestResource) .build(); - return addInstancesInstanceGroup(request); + return addInstancesInstanceGroupAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -196,7 +212,7 @@ public final Operation addInstancesInstanceGroup( * try (InstanceGroupClient instanceGroupClient = InstanceGroupClient.create()) { * ProjectZoneInstanceGroupName instanceGroup = ProjectZoneInstanceGroupName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP]"); * InstanceGroupsAddInstancesRequest instanceGroupsAddInstancesRequestResource = InstanceGroupsAddInstancesRequest.newBuilder().build(); - * Operation response = instanceGroupClient.addInstancesInstanceGroup(instanceGroup.toString(), instanceGroupsAddInstancesRequestResource); + * instanceGroupClient.addInstancesInstanceGroupAsync(instanceGroup.toString(), instanceGroupsAddInstancesRequestResource).get(); * } * * @@ -204,8 +220,9 @@ public final Operation addInstancesInstanceGroup( * @param instanceGroupsAddInstancesRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation addInstancesInstanceGroup( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture addInstancesInstanceGroupAsync( String instanceGroup, InstanceGroupsAddInstancesRequest instanceGroupsAddInstancesRequestResource) { @@ -214,7 +231,7 @@ public final Operation addInstancesInstanceGroup( .setInstanceGroup(instanceGroup) .setInstanceGroupsAddInstancesRequestResource(instanceGroupsAddInstancesRequestResource) .build(); - return addInstancesInstanceGroup(request); + return addInstancesInstanceGroupAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -232,16 +249,45 @@ public final Operation addInstancesInstanceGroup( * .setInstanceGroup(instanceGroup.toString()) * .setInstanceGroupsAddInstancesRequestResource(instanceGroupsAddInstancesRequestResource) * .build(); - * Operation response = instanceGroupClient.addInstancesInstanceGroup(request); + * instanceGroupClient.addInstancesInstanceGroupAsync(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 */ - @BetaApi - public final Operation addInstancesInstanceGroup(AddInstancesInstanceGroupHttpRequest request) { - return addInstancesInstanceGroupCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture addInstancesInstanceGroupAsync( + AddInstancesInstanceGroupHttpRequest request) { + return addInstancesInstanceGroupOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Adds a list of instances to the specified instance group. All of the instances in the instance + * group must be in the same network/subnetwork. Read Adding instances for more information. + * + *

Sample code: + * + *


+   * try (InstanceGroupClient instanceGroupClient = InstanceGroupClient.create()) {
+   *   ProjectZoneInstanceGroupName instanceGroup = ProjectZoneInstanceGroupName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP]");
+   *   InstanceGroupsAddInstancesRequest instanceGroupsAddInstancesRequestResource = InstanceGroupsAddInstancesRequest.newBuilder().build();
+   *   AddInstancesInstanceGroupHttpRequest request = AddInstancesInstanceGroupHttpRequest.newBuilder()
+   *     .setInstanceGroup(instanceGroup.toString())
+   *     .setInstanceGroupsAddInstancesRequestResource(instanceGroupsAddInstancesRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceGroupClient.addInstancesInstanceGroupOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + addInstancesInstanceGroupOperationCallable() { + return stub.addInstancesInstanceGroupOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -261,7 +307,7 @@ public final Operation addInstancesInstanceGroup(AddInstancesInstanceGroupHttpRe * .build(); * ApiFuture<Operation> future = instanceGroupClient.addInstancesInstanceGroupCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -423,21 +469,23 @@ public final AggregatedListInstanceGroupsPagedResponse aggregatedListInstanceGro *

    * try (InstanceGroupClient instanceGroupClient = InstanceGroupClient.create()) {
    *   ProjectZoneInstanceGroupName instanceGroup = ProjectZoneInstanceGroupName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP]");
-   *   Operation response = instanceGroupClient.deleteInstanceGroup(instanceGroup);
+   *   instanceGroupClient.deleteInstanceGroupAsync(instanceGroup).get();
    * }
    * 
* * @param instanceGroup The name of the instance group to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteInstanceGroup(ProjectZoneInstanceGroupName instanceGroup) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteInstanceGroupAsync( + ProjectZoneInstanceGroupName instanceGroup) { DeleteInstanceGroupHttpRequest request = DeleteInstanceGroupHttpRequest.newBuilder() .setInstanceGroup(instanceGroup == null ? null : instanceGroup.toString()) .build(); - return deleteInstanceGroup(request); + return deleteInstanceGroupAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -451,19 +499,21 @@ public final Operation deleteInstanceGroup(ProjectZoneInstanceGroupName instance *

    * try (InstanceGroupClient instanceGroupClient = InstanceGroupClient.create()) {
    *   ProjectZoneInstanceGroupName instanceGroup = ProjectZoneInstanceGroupName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP]");
-   *   Operation response = instanceGroupClient.deleteInstanceGroup(instanceGroup.toString());
+   *   instanceGroupClient.deleteInstanceGroupAsync(instanceGroup.toString()).get();
    * }
    * 
* * @param instanceGroup The name of the instance group to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteInstanceGroup(String instanceGroup) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteInstanceGroupAsync( + String instanceGroup) { DeleteInstanceGroupHttpRequest request = DeleteInstanceGroupHttpRequest.newBuilder().setInstanceGroup(instanceGroup).build(); - return deleteInstanceGroup(request); + return deleteInstanceGroupAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -480,16 +530,44 @@ public final Operation deleteInstanceGroup(String instanceGroup) { * DeleteInstanceGroupHttpRequest request = DeleteInstanceGroupHttpRequest.newBuilder() * .setInstanceGroup(instanceGroup.toString()) * .build(); - * Operation response = instanceGroupClient.deleteInstanceGroup(request); + * instanceGroupClient.deleteInstanceGroupAsync(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 */ - @BetaApi - public final Operation deleteInstanceGroup(DeleteInstanceGroupHttpRequest request) { - return deleteInstanceGroupCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteInstanceGroupAsync( + DeleteInstanceGroupHttpRequest request) { + return deleteInstanceGroupOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified instance group. The instances in the group are not deleted. Note that + * instance group must not belong to a backend service. Read Deleting an instance group for more + * information. + * + *

Sample code: + * + *


+   * try (InstanceGroupClient instanceGroupClient = InstanceGroupClient.create()) {
+   *   ProjectZoneInstanceGroupName instanceGroup = ProjectZoneInstanceGroupName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP]");
+   *   DeleteInstanceGroupHttpRequest request = DeleteInstanceGroupHttpRequest.newBuilder()
+   *     .setInstanceGroup(instanceGroup.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceGroupClient.deleteInstanceGroupOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteInstanceGroupOperationCallable() { + return stub.deleteInstanceGroupOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -508,7 +586,7 @@ public final Operation deleteInstanceGroup(DeleteInstanceGroupHttpRequest reques * .build(); * ApiFuture<Operation> future = instanceGroupClient.deleteInstanceGroupCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -631,7 +709,7 @@ public final InstanceGroup getInstanceGroup(GetInstanceGroupHttpRequest request) * try (InstanceGroupClient instanceGroupClient = InstanceGroupClient.create()) { * ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]"); * InstanceGroup instanceGroupResource = InstanceGroup.newBuilder().build(); - * Operation response = instanceGroupClient.insertInstanceGroup(zone, instanceGroupResource); + * instanceGroupClient.insertInstanceGroupAsync(zone, instanceGroupResource).get(); * } * * @@ -641,8 +719,9 @@ public final InstanceGroup getInstanceGroup(GetInstanceGroupHttpRequest request) * resource_for v1.regionInstanceGroups ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertInstanceGroup( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertInstanceGroupAsync( ProjectZoneName zone, InstanceGroup instanceGroupResource) { InsertInstanceGroupHttpRequest request = @@ -650,7 +729,7 @@ public final Operation insertInstanceGroup( .setZone(zone == null ? null : zone.toString()) .setInstanceGroupResource(instanceGroupResource) .build(); - return insertInstanceGroup(request); + return insertInstanceGroupAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -664,7 +743,7 @@ public final Operation insertInstanceGroup( * try (InstanceGroupClient instanceGroupClient = InstanceGroupClient.create()) { * ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]"); * InstanceGroup instanceGroupResource = InstanceGroup.newBuilder().build(); - * Operation response = instanceGroupClient.insertInstanceGroup(zone.toString(), instanceGroupResource); + * instanceGroupClient.insertInstanceGroupAsync(zone.toString(), instanceGroupResource).get(); * } * * @@ -674,15 +753,17 @@ public final Operation insertInstanceGroup( * resource_for v1.regionInstanceGroups ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertInstanceGroup(String zone, InstanceGroup instanceGroupResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertInstanceGroupAsync( + String zone, InstanceGroup instanceGroupResource) { InsertInstanceGroupHttpRequest request = InsertInstanceGroupHttpRequest.newBuilder() .setZone(zone) .setInstanceGroupResource(instanceGroupResource) .build(); - return insertInstanceGroup(request); + return insertInstanceGroupAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -700,16 +781,45 @@ public final Operation insertInstanceGroup(String zone, InstanceGroup instanceGr * .setZone(zone.toString()) * .setInstanceGroupResource(instanceGroupResource) * .build(); - * Operation response = instanceGroupClient.insertInstanceGroup(request); + * instanceGroupClient.insertInstanceGroupAsync(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 */ - @BetaApi - public final Operation insertInstanceGroup(InsertInstanceGroupHttpRequest request) { - return insertInstanceGroupCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertInstanceGroupAsync( + InsertInstanceGroupHttpRequest request) { + return insertInstanceGroupOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates an instance group in the specified project using the parameters that are included in + * the request. + * + *

Sample code: + * + *


+   * try (InstanceGroupClient instanceGroupClient = InstanceGroupClient.create()) {
+   *   ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
+   *   InstanceGroup instanceGroupResource = InstanceGroup.newBuilder().build();
+   *   InsertInstanceGroupHttpRequest request = InsertInstanceGroupHttpRequest.newBuilder()
+   *     .setZone(zone.toString())
+   *     .setInstanceGroupResource(instanceGroupResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceGroupClient.insertInstanceGroupOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertInstanceGroupOperationCallable() { + return stub.insertInstanceGroupOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -729,7 +839,7 @@ public final Operation insertInstanceGroup(InsertInstanceGroupHttpRequest reques * .build(); * ApiFuture<Operation> future = instanceGroupClient.insertInstanceGroupCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1053,7 +1163,7 @@ public final ListInstancesInstanceGroupsPagedResponse listInstancesInstanceGroup * try (InstanceGroupClient instanceGroupClient = InstanceGroupClient.create()) { * ProjectZoneInstanceGroupName instanceGroup = ProjectZoneInstanceGroupName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP]"); * InstanceGroupsRemoveInstancesRequest instanceGroupsRemoveInstancesRequestResource = InstanceGroupsRemoveInstancesRequest.newBuilder().build(); - * Operation response = instanceGroupClient.removeInstancesInstanceGroup(instanceGroup, instanceGroupsRemoveInstancesRequestResource); + * instanceGroupClient.removeInstancesInstanceGroupAsync(instanceGroup, instanceGroupsRemoveInstancesRequestResource).get(); * } * * @@ -1062,8 +1172,9 @@ public final ListInstancesInstanceGroupsPagedResponse listInstancesInstanceGroup * @param instanceGroupsRemoveInstancesRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation removeInstancesInstanceGroup( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture removeInstancesInstanceGroupAsync( ProjectZoneInstanceGroupName instanceGroup, InstanceGroupsRemoveInstancesRequest instanceGroupsRemoveInstancesRequestResource) { @@ -1073,7 +1184,7 @@ public final Operation removeInstancesInstanceGroup( .setInstanceGroupsRemoveInstancesRequestResource( instanceGroupsRemoveInstancesRequestResource) .build(); - return removeInstancesInstanceGroup(request); + return removeInstancesInstanceGroupAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1091,7 +1202,7 @@ public final Operation removeInstancesInstanceGroup( * try (InstanceGroupClient instanceGroupClient = InstanceGroupClient.create()) { * ProjectZoneInstanceGroupName instanceGroup = ProjectZoneInstanceGroupName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP]"); * InstanceGroupsRemoveInstancesRequest instanceGroupsRemoveInstancesRequestResource = InstanceGroupsRemoveInstancesRequest.newBuilder().build(); - * Operation response = instanceGroupClient.removeInstancesInstanceGroup(instanceGroup.toString(), instanceGroupsRemoveInstancesRequestResource); + * instanceGroupClient.removeInstancesInstanceGroupAsync(instanceGroup.toString(), instanceGroupsRemoveInstancesRequestResource).get(); * } * * @@ -1100,8 +1211,9 @@ public final Operation removeInstancesInstanceGroup( * @param instanceGroupsRemoveInstancesRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation removeInstancesInstanceGroup( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture removeInstancesInstanceGroupAsync( String instanceGroup, InstanceGroupsRemoveInstancesRequest instanceGroupsRemoveInstancesRequestResource) { @@ -1111,7 +1223,7 @@ public final Operation removeInstancesInstanceGroup( .setInstanceGroupsRemoveInstancesRequestResource( instanceGroupsRemoveInstancesRequestResource) .build(); - return removeInstancesInstanceGroup(request); + return removeInstancesInstanceGroupAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1133,17 +1245,49 @@ public final Operation removeInstancesInstanceGroup( * .setInstanceGroup(instanceGroup.toString()) * .setInstanceGroupsRemoveInstancesRequestResource(instanceGroupsRemoveInstancesRequestResource) * .build(); - * Operation response = instanceGroupClient.removeInstancesInstanceGroup(request); + * instanceGroupClient.removeInstancesInstanceGroupAsync(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 */ - @BetaApi - public final Operation removeInstancesInstanceGroup( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture removeInstancesInstanceGroupAsync( RemoveInstancesInstanceGroupHttpRequest request) { - return removeInstancesInstanceGroupCallable().call(request); + return removeInstancesInstanceGroupOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Removes one or more instances from the specified instance group, but does not delete those + * instances. + * + *

If the group is part of a backend service that has enabled connection draining, it can take + * up to 60 seconds after the connection draining duration before the VM instance is removed or + * deleted. + * + *

Sample code: + * + *


+   * try (InstanceGroupClient instanceGroupClient = InstanceGroupClient.create()) {
+   *   ProjectZoneInstanceGroupName instanceGroup = ProjectZoneInstanceGroupName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP]");
+   *   InstanceGroupsRemoveInstancesRequest instanceGroupsRemoveInstancesRequestResource = InstanceGroupsRemoveInstancesRequest.newBuilder().build();
+   *   RemoveInstancesInstanceGroupHttpRequest request = RemoveInstancesInstanceGroupHttpRequest.newBuilder()
+   *     .setInstanceGroup(instanceGroup.toString())
+   *     .setInstanceGroupsRemoveInstancesRequestResource(instanceGroupsRemoveInstancesRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceGroupClient.removeInstancesInstanceGroupOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + removeInstancesInstanceGroupOperationCallable() { + return stub.removeInstancesInstanceGroupOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1167,7 +1311,7 @@ public final Operation removeInstancesInstanceGroup( * .build(); * ApiFuture<Operation> future = instanceGroupClient.removeInstancesInstanceGroupCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1187,7 +1331,7 @@ public final Operation removeInstancesInstanceGroup( * try (InstanceGroupClient instanceGroupClient = InstanceGroupClient.create()) { * ProjectZoneInstanceGroupName instanceGroup = ProjectZoneInstanceGroupName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP]"); * InstanceGroupsSetNamedPortsRequest instanceGroupsSetNamedPortsRequestResource = InstanceGroupsSetNamedPortsRequest.newBuilder().build(); - * Operation response = instanceGroupClient.setNamedPortsInstanceGroup(instanceGroup, instanceGroupsSetNamedPortsRequestResource); + * instanceGroupClient.setNamedPortsInstanceGroupAsync(instanceGroup, instanceGroupsSetNamedPortsRequestResource).get(); * } * * @@ -1195,8 +1339,9 @@ public final Operation removeInstancesInstanceGroup( * @param instanceGroupsSetNamedPortsRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setNamedPortsInstanceGroup( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setNamedPortsInstanceGroupAsync( ProjectZoneInstanceGroupName instanceGroup, InstanceGroupsSetNamedPortsRequest instanceGroupsSetNamedPortsRequestResource) { @@ -1206,7 +1351,7 @@ public final Operation setNamedPortsInstanceGroup( .setInstanceGroupsSetNamedPortsRequestResource( instanceGroupsSetNamedPortsRequestResource) .build(); - return setNamedPortsInstanceGroup(request); + return setNamedPortsInstanceGroupAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1219,7 +1364,7 @@ public final Operation setNamedPortsInstanceGroup( * try (InstanceGroupClient instanceGroupClient = InstanceGroupClient.create()) { * ProjectZoneInstanceGroupName instanceGroup = ProjectZoneInstanceGroupName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP]"); * InstanceGroupsSetNamedPortsRequest instanceGroupsSetNamedPortsRequestResource = InstanceGroupsSetNamedPortsRequest.newBuilder().build(); - * Operation response = instanceGroupClient.setNamedPortsInstanceGroup(instanceGroup.toString(), instanceGroupsSetNamedPortsRequestResource); + * instanceGroupClient.setNamedPortsInstanceGroupAsync(instanceGroup.toString(), instanceGroupsSetNamedPortsRequestResource).get(); * } * * @@ -1227,8 +1372,9 @@ public final Operation setNamedPortsInstanceGroup( * @param instanceGroupsSetNamedPortsRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setNamedPortsInstanceGroup( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setNamedPortsInstanceGroupAsync( String instanceGroup, InstanceGroupsSetNamedPortsRequest instanceGroupsSetNamedPortsRequestResource) { @@ -1238,7 +1384,7 @@ public final Operation setNamedPortsInstanceGroup( .setInstanceGroupsSetNamedPortsRequestResource( instanceGroupsSetNamedPortsRequestResource) .build(); - return setNamedPortsInstanceGroup(request); + return setNamedPortsInstanceGroupAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1255,16 +1401,44 @@ public final Operation setNamedPortsInstanceGroup( * .setInstanceGroup(instanceGroup.toString()) * .setInstanceGroupsSetNamedPortsRequestResource(instanceGroupsSetNamedPortsRequestResource) * .build(); - * Operation response = instanceGroupClient.setNamedPortsInstanceGroup(request); + * instanceGroupClient.setNamedPortsInstanceGroupAsync(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 */ - @BetaApi - public final Operation setNamedPortsInstanceGroup(SetNamedPortsInstanceGroupHttpRequest request) { - return setNamedPortsInstanceGroupCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setNamedPortsInstanceGroupAsync( + SetNamedPortsInstanceGroupHttpRequest request) { + return setNamedPortsInstanceGroupOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Sets the named ports for the specified instance group. + * + *

Sample code: + * + *


+   * try (InstanceGroupClient instanceGroupClient = InstanceGroupClient.create()) {
+   *   ProjectZoneInstanceGroupName instanceGroup = ProjectZoneInstanceGroupName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP]");
+   *   InstanceGroupsSetNamedPortsRequest instanceGroupsSetNamedPortsRequestResource = InstanceGroupsSetNamedPortsRequest.newBuilder().build();
+   *   SetNamedPortsInstanceGroupHttpRequest request = SetNamedPortsInstanceGroupHttpRequest.newBuilder()
+   *     .setInstanceGroup(instanceGroup.toString())
+   *     .setInstanceGroupsSetNamedPortsRequestResource(instanceGroupsSetNamedPortsRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceGroupClient.setNamedPortsInstanceGroupOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + setNamedPortsInstanceGroupOperationCallable() { + return stub.setNamedPortsInstanceGroupOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1283,7 +1457,7 @@ public final Operation setNamedPortsInstanceGroup(SetNamedPortsInstanceGroupHttp * .build(); * ApiFuture<Operation> future = instanceGroupClient.setNamedPortsInstanceGroupCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceGroupManagerClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceGroupManagerClient.java index c6beb0d7ec7d..6c678ea2ad63 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceGroupManagerClient.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceGroupManagerClient.java @@ -20,9 +20,12 @@ import com.google.api.core.ApiFutures; import com.google.api.core.BetaApi; import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.httpjson.EmptyMessage; +import com.google.api.gax.longrunning.OperationFuture; import com.google.api.gax.paging.AbstractFixedSizeCollection; import com.google.api.gax.paging.AbstractPage; import com.google.api.gax.paging.AbstractPagedListResponse; +import com.google.api.gax.rpc.OperationCallable; import com.google.api.gax.rpc.PageContext; import com.google.api.gax.rpc.UnaryCallable; import com.google.cloud.compute.v1.stub.InstanceGroupManagerStub; @@ -43,8 +46,7 @@ * * try (InstanceGroupManagerClient instanceGroupManagerClient = InstanceGroupManagerClient.create()) { * ProjectZoneInstanceGroupManagerName instanceGroupManager = ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]"); - * InstanceGroupManagersAbandonInstancesRequest instanceGroupManagersAbandonInstancesRequestResource = InstanceGroupManagersAbandonInstancesRequest.newBuilder().build(); - * Operation response = instanceGroupManagerClient.abandonInstancesInstanceGroupManager(instanceGroupManager, instanceGroupManagersAbandonInstancesRequestResource); + * InstanceGroupManager response = instanceGroupManagerClient.getInstanceGroupManager(instanceGroupManager); * } * * @@ -105,6 +107,7 @@ public class InstanceGroupManagerClient implements BackgroundResource { private final InstanceGroupManagerSettings settings; private final InstanceGroupManagerStub stub; + private final ZoneOperationClient operationsClient; /** Constructs an instance of InstanceGroupManagerClient with default settings. */ public static final InstanceGroupManagerClient create() throws IOException { @@ -137,12 +140,14 @@ public static final InstanceGroupManagerClient create(InstanceGroupManagerStub s protected InstanceGroupManagerClient(InstanceGroupManagerSettings settings) throws IOException { this.settings = settings; this.stub = ((InstanceGroupManagerStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = ZoneOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected InstanceGroupManagerClient(InstanceGroupManagerStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = ZoneOperationClient.create(this.stub.getOperationsStub()); } public final InstanceGroupManagerSettings getSettings() { @@ -154,6 +159,16 @@ public InstanceGroupManagerStub getStub() { return stub; } + /** + * Returns the ZoneOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final ZoneOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Flags the specified instances to be removed from the managed instance group. Abandoning an @@ -176,7 +191,7 @@ public InstanceGroupManagerStub getStub() { * try (InstanceGroupManagerClient instanceGroupManagerClient = InstanceGroupManagerClient.create()) { * ProjectZoneInstanceGroupManagerName instanceGroupManager = ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]"); * InstanceGroupManagersAbandonInstancesRequest instanceGroupManagersAbandonInstancesRequestResource = InstanceGroupManagersAbandonInstancesRequest.newBuilder().build(); - * Operation response = instanceGroupManagerClient.abandonInstancesInstanceGroupManager(instanceGroupManager, instanceGroupManagersAbandonInstancesRequestResource); + * instanceGroupManagerClient.abandonInstancesInstanceGroupManagerAsync(instanceGroupManager, instanceGroupManagersAbandonInstancesRequestResource).get(); * } * * @@ -184,8 +199,9 @@ public InstanceGroupManagerStub getStub() { * @param instanceGroupManagersAbandonInstancesRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation abandonInstancesInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture abandonInstancesInstanceGroupManagerAsync( ProjectZoneInstanceGroupManagerName instanceGroupManager, InstanceGroupManagersAbandonInstancesRequest instanceGroupManagersAbandonInstancesRequestResource) { @@ -197,7 +213,7 @@ public final Operation abandonInstancesInstanceGroupManager( .setInstanceGroupManagersAbandonInstancesRequestResource( instanceGroupManagersAbandonInstancesRequestResource) .build(); - return abandonInstancesInstanceGroupManager(request); + return abandonInstancesInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -222,7 +238,7 @@ public final Operation abandonInstancesInstanceGroupManager( * try (InstanceGroupManagerClient instanceGroupManagerClient = InstanceGroupManagerClient.create()) { * ProjectZoneInstanceGroupManagerName instanceGroupManager = ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]"); * InstanceGroupManagersAbandonInstancesRequest instanceGroupManagersAbandonInstancesRequestResource = InstanceGroupManagersAbandonInstancesRequest.newBuilder().build(); - * Operation response = instanceGroupManagerClient.abandonInstancesInstanceGroupManager(instanceGroupManager.toString(), instanceGroupManagersAbandonInstancesRequestResource); + * instanceGroupManagerClient.abandonInstancesInstanceGroupManagerAsync(instanceGroupManager.toString(), instanceGroupManagersAbandonInstancesRequestResource).get(); * } * * @@ -230,8 +246,9 @@ public final Operation abandonInstancesInstanceGroupManager( * @param instanceGroupManagersAbandonInstancesRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation abandonInstancesInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture abandonInstancesInstanceGroupManagerAsync( String instanceGroupManager, InstanceGroupManagersAbandonInstancesRequest instanceGroupManagersAbandonInstancesRequestResource) { @@ -242,7 +259,7 @@ public final Operation abandonInstancesInstanceGroupManager( .setInstanceGroupManagersAbandonInstancesRequestResource( instanceGroupManagersAbandonInstancesRequestResource) .build(); - return abandonInstancesInstanceGroupManager(request); + return abandonInstancesInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -271,17 +288,57 @@ public final Operation abandonInstancesInstanceGroupManager( * .setInstanceGroupManager(instanceGroupManager.toString()) * .setInstanceGroupManagersAbandonInstancesRequestResource(instanceGroupManagersAbandonInstancesRequestResource) * .build(); - * Operation response = instanceGroupManagerClient.abandonInstancesInstanceGroupManager(request); + * instanceGroupManagerClient.abandonInstancesInstanceGroupManagerAsync(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 */ - @BetaApi - public final Operation abandonInstancesInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture abandonInstancesInstanceGroupManagerAsync( AbandonInstancesInstanceGroupManagerHttpRequest request) { - return abandonInstancesInstanceGroupManagerCallable().call(request); + return abandonInstancesInstanceGroupManagerOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Flags the specified instances to be removed from the managed instance group. Abandoning an + * instance does not delete the instance, but it does remove the instance from any target pools + * that are applied by the managed instance group. This method reduces the targetSize of the + * managed instance group by the number of instances that you abandon. This operation is marked as + * DONE when the action is scheduled even if the instances have not yet been removed from the + * group. You must separately verify the status of the abandoning action with the + * listmanagedinstances method. + * + *

If the group is part of a backend service that has enabled connection draining, it can take + * up to 60 seconds after the connection draining duration has elapsed before the VM instance is + * removed or deleted. + * + *

You can specify a maximum of 1000 instances with this method per request. + * + *

Sample code: + * + *


+   * try (InstanceGroupManagerClient instanceGroupManagerClient = InstanceGroupManagerClient.create()) {
+   *   ProjectZoneInstanceGroupManagerName instanceGroupManager = ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]");
+   *   InstanceGroupManagersAbandonInstancesRequest instanceGroupManagersAbandonInstancesRequestResource = InstanceGroupManagersAbandonInstancesRequest.newBuilder().build();
+   *   AbandonInstancesInstanceGroupManagerHttpRequest request = AbandonInstancesInstanceGroupManagerHttpRequest.newBuilder()
+   *     .setInstanceGroupManager(instanceGroupManager.toString())
+   *     .setInstanceGroupManagersAbandonInstancesRequestResource(instanceGroupManagersAbandonInstancesRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceGroupManagerClient.abandonInstancesInstanceGroupManagerOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable< + AbandonInstancesInstanceGroupManagerHttpRequest, EmptyMessage, Operation> + abandonInstancesInstanceGroupManagerOperationCallable() { + return stub.abandonInstancesInstanceGroupManagerOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -312,7 +369,7 @@ public final Operation abandonInstancesInstanceGroupManager( * .build(); * ApiFuture<Operation> future = instanceGroupManagerClient.abandonInstancesInstanceGroupManagerCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -476,15 +533,16 @@ public final AggregatedListInstanceGroupManagersPagedResponse aggregatedListInst *

    * try (InstanceGroupManagerClient instanceGroupManagerClient = InstanceGroupManagerClient.create()) {
    *   ProjectZoneInstanceGroupManagerName instanceGroupManager = ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]");
-   *   Operation response = instanceGroupManagerClient.deleteInstanceGroupManager(instanceGroupManager);
+   *   instanceGroupManagerClient.deleteInstanceGroupManagerAsync(instanceGroupManager).get();
    * }
    * 
* * @param instanceGroupManager The name of the managed instance group to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteInstanceGroupManagerAsync( ProjectZoneInstanceGroupManagerName instanceGroupManager) { DeleteInstanceGroupManagerHttpRequest request = @@ -492,7 +550,7 @@ public final Operation deleteInstanceGroupManager( .setInstanceGroupManager( instanceGroupManager == null ? null : instanceGroupManager.toString()) .build(); - return deleteInstanceGroupManager(request); + return deleteInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -506,21 +564,23 @@ public final Operation deleteInstanceGroupManager( *

    * try (InstanceGroupManagerClient instanceGroupManagerClient = InstanceGroupManagerClient.create()) {
    *   ProjectZoneInstanceGroupManagerName instanceGroupManager = ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]");
-   *   Operation response = instanceGroupManagerClient.deleteInstanceGroupManager(instanceGroupManager.toString());
+   *   instanceGroupManagerClient.deleteInstanceGroupManagerAsync(instanceGroupManager.toString()).get();
    * }
    * 
* * @param instanceGroupManager The name of the managed instance group to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteInstanceGroupManager(String instanceGroupManager) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteInstanceGroupManagerAsync( + String instanceGroupManager) { DeleteInstanceGroupManagerHttpRequest request = DeleteInstanceGroupManagerHttpRequest.newBuilder() .setInstanceGroupManager(instanceGroupManager) .build(); - return deleteInstanceGroupManager(request); + return deleteInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -537,16 +597,44 @@ public final Operation deleteInstanceGroupManager(String instanceGroupManager) { * DeleteInstanceGroupManagerHttpRequest request = DeleteInstanceGroupManagerHttpRequest.newBuilder() * .setInstanceGroupManager(instanceGroupManager.toString()) * .build(); - * Operation response = instanceGroupManagerClient.deleteInstanceGroupManager(request); + * instanceGroupManagerClient.deleteInstanceGroupManagerAsync(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 */ - @BetaApi - public final Operation deleteInstanceGroupManager(DeleteInstanceGroupManagerHttpRequest request) { - return deleteInstanceGroupManagerCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteInstanceGroupManagerAsync( + DeleteInstanceGroupManagerHttpRequest request) { + return deleteInstanceGroupManagerOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified managed instance group and all of the instances in that group. Note that + * the instance group must not belong to a backend service. Read Deleting an instance group for + * more information. + * + *

Sample code: + * + *


+   * try (InstanceGroupManagerClient instanceGroupManagerClient = InstanceGroupManagerClient.create()) {
+   *   ProjectZoneInstanceGroupManagerName instanceGroupManager = ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]");
+   *   DeleteInstanceGroupManagerHttpRequest request = DeleteInstanceGroupManagerHttpRequest.newBuilder()
+   *     .setInstanceGroupManager(instanceGroupManager.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceGroupManagerClient.deleteInstanceGroupManagerOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteInstanceGroupManagerOperationCallable() { + return stub.deleteInstanceGroupManagerOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -565,7 +653,7 @@ public final Operation deleteInstanceGroupManager(DeleteInstanceGroupManagerHttp * .build(); * ApiFuture<Operation> future = instanceGroupManagerClient.deleteInstanceGroupManagerCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -596,7 +684,7 @@ public final Operation deleteInstanceGroupManager(DeleteInstanceGroupManagerHttp * try (InstanceGroupManagerClient instanceGroupManagerClient = InstanceGroupManagerClient.create()) { * ProjectZoneInstanceGroupManagerName instanceGroupManager = ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]"); * InstanceGroupManagersDeleteInstancesRequest instanceGroupManagersDeleteInstancesRequestResource = InstanceGroupManagersDeleteInstancesRequest.newBuilder().build(); - * Operation response = instanceGroupManagerClient.deleteInstancesInstanceGroupManager(instanceGroupManager, instanceGroupManagersDeleteInstancesRequestResource); + * instanceGroupManagerClient.deleteInstancesInstanceGroupManagerAsync(instanceGroupManager, instanceGroupManagersDeleteInstancesRequestResource).get(); * } * * @@ -604,8 +692,9 @@ public final Operation deleteInstanceGroupManager(DeleteInstanceGroupManagerHttp * @param instanceGroupManagersDeleteInstancesRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteInstancesInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteInstancesInstanceGroupManagerAsync( ProjectZoneInstanceGroupManagerName instanceGroupManager, InstanceGroupManagersDeleteInstancesRequest instanceGroupManagersDeleteInstancesRequestResource) { @@ -617,7 +706,7 @@ public final Operation deleteInstancesInstanceGroupManager( .setInstanceGroupManagersDeleteInstancesRequestResource( instanceGroupManagersDeleteInstancesRequestResource) .build(); - return deleteInstancesInstanceGroupManager(request); + return deleteInstancesInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -641,7 +730,7 @@ public final Operation deleteInstancesInstanceGroupManager( * try (InstanceGroupManagerClient instanceGroupManagerClient = InstanceGroupManagerClient.create()) { * ProjectZoneInstanceGroupManagerName instanceGroupManager = ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]"); * InstanceGroupManagersDeleteInstancesRequest instanceGroupManagersDeleteInstancesRequestResource = InstanceGroupManagersDeleteInstancesRequest.newBuilder().build(); - * Operation response = instanceGroupManagerClient.deleteInstancesInstanceGroupManager(instanceGroupManager.toString(), instanceGroupManagersDeleteInstancesRequestResource); + * instanceGroupManagerClient.deleteInstancesInstanceGroupManagerAsync(instanceGroupManager.toString(), instanceGroupManagersDeleteInstancesRequestResource).get(); * } * * @@ -649,8 +738,9 @@ public final Operation deleteInstancesInstanceGroupManager( * @param instanceGroupManagersDeleteInstancesRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteInstancesInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteInstancesInstanceGroupManagerAsync( String instanceGroupManager, InstanceGroupManagersDeleteInstancesRequest instanceGroupManagersDeleteInstancesRequestResource) { @@ -661,7 +751,7 @@ public final Operation deleteInstancesInstanceGroupManager( .setInstanceGroupManagersDeleteInstancesRequestResource( instanceGroupManagersDeleteInstancesRequestResource) .build(); - return deleteInstancesInstanceGroupManager(request); + return deleteInstancesInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -689,17 +779,56 @@ public final Operation deleteInstancesInstanceGroupManager( * .setInstanceGroupManager(instanceGroupManager.toString()) * .setInstanceGroupManagersDeleteInstancesRequestResource(instanceGroupManagersDeleteInstancesRequestResource) * .build(); - * Operation response = instanceGroupManagerClient.deleteInstancesInstanceGroupManager(request); + * instanceGroupManagerClient.deleteInstancesInstanceGroupManagerAsync(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 */ - @BetaApi - public final Operation deleteInstancesInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteInstancesInstanceGroupManagerAsync( DeleteInstancesInstanceGroupManagerHttpRequest request) { - return deleteInstancesInstanceGroupManagerCallable().call(request); + return deleteInstancesInstanceGroupManagerOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Flags the specified instances in the managed instance group for immediate deletion. The + * instances are also removed from any target pools of which they were a member. This method + * reduces the targetSize of the managed instance group by the number of instances that you + * delete. This operation is marked as DONE when the action is scheduled even if the instances are + * still being deleted. You must separately verify the status of the deleting action with the + * listmanagedinstances method. + * + *

If the group is part of a backend service that has enabled connection draining, it can take + * up to 60 seconds after the connection draining duration has elapsed before the VM instance is + * removed or deleted. + * + *

You can specify a maximum of 1000 instances with this method per request. + * + *

Sample code: + * + *


+   * try (InstanceGroupManagerClient instanceGroupManagerClient = InstanceGroupManagerClient.create()) {
+   *   ProjectZoneInstanceGroupManagerName instanceGroupManager = ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]");
+   *   InstanceGroupManagersDeleteInstancesRequest instanceGroupManagersDeleteInstancesRequestResource = InstanceGroupManagersDeleteInstancesRequest.newBuilder().build();
+   *   DeleteInstancesInstanceGroupManagerHttpRequest request = DeleteInstancesInstanceGroupManagerHttpRequest.newBuilder()
+   *     .setInstanceGroupManager(instanceGroupManager.toString())
+   *     .setInstanceGroupManagersDeleteInstancesRequestResource(instanceGroupManagersDeleteInstancesRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceGroupManagerClient.deleteInstancesInstanceGroupManagerOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable< + DeleteInstancesInstanceGroupManagerHttpRequest, EmptyMessage, Operation> + deleteInstancesInstanceGroupManagerOperationCallable() { + return stub.deleteInstancesInstanceGroupManagerOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -729,7 +858,7 @@ public final Operation deleteInstancesInstanceGroupManager( * .build(); * ApiFuture<Operation> future = instanceGroupManagerClient.deleteInstancesInstanceGroupManagerCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -863,7 +992,7 @@ public final InstanceGroupManager getInstanceGroupManager( * try (InstanceGroupManagerClient instanceGroupManagerClient = InstanceGroupManagerClient.create()) { * ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]"); * InstanceGroupManager instanceGroupManagerResource = InstanceGroupManager.newBuilder().build(); - * Operation response = instanceGroupManagerClient.insertInstanceGroupManager(zone, instanceGroupManagerResource); + * instanceGroupManagerClient.insertInstanceGroupManagerAsync(zone, instanceGroupManagerResource).get(); * } * * @@ -874,8 +1003,9 @@ public final InstanceGroupManager getInstanceGroupManager( * v1.regionInstanceGroupManagers ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertInstanceGroupManagerAsync( ProjectZoneName zone, InstanceGroupManager instanceGroupManagerResource) { InsertInstanceGroupManagerHttpRequest request = @@ -883,7 +1013,7 @@ public final Operation insertInstanceGroupManager( .setZone(zone == null ? null : zone.toString()) .setInstanceGroupManagerResource(instanceGroupManagerResource) .build(); - return insertInstanceGroupManager(request); + return insertInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -903,7 +1033,7 @@ public final Operation insertInstanceGroupManager( * try (InstanceGroupManagerClient instanceGroupManagerClient = InstanceGroupManagerClient.create()) { * ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]"); * InstanceGroupManager instanceGroupManagerResource = InstanceGroupManager.newBuilder().build(); - * Operation response = instanceGroupManagerClient.insertInstanceGroupManager(zone.toString(), instanceGroupManagerResource); + * instanceGroupManagerClient.insertInstanceGroupManagerAsync(zone.toString(), instanceGroupManagerResource).get(); * } * * @@ -914,8 +1044,9 @@ public final Operation insertInstanceGroupManager( * v1.regionInstanceGroupManagers ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertInstanceGroupManagerAsync( String zone, InstanceGroupManager instanceGroupManagerResource) { InsertInstanceGroupManagerHttpRequest request = @@ -923,7 +1054,7 @@ public final Operation insertInstanceGroupManager( .setZone(zone) .setInstanceGroupManagerResource(instanceGroupManagerResource) .build(); - return insertInstanceGroupManager(request); + return insertInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -947,16 +1078,51 @@ public final Operation insertInstanceGroupManager( * .setZone(zone.toString()) * .setInstanceGroupManagerResource(instanceGroupManagerResource) * .build(); - * Operation response = instanceGroupManagerClient.insertInstanceGroupManager(request); + * instanceGroupManagerClient.insertInstanceGroupManagerAsync(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 */ - @BetaApi - public final Operation insertInstanceGroupManager(InsertInstanceGroupManagerHttpRequest request) { - return insertInstanceGroupManagerCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertInstanceGroupManagerAsync( + InsertInstanceGroupManagerHttpRequest request) { + return insertInstanceGroupManagerOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a managed instance group using the information that you specify in the request. After + * the group is created, instances in the group are created using the specified instance template. + * This operation is marked as DONE when the group is created even if the instances in the group + * have not yet been created. You must separately verify the status of the individual instances + * with the listmanagedinstances method. + * + *

A managed instance group can have up to 1000 VM instances per group. Please contact Cloud + * Support if you need an increase in this limit. + * + *

Sample code: + * + *


+   * try (InstanceGroupManagerClient instanceGroupManagerClient = InstanceGroupManagerClient.create()) {
+   *   ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
+   *   InstanceGroupManager instanceGroupManagerResource = InstanceGroupManager.newBuilder().build();
+   *   InsertInstanceGroupManagerHttpRequest request = InsertInstanceGroupManagerHttpRequest.newBuilder()
+   *     .setZone(zone.toString())
+   *     .setInstanceGroupManagerResource(instanceGroupManagerResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceGroupManagerClient.insertInstanceGroupManagerOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertInstanceGroupManagerOperationCallable() { + return stub.insertInstanceGroupManagerOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -982,7 +1148,7 @@ public final Operation insertInstanceGroupManager(InsertInstanceGroupManagerHttp * .build(); * ApiFuture<Operation> future = instanceGroupManagerClient.insertInstanceGroupManagerCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1272,7 +1438,7 @@ public final ListInstanceGroupManagersPagedResponse listInstanceGroupManagers( * ProjectZoneInstanceGroupManagerName instanceGroupManager = ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]"); * InstanceGroupManager instanceGroupManagerResource = InstanceGroupManager.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = instanceGroupManagerClient.patchInstanceGroupManager(instanceGroupManager, instanceGroupManagerResource, fieldMask); + * instanceGroupManagerClient.patchInstanceGroupManagerAsync(instanceGroupManager, instanceGroupManagerResource, fieldMask).get(); * } * * @@ -1287,8 +1453,9 @@ public final ListInstanceGroupManagersPagedResponse listInstanceGroupManagers( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchInstanceGroupManagerAsync( ProjectZoneInstanceGroupManagerName instanceGroupManager, InstanceGroupManager instanceGroupManagerResource, List fieldMask) { @@ -1300,7 +1467,7 @@ public final Operation patchInstanceGroupManager( .setInstanceGroupManagerResource(instanceGroupManagerResource) .addAllFieldMask(fieldMask) .build(); - return patchInstanceGroupManager(request); + return patchInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1318,7 +1485,7 @@ public final Operation patchInstanceGroupManager( * ProjectZoneInstanceGroupManagerName instanceGroupManager = ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]"); * InstanceGroupManager instanceGroupManagerResource = InstanceGroupManager.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = instanceGroupManagerClient.patchInstanceGroupManager(instanceGroupManager.toString(), instanceGroupManagerResource, fieldMask); + * instanceGroupManagerClient.patchInstanceGroupManagerAsync(instanceGroupManager.toString(), instanceGroupManagerResource, fieldMask).get(); * } * * @@ -1333,8 +1500,9 @@ public final Operation patchInstanceGroupManager( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchInstanceGroupManagerAsync( String instanceGroupManager, InstanceGroupManager instanceGroupManagerResource, List fieldMask) { @@ -1345,7 +1513,7 @@ public final Operation patchInstanceGroupManager( .setInstanceGroupManagerResource(instanceGroupManagerResource) .addAllFieldMask(fieldMask) .build(); - return patchInstanceGroupManager(request); + return patchInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1368,16 +1536,50 @@ public final Operation patchInstanceGroupManager( * .setInstanceGroupManagerResource(instanceGroupManagerResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = instanceGroupManagerClient.patchInstanceGroupManager(request); + * instanceGroupManagerClient.patchInstanceGroupManagerAsync(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 */ - @BetaApi - public final Operation patchInstanceGroupManager(PatchInstanceGroupManagerHttpRequest request) { - return patchInstanceGroupManagerCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchInstanceGroupManagerAsync( + PatchInstanceGroupManagerHttpRequest request) { + return patchInstanceGroupManagerOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Updates a managed instance group using the information that you specify in the request. This + * operation is marked as DONE when the group is patched even if the instances in the group are + * still in the process of being patched. You must separately verify the status of the individual + * instances with the listManagedInstances method. This method supports PATCH semantics and uses + * the JSON merge patch format and processing rules. + * + *

Sample code: + * + *


+   * try (InstanceGroupManagerClient instanceGroupManagerClient = InstanceGroupManagerClient.create()) {
+   *   ProjectZoneInstanceGroupManagerName instanceGroupManager = ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]");
+   *   InstanceGroupManager instanceGroupManagerResource = InstanceGroupManager.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   PatchInstanceGroupManagerHttpRequest request = PatchInstanceGroupManagerHttpRequest.newBuilder()
+   *     .setInstanceGroupManager(instanceGroupManager.toString())
+   *     .setInstanceGroupManagerResource(instanceGroupManagerResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceGroupManagerClient.patchInstanceGroupManagerOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + patchInstanceGroupManagerOperationCallable() { + return stub.patchInstanceGroupManagerOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1402,7 +1604,7 @@ public final Operation patchInstanceGroupManager(PatchInstanceGroupManagerHttpRe * .build(); * ApiFuture<Operation> future = instanceGroupManagerClient.patchInstanceGroupManagerCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1432,7 +1634,7 @@ public final Operation patchInstanceGroupManager(PatchInstanceGroupManagerHttpRe * try (InstanceGroupManagerClient instanceGroupManagerClient = InstanceGroupManagerClient.create()) { * ProjectZoneInstanceGroupManagerName instanceGroupManager = ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]"); * InstanceGroupManagersRecreateInstancesRequest instanceGroupManagersRecreateInstancesRequestResource = InstanceGroupManagersRecreateInstancesRequest.newBuilder().build(); - * Operation response = instanceGroupManagerClient.recreateInstancesInstanceGroupManager(instanceGroupManager, instanceGroupManagersRecreateInstancesRequestResource); + * instanceGroupManagerClient.recreateInstancesInstanceGroupManagerAsync(instanceGroupManager, instanceGroupManagersRecreateInstancesRequestResource).get(); * } * * @@ -1440,8 +1642,9 @@ public final Operation patchInstanceGroupManager(PatchInstanceGroupManagerHttpRe * @param instanceGroupManagersRecreateInstancesRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation recreateInstancesInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture recreateInstancesInstanceGroupManagerAsync( ProjectZoneInstanceGroupManagerName instanceGroupManager, InstanceGroupManagersRecreateInstancesRequest instanceGroupManagersRecreateInstancesRequestResource) { @@ -1453,7 +1656,7 @@ public final Operation recreateInstancesInstanceGroupManager( .setInstanceGroupManagersRecreateInstancesRequestResource( instanceGroupManagersRecreateInstancesRequestResource) .build(); - return recreateInstancesInstanceGroupManager(request); + return recreateInstancesInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1476,7 +1679,7 @@ public final Operation recreateInstancesInstanceGroupManager( * try (InstanceGroupManagerClient instanceGroupManagerClient = InstanceGroupManagerClient.create()) { * ProjectZoneInstanceGroupManagerName instanceGroupManager = ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]"); * InstanceGroupManagersRecreateInstancesRequest instanceGroupManagersRecreateInstancesRequestResource = InstanceGroupManagersRecreateInstancesRequest.newBuilder().build(); - * Operation response = instanceGroupManagerClient.recreateInstancesInstanceGroupManager(instanceGroupManager.toString(), instanceGroupManagersRecreateInstancesRequestResource); + * instanceGroupManagerClient.recreateInstancesInstanceGroupManagerAsync(instanceGroupManager.toString(), instanceGroupManagersRecreateInstancesRequestResource).get(); * } * * @@ -1484,8 +1687,9 @@ public final Operation recreateInstancesInstanceGroupManager( * @param instanceGroupManagersRecreateInstancesRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation recreateInstancesInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture recreateInstancesInstanceGroupManagerAsync( String instanceGroupManager, InstanceGroupManagersRecreateInstancesRequest instanceGroupManagersRecreateInstancesRequestResource) { @@ -1496,7 +1700,7 @@ public final Operation recreateInstancesInstanceGroupManager( .setInstanceGroupManagersRecreateInstancesRequestResource( instanceGroupManagersRecreateInstancesRequestResource) .build(); - return recreateInstancesInstanceGroupManager(request); + return recreateInstancesInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1523,17 +1727,55 @@ public final Operation recreateInstancesInstanceGroupManager( * .setInstanceGroupManager(instanceGroupManager.toString()) * .setInstanceGroupManagersRecreateInstancesRequestResource(instanceGroupManagersRecreateInstancesRequestResource) * .build(); - * Operation response = instanceGroupManagerClient.recreateInstancesInstanceGroupManager(request); + * instanceGroupManagerClient.recreateInstancesInstanceGroupManagerAsync(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 */ - @BetaApi - public final Operation recreateInstancesInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture recreateInstancesInstanceGroupManagerAsync( RecreateInstancesInstanceGroupManagerHttpRequest request) { - return recreateInstancesInstanceGroupManagerCallable().call(request); + return recreateInstancesInstanceGroupManagerOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Flags the specified instances in the managed instance group to be immediately recreated. The + * instances are deleted and recreated using the current instance template for the managed + * instance group. This operation is marked as DONE when the flag is set even if the instances + * have not yet been recreated. You must separately verify the status of the recreating action + * with the listmanagedinstances method. + * + *

If the group is part of a backend service that has enabled connection draining, it can take + * up to 60 seconds after the connection draining duration has elapsed before the VM instance is + * removed or deleted. + * + *

You can specify a maximum of 1000 instances with this method per request. + * + *

Sample code: + * + *


+   * try (InstanceGroupManagerClient instanceGroupManagerClient = InstanceGroupManagerClient.create()) {
+   *   ProjectZoneInstanceGroupManagerName instanceGroupManager = ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]");
+   *   InstanceGroupManagersRecreateInstancesRequest instanceGroupManagersRecreateInstancesRequestResource = InstanceGroupManagersRecreateInstancesRequest.newBuilder().build();
+   *   RecreateInstancesInstanceGroupManagerHttpRequest request = RecreateInstancesInstanceGroupManagerHttpRequest.newBuilder()
+   *     .setInstanceGroupManager(instanceGroupManager.toString())
+   *     .setInstanceGroupManagersRecreateInstancesRequestResource(instanceGroupManagersRecreateInstancesRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceGroupManagerClient.recreateInstancesInstanceGroupManagerOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable< + RecreateInstancesInstanceGroupManagerHttpRequest, EmptyMessage, Operation> + recreateInstancesInstanceGroupManagerOperationCallable() { + return stub.recreateInstancesInstanceGroupManagerOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1562,7 +1804,7 @@ public final Operation recreateInstancesInstanceGroupManager( * .build(); * ApiFuture<Operation> future = instanceGroupManagerClient.recreateInstancesInstanceGroupManagerCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1599,7 +1841,7 @@ public final Operation recreateInstancesInstanceGroupManager( * try (InstanceGroupManagerClient instanceGroupManagerClient = InstanceGroupManagerClient.create()) { * Integer size = 0; * ProjectZoneInstanceGroupManagerName instanceGroupManager = ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]"); - * Operation response = instanceGroupManagerClient.resizeInstanceGroupManager(size, instanceGroupManager); + * instanceGroupManagerClient.resizeInstanceGroupManagerAsync(size, instanceGroupManager).get(); * } * * @@ -1609,8 +1851,9 @@ public final Operation recreateInstancesInstanceGroupManager( * @param instanceGroupManager The name of the managed instance group. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation resizeInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture resizeInstanceGroupManagerAsync( Integer size, ProjectZoneInstanceGroupManagerName instanceGroupManager) { ResizeInstanceGroupManagerHttpRequest request = @@ -1619,7 +1862,7 @@ public final Operation resizeInstanceGroupManager( .setInstanceGroupManager( instanceGroupManager == null ? null : instanceGroupManager.toString()) .build(); - return resizeInstanceGroupManager(request); + return resizeInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1649,7 +1892,7 @@ public final Operation resizeInstanceGroupManager( * try (InstanceGroupManagerClient instanceGroupManagerClient = InstanceGroupManagerClient.create()) { * Integer size = 0; * ProjectZoneInstanceGroupManagerName instanceGroupManager = ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]"); - * Operation response = instanceGroupManagerClient.resizeInstanceGroupManager(size, instanceGroupManager.toString()); + * instanceGroupManagerClient.resizeInstanceGroupManagerAsync(size, instanceGroupManager.toString()).get(); * } * * @@ -1659,15 +1902,17 @@ public final Operation resizeInstanceGroupManager( * @param instanceGroupManager The name of the managed instance group. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation resizeInstanceGroupManager(Integer size, String instanceGroupManager) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture resizeInstanceGroupManagerAsync( + Integer size, String instanceGroupManager) { ResizeInstanceGroupManagerHttpRequest request = ResizeInstanceGroupManagerHttpRequest.newBuilder() .setSize(size) .setInstanceGroupManager(instanceGroupManager) .build(); - return resizeInstanceGroupManager(request); + return resizeInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1701,16 +1946,61 @@ public final Operation resizeInstanceGroupManager(Integer size, String instanceG * .setSize(size) * .setInstanceGroupManager(instanceGroupManager.toString()) * .build(); - * Operation response = instanceGroupManagerClient.resizeInstanceGroupManager(request); + * instanceGroupManagerClient.resizeInstanceGroupManagerAsync(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 */ - @BetaApi - public final Operation resizeInstanceGroupManager(ResizeInstanceGroupManagerHttpRequest request) { - return resizeInstanceGroupManagerCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture resizeInstanceGroupManagerAsync( + ResizeInstanceGroupManagerHttpRequest request) { + return resizeInstanceGroupManagerOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Resizes the managed instance group. If you increase the size, the group creates new instances + * using the current instance template. If you decrease the size, the group deletes instances. The + * resize operation is marked DONE when the resize actions are scheduled even if the group has not + * yet added or deleted any instances. You must separately verify the status of the creating or + * deleting actions with the listmanagedinstances method. + * + *

When resizing down, the instance group arbitrarily chooses the order in which VMs are + * deleted. The group takes into account some VM attributes when making the selection including: + * + *

+ The status of the VM instance. + The health of the VM instance. + The instance template + * version the VM is based on. + For regional managed instance groups, the location of the VM + * instance. + * + *

This list is subject to change. + * + *

If the group is part of a backend service that has enabled connection draining, it can take + * up to 60 seconds after the connection draining duration has elapsed before the VM instance is + * removed or deleted. + * + *

Sample code: + * + *


+   * try (InstanceGroupManagerClient instanceGroupManagerClient = InstanceGroupManagerClient.create()) {
+   *   Integer size = 0;
+   *   ProjectZoneInstanceGroupManagerName instanceGroupManager = ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]");
+   *   ResizeInstanceGroupManagerHttpRequest request = ResizeInstanceGroupManagerHttpRequest.newBuilder()
+   *     .setSize(size)
+   *     .setInstanceGroupManager(instanceGroupManager.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceGroupManagerClient.resizeInstanceGroupManagerOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + resizeInstanceGroupManagerOperationCallable() { + return stub.resizeInstanceGroupManagerOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1746,7 +2036,7 @@ public final Operation resizeInstanceGroupManager(ResizeInstanceGroupManagerHttp * .build(); * ApiFuture<Operation> future = instanceGroupManagerClient.resizeInstanceGroupManagerCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1767,7 +2057,7 @@ public final Operation resizeInstanceGroupManager(ResizeInstanceGroupManagerHttp * try (InstanceGroupManagerClient instanceGroupManagerClient = InstanceGroupManagerClient.create()) { * ProjectZoneInstanceGroupManagerName instanceGroupManager = ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]"); * InstanceGroupManagersSetInstanceTemplateRequest instanceGroupManagersSetInstanceTemplateRequestResource = InstanceGroupManagersSetInstanceTemplateRequest.newBuilder().build(); - * Operation response = instanceGroupManagerClient.setInstanceTemplateInstanceGroupManager(instanceGroupManager, instanceGroupManagersSetInstanceTemplateRequestResource); + * instanceGroupManagerClient.setInstanceTemplateInstanceGroupManagerAsync(instanceGroupManager, instanceGroupManagersSetInstanceTemplateRequestResource).get(); * } * * @@ -1775,11 +2065,13 @@ public final Operation resizeInstanceGroupManager(ResizeInstanceGroupManagerHttp * @param instanceGroupManagersSetInstanceTemplateRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setInstanceTemplateInstanceGroupManager( - ProjectZoneInstanceGroupManagerName instanceGroupManager, - InstanceGroupManagersSetInstanceTemplateRequest - instanceGroupManagersSetInstanceTemplateRequestResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture + setInstanceTemplateInstanceGroupManagerAsync( + ProjectZoneInstanceGroupManagerName instanceGroupManager, + InstanceGroupManagersSetInstanceTemplateRequest + instanceGroupManagersSetInstanceTemplateRequestResource) { SetInstanceTemplateInstanceGroupManagerHttpRequest request = SetInstanceTemplateInstanceGroupManagerHttpRequest.newBuilder() @@ -1788,7 +2080,7 @@ public final Operation setInstanceTemplateInstanceGroupManager( .setInstanceGroupManagersSetInstanceTemplateRequestResource( instanceGroupManagersSetInstanceTemplateRequestResource) .build(); - return setInstanceTemplateInstanceGroupManager(request); + return setInstanceTemplateInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1802,7 +2094,7 @@ public final Operation setInstanceTemplateInstanceGroupManager( * try (InstanceGroupManagerClient instanceGroupManagerClient = InstanceGroupManagerClient.create()) { * ProjectZoneInstanceGroupManagerName instanceGroupManager = ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]"); * InstanceGroupManagersSetInstanceTemplateRequest instanceGroupManagersSetInstanceTemplateRequestResource = InstanceGroupManagersSetInstanceTemplateRequest.newBuilder().build(); - * Operation response = instanceGroupManagerClient.setInstanceTemplateInstanceGroupManager(instanceGroupManager.toString(), instanceGroupManagersSetInstanceTemplateRequestResource); + * instanceGroupManagerClient.setInstanceTemplateInstanceGroupManagerAsync(instanceGroupManager.toString(), instanceGroupManagersSetInstanceTemplateRequestResource).get(); * } * * @@ -1810,11 +2102,13 @@ public final Operation setInstanceTemplateInstanceGroupManager( * @param instanceGroupManagersSetInstanceTemplateRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setInstanceTemplateInstanceGroupManager( - String instanceGroupManager, - InstanceGroupManagersSetInstanceTemplateRequest - instanceGroupManagersSetInstanceTemplateRequestResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture + setInstanceTemplateInstanceGroupManagerAsync( + String instanceGroupManager, + InstanceGroupManagersSetInstanceTemplateRequest + instanceGroupManagersSetInstanceTemplateRequestResource) { SetInstanceTemplateInstanceGroupManagerHttpRequest request = SetInstanceTemplateInstanceGroupManagerHttpRequest.newBuilder() @@ -1822,7 +2116,7 @@ public final Operation setInstanceTemplateInstanceGroupManager( .setInstanceGroupManagersSetInstanceTemplateRequestResource( instanceGroupManagersSetInstanceTemplateRequestResource) .build(); - return setInstanceTemplateInstanceGroupManager(request); + return setInstanceTemplateInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1840,17 +2134,47 @@ public final Operation setInstanceTemplateInstanceGroupManager( * .setInstanceGroupManager(instanceGroupManager.toString()) * .setInstanceGroupManagersSetInstanceTemplateRequestResource(instanceGroupManagersSetInstanceTemplateRequestResource) * .build(); - * Operation response = instanceGroupManagerClient.setInstanceTemplateInstanceGroupManager(request); + * instanceGroupManagerClient.setInstanceTemplateInstanceGroupManagerAsync(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 */ - @BetaApi - public final Operation setInstanceTemplateInstanceGroupManager( - SetInstanceTemplateInstanceGroupManagerHttpRequest request) { - return setInstanceTemplateInstanceGroupManagerCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture + setInstanceTemplateInstanceGroupManagerAsync( + SetInstanceTemplateInstanceGroupManagerHttpRequest request) { + return setInstanceTemplateInstanceGroupManagerOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Specifies the instance template to use when creating new instances in this group. The templates + * for existing instances in the group do not change unless you recreate them. + * + *

Sample code: + * + *


+   * try (InstanceGroupManagerClient instanceGroupManagerClient = InstanceGroupManagerClient.create()) {
+   *   ProjectZoneInstanceGroupManagerName instanceGroupManager = ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]");
+   *   InstanceGroupManagersSetInstanceTemplateRequest instanceGroupManagersSetInstanceTemplateRequestResource = InstanceGroupManagersSetInstanceTemplateRequest.newBuilder().build();
+   *   SetInstanceTemplateInstanceGroupManagerHttpRequest request = SetInstanceTemplateInstanceGroupManagerHttpRequest.newBuilder()
+   *     .setInstanceGroupManager(instanceGroupManager.toString())
+   *     .setInstanceGroupManagersSetInstanceTemplateRequestResource(instanceGroupManagersSetInstanceTemplateRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceGroupManagerClient.setInstanceTemplateInstanceGroupManagerOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable< + SetInstanceTemplateInstanceGroupManagerHttpRequest, EmptyMessage, Operation> + setInstanceTemplateInstanceGroupManagerOperationCallable() { + return stub.setInstanceTemplateInstanceGroupManagerOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1870,7 +2194,7 @@ public final Operation setInstanceTemplateInstanceGroupManager( * .build(); * ApiFuture<Operation> future = instanceGroupManagerClient.setInstanceTemplateInstanceGroupManagerCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1894,7 +2218,7 @@ public final Operation setInstanceTemplateInstanceGroupManager( * try (InstanceGroupManagerClient instanceGroupManagerClient = InstanceGroupManagerClient.create()) { * ProjectZoneInstanceGroupManagerName instanceGroupManager = ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]"); * InstanceGroupManagersSetTargetPoolsRequest instanceGroupManagersSetTargetPoolsRequestResource = InstanceGroupManagersSetTargetPoolsRequest.newBuilder().build(); - * Operation response = instanceGroupManagerClient.setTargetPoolsInstanceGroupManager(instanceGroupManager, instanceGroupManagersSetTargetPoolsRequestResource); + * instanceGroupManagerClient.setTargetPoolsInstanceGroupManagerAsync(instanceGroupManager, instanceGroupManagersSetTargetPoolsRequestResource).get(); * } * * @@ -1902,8 +2226,9 @@ public final Operation setInstanceTemplateInstanceGroupManager( * @param instanceGroupManagersSetTargetPoolsRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setTargetPoolsInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setTargetPoolsInstanceGroupManagerAsync( ProjectZoneInstanceGroupManagerName instanceGroupManager, InstanceGroupManagersSetTargetPoolsRequest instanceGroupManagersSetTargetPoolsRequestResource) { @@ -1915,7 +2240,7 @@ public final Operation setTargetPoolsInstanceGroupManager( .setInstanceGroupManagersSetTargetPoolsRequestResource( instanceGroupManagersSetTargetPoolsRequestResource) .build(); - return setTargetPoolsInstanceGroupManager(request); + return setTargetPoolsInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1932,7 +2257,7 @@ public final Operation setTargetPoolsInstanceGroupManager( * try (InstanceGroupManagerClient instanceGroupManagerClient = InstanceGroupManagerClient.create()) { * ProjectZoneInstanceGroupManagerName instanceGroupManager = ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]"); * InstanceGroupManagersSetTargetPoolsRequest instanceGroupManagersSetTargetPoolsRequestResource = InstanceGroupManagersSetTargetPoolsRequest.newBuilder().build(); - * Operation response = instanceGroupManagerClient.setTargetPoolsInstanceGroupManager(instanceGroupManager.toString(), instanceGroupManagersSetTargetPoolsRequestResource); + * instanceGroupManagerClient.setTargetPoolsInstanceGroupManagerAsync(instanceGroupManager.toString(), instanceGroupManagersSetTargetPoolsRequestResource).get(); * } * * @@ -1940,8 +2265,9 @@ public final Operation setTargetPoolsInstanceGroupManager( * @param instanceGroupManagersSetTargetPoolsRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setTargetPoolsInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setTargetPoolsInstanceGroupManagerAsync( String instanceGroupManager, InstanceGroupManagersSetTargetPoolsRequest instanceGroupManagersSetTargetPoolsRequestResource) { @@ -1952,7 +2278,7 @@ public final Operation setTargetPoolsInstanceGroupManager( .setInstanceGroupManagersSetTargetPoolsRequestResource( instanceGroupManagersSetTargetPoolsRequestResource) .build(); - return setTargetPoolsInstanceGroupManager(request); + return setTargetPoolsInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1973,17 +2299,49 @@ public final Operation setTargetPoolsInstanceGroupManager( * .setInstanceGroupManager(instanceGroupManager.toString()) * .setInstanceGroupManagersSetTargetPoolsRequestResource(instanceGroupManagersSetTargetPoolsRequestResource) * .build(); - * Operation response = instanceGroupManagerClient.setTargetPoolsInstanceGroupManager(request); + * instanceGroupManagerClient.setTargetPoolsInstanceGroupManagerAsync(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 */ - @BetaApi - public final Operation setTargetPoolsInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setTargetPoolsInstanceGroupManagerAsync( SetTargetPoolsInstanceGroupManagerHttpRequest request) { - return setTargetPoolsInstanceGroupManagerCallable().call(request); + return setTargetPoolsInstanceGroupManagerOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Modifies the target pools to which all instances in this managed instance group are assigned. + * The target pools automatically apply to all of the instances in the managed instance group. + * This operation is marked DONE when you make the request even if the instances have not yet been + * added to their target pools. The change might take some time to apply to all of the instances + * in the group depending on the size of the group. + * + *

Sample code: + * + *


+   * try (InstanceGroupManagerClient instanceGroupManagerClient = InstanceGroupManagerClient.create()) {
+   *   ProjectZoneInstanceGroupManagerName instanceGroupManager = ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]");
+   *   InstanceGroupManagersSetTargetPoolsRequest instanceGroupManagersSetTargetPoolsRequestResource = InstanceGroupManagersSetTargetPoolsRequest.newBuilder().build();
+   *   SetTargetPoolsInstanceGroupManagerHttpRequest request = SetTargetPoolsInstanceGroupManagerHttpRequest.newBuilder()
+   *     .setInstanceGroupManager(instanceGroupManager.toString())
+   *     .setInstanceGroupManagersSetTargetPoolsRequestResource(instanceGroupManagersSetTargetPoolsRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceGroupManagerClient.setTargetPoolsInstanceGroupManagerOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable< + SetTargetPoolsInstanceGroupManagerHttpRequest, EmptyMessage, Operation> + setTargetPoolsInstanceGroupManagerOperationCallable() { + return stub.setTargetPoolsInstanceGroupManagerOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -2006,7 +2364,7 @@ public final Operation setTargetPoolsInstanceGroupManager( * .build(); * ApiFuture<Operation> future = instanceGroupManagerClient.setTargetPoolsInstanceGroupManagerCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceGroupManagerSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceGroupManagerSettings.java index fc81da5b7b32..0a90f6151462 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceGroupManagerSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceGroupManagerSettings.java @@ -22,10 +22,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -49,13 +51,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of abandonInstancesInstanceGroupManager to 30 seconds: + * example, to set the total timeout of getInstanceGroupManager to 30 seconds: * *

  * 
  * InstanceGroupManagerSettings.Builder instanceGroupManagerSettingsBuilder =
  *     InstanceGroupManagerSettings.newBuilder();
- * instanceGroupManagerSettingsBuilder.abandonInstancesInstanceGroupManagerSettings().getRetrySettings().toBuilder()
+ * instanceGroupManagerSettingsBuilder.getInstanceGroupManagerSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * InstanceGroupManagerSettings instanceGroupManagerSettings = instanceGroupManagerSettingsBuilder.build();
  * 
@@ -73,6 +75,18 @@ public class InstanceGroupManagerSettings extends ClientSettings
+      abandonInstancesInstanceGroupManagerOperationSettings() {
+    return ((InstanceGroupManagerStubSettings) getStubSettings())
+        .abandonInstancesInstanceGroupManagerOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to aggregatedListInstanceGroupManagers. */
   public PagedCallSettings<
           AggregatedListInstanceGroupManagersHttpRequest,
@@ -90,6 +104,15 @@ public class InstanceGroupManagerSettings extends ClientSettings
+      deleteInstanceGroupManagerOperationSettings() {
+    return ((InstanceGroupManagerStubSettings) getStubSettings())
+        .deleteInstanceGroupManagerOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to deleteInstancesInstanceGroupManager. */
   public UnaryCallSettings
       deleteInstancesInstanceGroupManagerSettings() {
@@ -97,6 +120,16 @@ public class InstanceGroupManagerSettings extends ClientSettings
+      deleteInstancesInstanceGroupManagerOperationSettings() {
+    return ((InstanceGroupManagerStubSettings) getStubSettings())
+        .deleteInstancesInstanceGroupManagerOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getInstanceGroupManager. */
   public UnaryCallSettings
       getInstanceGroupManagerSettings() {
@@ -110,6 +143,15 @@ public class InstanceGroupManagerSettings extends ClientSettings
+      insertInstanceGroupManagerOperationSettings() {
+    return ((InstanceGroupManagerStubSettings) getStubSettings())
+        .insertInstanceGroupManagerOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listInstanceGroupManagers. */
   public PagedCallSettings<
           ListInstanceGroupManagersHttpRequest,
@@ -139,6 +181,15 @@ public class InstanceGroupManagerSettings extends ClientSettings
+      patchInstanceGroupManagerOperationSettings() {
+    return ((InstanceGroupManagerStubSettings) getStubSettings())
+        .patchInstanceGroupManagerOperationSettings();
+  }
+
   /**
    * Returns the object with the settings used for calls to recreateInstancesInstanceGroupManager.
    */
@@ -148,6 +199,18 @@ public class InstanceGroupManagerSettings extends ClientSettings
+      recreateInstancesInstanceGroupManagerOperationSettings() {
+    return ((InstanceGroupManagerStubSettings) getStubSettings())
+        .recreateInstancesInstanceGroupManagerOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to resizeInstanceGroupManager. */
   public UnaryCallSettings
       resizeInstanceGroupManagerSettings() {
@@ -155,6 +218,15 @@ public class InstanceGroupManagerSettings extends ClientSettings
+      resizeInstanceGroupManagerOperationSettings() {
+    return ((InstanceGroupManagerStubSettings) getStubSettings())
+        .resizeInstanceGroupManagerOperationSettings();
+  }
+
   /**
    * Returns the object with the settings used for calls to setInstanceTemplateInstanceGroupManager.
    */
@@ -164,6 +236,18 @@ public class InstanceGroupManagerSettings extends ClientSettings
+      setInstanceTemplateInstanceGroupManagerOperationSettings() {
+    return ((InstanceGroupManagerStubSettings) getStubSettings())
+        .setInstanceTemplateInstanceGroupManagerOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to setTargetPoolsInstanceGroupManager. */
   public UnaryCallSettings
       setTargetPoolsInstanceGroupManagerSettings() {
@@ -171,6 +255,16 @@ public class InstanceGroupManagerSettings extends ClientSettings
+      setTargetPoolsInstanceGroupManagerOperationSettings() {
+    return ((InstanceGroupManagerStubSettings) getStubSettings())
+        .setTargetPoolsInstanceGroupManagerOperationSettings();
+  }
+
   public static final InstanceGroupManagerSettings create(InstanceGroupManagerStubSettings stub)
       throws IOException {
     return new InstanceGroupManagerSettings.Builder(stub.toBuilder()).build();
@@ -282,6 +376,17 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().abandonInstancesInstanceGroupManagerSettings();
     }
 
+    /**
+     * Returns the builder for the settings used for calls to abandonInstancesInstanceGroupManager.
+     */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            AbandonInstancesInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        abandonInstancesInstanceGroupManagerOperationSettings() {
+      return getStubSettingsBuilder().abandonInstancesInstanceGroupManagerOperationSettings();
+    }
+
     /**
      * Returns the builder for the settings used for calls to aggregatedListInstanceGroupManagers.
      */
@@ -299,6 +404,15 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteInstanceGroupManagerSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteInstanceGroupManager. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            DeleteInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        deleteInstanceGroupManagerOperationSettings() {
+      return getStubSettingsBuilder().deleteInstanceGroupManagerOperationSettings();
+    }
+
     /**
      * Returns the builder for the settings used for calls to deleteInstancesInstanceGroupManager.
      */
@@ -307,6 +421,17 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteInstancesInstanceGroupManagerSettings();
     }
 
+    /**
+     * Returns the builder for the settings used for calls to deleteInstancesInstanceGroupManager.
+     */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            DeleteInstancesInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        deleteInstancesInstanceGroupManagerOperationSettings() {
+      return getStubSettingsBuilder().deleteInstancesInstanceGroupManagerOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getInstanceGroupManager. */
     public UnaryCallSettings.Builder
         getInstanceGroupManagerSettings() {
@@ -319,6 +444,15 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().insertInstanceGroupManagerSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertInstanceGroupManager. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            InsertInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        insertInstanceGroupManagerOperationSettings() {
+      return getStubSettingsBuilder().insertInstanceGroupManagerOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listInstanceGroupManagers. */
     public PagedCallSettings.Builder<
             ListInstanceGroupManagersHttpRequest,
@@ -345,6 +479,15 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().patchInstanceGroupManagerSettings();
     }
 
+    /** Returns the builder for the settings used for calls to patchInstanceGroupManager. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            PatchInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        patchInstanceGroupManagerOperationSettings() {
+      return getStubSettingsBuilder().patchInstanceGroupManagerOperationSettings();
+    }
+
     /**
      * Returns the builder for the settings used for calls to recreateInstancesInstanceGroupManager.
      */
@@ -353,12 +496,32 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().recreateInstancesInstanceGroupManagerSettings();
     }
 
+    /**
+     * Returns the builder for the settings used for calls to recreateInstancesInstanceGroupManager.
+     */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            RecreateInstancesInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        recreateInstancesInstanceGroupManagerOperationSettings() {
+      return getStubSettingsBuilder().recreateInstancesInstanceGroupManagerOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to resizeInstanceGroupManager. */
     public UnaryCallSettings.Builder
         resizeInstanceGroupManagerSettings() {
       return getStubSettingsBuilder().resizeInstanceGroupManagerSettings();
     }
 
+    /** Returns the builder for the settings used for calls to resizeInstanceGroupManager. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            ResizeInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        resizeInstanceGroupManagerOperationSettings() {
+      return getStubSettingsBuilder().resizeInstanceGroupManagerOperationSettings();
+    }
+
     /**
      * Returns the builder for the settings used for calls to
      * setInstanceTemplateInstanceGroupManager.
@@ -368,6 +531,18 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().setInstanceTemplateInstanceGroupManagerSettings();
     }
 
+    /**
+     * Returns the builder for the settings used for calls to
+     * setInstanceTemplateInstanceGroupManager.
+     */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetInstanceTemplateInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        setInstanceTemplateInstanceGroupManagerOperationSettings() {
+      return getStubSettingsBuilder().setInstanceTemplateInstanceGroupManagerOperationSettings();
+    }
+
     /**
      * Returns the builder for the settings used for calls to setTargetPoolsInstanceGroupManager.
      */
@@ -376,6 +551,17 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().setTargetPoolsInstanceGroupManagerSettings();
     }
 
+    /**
+     * Returns the builder for the settings used for calls to setTargetPoolsInstanceGroupManager.
+     */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetTargetPoolsInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        setTargetPoolsInstanceGroupManagerOperationSettings() {
+      return getStubSettingsBuilder().setTargetPoolsInstanceGroupManagerOperationSettings();
+    }
+
     @Override
     public InstanceGroupManagerSettings build() throws IOException {
       return new InstanceGroupManagerSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceGroupSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceGroupSettings.java
index 246647502bd6..db04043ed1f3 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceGroupSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceGroupSettings.java
@@ -23,10 +23,12 @@
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
 import com.google.api.gax.rpc.ClientSettings;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.TransportChannelProvider;
 import com.google.api.gax.rpc.UnaryCallSettings;
@@ -50,13 +52,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of addInstancesInstanceGroup to 30 seconds: + * example, to set the total timeout of getInstanceGroup to 30 seconds: * *

  * 
  * InstanceGroupSettings.Builder instanceGroupSettingsBuilder =
  *     InstanceGroupSettings.newBuilder();
- * instanceGroupSettingsBuilder.addInstancesInstanceGroupSettings().getRetrySettings().toBuilder()
+ * instanceGroupSettingsBuilder.getInstanceGroupSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * InstanceGroupSettings instanceGroupSettings = instanceGroupSettingsBuilder.build();
  * 
@@ -71,6 +73,15 @@ public class InstanceGroupSettings extends ClientSettings
     return ((InstanceGroupStubSettings) getStubSettings()).addInstancesInstanceGroupSettings();
   }
 
+  /** Returns the object with the settings used for calls to addInstancesInstanceGroup. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      addInstancesInstanceGroupOperationSettings() {
+    return ((InstanceGroupStubSettings) getStubSettings())
+        .addInstancesInstanceGroupOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to aggregatedListInstanceGroups. */
   public PagedCallSettings<
           AggregatedListInstanceGroupsHttpRequest,
@@ -86,6 +97,14 @@ public class InstanceGroupSettings extends ClientSettings
     return ((InstanceGroupStubSettings) getStubSettings()).deleteInstanceGroupSettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteInstanceGroup. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteInstanceGroupOperationSettings() {
+    return ((InstanceGroupStubSettings) getStubSettings()).deleteInstanceGroupOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getInstanceGroup. */
   public UnaryCallSettings getInstanceGroupSettings() {
     return ((InstanceGroupStubSettings) getStubSettings()).getInstanceGroupSettings();
@@ -97,6 +116,14 @@ public UnaryCallSettings getInstance
     return ((InstanceGroupStubSettings) getStubSettings()).insertInstanceGroupSettings();
   }
 
+  /** Returns the object with the settings used for calls to insertInstanceGroup. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertInstanceGroupOperationSettings() {
+    return ((InstanceGroupStubSettings) getStubSettings()).insertInstanceGroupOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listInstanceGroups. */
   public PagedCallSettings<
           ListInstanceGroupsHttpRequest, InstanceGroupList, ListInstanceGroupsPagedResponse>
@@ -119,12 +146,30 @@ public UnaryCallSettings getInstance
     return ((InstanceGroupStubSettings) getStubSettings()).removeInstancesInstanceGroupSettings();
   }
 
+  /** Returns the object with the settings used for calls to removeInstancesInstanceGroup. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      removeInstancesInstanceGroupOperationSettings() {
+    return ((InstanceGroupStubSettings) getStubSettings())
+        .removeInstancesInstanceGroupOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to setNamedPortsInstanceGroup. */
   public UnaryCallSettings
       setNamedPortsInstanceGroupSettings() {
     return ((InstanceGroupStubSettings) getStubSettings()).setNamedPortsInstanceGroupSettings();
   }
 
+  /** Returns the object with the settings used for calls to setNamedPortsInstanceGroup. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setNamedPortsInstanceGroupOperationSettings() {
+    return ((InstanceGroupStubSettings) getStubSettings())
+        .setNamedPortsInstanceGroupOperationSettings();
+  }
+
   public static final InstanceGroupSettings create(InstanceGroupStubSettings stub)
       throws IOException {
     return new InstanceGroupSettings.Builder(stub.toBuilder()).build();
@@ -233,6 +278,15 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().addInstancesInstanceGroupSettings();
     }
 
+    /** Returns the builder for the settings used for calls to addInstancesInstanceGroup. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            AddInstancesInstanceGroupHttpRequest, EmptyMessage, Operation>
+        addInstancesInstanceGroupOperationSettings() {
+      return getStubSettingsBuilder().addInstancesInstanceGroupOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to aggregatedListInstanceGroups. */
     public PagedCallSettings.Builder<
             AggregatedListInstanceGroupsHttpRequest,
@@ -248,6 +302,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteInstanceGroupSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteInstanceGroup. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteInstanceGroupOperationSettings() {
+      return getStubSettingsBuilder().deleteInstanceGroupOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getInstanceGroup. */
     public UnaryCallSettings.Builder
         getInstanceGroupSettings() {
@@ -260,6 +322,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().insertInstanceGroupSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertInstanceGroup. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertInstanceGroupOperationSettings() {
+      return getStubSettingsBuilder().insertInstanceGroupOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listInstanceGroups. */
     public PagedCallSettings.Builder<
             ListInstanceGroupsHttpRequest, InstanceGroupList, ListInstanceGroupsPagedResponse>
@@ -282,12 +352,30 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().removeInstancesInstanceGroupSettings();
     }
 
+    /** Returns the builder for the settings used for calls to removeInstancesInstanceGroup. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            RemoveInstancesInstanceGroupHttpRequest, EmptyMessage, Operation>
+        removeInstancesInstanceGroupOperationSettings() {
+      return getStubSettingsBuilder().removeInstancesInstanceGroupOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to setNamedPortsInstanceGroup. */
     public UnaryCallSettings.Builder
         setNamedPortsInstanceGroupSettings() {
       return getStubSettingsBuilder().setNamedPortsInstanceGroupSettings();
     }
 
+    /** Returns the builder for the settings used for calls to setNamedPortsInstanceGroup. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetNamedPortsInstanceGroupHttpRequest, EmptyMessage, Operation>
+        setNamedPortsInstanceGroupOperationSettings() {
+      return getStubSettingsBuilder().setNamedPortsInstanceGroupOperationSettings();
+    }
+
     @Override
     public InstanceGroupSettings build() throws IOException {
       return new InstanceGroupSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceSettings.java
index b4c674af0497..d88ccc631cff 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceSettings.java
@@ -23,10 +23,12 @@
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
 import com.google.api.gax.rpc.ClientSettings;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.TransportChannelProvider;
 import com.google.api.gax.rpc.UnaryCallSettings;
@@ -50,13 +52,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of addAccessConfigInstance to 30 seconds: + * example, to set the total timeout of getInstance to 30 seconds: * *

  * 
  * InstanceSettings.Builder instanceSettingsBuilder =
  *     InstanceSettings.newBuilder();
- * instanceSettingsBuilder.addAccessConfigInstanceSettings().getRetrySettings().toBuilder()
+ * instanceSettingsBuilder.getInstanceSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * InstanceSettings instanceSettings = instanceSettingsBuilder.build();
  * 
@@ -71,6 +73,14 @@ public class InstanceSettings extends ClientSettings {
     return ((InstanceStubSettings) getStubSettings()).addAccessConfigInstanceSettings();
   }
 
+  /** Returns the object with the settings used for calls to addAccessConfigInstance. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      addAccessConfigInstanceOperationSettings() {
+    return ((InstanceStubSettings) getStubSettings()).addAccessConfigInstanceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to aggregatedListInstances. */
   public PagedCallSettings<
           AggregatedListInstancesHttpRequest,
@@ -85,22 +95,54 @@ public UnaryCallSettings attachDiskIns
     return ((InstanceStubSettings) getStubSettings()).attachDiskInstanceSettings();
   }
 
+  /** Returns the object with the settings used for calls to attachDiskInstance. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      attachDiskInstanceOperationSettings() {
+    return ((InstanceStubSettings) getStubSettings()).attachDiskInstanceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to deleteInstance. */
   public UnaryCallSettings deleteInstanceSettings() {
     return ((InstanceStubSettings) getStubSettings()).deleteInstanceSettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteInstance. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteInstanceOperationSettings() {
+    return ((InstanceStubSettings) getStubSettings()).deleteInstanceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to deleteAccessConfigInstance. */
   public UnaryCallSettings
       deleteAccessConfigInstanceSettings() {
     return ((InstanceStubSettings) getStubSettings()).deleteAccessConfigInstanceSettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteAccessConfigInstance. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteAccessConfigInstanceOperationSettings() {
+    return ((InstanceStubSettings) getStubSettings()).deleteAccessConfigInstanceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to detachDiskInstance. */
   public UnaryCallSettings detachDiskInstanceSettings() {
     return ((InstanceStubSettings) getStubSettings()).detachDiskInstanceSettings();
   }
 
+  /** Returns the object with the settings used for calls to detachDiskInstance. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      detachDiskInstanceOperationSettings() {
+    return ((InstanceStubSettings) getStubSettings()).detachDiskInstanceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getInstance. */
   public UnaryCallSettings getInstanceSettings() {
     return ((InstanceStubSettings) getStubSettings()).getInstanceSettings();
@@ -122,6 +164,14 @@ public UnaryCallSettings insertInstanceSet
     return ((InstanceStubSettings) getStubSettings()).insertInstanceSettings();
   }
 
+  /** Returns the object with the settings used for calls to insertInstance. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertInstanceOperationSettings() {
+    return ((InstanceStubSettings) getStubSettings()).insertInstanceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listInstances. */
   public PagedCallSettings
       listInstancesSettings() {
@@ -142,18 +192,43 @@ public UnaryCallSettings resetInstanceSetti
     return ((InstanceStubSettings) getStubSettings()).resetInstanceSettings();
   }
 
+  /** Returns the object with the settings used for calls to resetInstance. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      resetInstanceOperationSettings() {
+    return ((InstanceStubSettings) getStubSettings()).resetInstanceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to setDeletionProtectionInstance. */
   public UnaryCallSettings
       setDeletionProtectionInstanceSettings() {
     return ((InstanceStubSettings) getStubSettings()).setDeletionProtectionInstanceSettings();
   }
 
+  /** Returns the object with the settings used for calls to setDeletionProtectionInstance. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setDeletionProtectionInstanceOperationSettings() {
+    return ((InstanceStubSettings) getStubSettings())
+        .setDeletionProtectionInstanceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to setDiskAutoDeleteInstance. */
   public UnaryCallSettings
       setDiskAutoDeleteInstanceSettings() {
     return ((InstanceStubSettings) getStubSettings()).setDiskAutoDeleteInstanceSettings();
   }
 
+  /** Returns the object with the settings used for calls to setDiskAutoDeleteInstance. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setDiskAutoDeleteInstanceOperationSettings() {
+    return ((InstanceStubSettings) getStubSettings()).setDiskAutoDeleteInstanceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to setIamPolicyInstance. */
   public UnaryCallSettings setIamPolicyInstanceSettings() {
     return ((InstanceStubSettings) getStubSettings()).setIamPolicyInstanceSettings();
@@ -164,69 +239,168 @@ public UnaryCallSettings setLabelsInsta
     return ((InstanceStubSettings) getStubSettings()).setLabelsInstanceSettings();
   }
 
+  /** Returns the object with the settings used for calls to setLabelsInstance. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setLabelsInstanceOperationSettings() {
+    return ((InstanceStubSettings) getStubSettings()).setLabelsInstanceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to setMachineResourcesInstance. */
   public UnaryCallSettings
       setMachineResourcesInstanceSettings() {
     return ((InstanceStubSettings) getStubSettings()).setMachineResourcesInstanceSettings();
   }
 
+  /** Returns the object with the settings used for calls to setMachineResourcesInstance. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setMachineResourcesInstanceOperationSettings() {
+    return ((InstanceStubSettings) getStubSettings())
+        .setMachineResourcesInstanceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to setMachineTypeInstance. */
   public UnaryCallSettings
       setMachineTypeInstanceSettings() {
     return ((InstanceStubSettings) getStubSettings()).setMachineTypeInstanceSettings();
   }
 
+  /** Returns the object with the settings used for calls to setMachineTypeInstance. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setMachineTypeInstanceOperationSettings() {
+    return ((InstanceStubSettings) getStubSettings()).setMachineTypeInstanceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to setMetadataInstance. */
   public UnaryCallSettings
       setMetadataInstanceSettings() {
     return ((InstanceStubSettings) getStubSettings()).setMetadataInstanceSettings();
   }
 
+  /** Returns the object with the settings used for calls to setMetadataInstance. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setMetadataInstanceOperationSettings() {
+    return ((InstanceStubSettings) getStubSettings()).setMetadataInstanceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to setMinCpuPlatformInstance. */
   public UnaryCallSettings
       setMinCpuPlatformInstanceSettings() {
     return ((InstanceStubSettings) getStubSettings()).setMinCpuPlatformInstanceSettings();
   }
 
+  /** Returns the object with the settings used for calls to setMinCpuPlatformInstance. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setMinCpuPlatformInstanceOperationSettings() {
+    return ((InstanceStubSettings) getStubSettings()).setMinCpuPlatformInstanceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to setSchedulingInstance. */
   public UnaryCallSettings
       setSchedulingInstanceSettings() {
     return ((InstanceStubSettings) getStubSettings()).setSchedulingInstanceSettings();
   }
 
+  /** Returns the object with the settings used for calls to setSchedulingInstance. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setSchedulingInstanceOperationSettings() {
+    return ((InstanceStubSettings) getStubSettings()).setSchedulingInstanceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to setServiceAccountInstance. */
   public UnaryCallSettings
       setServiceAccountInstanceSettings() {
     return ((InstanceStubSettings) getStubSettings()).setServiceAccountInstanceSettings();
   }
 
+  /** Returns the object with the settings used for calls to setServiceAccountInstance. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setServiceAccountInstanceOperationSettings() {
+    return ((InstanceStubSettings) getStubSettings()).setServiceAccountInstanceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to setTagsInstance. */
   public UnaryCallSettings setTagsInstanceSettings() {
     return ((InstanceStubSettings) getStubSettings()).setTagsInstanceSettings();
   }
 
+  /** Returns the object with the settings used for calls to setTagsInstance. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setTagsInstanceOperationSettings() {
+    return ((InstanceStubSettings) getStubSettings()).setTagsInstanceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to simulateMaintenanceEventInstance. */
   public UnaryCallSettings
       simulateMaintenanceEventInstanceSettings() {
     return ((InstanceStubSettings) getStubSettings()).simulateMaintenanceEventInstanceSettings();
   }
 
+  /** Returns the object with the settings used for calls to simulateMaintenanceEventInstance. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      simulateMaintenanceEventInstanceOperationSettings() {
+    return ((InstanceStubSettings) getStubSettings())
+        .simulateMaintenanceEventInstanceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to startInstance. */
   public UnaryCallSettings startInstanceSettings() {
     return ((InstanceStubSettings) getStubSettings()).startInstanceSettings();
   }
 
+  /** Returns the object with the settings used for calls to startInstance. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      startInstanceOperationSettings() {
+    return ((InstanceStubSettings) getStubSettings()).startInstanceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to startWithEncryptionKeyInstance. */
   public UnaryCallSettings
       startWithEncryptionKeyInstanceSettings() {
     return ((InstanceStubSettings) getStubSettings()).startWithEncryptionKeyInstanceSettings();
   }
 
+  /** Returns the object with the settings used for calls to startWithEncryptionKeyInstance. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      startWithEncryptionKeyInstanceOperationSettings() {
+    return ((InstanceStubSettings) getStubSettings())
+        .startWithEncryptionKeyInstanceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to stopInstance. */
   public UnaryCallSettings stopInstanceSettings() {
     return ((InstanceStubSettings) getStubSettings()).stopInstanceSettings();
   }
 
+  /** Returns the object with the settings used for calls to stopInstance. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      stopInstanceOperationSettings() {
+    return ((InstanceStubSettings) getStubSettings()).stopInstanceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to testIamPermissionsInstance. */
   public UnaryCallSettings
       testIamPermissionsInstanceSettings() {
@@ -239,12 +413,29 @@ public UnaryCallSettings stopInstanceSetting
     return ((InstanceStubSettings) getStubSettings()).updateAccessConfigInstanceSettings();
   }
 
+  /** Returns the object with the settings used for calls to updateAccessConfigInstance. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      updateAccessConfigInstanceOperationSettings() {
+    return ((InstanceStubSettings) getStubSettings()).updateAccessConfigInstanceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to updateNetworkInterfaceInstance. */
   public UnaryCallSettings
       updateNetworkInterfaceInstanceSettings() {
     return ((InstanceStubSettings) getStubSettings()).updateNetworkInterfaceInstanceSettings();
   }
 
+  /** Returns the object with the settings used for calls to updateNetworkInterfaceInstance. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      updateNetworkInterfaceInstanceOperationSettings() {
+    return ((InstanceStubSettings) getStubSettings())
+        .updateNetworkInterfaceInstanceOperationSettings();
+  }
+
   public static final InstanceSettings create(InstanceStubSettings stub) throws IOException {
     return new InstanceSettings.Builder(stub.toBuilder()).build();
   }
@@ -352,6 +543,15 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().addAccessConfigInstanceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to addAccessConfigInstance. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            AddAccessConfigInstanceHttpRequest, EmptyMessage, Operation>
+        addAccessConfigInstanceOperationSettings() {
+      return getStubSettingsBuilder().addAccessConfigInstanceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to aggregatedListInstances. */
     public PagedCallSettings.Builder<
             AggregatedListInstancesHttpRequest,
@@ -367,24 +567,57 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().attachDiskInstanceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to attachDiskInstance. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        attachDiskInstanceOperationSettings() {
+      return getStubSettingsBuilder().attachDiskInstanceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to deleteInstance. */
     public UnaryCallSettings.Builder
         deleteInstanceSettings() {
       return getStubSettingsBuilder().deleteInstanceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteInstance. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteInstanceOperationSettings() {
+      return getStubSettingsBuilder().deleteInstanceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to deleteAccessConfigInstance. */
     public UnaryCallSettings.Builder
         deleteAccessConfigInstanceSettings() {
       return getStubSettingsBuilder().deleteAccessConfigInstanceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteAccessConfigInstance. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            DeleteAccessConfigInstanceHttpRequest, EmptyMessage, Operation>
+        deleteAccessConfigInstanceOperationSettings() {
+      return getStubSettingsBuilder().deleteAccessConfigInstanceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to detachDiskInstance. */
     public UnaryCallSettings.Builder
         detachDiskInstanceSettings() {
       return getStubSettingsBuilder().detachDiskInstanceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to detachDiskInstance. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        detachDiskInstanceOperationSettings() {
+      return getStubSettingsBuilder().detachDiskInstanceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getInstance. */
     public UnaryCallSettings.Builder getInstanceSettings() {
       return getStubSettingsBuilder().getInstanceSettings();
@@ -408,6 +641,14 @@ public UnaryCallSettings.Builder getInstanceSe
       return getStubSettingsBuilder().insertInstanceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertInstance. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertInstanceOperationSettings() {
+      return getStubSettingsBuilder().insertInstanceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listInstances. */
     public PagedCallSettings.Builder<
             ListInstancesHttpRequest, InstanceList, ListInstancesPagedResponse>
@@ -429,18 +670,44 @@ public UnaryCallSettings.Builder resetInsta
       return getStubSettingsBuilder().resetInstanceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to resetInstance. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        resetInstanceOperationSettings() {
+      return getStubSettingsBuilder().resetInstanceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to setDeletionProtectionInstance. */
     public UnaryCallSettings.Builder
         setDeletionProtectionInstanceSettings() {
       return getStubSettingsBuilder().setDeletionProtectionInstanceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to setDeletionProtectionInstance. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetDeletionProtectionInstanceHttpRequest, EmptyMessage, Operation>
+        setDeletionProtectionInstanceOperationSettings() {
+      return getStubSettingsBuilder().setDeletionProtectionInstanceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to setDiskAutoDeleteInstance. */
     public UnaryCallSettings.Builder
         setDiskAutoDeleteInstanceSettings() {
       return getStubSettingsBuilder().setDiskAutoDeleteInstanceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to setDiskAutoDeleteInstance. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetDiskAutoDeleteInstanceHttpRequest, EmptyMessage, Operation>
+        setDiskAutoDeleteInstanceOperationSettings() {
+      return getStubSettingsBuilder().setDiskAutoDeleteInstanceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to setIamPolicyInstance. */
     public UnaryCallSettings.Builder
         setIamPolicyInstanceSettings() {
@@ -453,70 +720,171 @@ public UnaryCallSettings.Builder resetInsta
       return getStubSettingsBuilder().setLabelsInstanceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to setLabelsInstance. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        setLabelsInstanceOperationSettings() {
+      return getStubSettingsBuilder().setLabelsInstanceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to setMachineResourcesInstance. */
     public UnaryCallSettings.Builder
         setMachineResourcesInstanceSettings() {
       return getStubSettingsBuilder().setMachineResourcesInstanceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to setMachineResourcesInstance. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetMachineResourcesInstanceHttpRequest, EmptyMessage, Operation>
+        setMachineResourcesInstanceOperationSettings() {
+      return getStubSettingsBuilder().setMachineResourcesInstanceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to setMachineTypeInstance. */
     public UnaryCallSettings.Builder
         setMachineTypeInstanceSettings() {
       return getStubSettingsBuilder().setMachineTypeInstanceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to setMachineTypeInstance. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        setMachineTypeInstanceOperationSettings() {
+      return getStubSettingsBuilder().setMachineTypeInstanceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to setMetadataInstance. */
     public UnaryCallSettings.Builder
         setMetadataInstanceSettings() {
       return getStubSettingsBuilder().setMetadataInstanceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to setMetadataInstance. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        setMetadataInstanceOperationSettings() {
+      return getStubSettingsBuilder().setMetadataInstanceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to setMinCpuPlatformInstance. */
     public UnaryCallSettings.Builder
         setMinCpuPlatformInstanceSettings() {
       return getStubSettingsBuilder().setMinCpuPlatformInstanceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to setMinCpuPlatformInstance. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetMinCpuPlatformInstanceHttpRequest, EmptyMessage, Operation>
+        setMinCpuPlatformInstanceOperationSettings() {
+      return getStubSettingsBuilder().setMinCpuPlatformInstanceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to setSchedulingInstance. */
     public UnaryCallSettings.Builder
         setSchedulingInstanceSettings() {
       return getStubSettingsBuilder().setSchedulingInstanceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to setSchedulingInstance. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        setSchedulingInstanceOperationSettings() {
+      return getStubSettingsBuilder().setSchedulingInstanceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to setServiceAccountInstance. */
     public UnaryCallSettings.Builder
         setServiceAccountInstanceSettings() {
       return getStubSettingsBuilder().setServiceAccountInstanceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to setServiceAccountInstance. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetServiceAccountInstanceHttpRequest, EmptyMessage, Operation>
+        setServiceAccountInstanceOperationSettings() {
+      return getStubSettingsBuilder().setServiceAccountInstanceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to setTagsInstance. */
     public UnaryCallSettings.Builder
         setTagsInstanceSettings() {
       return getStubSettingsBuilder().setTagsInstanceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to setTagsInstance. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        setTagsInstanceOperationSettings() {
+      return getStubSettingsBuilder().setTagsInstanceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to simulateMaintenanceEventInstance. */
     public UnaryCallSettings.Builder
         simulateMaintenanceEventInstanceSettings() {
       return getStubSettingsBuilder().simulateMaintenanceEventInstanceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to simulateMaintenanceEventInstance. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SimulateMaintenanceEventInstanceHttpRequest, EmptyMessage, Operation>
+        simulateMaintenanceEventInstanceOperationSettings() {
+      return getStubSettingsBuilder().simulateMaintenanceEventInstanceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to startInstance. */
     public UnaryCallSettings.Builder startInstanceSettings() {
       return getStubSettingsBuilder().startInstanceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to startInstance. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        startInstanceOperationSettings() {
+      return getStubSettingsBuilder().startInstanceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to startWithEncryptionKeyInstance. */
     public UnaryCallSettings.Builder
         startWithEncryptionKeyInstanceSettings() {
       return getStubSettingsBuilder().startWithEncryptionKeyInstanceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to startWithEncryptionKeyInstance. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            StartWithEncryptionKeyInstanceHttpRequest, EmptyMessage, Operation>
+        startWithEncryptionKeyInstanceOperationSettings() {
+      return getStubSettingsBuilder().startWithEncryptionKeyInstanceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to stopInstance. */
     public UnaryCallSettings.Builder stopInstanceSettings() {
       return getStubSettingsBuilder().stopInstanceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to stopInstance. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        stopInstanceOperationSettings() {
+      return getStubSettingsBuilder().stopInstanceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to testIamPermissionsInstance. */
     public UnaryCallSettings.Builder
         testIamPermissionsInstanceSettings() {
@@ -529,12 +897,30 @@ public UnaryCallSettings.Builder stopInstanc
       return getStubSettingsBuilder().updateAccessConfigInstanceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to updateAccessConfigInstance. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            UpdateAccessConfigInstanceHttpRequest, EmptyMessage, Operation>
+        updateAccessConfigInstanceOperationSettings() {
+      return getStubSettingsBuilder().updateAccessConfigInstanceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to updateNetworkInterfaceInstance. */
     public UnaryCallSettings.Builder
         updateNetworkInterfaceInstanceSettings() {
       return getStubSettingsBuilder().updateNetworkInterfaceInstanceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to updateNetworkInterfaceInstance. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            UpdateNetworkInterfaceInstanceHttpRequest, EmptyMessage, Operation>
+        updateNetworkInterfaceInstanceOperationSettings() {
+      return getStubSettingsBuilder().updateNetworkInterfaceInstanceOperationSettings();
+    }
+
     @Override
     public InstanceSettings build() throws IOException {
       return new InstanceSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceTemplateClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceTemplateClient.java
index 9c2db2c3a0ce..fc5cb0c6e515 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceTemplateClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceTemplateClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.InstanceTemplateStub;
@@ -43,7 +46,7 @@
  * 
  * try (InstanceTemplateClient instanceTemplateClient = InstanceTemplateClient.create()) {
  *   ProjectGlobalInstanceTemplateName instanceTemplate = ProjectGlobalInstanceTemplateName.of("[PROJECT]", "[INSTANCE_TEMPLATE]");
- *   Operation response = instanceTemplateClient.deleteInstanceTemplate(instanceTemplate);
+ *   InstanceTemplate response = instanceTemplateClient.getInstanceTemplate(instanceTemplate);
  * }
  * 
  * 
@@ -104,6 +107,7 @@ public class InstanceTemplateClient implements BackgroundResource { private final InstanceTemplateSettings settings; private final InstanceTemplateStub stub; + private final GlobalOperationClient operationsClient; /** Constructs an instance of InstanceTemplateClient with default settings. */ public static final InstanceTemplateClient create() throws IOException { @@ -136,12 +140,14 @@ public static final InstanceTemplateClient create(InstanceTemplateStub stub) { protected InstanceTemplateClient(InstanceTemplateSettings settings) throws IOException { this.settings = settings; this.stub = ((InstanceTemplateStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected InstanceTemplateClient(InstanceTemplateStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } public final InstanceTemplateSettings getSettings() { @@ -153,6 +159,16 @@ public InstanceTemplateStub getStub() { return stub; } + /** + * Returns the GlobalOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final GlobalOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Deletes the specified instance template. Deleting an instance template is permanent and cannot @@ -164,22 +180,23 @@ public InstanceTemplateStub getStub() { *

    * try (InstanceTemplateClient instanceTemplateClient = InstanceTemplateClient.create()) {
    *   ProjectGlobalInstanceTemplateName instanceTemplate = ProjectGlobalInstanceTemplateName.of("[PROJECT]", "[INSTANCE_TEMPLATE]");
-   *   Operation response = instanceTemplateClient.deleteInstanceTemplate(instanceTemplate);
+   *   instanceTemplateClient.deleteInstanceTemplateAsync(instanceTemplate).get();
    * }
    * 
* * @param instanceTemplate The name of the instance template to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteInstanceTemplate( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteInstanceTemplateAsync( ProjectGlobalInstanceTemplateName instanceTemplate) { DeleteInstanceTemplateHttpRequest request = DeleteInstanceTemplateHttpRequest.newBuilder() .setInstanceTemplate(instanceTemplate == null ? null : instanceTemplate.toString()) .build(); - return deleteInstanceTemplate(request); + return deleteInstanceTemplateAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -193,21 +210,23 @@ public final Operation deleteInstanceTemplate( *

    * try (InstanceTemplateClient instanceTemplateClient = InstanceTemplateClient.create()) {
    *   ProjectGlobalInstanceTemplateName instanceTemplate = ProjectGlobalInstanceTemplateName.of("[PROJECT]", "[INSTANCE_TEMPLATE]");
-   *   Operation response = instanceTemplateClient.deleteInstanceTemplate(instanceTemplate.toString());
+   *   instanceTemplateClient.deleteInstanceTemplateAsync(instanceTemplate.toString()).get();
    * }
    * 
* * @param instanceTemplate The name of the instance template to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteInstanceTemplate(String instanceTemplate) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteInstanceTemplateAsync( + String instanceTemplate) { DeleteInstanceTemplateHttpRequest request = DeleteInstanceTemplateHttpRequest.newBuilder() .setInstanceTemplate(instanceTemplate) .build(); - return deleteInstanceTemplate(request); + return deleteInstanceTemplateAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -224,16 +243,44 @@ public final Operation deleteInstanceTemplate(String instanceTemplate) { * DeleteInstanceTemplateHttpRequest request = DeleteInstanceTemplateHttpRequest.newBuilder() * .setInstanceTemplate(instanceTemplate.toString()) * .build(); - * Operation response = instanceTemplateClient.deleteInstanceTemplate(request); + * instanceTemplateClient.deleteInstanceTemplateAsync(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 */ - @BetaApi - public final Operation deleteInstanceTemplate(DeleteInstanceTemplateHttpRequest request) { - return deleteInstanceTemplateCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteInstanceTemplateAsync( + DeleteInstanceTemplateHttpRequest request) { + return deleteInstanceTemplateOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified instance template. Deleting an instance template is permanent and cannot + * be undone. It is not possible to delete templates that are already in use by a managed instance + * group. + * + *

Sample code: + * + *


+   * try (InstanceTemplateClient instanceTemplateClient = InstanceTemplateClient.create()) {
+   *   ProjectGlobalInstanceTemplateName instanceTemplate = ProjectGlobalInstanceTemplateName.of("[PROJECT]", "[INSTANCE_TEMPLATE]");
+   *   DeleteInstanceTemplateHttpRequest request = DeleteInstanceTemplateHttpRequest.newBuilder()
+   *     .setInstanceTemplate(instanceTemplate.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceTemplateClient.deleteInstanceTemplateOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteInstanceTemplateOperationCallable() { + return stub.deleteInstanceTemplateOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -252,7 +299,7 @@ public final Operation deleteInstanceTemplate(DeleteInstanceTemplateHttpRequest * .build(); * ApiFuture<Operation> future = instanceTemplateClient.deleteInstanceTemplateCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } *
*/ @@ -482,7 +529,7 @@ public final Policy getIamPolicyInstanceTemplate( * try (InstanceTemplateClient instanceTemplateClient = InstanceTemplateClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * InstanceTemplate instanceTemplateResource = InstanceTemplate.newBuilder().build(); - * Operation response = instanceTemplateClient.insertInstanceTemplate(project, instanceTemplateResource); + * instanceTemplateClient.insertInstanceTemplateAsync(project, instanceTemplateResource).get(); * } * * @@ -491,8 +538,9 @@ public final Policy getIamPolicyInstanceTemplate( * beta.instanceTemplates ==) (== resource_for v1.instanceTemplates ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertInstanceTemplate( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertInstanceTemplateAsync( ProjectName project, InstanceTemplate instanceTemplateResource) { InsertInstanceTemplateHttpRequest request = @@ -500,7 +548,7 @@ public final Operation insertInstanceTemplate( .setProject(project == null ? null : project.toString()) .setInstanceTemplateResource(instanceTemplateResource) .build(); - return insertInstanceTemplate(request); + return insertInstanceTemplateAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -516,7 +564,7 @@ public final Operation insertInstanceTemplate( * try (InstanceTemplateClient instanceTemplateClient = InstanceTemplateClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * InstanceTemplate instanceTemplateResource = InstanceTemplate.newBuilder().build(); - * Operation response = instanceTemplateClient.insertInstanceTemplate(project.toString(), instanceTemplateResource); + * instanceTemplateClient.insertInstanceTemplateAsync(project.toString(), instanceTemplateResource).get(); * } * * @@ -525,8 +573,9 @@ public final Operation insertInstanceTemplate( * beta.instanceTemplates ==) (== resource_for v1.instanceTemplates ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertInstanceTemplate( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertInstanceTemplateAsync( String project, InstanceTemplate instanceTemplateResource) { InsertInstanceTemplateHttpRequest request = @@ -534,7 +583,7 @@ public final Operation insertInstanceTemplate( .setProject(project) .setInstanceTemplateResource(instanceTemplateResource) .build(); - return insertInstanceTemplate(request); + return insertInstanceTemplateAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -554,16 +603,47 @@ public final Operation insertInstanceTemplate( * .setProject(project.toString()) * .setInstanceTemplateResource(instanceTemplateResource) * .build(); - * Operation response = instanceTemplateClient.insertInstanceTemplate(request); + * instanceTemplateClient.insertInstanceTemplateAsync(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 */ - @BetaApi - public final Operation insertInstanceTemplate(InsertInstanceTemplateHttpRequest request) { - return insertInstanceTemplateCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertInstanceTemplateAsync( + InsertInstanceTemplateHttpRequest request) { + return insertInstanceTemplateOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates an instance template in the specified project using the data that is included in the + * request. If you are creating a new template to update an existing instance group, your new + * instance template must use the same network or, if applicable, the same subnetwork as the + * original template. + * + *

Sample code: + * + *


+   * try (InstanceTemplateClient instanceTemplateClient = InstanceTemplateClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   InstanceTemplate instanceTemplateResource = InstanceTemplate.newBuilder().build();
+   *   InsertInstanceTemplateHttpRequest request = InsertInstanceTemplateHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .setInstanceTemplateResource(instanceTemplateResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = instanceTemplateClient.insertInstanceTemplateOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertInstanceTemplateOperationCallable() { + return stub.insertInstanceTemplateOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -585,7 +665,7 @@ public final Operation insertInstanceTemplate(InsertInstanceTemplateHttpRequest * .build(); * ApiFuture<Operation> future = instanceTemplateClient.insertInstanceTemplateCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceTemplateSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceTemplateSettings.java index c0d0c456d451..ff5a5171f9fd 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceTemplateSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceTemplateSettings.java @@ -21,10 +21,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -48,13 +50,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteInstanceTemplate to 30 seconds: + * example, to set the total timeout of getInstanceTemplate to 30 seconds: * *

  * 
  * InstanceTemplateSettings.Builder instanceTemplateSettingsBuilder =
  *     InstanceTemplateSettings.newBuilder();
- * instanceTemplateSettingsBuilder.deleteInstanceTemplateSettings().getRetrySettings().toBuilder()
+ * instanceTemplateSettingsBuilder.getInstanceTemplateSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * InstanceTemplateSettings instanceTemplateSettings = instanceTemplateSettingsBuilder.build();
  * 
@@ -69,6 +71,15 @@ public class InstanceTemplateSettings extends ClientSettings
+      deleteInstanceTemplateOperationSettings() {
+    return ((InstanceTemplateStubSettings) getStubSettings())
+        .deleteInstanceTemplateOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getInstanceTemplate. */
   public UnaryCallSettings
       getInstanceTemplateSettings() {
@@ -88,6 +99,15 @@ public class InstanceTemplateSettings extends ClientSettings
+      insertInstanceTemplateOperationSettings() {
+    return ((InstanceTemplateStubSettings) getStubSettings())
+        .insertInstanceTemplateOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listInstanceTemplates. */
   public PagedCallSettings<
           ListInstanceTemplatesHttpRequest,
@@ -219,6 +239,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteInstanceTemplateSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteInstanceTemplate. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteInstanceTemplateOperationSettings() {
+      return getStubSettingsBuilder().deleteInstanceTemplateOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getInstanceTemplate. */
     public UnaryCallSettings.Builder
         getInstanceTemplateSettings() {
@@ -237,6 +265,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().insertInstanceTemplateSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertInstanceTemplate. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertInstanceTemplateOperationSettings() {
+      return getStubSettingsBuilder().insertInstanceTemplateOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listInstanceTemplates. */
     public PagedCallSettings.Builder<
             ListInstanceTemplatesHttpRequest,
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InterconnectAttachmentClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InterconnectAttachmentClient.java
index d5db6755193c..2ef70cfae745 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InterconnectAttachmentClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InterconnectAttachmentClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.InterconnectAttachmentStub;
@@ -43,7 +46,7 @@
  * 
  * try (InterconnectAttachmentClient interconnectAttachmentClient = InterconnectAttachmentClient.create()) {
  *   ProjectRegionInterconnectAttachmentName interconnectAttachment = ProjectRegionInterconnectAttachmentName.of("[PROJECT]", "[REGION]", "[INTERCONNECT_ATTACHMENT]");
- *   Operation response = interconnectAttachmentClient.deleteInterconnectAttachment(interconnectAttachment);
+ *   InterconnectAttachment response = interconnectAttachmentClient.getInterconnectAttachment(interconnectAttachment);
  * }
  * 
  * 
@@ -104,6 +107,7 @@ public class InterconnectAttachmentClient implements BackgroundResource { private final InterconnectAttachmentSettings settings; private final InterconnectAttachmentStub stub; + private final RegionOperationClient operationsClient; /** Constructs an instance of InterconnectAttachmentClient with default settings. */ public static final InterconnectAttachmentClient create() throws IOException { @@ -137,12 +141,14 @@ protected InterconnectAttachmentClient(InterconnectAttachmentSettings settings) throws IOException { this.settings = settings; this.stub = ((InterconnectAttachmentStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected InterconnectAttachmentClient(InterconnectAttachmentStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub()); } public final InterconnectAttachmentSettings getSettings() { @@ -154,6 +160,16 @@ public InterconnectAttachmentStub getStub() { return stub; } + /** + * Returns the RegionOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final RegionOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Retrieves an aggregated list of interconnect attachments. @@ -307,15 +323,16 @@ public InterconnectAttachmentStub getStub() { *

    * try (InterconnectAttachmentClient interconnectAttachmentClient = InterconnectAttachmentClient.create()) {
    *   ProjectRegionInterconnectAttachmentName interconnectAttachment = ProjectRegionInterconnectAttachmentName.of("[PROJECT]", "[REGION]", "[INTERCONNECT_ATTACHMENT]");
-   *   Operation response = interconnectAttachmentClient.deleteInterconnectAttachment(interconnectAttachment);
+   *   interconnectAttachmentClient.deleteInterconnectAttachmentAsync(interconnectAttachment).get();
    * }
    * 
* * @param interconnectAttachment Name of the interconnect attachment to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteInterconnectAttachment( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteInterconnectAttachmentAsync( ProjectRegionInterconnectAttachmentName interconnectAttachment) { DeleteInterconnectAttachmentHttpRequest request = @@ -323,7 +340,7 @@ public final Operation deleteInterconnectAttachment( .setInterconnectAttachment( interconnectAttachment == null ? null : interconnectAttachment.toString()) .build(); - return deleteInterconnectAttachment(request); + return deleteInterconnectAttachmentAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -335,21 +352,23 @@ public final Operation deleteInterconnectAttachment( *

    * try (InterconnectAttachmentClient interconnectAttachmentClient = InterconnectAttachmentClient.create()) {
    *   ProjectRegionInterconnectAttachmentName interconnectAttachment = ProjectRegionInterconnectAttachmentName.of("[PROJECT]", "[REGION]", "[INTERCONNECT_ATTACHMENT]");
-   *   Operation response = interconnectAttachmentClient.deleteInterconnectAttachment(interconnectAttachment.toString());
+   *   interconnectAttachmentClient.deleteInterconnectAttachmentAsync(interconnectAttachment.toString()).get();
    * }
    * 
* * @param interconnectAttachment Name of the interconnect attachment to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteInterconnectAttachment(String interconnectAttachment) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteInterconnectAttachmentAsync( + String interconnectAttachment) { DeleteInterconnectAttachmentHttpRequest request = DeleteInterconnectAttachmentHttpRequest.newBuilder() .setInterconnectAttachment(interconnectAttachment) .build(); - return deleteInterconnectAttachment(request); + return deleteInterconnectAttachmentAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -364,17 +383,42 @@ public final Operation deleteInterconnectAttachment(String interconnectAttachmen * DeleteInterconnectAttachmentHttpRequest request = DeleteInterconnectAttachmentHttpRequest.newBuilder() * .setInterconnectAttachment(interconnectAttachment.toString()) * .build(); - * Operation response = interconnectAttachmentClient.deleteInterconnectAttachment(request); + * interconnectAttachmentClient.deleteInterconnectAttachmentAsync(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 */ - @BetaApi - public final Operation deleteInterconnectAttachment( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteInterconnectAttachmentAsync( DeleteInterconnectAttachmentHttpRequest request) { - return deleteInterconnectAttachmentCallable().call(request); + return deleteInterconnectAttachmentOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified interconnect attachment. + * + *

Sample code: + * + *


+   * try (InterconnectAttachmentClient interconnectAttachmentClient = InterconnectAttachmentClient.create()) {
+   *   ProjectRegionInterconnectAttachmentName interconnectAttachment = ProjectRegionInterconnectAttachmentName.of("[PROJECT]", "[REGION]", "[INTERCONNECT_ATTACHMENT]");
+   *   DeleteInterconnectAttachmentHttpRequest request = DeleteInterconnectAttachmentHttpRequest.newBuilder()
+   *     .setInterconnectAttachment(interconnectAttachment.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = interconnectAttachmentClient.deleteInterconnectAttachmentOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteInterconnectAttachmentOperationCallable() { + return stub.deleteInterconnectAttachmentOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -391,7 +435,7 @@ public final Operation deleteInterconnectAttachment( * .build(); * ApiFuture<Operation> future = interconnectAttachmentClient.deleteInterconnectAttachmentCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -515,7 +559,7 @@ public final InterconnectAttachment getInterconnectAttachment( * try (InterconnectAttachmentClient interconnectAttachmentClient = InterconnectAttachmentClient.create()) { * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * InterconnectAttachment interconnectAttachmentResource = InterconnectAttachment.newBuilder().build(); - * Operation response = interconnectAttachmentClient.insertInterconnectAttachment(region, interconnectAttachmentResource); + * interconnectAttachmentClient.insertInterconnectAttachmentAsync(region, interconnectAttachmentResource).get(); * } * * @@ -525,8 +569,9 @@ public final InterconnectAttachment getInterconnectAttachment( * beta.interconnectAttachments ==) (== resource_for v1.interconnectAttachments ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertInterconnectAttachment( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertInterconnectAttachmentAsync( ProjectRegionName region, InterconnectAttachment interconnectAttachmentResource) { InsertInterconnectAttachmentHttpRequest request = @@ -534,7 +579,7 @@ public final Operation insertInterconnectAttachment( .setRegion(region == null ? null : region.toString()) .setInterconnectAttachmentResource(interconnectAttachmentResource) .build(); - return insertInterconnectAttachment(request); + return insertInterconnectAttachmentAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -548,7 +593,7 @@ public final Operation insertInterconnectAttachment( * try (InterconnectAttachmentClient interconnectAttachmentClient = InterconnectAttachmentClient.create()) { * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * InterconnectAttachment interconnectAttachmentResource = InterconnectAttachment.newBuilder().build(); - * Operation response = interconnectAttachmentClient.insertInterconnectAttachment(region.toString(), interconnectAttachmentResource); + * interconnectAttachmentClient.insertInterconnectAttachmentAsync(region.toString(), interconnectAttachmentResource).get(); * } * * @@ -558,8 +603,9 @@ public final Operation insertInterconnectAttachment( * beta.interconnectAttachments ==) (== resource_for v1.interconnectAttachments ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertInterconnectAttachment( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertInterconnectAttachmentAsync( String region, InterconnectAttachment interconnectAttachmentResource) { InsertInterconnectAttachmentHttpRequest request = @@ -567,7 +613,7 @@ public final Operation insertInterconnectAttachment( .setRegion(region) .setInterconnectAttachmentResource(interconnectAttachmentResource) .build(); - return insertInterconnectAttachment(request); + return insertInterconnectAttachmentAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -585,17 +631,45 @@ public final Operation insertInterconnectAttachment( * .setRegion(region.toString()) * .setInterconnectAttachmentResource(interconnectAttachmentResource) * .build(); - * Operation response = interconnectAttachmentClient.insertInterconnectAttachment(request); + * interconnectAttachmentClient.insertInterconnectAttachmentAsync(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 */ - @BetaApi - public final Operation insertInterconnectAttachment( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertInterconnectAttachmentAsync( InsertInterconnectAttachmentHttpRequest request) { - return insertInterconnectAttachmentCallable().call(request); + return insertInterconnectAttachmentOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates an InterconnectAttachment in the specified project using the data included in the + * request. + * + *

Sample code: + * + *


+   * try (InterconnectAttachmentClient interconnectAttachmentClient = InterconnectAttachmentClient.create()) {
+   *   ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
+   *   InterconnectAttachment interconnectAttachmentResource = InterconnectAttachment.newBuilder().build();
+   *   InsertInterconnectAttachmentHttpRequest request = InsertInterconnectAttachmentHttpRequest.newBuilder()
+   *     .setRegion(region.toString())
+   *     .setInterconnectAttachmentResource(interconnectAttachmentResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = interconnectAttachmentClient.insertInterconnectAttachmentOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertInterconnectAttachmentOperationCallable() { + return stub.insertInterconnectAttachmentOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -615,7 +689,7 @@ public final Operation insertInterconnectAttachment( * .build(); * ApiFuture<Operation> future = interconnectAttachmentClient.insertInterconnectAttachmentCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -777,7 +851,7 @@ public final ListInterconnectAttachmentsPagedResponse listInterconnectAttachment * ProjectRegionInterconnectAttachmentName interconnectAttachment = ProjectRegionInterconnectAttachmentName.of("[PROJECT]", "[REGION]", "[INTERCONNECT_ATTACHMENT]"); * InterconnectAttachment interconnectAttachmentResource = InterconnectAttachment.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = interconnectAttachmentClient.patchInterconnectAttachment(interconnectAttachment, interconnectAttachmentResource, fieldMask); + * interconnectAttachmentClient.patchInterconnectAttachmentAsync(interconnectAttachment, interconnectAttachmentResource, fieldMask).get(); * } * * @@ -791,8 +865,9 @@ public final ListInterconnectAttachmentsPagedResponse listInterconnectAttachment * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchInterconnectAttachment( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchInterconnectAttachmentAsync( ProjectRegionInterconnectAttachmentName interconnectAttachment, InterconnectAttachment interconnectAttachmentResource, List fieldMask) { @@ -804,7 +879,7 @@ public final Operation patchInterconnectAttachment( .setInterconnectAttachmentResource(interconnectAttachmentResource) .addAllFieldMask(fieldMask) .build(); - return patchInterconnectAttachment(request); + return patchInterconnectAttachmentAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -819,7 +894,7 @@ public final Operation patchInterconnectAttachment( * ProjectRegionInterconnectAttachmentName interconnectAttachment = ProjectRegionInterconnectAttachmentName.of("[PROJECT]", "[REGION]", "[INTERCONNECT_ATTACHMENT]"); * InterconnectAttachment interconnectAttachmentResource = InterconnectAttachment.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = interconnectAttachmentClient.patchInterconnectAttachment(interconnectAttachment.toString(), interconnectAttachmentResource, fieldMask); + * interconnectAttachmentClient.patchInterconnectAttachmentAsync(interconnectAttachment.toString(), interconnectAttachmentResource, fieldMask).get(); * } * * @@ -833,8 +908,9 @@ public final Operation patchInterconnectAttachment( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchInterconnectAttachment( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchInterconnectAttachmentAsync( String interconnectAttachment, InterconnectAttachment interconnectAttachmentResource, List fieldMask) { @@ -845,7 +921,7 @@ public final Operation patchInterconnectAttachment( .setInterconnectAttachmentResource(interconnectAttachmentResource) .addAllFieldMask(fieldMask) .build(); - return patchInterconnectAttachment(request); + return patchInterconnectAttachmentAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -865,17 +941,47 @@ public final Operation patchInterconnectAttachment( * .setInterconnectAttachmentResource(interconnectAttachmentResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = interconnectAttachmentClient.patchInterconnectAttachment(request); + * interconnectAttachmentClient.patchInterconnectAttachmentAsync(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 */ - @BetaApi - public final Operation patchInterconnectAttachment( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchInterconnectAttachmentAsync( PatchInterconnectAttachmentHttpRequest request) { - return patchInterconnectAttachmentCallable().call(request); + return patchInterconnectAttachmentOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Updates the specified interconnect attachment with the data included in the request. This + * method supports PATCH semantics and uses the JSON merge patch format and processing rules. + * + *

Sample code: + * + *


+   * try (InterconnectAttachmentClient interconnectAttachmentClient = InterconnectAttachmentClient.create()) {
+   *   ProjectRegionInterconnectAttachmentName interconnectAttachment = ProjectRegionInterconnectAttachmentName.of("[PROJECT]", "[REGION]", "[INTERCONNECT_ATTACHMENT]");
+   *   InterconnectAttachment interconnectAttachmentResource = InterconnectAttachment.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   PatchInterconnectAttachmentHttpRequest request = PatchInterconnectAttachmentHttpRequest.newBuilder()
+   *     .setInterconnectAttachment(interconnectAttachment.toString())
+   *     .setInterconnectAttachmentResource(interconnectAttachmentResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = interconnectAttachmentClient.patchInterconnectAttachmentOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + patchInterconnectAttachmentOperationCallable() { + return stub.patchInterconnectAttachmentOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -897,7 +1003,7 @@ public final Operation patchInterconnectAttachment( * .build(); * ApiFuture<Operation> future = interconnectAttachmentClient.patchInterconnectAttachmentCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InterconnectAttachmentSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InterconnectAttachmentSettings.java index 4fc5132765f2..45d0effc36a8 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InterconnectAttachmentSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InterconnectAttachmentSettings.java @@ -22,10 +22,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -49,13 +51,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteInterconnectAttachment to 30 seconds: + * example, to set the total timeout of getInterconnectAttachment to 30 seconds: * *

  * 
  * InterconnectAttachmentSettings.Builder interconnectAttachmentSettingsBuilder =
  *     InterconnectAttachmentSettings.newBuilder();
- * interconnectAttachmentSettingsBuilder.deleteInterconnectAttachmentSettings().getRetrySettings().toBuilder()
+ * interconnectAttachmentSettingsBuilder.getInterconnectAttachmentSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * InterconnectAttachmentSettings interconnectAttachmentSettings = interconnectAttachmentSettingsBuilder.build();
  * 
@@ -83,6 +85,15 @@ public class InterconnectAttachmentSettings extends ClientSettings
+      deleteInterconnectAttachmentOperationSettings() {
+    return ((InterconnectAttachmentStubSettings) getStubSettings())
+        .deleteInterconnectAttachmentOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getInterconnectAttachment. */
   public UnaryCallSettings
       getInterconnectAttachmentSettings() {
@@ -97,6 +108,15 @@ public class InterconnectAttachmentSettings extends ClientSettings
+      insertInterconnectAttachmentOperationSettings() {
+    return ((InterconnectAttachmentStubSettings) getStubSettings())
+        .insertInterconnectAttachmentOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listInterconnectAttachments. */
   public PagedCallSettings<
           ListInterconnectAttachmentsHttpRequest,
@@ -114,6 +134,15 @@ public class InterconnectAttachmentSettings extends ClientSettings
+      patchInterconnectAttachmentOperationSettings() {
+    return ((InterconnectAttachmentStubSettings) getStubSettings())
+        .patchInterconnectAttachmentOperationSettings();
+  }
+
   public static final InterconnectAttachmentSettings create(InterconnectAttachmentStubSettings stub)
       throws IOException {
     return new InterconnectAttachmentSettings.Builder(stub.toBuilder()).build();
@@ -234,6 +263,15 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteInterconnectAttachmentSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteInterconnectAttachment. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            DeleteInterconnectAttachmentHttpRequest, EmptyMessage, Operation>
+        deleteInterconnectAttachmentOperationSettings() {
+      return getStubSettingsBuilder().deleteInterconnectAttachmentOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getInterconnectAttachment. */
     public UnaryCallSettings.Builder
         getInterconnectAttachmentSettings() {
@@ -246,6 +284,15 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().insertInterconnectAttachmentSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertInterconnectAttachment. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            InsertInterconnectAttachmentHttpRequest, EmptyMessage, Operation>
+        insertInterconnectAttachmentOperationSettings() {
+      return getStubSettingsBuilder().insertInterconnectAttachmentOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listInterconnectAttachments. */
     public PagedCallSettings.Builder<
             ListInterconnectAttachmentsHttpRequest,
@@ -261,6 +308,15 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().patchInterconnectAttachmentSettings();
     }
 
+    /** Returns the builder for the settings used for calls to patchInterconnectAttachment. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            PatchInterconnectAttachmentHttpRequest, EmptyMessage, Operation>
+        patchInterconnectAttachmentOperationSettings() {
+      return getStubSettingsBuilder().patchInterconnectAttachmentOperationSettings();
+    }
+
     @Override
     public InterconnectAttachmentSettings build() throws IOException {
       return new InterconnectAttachmentSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InterconnectClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InterconnectClient.java
index f9063400e48e..6bfcf522c785 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InterconnectClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InterconnectClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.InterconnectStub;
@@ -43,7 +46,7 @@
  * 
  * try (InterconnectClient interconnectClient = InterconnectClient.create()) {
  *   ProjectGlobalInterconnectName interconnect = ProjectGlobalInterconnectName.of("[PROJECT]", "[INTERCONNECT]");
- *   Operation response = interconnectClient.deleteInterconnect(interconnect);
+ *   Interconnect response = interconnectClient.getInterconnect(interconnect);
  * }
  * 
  * 
@@ -103,6 +106,7 @@ public class InterconnectClient implements BackgroundResource { private final InterconnectSettings settings; private final InterconnectStub stub; + private final GlobalOperationClient operationsClient; /** Constructs an instance of InterconnectClient with default settings. */ public static final InterconnectClient create() throws IOException { @@ -134,12 +138,14 @@ public static final InterconnectClient create(InterconnectStub stub) { protected InterconnectClient(InterconnectSettings settings) throws IOException { this.settings = settings; this.stub = ((InterconnectStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected InterconnectClient(InterconnectStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } public final InterconnectSettings getSettings() { @@ -151,6 +157,16 @@ public InterconnectStub getStub() { return stub; } + /** + * Returns the GlobalOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final GlobalOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Deletes the specified interconnect. @@ -160,21 +176,23 @@ public InterconnectStub getStub() { *

    * try (InterconnectClient interconnectClient = InterconnectClient.create()) {
    *   ProjectGlobalInterconnectName interconnect = ProjectGlobalInterconnectName.of("[PROJECT]", "[INTERCONNECT]");
-   *   Operation response = interconnectClient.deleteInterconnect(interconnect);
+   *   interconnectClient.deleteInterconnectAsync(interconnect).get();
    * }
    * 
* * @param interconnect Name of the interconnect to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteInterconnect(ProjectGlobalInterconnectName interconnect) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteInterconnectAsync( + ProjectGlobalInterconnectName interconnect) { DeleteInterconnectHttpRequest request = DeleteInterconnectHttpRequest.newBuilder() .setInterconnect(interconnect == null ? null : interconnect.toString()) .build(); - return deleteInterconnect(request); + return deleteInterconnectAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -186,19 +204,21 @@ public final Operation deleteInterconnect(ProjectGlobalInterconnectName intercon *

    * try (InterconnectClient interconnectClient = InterconnectClient.create()) {
    *   ProjectGlobalInterconnectName interconnect = ProjectGlobalInterconnectName.of("[PROJECT]", "[INTERCONNECT]");
-   *   Operation response = interconnectClient.deleteInterconnect(interconnect.toString());
+   *   interconnectClient.deleteInterconnectAsync(interconnect.toString()).get();
    * }
    * 
* * @param interconnect Name of the interconnect to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteInterconnect(String interconnect) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteInterconnectAsync( + String interconnect) { DeleteInterconnectHttpRequest request = DeleteInterconnectHttpRequest.newBuilder().setInterconnect(interconnect).build(); - return deleteInterconnect(request); + return deleteInterconnectAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -213,16 +233,42 @@ public final Operation deleteInterconnect(String interconnect) { * DeleteInterconnectHttpRequest request = DeleteInterconnectHttpRequest.newBuilder() * .setInterconnect(interconnect.toString()) * .build(); - * Operation response = interconnectClient.deleteInterconnect(request); + * interconnectClient.deleteInterconnectAsync(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 */ - @BetaApi - public final Operation deleteInterconnect(DeleteInterconnectHttpRequest request) { - return deleteInterconnectCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteInterconnectAsync( + DeleteInterconnectHttpRequest request) { + return deleteInterconnectOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified interconnect. + * + *

Sample code: + * + *


+   * try (InterconnectClient interconnectClient = InterconnectClient.create()) {
+   *   ProjectGlobalInterconnectName interconnect = ProjectGlobalInterconnectName.of("[PROJECT]", "[INTERCONNECT]");
+   *   DeleteInterconnectHttpRequest request = DeleteInterconnectHttpRequest.newBuilder()
+   *     .setInterconnect(interconnect.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = interconnectClient.deleteInterconnectOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteInterconnectOperationCallable() { + return stub.deleteInterconnectOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -239,7 +285,7 @@ public final Operation deleteInterconnect(DeleteInterconnectHttpRequest request) * .build(); * ApiFuture<Operation> future = interconnectClient.deleteInterconnectCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -461,7 +507,7 @@ public final InterconnectsGetDiagnosticsResponse getDiagnosticsInterconnect( * try (InterconnectClient interconnectClient = InterconnectClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * Interconnect interconnectResource = Interconnect.newBuilder().build(); - * Operation response = interconnectClient.insertInterconnect(project, interconnectResource); + * interconnectClient.insertInterconnectAsync(project, interconnectResource).get(); * } * * @@ -472,8 +518,9 @@ public final InterconnectsGetDiagnosticsResponse getDiagnosticsInterconnect( * resource_for beta.interconnects ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertInterconnect( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertInterconnectAsync( ProjectName project, Interconnect interconnectResource) { InsertInterconnectHttpRequest request = @@ -481,7 +528,7 @@ public final Operation insertInterconnect( .setProject(project == null ? null : project.toString()) .setInterconnectResource(interconnectResource) .build(); - return insertInterconnect(request); + return insertInterconnectAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -494,7 +541,7 @@ public final Operation insertInterconnect( * try (InterconnectClient interconnectClient = InterconnectClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * Interconnect interconnectResource = Interconnect.newBuilder().build(); - * Operation response = interconnectClient.insertInterconnect(project.toString(), interconnectResource); + * interconnectClient.insertInterconnectAsync(project.toString(), interconnectResource).get(); * } * * @@ -505,15 +552,17 @@ public final Operation insertInterconnect( * resource_for beta.interconnects ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertInterconnect(String project, Interconnect interconnectResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertInterconnectAsync( + String project, Interconnect interconnectResource) { InsertInterconnectHttpRequest request = InsertInterconnectHttpRequest.newBuilder() .setProject(project) .setInterconnectResource(interconnectResource) .build(); - return insertInterconnect(request); + return insertInterconnectAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -530,16 +579,44 @@ public final Operation insertInterconnect(String project, Interconnect interconn * .setProject(project.toString()) * .setInterconnectResource(interconnectResource) * .build(); - * Operation response = interconnectClient.insertInterconnect(request); + * interconnectClient.insertInterconnectAsync(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 */ - @BetaApi - public final Operation insertInterconnect(InsertInterconnectHttpRequest request) { - return insertInterconnectCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertInterconnectAsync( + InsertInterconnectHttpRequest request) { + return insertInterconnectOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a Interconnect in the specified project using the data included in the request. + * + *

Sample code: + * + *


+   * try (InterconnectClient interconnectClient = InterconnectClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   Interconnect interconnectResource = Interconnect.newBuilder().build();
+   *   InsertInterconnectHttpRequest request = InsertInterconnectHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .setInterconnectResource(interconnectResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = interconnectClient.insertInterconnectOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertInterconnectOperationCallable() { + return stub.insertInterconnectOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -558,7 +635,7 @@ public final Operation insertInterconnect(InsertInterconnectHttpRequest request) * .build(); * ApiFuture<Operation> future = interconnectClient.insertInterconnectCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -718,7 +795,7 @@ public final ListInterconnectsPagedResponse listInterconnects( * ProjectGlobalInterconnectName interconnect = ProjectGlobalInterconnectName.of("[PROJECT]", "[INTERCONNECT]"); * Interconnect interconnectResource = Interconnect.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = interconnectClient.patchInterconnect(interconnect, interconnectResource, fieldMask); + * interconnectClient.patchInterconnectAsync(interconnect, interconnectResource, fieldMask).get(); * } * * @@ -733,8 +810,9 @@ public final ListInterconnectsPagedResponse listInterconnects( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchInterconnect( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchInterconnectAsync( ProjectGlobalInterconnectName interconnect, Interconnect interconnectResource, List fieldMask) { @@ -745,7 +823,7 @@ public final Operation patchInterconnect( .setInterconnectResource(interconnectResource) .addAllFieldMask(fieldMask) .build(); - return patchInterconnect(request); + return patchInterconnectAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -760,7 +838,7 @@ public final Operation patchInterconnect( * ProjectGlobalInterconnectName interconnect = ProjectGlobalInterconnectName.of("[PROJECT]", "[INTERCONNECT]"); * Interconnect interconnectResource = Interconnect.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = interconnectClient.patchInterconnect(interconnect.toString(), interconnectResource, fieldMask); + * interconnectClient.patchInterconnectAsync(interconnect.toString(), interconnectResource, fieldMask).get(); * } * * @@ -775,8 +853,9 @@ public final Operation patchInterconnect( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchInterconnect( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchInterconnectAsync( String interconnect, Interconnect interconnectResource, List fieldMask) { PatchInterconnectHttpRequest request = @@ -785,7 +864,7 @@ public final Operation patchInterconnect( .setInterconnectResource(interconnectResource) .addAllFieldMask(fieldMask) .build(); - return patchInterconnect(request); + return patchInterconnectAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -805,16 +884,47 @@ public final Operation patchInterconnect( * .setInterconnectResource(interconnectResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = interconnectClient.patchInterconnect(request); + * interconnectClient.patchInterconnectAsync(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 */ - @BetaApi - public final Operation patchInterconnect(PatchInterconnectHttpRequest request) { - return patchInterconnectCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchInterconnectAsync( + PatchInterconnectHttpRequest request) { + return patchInterconnectOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Updates the specified interconnect with the data included in the request. This method supports + * PATCH semantics and uses the JSON merge patch format and processing rules. + * + *

Sample code: + * + *


+   * try (InterconnectClient interconnectClient = InterconnectClient.create()) {
+   *   ProjectGlobalInterconnectName interconnect = ProjectGlobalInterconnectName.of("[PROJECT]", "[INTERCONNECT]");
+   *   Interconnect interconnectResource = Interconnect.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   PatchInterconnectHttpRequest request = PatchInterconnectHttpRequest.newBuilder()
+   *     .setInterconnect(interconnect.toString())
+   *     .setInterconnectResource(interconnectResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = interconnectClient.patchInterconnectOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + patchInterconnectOperationCallable() { + return stub.patchInterconnectOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -836,7 +946,7 @@ public final Operation patchInterconnect(PatchInterconnectHttpRequest request) { * .build(); * ApiFuture<Operation> future = interconnectClient.patchInterconnectCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InterconnectSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InterconnectSettings.java index a7462f64f32b..1e56f60eb0a9 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InterconnectSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InterconnectSettings.java @@ -21,10 +21,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -48,13 +50,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteInterconnect to 30 seconds: + * example, to set the total timeout of getInterconnect to 30 seconds: * *

  * 
  * InterconnectSettings.Builder interconnectSettingsBuilder =
  *     InterconnectSettings.newBuilder();
- * interconnectSettingsBuilder.deleteInterconnectSettings().getRetrySettings().toBuilder()
+ * interconnectSettingsBuilder.getInterconnectSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * InterconnectSettings interconnectSettings = interconnectSettingsBuilder.build();
  * 
@@ -68,6 +70,14 @@ public UnaryCallSettings deleteInterco
     return ((InterconnectStubSettings) getStubSettings()).deleteInterconnectSettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteInterconnect. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteInterconnectOperationSettings() {
+    return ((InterconnectStubSettings) getStubSettings()).deleteInterconnectOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getInterconnect. */
   public UnaryCallSettings getInterconnectSettings() {
     return ((InterconnectStubSettings) getStubSettings()).getInterconnectSettings();
@@ -85,6 +95,14 @@ public UnaryCallSettings insertInterco
     return ((InterconnectStubSettings) getStubSettings()).insertInterconnectSettings();
   }
 
+  /** Returns the object with the settings used for calls to insertInterconnect. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertInterconnectOperationSettings() {
+    return ((InterconnectStubSettings) getStubSettings()).insertInterconnectOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listInterconnects. */
   public PagedCallSettings<
           ListInterconnectsHttpRequest, InterconnectList, ListInterconnectsPagedResponse>
@@ -97,6 +115,14 @@ public UnaryCallSettings patchInterconn
     return ((InterconnectStubSettings) getStubSettings()).patchInterconnectSettings();
   }
 
+  /** Returns the object with the settings used for calls to patchInterconnect. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      patchInterconnectOperationSettings() {
+    return ((InterconnectStubSettings) getStubSettings()).patchInterconnectOperationSettings();
+  }
+
   public static final InterconnectSettings create(InterconnectStubSettings stub)
       throws IOException {
     return new InterconnectSettings.Builder(stub.toBuilder()).build();
@@ -205,6 +231,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteInterconnectSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteInterconnect. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteInterconnectOperationSettings() {
+      return getStubSettingsBuilder().deleteInterconnectOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getInterconnect. */
     public UnaryCallSettings.Builder
         getInterconnectSettings() {
@@ -224,6 +258,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().insertInterconnectSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertInterconnect. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertInterconnectOperationSettings() {
+      return getStubSettingsBuilder().insertInterconnectOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listInterconnects. */
     public PagedCallSettings.Builder<
             ListInterconnectsHttpRequest, InterconnectList, ListInterconnectsPagedResponse>
@@ -237,6 +279,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().patchInterconnectSettings();
     }
 
+    /** Returns the builder for the settings used for calls to patchInterconnect. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchInterconnectOperationSettings() {
+      return getStubSettingsBuilder().patchInterconnectOperationSettings();
+    }
+
     @Override
     public InterconnectSettings build() throws IOException {
       return new InterconnectSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/LicenseClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/LicenseClient.java
index 9ee3ecb5639e..6edfcdbc7e6d 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/LicenseClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/LicenseClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.LicenseStub;
@@ -43,7 +46,7 @@
  * 
  * try (LicenseClient licenseClient = LicenseClient.create()) {
  *   ProjectGlobalLicenseName license = ProjectGlobalLicenseName.of("[PROJECT]", "[LICENSE]");
- *   Operation response = licenseClient.deleteLicense(license);
+ *   License response = licenseClient.getLicense(license);
  * }
  * 
  * 
@@ -103,6 +106,7 @@ public class LicenseClient implements BackgroundResource { private final LicenseSettings settings; private final LicenseStub stub; + private final GlobalOperationClient operationsClient; /** Constructs an instance of LicenseClient with default settings. */ public static final LicenseClient create() throws IOException { @@ -133,12 +137,14 @@ public static final LicenseClient create(LicenseStub stub) { protected LicenseClient(LicenseSettings settings) throws IOException { this.settings = settings; this.stub = ((LicenseStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected LicenseClient(LicenseStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } public final LicenseSettings getSettings() { @@ -150,6 +156,16 @@ public LicenseStub getStub() { return stub; } + /** + * Returns the GlobalOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final GlobalOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Deletes the specified license. @@ -159,21 +175,23 @@ public LicenseStub getStub() { *

    * try (LicenseClient licenseClient = LicenseClient.create()) {
    *   ProjectGlobalLicenseName license = ProjectGlobalLicenseName.of("[PROJECT]", "[LICENSE]");
-   *   Operation response = licenseClient.deleteLicense(license);
+   *   licenseClient.deleteLicenseAsync(license).get();
    * }
    * 
* * @param license Name of the license resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteLicense(ProjectGlobalLicenseName license) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteLicenseAsync( + ProjectGlobalLicenseName license) { DeleteLicenseHttpRequest request = DeleteLicenseHttpRequest.newBuilder() .setLicense(license == null ? null : license.toString()) .build(); - return deleteLicense(request); + return deleteLicenseAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -185,19 +203,20 @@ public final Operation deleteLicense(ProjectGlobalLicenseName license) { *

    * try (LicenseClient licenseClient = LicenseClient.create()) {
    *   ProjectGlobalLicenseName license = ProjectGlobalLicenseName.of("[PROJECT]", "[LICENSE]");
-   *   Operation response = licenseClient.deleteLicense(license.toString());
+   *   licenseClient.deleteLicenseAsync(license.toString()).get();
    * }
    * 
* * @param license Name of the license resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteLicense(String license) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteLicenseAsync(String license) { DeleteLicenseHttpRequest request = DeleteLicenseHttpRequest.newBuilder().setLicense(license).build(); - return deleteLicense(request); + return deleteLicenseAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -212,16 +231,42 @@ public final Operation deleteLicense(String license) { * DeleteLicenseHttpRequest request = DeleteLicenseHttpRequest.newBuilder() * .setLicense(license.toString()) * .build(); - * Operation response = licenseClient.deleteLicense(request); + * licenseClient.deleteLicenseAsync(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 */ - @BetaApi - public final Operation deleteLicense(DeleteLicenseHttpRequest request) { - return deleteLicenseCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteLicenseAsync( + DeleteLicenseHttpRequest request) { + return deleteLicenseOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified license. + * + *

Sample code: + * + *


+   * try (LicenseClient licenseClient = LicenseClient.create()) {
+   *   ProjectGlobalLicenseName license = ProjectGlobalLicenseName.of("[PROJECT]", "[LICENSE]");
+   *   DeleteLicenseHttpRequest request = DeleteLicenseHttpRequest.newBuilder()
+   *     .setLicense(license.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = licenseClient.deleteLicenseOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteLicenseOperationCallable() { + return stub.deleteLicenseOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -238,7 +283,7 @@ public final Operation deleteLicense(DeleteLicenseHttpRequest request) { * .build(); * ApiFuture<Operation> future = licenseClient.deleteLicenseCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -454,7 +499,7 @@ public final UnaryCallable getIamPolicyL * try (LicenseClient licenseClient = LicenseClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * License licenseResource = License.newBuilder().build(); - * Operation response = licenseClient.insertLicense(project, licenseResource); + * licenseClient.insertLicenseAsync(project, licenseResource).get(); * } * * @@ -462,15 +507,17 @@ public final UnaryCallable getIamPolicyL * @param licenseResource A license resource. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertLicense(ProjectName project, License licenseResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertLicenseAsync( + ProjectName project, License licenseResource) { InsertLicenseHttpRequest request = InsertLicenseHttpRequest.newBuilder() .setProject(project == null ? null : project.toString()) .setLicenseResource(licenseResource) .build(); - return insertLicense(request); + return insertLicenseAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -483,7 +530,7 @@ public final Operation insertLicense(ProjectName project, License licenseResourc * try (LicenseClient licenseClient = LicenseClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * License licenseResource = License.newBuilder().build(); - * Operation response = licenseClient.insertLicense(project.toString(), licenseResource); + * licenseClient.insertLicenseAsync(project.toString(), licenseResource).get(); * } * * @@ -491,15 +538,17 @@ public final Operation insertLicense(ProjectName project, License licenseResourc * @param licenseResource A license resource. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertLicense(String project, License licenseResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertLicenseAsync( + String project, License licenseResource) { InsertLicenseHttpRequest request = InsertLicenseHttpRequest.newBuilder() .setProject(project) .setLicenseResource(licenseResource) .build(); - return insertLicense(request); + return insertLicenseAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -516,16 +565,44 @@ public final Operation insertLicense(String project, License licenseResource) { * .setProject(project.toString()) * .setLicenseResource(licenseResource) * .build(); - * Operation response = licenseClient.insertLicense(request); + * licenseClient.insertLicenseAsync(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 */ - @BetaApi - public final Operation insertLicense(InsertLicenseHttpRequest request) { - return insertLicenseCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertLicenseAsync( + InsertLicenseHttpRequest request) { + return insertLicenseOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Create a License resource in the specified project. + * + *

Sample code: + * + *


+   * try (LicenseClient licenseClient = LicenseClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   License licenseResource = License.newBuilder().build();
+   *   InsertLicenseHttpRequest request = InsertLicenseHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .setLicenseResource(licenseResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = licenseClient.insertLicenseOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertLicenseOperationCallable() { + return stub.insertLicenseOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -544,7 +621,7 @@ public final Operation insertLicense(InsertLicenseHttpRequest request) { * .build(); * ApiFuture<Operation> future = licenseClient.insertLicenseCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/LicenseSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/LicenseSettings.java index 49f0e1a0fac6..99dd250418ce 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/LicenseSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/LicenseSettings.java @@ -21,10 +21,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -48,13 +50,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteLicense to 30 seconds: + * example, to set the total timeout of getLicense to 30 seconds: * *

  * 
  * LicenseSettings.Builder licenseSettingsBuilder =
  *     LicenseSettings.newBuilder();
- * licenseSettingsBuilder.deleteLicenseSettings().getRetrySettings().toBuilder()
+ * licenseSettingsBuilder.getLicenseSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * LicenseSettings licenseSettings = licenseSettingsBuilder.build();
  * 
@@ -68,6 +70,14 @@ public UnaryCallSettings deleteLicenseSetti
     return ((LicenseStubSettings) getStubSettings()).deleteLicenseSettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteLicense. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteLicenseOperationSettings() {
+    return ((LicenseStubSettings) getStubSettings()).deleteLicenseOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getLicense. */
   public UnaryCallSettings getLicenseSettings() {
     return ((LicenseStubSettings) getStubSettings()).getLicenseSettings();
@@ -83,6 +93,14 @@ public UnaryCallSettings insertLicenseSetti
     return ((LicenseStubSettings) getStubSettings()).insertLicenseSettings();
   }
 
+  /** Returns the object with the settings used for calls to insertLicense. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertLicenseOperationSettings() {
+    return ((LicenseStubSettings) getStubSettings()).insertLicenseOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listLicenses. */
   public PagedCallSettings
       listLicensesSettings() {
@@ -206,6 +224,14 @@ public UnaryCallSettings.Builder deleteLice
       return getStubSettingsBuilder().deleteLicenseSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteLicense. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteLicenseOperationSettings() {
+      return getStubSettingsBuilder().deleteLicenseOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getLicense. */
     public UnaryCallSettings.Builder getLicenseSettings() {
       return getStubSettingsBuilder().getLicenseSettings();
@@ -222,6 +248,14 @@ public UnaryCallSettings.Builder insertLice
       return getStubSettingsBuilder().insertLicenseSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertLicense. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertLicenseOperationSettings() {
+      return getStubSettingsBuilder().insertLicenseOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listLicenses. */
     public PagedCallSettings.Builder<
             ListLicensesHttpRequest, LicensesListResponse, ListLicensesPagedResponse>
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NetworkClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NetworkClient.java
index ff33058b68e4..6da61b37aa4f 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NetworkClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NetworkClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.NetworkStub;
@@ -43,8 +46,7 @@
  * 
  * try (NetworkClient networkClient = NetworkClient.create()) {
  *   ProjectGlobalNetworkName network = ProjectGlobalNetworkName.of("[PROJECT]", "[NETWORK]");
- *   NetworksAddPeeringRequest networksAddPeeringRequestResource = NetworksAddPeeringRequest.newBuilder().build();
- *   Operation response = networkClient.addPeeringNetwork(network, networksAddPeeringRequestResource);
+ *   Network response = networkClient.getNetwork(network);
  * }
  * 
  * 
@@ -104,6 +106,7 @@ public class NetworkClient implements BackgroundResource { private final NetworkSettings settings; private final NetworkStub stub; + private final GlobalOperationClient operationsClient; /** Constructs an instance of NetworkClient with default settings. */ public static final NetworkClient create() throws IOException { @@ -134,12 +137,14 @@ public static final NetworkClient create(NetworkStub stub) { protected NetworkClient(NetworkSettings settings) throws IOException { this.settings = settings; this.stub = ((NetworkStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected NetworkClient(NetworkStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } public final NetworkSettings getSettings() { @@ -151,6 +156,16 @@ public NetworkStub getStub() { return stub; } + /** + * Returns the GlobalOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final GlobalOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Adds a peering to the specified network. @@ -161,7 +176,7 @@ public NetworkStub getStub() { * try (NetworkClient networkClient = NetworkClient.create()) { * ProjectGlobalNetworkName network = ProjectGlobalNetworkName.of("[PROJECT]", "[NETWORK]"); * NetworksAddPeeringRequest networksAddPeeringRequestResource = NetworksAddPeeringRequest.newBuilder().build(); - * Operation response = networkClient.addPeeringNetwork(network, networksAddPeeringRequestResource); + * networkClient.addPeeringNetworkAsync(network, networksAddPeeringRequestResource).get(); * } * * @@ -169,8 +184,9 @@ public NetworkStub getStub() { * @param networksAddPeeringRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation addPeeringNetwork( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture addPeeringNetworkAsync( ProjectGlobalNetworkName network, NetworksAddPeeringRequest networksAddPeeringRequestResource) { @@ -179,7 +195,7 @@ public final Operation addPeeringNetwork( .setNetwork(network == null ? null : network.toString()) .setNetworksAddPeeringRequestResource(networksAddPeeringRequestResource) .build(); - return addPeeringNetwork(request); + return addPeeringNetworkAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -192,7 +208,7 @@ public final Operation addPeeringNetwork( * try (NetworkClient networkClient = NetworkClient.create()) { * ProjectGlobalNetworkName network = ProjectGlobalNetworkName.of("[PROJECT]", "[NETWORK]"); * NetworksAddPeeringRequest networksAddPeeringRequestResource = NetworksAddPeeringRequest.newBuilder().build(); - * Operation response = networkClient.addPeeringNetwork(network.toString(), networksAddPeeringRequestResource); + * networkClient.addPeeringNetworkAsync(network.toString(), networksAddPeeringRequestResource).get(); * } * * @@ -200,8 +216,9 @@ public final Operation addPeeringNetwork( * @param networksAddPeeringRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation addPeeringNetwork( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture addPeeringNetworkAsync( String network, NetworksAddPeeringRequest networksAddPeeringRequestResource) { AddPeeringNetworkHttpRequest request = @@ -209,7 +226,7 @@ public final Operation addPeeringNetwork( .setNetwork(network) .setNetworksAddPeeringRequestResource(networksAddPeeringRequestResource) .build(); - return addPeeringNetwork(request); + return addPeeringNetworkAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -226,16 +243,44 @@ public final Operation addPeeringNetwork( * .setNetwork(network.toString()) * .setNetworksAddPeeringRequestResource(networksAddPeeringRequestResource) * .build(); - * Operation response = networkClient.addPeeringNetwork(request); + * networkClient.addPeeringNetworkAsync(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 */ - @BetaApi - public final Operation addPeeringNetwork(AddPeeringNetworkHttpRequest request) { - return addPeeringNetworkCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture addPeeringNetworkAsync( + AddPeeringNetworkHttpRequest request) { + return addPeeringNetworkOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Adds a peering to the specified network. + * + *

Sample code: + * + *


+   * try (NetworkClient networkClient = NetworkClient.create()) {
+   *   ProjectGlobalNetworkName network = ProjectGlobalNetworkName.of("[PROJECT]", "[NETWORK]");
+   *   NetworksAddPeeringRequest networksAddPeeringRequestResource = NetworksAddPeeringRequest.newBuilder().build();
+   *   AddPeeringNetworkHttpRequest request = AddPeeringNetworkHttpRequest.newBuilder()
+   *     .setNetwork(network.toString())
+   *     .setNetworksAddPeeringRequestResource(networksAddPeeringRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = networkClient.addPeeringNetworkOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + addPeeringNetworkOperationCallable() { + return stub.addPeeringNetworkOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -254,7 +299,7 @@ public final Operation addPeeringNetwork(AddPeeringNetworkHttpRequest request) { * .build(); * ApiFuture<Operation> future = networkClient.addPeeringNetworkCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -272,21 +317,23 @@ public final UnaryCallable addPeeringNe *

    * try (NetworkClient networkClient = NetworkClient.create()) {
    *   ProjectGlobalNetworkName network = ProjectGlobalNetworkName.of("[PROJECT]", "[NETWORK]");
-   *   Operation response = networkClient.deleteNetwork(network);
+   *   networkClient.deleteNetworkAsync(network).get();
    * }
    * 
* * @param network Name of the network to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteNetwork(ProjectGlobalNetworkName network) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteNetworkAsync( + ProjectGlobalNetworkName network) { DeleteNetworkHttpRequest request = DeleteNetworkHttpRequest.newBuilder() .setNetwork(network == null ? null : network.toString()) .build(); - return deleteNetwork(request); + return deleteNetworkAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -298,19 +345,20 @@ public final Operation deleteNetwork(ProjectGlobalNetworkName network) { *

    * try (NetworkClient networkClient = NetworkClient.create()) {
    *   ProjectGlobalNetworkName network = ProjectGlobalNetworkName.of("[PROJECT]", "[NETWORK]");
-   *   Operation response = networkClient.deleteNetwork(network.toString());
+   *   networkClient.deleteNetworkAsync(network.toString()).get();
    * }
    * 
* * @param network Name of the network to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteNetwork(String network) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteNetworkAsync(String network) { DeleteNetworkHttpRequest request = DeleteNetworkHttpRequest.newBuilder().setNetwork(network).build(); - return deleteNetwork(request); + return deleteNetworkAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -325,16 +373,42 @@ public final Operation deleteNetwork(String network) { * DeleteNetworkHttpRequest request = DeleteNetworkHttpRequest.newBuilder() * .setNetwork(network.toString()) * .build(); - * Operation response = networkClient.deleteNetwork(request); + * networkClient.deleteNetworkAsync(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 */ - @BetaApi - public final Operation deleteNetwork(DeleteNetworkHttpRequest request) { - return deleteNetworkCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteNetworkAsync( + DeleteNetworkHttpRequest request) { + return deleteNetworkOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified network. + * + *

Sample code: + * + *


+   * try (NetworkClient networkClient = NetworkClient.create()) {
+   *   ProjectGlobalNetworkName network = ProjectGlobalNetworkName.of("[PROJECT]", "[NETWORK]");
+   *   DeleteNetworkHttpRequest request = DeleteNetworkHttpRequest.newBuilder()
+   *     .setNetwork(network.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = networkClient.deleteNetworkOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteNetworkOperationCallable() { + return stub.deleteNetworkOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -351,7 +425,7 @@ public final Operation deleteNetwork(DeleteNetworkHttpRequest request) { * .build(); * ApiFuture<Operation> future = networkClient.deleteNetworkCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -466,7 +540,7 @@ public final UnaryCallable getNetworkCallable() * try (NetworkClient networkClient = NetworkClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * Network networkResource = Network.newBuilder().build(); - * Operation response = networkClient.insertNetwork(project, networkResource); + * networkClient.insertNetworkAsync(project, networkResource).get(); * } * * @@ -476,15 +550,17 @@ public final UnaryCallable getNetworkCallable() * beta.networks ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertNetwork(ProjectName project, Network networkResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertNetworkAsync( + ProjectName project, Network networkResource) { InsertNetworkHttpRequest request = InsertNetworkHttpRequest.newBuilder() .setProject(project == null ? null : project.toString()) .setNetworkResource(networkResource) .build(); - return insertNetwork(request); + return insertNetworkAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -497,7 +573,7 @@ public final Operation insertNetwork(ProjectName project, Network networkResourc * try (NetworkClient networkClient = NetworkClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * Network networkResource = Network.newBuilder().build(); - * Operation response = networkClient.insertNetwork(project.toString(), networkResource); + * networkClient.insertNetworkAsync(project.toString(), networkResource).get(); * } * * @@ -507,15 +583,17 @@ public final Operation insertNetwork(ProjectName project, Network networkResourc * beta.networks ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertNetwork(String project, Network networkResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertNetworkAsync( + String project, Network networkResource) { InsertNetworkHttpRequest request = InsertNetworkHttpRequest.newBuilder() .setProject(project) .setNetworkResource(networkResource) .build(); - return insertNetwork(request); + return insertNetworkAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -532,16 +610,44 @@ public final Operation insertNetwork(String project, Network networkResource) { * .setProject(project.toString()) * .setNetworkResource(networkResource) * .build(); - * Operation response = networkClient.insertNetwork(request); + * networkClient.insertNetworkAsync(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 */ - @BetaApi - public final Operation insertNetwork(InsertNetworkHttpRequest request) { - return insertNetworkCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertNetworkAsync( + InsertNetworkHttpRequest request) { + return insertNetworkOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a network in the specified project using the data included in the request. + * + *

Sample code: + * + *


+   * try (NetworkClient networkClient = NetworkClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   Network networkResource = Network.newBuilder().build();
+   *   InsertNetworkHttpRequest request = InsertNetworkHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .setNetworkResource(networkResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = networkClient.insertNetworkOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertNetworkOperationCallable() { + return stub.insertNetworkOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -560,7 +666,7 @@ public final Operation insertNetwork(InsertNetworkHttpRequest request) { * .build(); * ApiFuture<Operation> future = networkClient.insertNetworkCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -717,7 +823,7 @@ public final UnaryCallable listNetworksCal * ProjectGlobalNetworkName network = ProjectGlobalNetworkName.of("[PROJECT]", "[NETWORK]"); * Network networkResource = Network.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = networkClient.patchNetwork(network, networkResource, fieldMask); + * networkClient.patchNetworkAsync(network, networkResource, fieldMask).get(); * } * * @@ -731,8 +837,9 @@ public final UnaryCallable listNetworksCal * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchNetwork( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchNetworkAsync( ProjectGlobalNetworkName network, Network networkResource, List fieldMask) { PatchNetworkHttpRequest request = @@ -741,7 +848,7 @@ public final Operation patchNetwork( .setNetworkResource(networkResource) .addAllFieldMask(fieldMask) .build(); - return patchNetwork(request); + return patchNetworkAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -756,7 +863,7 @@ public final Operation patchNetwork( * ProjectGlobalNetworkName network = ProjectGlobalNetworkName.of("[PROJECT]", "[NETWORK]"); * Network networkResource = Network.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = networkClient.patchNetwork(network.toString(), networkResource, fieldMask); + * networkClient.patchNetworkAsync(network.toString(), networkResource, fieldMask).get(); * } * * @@ -770,8 +877,9 @@ public final Operation patchNetwork( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchNetwork( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchNetworkAsync( String network, Network networkResource, List fieldMask) { PatchNetworkHttpRequest request = @@ -780,7 +888,7 @@ public final Operation patchNetwork( .setNetworkResource(networkResource) .addAllFieldMask(fieldMask) .build(); - return patchNetwork(request); + return patchNetworkAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -800,16 +908,47 @@ public final Operation patchNetwork( * .setNetworkResource(networkResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = networkClient.patchNetwork(request); + * networkClient.patchNetworkAsync(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 */ - @BetaApi - public final Operation patchNetwork(PatchNetworkHttpRequest request) { - return patchNetworkCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchNetworkAsync( + PatchNetworkHttpRequest request) { + return patchNetworkOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Patches the specified network with the data included in the request. Only the following fields + * can be modified: routingConfig.routingMode. + * + *

Sample code: + * + *


+   * try (NetworkClient networkClient = NetworkClient.create()) {
+   *   ProjectGlobalNetworkName network = ProjectGlobalNetworkName.of("[PROJECT]", "[NETWORK]");
+   *   Network networkResource = Network.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   PatchNetworkHttpRequest request = PatchNetworkHttpRequest.newBuilder()
+   *     .setNetwork(network.toString())
+   *     .setNetworkResource(networkResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = networkClient.patchNetworkOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + patchNetworkOperationCallable() { + return stub.patchNetworkOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -831,7 +970,7 @@ public final Operation patchNetwork(PatchNetworkHttpRequest request) { * .build(); * ApiFuture<Operation> future = networkClient.patchNetworkCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -850,7 +989,7 @@ public final UnaryCallable patchNetworkCalla * try (NetworkClient networkClient = NetworkClient.create()) { * ProjectGlobalNetworkName network = ProjectGlobalNetworkName.of("[PROJECT]", "[NETWORK]"); * NetworksRemovePeeringRequest networksRemovePeeringRequestResource = NetworksRemovePeeringRequest.newBuilder().build(); - * Operation response = networkClient.removePeeringNetwork(network, networksRemovePeeringRequestResource); + * networkClient.removePeeringNetworkAsync(network, networksRemovePeeringRequestResource).get(); * } * * @@ -858,8 +997,9 @@ public final UnaryCallable patchNetworkCalla * @param networksRemovePeeringRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation removePeeringNetwork( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture removePeeringNetworkAsync( ProjectGlobalNetworkName network, NetworksRemovePeeringRequest networksRemovePeeringRequestResource) { @@ -868,7 +1008,7 @@ public final Operation removePeeringNetwork( .setNetwork(network == null ? null : network.toString()) .setNetworksRemovePeeringRequestResource(networksRemovePeeringRequestResource) .build(); - return removePeeringNetwork(request); + return removePeeringNetworkAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -881,7 +1021,7 @@ public final Operation removePeeringNetwork( * try (NetworkClient networkClient = NetworkClient.create()) { * ProjectGlobalNetworkName network = ProjectGlobalNetworkName.of("[PROJECT]", "[NETWORK]"); * NetworksRemovePeeringRequest networksRemovePeeringRequestResource = NetworksRemovePeeringRequest.newBuilder().build(); - * Operation response = networkClient.removePeeringNetwork(network.toString(), networksRemovePeeringRequestResource); + * networkClient.removePeeringNetworkAsync(network.toString(), networksRemovePeeringRequestResource).get(); * } * * @@ -889,8 +1029,9 @@ public final Operation removePeeringNetwork( * @param networksRemovePeeringRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation removePeeringNetwork( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture removePeeringNetworkAsync( String network, NetworksRemovePeeringRequest networksRemovePeeringRequestResource) { RemovePeeringNetworkHttpRequest request = @@ -898,7 +1039,7 @@ public final Operation removePeeringNetwork( .setNetwork(network) .setNetworksRemovePeeringRequestResource(networksRemovePeeringRequestResource) .build(); - return removePeeringNetwork(request); + return removePeeringNetworkAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -915,16 +1056,44 @@ public final Operation removePeeringNetwork( * .setNetwork(network.toString()) * .setNetworksRemovePeeringRequestResource(networksRemovePeeringRequestResource) * .build(); - * Operation response = networkClient.removePeeringNetwork(request); + * networkClient.removePeeringNetworkAsync(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 */ - @BetaApi - public final Operation removePeeringNetwork(RemovePeeringNetworkHttpRequest request) { - return removePeeringNetworkCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture removePeeringNetworkAsync( + RemovePeeringNetworkHttpRequest request) { + return removePeeringNetworkOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Removes a peering from the specified network. + * + *

Sample code: + * + *


+   * try (NetworkClient networkClient = NetworkClient.create()) {
+   *   ProjectGlobalNetworkName network = ProjectGlobalNetworkName.of("[PROJECT]", "[NETWORK]");
+   *   NetworksRemovePeeringRequest networksRemovePeeringRequestResource = NetworksRemovePeeringRequest.newBuilder().build();
+   *   RemovePeeringNetworkHttpRequest request = RemovePeeringNetworkHttpRequest.newBuilder()
+   *     .setNetwork(network.toString())
+   *     .setNetworksRemovePeeringRequestResource(networksRemovePeeringRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = networkClient.removePeeringNetworkOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + removePeeringNetworkOperationCallable() { + return stub.removePeeringNetworkOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -943,7 +1112,7 @@ public final Operation removePeeringNetwork(RemovePeeringNetworkHttpRequest requ * .build(); * ApiFuture<Operation> future = networkClient.removePeeringNetworkCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -962,21 +1131,23 @@ public final Operation removePeeringNetwork(RemovePeeringNetworkHttpRequest requ *

    * try (NetworkClient networkClient = NetworkClient.create()) {
    *   ProjectGlobalNetworkName network = ProjectGlobalNetworkName.of("[PROJECT]", "[NETWORK]");
-   *   Operation response = networkClient.switchToCustomModeNetwork(network);
+   *   networkClient.switchToCustomModeNetworkAsync(network).get();
    * }
    * 
* * @param network Name of the network to be updated. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation switchToCustomModeNetwork(ProjectGlobalNetworkName network) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture switchToCustomModeNetworkAsync( + ProjectGlobalNetworkName network) { SwitchToCustomModeNetworkHttpRequest request = SwitchToCustomModeNetworkHttpRequest.newBuilder() .setNetwork(network == null ? null : network.toString()) .build(); - return switchToCustomModeNetwork(request); + return switchToCustomModeNetworkAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -988,19 +1159,21 @@ public final Operation switchToCustomModeNetwork(ProjectGlobalNetworkName networ *

    * try (NetworkClient networkClient = NetworkClient.create()) {
    *   ProjectGlobalNetworkName network = ProjectGlobalNetworkName.of("[PROJECT]", "[NETWORK]");
-   *   Operation response = networkClient.switchToCustomModeNetwork(network.toString());
+   *   networkClient.switchToCustomModeNetworkAsync(network.toString()).get();
    * }
    * 
* * @param network Name of the network to be updated. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation switchToCustomModeNetwork(String network) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture switchToCustomModeNetworkAsync( + String network) { SwitchToCustomModeNetworkHttpRequest request = SwitchToCustomModeNetworkHttpRequest.newBuilder().setNetwork(network).build(); - return switchToCustomModeNetwork(request); + return switchToCustomModeNetworkAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1015,16 +1188,42 @@ public final Operation switchToCustomModeNetwork(String network) { * SwitchToCustomModeNetworkHttpRequest request = SwitchToCustomModeNetworkHttpRequest.newBuilder() * .setNetwork(network.toString()) * .build(); - * Operation response = networkClient.switchToCustomModeNetwork(request); + * networkClient.switchToCustomModeNetworkAsync(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 */ - @BetaApi - public final Operation switchToCustomModeNetwork(SwitchToCustomModeNetworkHttpRequest request) { - return switchToCustomModeNetworkCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture switchToCustomModeNetworkAsync( + SwitchToCustomModeNetworkHttpRequest request) { + return switchToCustomModeNetworkOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Switches the network mode from auto subnet mode to custom subnet mode. + * + *

Sample code: + * + *


+   * try (NetworkClient networkClient = NetworkClient.create()) {
+   *   ProjectGlobalNetworkName network = ProjectGlobalNetworkName.of("[PROJECT]", "[NETWORK]");
+   *   SwitchToCustomModeNetworkHttpRequest request = SwitchToCustomModeNetworkHttpRequest.newBuilder()
+   *     .setNetwork(network.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = networkClient.switchToCustomModeNetworkOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + switchToCustomModeNetworkOperationCallable() { + return stub.switchToCustomModeNetworkOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1041,7 +1240,7 @@ public final Operation switchToCustomModeNetwork(SwitchToCustomModeNetworkHttpRe * .build(); * ApiFuture<Operation> future = networkClient.switchToCustomModeNetworkCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NetworkSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NetworkSettings.java index 8dc4a8f0a96e..6a275a33beff 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NetworkSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NetworkSettings.java @@ -21,10 +21,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -48,13 +50,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of addPeeringNetwork to 30 seconds: + * example, to set the total timeout of getNetwork to 30 seconds: * *

  * 
  * NetworkSettings.Builder networkSettingsBuilder =
  *     NetworkSettings.newBuilder();
- * networkSettingsBuilder.addPeeringNetworkSettings().getRetrySettings().toBuilder()
+ * networkSettingsBuilder.getNetworkSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * NetworkSettings networkSettings = networkSettingsBuilder.build();
  * 
@@ -68,11 +70,27 @@ public UnaryCallSettings addPeeringNetw
     return ((NetworkStubSettings) getStubSettings()).addPeeringNetworkSettings();
   }
 
+  /** Returns the object with the settings used for calls to addPeeringNetwork. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      addPeeringNetworkOperationSettings() {
+    return ((NetworkStubSettings) getStubSettings()).addPeeringNetworkOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to deleteNetwork. */
   public UnaryCallSettings deleteNetworkSettings() {
     return ((NetworkStubSettings) getStubSettings()).deleteNetworkSettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteNetwork. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteNetworkOperationSettings() {
+    return ((NetworkStubSettings) getStubSettings()).deleteNetworkOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getNetwork. */
   public UnaryCallSettings getNetworkSettings() {
     return ((NetworkStubSettings) getStubSettings()).getNetworkSettings();
@@ -83,6 +101,14 @@ public UnaryCallSettings insertNetworkSetti
     return ((NetworkStubSettings) getStubSettings()).insertNetworkSettings();
   }
 
+  /** Returns the object with the settings used for calls to insertNetwork. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertNetworkOperationSettings() {
+    return ((NetworkStubSettings) getStubSettings()).insertNetworkOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listNetworks. */
   public PagedCallSettings
       listNetworksSettings() {
@@ -94,18 +120,42 @@ public UnaryCallSettings patchNetworkSetting
     return ((NetworkStubSettings) getStubSettings()).patchNetworkSettings();
   }
 
+  /** Returns the object with the settings used for calls to patchNetwork. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      patchNetworkOperationSettings() {
+    return ((NetworkStubSettings) getStubSettings()).patchNetworkOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to removePeeringNetwork. */
   public UnaryCallSettings
       removePeeringNetworkSettings() {
     return ((NetworkStubSettings) getStubSettings()).removePeeringNetworkSettings();
   }
 
+  /** Returns the object with the settings used for calls to removePeeringNetwork. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      removePeeringNetworkOperationSettings() {
+    return ((NetworkStubSettings) getStubSettings()).removePeeringNetworkOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to switchToCustomModeNetwork. */
   public UnaryCallSettings
       switchToCustomModeNetworkSettings() {
     return ((NetworkStubSettings) getStubSettings()).switchToCustomModeNetworkSettings();
   }
 
+  /** Returns the object with the settings used for calls to switchToCustomModeNetwork. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      switchToCustomModeNetworkOperationSettings() {
+    return ((NetworkStubSettings) getStubSettings()).switchToCustomModeNetworkOperationSettings();
+  }
+
   public static final NetworkSettings create(NetworkStubSettings stub) throws IOException {
     return new NetworkSettings.Builder(stub.toBuilder()).build();
   }
@@ -213,11 +263,27 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().addPeeringNetworkSettings();
     }
 
+    /** Returns the builder for the settings used for calls to addPeeringNetwork. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        addPeeringNetworkOperationSettings() {
+      return getStubSettingsBuilder().addPeeringNetworkOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to deleteNetwork. */
     public UnaryCallSettings.Builder deleteNetworkSettings() {
       return getStubSettingsBuilder().deleteNetworkSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteNetwork. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteNetworkOperationSettings() {
+      return getStubSettingsBuilder().deleteNetworkOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getNetwork. */
     public UnaryCallSettings.Builder getNetworkSettings() {
       return getStubSettingsBuilder().getNetworkSettings();
@@ -228,6 +294,14 @@ public UnaryCallSettings.Builder insertNetw
       return getStubSettingsBuilder().insertNetworkSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertNetwork. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertNetworkOperationSettings() {
+      return getStubSettingsBuilder().insertNetworkOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listNetworks. */
     public PagedCallSettings.Builder<
             ListNetworksHttpRequest, NetworkList, ListNetworksPagedResponse>
@@ -240,18 +314,43 @@ public UnaryCallSettings.Builder patchNetwor
       return getStubSettingsBuilder().patchNetworkSettings();
     }
 
+    /** Returns the builder for the settings used for calls to patchNetwork. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchNetworkOperationSettings() {
+      return getStubSettingsBuilder().patchNetworkOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to removePeeringNetwork. */
     public UnaryCallSettings.Builder
         removePeeringNetworkSettings() {
       return getStubSettingsBuilder().removePeeringNetworkSettings();
     }
 
+    /** Returns the builder for the settings used for calls to removePeeringNetwork. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        removePeeringNetworkOperationSettings() {
+      return getStubSettingsBuilder().removePeeringNetworkOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to switchToCustomModeNetwork. */
     public UnaryCallSettings.Builder
         switchToCustomModeNetworkSettings() {
       return getStubSettingsBuilder().switchToCustomModeNetworkSettings();
     }
 
+    /** Returns the builder for the settings used for calls to switchToCustomModeNetwork. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SwitchToCustomModeNetworkHttpRequest, EmptyMessage, Operation>
+        switchToCustomModeNetworkOperationSettings() {
+      return getStubSettingsBuilder().switchToCustomModeNetworkOperationSettings();
+    }
+
     @Override
     public NetworkSettings build() throws IOException {
       return new NetworkSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NodeGroupClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NodeGroupClient.java
index 706aaaebb4ac..a7dc87d0b545 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NodeGroupClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NodeGroupClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.NodeGroupStub;
@@ -43,8 +46,7 @@
  * 
  * try (NodeGroupClient nodeGroupClient = NodeGroupClient.create()) {
  *   ProjectZoneNodeGroupName nodeGroup = ProjectZoneNodeGroupName.of("[PROJECT]", "[ZONE]", "[NODE_GROUP]");
- *   NodeGroupsAddNodesRequest nodeGroupsAddNodesRequestResource = NodeGroupsAddNodesRequest.newBuilder().build();
- *   Operation response = nodeGroupClient.addNodesNodeGroup(nodeGroup, nodeGroupsAddNodesRequestResource);
+ *   NodeGroup response = nodeGroupClient.getNodeGroup(nodeGroup);
  * }
  * 
  * 
@@ -104,6 +106,7 @@ public class NodeGroupClient implements BackgroundResource { private final NodeGroupSettings settings; private final NodeGroupStub stub; + private final ZoneOperationClient operationsClient; /** Constructs an instance of NodeGroupClient with default settings. */ public static final NodeGroupClient create() throws IOException { @@ -134,12 +137,14 @@ public static final NodeGroupClient create(NodeGroupStub stub) { protected NodeGroupClient(NodeGroupSettings settings) throws IOException { this.settings = settings; this.stub = ((NodeGroupStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = ZoneOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected NodeGroupClient(NodeGroupStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = ZoneOperationClient.create(this.stub.getOperationsStub()); } public final NodeGroupSettings getSettings() { @@ -151,6 +156,16 @@ public NodeGroupStub getStub() { return stub; } + /** + * Returns the ZoneOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final ZoneOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Adds specified number of nodes to the node group. @@ -161,7 +176,7 @@ public NodeGroupStub getStub() { * try (NodeGroupClient nodeGroupClient = NodeGroupClient.create()) { * ProjectZoneNodeGroupName nodeGroup = ProjectZoneNodeGroupName.of("[PROJECT]", "[ZONE]", "[NODE_GROUP]"); * NodeGroupsAddNodesRequest nodeGroupsAddNodesRequestResource = NodeGroupsAddNodesRequest.newBuilder().build(); - * Operation response = nodeGroupClient.addNodesNodeGroup(nodeGroup, nodeGroupsAddNodesRequestResource); + * nodeGroupClient.addNodesNodeGroupAsync(nodeGroup, nodeGroupsAddNodesRequestResource).get(); * } * * @@ -169,8 +184,9 @@ public NodeGroupStub getStub() { * @param nodeGroupsAddNodesRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation addNodesNodeGroup( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture addNodesNodeGroupAsync( ProjectZoneNodeGroupName nodeGroup, NodeGroupsAddNodesRequest nodeGroupsAddNodesRequestResource) { @@ -179,7 +195,7 @@ public final Operation addNodesNodeGroup( .setNodeGroup(nodeGroup == null ? null : nodeGroup.toString()) .setNodeGroupsAddNodesRequestResource(nodeGroupsAddNodesRequestResource) .build(); - return addNodesNodeGroup(request); + return addNodesNodeGroupAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -192,7 +208,7 @@ public final Operation addNodesNodeGroup( * try (NodeGroupClient nodeGroupClient = NodeGroupClient.create()) { * ProjectZoneNodeGroupName nodeGroup = ProjectZoneNodeGroupName.of("[PROJECT]", "[ZONE]", "[NODE_GROUP]"); * NodeGroupsAddNodesRequest nodeGroupsAddNodesRequestResource = NodeGroupsAddNodesRequest.newBuilder().build(); - * Operation response = nodeGroupClient.addNodesNodeGroup(nodeGroup.toString(), nodeGroupsAddNodesRequestResource); + * nodeGroupClient.addNodesNodeGroupAsync(nodeGroup.toString(), nodeGroupsAddNodesRequestResource).get(); * } * * @@ -200,8 +216,9 @@ public final Operation addNodesNodeGroup( * @param nodeGroupsAddNodesRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation addNodesNodeGroup( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture addNodesNodeGroupAsync( String nodeGroup, NodeGroupsAddNodesRequest nodeGroupsAddNodesRequestResource) { AddNodesNodeGroupHttpRequest request = @@ -209,7 +226,7 @@ public final Operation addNodesNodeGroup( .setNodeGroup(nodeGroup) .setNodeGroupsAddNodesRequestResource(nodeGroupsAddNodesRequestResource) .build(); - return addNodesNodeGroup(request); + return addNodesNodeGroupAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -226,16 +243,44 @@ public final Operation addNodesNodeGroup( * .setNodeGroup(nodeGroup.toString()) * .setNodeGroupsAddNodesRequestResource(nodeGroupsAddNodesRequestResource) * .build(); - * Operation response = nodeGroupClient.addNodesNodeGroup(request); + * nodeGroupClient.addNodesNodeGroupAsync(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 */ - @BetaApi - public final Operation addNodesNodeGroup(AddNodesNodeGroupHttpRequest request) { - return addNodesNodeGroupCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture addNodesNodeGroupAsync( + AddNodesNodeGroupHttpRequest request) { + return addNodesNodeGroupOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Adds specified number of nodes to the node group. + * + *

Sample code: + * + *


+   * try (NodeGroupClient nodeGroupClient = NodeGroupClient.create()) {
+   *   ProjectZoneNodeGroupName nodeGroup = ProjectZoneNodeGroupName.of("[PROJECT]", "[ZONE]", "[NODE_GROUP]");
+   *   NodeGroupsAddNodesRequest nodeGroupsAddNodesRequestResource = NodeGroupsAddNodesRequest.newBuilder().build();
+   *   AddNodesNodeGroupHttpRequest request = AddNodesNodeGroupHttpRequest.newBuilder()
+   *     .setNodeGroup(nodeGroup.toString())
+   *     .setNodeGroupsAddNodesRequestResource(nodeGroupsAddNodesRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = nodeGroupClient.addNodesNodeGroupOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + addNodesNodeGroupOperationCallable() { + return stub.addNodesNodeGroupOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -254,7 +299,7 @@ public final Operation addNodesNodeGroup(AddNodesNodeGroupHttpRequest request) { * .build(); * ApiFuture<Operation> future = nodeGroupClient.addNodesNodeGroupCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -416,21 +461,23 @@ public final AggregatedListNodeGroupsPagedResponse aggregatedListNodeGroups( *

    * try (NodeGroupClient nodeGroupClient = NodeGroupClient.create()) {
    *   ProjectZoneNodeGroupName nodeGroup = ProjectZoneNodeGroupName.of("[PROJECT]", "[ZONE]", "[NODE_GROUP]");
-   *   Operation response = nodeGroupClient.deleteNodeGroup(nodeGroup);
+   *   nodeGroupClient.deleteNodeGroupAsync(nodeGroup).get();
    * }
    * 
* * @param nodeGroup Name of the NodeGroup resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteNodeGroup(ProjectZoneNodeGroupName nodeGroup) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteNodeGroupAsync( + ProjectZoneNodeGroupName nodeGroup) { DeleteNodeGroupHttpRequest request = DeleteNodeGroupHttpRequest.newBuilder() .setNodeGroup(nodeGroup == null ? null : nodeGroup.toString()) .build(); - return deleteNodeGroup(request); + return deleteNodeGroupAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -442,19 +489,20 @@ public final Operation deleteNodeGroup(ProjectZoneNodeGroupName nodeGroup) { *

    * try (NodeGroupClient nodeGroupClient = NodeGroupClient.create()) {
    *   ProjectZoneNodeGroupName nodeGroup = ProjectZoneNodeGroupName.of("[PROJECT]", "[ZONE]", "[NODE_GROUP]");
-   *   Operation response = nodeGroupClient.deleteNodeGroup(nodeGroup.toString());
+   *   nodeGroupClient.deleteNodeGroupAsync(nodeGroup.toString()).get();
    * }
    * 
* * @param nodeGroup Name of the NodeGroup resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteNodeGroup(String nodeGroup) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteNodeGroupAsync(String nodeGroup) { DeleteNodeGroupHttpRequest request = DeleteNodeGroupHttpRequest.newBuilder().setNodeGroup(nodeGroup).build(); - return deleteNodeGroup(request); + return deleteNodeGroupAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -469,16 +517,42 @@ public final Operation deleteNodeGroup(String nodeGroup) { * DeleteNodeGroupHttpRequest request = DeleteNodeGroupHttpRequest.newBuilder() * .setNodeGroup(nodeGroup.toString()) * .build(); - * Operation response = nodeGroupClient.deleteNodeGroup(request); + * nodeGroupClient.deleteNodeGroupAsync(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 */ - @BetaApi - public final Operation deleteNodeGroup(DeleteNodeGroupHttpRequest request) { - return deleteNodeGroupCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteNodeGroupAsync( + DeleteNodeGroupHttpRequest request) { + return deleteNodeGroupOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified NodeGroup resource. + * + *

Sample code: + * + *


+   * try (NodeGroupClient nodeGroupClient = NodeGroupClient.create()) {
+   *   ProjectZoneNodeGroupName nodeGroup = ProjectZoneNodeGroupName.of("[PROJECT]", "[ZONE]", "[NODE_GROUP]");
+   *   DeleteNodeGroupHttpRequest request = DeleteNodeGroupHttpRequest.newBuilder()
+   *     .setNodeGroup(nodeGroup.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = nodeGroupClient.deleteNodeGroupOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteNodeGroupOperationCallable() { + return stub.deleteNodeGroupOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -495,7 +569,7 @@ public final Operation deleteNodeGroup(DeleteNodeGroupHttpRequest request) { * .build(); * ApiFuture<Operation> future = nodeGroupClient.deleteNodeGroupCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -514,7 +588,7 @@ public final UnaryCallable deleteNodeGrou * try (NodeGroupClient nodeGroupClient = NodeGroupClient.create()) { * ProjectZoneNodeGroupName nodeGroup = ProjectZoneNodeGroupName.of("[PROJECT]", "[ZONE]", "[NODE_GROUP]"); * NodeGroupsDeleteNodesRequest nodeGroupsDeleteNodesRequestResource = NodeGroupsDeleteNodesRequest.newBuilder().build(); - * Operation response = nodeGroupClient.deleteNodesNodeGroup(nodeGroup, nodeGroupsDeleteNodesRequestResource); + * nodeGroupClient.deleteNodesNodeGroupAsync(nodeGroup, nodeGroupsDeleteNodesRequestResource).get(); * } * * @@ -522,8 +596,9 @@ public final UnaryCallable deleteNodeGrou * @param nodeGroupsDeleteNodesRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteNodesNodeGroup( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteNodesNodeGroupAsync( ProjectZoneNodeGroupName nodeGroup, NodeGroupsDeleteNodesRequest nodeGroupsDeleteNodesRequestResource) { @@ -532,7 +607,7 @@ public final Operation deleteNodesNodeGroup( .setNodeGroup(nodeGroup == null ? null : nodeGroup.toString()) .setNodeGroupsDeleteNodesRequestResource(nodeGroupsDeleteNodesRequestResource) .build(); - return deleteNodesNodeGroup(request); + return deleteNodesNodeGroupAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -545,7 +620,7 @@ public final Operation deleteNodesNodeGroup( * try (NodeGroupClient nodeGroupClient = NodeGroupClient.create()) { * ProjectZoneNodeGroupName nodeGroup = ProjectZoneNodeGroupName.of("[PROJECT]", "[ZONE]", "[NODE_GROUP]"); * NodeGroupsDeleteNodesRequest nodeGroupsDeleteNodesRequestResource = NodeGroupsDeleteNodesRequest.newBuilder().build(); - * Operation response = nodeGroupClient.deleteNodesNodeGroup(nodeGroup.toString(), nodeGroupsDeleteNodesRequestResource); + * nodeGroupClient.deleteNodesNodeGroupAsync(nodeGroup.toString(), nodeGroupsDeleteNodesRequestResource).get(); * } * * @@ -553,8 +628,9 @@ public final Operation deleteNodesNodeGroup( * @param nodeGroupsDeleteNodesRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteNodesNodeGroup( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteNodesNodeGroupAsync( String nodeGroup, NodeGroupsDeleteNodesRequest nodeGroupsDeleteNodesRequestResource) { DeleteNodesNodeGroupHttpRequest request = @@ -562,7 +638,7 @@ public final Operation deleteNodesNodeGroup( .setNodeGroup(nodeGroup) .setNodeGroupsDeleteNodesRequestResource(nodeGroupsDeleteNodesRequestResource) .build(); - return deleteNodesNodeGroup(request); + return deleteNodesNodeGroupAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -579,16 +655,44 @@ public final Operation deleteNodesNodeGroup( * .setNodeGroup(nodeGroup.toString()) * .setNodeGroupsDeleteNodesRequestResource(nodeGroupsDeleteNodesRequestResource) * .build(); - * Operation response = nodeGroupClient.deleteNodesNodeGroup(request); + * nodeGroupClient.deleteNodesNodeGroupAsync(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 */ - @BetaApi - public final Operation deleteNodesNodeGroup(DeleteNodesNodeGroupHttpRequest request) { - return deleteNodesNodeGroupCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteNodesNodeGroupAsync( + DeleteNodesNodeGroupHttpRequest request) { + return deleteNodesNodeGroupOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes specified nodes from the node group. + * + *

Sample code: + * + *


+   * try (NodeGroupClient nodeGroupClient = NodeGroupClient.create()) {
+   *   ProjectZoneNodeGroupName nodeGroup = ProjectZoneNodeGroupName.of("[PROJECT]", "[ZONE]", "[NODE_GROUP]");
+   *   NodeGroupsDeleteNodesRequest nodeGroupsDeleteNodesRequestResource = NodeGroupsDeleteNodesRequest.newBuilder().build();
+   *   DeleteNodesNodeGroupHttpRequest request = DeleteNodesNodeGroupHttpRequest.newBuilder()
+   *     .setNodeGroup(nodeGroup.toString())
+   *     .setNodeGroupsDeleteNodesRequestResource(nodeGroupsDeleteNodesRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = nodeGroupClient.deleteNodesNodeGroupOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteNodesNodeGroupOperationCallable() { + return stub.deleteNodesNodeGroupOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -607,7 +711,7 @@ public final Operation deleteNodesNodeGroup(DeleteNodesNodeGroupHttpRequest requ * .build(); * ApiFuture<Operation> future = nodeGroupClient.deleteNodesNodeGroupCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -831,7 +935,7 @@ public final Policy getIamPolicyNodeGroup(GetIamPolicyNodeGroupHttpRequest reque * Integer initialNodeCount = 0; * ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]"); * NodeGroup nodeGroupResource = NodeGroup.newBuilder().build(); - * Operation response = nodeGroupClient.insertNodeGroup(initialNodeCount, zone, nodeGroupResource); + * nodeGroupClient.insertNodeGroupAsync(initialNodeCount, zone, nodeGroupResource).get(); * } * * @@ -840,8 +944,9 @@ public final Policy getIamPolicyNodeGroup(GetIamPolicyNodeGroupHttpRequest reque * @param nodeGroupResource A NodeGroup resource. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertNodeGroup( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertNodeGroupAsync( Integer initialNodeCount, ProjectZoneName zone, NodeGroup nodeGroupResource) { InsertNodeGroupHttpRequest request = @@ -850,7 +955,7 @@ public final Operation insertNodeGroup( .setZone(zone == null ? null : zone.toString()) .setNodeGroupResource(nodeGroupResource) .build(); - return insertNodeGroup(request); + return insertNodeGroupAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -864,7 +969,7 @@ public final Operation insertNodeGroup( * Integer initialNodeCount = 0; * ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]"); * NodeGroup nodeGroupResource = NodeGroup.newBuilder().build(); - * Operation response = nodeGroupClient.insertNodeGroup(initialNodeCount, zone.toString(), nodeGroupResource); + * nodeGroupClient.insertNodeGroupAsync(initialNodeCount, zone.toString(), nodeGroupResource).get(); * } * * @@ -873,8 +978,9 @@ public final Operation insertNodeGroup( * @param nodeGroupResource A NodeGroup resource. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertNodeGroup( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertNodeGroupAsync( Integer initialNodeCount, String zone, NodeGroup nodeGroupResource) { InsertNodeGroupHttpRequest request = @@ -883,7 +989,7 @@ public final Operation insertNodeGroup( .setZone(zone) .setNodeGroupResource(nodeGroupResource) .build(); - return insertNodeGroup(request); + return insertNodeGroupAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -902,16 +1008,46 @@ public final Operation insertNodeGroup( * .setZone(zone.toString()) * .setNodeGroupResource(nodeGroupResource) * .build(); - * Operation response = nodeGroupClient.insertNodeGroup(request); + * nodeGroupClient.insertNodeGroupAsync(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 */ - @BetaApi - public final Operation insertNodeGroup(InsertNodeGroupHttpRequest request) { - return insertNodeGroupCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertNodeGroupAsync( + InsertNodeGroupHttpRequest request) { + return insertNodeGroupOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a NodeGroup resource in the specified project using the data included in the request. + * + *

Sample code: + * + *


+   * try (NodeGroupClient nodeGroupClient = NodeGroupClient.create()) {
+   *   Integer initialNodeCount = 0;
+   *   ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
+   *   NodeGroup nodeGroupResource = NodeGroup.newBuilder().build();
+   *   InsertNodeGroupHttpRequest request = InsertNodeGroupHttpRequest.newBuilder()
+   *     .setInitialNodeCount(initialNodeCount)
+   *     .setZone(zone.toString())
+   *     .setNodeGroupResource(nodeGroupResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = nodeGroupClient.insertNodeGroupOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertNodeGroupOperationCallable() { + return stub.insertNodeGroupOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -932,7 +1068,7 @@ public final Operation insertNodeGroup(InsertNodeGroupHttpRequest request) { * .build(); * ApiFuture<Operation> future = nodeGroupClient.insertNodeGroupCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1344,7 +1480,7 @@ public final Policy setIamPolicyNodeGroup(SetIamPolicyNodeGroupHttpRequest reque * try (NodeGroupClient nodeGroupClient = NodeGroupClient.create()) { * ProjectZoneNodeGroupName nodeGroup = ProjectZoneNodeGroupName.of("[PROJECT]", "[ZONE]", "[NODE_GROUP]"); * NodeGroupsSetNodeTemplateRequest nodeGroupsSetNodeTemplateRequestResource = NodeGroupsSetNodeTemplateRequest.newBuilder().build(); - * Operation response = nodeGroupClient.setNodeTemplateNodeGroup(nodeGroup, nodeGroupsSetNodeTemplateRequestResource); + * nodeGroupClient.setNodeTemplateNodeGroupAsync(nodeGroup, nodeGroupsSetNodeTemplateRequestResource).get(); * } * * @@ -1352,8 +1488,9 @@ public final Policy setIamPolicyNodeGroup(SetIamPolicyNodeGroupHttpRequest reque * @param nodeGroupsSetNodeTemplateRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setNodeTemplateNodeGroup( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setNodeTemplateNodeGroupAsync( ProjectZoneNodeGroupName nodeGroup, NodeGroupsSetNodeTemplateRequest nodeGroupsSetNodeTemplateRequestResource) { @@ -1362,7 +1499,7 @@ public final Operation setNodeTemplateNodeGroup( .setNodeGroup(nodeGroup == null ? null : nodeGroup.toString()) .setNodeGroupsSetNodeTemplateRequestResource(nodeGroupsSetNodeTemplateRequestResource) .build(); - return setNodeTemplateNodeGroup(request); + return setNodeTemplateNodeGroupAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1375,7 +1512,7 @@ public final Operation setNodeTemplateNodeGroup( * try (NodeGroupClient nodeGroupClient = NodeGroupClient.create()) { * ProjectZoneNodeGroupName nodeGroup = ProjectZoneNodeGroupName.of("[PROJECT]", "[ZONE]", "[NODE_GROUP]"); * NodeGroupsSetNodeTemplateRequest nodeGroupsSetNodeTemplateRequestResource = NodeGroupsSetNodeTemplateRequest.newBuilder().build(); - * Operation response = nodeGroupClient.setNodeTemplateNodeGroup(nodeGroup.toString(), nodeGroupsSetNodeTemplateRequestResource); + * nodeGroupClient.setNodeTemplateNodeGroupAsync(nodeGroup.toString(), nodeGroupsSetNodeTemplateRequestResource).get(); * } * * @@ -1383,8 +1520,9 @@ public final Operation setNodeTemplateNodeGroup( * @param nodeGroupsSetNodeTemplateRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setNodeTemplateNodeGroup( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setNodeTemplateNodeGroupAsync( String nodeGroup, NodeGroupsSetNodeTemplateRequest nodeGroupsSetNodeTemplateRequestResource) { SetNodeTemplateNodeGroupHttpRequest request = @@ -1392,7 +1530,7 @@ public final Operation setNodeTemplateNodeGroup( .setNodeGroup(nodeGroup) .setNodeGroupsSetNodeTemplateRequestResource(nodeGroupsSetNodeTemplateRequestResource) .build(); - return setNodeTemplateNodeGroup(request); + return setNodeTemplateNodeGroupAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1409,16 +1547,44 @@ public final Operation setNodeTemplateNodeGroup( * .setNodeGroup(nodeGroup.toString()) * .setNodeGroupsSetNodeTemplateRequestResource(nodeGroupsSetNodeTemplateRequestResource) * .build(); - * Operation response = nodeGroupClient.setNodeTemplateNodeGroup(request); + * nodeGroupClient.setNodeTemplateNodeGroupAsync(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 */ - @BetaApi - public final Operation setNodeTemplateNodeGroup(SetNodeTemplateNodeGroupHttpRequest request) { - return setNodeTemplateNodeGroupCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setNodeTemplateNodeGroupAsync( + SetNodeTemplateNodeGroupHttpRequest request) { + return setNodeTemplateNodeGroupOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Updates the node template of the node group. + * + *

Sample code: + * + *


+   * try (NodeGroupClient nodeGroupClient = NodeGroupClient.create()) {
+   *   ProjectZoneNodeGroupName nodeGroup = ProjectZoneNodeGroupName.of("[PROJECT]", "[ZONE]", "[NODE_GROUP]");
+   *   NodeGroupsSetNodeTemplateRequest nodeGroupsSetNodeTemplateRequestResource = NodeGroupsSetNodeTemplateRequest.newBuilder().build();
+   *   SetNodeTemplateNodeGroupHttpRequest request = SetNodeTemplateNodeGroupHttpRequest.newBuilder()
+   *     .setNodeGroup(nodeGroup.toString())
+   *     .setNodeGroupsSetNodeTemplateRequestResource(nodeGroupsSetNodeTemplateRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = nodeGroupClient.setNodeTemplateNodeGroupOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + setNodeTemplateNodeGroupOperationCallable() { + return stub.setNodeTemplateNodeGroupOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1437,7 +1603,7 @@ public final Operation setNodeTemplateNodeGroup(SetNodeTemplateNodeGroupHttpRequ * .build(); * ApiFuture<Operation> future = nodeGroupClient.setNodeTemplateNodeGroupCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NodeGroupSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NodeGroupSettings.java index e613c3c34d9e..8cd37f9a3eae 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NodeGroupSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NodeGroupSettings.java @@ -23,10 +23,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -50,13 +52,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of addNodesNodeGroup to 30 seconds: + * example, to set the total timeout of getNodeGroup to 30 seconds: * *

  * 
  * NodeGroupSettings.Builder nodeGroupSettingsBuilder =
  *     NodeGroupSettings.newBuilder();
- * nodeGroupSettingsBuilder.addNodesNodeGroupSettings().getRetrySettings().toBuilder()
+ * nodeGroupSettingsBuilder.getNodeGroupSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * NodeGroupSettings nodeGroupSettings = nodeGroupSettingsBuilder.build();
  * 
@@ -70,6 +72,14 @@ public UnaryCallSettings addNodesNodeGr
     return ((NodeGroupStubSettings) getStubSettings()).addNodesNodeGroupSettings();
   }
 
+  /** Returns the object with the settings used for calls to addNodesNodeGroup. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      addNodesNodeGroupOperationSettings() {
+    return ((NodeGroupStubSettings) getStubSettings()).addNodesNodeGroupOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to aggregatedListNodeGroups. */
   public PagedCallSettings<
           AggregatedListNodeGroupsHttpRequest,
@@ -84,12 +94,28 @@ public UnaryCallSettings deleteNodeGroupS
     return ((NodeGroupStubSettings) getStubSettings()).deleteNodeGroupSettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteNodeGroup. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteNodeGroupOperationSettings() {
+    return ((NodeGroupStubSettings) getStubSettings()).deleteNodeGroupOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to deleteNodesNodeGroup. */
   public UnaryCallSettings
       deleteNodesNodeGroupSettings() {
     return ((NodeGroupStubSettings) getStubSettings()).deleteNodesNodeGroupSettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteNodesNodeGroup. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteNodesNodeGroupOperationSettings() {
+    return ((NodeGroupStubSettings) getStubSettings()).deleteNodesNodeGroupOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getNodeGroup. */
   public UnaryCallSettings getNodeGroupSettings() {
     return ((NodeGroupStubSettings) getStubSettings()).getNodeGroupSettings();
@@ -106,6 +132,14 @@ public UnaryCallSettings insertNodeGroupS
     return ((NodeGroupStubSettings) getStubSettings()).insertNodeGroupSettings();
   }
 
+  /** Returns the object with the settings used for calls to insertNodeGroup. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertNodeGroupOperationSettings() {
+    return ((NodeGroupStubSettings) getStubSettings()).insertNodeGroupOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listNodeGroups. */
   public PagedCallSettings
       listNodeGroupsSettings() {
@@ -131,6 +165,14 @@ public UnaryCallSettings insertNodeGroupS
     return ((NodeGroupStubSettings) getStubSettings()).setNodeTemplateNodeGroupSettings();
   }
 
+  /** Returns the object with the settings used for calls to setNodeTemplateNodeGroup. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setNodeTemplateNodeGroupOperationSettings() {
+    return ((NodeGroupStubSettings) getStubSettings()).setNodeTemplateNodeGroupOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to testIamPermissionsNodeGroup. */
   public UnaryCallSettings
       testIamPermissionsNodeGroupSettings() {
@@ -244,6 +286,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().addNodesNodeGroupSettings();
     }
 
+    /** Returns the builder for the settings used for calls to addNodesNodeGroup. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        addNodesNodeGroupOperationSettings() {
+      return getStubSettingsBuilder().addNodesNodeGroupOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to aggregatedListNodeGroups. */
     public PagedCallSettings.Builder<
             AggregatedListNodeGroupsHttpRequest,
@@ -259,12 +309,28 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteNodeGroupSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteNodeGroup. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteNodeGroupOperationSettings() {
+      return getStubSettingsBuilder().deleteNodeGroupOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to deleteNodesNodeGroup. */
     public UnaryCallSettings.Builder
         deleteNodesNodeGroupSettings() {
       return getStubSettingsBuilder().deleteNodesNodeGroupSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteNodesNodeGroup. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteNodesNodeGroupOperationSettings() {
+      return getStubSettingsBuilder().deleteNodesNodeGroupOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getNodeGroup. */
     public UnaryCallSettings.Builder getNodeGroupSettings() {
       return getStubSettingsBuilder().getNodeGroupSettings();
@@ -282,6 +348,14 @@ public UnaryCallSettings.Builder getNodeGrou
       return getStubSettingsBuilder().insertNodeGroupSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertNodeGroup. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertNodeGroupOperationSettings() {
+      return getStubSettingsBuilder().insertNodeGroupOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listNodeGroups. */
     public PagedCallSettings.Builder<
             ListNodeGroupsHttpRequest, NodeGroupList, ListNodeGroupsPagedResponse>
@@ -308,6 +382,15 @@ public UnaryCallSettings.Builder getNodeGrou
       return getStubSettingsBuilder().setNodeTemplateNodeGroupSettings();
     }
 
+    /** Returns the builder for the settings used for calls to setNodeTemplateNodeGroup. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetNodeTemplateNodeGroupHttpRequest, EmptyMessage, Operation>
+        setNodeTemplateNodeGroupOperationSettings() {
+      return getStubSettingsBuilder().setNodeTemplateNodeGroupOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to testIamPermissionsNodeGroup. */
     public UnaryCallSettings.Builder<
             TestIamPermissionsNodeGroupHttpRequest, TestPermissionsResponse>
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NodeTemplateClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NodeTemplateClient.java
index 698632e89990..a31919a723c5 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NodeTemplateClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NodeTemplateClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.NodeTemplateStub;
@@ -43,7 +46,7 @@
  * 
  * try (NodeTemplateClient nodeTemplateClient = NodeTemplateClient.create()) {
  *   ProjectRegionNodeTemplateName nodeTemplate = ProjectRegionNodeTemplateName.of("[PROJECT]", "[REGION]", "[NODE_TEMPLATE]");
- *   Operation response = nodeTemplateClient.deleteNodeTemplate(nodeTemplate);
+ *   NodeTemplate response = nodeTemplateClient.getNodeTemplate(nodeTemplate);
  * }
  * 
  * 
@@ -103,6 +106,7 @@ public class NodeTemplateClient implements BackgroundResource { private final NodeTemplateSettings settings; private final NodeTemplateStub stub; + private final RegionOperationClient operationsClient; /** Constructs an instance of NodeTemplateClient with default settings. */ public static final NodeTemplateClient create() throws IOException { @@ -134,12 +138,14 @@ public static final NodeTemplateClient create(NodeTemplateStub stub) { protected NodeTemplateClient(NodeTemplateSettings settings) throws IOException { this.settings = settings; this.stub = ((NodeTemplateStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected NodeTemplateClient(NodeTemplateStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub()); } public final NodeTemplateSettings getSettings() { @@ -151,6 +157,16 @@ public NodeTemplateStub getStub() { return stub; } + /** + * Returns the RegionOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final RegionOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Retrieves an aggregated list of node templates. @@ -301,21 +317,23 @@ public final AggregatedListNodeTemplatesPagedResponse aggregatedListNodeTemplate *

    * try (NodeTemplateClient nodeTemplateClient = NodeTemplateClient.create()) {
    *   ProjectRegionNodeTemplateName nodeTemplate = ProjectRegionNodeTemplateName.of("[PROJECT]", "[REGION]", "[NODE_TEMPLATE]");
-   *   Operation response = nodeTemplateClient.deleteNodeTemplate(nodeTemplate);
+   *   nodeTemplateClient.deleteNodeTemplateAsync(nodeTemplate).get();
    * }
    * 
* * @param nodeTemplate Name of the NodeTemplate resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteNodeTemplate(ProjectRegionNodeTemplateName nodeTemplate) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteNodeTemplateAsync( + ProjectRegionNodeTemplateName nodeTemplate) { DeleteNodeTemplateHttpRequest request = DeleteNodeTemplateHttpRequest.newBuilder() .setNodeTemplate(nodeTemplate == null ? null : nodeTemplate.toString()) .build(); - return deleteNodeTemplate(request); + return deleteNodeTemplateAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -327,19 +345,21 @@ public final Operation deleteNodeTemplate(ProjectRegionNodeTemplateName nodeTemp *

    * try (NodeTemplateClient nodeTemplateClient = NodeTemplateClient.create()) {
    *   ProjectRegionNodeTemplateName nodeTemplate = ProjectRegionNodeTemplateName.of("[PROJECT]", "[REGION]", "[NODE_TEMPLATE]");
-   *   Operation response = nodeTemplateClient.deleteNodeTemplate(nodeTemplate.toString());
+   *   nodeTemplateClient.deleteNodeTemplateAsync(nodeTemplate.toString()).get();
    * }
    * 
* * @param nodeTemplate Name of the NodeTemplate resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteNodeTemplate(String nodeTemplate) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteNodeTemplateAsync( + String nodeTemplate) { DeleteNodeTemplateHttpRequest request = DeleteNodeTemplateHttpRequest.newBuilder().setNodeTemplate(nodeTemplate).build(); - return deleteNodeTemplate(request); + return deleteNodeTemplateAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -354,16 +374,42 @@ public final Operation deleteNodeTemplate(String nodeTemplate) { * DeleteNodeTemplateHttpRequest request = DeleteNodeTemplateHttpRequest.newBuilder() * .setNodeTemplate(nodeTemplate.toString()) * .build(); - * Operation response = nodeTemplateClient.deleteNodeTemplate(request); + * nodeTemplateClient.deleteNodeTemplateAsync(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 */ - @BetaApi - public final Operation deleteNodeTemplate(DeleteNodeTemplateHttpRequest request) { - return deleteNodeTemplateCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteNodeTemplateAsync( + DeleteNodeTemplateHttpRequest request) { + return deleteNodeTemplateOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified NodeTemplate resource. + * + *

Sample code: + * + *


+   * try (NodeTemplateClient nodeTemplateClient = NodeTemplateClient.create()) {
+   *   ProjectRegionNodeTemplateName nodeTemplate = ProjectRegionNodeTemplateName.of("[PROJECT]", "[REGION]", "[NODE_TEMPLATE]");
+   *   DeleteNodeTemplateHttpRequest request = DeleteNodeTemplateHttpRequest.newBuilder()
+   *     .setNodeTemplate(nodeTemplate.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = nodeTemplateClient.deleteNodeTemplateOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteNodeTemplateOperationCallable() { + return stub.deleteNodeTemplateOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -380,7 +426,7 @@ public final Operation deleteNodeTemplate(DeleteNodeTemplateHttpRequest request) * .build(); * ApiFuture<Operation> future = nodeTemplateClient.deleteNodeTemplateCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -604,7 +650,7 @@ public final Policy getIamPolicyNodeTemplate(GetIamPolicyNodeTemplateHttpRequest * try (NodeTemplateClient nodeTemplateClient = NodeTemplateClient.create()) { * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * NodeTemplate nodeTemplateResource = NodeTemplate.newBuilder().build(); - * Operation response = nodeTemplateClient.insertNodeTemplate(region, nodeTemplateResource); + * nodeTemplateClient.insertNodeTemplateAsync(region, nodeTemplateResource).get(); * } * * @@ -612,8 +658,9 @@ public final Policy getIamPolicyNodeTemplate(GetIamPolicyNodeTemplateHttpRequest * @param nodeTemplateResource A Node Template resource. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertNodeTemplate( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertNodeTemplateAsync( ProjectRegionName region, NodeTemplate nodeTemplateResource) { InsertNodeTemplateHttpRequest request = @@ -621,7 +668,7 @@ public final Operation insertNodeTemplate( .setRegion(region == null ? null : region.toString()) .setNodeTemplateResource(nodeTemplateResource) .build(); - return insertNodeTemplate(request); + return insertNodeTemplateAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -635,7 +682,7 @@ public final Operation insertNodeTemplate( * try (NodeTemplateClient nodeTemplateClient = NodeTemplateClient.create()) { * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * NodeTemplate nodeTemplateResource = NodeTemplate.newBuilder().build(); - * Operation response = nodeTemplateClient.insertNodeTemplate(region.toString(), nodeTemplateResource); + * nodeTemplateClient.insertNodeTemplateAsync(region.toString(), nodeTemplateResource).get(); * } * * @@ -643,15 +690,17 @@ public final Operation insertNodeTemplate( * @param nodeTemplateResource A Node Template resource. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertNodeTemplate(String region, NodeTemplate nodeTemplateResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertNodeTemplateAsync( + String region, NodeTemplate nodeTemplateResource) { InsertNodeTemplateHttpRequest request = InsertNodeTemplateHttpRequest.newBuilder() .setRegion(region) .setNodeTemplateResource(nodeTemplateResource) .build(); - return insertNodeTemplate(request); + return insertNodeTemplateAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -669,16 +718,45 @@ public final Operation insertNodeTemplate(String region, NodeTemplate nodeTempla * .setRegion(region.toString()) * .setNodeTemplateResource(nodeTemplateResource) * .build(); - * Operation response = nodeTemplateClient.insertNodeTemplate(request); + * nodeTemplateClient.insertNodeTemplateAsync(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 */ - @BetaApi - public final Operation insertNodeTemplate(InsertNodeTemplateHttpRequest request) { - return insertNodeTemplateCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertNodeTemplateAsync( + InsertNodeTemplateHttpRequest request) { + return insertNodeTemplateOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a NodeTemplate resource in the specified project using the data included in the + * request. + * + *

Sample code: + * + *


+   * try (NodeTemplateClient nodeTemplateClient = NodeTemplateClient.create()) {
+   *   ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
+   *   NodeTemplate nodeTemplateResource = NodeTemplate.newBuilder().build();
+   *   InsertNodeTemplateHttpRequest request = InsertNodeTemplateHttpRequest.newBuilder()
+   *     .setRegion(region.toString())
+   *     .setNodeTemplateResource(nodeTemplateResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = nodeTemplateClient.insertNodeTemplateOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertNodeTemplateOperationCallable() { + return stub.insertNodeTemplateOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -698,7 +776,7 @@ public final Operation insertNodeTemplate(InsertNodeTemplateHttpRequest request) * .build(); * ApiFuture<Operation> future = nodeTemplateClient.insertNodeTemplateCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NodeTemplateSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NodeTemplateSettings.java index ee9fe5d8b719..5291284bff3e 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NodeTemplateSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NodeTemplateSettings.java @@ -22,10 +22,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -49,13 +51,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteNodeTemplate to 30 seconds: + * example, to set the total timeout of getNodeTemplate to 30 seconds: * *

  * 
  * NodeTemplateSettings.Builder nodeTemplateSettingsBuilder =
  *     NodeTemplateSettings.newBuilder();
- * nodeTemplateSettingsBuilder.deleteNodeTemplateSettings().getRetrySettings().toBuilder()
+ * nodeTemplateSettingsBuilder.getNodeTemplateSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * NodeTemplateSettings nodeTemplateSettings = nodeTemplateSettingsBuilder.build();
  * 
@@ -78,6 +80,14 @@ public UnaryCallSettings deleteNodeTem
     return ((NodeTemplateStubSettings) getStubSettings()).deleteNodeTemplateSettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteNodeTemplate. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteNodeTemplateOperationSettings() {
+    return ((NodeTemplateStubSettings) getStubSettings()).deleteNodeTemplateOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getNodeTemplate. */
   public UnaryCallSettings getNodeTemplateSettings() {
     return ((NodeTemplateStubSettings) getStubSettings()).getNodeTemplateSettings();
@@ -94,6 +104,14 @@ public UnaryCallSettings insertNodeTem
     return ((NodeTemplateStubSettings) getStubSettings()).insertNodeTemplateSettings();
   }
 
+  /** Returns the object with the settings used for calls to insertNodeTemplate. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertNodeTemplateOperationSettings() {
+    return ((NodeTemplateStubSettings) getStubSettings()).insertNodeTemplateOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listNodeTemplates. */
   public PagedCallSettings<
           ListNodeTemplatesHttpRequest, NodeTemplateList, ListNodeTemplatesPagedResponse>
@@ -230,6 +248,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteNodeTemplateSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteNodeTemplate. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteNodeTemplateOperationSettings() {
+      return getStubSettingsBuilder().deleteNodeTemplateOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getNodeTemplate. */
     public UnaryCallSettings.Builder
         getNodeTemplateSettings() {
@@ -248,6 +274,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().insertNodeTemplateSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertNodeTemplate. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertNodeTemplateOperationSettings() {
+      return getStubSettingsBuilder().insertNodeTemplateOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listNodeTemplates. */
     public PagedCallSettings.Builder<
             ListNodeTemplatesHttpRequest, NodeTemplateList, ListNodeTemplatesPagedResponse>
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ProjectClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ProjectClient.java
index 033c79113007..1382ca60ef33 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ProjectClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ProjectClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.ProjectStub;
@@ -43,7 +46,7 @@
  * 
  * try (ProjectClient projectClient = ProjectClient.create()) {
  *   ProjectName project = ProjectName.of("[PROJECT]");
- *   Operation response = projectClient.disableXpnHostProject(project);
+ *   Project response = projectClient.getProject(project);
  * }
  * 
  * 
@@ -103,6 +106,7 @@ public class ProjectClient implements BackgroundResource { private final ProjectSettings settings; private final ProjectStub stub; + private final GlobalOperationClient operationsClient; /** Constructs an instance of ProjectClient with default settings. */ public static final ProjectClient create() throws IOException { @@ -133,12 +137,14 @@ public static final ProjectClient create(ProjectStub stub) { protected ProjectClient(ProjectSettings settings) throws IOException { this.settings = settings; this.stub = ((ProjectStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected ProjectClient(ProjectStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } public final ProjectSettings getSettings() { @@ -150,6 +156,16 @@ public ProjectStub getStub() { return stub; } + /** + * Returns the GlobalOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final GlobalOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Disable this project as a shared VPC host project. @@ -159,21 +175,23 @@ public ProjectStub getStub() { *

    * try (ProjectClient projectClient = ProjectClient.create()) {
    *   ProjectName project = ProjectName.of("[PROJECT]");
-   *   Operation response = projectClient.disableXpnHostProject(project);
+   *   projectClient.disableXpnHostProjectAsync(project).get();
    * }
    * 
* * @param project Project ID for this request. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation disableXpnHostProject(ProjectName project) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture disableXpnHostProjectAsync( + ProjectName project) { DisableXpnHostProjectHttpRequest request = DisableXpnHostProjectHttpRequest.newBuilder() .setProject(project == null ? null : project.toString()) .build(); - return disableXpnHostProject(request); + return disableXpnHostProjectAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -185,19 +203,20 @@ public final Operation disableXpnHostProject(ProjectName project) { *

    * try (ProjectClient projectClient = ProjectClient.create()) {
    *   ProjectName project = ProjectName.of("[PROJECT]");
-   *   Operation response = projectClient.disableXpnHostProject(project.toString());
+   *   projectClient.disableXpnHostProjectAsync(project.toString()).get();
    * }
    * 
* * @param project Project ID for this request. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation disableXpnHostProject(String project) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture disableXpnHostProjectAsync(String project) { DisableXpnHostProjectHttpRequest request = DisableXpnHostProjectHttpRequest.newBuilder().setProject(project).build(); - return disableXpnHostProject(request); + return disableXpnHostProjectAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -212,16 +231,42 @@ public final Operation disableXpnHostProject(String project) { * DisableXpnHostProjectHttpRequest request = DisableXpnHostProjectHttpRequest.newBuilder() * .setProject(project.toString()) * .build(); - * Operation response = projectClient.disableXpnHostProject(request); + * projectClient.disableXpnHostProjectAsync(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 */ - @BetaApi - public final Operation disableXpnHostProject(DisableXpnHostProjectHttpRequest request) { - return disableXpnHostProjectCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture disableXpnHostProjectAsync( + DisableXpnHostProjectHttpRequest request) { + return disableXpnHostProjectOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Disable this project as a shared VPC host project. + * + *

Sample code: + * + *


+   * try (ProjectClient projectClient = ProjectClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   DisableXpnHostProjectHttpRequest request = DisableXpnHostProjectHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = projectClient.disableXpnHostProjectOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + disableXpnHostProjectOperationCallable() { + return stub.disableXpnHostProjectOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -238,7 +283,7 @@ public final Operation disableXpnHostProject(DisableXpnHostProjectHttpRequest re * .build(); * ApiFuture<Operation> future = projectClient.disableXpnHostProjectCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -258,7 +303,7 @@ public final Operation disableXpnHostProject(DisableXpnHostProjectHttpRequest re * try (ProjectClient projectClient = ProjectClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * ProjectsDisableXpnResourceRequest projectsDisableXpnResourceRequestResource = ProjectsDisableXpnResourceRequest.newBuilder().build(); - * Operation response = projectClient.disableXpnResourceProject(project, projectsDisableXpnResourceRequestResource); + * projectClient.disableXpnResourceProjectAsync(project, projectsDisableXpnResourceRequestResource).get(); * } * * @@ -266,8 +311,9 @@ public final Operation disableXpnHostProject(DisableXpnHostProjectHttpRequest re * @param projectsDisableXpnResourceRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation disableXpnResourceProject( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture disableXpnResourceProjectAsync( ProjectName project, ProjectsDisableXpnResourceRequest projectsDisableXpnResourceRequestResource) { @@ -276,7 +322,7 @@ public final Operation disableXpnResourceProject( .setProject(project == null ? null : project.toString()) .setProjectsDisableXpnResourceRequestResource(projectsDisableXpnResourceRequestResource) .build(); - return disableXpnResourceProject(request); + return disableXpnResourceProjectAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -289,7 +335,7 @@ public final Operation disableXpnResourceProject( * try (ProjectClient projectClient = ProjectClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * ProjectsDisableXpnResourceRequest projectsDisableXpnResourceRequestResource = ProjectsDisableXpnResourceRequest.newBuilder().build(); - * Operation response = projectClient.disableXpnResourceProject(project.toString(), projectsDisableXpnResourceRequestResource); + * projectClient.disableXpnResourceProjectAsync(project.toString(), projectsDisableXpnResourceRequestResource).get(); * } * * @@ -297,8 +343,9 @@ public final Operation disableXpnResourceProject( * @param projectsDisableXpnResourceRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation disableXpnResourceProject( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture disableXpnResourceProjectAsync( String project, ProjectsDisableXpnResourceRequest projectsDisableXpnResourceRequestResource) { DisableXpnResourceProjectHttpRequest request = @@ -306,7 +353,7 @@ public final Operation disableXpnResourceProject( .setProject(project) .setProjectsDisableXpnResourceRequestResource(projectsDisableXpnResourceRequestResource) .build(); - return disableXpnResourceProject(request); + return disableXpnResourceProjectAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -323,16 +370,44 @@ public final Operation disableXpnResourceProject( * .setProject(project.toString()) * .setProjectsDisableXpnResourceRequestResource(projectsDisableXpnResourceRequestResource) * .build(); - * Operation response = projectClient.disableXpnResourceProject(request); + * projectClient.disableXpnResourceProjectAsync(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 */ - @BetaApi - public final Operation disableXpnResourceProject(DisableXpnResourceProjectHttpRequest request) { - return disableXpnResourceProjectCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture disableXpnResourceProjectAsync( + DisableXpnResourceProjectHttpRequest request) { + return disableXpnResourceProjectOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Disable a serivce resource (a.k.a service project) associated with this host project. + * + *

Sample code: + * + *


+   * try (ProjectClient projectClient = ProjectClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   ProjectsDisableXpnResourceRequest projectsDisableXpnResourceRequestResource = ProjectsDisableXpnResourceRequest.newBuilder().build();
+   *   DisableXpnResourceProjectHttpRequest request = DisableXpnResourceProjectHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .setProjectsDisableXpnResourceRequestResource(projectsDisableXpnResourceRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = projectClient.disableXpnResourceProjectOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + disableXpnResourceProjectOperationCallable() { + return stub.disableXpnResourceProjectOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -351,7 +426,7 @@ public final Operation disableXpnResourceProject(DisableXpnResourceProjectHttpRe * .build(); * ApiFuture<Operation> future = projectClient.disableXpnResourceProjectCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -370,21 +445,23 @@ public final Operation disableXpnResourceProject(DisableXpnResourceProjectHttpRe *

    * try (ProjectClient projectClient = ProjectClient.create()) {
    *   ProjectName project = ProjectName.of("[PROJECT]");
-   *   Operation response = projectClient.enableXpnHostProject(project);
+   *   projectClient.enableXpnHostProjectAsync(project).get();
    * }
    * 
* * @param project Project ID for this request. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation enableXpnHostProject(ProjectName project) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture enableXpnHostProjectAsync( + ProjectName project) { EnableXpnHostProjectHttpRequest request = EnableXpnHostProjectHttpRequest.newBuilder() .setProject(project == null ? null : project.toString()) .build(); - return enableXpnHostProject(request); + return enableXpnHostProjectAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -396,19 +473,20 @@ public final Operation enableXpnHostProject(ProjectName project) { *

    * try (ProjectClient projectClient = ProjectClient.create()) {
    *   ProjectName project = ProjectName.of("[PROJECT]");
-   *   Operation response = projectClient.enableXpnHostProject(project.toString());
+   *   projectClient.enableXpnHostProjectAsync(project.toString()).get();
    * }
    * 
* * @param project Project ID for this request. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation enableXpnHostProject(String project) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture enableXpnHostProjectAsync(String project) { EnableXpnHostProjectHttpRequest request = EnableXpnHostProjectHttpRequest.newBuilder().setProject(project).build(); - return enableXpnHostProject(request); + return enableXpnHostProjectAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -423,16 +501,42 @@ public final Operation enableXpnHostProject(String project) { * EnableXpnHostProjectHttpRequest request = EnableXpnHostProjectHttpRequest.newBuilder() * .setProject(project.toString()) * .build(); - * Operation response = projectClient.enableXpnHostProject(request); + * projectClient.enableXpnHostProjectAsync(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 */ - @BetaApi - public final Operation enableXpnHostProject(EnableXpnHostProjectHttpRequest request) { - return enableXpnHostProjectCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture enableXpnHostProjectAsync( + EnableXpnHostProjectHttpRequest request) { + return enableXpnHostProjectOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Enable this project as a shared VPC host project. + * + *

Sample code: + * + *


+   * try (ProjectClient projectClient = ProjectClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   EnableXpnHostProjectHttpRequest request = EnableXpnHostProjectHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = projectClient.enableXpnHostProjectOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + enableXpnHostProjectOperationCallable() { + return stub.enableXpnHostProjectOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -449,7 +553,7 @@ public final Operation enableXpnHostProject(EnableXpnHostProjectHttpRequest requ * .build(); * ApiFuture<Operation> future = projectClient.enableXpnHostProjectCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -470,7 +574,7 @@ public final Operation enableXpnHostProject(EnableXpnHostProjectHttpRequest requ * try (ProjectClient projectClient = ProjectClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * ProjectsEnableXpnResourceRequest projectsEnableXpnResourceRequestResource = ProjectsEnableXpnResourceRequest.newBuilder().build(); - * Operation response = projectClient.enableXpnResourceProject(project, projectsEnableXpnResourceRequestResource); + * projectClient.enableXpnResourceProjectAsync(project, projectsEnableXpnResourceRequestResource).get(); * } * * @@ -478,8 +582,9 @@ public final Operation enableXpnHostProject(EnableXpnHostProjectHttpRequest requ * @param projectsEnableXpnResourceRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation enableXpnResourceProject( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture enableXpnResourceProjectAsync( ProjectName project, ProjectsEnableXpnResourceRequest projectsEnableXpnResourceRequestResource) { @@ -488,7 +593,7 @@ public final Operation enableXpnResourceProject( .setProject(project == null ? null : project.toString()) .setProjectsEnableXpnResourceRequestResource(projectsEnableXpnResourceRequestResource) .build(); - return enableXpnResourceProject(request); + return enableXpnResourceProjectAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -502,7 +607,7 @@ public final Operation enableXpnResourceProject( * try (ProjectClient projectClient = ProjectClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * ProjectsEnableXpnResourceRequest projectsEnableXpnResourceRequestResource = ProjectsEnableXpnResourceRequest.newBuilder().build(); - * Operation response = projectClient.enableXpnResourceProject(project.toString(), projectsEnableXpnResourceRequestResource); + * projectClient.enableXpnResourceProjectAsync(project.toString(), projectsEnableXpnResourceRequestResource).get(); * } * * @@ -510,8 +615,9 @@ public final Operation enableXpnResourceProject( * @param projectsEnableXpnResourceRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation enableXpnResourceProject( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture enableXpnResourceProjectAsync( String project, ProjectsEnableXpnResourceRequest projectsEnableXpnResourceRequestResource) { EnableXpnResourceProjectHttpRequest request = @@ -519,7 +625,7 @@ public final Operation enableXpnResourceProject( .setProject(project) .setProjectsEnableXpnResourceRequestResource(projectsEnableXpnResourceRequestResource) .build(); - return enableXpnResourceProject(request); + return enableXpnResourceProjectAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -537,16 +643,45 @@ public final Operation enableXpnResourceProject( * .setProject(project.toString()) * .setProjectsEnableXpnResourceRequestResource(projectsEnableXpnResourceRequestResource) * .build(); - * Operation response = projectClient.enableXpnResourceProject(request); + * projectClient.enableXpnResourceProjectAsync(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 */ - @BetaApi - public final Operation enableXpnResourceProject(EnableXpnResourceProjectHttpRequest request) { - return enableXpnResourceProjectCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture enableXpnResourceProjectAsync( + EnableXpnResourceProjectHttpRequest request) { + return enableXpnResourceProjectOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Enable service resource (a.k.a service project) for a host project, so that subnets in the host + * project can be used by instances in the service project. + * + *

Sample code: + * + *


+   * try (ProjectClient projectClient = ProjectClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   ProjectsEnableXpnResourceRequest projectsEnableXpnResourceRequestResource = ProjectsEnableXpnResourceRequest.newBuilder().build();
+   *   EnableXpnResourceProjectHttpRequest request = EnableXpnResourceProjectHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .setProjectsEnableXpnResourceRequestResource(projectsEnableXpnResourceRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = projectClient.enableXpnResourceProjectOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + enableXpnResourceProjectOperationCallable() { + return stub.enableXpnResourceProjectOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -566,7 +701,7 @@ public final Operation enableXpnResourceProject(EnableXpnResourceProjectHttpRequ * .build(); * ApiFuture<Operation> future = projectClient.enableXpnResourceProjectCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1072,7 +1207,7 @@ public final ListXpnHostsProjectsPagedResponse listXpnHostsProjects( * try (ProjectClient projectClient = ProjectClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * DiskMoveRequest diskMoveRequestResource = DiskMoveRequest.newBuilder().build(); - * Operation response = projectClient.moveDiskProject(project, diskMoveRequestResource); + * projectClient.moveDiskProjectAsync(project, diskMoveRequestResource).get(); * } * * @@ -1080,8 +1215,9 @@ public final ListXpnHostsProjectsPagedResponse listXpnHostsProjects( * @param diskMoveRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation moveDiskProject( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture moveDiskProjectAsync( ProjectName project, DiskMoveRequest diskMoveRequestResource) { MoveDiskProjectHttpRequest request = @@ -1089,7 +1225,7 @@ public final Operation moveDiskProject( .setProject(project == null ? null : project.toString()) .setDiskMoveRequestResource(diskMoveRequestResource) .build(); - return moveDiskProject(request); + return moveDiskProjectAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1102,7 +1238,7 @@ public final Operation moveDiskProject( * try (ProjectClient projectClient = ProjectClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * DiskMoveRequest diskMoveRequestResource = DiskMoveRequest.newBuilder().build(); - * Operation response = projectClient.moveDiskProject(project.toString(), diskMoveRequestResource); + * projectClient.moveDiskProjectAsync(project.toString(), diskMoveRequestResource).get(); * } * * @@ -1110,15 +1246,17 @@ public final Operation moveDiskProject( * @param diskMoveRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation moveDiskProject(String project, DiskMoveRequest diskMoveRequestResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture moveDiskProjectAsync( + String project, DiskMoveRequest diskMoveRequestResource) { MoveDiskProjectHttpRequest request = MoveDiskProjectHttpRequest.newBuilder() .setProject(project) .setDiskMoveRequestResource(diskMoveRequestResource) .build(); - return moveDiskProject(request); + return moveDiskProjectAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1135,16 +1273,44 @@ public final Operation moveDiskProject(String project, DiskMoveRequest diskMoveR * .setProject(project.toString()) * .setDiskMoveRequestResource(diskMoveRequestResource) * .build(); - * Operation response = projectClient.moveDiskProject(request); + * projectClient.moveDiskProjectAsync(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 */ - @BetaApi - public final Operation moveDiskProject(MoveDiskProjectHttpRequest request) { - return moveDiskProjectCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture moveDiskProjectAsync( + MoveDiskProjectHttpRequest request) { + return moveDiskProjectOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Moves a persistent disk from one zone to another. + * + *

Sample code: + * + *


+   * try (ProjectClient projectClient = ProjectClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   DiskMoveRequest diskMoveRequestResource = DiskMoveRequest.newBuilder().build();
+   *   MoveDiskProjectHttpRequest request = MoveDiskProjectHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .setDiskMoveRequestResource(diskMoveRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = projectClient.moveDiskProjectOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + moveDiskProjectOperationCallable() { + return stub.moveDiskProjectOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1163,7 +1329,7 @@ public final Operation moveDiskProject(MoveDiskProjectHttpRequest request) { * .build(); * ApiFuture<Operation> future = projectClient.moveDiskProjectCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1182,7 +1348,7 @@ public final UnaryCallable moveDiskProjec * try (ProjectClient projectClient = ProjectClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * InstanceMoveRequest instanceMoveRequestResource = InstanceMoveRequest.newBuilder().build(); - * Operation response = projectClient.moveInstanceProject(project, instanceMoveRequestResource); + * projectClient.moveInstanceProjectAsync(project, instanceMoveRequestResource).get(); * } * * @@ -1190,8 +1356,9 @@ public final UnaryCallable moveDiskProjec * @param instanceMoveRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation moveInstanceProject( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture moveInstanceProjectAsync( ProjectName project, InstanceMoveRequest instanceMoveRequestResource) { MoveInstanceProjectHttpRequest request = @@ -1199,7 +1366,7 @@ public final Operation moveInstanceProject( .setProject(project == null ? null : project.toString()) .setInstanceMoveRequestResource(instanceMoveRequestResource) .build(); - return moveInstanceProject(request); + return moveInstanceProjectAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1212,7 +1379,7 @@ public final Operation moveInstanceProject( * try (ProjectClient projectClient = ProjectClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * InstanceMoveRequest instanceMoveRequestResource = InstanceMoveRequest.newBuilder().build(); - * Operation response = projectClient.moveInstanceProject(project.toString(), instanceMoveRequestResource); + * projectClient.moveInstanceProjectAsync(project.toString(), instanceMoveRequestResource).get(); * } * * @@ -1220,8 +1387,9 @@ public final Operation moveInstanceProject( * @param instanceMoveRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation moveInstanceProject( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture moveInstanceProjectAsync( String project, InstanceMoveRequest instanceMoveRequestResource) { MoveInstanceProjectHttpRequest request = @@ -1229,7 +1397,7 @@ public final Operation moveInstanceProject( .setProject(project) .setInstanceMoveRequestResource(instanceMoveRequestResource) .build(); - return moveInstanceProject(request); + return moveInstanceProjectAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1246,16 +1414,44 @@ public final Operation moveInstanceProject( * .setProject(project.toString()) * .setInstanceMoveRequestResource(instanceMoveRequestResource) * .build(); - * Operation response = projectClient.moveInstanceProject(request); + * projectClient.moveInstanceProjectAsync(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 */ - @BetaApi - public final Operation moveInstanceProject(MoveInstanceProjectHttpRequest request) { - return moveInstanceProjectCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture moveInstanceProjectAsync( + MoveInstanceProjectHttpRequest request) { + return moveInstanceProjectOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Moves an instance and its attached persistent disks from one zone to another. + * + *

Sample code: + * + *


+   * try (ProjectClient projectClient = ProjectClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   InstanceMoveRequest instanceMoveRequestResource = InstanceMoveRequest.newBuilder().build();
+   *   MoveInstanceProjectHttpRequest request = MoveInstanceProjectHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .setInstanceMoveRequestResource(instanceMoveRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = projectClient.moveInstanceProjectOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + moveInstanceProjectOperationCallable() { + return stub.moveInstanceProjectOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1274,7 +1470,7 @@ public final Operation moveInstanceProject(MoveInstanceProjectHttpRequest reques * .build(); * ApiFuture<Operation> future = projectClient.moveInstanceProjectCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1295,7 +1491,7 @@ public final Operation moveInstanceProject(MoveInstanceProjectHttpRequest reques * try (ProjectClient projectClient = ProjectClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * Metadata metadataResource = Metadata.newBuilder().build(); - * Operation response = projectClient.setCommonInstanceMetadataProject(project, metadataResource); + * projectClient.setCommonInstanceMetadataProjectAsync(project, metadataResource).get(); * } * * @@ -1303,8 +1499,9 @@ public final Operation moveInstanceProject(MoveInstanceProjectHttpRequest reques * @param metadataResource A metadata key/value entry. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setCommonInstanceMetadataProject( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setCommonInstanceMetadataProjectAsync( ProjectName project, Metadata metadataResource) { SetCommonInstanceMetadataProjectHttpRequest request = @@ -1312,7 +1509,7 @@ public final Operation setCommonInstanceMetadataProject( .setProject(project == null ? null : project.toString()) .setMetadataResource(metadataResource) .build(); - return setCommonInstanceMetadataProject(request); + return setCommonInstanceMetadataProjectAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1326,7 +1523,7 @@ public final Operation setCommonInstanceMetadataProject( * try (ProjectClient projectClient = ProjectClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * Metadata metadataResource = Metadata.newBuilder().build(); - * Operation response = projectClient.setCommonInstanceMetadataProject(project.toString(), metadataResource); + * projectClient.setCommonInstanceMetadataProjectAsync(project.toString(), metadataResource).get(); * } * * @@ -1334,8 +1531,9 @@ public final Operation setCommonInstanceMetadataProject( * @param metadataResource A metadata key/value entry. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setCommonInstanceMetadataProject( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setCommonInstanceMetadataProjectAsync( String project, Metadata metadataResource) { SetCommonInstanceMetadataProjectHttpRequest request = @@ -1343,7 +1541,7 @@ public final Operation setCommonInstanceMetadataProject( .setProject(project) .setMetadataResource(metadataResource) .build(); - return setCommonInstanceMetadataProject(request); + return setCommonInstanceMetadataProjectAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1361,17 +1559,46 @@ public final Operation setCommonInstanceMetadataProject( * .setProject(project.toString()) * .setMetadataResource(metadataResource) * .build(); - * Operation response = projectClient.setCommonInstanceMetadataProject(request); + * projectClient.setCommonInstanceMetadataProjectAsync(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 */ - @BetaApi - public final Operation setCommonInstanceMetadataProject( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setCommonInstanceMetadataProjectAsync( SetCommonInstanceMetadataProjectHttpRequest request) { - return setCommonInstanceMetadataProjectCallable().call(request); + return setCommonInstanceMetadataProjectOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Sets metadata common to all instances within the specified project using the data included in + * the request. + * + *

Sample code: + * + *


+   * try (ProjectClient projectClient = ProjectClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   Metadata metadataResource = Metadata.newBuilder().build();
+   *   SetCommonInstanceMetadataProjectHttpRequest request = SetCommonInstanceMetadataProjectHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .setMetadataResource(metadataResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = projectClient.setCommonInstanceMetadataProjectOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable< + SetCommonInstanceMetadataProjectHttpRequest, EmptyMessage, Operation> + setCommonInstanceMetadataProjectOperationCallable() { + return stub.setCommonInstanceMetadataProjectOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1391,7 +1618,7 @@ public final Operation setCommonInstanceMetadataProject( * .build(); * ApiFuture<Operation> future = projectClient.setCommonInstanceMetadataProjectCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1412,7 +1639,7 @@ public final Operation setCommonInstanceMetadataProject( * try (ProjectClient projectClient = ProjectClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * ProjectsSetDefaultNetworkTierRequest projectsSetDefaultNetworkTierRequestResource = ProjectsSetDefaultNetworkTierRequest.newBuilder().build(); - * Operation response = projectClient.setDefaultNetworkTierProject(project, projectsSetDefaultNetworkTierRequestResource); + * projectClient.setDefaultNetworkTierProjectAsync(project, projectsSetDefaultNetworkTierRequestResource).get(); * } * * @@ -1420,8 +1647,9 @@ public final Operation setCommonInstanceMetadataProject( * @param projectsSetDefaultNetworkTierRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setDefaultNetworkTierProject( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setDefaultNetworkTierProjectAsync( ProjectName project, ProjectsSetDefaultNetworkTierRequest projectsSetDefaultNetworkTierRequestResource) { @@ -1431,7 +1659,7 @@ public final Operation setDefaultNetworkTierProject( .setProjectsSetDefaultNetworkTierRequestResource( projectsSetDefaultNetworkTierRequestResource) .build(); - return setDefaultNetworkTierProject(request); + return setDefaultNetworkTierProjectAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1445,7 +1673,7 @@ public final Operation setDefaultNetworkTierProject( * try (ProjectClient projectClient = ProjectClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * ProjectsSetDefaultNetworkTierRequest projectsSetDefaultNetworkTierRequestResource = ProjectsSetDefaultNetworkTierRequest.newBuilder().build(); - * Operation response = projectClient.setDefaultNetworkTierProject(project.toString(), projectsSetDefaultNetworkTierRequestResource); + * projectClient.setDefaultNetworkTierProjectAsync(project.toString(), projectsSetDefaultNetworkTierRequestResource).get(); * } * * @@ -1453,8 +1681,9 @@ public final Operation setDefaultNetworkTierProject( * @param projectsSetDefaultNetworkTierRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setDefaultNetworkTierProject( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setDefaultNetworkTierProjectAsync( String project, ProjectsSetDefaultNetworkTierRequest projectsSetDefaultNetworkTierRequestResource) { @@ -1464,7 +1693,7 @@ public final Operation setDefaultNetworkTierProject( .setProjectsSetDefaultNetworkTierRequestResource( projectsSetDefaultNetworkTierRequestResource) .build(); - return setDefaultNetworkTierProject(request); + return setDefaultNetworkTierProjectAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1482,17 +1711,45 @@ public final Operation setDefaultNetworkTierProject( * .setProject(project.toString()) * .setProjectsSetDefaultNetworkTierRequestResource(projectsSetDefaultNetworkTierRequestResource) * .build(); - * Operation response = projectClient.setDefaultNetworkTierProject(request); + * projectClient.setDefaultNetworkTierProjectAsync(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 */ - @BetaApi - public final Operation setDefaultNetworkTierProject( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setDefaultNetworkTierProjectAsync( SetDefaultNetworkTierProjectHttpRequest request) { - return setDefaultNetworkTierProjectCallable().call(request); + return setDefaultNetworkTierProjectOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Sets the default network tier of the project. The default network tier is used when an + * address/forwardingRule/instance is created without specifying the network tier field. + * + *

Sample code: + * + *


+   * try (ProjectClient projectClient = ProjectClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   ProjectsSetDefaultNetworkTierRequest projectsSetDefaultNetworkTierRequestResource = ProjectsSetDefaultNetworkTierRequest.newBuilder().build();
+   *   SetDefaultNetworkTierProjectHttpRequest request = SetDefaultNetworkTierProjectHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .setProjectsSetDefaultNetworkTierRequestResource(projectsSetDefaultNetworkTierRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = projectClient.setDefaultNetworkTierProjectOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + setDefaultNetworkTierProjectOperationCallable() { + return stub.setDefaultNetworkTierProjectOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1512,7 +1769,7 @@ public final Operation setDefaultNetworkTierProject( * .build(); * ApiFuture<Operation> future = projectClient.setDefaultNetworkTierProjectCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1533,7 +1790,7 @@ public final Operation setDefaultNetworkTierProject( * try (ProjectClient projectClient = ProjectClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * UsageExportLocation usageExportLocationResource = UsageExportLocation.newBuilder().build(); - * Operation response = projectClient.setUsageExportBucketProject(project, usageExportLocationResource); + * projectClient.setUsageExportBucketProjectAsync(project, usageExportLocationResource).get(); * } * * @@ -1542,8 +1799,9 @@ public final Operation setDefaultNetworkTierProject( * usage report. Contains bucket_name and report_name prefix. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setUsageExportBucketProject( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setUsageExportBucketProjectAsync( ProjectName project, UsageExportLocation usageExportLocationResource) { SetUsageExportBucketProjectHttpRequest request = @@ -1551,7 +1809,7 @@ public final Operation setUsageExportBucketProject( .setProject(project == null ? null : project.toString()) .setUsageExportLocationResource(usageExportLocationResource) .build(); - return setUsageExportBucketProject(request); + return setUsageExportBucketProjectAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1565,7 +1823,7 @@ public final Operation setUsageExportBucketProject( * try (ProjectClient projectClient = ProjectClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * UsageExportLocation usageExportLocationResource = UsageExportLocation.newBuilder().build(); - * Operation response = projectClient.setUsageExportBucketProject(project.toString(), usageExportLocationResource); + * projectClient.setUsageExportBucketProjectAsync(project.toString(), usageExportLocationResource).get(); * } * * @@ -1574,8 +1832,9 @@ public final Operation setUsageExportBucketProject( * usage report. Contains bucket_name and report_name prefix. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setUsageExportBucketProject( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setUsageExportBucketProjectAsync( String project, UsageExportLocation usageExportLocationResource) { SetUsageExportBucketProjectHttpRequest request = @@ -1583,7 +1842,7 @@ public final Operation setUsageExportBucketProject( .setProject(project) .setUsageExportLocationResource(usageExportLocationResource) .build(); - return setUsageExportBucketProject(request); + return setUsageExportBucketProjectAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1601,17 +1860,45 @@ public final Operation setUsageExportBucketProject( * .setProject(project.toString()) * .setUsageExportLocationResource(usageExportLocationResource) * .build(); - * Operation response = projectClient.setUsageExportBucketProject(request); + * projectClient.setUsageExportBucketProjectAsync(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 */ - @BetaApi - public final Operation setUsageExportBucketProject( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setUsageExportBucketProjectAsync( SetUsageExportBucketProjectHttpRequest request) { - return setUsageExportBucketProjectCallable().call(request); + return setUsageExportBucketProjectOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Enables the usage export feature and sets the usage export bucket where reports are stored. If + * you provide an empty request body using this method, the usage export feature will be disabled. + * + *

Sample code: + * + *


+   * try (ProjectClient projectClient = ProjectClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   UsageExportLocation usageExportLocationResource = UsageExportLocation.newBuilder().build();
+   *   SetUsageExportBucketProjectHttpRequest request = SetUsageExportBucketProjectHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .setUsageExportLocationResource(usageExportLocationResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = projectClient.setUsageExportBucketProjectOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + setUsageExportBucketProjectOperationCallable() { + return stub.setUsageExportBucketProjectOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1631,7 +1918,7 @@ public final Operation setUsageExportBucketProject( * .build(); * ApiFuture<Operation> future = projectClient.setUsageExportBucketProjectCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ProjectSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ProjectSettings.java index 6d5697075604..c1c9f5db74aa 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ProjectSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ProjectSettings.java @@ -22,10 +22,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -49,13 +51,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of disableXpnHostProject to 30 seconds: + * example, to set the total timeout of getProject to 30 seconds: * *

  * 
  * ProjectSettings.Builder projectSettingsBuilder =
  *     ProjectSettings.newBuilder();
- * projectSettingsBuilder.disableXpnHostProjectSettings().getRetrySettings().toBuilder()
+ * projectSettingsBuilder.getProjectSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * ProjectSettings projectSettings = projectSettingsBuilder.build();
  * 
@@ -70,24 +72,56 @@ public class ProjectSettings extends ClientSettings {
     return ((ProjectStubSettings) getStubSettings()).disableXpnHostProjectSettings();
   }
 
+  /** Returns the object with the settings used for calls to disableXpnHostProject. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      disableXpnHostProjectOperationSettings() {
+    return ((ProjectStubSettings) getStubSettings()).disableXpnHostProjectOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to disableXpnResourceProject. */
   public UnaryCallSettings
       disableXpnResourceProjectSettings() {
     return ((ProjectStubSettings) getStubSettings()).disableXpnResourceProjectSettings();
   }
 
+  /** Returns the object with the settings used for calls to disableXpnResourceProject. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      disableXpnResourceProjectOperationSettings() {
+    return ((ProjectStubSettings) getStubSettings()).disableXpnResourceProjectOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to enableXpnHostProject. */
   public UnaryCallSettings
       enableXpnHostProjectSettings() {
     return ((ProjectStubSettings) getStubSettings()).enableXpnHostProjectSettings();
   }
 
+  /** Returns the object with the settings used for calls to enableXpnHostProject. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      enableXpnHostProjectOperationSettings() {
+    return ((ProjectStubSettings) getStubSettings()).enableXpnHostProjectOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to enableXpnResourceProject. */
   public UnaryCallSettings
       enableXpnResourceProjectSettings() {
     return ((ProjectStubSettings) getStubSettings()).enableXpnResourceProjectSettings();
   }
 
+  /** Returns the object with the settings used for calls to enableXpnResourceProject. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      enableXpnResourceProjectOperationSettings() {
+    return ((ProjectStubSettings) getStubSettings()).enableXpnResourceProjectOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getProject. */
   public UnaryCallSettings getProjectSettings() {
     return ((ProjectStubSettings) getStubSettings()).getProjectSettings();
@@ -119,30 +153,72 @@ public UnaryCallSettings moveDiskProjectS
     return ((ProjectStubSettings) getStubSettings()).moveDiskProjectSettings();
   }
 
+  /** Returns the object with the settings used for calls to moveDiskProject. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      moveDiskProjectOperationSettings() {
+    return ((ProjectStubSettings) getStubSettings()).moveDiskProjectOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to moveInstanceProject. */
   public UnaryCallSettings
       moveInstanceProjectSettings() {
     return ((ProjectStubSettings) getStubSettings()).moveInstanceProjectSettings();
   }
 
+  /** Returns the object with the settings used for calls to moveInstanceProject. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      moveInstanceProjectOperationSettings() {
+    return ((ProjectStubSettings) getStubSettings()).moveInstanceProjectOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to setCommonInstanceMetadataProject. */
   public UnaryCallSettings
       setCommonInstanceMetadataProjectSettings() {
     return ((ProjectStubSettings) getStubSettings()).setCommonInstanceMetadataProjectSettings();
   }
 
+  /** Returns the object with the settings used for calls to setCommonInstanceMetadataProject. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setCommonInstanceMetadataProjectOperationSettings() {
+    return ((ProjectStubSettings) getStubSettings())
+        .setCommonInstanceMetadataProjectOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to setDefaultNetworkTierProject. */
   public UnaryCallSettings
       setDefaultNetworkTierProjectSettings() {
     return ((ProjectStubSettings) getStubSettings()).setDefaultNetworkTierProjectSettings();
   }
 
+  /** Returns the object with the settings used for calls to setDefaultNetworkTierProject. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setDefaultNetworkTierProjectOperationSettings() {
+    return ((ProjectStubSettings) getStubSettings())
+        .setDefaultNetworkTierProjectOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to setUsageExportBucketProject. */
   public UnaryCallSettings
       setUsageExportBucketProjectSettings() {
     return ((ProjectStubSettings) getStubSettings()).setUsageExportBucketProjectSettings();
   }
 
+  /** Returns the object with the settings used for calls to setUsageExportBucketProject. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setUsageExportBucketProjectOperationSettings() {
+    return ((ProjectStubSettings) getStubSettings()).setUsageExportBucketProjectOperationSettings();
+  }
+
   public static final ProjectSettings create(ProjectStubSettings stub) throws IOException {
     return new ProjectSettings.Builder(stub.toBuilder()).build();
   }
@@ -250,24 +326,58 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().disableXpnHostProjectSettings();
     }
 
+    /** Returns the builder for the settings used for calls to disableXpnHostProject. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        disableXpnHostProjectOperationSettings() {
+      return getStubSettingsBuilder().disableXpnHostProjectOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to disableXpnResourceProject. */
     public UnaryCallSettings.Builder
         disableXpnResourceProjectSettings() {
       return getStubSettingsBuilder().disableXpnResourceProjectSettings();
     }
 
+    /** Returns the builder for the settings used for calls to disableXpnResourceProject. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            DisableXpnResourceProjectHttpRequest, EmptyMessage, Operation>
+        disableXpnResourceProjectOperationSettings() {
+      return getStubSettingsBuilder().disableXpnResourceProjectOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to enableXpnHostProject. */
     public UnaryCallSettings.Builder
         enableXpnHostProjectSettings() {
       return getStubSettingsBuilder().enableXpnHostProjectSettings();
     }
 
+    /** Returns the builder for the settings used for calls to enableXpnHostProject. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        enableXpnHostProjectOperationSettings() {
+      return getStubSettingsBuilder().enableXpnHostProjectOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to enableXpnResourceProject. */
     public UnaryCallSettings.Builder
         enableXpnResourceProjectSettings() {
       return getStubSettingsBuilder().enableXpnResourceProjectSettings();
     }
 
+    /** Returns the builder for the settings used for calls to enableXpnResourceProject. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            EnableXpnResourceProjectHttpRequest, EmptyMessage, Operation>
+        enableXpnResourceProjectOperationSettings() {
+      return getStubSettingsBuilder().enableXpnResourceProjectOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getProject. */
     public UnaryCallSettings.Builder getProjectSettings() {
       return getStubSettingsBuilder().getProjectSettings();
@@ -301,30 +411,73 @@ public UnaryCallSettings.Builder getProjectSetti
       return getStubSettingsBuilder().moveDiskProjectSettings();
     }
 
+    /** Returns the builder for the settings used for calls to moveDiskProject. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        moveDiskProjectOperationSettings() {
+      return getStubSettingsBuilder().moveDiskProjectOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to moveInstanceProject. */
     public UnaryCallSettings.Builder
         moveInstanceProjectSettings() {
       return getStubSettingsBuilder().moveInstanceProjectSettings();
     }
 
+    /** Returns the builder for the settings used for calls to moveInstanceProject. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        moveInstanceProjectOperationSettings() {
+      return getStubSettingsBuilder().moveInstanceProjectOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to setCommonInstanceMetadataProject. */
     public UnaryCallSettings.Builder
         setCommonInstanceMetadataProjectSettings() {
       return getStubSettingsBuilder().setCommonInstanceMetadataProjectSettings();
     }
 
+    /** Returns the builder for the settings used for calls to setCommonInstanceMetadataProject. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetCommonInstanceMetadataProjectHttpRequest, EmptyMessage, Operation>
+        setCommonInstanceMetadataProjectOperationSettings() {
+      return getStubSettingsBuilder().setCommonInstanceMetadataProjectOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to setDefaultNetworkTierProject. */
     public UnaryCallSettings.Builder
         setDefaultNetworkTierProjectSettings() {
       return getStubSettingsBuilder().setDefaultNetworkTierProjectSettings();
     }
 
+    /** Returns the builder for the settings used for calls to setDefaultNetworkTierProject. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetDefaultNetworkTierProjectHttpRequest, EmptyMessage, Operation>
+        setDefaultNetworkTierProjectOperationSettings() {
+      return getStubSettingsBuilder().setDefaultNetworkTierProjectOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to setUsageExportBucketProject. */
     public UnaryCallSettings.Builder
         setUsageExportBucketProjectSettings() {
       return getStubSettingsBuilder().setUsageExportBucketProjectSettings();
     }
 
+    /** Returns the builder for the settings used for calls to setUsageExportBucketProject. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetUsageExportBucketProjectHttpRequest, EmptyMessage, Operation>
+        setUsageExportBucketProjectOperationSettings() {
+      return getStubSettingsBuilder().setUsageExportBucketProjectOperationSettings();
+    }
+
     @Override
     public ProjectSettings build() throws IOException {
       return new ProjectSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionAutoscalerClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionAutoscalerClient.java
index 1e91496bc68a..7eaffa363e05 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionAutoscalerClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionAutoscalerClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.RegionAutoscalerStub;
@@ -43,7 +46,7 @@
  * 
  * try (RegionAutoscalerClient regionAutoscalerClient = RegionAutoscalerClient.create()) {
  *   ProjectRegionAutoscalerName autoscaler = ProjectRegionAutoscalerName.of("[PROJECT]", "[REGION]", "[AUTOSCALER]");
- *   Operation response = regionAutoscalerClient.deleteRegionAutoscaler(autoscaler);
+ *   Autoscaler response = regionAutoscalerClient.getRegionAutoscaler(autoscaler);
  * }
  * 
  * 
@@ -104,6 +107,7 @@ public class RegionAutoscalerClient implements BackgroundResource { private final RegionAutoscalerSettings settings; private final RegionAutoscalerStub stub; + private final RegionOperationClient operationsClient; /** Constructs an instance of RegionAutoscalerClient with default settings. */ public static final RegionAutoscalerClient create() throws IOException { @@ -136,12 +140,14 @@ public static final RegionAutoscalerClient create(RegionAutoscalerStub stub) { protected RegionAutoscalerClient(RegionAutoscalerSettings settings) throws IOException { this.settings = settings; this.stub = ((RegionAutoscalerStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected RegionAutoscalerClient(RegionAutoscalerStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub()); } public final RegionAutoscalerSettings getSettings() { @@ -153,6 +159,16 @@ public RegionAutoscalerStub getStub() { return stub; } + /** + * Returns the RegionOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final RegionOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Deletes the specified autoscaler. @@ -162,21 +178,23 @@ public RegionAutoscalerStub getStub() { *

    * try (RegionAutoscalerClient regionAutoscalerClient = RegionAutoscalerClient.create()) {
    *   ProjectRegionAutoscalerName autoscaler = ProjectRegionAutoscalerName.of("[PROJECT]", "[REGION]", "[AUTOSCALER]");
-   *   Operation response = regionAutoscalerClient.deleteRegionAutoscaler(autoscaler);
+   *   regionAutoscalerClient.deleteRegionAutoscalerAsync(autoscaler).get();
    * }
    * 
* * @param autoscaler Name of the autoscaler to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteRegionAutoscaler(ProjectRegionAutoscalerName autoscaler) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteRegionAutoscalerAsync( + ProjectRegionAutoscalerName autoscaler) { DeleteRegionAutoscalerHttpRequest request = DeleteRegionAutoscalerHttpRequest.newBuilder() .setAutoscaler(autoscaler == null ? null : autoscaler.toString()) .build(); - return deleteRegionAutoscaler(request); + return deleteRegionAutoscalerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -188,19 +206,21 @@ public final Operation deleteRegionAutoscaler(ProjectRegionAutoscalerName autosc *

    * try (RegionAutoscalerClient regionAutoscalerClient = RegionAutoscalerClient.create()) {
    *   ProjectRegionAutoscalerName autoscaler = ProjectRegionAutoscalerName.of("[PROJECT]", "[REGION]", "[AUTOSCALER]");
-   *   Operation response = regionAutoscalerClient.deleteRegionAutoscaler(autoscaler.toString());
+   *   regionAutoscalerClient.deleteRegionAutoscalerAsync(autoscaler.toString()).get();
    * }
    * 
* * @param autoscaler Name of the autoscaler to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteRegionAutoscaler(String autoscaler) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteRegionAutoscalerAsync( + String autoscaler) { DeleteRegionAutoscalerHttpRequest request = DeleteRegionAutoscalerHttpRequest.newBuilder().setAutoscaler(autoscaler).build(); - return deleteRegionAutoscaler(request); + return deleteRegionAutoscalerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -215,16 +235,42 @@ public final Operation deleteRegionAutoscaler(String autoscaler) { * DeleteRegionAutoscalerHttpRequest request = DeleteRegionAutoscalerHttpRequest.newBuilder() * .setAutoscaler(autoscaler.toString()) * .build(); - * Operation response = regionAutoscalerClient.deleteRegionAutoscaler(request); + * regionAutoscalerClient.deleteRegionAutoscalerAsync(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 */ - @BetaApi - public final Operation deleteRegionAutoscaler(DeleteRegionAutoscalerHttpRequest request) { - return deleteRegionAutoscalerCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteRegionAutoscalerAsync( + DeleteRegionAutoscalerHttpRequest request) { + return deleteRegionAutoscalerOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified autoscaler. + * + *

Sample code: + * + *


+   * try (RegionAutoscalerClient regionAutoscalerClient = RegionAutoscalerClient.create()) {
+   *   ProjectRegionAutoscalerName autoscaler = ProjectRegionAutoscalerName.of("[PROJECT]", "[REGION]", "[AUTOSCALER]");
+   *   DeleteRegionAutoscalerHttpRequest request = DeleteRegionAutoscalerHttpRequest.newBuilder()
+   *     .setAutoscaler(autoscaler.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = regionAutoscalerClient.deleteRegionAutoscalerOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteRegionAutoscalerOperationCallable() { + return stub.deleteRegionAutoscalerOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -241,7 +287,7 @@ public final Operation deleteRegionAutoscaler(DeleteRegionAutoscalerHttpRequest * .build(); * ApiFuture<Operation> future = regionAutoscalerClient.deleteRegionAutoscalerCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -359,7 +405,7 @@ public final Autoscaler getRegionAutoscaler(GetRegionAutoscalerHttpRequest reque * try (RegionAutoscalerClient regionAutoscalerClient = RegionAutoscalerClient.create()) { * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * Autoscaler autoscalerResource = Autoscaler.newBuilder().build(); - * Operation response = regionAutoscalerClient.insertRegionAutoscaler(region, autoscalerResource); + * regionAutoscalerClient.insertRegionAutoscalerAsync(region, autoscalerResource).get(); * } * * @@ -371,8 +417,9 @@ public final Autoscaler getRegionAutoscaler(GetRegionAutoscalerHttpRequest reque * resource_for beta.regionAutoscalers ==) (== resource_for v1.regionAutoscalers ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertRegionAutoscaler( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertRegionAutoscalerAsync( ProjectRegionName region, Autoscaler autoscalerResource) { InsertRegionAutoscalerHttpRequest request = @@ -380,7 +427,7 @@ public final Operation insertRegionAutoscaler( .setRegion(region == null ? null : region.toString()) .setAutoscalerResource(autoscalerResource) .build(); - return insertRegionAutoscaler(request); + return insertRegionAutoscalerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -393,7 +440,7 @@ public final Operation insertRegionAutoscaler( * try (RegionAutoscalerClient regionAutoscalerClient = RegionAutoscalerClient.create()) { * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * Autoscaler autoscalerResource = Autoscaler.newBuilder().build(); - * Operation response = regionAutoscalerClient.insertRegionAutoscaler(region.toString(), autoscalerResource); + * regionAutoscalerClient.insertRegionAutoscalerAsync(region.toString(), autoscalerResource).get(); * } * * @@ -405,15 +452,17 @@ public final Operation insertRegionAutoscaler( * resource_for beta.regionAutoscalers ==) (== resource_for v1.regionAutoscalers ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertRegionAutoscaler(String region, Autoscaler autoscalerResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertRegionAutoscalerAsync( + String region, Autoscaler autoscalerResource) { InsertRegionAutoscalerHttpRequest request = InsertRegionAutoscalerHttpRequest.newBuilder() .setRegion(region) .setAutoscalerResource(autoscalerResource) .build(); - return insertRegionAutoscaler(request); + return insertRegionAutoscalerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -430,16 +479,44 @@ public final Operation insertRegionAutoscaler(String region, Autoscaler autoscal * .setRegion(region.toString()) * .setAutoscalerResource(autoscalerResource) * .build(); - * Operation response = regionAutoscalerClient.insertRegionAutoscaler(request); + * regionAutoscalerClient.insertRegionAutoscalerAsync(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 */ - @BetaApi - public final Operation insertRegionAutoscaler(InsertRegionAutoscalerHttpRequest request) { - return insertRegionAutoscalerCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertRegionAutoscalerAsync( + InsertRegionAutoscalerHttpRequest request) { + return insertRegionAutoscalerOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates an autoscaler in the specified project using the data included in the request. + * + *

Sample code: + * + *


+   * try (RegionAutoscalerClient regionAutoscalerClient = RegionAutoscalerClient.create()) {
+   *   ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
+   *   Autoscaler autoscalerResource = Autoscaler.newBuilder().build();
+   *   InsertRegionAutoscalerHttpRequest request = InsertRegionAutoscalerHttpRequest.newBuilder()
+   *     .setRegion(region.toString())
+   *     .setAutoscalerResource(autoscalerResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = regionAutoscalerClient.insertRegionAutoscalerOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertRegionAutoscalerOperationCallable() { + return stub.insertRegionAutoscalerOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -458,7 +535,7 @@ public final Operation insertRegionAutoscaler(InsertRegionAutoscalerHttpRequest * .build(); * ApiFuture<Operation> future = regionAutoscalerClient.insertRegionAutoscalerCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -619,7 +696,7 @@ public final ListRegionAutoscalersPagedResponse listRegionAutoscalers( * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * Autoscaler autoscalerResource = Autoscaler.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = regionAutoscalerClient.patchRegionAutoscaler(autoscaler, region, autoscalerResource, fieldMask); + * regionAutoscalerClient.patchRegionAutoscalerAsync(autoscaler, region, autoscalerResource, fieldMask).get(); * } * * @@ -636,8 +713,9 @@ public final ListRegionAutoscalersPagedResponse listRegionAutoscalers( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchRegionAutoscaler( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchRegionAutoscalerAsync( String autoscaler, ProjectRegionName region, Autoscaler autoscalerResource, @@ -650,7 +728,7 @@ public final Operation patchRegionAutoscaler( .setAutoscalerResource(autoscalerResource) .addAllFieldMask(fieldMask) .build(); - return patchRegionAutoscaler(request); + return patchRegionAutoscalerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -666,7 +744,7 @@ public final Operation patchRegionAutoscaler( * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * Autoscaler autoscalerResource = Autoscaler.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = regionAutoscalerClient.patchRegionAutoscaler(autoscaler, region.toString(), autoscalerResource, fieldMask); + * regionAutoscalerClient.patchRegionAutoscalerAsync(autoscaler, region.toString(), autoscalerResource, fieldMask).get(); * } * * @@ -683,8 +761,9 @@ public final Operation patchRegionAutoscaler( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchRegionAutoscaler( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchRegionAutoscalerAsync( String autoscaler, String region, Autoscaler autoscalerResource, List fieldMask) { PatchRegionAutoscalerHttpRequest request = @@ -694,7 +773,7 @@ public final Operation patchRegionAutoscaler( .setAutoscalerResource(autoscalerResource) .addAllFieldMask(fieldMask) .build(); - return patchRegionAutoscaler(request); + return patchRegionAutoscalerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -716,16 +795,49 @@ public final Operation patchRegionAutoscaler( * .setAutoscalerResource(autoscalerResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = regionAutoscalerClient.patchRegionAutoscaler(request); + * regionAutoscalerClient.patchRegionAutoscalerAsync(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 */ - @BetaApi - public final Operation patchRegionAutoscaler(PatchRegionAutoscalerHttpRequest request) { - return patchRegionAutoscalerCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchRegionAutoscalerAsync( + PatchRegionAutoscalerHttpRequest request) { + return patchRegionAutoscalerOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Updates an autoscaler in the specified project using the data included in the request. This + * method supports PATCH semantics and uses the JSON merge patch format and processing rules. + * + *

Sample code: + * + *


+   * try (RegionAutoscalerClient regionAutoscalerClient = RegionAutoscalerClient.create()) {
+   *   String autoscaler = "";
+   *   ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
+   *   Autoscaler autoscalerResource = Autoscaler.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   PatchRegionAutoscalerHttpRequest request = PatchRegionAutoscalerHttpRequest.newBuilder()
+   *     .setAutoscaler(autoscaler)
+   *     .setRegion(region.toString())
+   *     .setAutoscalerResource(autoscalerResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = regionAutoscalerClient.patchRegionAutoscalerOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + patchRegionAutoscalerOperationCallable() { + return stub.patchRegionAutoscalerOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -749,7 +861,7 @@ public final Operation patchRegionAutoscaler(PatchRegionAutoscalerHttpRequest re * .build(); * ApiFuture<Operation> future = regionAutoscalerClient.patchRegionAutoscalerCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -771,7 +883,7 @@ public final Operation patchRegionAutoscaler(PatchRegionAutoscalerHttpRequest re * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * Autoscaler autoscalerResource = Autoscaler.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = regionAutoscalerClient.updateRegionAutoscaler(autoscaler, region, autoscalerResource, fieldMask); + * regionAutoscalerClient.updateRegionAutoscalerAsync(autoscaler, region, autoscalerResource, fieldMask).get(); * } * * @@ -788,8 +900,9 @@ public final Operation patchRegionAutoscaler(PatchRegionAutoscalerHttpRequest re * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation updateRegionAutoscaler( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateRegionAutoscalerAsync( String autoscaler, ProjectRegionName region, Autoscaler autoscalerResource, @@ -802,7 +915,7 @@ public final Operation updateRegionAutoscaler( .setAutoscalerResource(autoscalerResource) .addAllFieldMask(fieldMask) .build(); - return updateRegionAutoscaler(request); + return updateRegionAutoscalerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -817,7 +930,7 @@ public final Operation updateRegionAutoscaler( * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * Autoscaler autoscalerResource = Autoscaler.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = regionAutoscalerClient.updateRegionAutoscaler(autoscaler, region.toString(), autoscalerResource, fieldMask); + * regionAutoscalerClient.updateRegionAutoscalerAsync(autoscaler, region.toString(), autoscalerResource, fieldMask).get(); * } * * @@ -834,8 +947,9 @@ public final Operation updateRegionAutoscaler( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation updateRegionAutoscaler( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateRegionAutoscalerAsync( String autoscaler, String region, Autoscaler autoscalerResource, List fieldMask) { UpdateRegionAutoscalerHttpRequest request = @@ -845,7 +959,7 @@ public final Operation updateRegionAutoscaler( .setAutoscalerResource(autoscalerResource) .addAllFieldMask(fieldMask) .build(); - return updateRegionAutoscaler(request); + return updateRegionAutoscalerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -866,16 +980,48 @@ public final Operation updateRegionAutoscaler( * .setAutoscalerResource(autoscalerResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = regionAutoscalerClient.updateRegionAutoscaler(request); + * regionAutoscalerClient.updateRegionAutoscalerAsync(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 */ - @BetaApi - public final Operation updateRegionAutoscaler(UpdateRegionAutoscalerHttpRequest request) { - return updateRegionAutoscalerCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateRegionAutoscalerAsync( + UpdateRegionAutoscalerHttpRequest request) { + return updateRegionAutoscalerOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Updates an autoscaler in the specified project using the data included in the request. + * + *

Sample code: + * + *


+   * try (RegionAutoscalerClient regionAutoscalerClient = RegionAutoscalerClient.create()) {
+   *   String autoscaler = "";
+   *   ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
+   *   Autoscaler autoscalerResource = Autoscaler.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   UpdateRegionAutoscalerHttpRequest request = UpdateRegionAutoscalerHttpRequest.newBuilder()
+   *     .setAutoscaler(autoscaler)
+   *     .setRegion(region.toString())
+   *     .setAutoscalerResource(autoscalerResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = regionAutoscalerClient.updateRegionAutoscalerOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + updateRegionAutoscalerOperationCallable() { + return stub.updateRegionAutoscalerOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -898,7 +1044,7 @@ public final Operation updateRegionAutoscaler(UpdateRegionAutoscalerHttpRequest * .build(); * ApiFuture<Operation> future = regionAutoscalerClient.updateRegionAutoscalerCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionAutoscalerSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionAutoscalerSettings.java index 6958d95b20c3..ff3953ba074e 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionAutoscalerSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionAutoscalerSettings.java @@ -21,10 +21,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -48,13 +50,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteRegionAutoscaler to 30 seconds: + * example, to set the total timeout of getRegionAutoscaler to 30 seconds: * *

  * 
  * RegionAutoscalerSettings.Builder regionAutoscalerSettingsBuilder =
  *     RegionAutoscalerSettings.newBuilder();
- * regionAutoscalerSettingsBuilder.deleteRegionAutoscalerSettings().getRetrySettings().toBuilder()
+ * regionAutoscalerSettingsBuilder.getRegionAutoscalerSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * RegionAutoscalerSettings regionAutoscalerSettings = regionAutoscalerSettingsBuilder.build();
  * 
@@ -69,6 +71,15 @@ public class RegionAutoscalerSettings extends ClientSettings
+      deleteRegionAutoscalerOperationSettings() {
+    return ((RegionAutoscalerStubSettings) getStubSettings())
+        .deleteRegionAutoscalerOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getRegionAutoscaler. */
   public UnaryCallSettings
       getRegionAutoscalerSettings() {
@@ -81,6 +92,15 @@ public class RegionAutoscalerSettings extends ClientSettings
+      insertRegionAutoscalerOperationSettings() {
+    return ((RegionAutoscalerStubSettings) getStubSettings())
+        .insertRegionAutoscalerOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listRegionAutoscalers. */
   public PagedCallSettings<
           ListRegionAutoscalersHttpRequest,
@@ -96,12 +116,30 @@ public class RegionAutoscalerSettings extends ClientSettings
+      patchRegionAutoscalerOperationSettings() {
+    return ((RegionAutoscalerStubSettings) getStubSettings())
+        .patchRegionAutoscalerOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to updateRegionAutoscaler. */
   public UnaryCallSettings
       updateRegionAutoscalerSettings() {
     return ((RegionAutoscalerStubSettings) getStubSettings()).updateRegionAutoscalerSettings();
   }
 
+  /** Returns the object with the settings used for calls to updateRegionAutoscaler. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      updateRegionAutoscalerOperationSettings() {
+    return ((RegionAutoscalerStubSettings) getStubSettings())
+        .updateRegionAutoscalerOperationSettings();
+  }
+
   public static final RegionAutoscalerSettings create(RegionAutoscalerStubSettings stub)
       throws IOException {
     return new RegionAutoscalerSettings.Builder(stub.toBuilder()).build();
@@ -210,6 +248,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteRegionAutoscalerSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteRegionAutoscaler. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteRegionAutoscalerOperationSettings() {
+      return getStubSettingsBuilder().deleteRegionAutoscalerOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getRegionAutoscaler. */
     public UnaryCallSettings.Builder
         getRegionAutoscalerSettings() {
@@ -222,6 +268,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().insertRegionAutoscalerSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertRegionAutoscaler. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertRegionAutoscalerOperationSettings() {
+      return getStubSettingsBuilder().insertRegionAutoscalerOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listRegionAutoscalers. */
     public PagedCallSettings.Builder<
             ListRegionAutoscalersHttpRequest,
@@ -237,12 +291,28 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().patchRegionAutoscalerSettings();
     }
 
+    /** Returns the builder for the settings used for calls to patchRegionAutoscaler. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchRegionAutoscalerOperationSettings() {
+      return getStubSettingsBuilder().patchRegionAutoscalerOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to updateRegionAutoscaler. */
     public UnaryCallSettings.Builder
         updateRegionAutoscalerSettings() {
       return getStubSettingsBuilder().updateRegionAutoscalerSettings();
     }
 
+    /** Returns the builder for the settings used for calls to updateRegionAutoscaler. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        updateRegionAutoscalerOperationSettings() {
+      return getStubSettingsBuilder().updateRegionAutoscalerOperationSettings();
+    }
+
     @Override
     public RegionAutoscalerSettings build() throws IOException {
       return new RegionAutoscalerSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionBackendServiceClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionBackendServiceClient.java
index fae1e1a33a1c..e55864d57849 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionBackendServiceClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionBackendServiceClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.RegionBackendServiceStub;
@@ -43,7 +46,7 @@
  * 
  * try (RegionBackendServiceClient regionBackendServiceClient = RegionBackendServiceClient.create()) {
  *   ProjectRegionBackendServiceName backendService = ProjectRegionBackendServiceName.of("[PROJECT]", "[REGION]", "[BACKEND_SERVICE]");
- *   Operation response = regionBackendServiceClient.deleteRegionBackendService(backendService);
+ *   BackendService response = regionBackendServiceClient.getRegionBackendService(backendService);
  * }
  * 
  * 
@@ -104,6 +107,7 @@ public class RegionBackendServiceClient implements BackgroundResource { private final RegionBackendServiceSettings settings; private final RegionBackendServiceStub stub; + private final RegionOperationClient operationsClient; /** Constructs an instance of RegionBackendServiceClient with default settings. */ public static final RegionBackendServiceClient create() throws IOException { @@ -136,12 +140,14 @@ public static final RegionBackendServiceClient create(RegionBackendServiceStub s protected RegionBackendServiceClient(RegionBackendServiceSettings settings) throws IOException { this.settings = settings; this.stub = ((RegionBackendServiceStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected RegionBackendServiceClient(RegionBackendServiceStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub()); } public final RegionBackendServiceSettings getSettings() { @@ -153,6 +159,16 @@ public RegionBackendServiceStub getStub() { return stub; } + /** + * Returns the RegionOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final RegionOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Deletes the specified regional BackendService resource. @@ -162,22 +178,23 @@ public RegionBackendServiceStub getStub() { *

    * try (RegionBackendServiceClient regionBackendServiceClient = RegionBackendServiceClient.create()) {
    *   ProjectRegionBackendServiceName backendService = ProjectRegionBackendServiceName.of("[PROJECT]", "[REGION]", "[BACKEND_SERVICE]");
-   *   Operation response = regionBackendServiceClient.deleteRegionBackendService(backendService);
+   *   regionBackendServiceClient.deleteRegionBackendServiceAsync(backendService).get();
    * }
    * 
* * @param backendService Name of the BackendService resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteRegionBackendService( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteRegionBackendServiceAsync( ProjectRegionBackendServiceName backendService) { DeleteRegionBackendServiceHttpRequest request = DeleteRegionBackendServiceHttpRequest.newBuilder() .setBackendService(backendService == null ? null : backendService.toString()) .build(); - return deleteRegionBackendService(request); + return deleteRegionBackendServiceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -189,21 +206,23 @@ public final Operation deleteRegionBackendService( *

    * try (RegionBackendServiceClient regionBackendServiceClient = RegionBackendServiceClient.create()) {
    *   ProjectRegionBackendServiceName backendService = ProjectRegionBackendServiceName.of("[PROJECT]", "[REGION]", "[BACKEND_SERVICE]");
-   *   Operation response = regionBackendServiceClient.deleteRegionBackendService(backendService.toString());
+   *   regionBackendServiceClient.deleteRegionBackendServiceAsync(backendService.toString()).get();
    * }
    * 
* * @param backendService Name of the BackendService resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteRegionBackendService(String backendService) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteRegionBackendServiceAsync( + String backendService) { DeleteRegionBackendServiceHttpRequest request = DeleteRegionBackendServiceHttpRequest.newBuilder() .setBackendService(backendService) .build(); - return deleteRegionBackendService(request); + return deleteRegionBackendServiceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -218,16 +237,42 @@ public final Operation deleteRegionBackendService(String backendService) { * DeleteRegionBackendServiceHttpRequest request = DeleteRegionBackendServiceHttpRequest.newBuilder() * .setBackendService(backendService.toString()) * .build(); - * Operation response = regionBackendServiceClient.deleteRegionBackendService(request); + * regionBackendServiceClient.deleteRegionBackendServiceAsync(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 */ - @BetaApi - public final Operation deleteRegionBackendService(DeleteRegionBackendServiceHttpRequest request) { - return deleteRegionBackendServiceCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteRegionBackendServiceAsync( + DeleteRegionBackendServiceHttpRequest request) { + return deleteRegionBackendServiceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified regional BackendService resource. + * + *

Sample code: + * + *


+   * try (RegionBackendServiceClient regionBackendServiceClient = RegionBackendServiceClient.create()) {
+   *   ProjectRegionBackendServiceName backendService = ProjectRegionBackendServiceName.of("[PROJECT]", "[REGION]", "[BACKEND_SERVICE]");
+   *   DeleteRegionBackendServiceHttpRequest request = DeleteRegionBackendServiceHttpRequest.newBuilder()
+   *     .setBackendService(backendService.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = regionBackendServiceClient.deleteRegionBackendServiceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteRegionBackendServiceOperationCallable() { + return stub.deleteRegionBackendServiceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -244,7 +289,7 @@ public final Operation deleteRegionBackendService(DeleteRegionBackendServiceHttp * .build(); * ApiFuture<Operation> future = regionBackendServiceClient.deleteRegionBackendServiceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -479,7 +524,7 @@ public final BackendServiceGroupHealth getHealthRegionBackendService( * try (RegionBackendServiceClient regionBackendServiceClient = RegionBackendServiceClient.create()) { * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * BackendService backendServiceResource = BackendService.newBuilder().build(); - * Operation response = regionBackendServiceClient.insertRegionBackendService(region, backendServiceResource); + * regionBackendServiceClient.insertRegionBackendServiceAsync(region, backendServiceResource).get(); * } * * @@ -489,8 +534,9 @@ public final BackendServiceGroupHealth getHealthRegionBackendService( * (== resource_for beta.backendService ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertRegionBackendService( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertRegionBackendServiceAsync( ProjectRegionName region, BackendService backendServiceResource) { InsertRegionBackendServiceHttpRequest request = @@ -498,7 +544,7 @@ public final Operation insertRegionBackendService( .setRegion(region == null ? null : region.toString()) .setBackendServiceResource(backendServiceResource) .build(); - return insertRegionBackendService(request); + return insertRegionBackendServiceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -513,7 +559,7 @@ public final Operation insertRegionBackendService( * try (RegionBackendServiceClient regionBackendServiceClient = RegionBackendServiceClient.create()) { * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * BackendService backendServiceResource = BackendService.newBuilder().build(); - * Operation response = regionBackendServiceClient.insertRegionBackendService(region.toString(), backendServiceResource); + * regionBackendServiceClient.insertRegionBackendServiceAsync(region.toString(), backendServiceResource).get(); * } * * @@ -523,8 +569,9 @@ public final Operation insertRegionBackendService( * (== resource_for beta.backendService ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertRegionBackendService( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertRegionBackendServiceAsync( String region, BackendService backendServiceResource) { InsertRegionBackendServiceHttpRequest request = @@ -532,7 +579,7 @@ public final Operation insertRegionBackendService( .setRegion(region) .setBackendServiceResource(backendServiceResource) .build(); - return insertRegionBackendService(request); + return insertRegionBackendServiceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -551,16 +598,46 @@ public final Operation insertRegionBackendService( * .setRegion(region.toString()) * .setBackendServiceResource(backendServiceResource) * .build(); - * Operation response = regionBackendServiceClient.insertRegionBackendService(request); + * regionBackendServiceClient.insertRegionBackendServiceAsync(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 */ - @BetaApi - public final Operation insertRegionBackendService(InsertRegionBackendServiceHttpRequest request) { - return insertRegionBackendServiceCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertRegionBackendServiceAsync( + InsertRegionBackendServiceHttpRequest request) { + return insertRegionBackendServiceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a regional BackendService resource in the specified project using the data included in + * the request. There are several restrictions and guidelines to keep in mind when creating a + * regional backend service. Read Restrictions and Guidelines for more information. + * + *

Sample code: + * + *


+   * try (RegionBackendServiceClient regionBackendServiceClient = RegionBackendServiceClient.create()) {
+   *   ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
+   *   BackendService backendServiceResource = BackendService.newBuilder().build();
+   *   InsertRegionBackendServiceHttpRequest request = InsertRegionBackendServiceHttpRequest.newBuilder()
+   *     .setRegion(region.toString())
+   *     .setBackendServiceResource(backendServiceResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = regionBackendServiceClient.insertRegionBackendServiceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertRegionBackendServiceOperationCallable() { + return stub.insertRegionBackendServiceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -581,7 +658,7 @@ public final Operation insertRegionBackendService(InsertRegionBackendServiceHttp * .build(); * ApiFuture<Operation> future = regionBackendServiceClient.insertRegionBackendServiceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -750,7 +827,7 @@ public final ListRegionBackendServicesPagedResponse listRegionBackendServices( * ProjectRegionBackendServiceName backendService = ProjectRegionBackendServiceName.of("[PROJECT]", "[REGION]", "[BACKEND_SERVICE]"); * BackendService backendServiceResource = BackendService.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = regionBackendServiceClient.patchRegionBackendService(backendService, backendServiceResource, fieldMask); + * regionBackendServiceClient.patchRegionBackendServiceAsync(backendService, backendServiceResource, fieldMask).get(); * } * * @@ -764,8 +841,9 @@ public final ListRegionBackendServicesPagedResponse listRegionBackendServices( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchRegionBackendService( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchRegionBackendServiceAsync( ProjectRegionBackendServiceName backendService, BackendService backendServiceResource, List fieldMask) { @@ -776,7 +854,7 @@ public final Operation patchRegionBackendService( .setBackendServiceResource(backendServiceResource) .addAllFieldMask(fieldMask) .build(); - return patchRegionBackendService(request); + return patchRegionBackendServiceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -793,7 +871,7 @@ public final Operation patchRegionBackendService( * ProjectRegionBackendServiceName backendService = ProjectRegionBackendServiceName.of("[PROJECT]", "[REGION]", "[BACKEND_SERVICE]"); * BackendService backendServiceResource = BackendService.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = regionBackendServiceClient.patchRegionBackendService(backendService.toString(), backendServiceResource, fieldMask); + * regionBackendServiceClient.patchRegionBackendServiceAsync(backendService.toString(), backendServiceResource, fieldMask).get(); * } * * @@ -807,8 +885,9 @@ public final Operation patchRegionBackendService( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchRegionBackendService( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchRegionBackendServiceAsync( String backendService, BackendService backendServiceResource, List fieldMask) { PatchRegionBackendServiceHttpRequest request = @@ -817,7 +896,7 @@ public final Operation patchRegionBackendService( .setBackendServiceResource(backendServiceResource) .addAllFieldMask(fieldMask) .build(); - return patchRegionBackendService(request); + return patchRegionBackendServiceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -839,16 +918,49 @@ public final Operation patchRegionBackendService( * .setBackendServiceResource(backendServiceResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = regionBackendServiceClient.patchRegionBackendService(request); + * regionBackendServiceClient.patchRegionBackendServiceAsync(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 */ - @BetaApi - public final Operation patchRegionBackendService(PatchRegionBackendServiceHttpRequest request) { - return patchRegionBackendServiceCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchRegionBackendServiceAsync( + PatchRegionBackendServiceHttpRequest request) { + return patchRegionBackendServiceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Updates the specified regional BackendService resource with the data included in the request. + * There are several restrictions and guidelines to keep in mind when updating a backend service. + * Read Restrictions and Guidelines for more information. This method supports PATCH semantics and + * uses the JSON merge patch format and processing rules. + * + *

Sample code: + * + *


+   * try (RegionBackendServiceClient regionBackendServiceClient = RegionBackendServiceClient.create()) {
+   *   ProjectRegionBackendServiceName backendService = ProjectRegionBackendServiceName.of("[PROJECT]", "[REGION]", "[BACKEND_SERVICE]");
+   *   BackendService backendServiceResource = BackendService.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   PatchRegionBackendServiceHttpRequest request = PatchRegionBackendServiceHttpRequest.newBuilder()
+   *     .setBackendService(backendService.toString())
+   *     .setBackendServiceResource(backendServiceResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = regionBackendServiceClient.patchRegionBackendServiceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + patchRegionBackendServiceOperationCallable() { + return stub.patchRegionBackendServiceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -872,7 +984,7 @@ public final Operation patchRegionBackendService(PatchRegionBackendServiceHttpRe * .build(); * ApiFuture<Operation> future = regionBackendServiceClient.patchRegionBackendServiceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -895,7 +1007,7 @@ public final Operation patchRegionBackendService(PatchRegionBackendServiceHttpRe * ProjectRegionBackendServiceName backendService = ProjectRegionBackendServiceName.of("[PROJECT]", "[REGION]", "[BACKEND_SERVICE]"); * BackendService backendServiceResource = BackendService.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = regionBackendServiceClient.updateRegionBackendService(backendService, backendServiceResource, fieldMask); + * regionBackendServiceClient.updateRegionBackendServiceAsync(backendService, backendServiceResource, fieldMask).get(); * } * * @@ -909,8 +1021,9 @@ public final Operation patchRegionBackendService(PatchRegionBackendServiceHttpRe * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation updateRegionBackendService( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateRegionBackendServiceAsync( ProjectRegionBackendServiceName backendService, BackendService backendServiceResource, List fieldMask) { @@ -921,7 +1034,7 @@ public final Operation updateRegionBackendService( .setBackendServiceResource(backendServiceResource) .addAllFieldMask(fieldMask) .build(); - return updateRegionBackendService(request); + return updateRegionBackendServiceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -937,7 +1050,7 @@ public final Operation updateRegionBackendService( * ProjectRegionBackendServiceName backendService = ProjectRegionBackendServiceName.of("[PROJECT]", "[REGION]", "[BACKEND_SERVICE]"); * BackendService backendServiceResource = BackendService.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = regionBackendServiceClient.updateRegionBackendService(backendService.toString(), backendServiceResource, fieldMask); + * regionBackendServiceClient.updateRegionBackendServiceAsync(backendService.toString(), backendServiceResource, fieldMask).get(); * } * * @@ -951,8 +1064,9 @@ public final Operation updateRegionBackendService( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation updateRegionBackendService( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateRegionBackendServiceAsync( String backendService, BackendService backendServiceResource, List fieldMask) { UpdateRegionBackendServiceHttpRequest request = @@ -961,7 +1075,7 @@ public final Operation updateRegionBackendService( .setBackendServiceResource(backendServiceResource) .addAllFieldMask(fieldMask) .build(); - return updateRegionBackendService(request); + return updateRegionBackendServiceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -982,16 +1096,48 @@ public final Operation updateRegionBackendService( * .setBackendServiceResource(backendServiceResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = regionBackendServiceClient.updateRegionBackendService(request); + * regionBackendServiceClient.updateRegionBackendServiceAsync(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 */ - @BetaApi - public final Operation updateRegionBackendService(UpdateRegionBackendServiceHttpRequest request) { - return updateRegionBackendServiceCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateRegionBackendServiceAsync( + UpdateRegionBackendServiceHttpRequest request) { + return updateRegionBackendServiceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Updates the specified regional BackendService resource with the data included in the request. + * There are several restrictions and guidelines to keep in mind when updating a backend service. + * Read Restrictions and Guidelines for more information. + * + *

Sample code: + * + *


+   * try (RegionBackendServiceClient regionBackendServiceClient = RegionBackendServiceClient.create()) {
+   *   ProjectRegionBackendServiceName backendService = ProjectRegionBackendServiceName.of("[PROJECT]", "[REGION]", "[BACKEND_SERVICE]");
+   *   BackendService backendServiceResource = BackendService.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   UpdateRegionBackendServiceHttpRequest request = UpdateRegionBackendServiceHttpRequest.newBuilder()
+   *     .setBackendService(backendService.toString())
+   *     .setBackendServiceResource(backendServiceResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = regionBackendServiceClient.updateRegionBackendServiceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + updateRegionBackendServiceOperationCallable() { + return stub.updateRegionBackendServiceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1014,7 +1160,7 @@ public final Operation updateRegionBackendService(UpdateRegionBackendServiceHttp * .build(); * ApiFuture<Operation> future = regionBackendServiceClient.updateRegionBackendServiceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionBackendServiceSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionBackendServiceSettings.java index 6b8b863f8cb0..21a48e1c52f8 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionBackendServiceSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionBackendServiceSettings.java @@ -21,10 +21,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -48,13 +50,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteRegionBackendService to 30 seconds: + * example, to set the total timeout of getRegionBackendService to 30 seconds: * *

  * 
  * RegionBackendServiceSettings.Builder regionBackendServiceSettingsBuilder =
  *     RegionBackendServiceSettings.newBuilder();
- * regionBackendServiceSettingsBuilder.deleteRegionBackendServiceSettings().getRetrySettings().toBuilder()
+ * regionBackendServiceSettingsBuilder.getRegionBackendServiceSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * RegionBackendServiceSettings regionBackendServiceSettings = regionBackendServiceSettingsBuilder.build();
  * 
@@ -70,6 +72,15 @@ public class RegionBackendServiceSettings extends ClientSettings
+      deleteRegionBackendServiceOperationSettings() {
+    return ((RegionBackendServiceStubSettings) getStubSettings())
+        .deleteRegionBackendServiceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getRegionBackendService. */
   public UnaryCallSettings
       getRegionBackendServiceSettings() {
@@ -90,6 +101,15 @@ public class RegionBackendServiceSettings extends ClientSettings
+      insertRegionBackendServiceOperationSettings() {
+    return ((RegionBackendServiceStubSettings) getStubSettings())
+        .insertRegionBackendServiceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listRegionBackendServices. */
   public PagedCallSettings<
           ListRegionBackendServicesHttpRequest,
@@ -107,6 +127,15 @@ public class RegionBackendServiceSettings extends ClientSettings
+      patchRegionBackendServiceOperationSettings() {
+    return ((RegionBackendServiceStubSettings) getStubSettings())
+        .patchRegionBackendServiceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to updateRegionBackendService. */
   public UnaryCallSettings
       updateRegionBackendServiceSettings() {
@@ -114,6 +143,15 @@ public class RegionBackendServiceSettings extends ClientSettings
+      updateRegionBackendServiceOperationSettings() {
+    return ((RegionBackendServiceStubSettings) getStubSettings())
+        .updateRegionBackendServiceOperationSettings();
+  }
+
   public static final RegionBackendServiceSettings create(RegionBackendServiceStubSettings stub)
       throws IOException {
     return new RegionBackendServiceSettings.Builder(stub.toBuilder()).build();
@@ -223,6 +261,15 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteRegionBackendServiceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteRegionBackendService. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            DeleteRegionBackendServiceHttpRequest, EmptyMessage, Operation>
+        deleteRegionBackendServiceOperationSettings() {
+      return getStubSettingsBuilder().deleteRegionBackendServiceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getRegionBackendService. */
     public UnaryCallSettings.Builder
         getRegionBackendServiceSettings() {
@@ -242,6 +289,15 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().insertRegionBackendServiceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertRegionBackendService. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            InsertRegionBackendServiceHttpRequest, EmptyMessage, Operation>
+        insertRegionBackendServiceOperationSettings() {
+      return getStubSettingsBuilder().insertRegionBackendServiceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listRegionBackendServices. */
     public PagedCallSettings.Builder<
             ListRegionBackendServicesHttpRequest,
@@ -257,12 +313,30 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().patchRegionBackendServiceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to patchRegionBackendService. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            PatchRegionBackendServiceHttpRequest, EmptyMessage, Operation>
+        patchRegionBackendServiceOperationSettings() {
+      return getStubSettingsBuilder().patchRegionBackendServiceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to updateRegionBackendService. */
     public UnaryCallSettings.Builder
         updateRegionBackendServiceSettings() {
       return getStubSettingsBuilder().updateRegionBackendServiceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to updateRegionBackendService. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            UpdateRegionBackendServiceHttpRequest, EmptyMessage, Operation>
+        updateRegionBackendServiceOperationSettings() {
+      return getStubSettingsBuilder().updateRegionBackendServiceOperationSettings();
+    }
+
     @Override
     public RegionBackendServiceSettings build() throws IOException {
       return new RegionBackendServiceSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionCommitmentClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionCommitmentClient.java
index f9f4b82b5493..2b51624c9beb 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionCommitmentClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionCommitmentClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.RegionCommitmentStub;
@@ -104,6 +107,7 @@
 public class RegionCommitmentClient implements BackgroundResource {
   private final RegionCommitmentSettings settings;
   private final RegionCommitmentStub stub;
+  private final RegionOperationClient operationsClient;
 
   /** Constructs an instance of RegionCommitmentClient with default settings. */
   public static final RegionCommitmentClient create() throws IOException {
@@ -136,12 +140,14 @@ public static final RegionCommitmentClient create(RegionCommitmentStub stub) {
   protected RegionCommitmentClient(RegionCommitmentSettings settings) throws IOException {
     this.settings = settings;
     this.stub = ((RegionCommitmentStubSettings) settings.getStubSettings()).createStub();
+    this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub());
   }
 
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   protected RegionCommitmentClient(RegionCommitmentStub stub) {
     this.settings = null;
     this.stub = stub;
+    this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub());
   }
 
   public final RegionCommitmentSettings getSettings() {
@@ -153,6 +159,16 @@ public RegionCommitmentStub getStub() {
     return stub;
   }
 
+  /**
+   * Returns the RegionOperationClient that can be used to query the status of a long-running
+   * operation returned by another API method call.
+   */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public final RegionOperationClient getOperationsClient() {
+    return operationsClient;
+  }
+
   // AUTO-GENERATED DOCUMENTATION AND METHOD
   /**
    * Retrieves an aggregated list of commitments.
@@ -406,7 +422,7 @@ public final Commitment getRegionCommitment(GetRegionCommitmentHttpRequest reque
    * try (RegionCommitmentClient regionCommitmentClient = RegionCommitmentClient.create()) {
    *   ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
    *   Commitment commitmentResource = Commitment.newBuilder().build();
-   *   Operation response = regionCommitmentClient.insertRegionCommitment(region, commitmentResource);
+   *   regionCommitmentClient.insertRegionCommitmentAsync(region, commitmentResource).get();
    * }
    * 
* @@ -421,8 +437,9 @@ public final Commitment getRegionCommitment(GetRegionCommitmentHttpRequest reque * resource_for beta.commitments ==) (== resource_for v1.commitments ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertRegionCommitment( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertRegionCommitmentAsync( ProjectRegionName region, Commitment commitmentResource) { InsertRegionCommitmentHttpRequest request = @@ -430,7 +447,7 @@ public final Operation insertRegionCommitment( .setRegion(region == null ? null : region.toString()) .setCommitmentResource(commitmentResource) .build(); - return insertRegionCommitment(request); + return insertRegionCommitmentAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -443,7 +460,7 @@ public final Operation insertRegionCommitment( * try (RegionCommitmentClient regionCommitmentClient = RegionCommitmentClient.create()) { * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * Commitment commitmentResource = Commitment.newBuilder().build(); - * Operation response = regionCommitmentClient.insertRegionCommitment(region.toString(), commitmentResource); + * regionCommitmentClient.insertRegionCommitmentAsync(region.toString(), commitmentResource).get(); * } * * @@ -458,15 +475,17 @@ public final Operation insertRegionCommitment( * resource_for beta.commitments ==) (== resource_for v1.commitments ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertRegionCommitment(String region, Commitment commitmentResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertRegionCommitmentAsync( + String region, Commitment commitmentResource) { InsertRegionCommitmentHttpRequest request = InsertRegionCommitmentHttpRequest.newBuilder() .setRegion(region) .setCommitmentResource(commitmentResource) .build(); - return insertRegionCommitment(request); + return insertRegionCommitmentAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -483,16 +502,44 @@ public final Operation insertRegionCommitment(String region, Commitment commitme * .setRegion(region.toString()) * .setCommitmentResource(commitmentResource) * .build(); - * Operation response = regionCommitmentClient.insertRegionCommitment(request); + * regionCommitmentClient.insertRegionCommitmentAsync(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 */ - @BetaApi - public final Operation insertRegionCommitment(InsertRegionCommitmentHttpRequest request) { - return insertRegionCommitmentCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertRegionCommitmentAsync( + InsertRegionCommitmentHttpRequest request) { + return insertRegionCommitmentOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a commitment in the specified project using the data included in the request. + * + *

Sample code: + * + *


+   * try (RegionCommitmentClient regionCommitmentClient = RegionCommitmentClient.create()) {
+   *   ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
+   *   Commitment commitmentResource = Commitment.newBuilder().build();
+   *   InsertRegionCommitmentHttpRequest request = InsertRegionCommitmentHttpRequest.newBuilder()
+   *     .setRegion(region.toString())
+   *     .setCommitmentResource(commitmentResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = regionCommitmentClient.insertRegionCommitmentOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertRegionCommitmentOperationCallable() { + return stub.insertRegionCommitmentOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -511,7 +558,7 @@ public final Operation insertRegionCommitment(InsertRegionCommitmentHttpRequest * .build(); * ApiFuture<Operation> future = regionCommitmentClient.insertRegionCommitmentCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionCommitmentSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionCommitmentSettings.java index be9082fe4447..5032e969d5cf 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionCommitmentSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionCommitmentSettings.java @@ -22,10 +22,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -86,6 +88,15 @@ public class RegionCommitmentSettings extends ClientSettings + insertRegionCommitmentOperationSettings() { + return ((RegionCommitmentStubSettings) getStubSettings()) + .insertRegionCommitmentOperationSettings(); + } + /** Returns the object with the settings used for calls to listRegionCommitments. */ public PagedCallSettings< ListRegionCommitmentsHttpRequest, CommitmentList, ListRegionCommitmentsPagedResponse> @@ -216,6 +227,14 @@ public Builder applyToAllUnaryMethods( return getStubSettingsBuilder().insertRegionCommitmentSettings(); } + /** Returns the builder for the settings used for calls to insertRegionCommitment. */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public OperationCallSettings.Builder + insertRegionCommitmentOperationSettings() { + return getStubSettingsBuilder().insertRegionCommitmentOperationSettings(); + } + /** Returns the builder for the settings used for calls to listRegionCommitments. */ public PagedCallSettings.Builder< ListRegionCommitmentsHttpRequest, CommitmentList, ListRegionCommitmentsPagedResponse> diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionDiskClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionDiskClient.java index 77c210bf1a6c..832d477dc4c8 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionDiskClient.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionDiskClient.java @@ -20,9 +20,12 @@ import com.google.api.core.ApiFutures; import com.google.api.core.BetaApi; import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.httpjson.EmptyMessage; +import com.google.api.gax.longrunning.OperationFuture; import com.google.api.gax.paging.AbstractFixedSizeCollection; import com.google.api.gax.paging.AbstractPage; import com.google.api.gax.paging.AbstractPagedListResponse; +import com.google.api.gax.rpc.OperationCallable; import com.google.api.gax.rpc.PageContext; import com.google.api.gax.rpc.UnaryCallable; import com.google.cloud.compute.v1.stub.RegionDiskStub; @@ -43,8 +46,7 @@ * * try (RegionDiskClient regionDiskClient = RegionDiskClient.create()) { * ProjectRegionDiskName disk = ProjectRegionDiskName.of("[PROJECT]", "[REGION]", "[DISK]"); - * Snapshot snapshotResource = Snapshot.newBuilder().build(); - * Operation response = regionDiskClient.createSnapshotRegionDisk(disk, snapshotResource); + * Disk response = regionDiskClient.getRegionDisk(disk); * } * * @@ -104,6 +106,7 @@ public class RegionDiskClient implements BackgroundResource { private final RegionDiskSettings settings; private final RegionDiskStub stub; + private final RegionOperationClient operationsClient; /** Constructs an instance of RegionDiskClient with default settings. */ public static final RegionDiskClient create() throws IOException { @@ -134,12 +137,14 @@ public static final RegionDiskClient create(RegionDiskStub stub) { protected RegionDiskClient(RegionDiskSettings settings) throws IOException { this.settings = settings; this.stub = ((RegionDiskStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected RegionDiskClient(RegionDiskStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub()); } public final RegionDiskSettings getSettings() { @@ -151,6 +156,16 @@ public RegionDiskStub getStub() { return stub; } + /** + * Returns the RegionOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final RegionOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Creates a snapshot of this regional disk. @@ -161,7 +176,7 @@ public RegionDiskStub getStub() { * try (RegionDiskClient regionDiskClient = RegionDiskClient.create()) { * ProjectRegionDiskName disk = ProjectRegionDiskName.of("[PROJECT]", "[REGION]", "[DISK]"); * Snapshot snapshotResource = Snapshot.newBuilder().build(); - * Operation response = regionDiskClient.createSnapshotRegionDisk(disk, snapshotResource); + * regionDiskClient.createSnapshotRegionDiskAsync(disk, snapshotResource).get(); * } * * @@ -170,8 +185,9 @@ public RegionDiskStub getStub() { * ==) (== resource_for v1.snapshots ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation createSnapshotRegionDisk( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture createSnapshotRegionDiskAsync( ProjectRegionDiskName disk, Snapshot snapshotResource) { CreateSnapshotRegionDiskHttpRequest request = @@ -179,7 +195,7 @@ public final Operation createSnapshotRegionDisk( .setDisk(disk == null ? null : disk.toString()) .setSnapshotResource(snapshotResource) .build(); - return createSnapshotRegionDisk(request); + return createSnapshotRegionDiskAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -192,7 +208,7 @@ public final Operation createSnapshotRegionDisk( * try (RegionDiskClient regionDiskClient = RegionDiskClient.create()) { * ProjectRegionDiskName disk = ProjectRegionDiskName.of("[PROJECT]", "[REGION]", "[DISK]"); * Snapshot snapshotResource = Snapshot.newBuilder().build(); - * Operation response = regionDiskClient.createSnapshotRegionDisk(disk.toString(), snapshotResource); + * regionDiskClient.createSnapshotRegionDiskAsync(disk.toString(), snapshotResource).get(); * } * * @@ -201,15 +217,17 @@ public final Operation createSnapshotRegionDisk( * ==) (== resource_for v1.snapshots ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation createSnapshotRegionDisk(String disk, Snapshot snapshotResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture createSnapshotRegionDiskAsync( + String disk, Snapshot snapshotResource) { CreateSnapshotRegionDiskHttpRequest request = CreateSnapshotRegionDiskHttpRequest.newBuilder() .setDisk(disk) .setSnapshotResource(snapshotResource) .build(); - return createSnapshotRegionDisk(request); + return createSnapshotRegionDiskAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -226,16 +244,44 @@ public final Operation createSnapshotRegionDisk(String disk, Snapshot snapshotRe * .setDisk(disk.toString()) * .setSnapshotResource(snapshotResource) * .build(); - * Operation response = regionDiskClient.createSnapshotRegionDisk(request); + * regionDiskClient.createSnapshotRegionDiskAsync(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 */ - @BetaApi - public final Operation createSnapshotRegionDisk(CreateSnapshotRegionDiskHttpRequest request) { - return createSnapshotRegionDiskCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture createSnapshotRegionDiskAsync( + CreateSnapshotRegionDiskHttpRequest request) { + return createSnapshotRegionDiskOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a snapshot of this regional disk. + * + *

Sample code: + * + *


+   * try (RegionDiskClient regionDiskClient = RegionDiskClient.create()) {
+   *   ProjectRegionDiskName disk = ProjectRegionDiskName.of("[PROJECT]", "[REGION]", "[DISK]");
+   *   Snapshot snapshotResource = Snapshot.newBuilder().build();
+   *   CreateSnapshotRegionDiskHttpRequest request = CreateSnapshotRegionDiskHttpRequest.newBuilder()
+   *     .setDisk(disk.toString())
+   *     .setSnapshotResource(snapshotResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = regionDiskClient.createSnapshotRegionDiskOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + createSnapshotRegionDiskOperationCallable() { + return stub.createSnapshotRegionDiskOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -254,7 +300,7 @@ public final Operation createSnapshotRegionDisk(CreateSnapshotRegionDiskHttpRequ * .build(); * ApiFuture<Operation> future = regionDiskClient.createSnapshotRegionDiskCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -275,21 +321,23 @@ public final Operation createSnapshotRegionDisk(CreateSnapshotRegionDiskHttpRequ *

    * try (RegionDiskClient regionDiskClient = RegionDiskClient.create()) {
    *   ProjectRegionDiskName disk = ProjectRegionDiskName.of("[PROJECT]", "[REGION]", "[DISK]");
-   *   Operation response = regionDiskClient.deleteRegionDisk(disk);
+   *   regionDiskClient.deleteRegionDiskAsync(disk).get();
    * }
    * 
* * @param disk Name of the regional persistent disk to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteRegionDisk(ProjectRegionDiskName disk) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteRegionDiskAsync( + ProjectRegionDiskName disk) { DeleteRegionDiskHttpRequest request = DeleteRegionDiskHttpRequest.newBuilder() .setDisk(disk == null ? null : disk.toString()) .build(); - return deleteRegionDisk(request); + return deleteRegionDiskAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -303,19 +351,20 @@ public final Operation deleteRegionDisk(ProjectRegionDiskName disk) { *

    * try (RegionDiskClient regionDiskClient = RegionDiskClient.create()) {
    *   ProjectRegionDiskName disk = ProjectRegionDiskName.of("[PROJECT]", "[REGION]", "[DISK]");
-   *   Operation response = regionDiskClient.deleteRegionDisk(disk.toString());
+   *   regionDiskClient.deleteRegionDiskAsync(disk.toString()).get();
    * }
    * 
* * @param disk Name of the regional persistent disk to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteRegionDisk(String disk) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteRegionDiskAsync(String disk) { DeleteRegionDiskHttpRequest request = DeleteRegionDiskHttpRequest.newBuilder().setDisk(disk).build(); - return deleteRegionDisk(request); + return deleteRegionDiskAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -332,16 +381,44 @@ public final Operation deleteRegionDisk(String disk) { * DeleteRegionDiskHttpRequest request = DeleteRegionDiskHttpRequest.newBuilder() * .setDisk(disk.toString()) * .build(); - * Operation response = regionDiskClient.deleteRegionDisk(request); + * regionDiskClient.deleteRegionDiskAsync(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 */ - @BetaApi - public final Operation deleteRegionDisk(DeleteRegionDiskHttpRequest request) { - return deleteRegionDiskCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteRegionDiskAsync( + DeleteRegionDiskHttpRequest request) { + return deleteRegionDiskOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified regional persistent disk. Deleting a regional disk removes all the + * replicas of its data permanently and is irreversible. However, deleting a disk does not delete + * any snapshots previously made from the disk. You must separately delete snapshots. + * + *

Sample code: + * + *


+   * try (RegionDiskClient regionDiskClient = RegionDiskClient.create()) {
+   *   ProjectRegionDiskName disk = ProjectRegionDiskName.of("[PROJECT]", "[REGION]", "[DISK]");
+   *   DeleteRegionDiskHttpRequest request = DeleteRegionDiskHttpRequest.newBuilder()
+   *     .setDisk(disk.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = regionDiskClient.deleteRegionDiskOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteRegionDiskOperationCallable() { + return stub.deleteRegionDiskOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -360,7 +437,7 @@ public final Operation deleteRegionDisk(DeleteRegionDiskHttpRequest request) { * .build(); * ApiFuture<Operation> future = regionDiskClient.deleteRegionDiskCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -476,7 +553,7 @@ public final UnaryCallable getRegionDiskCallable * try (RegionDiskClient regionDiskClient = RegionDiskClient.create()) { * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * Disk diskResource = Disk.newBuilder().build(); - * Operation response = regionDiskClient.insertRegionDisk(region, diskResource); + * regionDiskClient.insertRegionDiskAsync(region, diskResource).get(); * } * * @@ -485,15 +562,17 @@ public final UnaryCallable getRegionDiskCallable * ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertRegionDisk(ProjectRegionName region, Disk diskResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertRegionDiskAsync( + ProjectRegionName region, Disk diskResource) { InsertRegionDiskHttpRequest request = InsertRegionDiskHttpRequest.newBuilder() .setRegion(region == null ? null : region.toString()) .setDiskResource(diskResource) .build(); - return insertRegionDisk(request); + return insertRegionDiskAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -507,7 +586,7 @@ public final Operation insertRegionDisk(ProjectRegionName region, Disk diskResou * try (RegionDiskClient regionDiskClient = RegionDiskClient.create()) { * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * Disk diskResource = Disk.newBuilder().build(); - * Operation response = regionDiskClient.insertRegionDisk(region.toString(), diskResource); + * regionDiskClient.insertRegionDiskAsync(region.toString(), diskResource).get(); * } * * @@ -516,15 +595,17 @@ public final Operation insertRegionDisk(ProjectRegionName region, Disk diskResou * ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertRegionDisk(String region, Disk diskResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertRegionDiskAsync( + String region, Disk diskResource) { InsertRegionDiskHttpRequest request = InsertRegionDiskHttpRequest.newBuilder() .setRegion(region) .setDiskResource(diskResource) .build(); - return insertRegionDisk(request); + return insertRegionDiskAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -542,16 +623,45 @@ public final Operation insertRegionDisk(String region, Disk diskResource) { * .setRegion(region.toString()) * .setDiskResource(diskResource) * .build(); - * Operation response = regionDiskClient.insertRegionDisk(request); + * regionDiskClient.insertRegionDiskAsync(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 */ - @BetaApi - public final Operation insertRegionDisk(InsertRegionDiskHttpRequest request) { - return insertRegionDiskCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertRegionDiskAsync( + InsertRegionDiskHttpRequest request) { + return insertRegionDiskOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a persistent regional disk in the specified project using the data included in the + * request. + * + *

Sample code: + * + *


+   * try (RegionDiskClient regionDiskClient = RegionDiskClient.create()) {
+   *   ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
+   *   Disk diskResource = Disk.newBuilder().build();
+   *   InsertRegionDiskHttpRequest request = InsertRegionDiskHttpRequest.newBuilder()
+   *     .setRegion(region.toString())
+   *     .setDiskResource(diskResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = regionDiskClient.insertRegionDiskOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertRegionDiskOperationCallable() { + return stub.insertRegionDiskOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -571,7 +681,7 @@ public final Operation insertRegionDisk(InsertRegionDiskHttpRequest request) { * .build(); * ApiFuture<Operation> future = regionDiskClient.insertRegionDiskCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -726,7 +836,7 @@ public final UnaryCallable listRegionDisks * try (RegionDiskClient regionDiskClient = RegionDiskClient.create()) { * ProjectRegionDiskName disk = ProjectRegionDiskName.of("[PROJECT]", "[REGION]", "[DISK]"); * RegionDisksResizeRequest regionDisksResizeRequestResource = RegionDisksResizeRequest.newBuilder().build(); - * Operation response = regionDiskClient.resizeRegionDisk(disk, regionDisksResizeRequestResource); + * regionDiskClient.resizeRegionDiskAsync(disk, regionDisksResizeRequestResource).get(); * } * * @@ -734,8 +844,9 @@ public final UnaryCallable listRegionDisks * @param regionDisksResizeRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation resizeRegionDisk( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture resizeRegionDiskAsync( ProjectRegionDiskName disk, RegionDisksResizeRequest regionDisksResizeRequestResource) { ResizeRegionDiskHttpRequest request = @@ -743,7 +854,7 @@ public final Operation resizeRegionDisk( .setDisk(disk == null ? null : disk.toString()) .setRegionDisksResizeRequestResource(regionDisksResizeRequestResource) .build(); - return resizeRegionDisk(request); + return resizeRegionDiskAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -756,7 +867,7 @@ public final Operation resizeRegionDisk( * try (RegionDiskClient regionDiskClient = RegionDiskClient.create()) { * ProjectRegionDiskName disk = ProjectRegionDiskName.of("[PROJECT]", "[REGION]", "[DISK]"); * RegionDisksResizeRequest regionDisksResizeRequestResource = RegionDisksResizeRequest.newBuilder().build(); - * Operation response = regionDiskClient.resizeRegionDisk(disk.toString(), regionDisksResizeRequestResource); + * regionDiskClient.resizeRegionDiskAsync(disk.toString(), regionDisksResizeRequestResource).get(); * } * * @@ -764,8 +875,9 @@ public final Operation resizeRegionDisk( * @param regionDisksResizeRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation resizeRegionDisk( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture resizeRegionDiskAsync( String disk, RegionDisksResizeRequest regionDisksResizeRequestResource) { ResizeRegionDiskHttpRequest request = @@ -773,7 +885,7 @@ public final Operation resizeRegionDisk( .setDisk(disk) .setRegionDisksResizeRequestResource(regionDisksResizeRequestResource) .build(); - return resizeRegionDisk(request); + return resizeRegionDiskAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -790,16 +902,44 @@ public final Operation resizeRegionDisk( * .setDisk(disk.toString()) * .setRegionDisksResizeRequestResource(regionDisksResizeRequestResource) * .build(); - * Operation response = regionDiskClient.resizeRegionDisk(request); + * regionDiskClient.resizeRegionDiskAsync(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 */ - @BetaApi - public final Operation resizeRegionDisk(ResizeRegionDiskHttpRequest request) { - return resizeRegionDiskCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture resizeRegionDiskAsync( + ResizeRegionDiskHttpRequest request) { + return resizeRegionDiskOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Resizes the specified regional persistent disk. + * + *

Sample code: + * + *


+   * try (RegionDiskClient regionDiskClient = RegionDiskClient.create()) {
+   *   ProjectRegionDiskName disk = ProjectRegionDiskName.of("[PROJECT]", "[REGION]", "[DISK]");
+   *   RegionDisksResizeRequest regionDisksResizeRequestResource = RegionDisksResizeRequest.newBuilder().build();
+   *   ResizeRegionDiskHttpRequest request = ResizeRegionDiskHttpRequest.newBuilder()
+   *     .setDisk(disk.toString())
+   *     .setRegionDisksResizeRequestResource(regionDisksResizeRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = regionDiskClient.resizeRegionDiskOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + resizeRegionDiskOperationCallable() { + return stub.resizeRegionDiskOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -818,7 +958,7 @@ public final Operation resizeRegionDisk(ResizeRegionDiskHttpRequest request) { * .build(); * ApiFuture<Operation> future = regionDiskClient.resizeRegionDiskCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -837,7 +977,7 @@ public final UnaryCallable resizeRegionD * try (RegionDiskClient regionDiskClient = RegionDiskClient.create()) { * ProjectRegionDiskResourceName resource = ProjectRegionDiskResourceName.of("[PROJECT]", "[REGION]", "[RESOURCE]"); * RegionSetLabelsRequest regionSetLabelsRequestResource = RegionSetLabelsRequest.newBuilder().build(); - * Operation response = regionDiskClient.setLabelsRegionDisk(resource, regionSetLabelsRequestResource); + * regionDiskClient.setLabelsRegionDiskAsync(resource, regionSetLabelsRequestResource).get(); * } * * @@ -845,8 +985,9 @@ public final UnaryCallable resizeRegionD * @param regionSetLabelsRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setLabelsRegionDisk( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setLabelsRegionDiskAsync( ProjectRegionDiskResourceName resource, RegionSetLabelsRequest regionSetLabelsRequestResource) { @@ -855,7 +996,7 @@ public final Operation setLabelsRegionDisk( .setResource(resource == null ? null : resource.toString()) .setRegionSetLabelsRequestResource(regionSetLabelsRequestResource) .build(); - return setLabelsRegionDisk(request); + return setLabelsRegionDiskAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -868,7 +1009,7 @@ public final Operation setLabelsRegionDisk( * try (RegionDiskClient regionDiskClient = RegionDiskClient.create()) { * ProjectRegionDiskResourceName resource = ProjectRegionDiskResourceName.of("[PROJECT]", "[REGION]", "[RESOURCE]"); * RegionSetLabelsRequest regionSetLabelsRequestResource = RegionSetLabelsRequest.newBuilder().build(); - * Operation response = regionDiskClient.setLabelsRegionDisk(resource.toString(), regionSetLabelsRequestResource); + * regionDiskClient.setLabelsRegionDiskAsync(resource.toString(), regionSetLabelsRequestResource).get(); * } * * @@ -876,8 +1017,9 @@ public final Operation setLabelsRegionDisk( * @param regionSetLabelsRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setLabelsRegionDisk( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setLabelsRegionDiskAsync( String resource, RegionSetLabelsRequest regionSetLabelsRequestResource) { SetLabelsRegionDiskHttpRequest request = @@ -885,7 +1027,7 @@ public final Operation setLabelsRegionDisk( .setResource(resource) .setRegionSetLabelsRequestResource(regionSetLabelsRequestResource) .build(); - return setLabelsRegionDisk(request); + return setLabelsRegionDiskAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -902,16 +1044,44 @@ public final Operation setLabelsRegionDisk( * .setResource(resource.toString()) * .setRegionSetLabelsRequestResource(regionSetLabelsRequestResource) * .build(); - * Operation response = regionDiskClient.setLabelsRegionDisk(request); + * regionDiskClient.setLabelsRegionDiskAsync(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 */ - @BetaApi - public final Operation setLabelsRegionDisk(SetLabelsRegionDiskHttpRequest request) { - return setLabelsRegionDiskCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setLabelsRegionDiskAsync( + SetLabelsRegionDiskHttpRequest request) { + return setLabelsRegionDiskOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Sets the labels on the target regional disk. + * + *

Sample code: + * + *


+   * try (RegionDiskClient regionDiskClient = RegionDiskClient.create()) {
+   *   ProjectRegionDiskResourceName resource = ProjectRegionDiskResourceName.of("[PROJECT]", "[REGION]", "[RESOURCE]");
+   *   RegionSetLabelsRequest regionSetLabelsRequestResource = RegionSetLabelsRequest.newBuilder().build();
+   *   SetLabelsRegionDiskHttpRequest request = SetLabelsRegionDiskHttpRequest.newBuilder()
+   *     .setResource(resource.toString())
+   *     .setRegionSetLabelsRequestResource(regionSetLabelsRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = regionDiskClient.setLabelsRegionDiskOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + setLabelsRegionDiskOperationCallable() { + return stub.setLabelsRegionDiskOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -930,7 +1100,7 @@ public final Operation setLabelsRegionDisk(SetLabelsRegionDiskHttpRequest reques * .build(); * ApiFuture<Operation> future = regionDiskClient.setLabelsRegionDiskCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionDiskSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionDiskSettings.java index 6f74feade14c..31cee267fbbf 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionDiskSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionDiskSettings.java @@ -21,10 +21,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -48,13 +50,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of createSnapshotRegionDisk to 30 seconds: + * example, to set the total timeout of getRegionDisk to 30 seconds: * *

  * 
  * RegionDiskSettings.Builder regionDiskSettingsBuilder =
  *     RegionDiskSettings.newBuilder();
- * regionDiskSettingsBuilder.createSnapshotRegionDiskSettings().getRetrySettings().toBuilder()
+ * regionDiskSettingsBuilder.getRegionDiskSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * RegionDiskSettings regionDiskSettings = regionDiskSettingsBuilder.build();
  * 
@@ -69,11 +71,27 @@ public class RegionDiskSettings extends ClientSettings {
     return ((RegionDiskStubSettings) getStubSettings()).createSnapshotRegionDiskSettings();
   }
 
+  /** Returns the object with the settings used for calls to createSnapshotRegionDisk. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      createSnapshotRegionDiskOperationSettings() {
+    return ((RegionDiskStubSettings) getStubSettings()).createSnapshotRegionDiskOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to deleteRegionDisk. */
   public UnaryCallSettings deleteRegionDiskSettings() {
     return ((RegionDiskStubSettings) getStubSettings()).deleteRegionDiskSettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteRegionDisk. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteRegionDiskOperationSettings() {
+    return ((RegionDiskStubSettings) getStubSettings()).deleteRegionDiskOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getRegionDisk. */
   public UnaryCallSettings getRegionDiskSettings() {
     return ((RegionDiskStubSettings) getStubSettings()).getRegionDiskSettings();
@@ -84,6 +102,14 @@ public UnaryCallSettings insertRegionDis
     return ((RegionDiskStubSettings) getStubSettings()).insertRegionDiskSettings();
   }
 
+  /** Returns the object with the settings used for calls to insertRegionDisk. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertRegionDiskOperationSettings() {
+    return ((RegionDiskStubSettings) getStubSettings()).insertRegionDiskOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listRegionDisks. */
   public PagedCallSettings
       listRegionDisksSettings() {
@@ -95,12 +121,28 @@ public UnaryCallSettings resizeRegionDis
     return ((RegionDiskStubSettings) getStubSettings()).resizeRegionDiskSettings();
   }
 
+  /** Returns the object with the settings used for calls to resizeRegionDisk. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      resizeRegionDiskOperationSettings() {
+    return ((RegionDiskStubSettings) getStubSettings()).resizeRegionDiskOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to setLabelsRegionDisk. */
   public UnaryCallSettings
       setLabelsRegionDiskSettings() {
     return ((RegionDiskStubSettings) getStubSettings()).setLabelsRegionDiskSettings();
   }
 
+  /** Returns the object with the settings used for calls to setLabelsRegionDisk. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setLabelsRegionDiskOperationSettings() {
+    return ((RegionDiskStubSettings) getStubSettings()).setLabelsRegionDiskOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to testIamPermissionsRegionDisk. */
   public UnaryCallSettings
       testIamPermissionsRegionDiskSettings() {
@@ -214,12 +256,29 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().createSnapshotRegionDiskSettings();
     }
 
+    /** Returns the builder for the settings used for calls to createSnapshotRegionDisk. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            CreateSnapshotRegionDiskHttpRequest, EmptyMessage, Operation>
+        createSnapshotRegionDiskOperationSettings() {
+      return getStubSettingsBuilder().createSnapshotRegionDiskOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to deleteRegionDisk. */
     public UnaryCallSettings.Builder
         deleteRegionDiskSettings() {
       return getStubSettingsBuilder().deleteRegionDiskSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteRegionDisk. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteRegionDiskOperationSettings() {
+      return getStubSettingsBuilder().deleteRegionDiskOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getRegionDisk. */
     public UnaryCallSettings.Builder getRegionDiskSettings() {
       return getStubSettingsBuilder().getRegionDiskSettings();
@@ -231,6 +290,14 @@ public UnaryCallSettings.Builder getRegionDiskSe
       return getStubSettingsBuilder().insertRegionDiskSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertRegionDisk. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertRegionDiskOperationSettings() {
+      return getStubSettingsBuilder().insertRegionDiskOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listRegionDisks. */
     public PagedCallSettings.Builder<
             ListRegionDisksHttpRequest, DiskList, ListRegionDisksPagedResponse>
@@ -244,12 +311,28 @@ public UnaryCallSettings.Builder getRegionDiskSe
       return getStubSettingsBuilder().resizeRegionDiskSettings();
     }
 
+    /** Returns the builder for the settings used for calls to resizeRegionDisk. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        resizeRegionDiskOperationSettings() {
+      return getStubSettingsBuilder().resizeRegionDiskOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to setLabelsRegionDisk. */
     public UnaryCallSettings.Builder
         setLabelsRegionDiskSettings() {
       return getStubSettingsBuilder().setLabelsRegionDiskSettings();
     }
 
+    /** Returns the builder for the settings used for calls to setLabelsRegionDisk. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        setLabelsRegionDiskOperationSettings() {
+      return getStubSettingsBuilder().setLabelsRegionDiskOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to testIamPermissionsRegionDisk. */
     public UnaryCallSettings.Builder<
             TestIamPermissionsRegionDiskHttpRequest, TestPermissionsResponse>
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionInstanceGroupClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionInstanceGroupClient.java
index 5c4e6526a97b..f511fcb232dd 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionInstanceGroupClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionInstanceGroupClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.RegionInstanceGroupStub;
@@ -104,6 +107,7 @@
 public class RegionInstanceGroupClient implements BackgroundResource {
   private final RegionInstanceGroupSettings settings;
   private final RegionInstanceGroupStub stub;
+  private final RegionOperationClient operationsClient;
 
   /** Constructs an instance of RegionInstanceGroupClient with default settings. */
   public static final RegionInstanceGroupClient create() throws IOException {
@@ -136,12 +140,14 @@ public static final RegionInstanceGroupClient create(RegionInstanceGroupStub stu
   protected RegionInstanceGroupClient(RegionInstanceGroupSettings settings) throws IOException {
     this.settings = settings;
     this.stub = ((RegionInstanceGroupStubSettings) settings.getStubSettings()).createStub();
+    this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub());
   }
 
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   protected RegionInstanceGroupClient(RegionInstanceGroupStub stub) {
     this.settings = null;
     this.stub = stub;
+    this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub());
   }
 
   public final RegionInstanceGroupSettings getSettings() {
@@ -153,6 +159,16 @@ public RegionInstanceGroupStub getStub() {
     return stub;
   }
 
+  /**
+   * Returns the RegionOperationClient that can be used to query the status of a long-running
+   * operation returned by another API method call.
+   */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public final RegionOperationClient getOperationsClient() {
+    return operationsClient;
+  }
+
   // AUTO-GENERATED DOCUMENTATION AND METHOD
   /**
    * Returns the specified instance group resource.
@@ -574,7 +590,7 @@ public final ListInstancesRegionInstanceGroupsPagedResponse listInstancesRegionI
    * try (RegionInstanceGroupClient regionInstanceGroupClient = RegionInstanceGroupClient.create()) {
    *   ProjectRegionInstanceGroupName instanceGroup = ProjectRegionInstanceGroupName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP]");
    *   RegionInstanceGroupsSetNamedPortsRequest regionInstanceGroupsSetNamedPortsRequestResource = RegionInstanceGroupsSetNamedPortsRequest.newBuilder().build();
-   *   Operation response = regionInstanceGroupClient.setNamedPortsRegionInstanceGroup(instanceGroup, regionInstanceGroupsSetNamedPortsRequestResource);
+   *   regionInstanceGroupClient.setNamedPortsRegionInstanceGroupAsync(instanceGroup, regionInstanceGroupsSetNamedPortsRequestResource).get();
    * }
    * 
* @@ -582,8 +598,9 @@ public final ListInstancesRegionInstanceGroupsPagedResponse listInstancesRegionI * @param regionInstanceGroupsSetNamedPortsRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setNamedPortsRegionInstanceGroup( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setNamedPortsRegionInstanceGroupAsync( ProjectRegionInstanceGroupName instanceGroup, RegionInstanceGroupsSetNamedPortsRequest regionInstanceGroupsSetNamedPortsRequestResource) { @@ -593,7 +610,7 @@ public final Operation setNamedPortsRegionInstanceGroup( .setRegionInstanceGroupsSetNamedPortsRequestResource( regionInstanceGroupsSetNamedPortsRequestResource) .build(); - return setNamedPortsRegionInstanceGroup(request); + return setNamedPortsRegionInstanceGroupAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -606,7 +623,7 @@ public final Operation setNamedPortsRegionInstanceGroup( * try (RegionInstanceGroupClient regionInstanceGroupClient = RegionInstanceGroupClient.create()) { * ProjectRegionInstanceGroupName instanceGroup = ProjectRegionInstanceGroupName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP]"); * RegionInstanceGroupsSetNamedPortsRequest regionInstanceGroupsSetNamedPortsRequestResource = RegionInstanceGroupsSetNamedPortsRequest.newBuilder().build(); - * Operation response = regionInstanceGroupClient.setNamedPortsRegionInstanceGroup(instanceGroup.toString(), regionInstanceGroupsSetNamedPortsRequestResource); + * regionInstanceGroupClient.setNamedPortsRegionInstanceGroupAsync(instanceGroup.toString(), regionInstanceGroupsSetNamedPortsRequestResource).get(); * } * * @@ -614,8 +631,9 @@ public final Operation setNamedPortsRegionInstanceGroup( * @param regionInstanceGroupsSetNamedPortsRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setNamedPortsRegionInstanceGroup( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setNamedPortsRegionInstanceGroupAsync( String instanceGroup, RegionInstanceGroupsSetNamedPortsRequest regionInstanceGroupsSetNamedPortsRequestResource) { @@ -625,7 +643,7 @@ public final Operation setNamedPortsRegionInstanceGroup( .setRegionInstanceGroupsSetNamedPortsRequestResource( regionInstanceGroupsSetNamedPortsRequestResource) .build(); - return setNamedPortsRegionInstanceGroup(request); + return setNamedPortsRegionInstanceGroupAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -642,17 +660,45 @@ public final Operation setNamedPortsRegionInstanceGroup( * .setInstanceGroup(instanceGroup.toString()) * .setRegionInstanceGroupsSetNamedPortsRequestResource(regionInstanceGroupsSetNamedPortsRequestResource) * .build(); - * Operation response = regionInstanceGroupClient.setNamedPortsRegionInstanceGroup(request); + * regionInstanceGroupClient.setNamedPortsRegionInstanceGroupAsync(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 */ - @BetaApi - public final Operation setNamedPortsRegionInstanceGroup( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setNamedPortsRegionInstanceGroupAsync( SetNamedPortsRegionInstanceGroupHttpRequest request) { - return setNamedPortsRegionInstanceGroupCallable().call(request); + return setNamedPortsRegionInstanceGroupOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Sets the named ports for the specified regional instance group. + * + *

Sample code: + * + *


+   * try (RegionInstanceGroupClient regionInstanceGroupClient = RegionInstanceGroupClient.create()) {
+   *   ProjectRegionInstanceGroupName instanceGroup = ProjectRegionInstanceGroupName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP]");
+   *   RegionInstanceGroupsSetNamedPortsRequest regionInstanceGroupsSetNamedPortsRequestResource = RegionInstanceGroupsSetNamedPortsRequest.newBuilder().build();
+   *   SetNamedPortsRegionInstanceGroupHttpRequest request = SetNamedPortsRegionInstanceGroupHttpRequest.newBuilder()
+   *     .setInstanceGroup(instanceGroup.toString())
+   *     .setRegionInstanceGroupsSetNamedPortsRequestResource(regionInstanceGroupsSetNamedPortsRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = regionInstanceGroupClient.setNamedPortsRegionInstanceGroupOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable< + SetNamedPortsRegionInstanceGroupHttpRequest, EmptyMessage, Operation> + setNamedPortsRegionInstanceGroupOperationCallable() { + return stub.setNamedPortsRegionInstanceGroupOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -671,7 +717,7 @@ public final Operation setNamedPortsRegionInstanceGroup( * .build(); * ApiFuture<Operation> future = regionInstanceGroupClient.setNamedPortsRegionInstanceGroupCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionInstanceGroupManagerClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionInstanceGroupManagerClient.java index 7f328294b74a..214982a2d09f 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionInstanceGroupManagerClient.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionInstanceGroupManagerClient.java @@ -20,9 +20,12 @@ import com.google.api.core.ApiFutures; import com.google.api.core.BetaApi; import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.httpjson.EmptyMessage; +import com.google.api.gax.longrunning.OperationFuture; import com.google.api.gax.paging.AbstractFixedSizeCollection; import com.google.api.gax.paging.AbstractPage; import com.google.api.gax.paging.AbstractPagedListResponse; +import com.google.api.gax.rpc.OperationCallable; import com.google.api.gax.rpc.PageContext; import com.google.api.gax.rpc.UnaryCallable; import com.google.cloud.compute.v1.stub.RegionInstanceGroupManagerStub; @@ -43,8 +46,7 @@ * * try (RegionInstanceGroupManagerClient regionInstanceGroupManagerClient = RegionInstanceGroupManagerClient.create()) { * ProjectRegionInstanceGroupManagerName instanceGroupManager = ProjectRegionInstanceGroupManagerName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]"); - * RegionInstanceGroupManagersAbandonInstancesRequest regionInstanceGroupManagersAbandonInstancesRequestResource = RegionInstanceGroupManagersAbandonInstancesRequest.newBuilder().build(); - * Operation response = regionInstanceGroupManagerClient.abandonInstancesRegionInstanceGroupManager(instanceGroupManager, regionInstanceGroupManagersAbandonInstancesRequestResource); + * InstanceGroupManager response = regionInstanceGroupManagerClient.getRegionInstanceGroupManager(instanceGroupManager); * } * * @@ -105,6 +107,7 @@ public class RegionInstanceGroupManagerClient implements BackgroundResource { private final RegionInstanceGroupManagerSettings settings; private final RegionInstanceGroupManagerStub stub; + private final RegionOperationClient operationsClient; /** Constructs an instance of RegionInstanceGroupManagerClient with default settings. */ public static final RegionInstanceGroupManagerClient create() throws IOException { @@ -139,12 +142,14 @@ protected RegionInstanceGroupManagerClient(RegionInstanceGroupManagerSettings se throws IOException { this.settings = settings; this.stub = ((RegionInstanceGroupManagerStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected RegionInstanceGroupManagerClient(RegionInstanceGroupManagerStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub()); } public final RegionInstanceGroupManagerSettings getSettings() { @@ -156,6 +161,16 @@ public RegionInstanceGroupManagerStub getStub() { return stub; } + /** + * Returns the RegionOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final RegionOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Flags the specified instances to be immediately removed from the managed instance group. @@ -178,7 +193,7 @@ public RegionInstanceGroupManagerStub getStub() { * try (RegionInstanceGroupManagerClient regionInstanceGroupManagerClient = RegionInstanceGroupManagerClient.create()) { * ProjectRegionInstanceGroupManagerName instanceGroupManager = ProjectRegionInstanceGroupManagerName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]"); * RegionInstanceGroupManagersAbandonInstancesRequest regionInstanceGroupManagersAbandonInstancesRequestResource = RegionInstanceGroupManagersAbandonInstancesRequest.newBuilder().build(); - * Operation response = regionInstanceGroupManagerClient.abandonInstancesRegionInstanceGroupManager(instanceGroupManager, regionInstanceGroupManagersAbandonInstancesRequestResource); + * regionInstanceGroupManagerClient.abandonInstancesRegionInstanceGroupManagerAsync(instanceGroupManager, regionInstanceGroupManagersAbandonInstancesRequestResource).get(); * } * * @@ -186,11 +201,13 @@ public RegionInstanceGroupManagerStub getStub() { * @param regionInstanceGroupManagersAbandonInstancesRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation abandonInstancesRegionInstanceGroupManager( - ProjectRegionInstanceGroupManagerName instanceGroupManager, - RegionInstanceGroupManagersAbandonInstancesRequest - regionInstanceGroupManagersAbandonInstancesRequestResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture + abandonInstancesRegionInstanceGroupManagerAsync( + ProjectRegionInstanceGroupManagerName instanceGroupManager, + RegionInstanceGroupManagersAbandonInstancesRequest + regionInstanceGroupManagersAbandonInstancesRequestResource) { AbandonInstancesRegionInstanceGroupManagerHttpRequest request = AbandonInstancesRegionInstanceGroupManagerHttpRequest.newBuilder() @@ -199,7 +216,7 @@ public final Operation abandonInstancesRegionInstanceGroupManager( .setRegionInstanceGroupManagersAbandonInstancesRequestResource( regionInstanceGroupManagersAbandonInstancesRequestResource) .build(); - return abandonInstancesRegionInstanceGroupManager(request); + return abandonInstancesRegionInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -224,7 +241,7 @@ public final Operation abandonInstancesRegionInstanceGroupManager( * try (RegionInstanceGroupManagerClient regionInstanceGroupManagerClient = RegionInstanceGroupManagerClient.create()) { * ProjectRegionInstanceGroupManagerName instanceGroupManager = ProjectRegionInstanceGroupManagerName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]"); * RegionInstanceGroupManagersAbandonInstancesRequest regionInstanceGroupManagersAbandonInstancesRequestResource = RegionInstanceGroupManagersAbandonInstancesRequest.newBuilder().build(); - * Operation response = regionInstanceGroupManagerClient.abandonInstancesRegionInstanceGroupManager(instanceGroupManager.toString(), regionInstanceGroupManagersAbandonInstancesRequestResource); + * regionInstanceGroupManagerClient.abandonInstancesRegionInstanceGroupManagerAsync(instanceGroupManager.toString(), regionInstanceGroupManagersAbandonInstancesRequestResource).get(); * } * * @@ -232,11 +249,13 @@ public final Operation abandonInstancesRegionInstanceGroupManager( * @param regionInstanceGroupManagersAbandonInstancesRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation abandonInstancesRegionInstanceGroupManager( - String instanceGroupManager, - RegionInstanceGroupManagersAbandonInstancesRequest - regionInstanceGroupManagersAbandonInstancesRequestResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture + abandonInstancesRegionInstanceGroupManagerAsync( + String instanceGroupManager, + RegionInstanceGroupManagersAbandonInstancesRequest + regionInstanceGroupManagersAbandonInstancesRequestResource) { AbandonInstancesRegionInstanceGroupManagerHttpRequest request = AbandonInstancesRegionInstanceGroupManagerHttpRequest.newBuilder() @@ -244,7 +263,7 @@ public final Operation abandonInstancesRegionInstanceGroupManager( .setRegionInstanceGroupManagersAbandonInstancesRequestResource( regionInstanceGroupManagersAbandonInstancesRequestResource) .build(); - return abandonInstancesRegionInstanceGroupManager(request); + return abandonInstancesRegionInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -273,17 +292,58 @@ public final Operation abandonInstancesRegionInstanceGroupManager( * .setInstanceGroupManager(instanceGroupManager.toString()) * .setRegionInstanceGroupManagersAbandonInstancesRequestResource(regionInstanceGroupManagersAbandonInstancesRequestResource) * .build(); - * Operation response = regionInstanceGroupManagerClient.abandonInstancesRegionInstanceGroupManager(request); + * regionInstanceGroupManagerClient.abandonInstancesRegionInstanceGroupManagerAsync(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 */ - @BetaApi - public final Operation abandonInstancesRegionInstanceGroupManager( - AbandonInstancesRegionInstanceGroupManagerHttpRequest request) { - return abandonInstancesRegionInstanceGroupManagerCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture + abandonInstancesRegionInstanceGroupManagerAsync( + AbandonInstancesRegionInstanceGroupManagerHttpRequest request) { + return abandonInstancesRegionInstanceGroupManagerOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Flags the specified instances to be immediately removed from the managed instance group. + * Abandoning an instance does not delete the instance, but it does remove the instance from any + * target pools that are applied by the managed instance group. This method reduces the targetSize + * of the managed instance group by the number of instances that you abandon. This operation is + * marked as DONE when the action is scheduled even if the instances have not yet been removed + * from the group. You must separately verify the status of the abandoning action with the + * listmanagedinstances method. + * + *

If the group is part of a backend service that has enabled connection draining, it can take + * up to 60 seconds after the connection draining duration has elapsed before the VM instance is + * removed or deleted. + * + *

You can specify a maximum of 1000 instances with this method per request. + * + *

Sample code: + * + *


+   * try (RegionInstanceGroupManagerClient regionInstanceGroupManagerClient = RegionInstanceGroupManagerClient.create()) {
+   *   ProjectRegionInstanceGroupManagerName instanceGroupManager = ProjectRegionInstanceGroupManagerName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]");
+   *   RegionInstanceGroupManagersAbandonInstancesRequest regionInstanceGroupManagersAbandonInstancesRequestResource = RegionInstanceGroupManagersAbandonInstancesRequest.newBuilder().build();
+   *   AbandonInstancesRegionInstanceGroupManagerHttpRequest request = AbandonInstancesRegionInstanceGroupManagerHttpRequest.newBuilder()
+   *     .setInstanceGroupManager(instanceGroupManager.toString())
+   *     .setRegionInstanceGroupManagersAbandonInstancesRequestResource(regionInstanceGroupManagersAbandonInstancesRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = regionInstanceGroupManagerClient.abandonInstancesRegionInstanceGroupManagerOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable< + AbandonInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation> + abandonInstancesRegionInstanceGroupManagerOperationCallable() { + return stub.abandonInstancesRegionInstanceGroupManagerOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -314,7 +374,7 @@ public final Operation abandonInstancesRegionInstanceGroupManager( * .build(); * ApiFuture<Operation> future = regionInstanceGroupManagerClient.abandonInstancesRegionInstanceGroupManagerCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -333,15 +393,16 @@ public final Operation abandonInstancesRegionInstanceGroupManager( *

    * try (RegionInstanceGroupManagerClient regionInstanceGroupManagerClient = RegionInstanceGroupManagerClient.create()) {
    *   ProjectRegionInstanceGroupManagerName instanceGroupManager = ProjectRegionInstanceGroupManagerName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]");
-   *   Operation response = regionInstanceGroupManagerClient.deleteRegionInstanceGroupManager(instanceGroupManager);
+   *   regionInstanceGroupManagerClient.deleteRegionInstanceGroupManagerAsync(instanceGroupManager).get();
    * }
    * 
* * @param instanceGroupManager Name of the managed instance group to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteRegionInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteRegionInstanceGroupManagerAsync( ProjectRegionInstanceGroupManagerName instanceGroupManager) { DeleteRegionInstanceGroupManagerHttpRequest request = @@ -349,7 +410,7 @@ public final Operation deleteRegionInstanceGroupManager( .setInstanceGroupManager( instanceGroupManager == null ? null : instanceGroupManager.toString()) .build(); - return deleteRegionInstanceGroupManager(request); + return deleteRegionInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -361,21 +422,23 @@ public final Operation deleteRegionInstanceGroupManager( *

    * try (RegionInstanceGroupManagerClient regionInstanceGroupManagerClient = RegionInstanceGroupManagerClient.create()) {
    *   ProjectRegionInstanceGroupManagerName instanceGroupManager = ProjectRegionInstanceGroupManagerName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]");
-   *   Operation response = regionInstanceGroupManagerClient.deleteRegionInstanceGroupManager(instanceGroupManager.toString());
+   *   regionInstanceGroupManagerClient.deleteRegionInstanceGroupManagerAsync(instanceGroupManager.toString()).get();
    * }
    * 
* * @param instanceGroupManager Name of the managed instance group to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteRegionInstanceGroupManager(String instanceGroupManager) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteRegionInstanceGroupManagerAsync( + String instanceGroupManager) { DeleteRegionInstanceGroupManagerHttpRequest request = DeleteRegionInstanceGroupManagerHttpRequest.newBuilder() .setInstanceGroupManager(instanceGroupManager) .build(); - return deleteRegionInstanceGroupManager(request); + return deleteRegionInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -390,17 +453,43 @@ public final Operation deleteRegionInstanceGroupManager(String instanceGroupMana * DeleteRegionInstanceGroupManagerHttpRequest request = DeleteRegionInstanceGroupManagerHttpRequest.newBuilder() * .setInstanceGroupManager(instanceGroupManager.toString()) * .build(); - * Operation response = regionInstanceGroupManagerClient.deleteRegionInstanceGroupManager(request); + * regionInstanceGroupManagerClient.deleteRegionInstanceGroupManagerAsync(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 */ - @BetaApi - public final Operation deleteRegionInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteRegionInstanceGroupManagerAsync( DeleteRegionInstanceGroupManagerHttpRequest request) { - return deleteRegionInstanceGroupManagerCallable().call(request); + return deleteRegionInstanceGroupManagerOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified managed instance group and all of the instances in that group. + * + *

Sample code: + * + *


+   * try (RegionInstanceGroupManagerClient regionInstanceGroupManagerClient = RegionInstanceGroupManagerClient.create()) {
+   *   ProjectRegionInstanceGroupManagerName instanceGroupManager = ProjectRegionInstanceGroupManagerName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]");
+   *   DeleteRegionInstanceGroupManagerHttpRequest request = DeleteRegionInstanceGroupManagerHttpRequest.newBuilder()
+   *     .setInstanceGroupManager(instanceGroupManager.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = regionInstanceGroupManagerClient.deleteRegionInstanceGroupManagerOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable< + DeleteRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation> + deleteRegionInstanceGroupManagerOperationCallable() { + return stub.deleteRegionInstanceGroupManagerOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -417,7 +506,7 @@ public final Operation deleteRegionInstanceGroupManager( * .build(); * ApiFuture<Operation> future = regionInstanceGroupManagerClient.deleteRegionInstanceGroupManagerCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -448,7 +537,7 @@ public final Operation deleteRegionInstanceGroupManager( * try (RegionInstanceGroupManagerClient regionInstanceGroupManagerClient = RegionInstanceGroupManagerClient.create()) { * ProjectRegionInstanceGroupManagerName instanceGroupManager = ProjectRegionInstanceGroupManagerName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]"); * RegionInstanceGroupManagersDeleteInstancesRequest regionInstanceGroupManagersDeleteInstancesRequestResource = RegionInstanceGroupManagersDeleteInstancesRequest.newBuilder().build(); - * Operation response = regionInstanceGroupManagerClient.deleteInstancesRegionInstanceGroupManager(instanceGroupManager, regionInstanceGroupManagersDeleteInstancesRequestResource); + * regionInstanceGroupManagerClient.deleteInstancesRegionInstanceGroupManagerAsync(instanceGroupManager, regionInstanceGroupManagersDeleteInstancesRequestResource).get(); * } * * @@ -456,11 +545,13 @@ public final Operation deleteRegionInstanceGroupManager( * @param regionInstanceGroupManagersDeleteInstancesRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteInstancesRegionInstanceGroupManager( - ProjectRegionInstanceGroupManagerName instanceGroupManager, - RegionInstanceGroupManagersDeleteInstancesRequest - regionInstanceGroupManagersDeleteInstancesRequestResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture + deleteInstancesRegionInstanceGroupManagerAsync( + ProjectRegionInstanceGroupManagerName instanceGroupManager, + RegionInstanceGroupManagersDeleteInstancesRequest + regionInstanceGroupManagersDeleteInstancesRequestResource) { DeleteInstancesRegionInstanceGroupManagerHttpRequest request = DeleteInstancesRegionInstanceGroupManagerHttpRequest.newBuilder() @@ -469,7 +560,7 @@ public final Operation deleteInstancesRegionInstanceGroupManager( .setRegionInstanceGroupManagersDeleteInstancesRequestResource( regionInstanceGroupManagersDeleteInstancesRequestResource) .build(); - return deleteInstancesRegionInstanceGroupManager(request); + return deleteInstancesRegionInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -493,7 +584,7 @@ public final Operation deleteInstancesRegionInstanceGroupManager( * try (RegionInstanceGroupManagerClient regionInstanceGroupManagerClient = RegionInstanceGroupManagerClient.create()) { * ProjectRegionInstanceGroupManagerName instanceGroupManager = ProjectRegionInstanceGroupManagerName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]"); * RegionInstanceGroupManagersDeleteInstancesRequest regionInstanceGroupManagersDeleteInstancesRequestResource = RegionInstanceGroupManagersDeleteInstancesRequest.newBuilder().build(); - * Operation response = regionInstanceGroupManagerClient.deleteInstancesRegionInstanceGroupManager(instanceGroupManager.toString(), regionInstanceGroupManagersDeleteInstancesRequestResource); + * regionInstanceGroupManagerClient.deleteInstancesRegionInstanceGroupManagerAsync(instanceGroupManager.toString(), regionInstanceGroupManagersDeleteInstancesRequestResource).get(); * } * * @@ -501,11 +592,13 @@ public final Operation deleteInstancesRegionInstanceGroupManager( * @param regionInstanceGroupManagersDeleteInstancesRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteInstancesRegionInstanceGroupManager( - String instanceGroupManager, - RegionInstanceGroupManagersDeleteInstancesRequest - regionInstanceGroupManagersDeleteInstancesRequestResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture + deleteInstancesRegionInstanceGroupManagerAsync( + String instanceGroupManager, + RegionInstanceGroupManagersDeleteInstancesRequest + regionInstanceGroupManagersDeleteInstancesRequestResource) { DeleteInstancesRegionInstanceGroupManagerHttpRequest request = DeleteInstancesRegionInstanceGroupManagerHttpRequest.newBuilder() @@ -513,7 +606,7 @@ public final Operation deleteInstancesRegionInstanceGroupManager( .setRegionInstanceGroupManagersDeleteInstancesRequestResource( regionInstanceGroupManagersDeleteInstancesRequestResource) .build(); - return deleteInstancesRegionInstanceGroupManager(request); + return deleteInstancesRegionInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -541,17 +634,57 @@ public final Operation deleteInstancesRegionInstanceGroupManager( * .setInstanceGroupManager(instanceGroupManager.toString()) * .setRegionInstanceGroupManagersDeleteInstancesRequestResource(regionInstanceGroupManagersDeleteInstancesRequestResource) * .build(); - * Operation response = regionInstanceGroupManagerClient.deleteInstancesRegionInstanceGroupManager(request); + * regionInstanceGroupManagerClient.deleteInstancesRegionInstanceGroupManagerAsync(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 */ - @BetaApi - public final Operation deleteInstancesRegionInstanceGroupManager( - DeleteInstancesRegionInstanceGroupManagerHttpRequest request) { - return deleteInstancesRegionInstanceGroupManagerCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture + deleteInstancesRegionInstanceGroupManagerAsync( + DeleteInstancesRegionInstanceGroupManagerHttpRequest request) { + return deleteInstancesRegionInstanceGroupManagerOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Flags the specified instances in the managed instance group to be immediately deleted. The + * instances are also removed from any target pools of which they were a member. This method + * reduces the targetSize of the managed instance group by the number of instances that you + * delete. The deleteInstances operation is marked DONE if the deleteInstances request is + * successful. The underlying actions take additional time. You must separately verify the status + * of the deleting action with the listmanagedinstances method. + * + *

If the group is part of a backend service that has enabled connection draining, it can take + * up to 60 seconds after the connection draining duration has elapsed before the VM instance is + * removed or deleted. + * + *

You can specify a maximum of 1000 instances with this method per request. + * + *

Sample code: + * + *


+   * try (RegionInstanceGroupManagerClient regionInstanceGroupManagerClient = RegionInstanceGroupManagerClient.create()) {
+   *   ProjectRegionInstanceGroupManagerName instanceGroupManager = ProjectRegionInstanceGroupManagerName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]");
+   *   RegionInstanceGroupManagersDeleteInstancesRequest regionInstanceGroupManagersDeleteInstancesRequestResource = RegionInstanceGroupManagersDeleteInstancesRequest.newBuilder().build();
+   *   DeleteInstancesRegionInstanceGroupManagerHttpRequest request = DeleteInstancesRegionInstanceGroupManagerHttpRequest.newBuilder()
+   *     .setInstanceGroupManager(instanceGroupManager.toString())
+   *     .setRegionInstanceGroupManagersDeleteInstancesRequestResource(regionInstanceGroupManagersDeleteInstancesRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = regionInstanceGroupManagerClient.deleteInstancesRegionInstanceGroupManagerOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable< + DeleteInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation> + deleteInstancesRegionInstanceGroupManagerOperationCallable() { + return stub.deleteInstancesRegionInstanceGroupManagerOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -581,7 +714,7 @@ public final Operation deleteInstancesRegionInstanceGroupManager( * .build(); * ApiFuture<Operation> future = regionInstanceGroupManagerClient.deleteInstancesRegionInstanceGroupManagerCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -710,7 +843,7 @@ public final InstanceGroupManager getRegionInstanceGroupManager( * try (RegionInstanceGroupManagerClient regionInstanceGroupManagerClient = RegionInstanceGroupManagerClient.create()) { * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * InstanceGroupManager instanceGroupManagerResource = InstanceGroupManager.newBuilder().build(); - * Operation response = regionInstanceGroupManagerClient.insertRegionInstanceGroupManager(region, instanceGroupManagerResource); + * regionInstanceGroupManagerClient.insertRegionInstanceGroupManagerAsync(region, instanceGroupManagerResource).get(); * } * * @@ -721,8 +854,9 @@ public final InstanceGroupManager getRegionInstanceGroupManager( * v1.regionInstanceGroupManagers ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertRegionInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertRegionInstanceGroupManagerAsync( ProjectRegionName region, InstanceGroupManager instanceGroupManagerResource) { InsertRegionInstanceGroupManagerHttpRequest request = @@ -730,7 +864,7 @@ public final Operation insertRegionInstanceGroupManager( .setRegion(region == null ? null : region.toString()) .setInstanceGroupManagerResource(instanceGroupManagerResource) .build(); - return insertRegionInstanceGroupManager(request); + return insertRegionInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -749,7 +883,7 @@ public final Operation insertRegionInstanceGroupManager( * try (RegionInstanceGroupManagerClient regionInstanceGroupManagerClient = RegionInstanceGroupManagerClient.create()) { * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * InstanceGroupManager instanceGroupManagerResource = InstanceGroupManager.newBuilder().build(); - * Operation response = regionInstanceGroupManagerClient.insertRegionInstanceGroupManager(region.toString(), instanceGroupManagerResource); + * regionInstanceGroupManagerClient.insertRegionInstanceGroupManagerAsync(region.toString(), instanceGroupManagerResource).get(); * } * * @@ -760,8 +894,9 @@ public final Operation insertRegionInstanceGroupManager( * v1.regionInstanceGroupManagers ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertRegionInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertRegionInstanceGroupManagerAsync( String region, InstanceGroupManager instanceGroupManagerResource) { InsertRegionInstanceGroupManagerHttpRequest request = @@ -769,7 +904,7 @@ public final Operation insertRegionInstanceGroupManager( .setRegion(region) .setInstanceGroupManagerResource(instanceGroupManagerResource) .build(); - return insertRegionInstanceGroupManager(request); + return insertRegionInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -792,17 +927,51 @@ public final Operation insertRegionInstanceGroupManager( * .setRegion(region.toString()) * .setInstanceGroupManagerResource(instanceGroupManagerResource) * .build(); - * Operation response = regionInstanceGroupManagerClient.insertRegionInstanceGroupManager(request); + * regionInstanceGroupManagerClient.insertRegionInstanceGroupManagerAsync(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 */ - @BetaApi - public final Operation insertRegionInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertRegionInstanceGroupManagerAsync( InsertRegionInstanceGroupManagerHttpRequest request) { - return insertRegionInstanceGroupManagerCallable().call(request); + return insertRegionInstanceGroupManagerOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a managed instance group using the information that you specify in the request. After + * the group is created, instances in the group are created using the specified instance template. + * This operation is marked as DONE when the group is created even if the instances in the group + * have not yet been created. You must separately verify the status of the individual instances + * with the listmanagedinstances method. + * + *

A regional managed instance group can contain up to 2000 instances. + * + *

Sample code: + * + *


+   * try (RegionInstanceGroupManagerClient regionInstanceGroupManagerClient = RegionInstanceGroupManagerClient.create()) {
+   *   ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
+   *   InstanceGroupManager instanceGroupManagerResource = InstanceGroupManager.newBuilder().build();
+   *   InsertRegionInstanceGroupManagerHttpRequest request = InsertRegionInstanceGroupManagerHttpRequest.newBuilder()
+   *     .setRegion(region.toString())
+   *     .setInstanceGroupManagerResource(instanceGroupManagerResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = regionInstanceGroupManagerClient.insertRegionInstanceGroupManagerOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable< + InsertRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation> + insertRegionInstanceGroupManagerOperationCallable() { + return stub.insertRegionInstanceGroupManagerOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -827,7 +996,7 @@ public final Operation insertRegionInstanceGroupManager( * .build(); * ApiFuture<Operation> future = regionInstanceGroupManagerClient.insertRegionInstanceGroupManagerCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1106,7 +1275,7 @@ public final ListRegionInstanceGroupManagersPagedResponse listRegionInstanceGrou * ProjectRegionInstanceGroupManagerName instanceGroupManager = ProjectRegionInstanceGroupManagerName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]"); * InstanceGroupManager instanceGroupManagerResource = InstanceGroupManager.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = regionInstanceGroupManagerClient.patchRegionInstanceGroupManager(instanceGroupManager, instanceGroupManagerResource, fieldMask); + * regionInstanceGroupManagerClient.patchRegionInstanceGroupManagerAsync(instanceGroupManager, instanceGroupManagerResource, fieldMask).get(); * } * * @@ -1121,8 +1290,9 @@ public final ListRegionInstanceGroupManagersPagedResponse listRegionInstanceGrou * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchRegionInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchRegionInstanceGroupManagerAsync( ProjectRegionInstanceGroupManagerName instanceGroupManager, InstanceGroupManager instanceGroupManagerResource, List fieldMask) { @@ -1134,7 +1304,7 @@ public final Operation patchRegionInstanceGroupManager( .setInstanceGroupManagerResource(instanceGroupManagerResource) .addAllFieldMask(fieldMask) .build(); - return patchRegionInstanceGroupManager(request); + return patchRegionInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1152,7 +1322,7 @@ public final Operation patchRegionInstanceGroupManager( * ProjectRegionInstanceGroupManagerName instanceGroupManager = ProjectRegionInstanceGroupManagerName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]"); * InstanceGroupManager instanceGroupManagerResource = InstanceGroupManager.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = regionInstanceGroupManagerClient.patchRegionInstanceGroupManager(instanceGroupManager.toString(), instanceGroupManagerResource, fieldMask); + * regionInstanceGroupManagerClient.patchRegionInstanceGroupManagerAsync(instanceGroupManager.toString(), instanceGroupManagerResource, fieldMask).get(); * } * * @@ -1167,8 +1337,9 @@ public final Operation patchRegionInstanceGroupManager( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchRegionInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchRegionInstanceGroupManagerAsync( String instanceGroupManager, InstanceGroupManager instanceGroupManagerResource, List fieldMask) { @@ -1179,7 +1350,7 @@ public final Operation patchRegionInstanceGroupManager( .setInstanceGroupManagerResource(instanceGroupManagerResource) .addAllFieldMask(fieldMask) .build(); - return patchRegionInstanceGroupManager(request); + return patchRegionInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1202,17 +1373,51 @@ public final Operation patchRegionInstanceGroupManager( * .setInstanceGroupManagerResource(instanceGroupManagerResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = regionInstanceGroupManagerClient.patchRegionInstanceGroupManager(request); + * regionInstanceGroupManagerClient.patchRegionInstanceGroupManagerAsync(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 */ - @BetaApi - public final Operation patchRegionInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchRegionInstanceGroupManagerAsync( PatchRegionInstanceGroupManagerHttpRequest request) { - return patchRegionInstanceGroupManagerCallable().call(request); + return patchRegionInstanceGroupManagerOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Updates a managed instance group using the information that you specify in the request. This + * operation is marked as DONE when the group is patched even if the instances in the group are + * still in the process of being patched. You must separately verify the status of the individual + * instances with the listmanagedinstances method. This method supports PATCH semantics and uses + * the JSON merge patch format and processing rules. + * + *

Sample code: + * + *


+   * try (RegionInstanceGroupManagerClient regionInstanceGroupManagerClient = RegionInstanceGroupManagerClient.create()) {
+   *   ProjectRegionInstanceGroupManagerName instanceGroupManager = ProjectRegionInstanceGroupManagerName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]");
+   *   InstanceGroupManager instanceGroupManagerResource = InstanceGroupManager.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   PatchRegionInstanceGroupManagerHttpRequest request = PatchRegionInstanceGroupManagerHttpRequest.newBuilder()
+   *     .setInstanceGroupManager(instanceGroupManager.toString())
+   *     .setInstanceGroupManagerResource(instanceGroupManagerResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = regionInstanceGroupManagerClient.patchRegionInstanceGroupManagerOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable< + PatchRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation> + patchRegionInstanceGroupManagerOperationCallable() { + return stub.patchRegionInstanceGroupManagerOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1237,7 +1442,7 @@ public final Operation patchRegionInstanceGroupManager( * .build(); * ApiFuture<Operation> future = regionInstanceGroupManagerClient.patchRegionInstanceGroupManagerCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1267,7 +1472,7 @@ public final Operation patchRegionInstanceGroupManager( * try (RegionInstanceGroupManagerClient regionInstanceGroupManagerClient = RegionInstanceGroupManagerClient.create()) { * ProjectRegionInstanceGroupManagerName instanceGroupManager = ProjectRegionInstanceGroupManagerName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]"); * RegionInstanceGroupManagersRecreateRequest regionInstanceGroupManagersRecreateRequestResource = RegionInstanceGroupManagersRecreateRequest.newBuilder().build(); - * Operation response = regionInstanceGroupManagerClient.recreateInstancesRegionInstanceGroupManager(instanceGroupManager, regionInstanceGroupManagersRecreateRequestResource); + * regionInstanceGroupManagerClient.recreateInstancesRegionInstanceGroupManagerAsync(instanceGroupManager, regionInstanceGroupManagersRecreateRequestResource).get(); * } * * @@ -1275,11 +1480,13 @@ public final Operation patchRegionInstanceGroupManager( * @param regionInstanceGroupManagersRecreateRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation recreateInstancesRegionInstanceGroupManager( - ProjectRegionInstanceGroupManagerName instanceGroupManager, - RegionInstanceGroupManagersRecreateRequest - regionInstanceGroupManagersRecreateRequestResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture + recreateInstancesRegionInstanceGroupManagerAsync( + ProjectRegionInstanceGroupManagerName instanceGroupManager, + RegionInstanceGroupManagersRecreateRequest + regionInstanceGroupManagersRecreateRequestResource) { RecreateInstancesRegionInstanceGroupManagerHttpRequest request = RecreateInstancesRegionInstanceGroupManagerHttpRequest.newBuilder() @@ -1288,7 +1495,7 @@ public final Operation recreateInstancesRegionInstanceGroupManager( .setRegionInstanceGroupManagersRecreateRequestResource( regionInstanceGroupManagersRecreateRequestResource) .build(); - return recreateInstancesRegionInstanceGroupManager(request); + return recreateInstancesRegionInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1311,7 +1518,7 @@ public final Operation recreateInstancesRegionInstanceGroupManager( * try (RegionInstanceGroupManagerClient regionInstanceGroupManagerClient = RegionInstanceGroupManagerClient.create()) { * ProjectRegionInstanceGroupManagerName instanceGroupManager = ProjectRegionInstanceGroupManagerName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]"); * RegionInstanceGroupManagersRecreateRequest regionInstanceGroupManagersRecreateRequestResource = RegionInstanceGroupManagersRecreateRequest.newBuilder().build(); - * Operation response = regionInstanceGroupManagerClient.recreateInstancesRegionInstanceGroupManager(instanceGroupManager.toString(), regionInstanceGroupManagersRecreateRequestResource); + * regionInstanceGroupManagerClient.recreateInstancesRegionInstanceGroupManagerAsync(instanceGroupManager.toString(), regionInstanceGroupManagersRecreateRequestResource).get(); * } * * @@ -1319,11 +1526,13 @@ public final Operation recreateInstancesRegionInstanceGroupManager( * @param regionInstanceGroupManagersRecreateRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation recreateInstancesRegionInstanceGroupManager( - String instanceGroupManager, - RegionInstanceGroupManagersRecreateRequest - regionInstanceGroupManagersRecreateRequestResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture + recreateInstancesRegionInstanceGroupManagerAsync( + String instanceGroupManager, + RegionInstanceGroupManagersRecreateRequest + regionInstanceGroupManagersRecreateRequestResource) { RecreateInstancesRegionInstanceGroupManagerHttpRequest request = RecreateInstancesRegionInstanceGroupManagerHttpRequest.newBuilder() @@ -1331,7 +1540,7 @@ public final Operation recreateInstancesRegionInstanceGroupManager( .setRegionInstanceGroupManagersRecreateRequestResource( regionInstanceGroupManagersRecreateRequestResource) .build(); - return recreateInstancesRegionInstanceGroupManager(request); + return recreateInstancesRegionInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1358,17 +1567,56 @@ public final Operation recreateInstancesRegionInstanceGroupManager( * .setInstanceGroupManager(instanceGroupManager.toString()) * .setRegionInstanceGroupManagersRecreateRequestResource(regionInstanceGroupManagersRecreateRequestResource) * .build(); - * Operation response = regionInstanceGroupManagerClient.recreateInstancesRegionInstanceGroupManager(request); + * regionInstanceGroupManagerClient.recreateInstancesRegionInstanceGroupManagerAsync(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 */ - @BetaApi - public final Operation recreateInstancesRegionInstanceGroupManager( - RecreateInstancesRegionInstanceGroupManagerHttpRequest request) { - return recreateInstancesRegionInstanceGroupManagerCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture + recreateInstancesRegionInstanceGroupManagerAsync( + RecreateInstancesRegionInstanceGroupManagerHttpRequest request) { + return recreateInstancesRegionInstanceGroupManagerOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Flags the specified instances in the managed instance group to be immediately recreated. The + * instances are deleted and recreated using the current instance template for the managed + * instance group. This operation is marked as DONE when the flag is set even if the instances + * have not yet been recreated. You must separately verify the status of the recreating action + * with the listmanagedinstances method. + * + *

If the group is part of a backend service that has enabled connection draining, it can take + * up to 60 seconds after the connection draining duration has elapsed before the VM instance is + * removed or deleted. + * + *

You can specify a maximum of 1000 instances with this method per request. + * + *

Sample code: + * + *


+   * try (RegionInstanceGroupManagerClient regionInstanceGroupManagerClient = RegionInstanceGroupManagerClient.create()) {
+   *   ProjectRegionInstanceGroupManagerName instanceGroupManager = ProjectRegionInstanceGroupManagerName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]");
+   *   RegionInstanceGroupManagersRecreateRequest regionInstanceGroupManagersRecreateRequestResource = RegionInstanceGroupManagersRecreateRequest.newBuilder().build();
+   *   RecreateInstancesRegionInstanceGroupManagerHttpRequest request = RecreateInstancesRegionInstanceGroupManagerHttpRequest.newBuilder()
+   *     .setInstanceGroupManager(instanceGroupManager.toString())
+   *     .setRegionInstanceGroupManagersRecreateRequestResource(regionInstanceGroupManagersRecreateRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = regionInstanceGroupManagerClient.recreateInstancesRegionInstanceGroupManagerOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable< + RecreateInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation> + recreateInstancesRegionInstanceGroupManagerOperationCallable() { + return stub.recreateInstancesRegionInstanceGroupManagerOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1397,7 +1645,7 @@ public final Operation recreateInstancesRegionInstanceGroupManager( * .build(); * ApiFuture<Operation> future = regionInstanceGroupManagerClient.recreateInstancesRegionInstanceGroupManagerCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1427,7 +1675,7 @@ public final Operation recreateInstancesRegionInstanceGroupManager( * try (RegionInstanceGroupManagerClient regionInstanceGroupManagerClient = RegionInstanceGroupManagerClient.create()) { * Integer size = 0; * ProjectRegionInstanceGroupManagerName instanceGroupManager = ProjectRegionInstanceGroupManagerName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]"); - * Operation response = regionInstanceGroupManagerClient.resizeRegionInstanceGroupManager(size, instanceGroupManager); + * regionInstanceGroupManagerClient.resizeRegionInstanceGroupManagerAsync(size, instanceGroupManager).get(); * } * * @@ -1435,8 +1683,9 @@ public final Operation recreateInstancesRegionInstanceGroupManager( * @param instanceGroupManager Name of the managed instance group. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation resizeRegionInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture resizeRegionInstanceGroupManagerAsync( Integer size, ProjectRegionInstanceGroupManagerName instanceGroupManager) { ResizeRegionInstanceGroupManagerHttpRequest request = @@ -1445,7 +1694,7 @@ public final Operation resizeRegionInstanceGroupManager( .setInstanceGroupManager( instanceGroupManager == null ? null : instanceGroupManager.toString()) .build(); - return resizeRegionInstanceGroupManager(request); + return resizeRegionInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1468,7 +1717,7 @@ public final Operation resizeRegionInstanceGroupManager( * try (RegionInstanceGroupManagerClient regionInstanceGroupManagerClient = RegionInstanceGroupManagerClient.create()) { * Integer size = 0; * ProjectRegionInstanceGroupManagerName instanceGroupManager = ProjectRegionInstanceGroupManagerName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]"); - * Operation response = regionInstanceGroupManagerClient.resizeRegionInstanceGroupManager(size, instanceGroupManager.toString()); + * regionInstanceGroupManagerClient.resizeRegionInstanceGroupManagerAsync(size, instanceGroupManager.toString()).get(); * } * * @@ -1476,8 +1725,9 @@ public final Operation resizeRegionInstanceGroupManager( * @param instanceGroupManager Name of the managed instance group. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation resizeRegionInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture resizeRegionInstanceGroupManagerAsync( Integer size, String instanceGroupManager) { ResizeRegionInstanceGroupManagerHttpRequest request = @@ -1485,7 +1735,7 @@ public final Operation resizeRegionInstanceGroupManager( .setSize(size) .setInstanceGroupManager(instanceGroupManager) .build(); - return resizeRegionInstanceGroupManager(request); + return resizeRegionInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1512,17 +1762,55 @@ public final Operation resizeRegionInstanceGroupManager( * .setSize(size) * .setInstanceGroupManager(instanceGroupManager.toString()) * .build(); - * Operation response = regionInstanceGroupManagerClient.resizeRegionInstanceGroupManager(request); + * regionInstanceGroupManagerClient.resizeRegionInstanceGroupManagerAsync(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 */ - @BetaApi - public final Operation resizeRegionInstanceGroupManager( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture resizeRegionInstanceGroupManagerAsync( ResizeRegionInstanceGroupManagerHttpRequest request) { - return resizeRegionInstanceGroupManagerCallable().call(request); + return resizeRegionInstanceGroupManagerOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Changes the intended size of the managed instance group. If you increase the size, the group + * creates new instances using the current instance template. If you decrease the size, the group + * deletes one or more instances. + * + *

The resize operation is marked DONE if the resize request is successful. The underlying + * actions take additional time. You must separately verify the status of the creating or deleting + * actions with the listmanagedinstances method. + * + *

If the group is part of a backend service that has enabled connection draining, it can take + * up to 60 seconds after the connection draining duration has elapsed before the VM instance is + * removed or deleted. + * + *

Sample code: + * + *


+   * try (RegionInstanceGroupManagerClient regionInstanceGroupManagerClient = RegionInstanceGroupManagerClient.create()) {
+   *   Integer size = 0;
+   *   ProjectRegionInstanceGroupManagerName instanceGroupManager = ProjectRegionInstanceGroupManagerName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]");
+   *   ResizeRegionInstanceGroupManagerHttpRequest request = ResizeRegionInstanceGroupManagerHttpRequest.newBuilder()
+   *     .setSize(size)
+   *     .setInstanceGroupManager(instanceGroupManager.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = regionInstanceGroupManagerClient.resizeRegionInstanceGroupManagerOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable< + ResizeRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation> + resizeRegionInstanceGroupManagerOperationCallable() { + return stub.resizeRegionInstanceGroupManagerOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1551,7 +1839,7 @@ public final Operation resizeRegionInstanceGroupManager( * .build(); * ApiFuture<Operation> future = regionInstanceGroupManagerClient.resizeRegionInstanceGroupManagerCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1572,7 +1860,7 @@ public final Operation resizeRegionInstanceGroupManager( * try (RegionInstanceGroupManagerClient regionInstanceGroupManagerClient = RegionInstanceGroupManagerClient.create()) { * ProjectRegionInstanceGroupManagerName instanceGroupManager = ProjectRegionInstanceGroupManagerName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]"); * RegionInstanceGroupManagersSetTemplateRequest regionInstanceGroupManagersSetTemplateRequestResource = RegionInstanceGroupManagersSetTemplateRequest.newBuilder().build(); - * Operation response = regionInstanceGroupManagerClient.setInstanceTemplateRegionInstanceGroupManager(instanceGroupManager, regionInstanceGroupManagersSetTemplateRequestResource); + * regionInstanceGroupManagerClient.setInstanceTemplateRegionInstanceGroupManagerAsync(instanceGroupManager, regionInstanceGroupManagersSetTemplateRequestResource).get(); * } * * @@ -1580,11 +1868,13 @@ public final Operation resizeRegionInstanceGroupManager( * @param regionInstanceGroupManagersSetTemplateRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setInstanceTemplateRegionInstanceGroupManager( - ProjectRegionInstanceGroupManagerName instanceGroupManager, - RegionInstanceGroupManagersSetTemplateRequest - regionInstanceGroupManagersSetTemplateRequestResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture + setInstanceTemplateRegionInstanceGroupManagerAsync( + ProjectRegionInstanceGroupManagerName instanceGroupManager, + RegionInstanceGroupManagersSetTemplateRequest + regionInstanceGroupManagersSetTemplateRequestResource) { SetInstanceTemplateRegionInstanceGroupManagerHttpRequest request = SetInstanceTemplateRegionInstanceGroupManagerHttpRequest.newBuilder() @@ -1593,7 +1883,7 @@ public final Operation setInstanceTemplateRegionInstanceGroupManager( .setRegionInstanceGroupManagersSetTemplateRequestResource( regionInstanceGroupManagersSetTemplateRequestResource) .build(); - return setInstanceTemplateRegionInstanceGroupManager(request); + return setInstanceTemplateRegionInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1607,7 +1897,7 @@ public final Operation setInstanceTemplateRegionInstanceGroupManager( * try (RegionInstanceGroupManagerClient regionInstanceGroupManagerClient = RegionInstanceGroupManagerClient.create()) { * ProjectRegionInstanceGroupManagerName instanceGroupManager = ProjectRegionInstanceGroupManagerName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]"); * RegionInstanceGroupManagersSetTemplateRequest regionInstanceGroupManagersSetTemplateRequestResource = RegionInstanceGroupManagersSetTemplateRequest.newBuilder().build(); - * Operation response = regionInstanceGroupManagerClient.setInstanceTemplateRegionInstanceGroupManager(instanceGroupManager.toString(), regionInstanceGroupManagersSetTemplateRequestResource); + * regionInstanceGroupManagerClient.setInstanceTemplateRegionInstanceGroupManagerAsync(instanceGroupManager.toString(), regionInstanceGroupManagersSetTemplateRequestResource).get(); * } * * @@ -1615,11 +1905,13 @@ public final Operation setInstanceTemplateRegionInstanceGroupManager( * @param regionInstanceGroupManagersSetTemplateRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setInstanceTemplateRegionInstanceGroupManager( - String instanceGroupManager, - RegionInstanceGroupManagersSetTemplateRequest - regionInstanceGroupManagersSetTemplateRequestResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture + setInstanceTemplateRegionInstanceGroupManagerAsync( + String instanceGroupManager, + RegionInstanceGroupManagersSetTemplateRequest + regionInstanceGroupManagersSetTemplateRequestResource) { SetInstanceTemplateRegionInstanceGroupManagerHttpRequest request = SetInstanceTemplateRegionInstanceGroupManagerHttpRequest.newBuilder() @@ -1627,7 +1919,7 @@ public final Operation setInstanceTemplateRegionInstanceGroupManager( .setRegionInstanceGroupManagersSetTemplateRequestResource( regionInstanceGroupManagersSetTemplateRequestResource) .build(); - return setInstanceTemplateRegionInstanceGroupManager(request); + return setInstanceTemplateRegionInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1645,17 +1937,47 @@ public final Operation setInstanceTemplateRegionInstanceGroupManager( * .setInstanceGroupManager(instanceGroupManager.toString()) * .setRegionInstanceGroupManagersSetTemplateRequestResource(regionInstanceGroupManagersSetTemplateRequestResource) * .build(); - * Operation response = regionInstanceGroupManagerClient.setInstanceTemplateRegionInstanceGroupManager(request); + * regionInstanceGroupManagerClient.setInstanceTemplateRegionInstanceGroupManagerAsync(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 */ - @BetaApi - public final Operation setInstanceTemplateRegionInstanceGroupManager( - SetInstanceTemplateRegionInstanceGroupManagerHttpRequest request) { - return setInstanceTemplateRegionInstanceGroupManagerCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture + setInstanceTemplateRegionInstanceGroupManagerAsync( + SetInstanceTemplateRegionInstanceGroupManagerHttpRequest request) { + return setInstanceTemplateRegionInstanceGroupManagerOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Sets the instance template to use when creating new instances or recreating instances in this + * group. Existing instances are not affected. + * + *

Sample code: + * + *


+   * try (RegionInstanceGroupManagerClient regionInstanceGroupManagerClient = RegionInstanceGroupManagerClient.create()) {
+   *   ProjectRegionInstanceGroupManagerName instanceGroupManager = ProjectRegionInstanceGroupManagerName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]");
+   *   RegionInstanceGroupManagersSetTemplateRequest regionInstanceGroupManagersSetTemplateRequestResource = RegionInstanceGroupManagersSetTemplateRequest.newBuilder().build();
+   *   SetInstanceTemplateRegionInstanceGroupManagerHttpRequest request = SetInstanceTemplateRegionInstanceGroupManagerHttpRequest.newBuilder()
+   *     .setInstanceGroupManager(instanceGroupManager.toString())
+   *     .setRegionInstanceGroupManagersSetTemplateRequestResource(regionInstanceGroupManagersSetTemplateRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = regionInstanceGroupManagerClient.setInstanceTemplateRegionInstanceGroupManagerOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable< + SetInstanceTemplateRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation> + setInstanceTemplateRegionInstanceGroupManagerOperationCallable() { + return stub.setInstanceTemplateRegionInstanceGroupManagerOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1675,7 +1997,7 @@ public final Operation setInstanceTemplateRegionInstanceGroupManager( * .build(); * ApiFuture<Operation> future = regionInstanceGroupManagerClient.setInstanceTemplateRegionInstanceGroupManagerCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1696,7 +2018,7 @@ public final Operation setInstanceTemplateRegionInstanceGroupManager( * try (RegionInstanceGroupManagerClient regionInstanceGroupManagerClient = RegionInstanceGroupManagerClient.create()) { * ProjectRegionInstanceGroupManagerName instanceGroupManager = ProjectRegionInstanceGroupManagerName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]"); * RegionInstanceGroupManagersSetTargetPoolsRequest regionInstanceGroupManagersSetTargetPoolsRequestResource = RegionInstanceGroupManagersSetTargetPoolsRequest.newBuilder().build(); - * Operation response = regionInstanceGroupManagerClient.setTargetPoolsRegionInstanceGroupManager(instanceGroupManager, regionInstanceGroupManagersSetTargetPoolsRequestResource); + * regionInstanceGroupManagerClient.setTargetPoolsRegionInstanceGroupManagerAsync(instanceGroupManager, regionInstanceGroupManagersSetTargetPoolsRequestResource).get(); * } * * @@ -1704,11 +2026,13 @@ public final Operation setInstanceTemplateRegionInstanceGroupManager( * @param regionInstanceGroupManagersSetTargetPoolsRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setTargetPoolsRegionInstanceGroupManager( - ProjectRegionInstanceGroupManagerName instanceGroupManager, - RegionInstanceGroupManagersSetTargetPoolsRequest - regionInstanceGroupManagersSetTargetPoolsRequestResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture + setTargetPoolsRegionInstanceGroupManagerAsync( + ProjectRegionInstanceGroupManagerName instanceGroupManager, + RegionInstanceGroupManagersSetTargetPoolsRequest + regionInstanceGroupManagersSetTargetPoolsRequestResource) { SetTargetPoolsRegionInstanceGroupManagerHttpRequest request = SetTargetPoolsRegionInstanceGroupManagerHttpRequest.newBuilder() @@ -1717,7 +2041,7 @@ public final Operation setTargetPoolsRegionInstanceGroupManager( .setRegionInstanceGroupManagersSetTargetPoolsRequestResource( regionInstanceGroupManagersSetTargetPoolsRequestResource) .build(); - return setTargetPoolsRegionInstanceGroupManager(request); + return setTargetPoolsRegionInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1731,7 +2055,7 @@ public final Operation setTargetPoolsRegionInstanceGroupManager( * try (RegionInstanceGroupManagerClient regionInstanceGroupManagerClient = RegionInstanceGroupManagerClient.create()) { * ProjectRegionInstanceGroupManagerName instanceGroupManager = ProjectRegionInstanceGroupManagerName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]"); * RegionInstanceGroupManagersSetTargetPoolsRequest regionInstanceGroupManagersSetTargetPoolsRequestResource = RegionInstanceGroupManagersSetTargetPoolsRequest.newBuilder().build(); - * Operation response = regionInstanceGroupManagerClient.setTargetPoolsRegionInstanceGroupManager(instanceGroupManager.toString(), regionInstanceGroupManagersSetTargetPoolsRequestResource); + * regionInstanceGroupManagerClient.setTargetPoolsRegionInstanceGroupManagerAsync(instanceGroupManager.toString(), regionInstanceGroupManagersSetTargetPoolsRequestResource).get(); * } * * @@ -1739,11 +2063,13 @@ public final Operation setTargetPoolsRegionInstanceGroupManager( * @param regionInstanceGroupManagersSetTargetPoolsRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setTargetPoolsRegionInstanceGroupManager( - String instanceGroupManager, - RegionInstanceGroupManagersSetTargetPoolsRequest - regionInstanceGroupManagersSetTargetPoolsRequestResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture + setTargetPoolsRegionInstanceGroupManagerAsync( + String instanceGroupManager, + RegionInstanceGroupManagersSetTargetPoolsRequest + regionInstanceGroupManagersSetTargetPoolsRequestResource) { SetTargetPoolsRegionInstanceGroupManagerHttpRequest request = SetTargetPoolsRegionInstanceGroupManagerHttpRequest.newBuilder() @@ -1751,7 +2077,7 @@ public final Operation setTargetPoolsRegionInstanceGroupManager( .setRegionInstanceGroupManagersSetTargetPoolsRequestResource( regionInstanceGroupManagersSetTargetPoolsRequestResource) .build(); - return setTargetPoolsRegionInstanceGroupManager(request); + return setTargetPoolsRegionInstanceGroupManagerAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1769,17 +2095,47 @@ public final Operation setTargetPoolsRegionInstanceGroupManager( * .setInstanceGroupManager(instanceGroupManager.toString()) * .setRegionInstanceGroupManagersSetTargetPoolsRequestResource(regionInstanceGroupManagersSetTargetPoolsRequestResource) * .build(); - * Operation response = regionInstanceGroupManagerClient.setTargetPoolsRegionInstanceGroupManager(request); + * regionInstanceGroupManagerClient.setTargetPoolsRegionInstanceGroupManagerAsync(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 */ - @BetaApi - public final Operation setTargetPoolsRegionInstanceGroupManager( - SetTargetPoolsRegionInstanceGroupManagerHttpRequest request) { - return setTargetPoolsRegionInstanceGroupManagerCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture + setTargetPoolsRegionInstanceGroupManagerAsync( + SetTargetPoolsRegionInstanceGroupManagerHttpRequest request) { + return setTargetPoolsRegionInstanceGroupManagerOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Modifies the target pools to which all new instances in this group are assigned. Existing + * instances in the group are not affected. + * + *

Sample code: + * + *


+   * try (RegionInstanceGroupManagerClient regionInstanceGroupManagerClient = RegionInstanceGroupManagerClient.create()) {
+   *   ProjectRegionInstanceGroupManagerName instanceGroupManager = ProjectRegionInstanceGroupManagerName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]");
+   *   RegionInstanceGroupManagersSetTargetPoolsRequest regionInstanceGroupManagersSetTargetPoolsRequestResource = RegionInstanceGroupManagersSetTargetPoolsRequest.newBuilder().build();
+   *   SetTargetPoolsRegionInstanceGroupManagerHttpRequest request = SetTargetPoolsRegionInstanceGroupManagerHttpRequest.newBuilder()
+   *     .setInstanceGroupManager(instanceGroupManager.toString())
+   *     .setRegionInstanceGroupManagersSetTargetPoolsRequestResource(regionInstanceGroupManagersSetTargetPoolsRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = regionInstanceGroupManagerClient.setTargetPoolsRegionInstanceGroupManagerOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable< + SetTargetPoolsRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation> + setTargetPoolsRegionInstanceGroupManagerOperationCallable() { + return stub.setTargetPoolsRegionInstanceGroupManagerOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1799,7 +2155,7 @@ public final Operation setTargetPoolsRegionInstanceGroupManager( * .build(); * ApiFuture<Operation> future = regionInstanceGroupManagerClient.setTargetPoolsRegionInstanceGroupManagerCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionInstanceGroupManagerSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionInstanceGroupManagerSettings.java index 5687ad73a204..b7aeba60770e 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionInstanceGroupManagerSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionInstanceGroupManagerSettings.java @@ -21,10 +21,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -48,13 +50,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of abandonInstancesRegionInstanceGroupManager to 30 seconds: + * example, to set the total timeout of getRegionInstanceGroupManager to 30 seconds: * *

  * 
  * RegionInstanceGroupManagerSettings.Builder regionInstanceGroupManagerSettingsBuilder =
  *     RegionInstanceGroupManagerSettings.newBuilder();
- * regionInstanceGroupManagerSettingsBuilder.abandonInstancesRegionInstanceGroupManagerSettings().getRetrySettings().toBuilder()
+ * regionInstanceGroupManagerSettingsBuilder.getRegionInstanceGroupManagerSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * RegionInstanceGroupManagerSettings regionInstanceGroupManagerSettings = regionInstanceGroupManagerSettingsBuilder.build();
  * 
@@ -74,6 +76,19 @@ public class RegionInstanceGroupManagerSettings
         .abandonInstancesRegionInstanceGroupManagerSettings();
   }
 
+  /**
+   * Returns the object with the settings used for calls to
+   * abandonInstancesRegionInstanceGroupManager.
+   */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings<
+          AbandonInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      abandonInstancesRegionInstanceGroupManagerOperationSettings() {
+    return ((RegionInstanceGroupManagerStubSettings) getStubSettings())
+        .abandonInstancesRegionInstanceGroupManagerOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to deleteRegionInstanceGroupManager. */
   public UnaryCallSettings
       deleteRegionInstanceGroupManagerSettings() {
@@ -81,6 +96,15 @@ public class RegionInstanceGroupManagerSettings
         .deleteRegionInstanceGroupManagerSettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteRegionInstanceGroupManager. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteRegionInstanceGroupManagerOperationSettings() {
+    return ((RegionInstanceGroupManagerStubSettings) getStubSettings())
+        .deleteRegionInstanceGroupManagerOperationSettings();
+  }
+
   /**
    * Returns the object with the settings used for calls to
    * deleteInstancesRegionInstanceGroupManager.
@@ -91,6 +115,19 @@ public class RegionInstanceGroupManagerSettings
         .deleteInstancesRegionInstanceGroupManagerSettings();
   }
 
+  /**
+   * Returns the object with the settings used for calls to
+   * deleteInstancesRegionInstanceGroupManager.
+   */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings<
+          DeleteInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      deleteInstancesRegionInstanceGroupManagerOperationSettings() {
+    return ((RegionInstanceGroupManagerStubSettings) getStubSettings())
+        .deleteInstancesRegionInstanceGroupManagerOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getRegionInstanceGroupManager. */
   public UnaryCallSettings
       getRegionInstanceGroupManagerSettings() {
@@ -105,6 +142,15 @@ public class RegionInstanceGroupManagerSettings
         .insertRegionInstanceGroupManagerSettings();
   }
 
+  /** Returns the object with the settings used for calls to insertRegionInstanceGroupManager. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertRegionInstanceGroupManagerOperationSettings() {
+    return ((RegionInstanceGroupManagerStubSettings) getStubSettings())
+        .insertRegionInstanceGroupManagerOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listRegionInstanceGroupManagers. */
   public PagedCallSettings<
           ListRegionInstanceGroupManagersHttpRequest,
@@ -134,6 +180,15 @@ public class RegionInstanceGroupManagerSettings
         .patchRegionInstanceGroupManagerSettings();
   }
 
+  /** Returns the object with the settings used for calls to patchRegionInstanceGroupManager. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      patchRegionInstanceGroupManagerOperationSettings() {
+    return ((RegionInstanceGroupManagerStubSettings) getStubSettings())
+        .patchRegionInstanceGroupManagerOperationSettings();
+  }
+
   /**
    * Returns the object with the settings used for calls to
    * recreateInstancesRegionInstanceGroupManager.
@@ -144,6 +199,19 @@ public class RegionInstanceGroupManagerSettings
         .recreateInstancesRegionInstanceGroupManagerSettings();
   }
 
+  /**
+   * Returns the object with the settings used for calls to
+   * recreateInstancesRegionInstanceGroupManager.
+   */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings<
+          RecreateInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      recreateInstancesRegionInstanceGroupManagerOperationSettings() {
+    return ((RegionInstanceGroupManagerStubSettings) getStubSettings())
+        .recreateInstancesRegionInstanceGroupManagerOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to resizeRegionInstanceGroupManager. */
   public UnaryCallSettings
       resizeRegionInstanceGroupManagerSettings() {
@@ -151,6 +219,15 @@ public class RegionInstanceGroupManagerSettings
         .resizeRegionInstanceGroupManagerSettings();
   }
 
+  /** Returns the object with the settings used for calls to resizeRegionInstanceGroupManager. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      resizeRegionInstanceGroupManagerOperationSettings() {
+    return ((RegionInstanceGroupManagerStubSettings) getStubSettings())
+        .resizeRegionInstanceGroupManagerOperationSettings();
+  }
+
   /**
    * Returns the object with the settings used for calls to
    * setInstanceTemplateRegionInstanceGroupManager.
@@ -161,6 +238,19 @@ public class RegionInstanceGroupManagerSettings
         .setInstanceTemplateRegionInstanceGroupManagerSettings();
   }
 
+  /**
+   * Returns the object with the settings used for calls to
+   * setInstanceTemplateRegionInstanceGroupManager.
+   */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings<
+          SetInstanceTemplateRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      setInstanceTemplateRegionInstanceGroupManagerOperationSettings() {
+    return ((RegionInstanceGroupManagerStubSettings) getStubSettings())
+        .setInstanceTemplateRegionInstanceGroupManagerOperationSettings();
+  }
+
   /**
    * Returns the object with the settings used for calls to
    * setTargetPoolsRegionInstanceGroupManager.
@@ -171,6 +261,19 @@ public class RegionInstanceGroupManagerSettings
         .setTargetPoolsRegionInstanceGroupManagerSettings();
   }
 
+  /**
+   * Returns the object with the settings used for calls to
+   * setTargetPoolsRegionInstanceGroupManager.
+   */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings<
+          SetTargetPoolsRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      setTargetPoolsRegionInstanceGroupManagerOperationSettings() {
+    return ((RegionInstanceGroupManagerStubSettings) getStubSettings())
+        .setTargetPoolsRegionInstanceGroupManagerOperationSettings();
+  }
+
   public static final RegionInstanceGroupManagerSettings create(
       RegionInstanceGroupManagerStubSettings stub) throws IOException {
     return new RegionInstanceGroupManagerSettings.Builder(stub.toBuilder()).build();
@@ -284,12 +387,33 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().abandonInstancesRegionInstanceGroupManagerSettings();
     }
 
+    /**
+     * Returns the builder for the settings used for calls to
+     * abandonInstancesRegionInstanceGroupManager.
+     */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            AbandonInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        abandonInstancesRegionInstanceGroupManagerOperationSettings() {
+      return getStubSettingsBuilder().abandonInstancesRegionInstanceGroupManagerOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to deleteRegionInstanceGroupManager. */
     public UnaryCallSettings.Builder
         deleteRegionInstanceGroupManagerSettings() {
       return getStubSettingsBuilder().deleteRegionInstanceGroupManagerSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteRegionInstanceGroupManager. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            DeleteRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        deleteRegionInstanceGroupManagerOperationSettings() {
+      return getStubSettingsBuilder().deleteRegionInstanceGroupManagerOperationSettings();
+    }
+
     /**
      * Returns the builder for the settings used for calls to
      * deleteInstancesRegionInstanceGroupManager.
@@ -300,6 +424,18 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteInstancesRegionInstanceGroupManagerSettings();
     }
 
+    /**
+     * Returns the builder for the settings used for calls to
+     * deleteInstancesRegionInstanceGroupManager.
+     */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            DeleteInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        deleteInstancesRegionInstanceGroupManagerOperationSettings() {
+      return getStubSettingsBuilder().deleteInstancesRegionInstanceGroupManagerOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getRegionInstanceGroupManager. */
     public UnaryCallSettings.Builder
         getRegionInstanceGroupManagerSettings() {
@@ -312,6 +448,15 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().insertRegionInstanceGroupManagerSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertRegionInstanceGroupManager. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            InsertRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        insertRegionInstanceGroupManagerOperationSettings() {
+      return getStubSettingsBuilder().insertRegionInstanceGroupManagerOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listRegionInstanceGroupManagers. */
     public PagedCallSettings.Builder<
             ListRegionInstanceGroupManagersHttpRequest,
@@ -338,6 +483,15 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().patchRegionInstanceGroupManagerSettings();
     }
 
+    /** Returns the builder for the settings used for calls to patchRegionInstanceGroupManager. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            PatchRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        patchRegionInstanceGroupManagerOperationSettings() {
+      return getStubSettingsBuilder().patchRegionInstanceGroupManagerOperationSettings();
+    }
+
     /**
      * Returns the builder for the settings used for calls to
      * recreateInstancesRegionInstanceGroupManager.
@@ -348,12 +502,34 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().recreateInstancesRegionInstanceGroupManagerSettings();
     }
 
+    /**
+     * Returns the builder for the settings used for calls to
+     * recreateInstancesRegionInstanceGroupManager.
+     */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            RecreateInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        recreateInstancesRegionInstanceGroupManagerOperationSettings() {
+      return getStubSettingsBuilder()
+          .recreateInstancesRegionInstanceGroupManagerOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to resizeRegionInstanceGroupManager. */
     public UnaryCallSettings.Builder
         resizeRegionInstanceGroupManagerSettings() {
       return getStubSettingsBuilder().resizeRegionInstanceGroupManagerSettings();
     }
 
+    /** Returns the builder for the settings used for calls to resizeRegionInstanceGroupManager. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            ResizeRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        resizeRegionInstanceGroupManagerOperationSettings() {
+      return getStubSettingsBuilder().resizeRegionInstanceGroupManagerOperationSettings();
+    }
+
     /**
      * Returns the builder for the settings used for calls to
      * setInstanceTemplateRegionInstanceGroupManager.
@@ -364,6 +540,19 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().setInstanceTemplateRegionInstanceGroupManagerSettings();
     }
 
+    /**
+     * Returns the builder for the settings used for calls to
+     * setInstanceTemplateRegionInstanceGroupManager.
+     */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetInstanceTemplateRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        setInstanceTemplateRegionInstanceGroupManagerOperationSettings() {
+      return getStubSettingsBuilder()
+          .setInstanceTemplateRegionInstanceGroupManagerOperationSettings();
+    }
+
     /**
      * Returns the builder for the settings used for calls to
      * setTargetPoolsRegionInstanceGroupManager.
@@ -373,6 +562,18 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().setTargetPoolsRegionInstanceGroupManagerSettings();
     }
 
+    /**
+     * Returns the builder for the settings used for calls to
+     * setTargetPoolsRegionInstanceGroupManager.
+     */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetTargetPoolsRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        setTargetPoolsRegionInstanceGroupManagerOperationSettings() {
+      return getStubSettingsBuilder().setTargetPoolsRegionInstanceGroupManagerOperationSettings();
+    }
+
     @Override
     public RegionInstanceGroupManagerSettings build() throws IOException {
       return new RegionInstanceGroupManagerSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionInstanceGroupSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionInstanceGroupSettings.java
index 5a97bd7daf60..d59b92ccf728 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionInstanceGroupSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionInstanceGroupSettings.java
@@ -22,10 +22,12 @@
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
 import com.google.api.gax.rpc.ClientSettings;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.TransportChannelProvider;
 import com.google.api.gax.rpc.UnaryCallSettings;
@@ -96,6 +98,15 @@ public class RegionInstanceGroupSettings extends ClientSettings
+      setNamedPortsRegionInstanceGroupOperationSettings() {
+    return ((RegionInstanceGroupStubSettings) getStubSettings())
+        .setNamedPortsRegionInstanceGroupOperationSettings();
+  }
+
   public static final RegionInstanceGroupSettings create(RegionInstanceGroupStubSettings stub)
       throws IOException {
     return new RegionInstanceGroupSettings.Builder(stub.toBuilder()).build();
@@ -228,6 +239,15 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().setNamedPortsRegionInstanceGroupSettings();
     }
 
+    /** Returns the builder for the settings used for calls to setNamedPortsRegionInstanceGroup. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetNamedPortsRegionInstanceGroupHttpRequest, EmptyMessage, Operation>
+        setNamedPortsRegionInstanceGroupOperationSettings() {
+      return getStubSettingsBuilder().setNamedPortsRegionInstanceGroupOperationSettings();
+    }
+
     @Override
     public RegionInstanceGroupSettings build() throws IOException {
       return new RegionInstanceGroupSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionOperationClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionOperationClient.java
index ae66e41e6c6f..a72385759b3b 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionOperationClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionOperationClient.java
@@ -20,6 +20,7 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
@@ -246,7 +247,7 @@ public final void deleteRegionOperation(DeleteRegionOperationHttpRequest request
    * 
*/ @BetaApi - public final UnaryCallable + public final UnaryCallable deleteRegionOperationCallable() { return stub.deleteRegionOperationCallable(); } diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionOperationSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionOperationSettings.java index 6391e82e007d..a8f9cf2e16f1 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionOperationSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RegionOperationSettings.java @@ -21,6 +21,7 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; @@ -64,7 +65,8 @@ @BetaApi public class RegionOperationSettings extends ClientSettings { /** Returns the object with the settings used for calls to deleteRegionOperation. */ - public UnaryCallSettings deleteRegionOperationSettings() { + public UnaryCallSettings + deleteRegionOperationSettings() { return ((RegionOperationStubSettings) getStubSettings()).deleteRegionOperationSettings(); } @@ -183,7 +185,7 @@ public Builder applyToAllUnaryMethods( } /** Returns the builder for the settings used for calls to deleteRegionOperation. */ - public UnaryCallSettings.Builder + public UnaryCallSettings.Builder deleteRegionOperationSettings() { return getStubSettingsBuilder().deleteRegionOperationSettings(); } diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RouteClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RouteClient.java index 7823767111cf..26cf61d9ce17 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RouteClient.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RouteClient.java @@ -20,9 +20,12 @@ import com.google.api.core.ApiFutures; import com.google.api.core.BetaApi; import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.httpjson.EmptyMessage; +import com.google.api.gax.longrunning.OperationFuture; import com.google.api.gax.paging.AbstractFixedSizeCollection; import com.google.api.gax.paging.AbstractPage; import com.google.api.gax.paging.AbstractPagedListResponse; +import com.google.api.gax.rpc.OperationCallable; import com.google.api.gax.rpc.PageContext; import com.google.api.gax.rpc.UnaryCallable; import com.google.cloud.compute.v1.stub.RouteStub; @@ -43,7 +46,7 @@ * * try (RouteClient routeClient = RouteClient.create()) { * ProjectGlobalRouteName route = ProjectGlobalRouteName.of("[PROJECT]", "[ROUTE]"); - * Operation response = routeClient.deleteRoute(route); + * Route response = routeClient.getRoute(route); * } * * @@ -103,6 +106,7 @@ public class RouteClient implements BackgroundResource { private final RouteSettings settings; private final RouteStub stub; + private final GlobalOperationClient operationsClient; /** Constructs an instance of RouteClient with default settings. */ public static final RouteClient create() throws IOException { @@ -133,12 +137,14 @@ public static final RouteClient create(RouteStub stub) { protected RouteClient(RouteSettings settings) throws IOException { this.settings = settings; this.stub = ((RouteStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected RouteClient(RouteStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } public final RouteSettings getSettings() { @@ -150,6 +156,16 @@ public RouteStub getStub() { return stub; } + /** + * Returns the GlobalOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final GlobalOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Deletes the specified Route resource. @@ -159,21 +175,23 @@ public RouteStub getStub() { *

    * try (RouteClient routeClient = RouteClient.create()) {
    *   ProjectGlobalRouteName route = ProjectGlobalRouteName.of("[PROJECT]", "[ROUTE]");
-   *   Operation response = routeClient.deleteRoute(route);
+   *   routeClient.deleteRouteAsync(route).get();
    * }
    * 
* * @param route Name of the Route resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteRoute(ProjectGlobalRouteName route) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteRouteAsync( + ProjectGlobalRouteName route) { DeleteRouteHttpRequest request = DeleteRouteHttpRequest.newBuilder() .setRoute(route == null ? null : route.toString()) .build(); - return deleteRoute(request); + return deleteRouteAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -185,18 +203,19 @@ public final Operation deleteRoute(ProjectGlobalRouteName route) { *

    * try (RouteClient routeClient = RouteClient.create()) {
    *   ProjectGlobalRouteName route = ProjectGlobalRouteName.of("[PROJECT]", "[ROUTE]");
-   *   Operation response = routeClient.deleteRoute(route.toString());
+   *   routeClient.deleteRouteAsync(route.toString()).get();
    * }
    * 
* * @param route Name of the Route resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteRoute(String route) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteRouteAsync(String route) { DeleteRouteHttpRequest request = DeleteRouteHttpRequest.newBuilder().setRoute(route).build(); - return deleteRoute(request); + return deleteRouteAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -211,16 +230,42 @@ public final Operation deleteRoute(String route) { * DeleteRouteHttpRequest request = DeleteRouteHttpRequest.newBuilder() * .setRoute(route.toString()) * .build(); - * Operation response = routeClient.deleteRoute(request); + * routeClient.deleteRouteAsync(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 */ - @BetaApi - public final Operation deleteRoute(DeleteRouteHttpRequest request) { - return deleteRouteCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteRouteAsync( + DeleteRouteHttpRequest request) { + return deleteRouteOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified Route resource. + * + *

Sample code: + * + *


+   * try (RouteClient routeClient = RouteClient.create()) {
+   *   ProjectGlobalRouteName route = ProjectGlobalRouteName.of("[PROJECT]", "[ROUTE]");
+   *   DeleteRouteHttpRequest request = DeleteRouteHttpRequest.newBuilder()
+   *     .setRoute(route.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = routeClient.deleteRouteOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteRouteOperationCallable() { + return stub.deleteRouteOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -237,7 +282,7 @@ public final Operation deleteRoute(DeleteRouteHttpRequest request) { * .build(); * ApiFuture<Operation> future = routeClient.deleteRouteCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -354,7 +399,7 @@ public final UnaryCallable getRouteCallable() { * try (RouteClient routeClient = RouteClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * Route routeResource = Route.newBuilder().build(); - * Operation response = routeClient.insertRoute(project, routeResource); + * routeClient.insertRouteAsync(project, routeResource).get(); * } * * @@ -374,15 +419,17 @@ public final UnaryCallable getRouteCallable() { * (== resource_for beta.routes ==) (== resource_for v1.routes ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertRoute(ProjectName project, Route routeResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertRouteAsync( + ProjectName project, Route routeResource) { InsertRouteHttpRequest request = InsertRouteHttpRequest.newBuilder() .setProject(project == null ? null : project.toString()) .setRouteResource(routeResource) .build(); - return insertRoute(request); + return insertRouteAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -395,7 +442,7 @@ public final Operation insertRoute(ProjectName project, Route routeResource) { * try (RouteClient routeClient = RouteClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * Route routeResource = Route.newBuilder().build(); - * Operation response = routeClient.insertRoute(project.toString(), routeResource); + * routeClient.insertRouteAsync(project.toString(), routeResource).get(); * } * * @@ -415,15 +462,17 @@ public final Operation insertRoute(ProjectName project, Route routeResource) { * (== resource_for beta.routes ==) (== resource_for v1.routes ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertRoute(String project, Route routeResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertRouteAsync( + String project, Route routeResource) { InsertRouteHttpRequest request = InsertRouteHttpRequest.newBuilder() .setProject(project) .setRouteResource(routeResource) .build(); - return insertRoute(request); + return insertRouteAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -440,16 +489,44 @@ public final Operation insertRoute(String project, Route routeResource) { * .setProject(project.toString()) * .setRouteResource(routeResource) * .build(); - * Operation response = routeClient.insertRoute(request); + * routeClient.insertRouteAsync(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 */ - @BetaApi - public final Operation insertRoute(InsertRouteHttpRequest request) { - return insertRouteCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertRouteAsync( + InsertRouteHttpRequest request) { + return insertRouteOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a Route resource in the specified project using the data included in the request. + * + *

Sample code: + * + *


+   * try (RouteClient routeClient = RouteClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   Route routeResource = Route.newBuilder().build();
+   *   InsertRouteHttpRequest request = InsertRouteHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .setRouteResource(routeResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = routeClient.insertRouteOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertRouteOperationCallable() { + return stub.insertRouteOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -468,7 +545,7 @@ public final Operation insertRoute(InsertRouteHttpRequest request) { * .build(); * ApiFuture<Operation> future = routeClient.insertRouteCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RouteSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RouteSettings.java index 0e7e58b36b80..14d031e41053 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RouteSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RouteSettings.java @@ -21,10 +21,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -48,13 +50,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteRoute to 30 seconds: + * example, to set the total timeout of getRoute to 30 seconds: * *

  * 
  * RouteSettings.Builder routeSettingsBuilder =
  *     RouteSettings.newBuilder();
- * routeSettingsBuilder.deleteRouteSettings().getRetrySettings().toBuilder()
+ * routeSettingsBuilder.getRouteSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * RouteSettings routeSettings = routeSettingsBuilder.build();
  * 
@@ -68,6 +70,14 @@ public UnaryCallSettings deleteRouteSettings(
     return ((RouteStubSettings) getStubSettings()).deleteRouteSettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteRoute. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteRouteOperationSettings() {
+    return ((RouteStubSettings) getStubSettings()).deleteRouteOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getRoute. */
   public UnaryCallSettings getRouteSettings() {
     return ((RouteStubSettings) getStubSettings()).getRouteSettings();
@@ -78,6 +88,14 @@ public UnaryCallSettings insertRouteSettings(
     return ((RouteStubSettings) getStubSettings()).insertRouteSettings();
   }
 
+  /** Returns the object with the settings used for calls to insertRoute. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertRouteOperationSettings() {
+    return ((RouteStubSettings) getStubSettings()).insertRouteOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listRoutes. */
   public PagedCallSettings
       listRoutesSettings() {
@@ -190,6 +208,14 @@ public UnaryCallSettings.Builder deleteRouteS
       return getStubSettingsBuilder().deleteRouteSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteRoute. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteRouteOperationSettings() {
+      return getStubSettingsBuilder().deleteRouteOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getRoute. */
     public UnaryCallSettings.Builder getRouteSettings() {
       return getStubSettingsBuilder().getRouteSettings();
@@ -200,6 +226,14 @@ public UnaryCallSettings.Builder insertRouteS
       return getStubSettingsBuilder().insertRouteSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertRoute. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertRouteOperationSettings() {
+      return getStubSettingsBuilder().insertRouteOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listRoutes. */
     public PagedCallSettings.Builder
         listRoutesSettings() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RouterClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RouterClient.java
index dadaa6afb804..2e97c9eb9795 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RouterClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RouterClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.RouterStub;
@@ -43,7 +46,7 @@
  * 
  * try (RouterClient routerClient = RouterClient.create()) {
  *   ProjectRegionRouterName router = ProjectRegionRouterName.of("[PROJECT]", "[REGION]", "[ROUTER]");
- *   Operation response = routerClient.deleteRouter(router);
+ *   Router response = routerClient.getRouter(router);
  * }
  * 
  * 
@@ -103,6 +106,7 @@ public class RouterClient implements BackgroundResource { private final RouterSettings settings; private final RouterStub stub; + private final RegionOperationClient operationsClient; /** Constructs an instance of RouterClient with default settings. */ public static final RouterClient create() throws IOException { @@ -133,12 +137,14 @@ public static final RouterClient create(RouterStub stub) { protected RouterClient(RouterSettings settings) throws IOException { this.settings = settings; this.stub = ((RouterStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected RouterClient(RouterStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub()); } public final RouterSettings getSettings() { @@ -150,6 +156,16 @@ public RouterStub getStub() { return stub; } + /** + * Returns the RegionOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final RegionOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Retrieves an aggregated list of routers. @@ -297,21 +313,23 @@ public final AggregatedListRoutersPagedResponse aggregatedListRouters( *

    * try (RouterClient routerClient = RouterClient.create()) {
    *   ProjectRegionRouterName router = ProjectRegionRouterName.of("[PROJECT]", "[REGION]", "[ROUTER]");
-   *   Operation response = routerClient.deleteRouter(router);
+   *   routerClient.deleteRouterAsync(router).get();
    * }
    * 
* * @param router Name of the Router resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteRouter(ProjectRegionRouterName router) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteRouterAsync( + ProjectRegionRouterName router) { DeleteRouterHttpRequest request = DeleteRouterHttpRequest.newBuilder() .setRouter(router == null ? null : router.toString()) .build(); - return deleteRouter(request); + return deleteRouterAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -323,19 +341,20 @@ public final Operation deleteRouter(ProjectRegionRouterName router) { *

    * try (RouterClient routerClient = RouterClient.create()) {
    *   ProjectRegionRouterName router = ProjectRegionRouterName.of("[PROJECT]", "[REGION]", "[ROUTER]");
-   *   Operation response = routerClient.deleteRouter(router.toString());
+   *   routerClient.deleteRouterAsync(router.toString()).get();
    * }
    * 
* * @param router Name of the Router resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteRouter(String router) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteRouterAsync(String router) { DeleteRouterHttpRequest request = DeleteRouterHttpRequest.newBuilder().setRouter(router).build(); - return deleteRouter(request); + return deleteRouterAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -350,16 +369,42 @@ public final Operation deleteRouter(String router) { * DeleteRouterHttpRequest request = DeleteRouterHttpRequest.newBuilder() * .setRouter(router.toString()) * .build(); - * Operation response = routerClient.deleteRouter(request); + * routerClient.deleteRouterAsync(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 */ - @BetaApi - public final Operation deleteRouter(DeleteRouterHttpRequest request) { - return deleteRouterCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteRouterAsync( + DeleteRouterHttpRequest request) { + return deleteRouterOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified Router resource. + * + *

Sample code: + * + *


+   * try (RouterClient routerClient = RouterClient.create()) {
+   *   ProjectRegionRouterName router = ProjectRegionRouterName.of("[PROJECT]", "[REGION]", "[ROUTER]");
+   *   DeleteRouterHttpRequest request = DeleteRouterHttpRequest.newBuilder()
+   *     .setRouter(router.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = routerClient.deleteRouterOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteRouterOperationCallable() { + return stub.deleteRouterOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -376,7 +421,7 @@ public final Operation deleteRouter(DeleteRouterHttpRequest request) { * .build(); * ApiFuture<Operation> future = routerClient.deleteRouterCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -735,7 +780,7 @@ public final RouterStatusResponse getRouterStatusRouter( * try (RouterClient routerClient = RouterClient.create()) { * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * Router routerResource = Router.newBuilder().build(); - * Operation response = routerClient.insertRouter(region, routerResource); + * routerClient.insertRouterAsync(region, routerResource).get(); * } * * @@ -743,15 +788,17 @@ public final RouterStatusResponse getRouterStatusRouter( * @param routerResource Router resource. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertRouter(ProjectRegionName region, Router routerResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertRouterAsync( + ProjectRegionName region, Router routerResource) { InsertRouterHttpRequest request = InsertRouterHttpRequest.newBuilder() .setRegion(region == null ? null : region.toString()) .setRouterResource(routerResource) .build(); - return insertRouter(request); + return insertRouterAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -765,7 +812,7 @@ public final Operation insertRouter(ProjectRegionName region, Router routerResou * try (RouterClient routerClient = RouterClient.create()) { * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * Router routerResource = Router.newBuilder().build(); - * Operation response = routerClient.insertRouter(region.toString(), routerResource); + * routerClient.insertRouterAsync(region.toString(), routerResource).get(); * } * * @@ -773,15 +820,17 @@ public final Operation insertRouter(ProjectRegionName region, Router routerResou * @param routerResource Router resource. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertRouter(String region, Router routerResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertRouterAsync( + String region, Router routerResource) { InsertRouterHttpRequest request = InsertRouterHttpRequest.newBuilder() .setRegion(region) .setRouterResource(routerResource) .build(); - return insertRouter(request); + return insertRouterAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -799,16 +848,45 @@ public final Operation insertRouter(String region, Router routerResource) { * .setRegion(region.toString()) * .setRouterResource(routerResource) * .build(); - * Operation response = routerClient.insertRouter(request); + * routerClient.insertRouterAsync(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 */ - @BetaApi - public final Operation insertRouter(InsertRouterHttpRequest request) { - return insertRouterCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertRouterAsync( + InsertRouterHttpRequest request) { + return insertRouterOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a Router resource in the specified project and region using the data included in the + * request. + * + *

Sample code: + * + *


+   * try (RouterClient routerClient = RouterClient.create()) {
+   *   ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
+   *   Router routerResource = Router.newBuilder().build();
+   *   InsertRouterHttpRequest request = InsertRouterHttpRequest.newBuilder()
+   *     .setRegion(region.toString())
+   *     .setRouterResource(routerResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = routerClient.insertRouterOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertRouterOperationCallable() { + return stub.insertRouterOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -828,7 +906,7 @@ public final Operation insertRouter(InsertRouterHttpRequest request) { * .build(); * ApiFuture<Operation> future = routerClient.insertRouterCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -984,7 +1062,7 @@ public final UnaryCallable listRoutersCallab * ProjectRegionRouterName router = ProjectRegionRouterName.of("[PROJECT]", "[REGION]", "[ROUTER]"); * Router routerResource = Router.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = routerClient.patchRouter(router, routerResource, fieldMask); + * routerClient.patchRouterAsync(router, routerResource, fieldMask).get(); * } * * @@ -996,8 +1074,9 @@ public final UnaryCallable listRoutersCallab * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchRouter( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchRouterAsync( ProjectRegionRouterName router, Router routerResource, List fieldMask) { PatchRouterHttpRequest request = @@ -1006,7 +1085,7 @@ public final Operation patchRouter( .setRouterResource(routerResource) .addAllFieldMask(fieldMask) .build(); - return patchRouter(request); + return patchRouterAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1021,7 +1100,7 @@ public final Operation patchRouter( * ProjectRegionRouterName router = ProjectRegionRouterName.of("[PROJECT]", "[REGION]", "[ROUTER]"); * Router routerResource = Router.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = routerClient.patchRouter(router.toString(), routerResource, fieldMask); + * routerClient.patchRouterAsync(router.toString(), routerResource, fieldMask).get(); * } * * @@ -1033,8 +1112,10 @@ public final Operation patchRouter( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchRouter(String router, Router routerResource, List fieldMask) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchRouterAsync( + String router, Router routerResource, List fieldMask) { PatchRouterHttpRequest request = PatchRouterHttpRequest.newBuilder() @@ -1042,7 +1123,7 @@ public final Operation patchRouter(String router, Router routerResource, List * * @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 */ - @BetaApi - public final Operation patchRouter(PatchRouterHttpRequest request) { - return patchRouterCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchRouterAsync( + PatchRouterHttpRequest request) { + return patchRouterOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Patches the specified Router resource with the data included in the request. This method + * supports PATCH semantics and uses JSON merge patch format and processing rules. + * + *

Sample code: + * + *


+   * try (RouterClient routerClient = RouterClient.create()) {
+   *   ProjectRegionRouterName router = ProjectRegionRouterName.of("[PROJECT]", "[REGION]", "[ROUTER]");
+   *   Router routerResource = Router.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   PatchRouterHttpRequest request = PatchRouterHttpRequest.newBuilder()
+   *     .setRouter(router.toString())
+   *     .setRouterResource(routerResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = routerClient.patchRouterOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + patchRouterOperationCallable() { + return stub.patchRouterOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1093,7 +1205,7 @@ public final Operation patchRouter(PatchRouterHttpRequest request) { * .build(); * ApiFuture<Operation> future = routerClient.patchRouterCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1228,7 +1340,7 @@ public final RoutersPreviewResponse previewRouter(PreviewRouterHttpRequest reque * ProjectRegionRouterName router = ProjectRegionRouterName.of("[PROJECT]", "[REGION]", "[ROUTER]"); * Router routerResource = Router.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = routerClient.updateRouter(router, routerResource, fieldMask); + * routerClient.updateRouterAsync(router, routerResource, fieldMask).get(); * } * * @@ -1240,8 +1352,9 @@ public final RoutersPreviewResponse previewRouter(PreviewRouterHttpRequest reque * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation updateRouter( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateRouterAsync( ProjectRegionRouterName router, Router routerResource, List fieldMask) { UpdateRouterHttpRequest request = @@ -1250,7 +1363,7 @@ public final Operation updateRouter( .setRouterResource(routerResource) .addAllFieldMask(fieldMask) .build(); - return updateRouter(request); + return updateRouterAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1264,7 +1377,7 @@ public final Operation updateRouter( * ProjectRegionRouterName router = ProjectRegionRouterName.of("[PROJECT]", "[REGION]", "[ROUTER]"); * Router routerResource = Router.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = routerClient.updateRouter(router.toString(), routerResource, fieldMask); + * routerClient.updateRouterAsync(router.toString(), routerResource, fieldMask).get(); * } * * @@ -1276,8 +1389,9 @@ public final Operation updateRouter( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation updateRouter( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateRouterAsync( String router, Router routerResource, List fieldMask) { UpdateRouterHttpRequest request = @@ -1286,7 +1400,7 @@ public final Operation updateRouter( .setRouterResource(routerResource) .addAllFieldMask(fieldMask) .build(); - return updateRouter(request); + return updateRouterAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1305,16 +1419,46 @@ public final Operation updateRouter( * .setRouterResource(routerResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = routerClient.updateRouter(request); + * routerClient.updateRouterAsync(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 */ - @BetaApi - public final Operation updateRouter(UpdateRouterHttpRequest request) { - return updateRouterCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateRouterAsync( + UpdateRouterHttpRequest request) { + return updateRouterOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Updates the specified Router resource with the data included in the request. + * + *

Sample code: + * + *


+   * try (RouterClient routerClient = RouterClient.create()) {
+   *   ProjectRegionRouterName router = ProjectRegionRouterName.of("[PROJECT]", "[REGION]", "[ROUTER]");
+   *   Router routerResource = Router.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   UpdateRouterHttpRequest request = UpdateRouterHttpRequest.newBuilder()
+   *     .setRouter(router.toString())
+   *     .setRouterResource(routerResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = routerClient.updateRouterOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + updateRouterOperationCallable() { + return stub.updateRouterOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1335,7 +1479,7 @@ public final Operation updateRouter(UpdateRouterHttpRequest request) { * .build(); * ApiFuture<Operation> future = routerClient.updateRouterCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RouterSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RouterSettings.java index db3b3c409c4f..6fc4ad95cb23 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RouterSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/RouterSettings.java @@ -23,10 +23,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -50,13 +52,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteRouter to 30 seconds: + * example, to set the total timeout of getRouter to 30 seconds: * *

  * 
  * RouterSettings.Builder routerSettingsBuilder =
  *     RouterSettings.newBuilder();
- * routerSettingsBuilder.deleteRouterSettings().getRetrySettings().toBuilder()
+ * routerSettingsBuilder.getRouterSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * RouterSettings routerSettings = routerSettingsBuilder.build();
  * 
@@ -79,6 +81,14 @@ public UnaryCallSettings deleteRouterSetting
     return ((RouterStubSettings) getStubSettings()).deleteRouterSettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteRouter. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteRouterOperationSettings() {
+    return ((RouterStubSettings) getStubSettings()).deleteRouterOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getRouter. */
   public UnaryCallSettings getRouterSettings() {
     return ((RouterStubSettings) getStubSettings()).getRouterSettings();
@@ -104,6 +114,14 @@ public UnaryCallSettings insertRouterSetting
     return ((RouterStubSettings) getStubSettings()).insertRouterSettings();
   }
 
+  /** Returns the object with the settings used for calls to insertRouter. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertRouterOperationSettings() {
+    return ((RouterStubSettings) getStubSettings()).insertRouterOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listRouters. */
   public PagedCallSettings
       listRoutersSettings() {
@@ -115,6 +133,14 @@ public UnaryCallSettings patchRouterSettings(
     return ((RouterStubSettings) getStubSettings()).patchRouterSettings();
   }
 
+  /** Returns the object with the settings used for calls to patchRouter. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      patchRouterOperationSettings() {
+    return ((RouterStubSettings) getStubSettings()).patchRouterOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to previewRouter. */
   public UnaryCallSettings
       previewRouterSettings() {
@@ -126,6 +152,14 @@ public UnaryCallSettings updateRouterSetting
     return ((RouterStubSettings) getStubSettings()).updateRouterSettings();
   }
 
+  /** Returns the object with the settings used for calls to updateRouter. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      updateRouterOperationSettings() {
+    return ((RouterStubSettings) getStubSettings()).updateRouterOperationSettings();
+  }
+
   public static final RouterSettings create(RouterStubSettings stub) throws IOException {
     return new RouterSettings.Builder(stub.toBuilder()).build();
   }
@@ -241,6 +275,14 @@ public UnaryCallSettings.Builder deleteRoute
       return getStubSettingsBuilder().deleteRouterSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteRouter. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteRouterOperationSettings() {
+      return getStubSettingsBuilder().deleteRouterOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getRouter. */
     public UnaryCallSettings.Builder getRouterSettings() {
       return getStubSettingsBuilder().getRouterSettings();
@@ -266,6 +308,14 @@ public UnaryCallSettings.Builder insertRoute
       return getStubSettingsBuilder().insertRouterSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertRouter. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertRouterOperationSettings() {
+      return getStubSettingsBuilder().insertRouterOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listRouters. */
     public PagedCallSettings.Builder
         listRoutersSettings() {
@@ -277,6 +327,14 @@ public UnaryCallSettings.Builder patchRouterS
       return getStubSettingsBuilder().patchRouterSettings();
     }
 
+    /** Returns the builder for the settings used for calls to patchRouter. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchRouterOperationSettings() {
+      return getStubSettingsBuilder().patchRouterOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to previewRouter. */
     public UnaryCallSettings.Builder
         previewRouterSettings() {
@@ -288,6 +346,14 @@ public UnaryCallSettings.Builder updateRoute
       return getStubSettingsBuilder().updateRouterSettings();
     }
 
+    /** Returns the builder for the settings used for calls to updateRouter. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        updateRouterOperationSettings() {
+      return getStubSettingsBuilder().updateRouterOperationSettings();
+    }
+
     @Override
     public RouterSettings build() throws IOException {
       return new RouterSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SecurityPolicyClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SecurityPolicyClient.java
index e1add564f16d..82d09e8fc5a2 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SecurityPolicyClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SecurityPolicyClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.SecurityPolicyStub;
@@ -43,8 +46,7 @@
  * 
  * try (SecurityPolicyClient securityPolicyClient = SecurityPolicyClient.create()) {
  *   ProjectGlobalSecurityPolicyName securityPolicy = ProjectGlobalSecurityPolicyName.of("[PROJECT]", "[SECURITY_POLICY]");
- *   SecurityPolicyRule securityPolicyRuleResource = SecurityPolicyRule.newBuilder().build();
- *   Operation response = securityPolicyClient.addRuleSecurityPolicy(securityPolicy, securityPolicyRuleResource);
+ *   SecurityPolicy response = securityPolicyClient.getSecurityPolicy(securityPolicy);
  * }
  * 
  * 
@@ -104,6 +106,7 @@ public class SecurityPolicyClient implements BackgroundResource { private final SecurityPolicySettings settings; private final SecurityPolicyStub stub; + private final GlobalOperationClient operationsClient; /** Constructs an instance of SecurityPolicyClient with default settings. */ public static final SecurityPolicyClient create() throws IOException { @@ -136,12 +139,14 @@ public static final SecurityPolicyClient create(SecurityPolicyStub stub) { protected SecurityPolicyClient(SecurityPolicySettings settings) throws IOException { this.settings = settings; this.stub = ((SecurityPolicyStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected SecurityPolicyClient(SecurityPolicyStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } public final SecurityPolicySettings getSettings() { @@ -153,6 +158,16 @@ public SecurityPolicyStub getStub() { return stub; } + /** + * Returns the GlobalOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final GlobalOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Inserts a rule into a security policy. @@ -163,7 +178,7 @@ public SecurityPolicyStub getStub() { * try (SecurityPolicyClient securityPolicyClient = SecurityPolicyClient.create()) { * ProjectGlobalSecurityPolicyName securityPolicy = ProjectGlobalSecurityPolicyName.of("[PROJECT]", "[SECURITY_POLICY]"); * SecurityPolicyRule securityPolicyRuleResource = SecurityPolicyRule.newBuilder().build(); - * Operation response = securityPolicyClient.addRuleSecurityPolicy(securityPolicy, securityPolicyRuleResource); + * securityPolicyClient.addRuleSecurityPolicyAsync(securityPolicy, securityPolicyRuleResource).get(); * } * * @@ -172,8 +187,9 @@ public SecurityPolicyStub getStub() { * along with the action to be taken when traffic matches this condition (allow or deny). * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation addRuleSecurityPolicy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture addRuleSecurityPolicyAsync( ProjectGlobalSecurityPolicyName securityPolicy, SecurityPolicyRule securityPolicyRuleResource) { @@ -182,7 +198,7 @@ public final Operation addRuleSecurityPolicy( .setSecurityPolicy(securityPolicy == null ? null : securityPolicy.toString()) .setSecurityPolicyRuleResource(securityPolicyRuleResource) .build(); - return addRuleSecurityPolicy(request); + return addRuleSecurityPolicyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -195,7 +211,7 @@ public final Operation addRuleSecurityPolicy( * try (SecurityPolicyClient securityPolicyClient = SecurityPolicyClient.create()) { * ProjectGlobalSecurityPolicyName securityPolicy = ProjectGlobalSecurityPolicyName.of("[PROJECT]", "[SECURITY_POLICY]"); * SecurityPolicyRule securityPolicyRuleResource = SecurityPolicyRule.newBuilder().build(); - * Operation response = securityPolicyClient.addRuleSecurityPolicy(securityPolicy.toString(), securityPolicyRuleResource); + * securityPolicyClient.addRuleSecurityPolicyAsync(securityPolicy.toString(), securityPolicyRuleResource).get(); * } * * @@ -204,8 +220,9 @@ public final Operation addRuleSecurityPolicy( * along with the action to be taken when traffic matches this condition (allow or deny). * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation addRuleSecurityPolicy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture addRuleSecurityPolicyAsync( String securityPolicy, SecurityPolicyRule securityPolicyRuleResource) { AddRuleSecurityPolicyHttpRequest request = @@ -213,7 +230,7 @@ public final Operation addRuleSecurityPolicy( .setSecurityPolicy(securityPolicy) .setSecurityPolicyRuleResource(securityPolicyRuleResource) .build(); - return addRuleSecurityPolicy(request); + return addRuleSecurityPolicyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -230,16 +247,44 @@ public final Operation addRuleSecurityPolicy( * .setSecurityPolicy(securityPolicy.toString()) * .setSecurityPolicyRuleResource(securityPolicyRuleResource) * .build(); - * Operation response = securityPolicyClient.addRuleSecurityPolicy(request); + * securityPolicyClient.addRuleSecurityPolicyAsync(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 */ - @BetaApi - public final Operation addRuleSecurityPolicy(AddRuleSecurityPolicyHttpRequest request) { - return addRuleSecurityPolicyCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture addRuleSecurityPolicyAsync( + AddRuleSecurityPolicyHttpRequest request) { + return addRuleSecurityPolicyOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Inserts a rule into a security policy. + * + *

Sample code: + * + *


+   * try (SecurityPolicyClient securityPolicyClient = SecurityPolicyClient.create()) {
+   *   ProjectGlobalSecurityPolicyName securityPolicy = ProjectGlobalSecurityPolicyName.of("[PROJECT]", "[SECURITY_POLICY]");
+   *   SecurityPolicyRule securityPolicyRuleResource = SecurityPolicyRule.newBuilder().build();
+   *   AddRuleSecurityPolicyHttpRequest request = AddRuleSecurityPolicyHttpRequest.newBuilder()
+   *     .setSecurityPolicy(securityPolicy.toString())
+   *     .setSecurityPolicyRuleResource(securityPolicyRuleResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = securityPolicyClient.addRuleSecurityPolicyOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + addRuleSecurityPolicyOperationCallable() { + return stub.addRuleSecurityPolicyOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -258,7 +303,7 @@ public final Operation addRuleSecurityPolicy(AddRuleSecurityPolicyHttpRequest re * .build(); * ApiFuture<Operation> future = securityPolicyClient.addRuleSecurityPolicyCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -277,21 +322,23 @@ public final Operation addRuleSecurityPolicy(AddRuleSecurityPolicyHttpRequest re *

    * try (SecurityPolicyClient securityPolicyClient = SecurityPolicyClient.create()) {
    *   ProjectGlobalSecurityPolicyName securityPolicy = ProjectGlobalSecurityPolicyName.of("[PROJECT]", "[SECURITY_POLICY]");
-   *   Operation response = securityPolicyClient.deleteSecurityPolicy(securityPolicy);
+   *   securityPolicyClient.deleteSecurityPolicyAsync(securityPolicy).get();
    * }
    * 
* * @param securityPolicy Name of the security policy to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteSecurityPolicy(ProjectGlobalSecurityPolicyName securityPolicy) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteSecurityPolicyAsync( + ProjectGlobalSecurityPolicyName securityPolicy) { DeleteSecurityPolicyHttpRequest request = DeleteSecurityPolicyHttpRequest.newBuilder() .setSecurityPolicy(securityPolicy == null ? null : securityPolicy.toString()) .build(); - return deleteSecurityPolicy(request); + return deleteSecurityPolicyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -303,19 +350,21 @@ public final Operation deleteSecurityPolicy(ProjectGlobalSecurityPolicyName secu *

    * try (SecurityPolicyClient securityPolicyClient = SecurityPolicyClient.create()) {
    *   ProjectGlobalSecurityPolicyName securityPolicy = ProjectGlobalSecurityPolicyName.of("[PROJECT]", "[SECURITY_POLICY]");
-   *   Operation response = securityPolicyClient.deleteSecurityPolicy(securityPolicy.toString());
+   *   securityPolicyClient.deleteSecurityPolicyAsync(securityPolicy.toString()).get();
    * }
    * 
* * @param securityPolicy Name of the security policy to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteSecurityPolicy(String securityPolicy) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteSecurityPolicyAsync( + String securityPolicy) { DeleteSecurityPolicyHttpRequest request = DeleteSecurityPolicyHttpRequest.newBuilder().setSecurityPolicy(securityPolicy).build(); - return deleteSecurityPolicy(request); + return deleteSecurityPolicyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -330,16 +379,42 @@ public final Operation deleteSecurityPolicy(String securityPolicy) { * DeleteSecurityPolicyHttpRequest request = DeleteSecurityPolicyHttpRequest.newBuilder() * .setSecurityPolicy(securityPolicy.toString()) * .build(); - * Operation response = securityPolicyClient.deleteSecurityPolicy(request); + * securityPolicyClient.deleteSecurityPolicyAsync(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 */ - @BetaApi - public final Operation deleteSecurityPolicy(DeleteSecurityPolicyHttpRequest request) { - return deleteSecurityPolicyCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteSecurityPolicyAsync( + DeleteSecurityPolicyHttpRequest request) { + return deleteSecurityPolicyOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified policy. + * + *

Sample code: + * + *


+   * try (SecurityPolicyClient securityPolicyClient = SecurityPolicyClient.create()) {
+   *   ProjectGlobalSecurityPolicyName securityPolicy = ProjectGlobalSecurityPolicyName.of("[PROJECT]", "[SECURITY_POLICY]");
+   *   DeleteSecurityPolicyHttpRequest request = DeleteSecurityPolicyHttpRequest.newBuilder()
+   *     .setSecurityPolicy(securityPolicy.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = securityPolicyClient.deleteSecurityPolicyOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteSecurityPolicyOperationCallable() { + return stub.deleteSecurityPolicyOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -356,7 +431,7 @@ public final Operation deleteSecurityPolicy(DeleteSecurityPolicyHttpRequest requ * .build(); * ApiFuture<Operation> future = securityPolicyClient.deleteSecurityPolicyCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -585,7 +660,7 @@ public final SecurityPolicyRule getRuleSecurityPolicy(GetRuleSecurityPolicyHttpR * try (SecurityPolicyClient securityPolicyClient = SecurityPolicyClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * SecurityPolicy securityPolicyResource = SecurityPolicy.newBuilder().build(); - * Operation response = securityPolicyClient.insertSecurityPolicy(project, securityPolicyResource); + * securityPolicyClient.insertSecurityPolicyAsync(project, securityPolicyResource).get(); * } * * @@ -595,8 +670,9 @@ public final SecurityPolicyRule getRuleSecurityPolicy(GetRuleSecurityPolicyHttpR * resource_for beta.securityPolicies ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertSecurityPolicy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertSecurityPolicyAsync( ProjectName project, SecurityPolicy securityPolicyResource) { InsertSecurityPolicyHttpRequest request = @@ -604,7 +680,7 @@ public final Operation insertSecurityPolicy( .setProject(project == null ? null : project.toString()) .setSecurityPolicyResource(securityPolicyResource) .build(); - return insertSecurityPolicy(request); + return insertSecurityPolicyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -617,7 +693,7 @@ public final Operation insertSecurityPolicy( * try (SecurityPolicyClient securityPolicyClient = SecurityPolicyClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * SecurityPolicy securityPolicyResource = SecurityPolicy.newBuilder().build(); - * Operation response = securityPolicyClient.insertSecurityPolicy(project.toString(), securityPolicyResource); + * securityPolicyClient.insertSecurityPolicyAsync(project.toString(), securityPolicyResource).get(); * } * * @@ -627,8 +703,9 @@ public final Operation insertSecurityPolicy( * resource_for beta.securityPolicies ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertSecurityPolicy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertSecurityPolicyAsync( String project, SecurityPolicy securityPolicyResource) { InsertSecurityPolicyHttpRequest request = @@ -636,7 +713,7 @@ public final Operation insertSecurityPolicy( .setProject(project) .setSecurityPolicyResource(securityPolicyResource) .build(); - return insertSecurityPolicy(request); + return insertSecurityPolicyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -653,16 +730,44 @@ public final Operation insertSecurityPolicy( * .setProject(project.toString()) * .setSecurityPolicyResource(securityPolicyResource) * .build(); - * Operation response = securityPolicyClient.insertSecurityPolicy(request); + * securityPolicyClient.insertSecurityPolicyAsync(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 */ - @BetaApi - public final Operation insertSecurityPolicy(InsertSecurityPolicyHttpRequest request) { - return insertSecurityPolicyCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertSecurityPolicyAsync( + InsertSecurityPolicyHttpRequest request) { + return insertSecurityPolicyOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a new policy in the specified project using the data included in the request. + * + *

Sample code: + * + *


+   * try (SecurityPolicyClient securityPolicyClient = SecurityPolicyClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   SecurityPolicy securityPolicyResource = SecurityPolicy.newBuilder().build();
+   *   InsertSecurityPolicyHttpRequest request = InsertSecurityPolicyHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .setSecurityPolicyResource(securityPolicyResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = securityPolicyClient.insertSecurityPolicyOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertSecurityPolicyOperationCallable() { + return stub.insertSecurityPolicyOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -681,7 +786,7 @@ public final Operation insertSecurityPolicy(InsertSecurityPolicyHttpRequest requ * .build(); * ApiFuture<Operation> future = securityPolicyClient.insertSecurityPolicyCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -840,7 +945,7 @@ public final ListSecurityPoliciesPagedResponse listSecurityPolicies( * ProjectGlobalSecurityPolicyName securityPolicy = ProjectGlobalSecurityPolicyName.of("[PROJECT]", "[SECURITY_POLICY]"); * SecurityPolicy securityPolicyResource = SecurityPolicy.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = securityPolicyClient.patchSecurityPolicy(securityPolicy, securityPolicyResource, fieldMask); + * securityPolicyClient.patchSecurityPolicyAsync(securityPolicy, securityPolicyResource, fieldMask).get(); * } * * @@ -854,8 +959,9 @@ public final ListSecurityPoliciesPagedResponse listSecurityPolicies( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchSecurityPolicy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchSecurityPolicyAsync( ProjectGlobalSecurityPolicyName securityPolicy, SecurityPolicy securityPolicyResource, List fieldMask) { @@ -866,7 +972,7 @@ public final Operation patchSecurityPolicy( .setSecurityPolicyResource(securityPolicyResource) .addAllFieldMask(fieldMask) .build(); - return patchSecurityPolicy(request); + return patchSecurityPolicyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -880,7 +986,7 @@ public final Operation patchSecurityPolicy( * ProjectGlobalSecurityPolicyName securityPolicy = ProjectGlobalSecurityPolicyName.of("[PROJECT]", "[SECURITY_POLICY]"); * SecurityPolicy securityPolicyResource = SecurityPolicy.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = securityPolicyClient.patchSecurityPolicy(securityPolicy.toString(), securityPolicyResource, fieldMask); + * securityPolicyClient.patchSecurityPolicyAsync(securityPolicy.toString(), securityPolicyResource, fieldMask).get(); * } * * @@ -894,8 +1000,9 @@ public final Operation patchSecurityPolicy( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchSecurityPolicy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchSecurityPolicyAsync( String securityPolicy, SecurityPolicy securityPolicyResource, List fieldMask) { PatchSecurityPolicyHttpRequest request = @@ -904,7 +1011,7 @@ public final Operation patchSecurityPolicy( .setSecurityPolicyResource(securityPolicyResource) .addAllFieldMask(fieldMask) .build(); - return patchSecurityPolicy(request); + return patchSecurityPolicyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -923,16 +1030,46 @@ public final Operation patchSecurityPolicy( * .setSecurityPolicyResource(securityPolicyResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = securityPolicyClient.patchSecurityPolicy(request); + * securityPolicyClient.patchSecurityPolicyAsync(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 */ - @BetaApi - public final Operation patchSecurityPolicy(PatchSecurityPolicyHttpRequest request) { - return patchSecurityPolicyCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchSecurityPolicyAsync( + PatchSecurityPolicyHttpRequest request) { + return patchSecurityPolicyOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Patches the specified policy with the data included in the request. + * + *

Sample code: + * + *


+   * try (SecurityPolicyClient securityPolicyClient = SecurityPolicyClient.create()) {
+   *   ProjectGlobalSecurityPolicyName securityPolicy = ProjectGlobalSecurityPolicyName.of("[PROJECT]", "[SECURITY_POLICY]");
+   *   SecurityPolicy securityPolicyResource = SecurityPolicy.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   PatchSecurityPolicyHttpRequest request = PatchSecurityPolicyHttpRequest.newBuilder()
+   *     .setSecurityPolicy(securityPolicy.toString())
+   *     .setSecurityPolicyResource(securityPolicyResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = securityPolicyClient.patchSecurityPolicyOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + patchSecurityPolicyOperationCallable() { + return stub.patchSecurityPolicyOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -953,7 +1090,7 @@ public final Operation patchSecurityPolicy(PatchSecurityPolicyHttpRequest reques * .build(); * ApiFuture<Operation> future = securityPolicyClient.patchSecurityPolicyCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -974,7 +1111,7 @@ public final Operation patchSecurityPolicy(PatchSecurityPolicyHttpRequest reques * Integer priority = 0; * ProjectGlobalSecurityPolicyName securityPolicy = ProjectGlobalSecurityPolicyName.of("[PROJECT]", "[SECURITY_POLICY]"); * SecurityPolicyRule securityPolicyRuleResource = SecurityPolicyRule.newBuilder().build(); - * Operation response = securityPolicyClient.patchRuleSecurityPolicy(priority, securityPolicy, securityPolicyRuleResource); + * securityPolicyClient.patchRuleSecurityPolicyAsync(priority, securityPolicy, securityPolicyRuleResource).get(); * } * * @@ -984,8 +1121,9 @@ public final Operation patchSecurityPolicy(PatchSecurityPolicyHttpRequest reques * along with the action to be taken when traffic matches this condition (allow or deny). * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchRuleSecurityPolicy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchRuleSecurityPolicyAsync( Integer priority, ProjectGlobalSecurityPolicyName securityPolicy, SecurityPolicyRule securityPolicyRuleResource) { @@ -996,7 +1134,7 @@ public final Operation patchRuleSecurityPolicy( .setSecurityPolicy(securityPolicy == null ? null : securityPolicy.toString()) .setSecurityPolicyRuleResource(securityPolicyRuleResource) .build(); - return patchRuleSecurityPolicy(request); + return patchRuleSecurityPolicyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1010,7 +1148,7 @@ public final Operation patchRuleSecurityPolicy( * Integer priority = 0; * ProjectGlobalSecurityPolicyName securityPolicy = ProjectGlobalSecurityPolicyName.of("[PROJECT]", "[SECURITY_POLICY]"); * SecurityPolicyRule securityPolicyRuleResource = SecurityPolicyRule.newBuilder().build(); - * Operation response = securityPolicyClient.patchRuleSecurityPolicy(priority, securityPolicy.toString(), securityPolicyRuleResource); + * securityPolicyClient.patchRuleSecurityPolicyAsync(priority, securityPolicy.toString(), securityPolicyRuleResource).get(); * } * * @@ -1020,8 +1158,9 @@ public final Operation patchRuleSecurityPolicy( * along with the action to be taken when traffic matches this condition (allow or deny). * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchRuleSecurityPolicy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchRuleSecurityPolicyAsync( Integer priority, String securityPolicy, SecurityPolicyRule securityPolicyRuleResource) { PatchRuleSecurityPolicyHttpRequest request = @@ -1030,7 +1169,7 @@ public final Operation patchRuleSecurityPolicy( .setSecurityPolicy(securityPolicy) .setSecurityPolicyRuleResource(securityPolicyRuleResource) .build(); - return patchRuleSecurityPolicy(request); + return patchRuleSecurityPolicyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1049,16 +1188,46 @@ public final Operation patchRuleSecurityPolicy( * .setSecurityPolicy(securityPolicy.toString()) * .setSecurityPolicyRuleResource(securityPolicyRuleResource) * .build(); - * Operation response = securityPolicyClient.patchRuleSecurityPolicy(request); + * securityPolicyClient.patchRuleSecurityPolicyAsync(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 */ - @BetaApi - public final Operation patchRuleSecurityPolicy(PatchRuleSecurityPolicyHttpRequest request) { - return patchRuleSecurityPolicyCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchRuleSecurityPolicyAsync( + PatchRuleSecurityPolicyHttpRequest request) { + return patchRuleSecurityPolicyOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Patches a rule at the specified priority. + * + *

Sample code: + * + *


+   * try (SecurityPolicyClient securityPolicyClient = SecurityPolicyClient.create()) {
+   *   Integer priority = 0;
+   *   ProjectGlobalSecurityPolicyName securityPolicy = ProjectGlobalSecurityPolicyName.of("[PROJECT]", "[SECURITY_POLICY]");
+   *   SecurityPolicyRule securityPolicyRuleResource = SecurityPolicyRule.newBuilder().build();
+   *   PatchRuleSecurityPolicyHttpRequest request = PatchRuleSecurityPolicyHttpRequest.newBuilder()
+   *     .setPriority(priority)
+   *     .setSecurityPolicy(securityPolicy.toString())
+   *     .setSecurityPolicyRuleResource(securityPolicyRuleResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = securityPolicyClient.patchRuleSecurityPolicyOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + patchRuleSecurityPolicyOperationCallable() { + return stub.patchRuleSecurityPolicyOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1079,7 +1248,7 @@ public final Operation patchRuleSecurityPolicy(PatchRuleSecurityPolicyHttpReques * .build(); * ApiFuture<Operation> future = securityPolicyClient.patchRuleSecurityPolicyCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1099,7 +1268,7 @@ public final Operation patchRuleSecurityPolicy(PatchRuleSecurityPolicyHttpReques * try (SecurityPolicyClient securityPolicyClient = SecurityPolicyClient.create()) { * Integer priority = 0; * ProjectGlobalSecurityPolicyName securityPolicy = ProjectGlobalSecurityPolicyName.of("[PROJECT]", "[SECURITY_POLICY]"); - * Operation response = securityPolicyClient.removeRuleSecurityPolicy(priority, securityPolicy); + * securityPolicyClient.removeRuleSecurityPolicyAsync(priority, securityPolicy).get(); * } * * @@ -1107,8 +1276,9 @@ public final Operation patchRuleSecurityPolicy(PatchRuleSecurityPolicyHttpReques * @param securityPolicy Name of the security policy to update. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation removeRuleSecurityPolicy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture removeRuleSecurityPolicyAsync( Integer priority, ProjectGlobalSecurityPolicyName securityPolicy) { RemoveRuleSecurityPolicyHttpRequest request = @@ -1116,7 +1286,7 @@ public final Operation removeRuleSecurityPolicy( .setPriority(priority) .setSecurityPolicy(securityPolicy == null ? null : securityPolicy.toString()) .build(); - return removeRuleSecurityPolicy(request); + return removeRuleSecurityPolicyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1129,7 +1299,7 @@ public final Operation removeRuleSecurityPolicy( * try (SecurityPolicyClient securityPolicyClient = SecurityPolicyClient.create()) { * Integer priority = 0; * ProjectGlobalSecurityPolicyName securityPolicy = ProjectGlobalSecurityPolicyName.of("[PROJECT]", "[SECURITY_POLICY]"); - * Operation response = securityPolicyClient.removeRuleSecurityPolicy(priority, securityPolicy.toString()); + * securityPolicyClient.removeRuleSecurityPolicyAsync(priority, securityPolicy.toString()).get(); * } * * @@ -1137,15 +1307,17 @@ public final Operation removeRuleSecurityPolicy( * @param securityPolicy Name of the security policy to update. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation removeRuleSecurityPolicy(Integer priority, String securityPolicy) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture removeRuleSecurityPolicyAsync( + Integer priority, String securityPolicy) { RemoveRuleSecurityPolicyHttpRequest request = RemoveRuleSecurityPolicyHttpRequest.newBuilder() .setPriority(priority) .setSecurityPolicy(securityPolicy) .build(); - return removeRuleSecurityPolicy(request); + return removeRuleSecurityPolicyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1162,16 +1334,44 @@ public final Operation removeRuleSecurityPolicy(Integer priority, String securit * .setPriority(priority) * .setSecurityPolicy(securityPolicy.toString()) * .build(); - * Operation response = securityPolicyClient.removeRuleSecurityPolicy(request); + * securityPolicyClient.removeRuleSecurityPolicyAsync(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 */ - @BetaApi - public final Operation removeRuleSecurityPolicy(RemoveRuleSecurityPolicyHttpRequest request) { - return removeRuleSecurityPolicyCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture removeRuleSecurityPolicyAsync( + RemoveRuleSecurityPolicyHttpRequest request) { + return removeRuleSecurityPolicyOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes a rule at the specified priority. + * + *

Sample code: + * + *


+   * try (SecurityPolicyClient securityPolicyClient = SecurityPolicyClient.create()) {
+   *   Integer priority = 0;
+   *   ProjectGlobalSecurityPolicyName securityPolicy = ProjectGlobalSecurityPolicyName.of("[PROJECT]", "[SECURITY_POLICY]");
+   *   RemoveRuleSecurityPolicyHttpRequest request = RemoveRuleSecurityPolicyHttpRequest.newBuilder()
+   *     .setPriority(priority)
+   *     .setSecurityPolicy(securityPolicy.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = securityPolicyClient.removeRuleSecurityPolicyOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + removeRuleSecurityPolicyOperationCallable() { + return stub.removeRuleSecurityPolicyOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1190,7 +1390,7 @@ public final Operation removeRuleSecurityPolicy(RemoveRuleSecurityPolicyHttpRequ * .build(); * ApiFuture<Operation> future = securityPolicyClient.removeRuleSecurityPolicyCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SecurityPolicySettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SecurityPolicySettings.java index 152a602aedd9..df6bc35125b9 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SecurityPolicySettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SecurityPolicySettings.java @@ -21,10 +21,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -48,13 +50,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of addRuleSecurityPolicy to 30 seconds: + * example, to set the total timeout of getSecurityPolicy to 30 seconds: * *

  * 
  * SecurityPolicySettings.Builder securityPolicySettingsBuilder =
  *     SecurityPolicySettings.newBuilder();
- * securityPolicySettingsBuilder.addRuleSecurityPolicySettings().getRetrySettings().toBuilder()
+ * securityPolicySettingsBuilder.getSecurityPolicySettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * SecurityPolicySettings securityPolicySettings = securityPolicySettingsBuilder.build();
  * 
@@ -69,12 +71,29 @@ public class SecurityPolicySettings extends ClientSettings
+      addRuleSecurityPolicyOperationSettings() {
+    return ((SecurityPolicyStubSettings) getStubSettings())
+        .addRuleSecurityPolicyOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to deleteSecurityPolicy. */
   public UnaryCallSettings
       deleteSecurityPolicySettings() {
     return ((SecurityPolicyStubSettings) getStubSettings()).deleteSecurityPolicySettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteSecurityPolicy. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteSecurityPolicyOperationSettings() {
+    return ((SecurityPolicyStubSettings) getStubSettings()).deleteSecurityPolicyOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getSecurityPolicy. */
   public UnaryCallSettings
       getSecurityPolicySettings() {
@@ -93,6 +112,14 @@ public class SecurityPolicySettings extends ClientSettings
+      insertSecurityPolicyOperationSettings() {
+    return ((SecurityPolicyStubSettings) getStubSettings()).insertSecurityPolicyOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listSecurityPolicies. */
   public PagedCallSettings<
           ListSecurityPoliciesHttpRequest, SecurityPolicyList, ListSecurityPoliciesPagedResponse>
@@ -106,18 +133,44 @@ public class SecurityPolicySettings extends ClientSettings
+      patchSecurityPolicyOperationSettings() {
+    return ((SecurityPolicyStubSettings) getStubSettings()).patchSecurityPolicyOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to patchRuleSecurityPolicy. */
   public UnaryCallSettings
       patchRuleSecurityPolicySettings() {
     return ((SecurityPolicyStubSettings) getStubSettings()).patchRuleSecurityPolicySettings();
   }
 
+  /** Returns the object with the settings used for calls to patchRuleSecurityPolicy. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      patchRuleSecurityPolicyOperationSettings() {
+    return ((SecurityPolicyStubSettings) getStubSettings())
+        .patchRuleSecurityPolicyOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to removeRuleSecurityPolicy. */
   public UnaryCallSettings
       removeRuleSecurityPolicySettings() {
     return ((SecurityPolicyStubSettings) getStubSettings()).removeRuleSecurityPolicySettings();
   }
 
+  /** Returns the object with the settings used for calls to removeRuleSecurityPolicy. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      removeRuleSecurityPolicyOperationSettings() {
+    return ((SecurityPolicyStubSettings) getStubSettings())
+        .removeRuleSecurityPolicyOperationSettings();
+  }
+
   public static final SecurityPolicySettings create(SecurityPolicyStubSettings stub)
       throws IOException {
     return new SecurityPolicySettings.Builder(stub.toBuilder()).build();
@@ -226,12 +279,28 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().addRuleSecurityPolicySettings();
     }
 
+    /** Returns the builder for the settings used for calls to addRuleSecurityPolicy. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        addRuleSecurityPolicyOperationSettings() {
+      return getStubSettingsBuilder().addRuleSecurityPolicyOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to deleteSecurityPolicy. */
     public UnaryCallSettings.Builder
         deleteSecurityPolicySettings() {
       return getStubSettingsBuilder().deleteSecurityPolicySettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteSecurityPolicy. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteSecurityPolicyOperationSettings() {
+      return getStubSettingsBuilder().deleteSecurityPolicyOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getSecurityPolicy. */
     public UnaryCallSettings.Builder
         getSecurityPolicySettings() {
@@ -250,6 +319,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().insertSecurityPolicySettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertSecurityPolicy. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertSecurityPolicyOperationSettings() {
+      return getStubSettingsBuilder().insertSecurityPolicyOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listSecurityPolicies. */
     public PagedCallSettings.Builder<
             ListSecurityPoliciesHttpRequest, SecurityPolicyList, ListSecurityPoliciesPagedResponse>
@@ -263,18 +340,44 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().patchSecurityPolicySettings();
     }
 
+    /** Returns the builder for the settings used for calls to patchSecurityPolicy. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchSecurityPolicyOperationSettings() {
+      return getStubSettingsBuilder().patchSecurityPolicyOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to patchRuleSecurityPolicy. */
     public UnaryCallSettings.Builder
         patchRuleSecurityPolicySettings() {
       return getStubSettingsBuilder().patchRuleSecurityPolicySettings();
     }
 
+    /** Returns the builder for the settings used for calls to patchRuleSecurityPolicy. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            PatchRuleSecurityPolicyHttpRequest, EmptyMessage, Operation>
+        patchRuleSecurityPolicyOperationSettings() {
+      return getStubSettingsBuilder().patchRuleSecurityPolicyOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to removeRuleSecurityPolicy. */
     public UnaryCallSettings.Builder
         removeRuleSecurityPolicySettings() {
       return getStubSettingsBuilder().removeRuleSecurityPolicySettings();
     }
 
+    /** Returns the builder for the settings used for calls to removeRuleSecurityPolicy. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            RemoveRuleSecurityPolicyHttpRequest, EmptyMessage, Operation>
+        removeRuleSecurityPolicyOperationSettings() {
+      return getStubSettingsBuilder().removeRuleSecurityPolicyOperationSettings();
+    }
+
     @Override
     public SecurityPolicySettings build() throws IOException {
       return new SecurityPolicySettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SnapshotClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SnapshotClient.java
index 85553b55b7fb..607055e89e3f 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SnapshotClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SnapshotClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.SnapshotStub;
@@ -43,7 +46,7 @@
  * 
  * try (SnapshotClient snapshotClient = SnapshotClient.create()) {
  *   ProjectGlobalSnapshotName snapshot = ProjectGlobalSnapshotName.of("[PROJECT]", "[SNAPSHOT]");
- *   Operation response = snapshotClient.deleteSnapshot(snapshot);
+ *   Snapshot response = snapshotClient.getSnapshot(snapshot);
  * }
  * 
  * 
@@ -103,6 +106,7 @@ public class SnapshotClient implements BackgroundResource { private final SnapshotSettings settings; private final SnapshotStub stub; + private final GlobalOperationClient operationsClient; /** Constructs an instance of SnapshotClient with default settings. */ public static final SnapshotClient create() throws IOException { @@ -133,12 +137,14 @@ public static final SnapshotClient create(SnapshotStub stub) { protected SnapshotClient(SnapshotSettings settings) throws IOException { this.settings = settings; this.stub = ((SnapshotStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected SnapshotClient(SnapshotStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } public final SnapshotSettings getSettings() { @@ -150,6 +156,16 @@ public SnapshotStub getStub() { return stub; } + /** + * Returns the GlobalOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final GlobalOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Deletes the specified Snapshot resource. Keep in mind that deleting a single snapshot might not @@ -164,21 +180,23 @@ public SnapshotStub getStub() { *

    * try (SnapshotClient snapshotClient = SnapshotClient.create()) {
    *   ProjectGlobalSnapshotName snapshot = ProjectGlobalSnapshotName.of("[PROJECT]", "[SNAPSHOT]");
-   *   Operation response = snapshotClient.deleteSnapshot(snapshot);
+   *   snapshotClient.deleteSnapshotAsync(snapshot).get();
    * }
    * 
* * @param snapshot Name of the Snapshot resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteSnapshot(ProjectGlobalSnapshotName snapshot) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteSnapshotAsync( + ProjectGlobalSnapshotName snapshot) { DeleteSnapshotHttpRequest request = DeleteSnapshotHttpRequest.newBuilder() .setSnapshot(snapshot == null ? null : snapshot.toString()) .build(); - return deleteSnapshot(request); + return deleteSnapshotAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -195,19 +213,20 @@ public final Operation deleteSnapshot(ProjectGlobalSnapshotName snapshot) { *

    * try (SnapshotClient snapshotClient = SnapshotClient.create()) {
    *   ProjectGlobalSnapshotName snapshot = ProjectGlobalSnapshotName.of("[PROJECT]", "[SNAPSHOT]");
-   *   Operation response = snapshotClient.deleteSnapshot(snapshot.toString());
+   *   snapshotClient.deleteSnapshotAsync(snapshot.toString()).get();
    * }
    * 
* * @param snapshot Name of the Snapshot resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteSnapshot(String snapshot) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteSnapshotAsync(String snapshot) { DeleteSnapshotHttpRequest request = DeleteSnapshotHttpRequest.newBuilder().setSnapshot(snapshot).build(); - return deleteSnapshot(request); + return deleteSnapshotAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -227,16 +246,47 @@ public final Operation deleteSnapshot(String snapshot) { * DeleteSnapshotHttpRequest request = DeleteSnapshotHttpRequest.newBuilder() * .setSnapshot(snapshot.toString()) * .build(); - * Operation response = snapshotClient.deleteSnapshot(request); + * snapshotClient.deleteSnapshotAsync(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 */ - @BetaApi - public final Operation deleteSnapshot(DeleteSnapshotHttpRequest request) { - return deleteSnapshotCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteSnapshotAsync( + DeleteSnapshotHttpRequest request) { + return deleteSnapshotOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified Snapshot resource. Keep in mind that deleting a single snapshot might not + * necessarily delete all the data on that snapshot. If any data on the snapshot that is marked + * for deletion is needed for subsequent snapshots, the data will be moved to the next + * corresponding snapshot. + * + *

For more information, see Deleting snapshots. + * + *

Sample code: + * + *


+   * try (SnapshotClient snapshotClient = SnapshotClient.create()) {
+   *   ProjectGlobalSnapshotName snapshot = ProjectGlobalSnapshotName.of("[PROJECT]", "[SNAPSHOT]");
+   *   DeleteSnapshotHttpRequest request = DeleteSnapshotHttpRequest.newBuilder()
+   *     .setSnapshot(snapshot.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = snapshotClient.deleteSnapshotOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteSnapshotOperationCallable() { + return stub.deleteSnapshotOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -258,7 +308,7 @@ public final Operation deleteSnapshot(DeleteSnapshotHttpRequest request) { * .build(); * ApiFuture<Operation> future = snapshotClient.deleteSnapshotCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -730,7 +780,7 @@ public final Policy setIamPolicySnapshot(SetIamPolicySnapshotHttpRequest request * try (SnapshotClient snapshotClient = SnapshotClient.create()) { * ProjectGlobalSnapshotResourceName resource = ProjectGlobalSnapshotResourceName.of("[PROJECT]", "[RESOURCE]"); * GlobalSetLabelsRequest globalSetLabelsRequestResource = GlobalSetLabelsRequest.newBuilder().build(); - * Operation response = snapshotClient.setLabelsSnapshot(resource, globalSetLabelsRequestResource); + * snapshotClient.setLabelsSnapshotAsync(resource, globalSetLabelsRequestResource).get(); * } * * @@ -738,8 +788,9 @@ public final Policy setIamPolicySnapshot(SetIamPolicySnapshotHttpRequest request * @param globalSetLabelsRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setLabelsSnapshot( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setLabelsSnapshotAsync( ProjectGlobalSnapshotResourceName resource, GlobalSetLabelsRequest globalSetLabelsRequestResource) { @@ -748,7 +799,7 @@ public final Operation setLabelsSnapshot( .setResource(resource == null ? null : resource.toString()) .setGlobalSetLabelsRequestResource(globalSetLabelsRequestResource) .build(); - return setLabelsSnapshot(request); + return setLabelsSnapshotAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -762,7 +813,7 @@ public final Operation setLabelsSnapshot( * try (SnapshotClient snapshotClient = SnapshotClient.create()) { * ProjectGlobalSnapshotResourceName resource = ProjectGlobalSnapshotResourceName.of("[PROJECT]", "[RESOURCE]"); * GlobalSetLabelsRequest globalSetLabelsRequestResource = GlobalSetLabelsRequest.newBuilder().build(); - * Operation response = snapshotClient.setLabelsSnapshot(resource.toString(), globalSetLabelsRequestResource); + * snapshotClient.setLabelsSnapshotAsync(resource.toString(), globalSetLabelsRequestResource).get(); * } * * @@ -770,8 +821,9 @@ public final Operation setLabelsSnapshot( * @param globalSetLabelsRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setLabelsSnapshot( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setLabelsSnapshotAsync( String resource, GlobalSetLabelsRequest globalSetLabelsRequestResource) { SetLabelsSnapshotHttpRequest request = @@ -779,7 +831,7 @@ public final Operation setLabelsSnapshot( .setResource(resource) .setGlobalSetLabelsRequestResource(globalSetLabelsRequestResource) .build(); - return setLabelsSnapshot(request); + return setLabelsSnapshotAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -797,16 +849,45 @@ public final Operation setLabelsSnapshot( * .setResource(resource.toString()) * .setGlobalSetLabelsRequestResource(globalSetLabelsRequestResource) * .build(); - * Operation response = snapshotClient.setLabelsSnapshot(request); + * snapshotClient.setLabelsSnapshotAsync(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 */ - @BetaApi - public final Operation setLabelsSnapshot(SetLabelsSnapshotHttpRequest request) { - return setLabelsSnapshotCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setLabelsSnapshotAsync( + SetLabelsSnapshotHttpRequest request) { + return setLabelsSnapshotOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Sets the labels on a snapshot. To learn more about labels, read the Labeling Resources + * documentation. + * + *

Sample code: + * + *


+   * try (SnapshotClient snapshotClient = SnapshotClient.create()) {
+   *   ProjectGlobalSnapshotResourceName resource = ProjectGlobalSnapshotResourceName.of("[PROJECT]", "[RESOURCE]");
+   *   GlobalSetLabelsRequest globalSetLabelsRequestResource = GlobalSetLabelsRequest.newBuilder().build();
+   *   SetLabelsSnapshotHttpRequest request = SetLabelsSnapshotHttpRequest.newBuilder()
+   *     .setResource(resource.toString())
+   *     .setGlobalSetLabelsRequestResource(globalSetLabelsRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = snapshotClient.setLabelsSnapshotOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + setLabelsSnapshotOperationCallable() { + return stub.setLabelsSnapshotOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -826,7 +907,7 @@ public final Operation setLabelsSnapshot(SetLabelsSnapshotHttpRequest request) { * .build(); * ApiFuture<Operation> future = snapshotClient.setLabelsSnapshotCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SnapshotSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SnapshotSettings.java index 1bfd437e19ea..3e689e65d54b 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SnapshotSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SnapshotSettings.java @@ -21,10 +21,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -48,13 +50,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteSnapshot to 30 seconds: + * example, to set the total timeout of getSnapshot to 30 seconds: * *

  * 
  * SnapshotSettings.Builder snapshotSettingsBuilder =
  *     SnapshotSettings.newBuilder();
- * snapshotSettingsBuilder.deleteSnapshotSettings().getRetrySettings().toBuilder()
+ * snapshotSettingsBuilder.getSnapshotSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * SnapshotSettings snapshotSettings = snapshotSettingsBuilder.build();
  * 
@@ -68,6 +70,14 @@ public UnaryCallSettings deleteSnapshotSet
     return ((SnapshotStubSettings) getStubSettings()).deleteSnapshotSettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteSnapshot. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteSnapshotOperationSettings() {
+    return ((SnapshotStubSettings) getStubSettings()).deleteSnapshotOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getSnapshot. */
   public UnaryCallSettings getSnapshotSettings() {
     return ((SnapshotStubSettings) getStubSettings()).getSnapshotSettings();
@@ -94,6 +104,14 @@ public UnaryCallSettings setLabelsSnaps
     return ((SnapshotStubSettings) getStubSettings()).setLabelsSnapshotSettings();
   }
 
+  /** Returns the object with the settings used for calls to setLabelsSnapshot. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setLabelsSnapshotOperationSettings() {
+    return ((SnapshotStubSettings) getStubSettings()).setLabelsSnapshotOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to testIamPermissionsSnapshot. */
   public UnaryCallSettings
       testIamPermissionsSnapshotSettings() {
@@ -207,6 +225,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteSnapshotSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteSnapshot. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteSnapshotOperationSettings() {
+      return getStubSettingsBuilder().deleteSnapshotOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getSnapshot. */
     public UnaryCallSettings.Builder getSnapshotSettings() {
       return getStubSettingsBuilder().getSnapshotSettings();
@@ -237,6 +263,14 @@ public UnaryCallSettings.Builder getSnapshotSe
       return getStubSettingsBuilder().setLabelsSnapshotSettings();
     }
 
+    /** Returns the builder for the settings used for calls to setLabelsSnapshot. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        setLabelsSnapshotOperationSettings() {
+      return getStubSettingsBuilder().setLabelsSnapshotOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to testIamPermissionsSnapshot. */
     public UnaryCallSettings.Builder
         testIamPermissionsSnapshotSettings() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SslCertificateClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SslCertificateClient.java
index 8e5ed73bcfe1..aa4a710c17b2 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SslCertificateClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SslCertificateClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.SslCertificateStub;
@@ -43,7 +46,7 @@
  * 
  * try (SslCertificateClient sslCertificateClient = SslCertificateClient.create()) {
  *   ProjectGlobalSslCertificateName sslCertificate = ProjectGlobalSslCertificateName.of("[PROJECT]", "[SSL_CERTIFICATE]");
- *   Operation response = sslCertificateClient.deleteSslCertificate(sslCertificate);
+ *   SslCertificate response = sslCertificateClient.getSslCertificate(sslCertificate);
  * }
  * 
  * 
@@ -103,6 +106,7 @@ public class SslCertificateClient implements BackgroundResource { private final SslCertificateSettings settings; private final SslCertificateStub stub; + private final GlobalOperationClient operationsClient; /** Constructs an instance of SslCertificateClient with default settings. */ public static final SslCertificateClient create() throws IOException { @@ -135,12 +139,14 @@ public static final SslCertificateClient create(SslCertificateStub stub) { protected SslCertificateClient(SslCertificateSettings settings) throws IOException { this.settings = settings; this.stub = ((SslCertificateStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected SslCertificateClient(SslCertificateStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } public final SslCertificateSettings getSettings() { @@ -152,6 +158,16 @@ public SslCertificateStub getStub() { return stub; } + /** + * Returns the GlobalOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final GlobalOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Deletes the specified SslCertificate resource. @@ -161,21 +177,23 @@ public SslCertificateStub getStub() { *

    * try (SslCertificateClient sslCertificateClient = SslCertificateClient.create()) {
    *   ProjectGlobalSslCertificateName sslCertificate = ProjectGlobalSslCertificateName.of("[PROJECT]", "[SSL_CERTIFICATE]");
-   *   Operation response = sslCertificateClient.deleteSslCertificate(sslCertificate);
+   *   sslCertificateClient.deleteSslCertificateAsync(sslCertificate).get();
    * }
    * 
* * @param sslCertificate Name of the SslCertificate resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteSslCertificate(ProjectGlobalSslCertificateName sslCertificate) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteSslCertificateAsync( + ProjectGlobalSslCertificateName sslCertificate) { DeleteSslCertificateHttpRequest request = DeleteSslCertificateHttpRequest.newBuilder() .setSslCertificate(sslCertificate == null ? null : sslCertificate.toString()) .build(); - return deleteSslCertificate(request); + return deleteSslCertificateAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -187,19 +205,21 @@ public final Operation deleteSslCertificate(ProjectGlobalSslCertificateName sslC *

    * try (SslCertificateClient sslCertificateClient = SslCertificateClient.create()) {
    *   ProjectGlobalSslCertificateName sslCertificate = ProjectGlobalSslCertificateName.of("[PROJECT]", "[SSL_CERTIFICATE]");
-   *   Operation response = sslCertificateClient.deleteSslCertificate(sslCertificate.toString());
+   *   sslCertificateClient.deleteSslCertificateAsync(sslCertificate.toString()).get();
    * }
    * 
* * @param sslCertificate Name of the SslCertificate resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteSslCertificate(String sslCertificate) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteSslCertificateAsync( + String sslCertificate) { DeleteSslCertificateHttpRequest request = DeleteSslCertificateHttpRequest.newBuilder().setSslCertificate(sslCertificate).build(); - return deleteSslCertificate(request); + return deleteSslCertificateAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -214,16 +234,42 @@ public final Operation deleteSslCertificate(String sslCertificate) { * DeleteSslCertificateHttpRequest request = DeleteSslCertificateHttpRequest.newBuilder() * .setSslCertificate(sslCertificate.toString()) * .build(); - * Operation response = sslCertificateClient.deleteSslCertificate(request); + * sslCertificateClient.deleteSslCertificateAsync(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 */ - @BetaApi - public final Operation deleteSslCertificate(DeleteSslCertificateHttpRequest request) { - return deleteSslCertificateCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteSslCertificateAsync( + DeleteSslCertificateHttpRequest request) { + return deleteSslCertificateOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified SslCertificate resource. + * + *

Sample code: + * + *


+   * try (SslCertificateClient sslCertificateClient = SslCertificateClient.create()) {
+   *   ProjectGlobalSslCertificateName sslCertificate = ProjectGlobalSslCertificateName.of("[PROJECT]", "[SSL_CERTIFICATE]");
+   *   DeleteSslCertificateHttpRequest request = DeleteSslCertificateHttpRequest.newBuilder()
+   *     .setSslCertificate(sslCertificate.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = sslCertificateClient.deleteSslCertificateOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteSslCertificateOperationCallable() { + return stub.deleteSslCertificateOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -240,7 +286,7 @@ public final Operation deleteSslCertificate(DeleteSslCertificateHttpRequest requ * .build(); * ApiFuture<Operation> future = sslCertificateClient.deleteSslCertificateCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -363,7 +409,7 @@ public final SslCertificate getSslCertificate(GetSslCertificateHttpRequest reque * try (SslCertificateClient sslCertificateClient = SslCertificateClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * SslCertificate sslCertificateResource = SslCertificate.newBuilder().build(); - * Operation response = sslCertificateClient.insertSslCertificate(project, sslCertificateResource); + * sslCertificateClient.insertSslCertificateAsync(project, sslCertificateResource).get(); * } * * @@ -373,8 +419,9 @@ public final SslCertificate getSslCertificate(GetSslCertificateHttpRequest reque * user. (== resource_for beta.sslCertificates ==) (== resource_for v1.sslCertificates ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertSslCertificate( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertSslCertificateAsync( ProjectName project, SslCertificate sslCertificateResource) { InsertSslCertificateHttpRequest request = @@ -382,7 +429,7 @@ public final Operation insertSslCertificate( .setProject(project == null ? null : project.toString()) .setSslCertificateResource(sslCertificateResource) .build(); - return insertSslCertificate(request); + return insertSslCertificateAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -396,7 +443,7 @@ public final Operation insertSslCertificate( * try (SslCertificateClient sslCertificateClient = SslCertificateClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * SslCertificate sslCertificateResource = SslCertificate.newBuilder().build(); - * Operation response = sslCertificateClient.insertSslCertificate(project.toString(), sslCertificateResource); + * sslCertificateClient.insertSslCertificateAsync(project.toString(), sslCertificateResource).get(); * } * * @@ -406,8 +453,9 @@ public final Operation insertSslCertificate( * user. (== resource_for beta.sslCertificates ==) (== resource_for v1.sslCertificates ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertSslCertificate( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertSslCertificateAsync( String project, SslCertificate sslCertificateResource) { InsertSslCertificateHttpRequest request = @@ -415,7 +463,7 @@ public final Operation insertSslCertificate( .setProject(project) .setSslCertificateResource(sslCertificateResource) .build(); - return insertSslCertificate(request); + return insertSslCertificateAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -433,16 +481,45 @@ public final Operation insertSslCertificate( * .setProject(project.toString()) * .setSslCertificateResource(sslCertificateResource) * .build(); - * Operation response = sslCertificateClient.insertSslCertificate(request); + * sslCertificateClient.insertSslCertificateAsync(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 */ - @BetaApi - public final Operation insertSslCertificate(InsertSslCertificateHttpRequest request) { - return insertSslCertificateCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertSslCertificateAsync( + InsertSslCertificateHttpRequest request) { + return insertSslCertificateOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a SslCertificate resource in the specified project using the data included in the + * request. + * + *

Sample code: + * + *


+   * try (SslCertificateClient sslCertificateClient = SslCertificateClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   SslCertificate sslCertificateResource = SslCertificate.newBuilder().build();
+   *   InsertSslCertificateHttpRequest request = InsertSslCertificateHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .setSslCertificateResource(sslCertificateResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = sslCertificateClient.insertSslCertificateOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertSslCertificateOperationCallable() { + return stub.insertSslCertificateOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -462,7 +539,7 @@ public final Operation insertSslCertificate(InsertSslCertificateHttpRequest requ * .build(); * ApiFuture<Operation> future = sslCertificateClient.insertSslCertificateCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SslCertificateSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SslCertificateSettings.java index c258d13ad827..adc6e7ac5726 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SslCertificateSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SslCertificateSettings.java @@ -21,10 +21,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -48,13 +50,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteSslCertificate to 30 seconds: + * example, to set the total timeout of getSslCertificate to 30 seconds: * *

  * 
  * SslCertificateSettings.Builder sslCertificateSettingsBuilder =
  *     SslCertificateSettings.newBuilder();
- * sslCertificateSettingsBuilder.deleteSslCertificateSettings().getRetrySettings().toBuilder()
+ * sslCertificateSettingsBuilder.getSslCertificateSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * SslCertificateSettings sslCertificateSettings = sslCertificateSettingsBuilder.build();
  * 
@@ -69,6 +71,14 @@ public class SslCertificateSettings extends ClientSettings
+      deleteSslCertificateOperationSettings() {
+    return ((SslCertificateStubSettings) getStubSettings()).deleteSslCertificateOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getSslCertificate. */
   public UnaryCallSettings
       getSslCertificateSettings() {
@@ -81,6 +91,14 @@ public class SslCertificateSettings extends ClientSettings
+      insertSslCertificateOperationSettings() {
+    return ((SslCertificateStubSettings) getStubSettings()).insertSslCertificateOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listSslCertificates. */
   public PagedCallSettings<
           ListSslCertificatesHttpRequest, SslCertificateList, ListSslCertificatesPagedResponse>
@@ -196,6 +214,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteSslCertificateSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteSslCertificate. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteSslCertificateOperationSettings() {
+      return getStubSettingsBuilder().deleteSslCertificateOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getSslCertificate. */
     public UnaryCallSettings.Builder
         getSslCertificateSettings() {
@@ -208,6 +234,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().insertSslCertificateSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertSslCertificate. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertSslCertificateOperationSettings() {
+      return getStubSettingsBuilder().insertSslCertificateOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listSslCertificates. */
     public PagedCallSettings.Builder<
             ListSslCertificatesHttpRequest, SslCertificateList, ListSslCertificatesPagedResponse>
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SslPolicyClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SslPolicyClient.java
index 843b7f63b18b..8f597b43e104 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SslPolicyClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SslPolicyClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.SslPolicyStub;
@@ -43,7 +46,7 @@
  * 
  * try (SslPolicyClient sslPolicyClient = SslPolicyClient.create()) {
  *   ProjectGlobalSslPolicyName sslPolicy = ProjectGlobalSslPolicyName.of("[PROJECT]", "[SSL_POLICY]");
- *   Operation response = sslPolicyClient.deleteSslPolicy(sslPolicy);
+ *   SslPolicy response = sslPolicyClient.getSslPolicy(sslPolicy);
  * }
  * 
  * 
@@ -103,6 +106,7 @@ public class SslPolicyClient implements BackgroundResource { private final SslPolicySettings settings; private final SslPolicyStub stub; + private final GlobalOperationClient operationsClient; /** Constructs an instance of SslPolicyClient with default settings. */ public static final SslPolicyClient create() throws IOException { @@ -133,12 +137,14 @@ public static final SslPolicyClient create(SslPolicyStub stub) { protected SslPolicyClient(SslPolicySettings settings) throws IOException { this.settings = settings; this.stub = ((SslPolicyStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected SslPolicyClient(SslPolicyStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } public final SslPolicySettings getSettings() { @@ -150,6 +156,16 @@ public SslPolicyStub getStub() { return stub; } + /** + * Returns the GlobalOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final GlobalOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Deletes the specified SSL policy. The SSL policy resource can be deleted only if it is not in @@ -160,7 +176,7 @@ public SslPolicyStub getStub() { *

    * try (SslPolicyClient sslPolicyClient = SslPolicyClient.create()) {
    *   ProjectGlobalSslPolicyName sslPolicy = ProjectGlobalSslPolicyName.of("[PROJECT]", "[SSL_POLICY]");
-   *   Operation response = sslPolicyClient.deleteSslPolicy(sslPolicy);
+   *   sslPolicyClient.deleteSslPolicyAsync(sslPolicy).get();
    * }
    * 
* @@ -168,14 +184,16 @@ public SslPolicyStub getStub() { * comply with RFC1035. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteSslPolicy(ProjectGlobalSslPolicyName sslPolicy) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteSslPolicyAsync( + ProjectGlobalSslPolicyName sslPolicy) { DeleteSslPolicyHttpRequest request = DeleteSslPolicyHttpRequest.newBuilder() .setSslPolicy(sslPolicy == null ? null : sslPolicy.toString()) .build(); - return deleteSslPolicy(request); + return deleteSslPolicyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -188,7 +206,7 @@ public final Operation deleteSslPolicy(ProjectGlobalSslPolicyName sslPolicy) { *

    * try (SslPolicyClient sslPolicyClient = SslPolicyClient.create()) {
    *   ProjectGlobalSslPolicyName sslPolicy = ProjectGlobalSslPolicyName.of("[PROJECT]", "[SSL_POLICY]");
-   *   Operation response = sslPolicyClient.deleteSslPolicy(sslPolicy.toString());
+   *   sslPolicyClient.deleteSslPolicyAsync(sslPolicy.toString()).get();
    * }
    * 
* @@ -196,12 +214,13 @@ public final Operation deleteSslPolicy(ProjectGlobalSslPolicyName sslPolicy) { * comply with RFC1035. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteSslPolicy(String sslPolicy) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteSslPolicyAsync(String sslPolicy) { DeleteSslPolicyHttpRequest request = DeleteSslPolicyHttpRequest.newBuilder().setSslPolicy(sslPolicy).build(); - return deleteSslPolicy(request); + return deleteSslPolicyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -217,16 +236,43 @@ public final Operation deleteSslPolicy(String sslPolicy) { * DeleteSslPolicyHttpRequest request = DeleteSslPolicyHttpRequest.newBuilder() * .setSslPolicy(sslPolicy.toString()) * .build(); - * Operation response = sslPolicyClient.deleteSslPolicy(request); + * sslPolicyClient.deleteSslPolicyAsync(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 */ - @BetaApi - public final Operation deleteSslPolicy(DeleteSslPolicyHttpRequest request) { - return deleteSslPolicyCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteSslPolicyAsync( + DeleteSslPolicyHttpRequest request) { + return deleteSslPolicyOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified SSL policy. The SSL policy resource can be deleted only if it is not in + * use by any TargetHttpsProxy or TargetSslProxy resources. + * + *

Sample code: + * + *


+   * try (SslPolicyClient sslPolicyClient = SslPolicyClient.create()) {
+   *   ProjectGlobalSslPolicyName sslPolicy = ProjectGlobalSslPolicyName.of("[PROJECT]", "[SSL_POLICY]");
+   *   DeleteSslPolicyHttpRequest request = DeleteSslPolicyHttpRequest.newBuilder()
+   *     .setSslPolicy(sslPolicy.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = sslPolicyClient.deleteSslPolicyOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteSslPolicyOperationCallable() { + return stub.deleteSslPolicyOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -244,7 +290,7 @@ public final Operation deleteSslPolicy(DeleteSslPolicyHttpRequest request) { * .build(); * ApiFuture<Operation> future = sslPolicyClient.deleteSslPolicyCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -363,7 +409,7 @@ public final UnaryCallable getSslPolicyCalla * try (SslPolicyClient sslPolicyClient = SslPolicyClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * SslPolicy sslPolicyResource = SslPolicy.newBuilder().build(); - * Operation response = sslPolicyClient.insertSslPolicy(project, sslPolicyResource); + * sslPolicyClient.insertSslPolicyAsync(project, sslPolicyResource).get(); * } * * @@ -374,15 +420,17 @@ public final UnaryCallable getSslPolicyCalla * the load balancers and the backends. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertSslPolicy(ProjectName project, SslPolicy sslPolicyResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertSslPolicyAsync( + ProjectName project, SslPolicy sslPolicyResource) { InsertSslPolicyHttpRequest request = InsertSslPolicyHttpRequest.newBuilder() .setProject(project == null ? null : project.toString()) .setSslPolicyResource(sslPolicyResource) .build(); - return insertSslPolicy(request); + return insertSslPolicyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -396,7 +444,7 @@ public final Operation insertSslPolicy(ProjectName project, SslPolicy sslPolicyR * try (SslPolicyClient sslPolicyClient = SslPolicyClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * SslPolicy sslPolicyResource = SslPolicy.newBuilder().build(); - * Operation response = sslPolicyClient.insertSslPolicy(project.toString(), sslPolicyResource); + * sslPolicyClient.insertSslPolicyAsync(project.toString(), sslPolicyResource).get(); * } * * @@ -407,15 +455,17 @@ public final Operation insertSslPolicy(ProjectName project, SslPolicy sslPolicyR * the load balancers and the backends. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertSslPolicy(String project, SslPolicy sslPolicyResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertSslPolicyAsync( + String project, SslPolicy sslPolicyResource) { InsertSslPolicyHttpRequest request = InsertSslPolicyHttpRequest.newBuilder() .setProject(project) .setSslPolicyResource(sslPolicyResource) .build(); - return insertSslPolicy(request); + return insertSslPolicyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -433,16 +483,45 @@ public final Operation insertSslPolicy(String project, SslPolicy sslPolicyResour * .setProject(project.toString()) * .setSslPolicyResource(sslPolicyResource) * .build(); - * Operation response = sslPolicyClient.insertSslPolicy(request); + * sslPolicyClient.insertSslPolicyAsync(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 */ - @BetaApi - public final Operation insertSslPolicy(InsertSslPolicyHttpRequest request) { - return insertSslPolicyCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertSslPolicyAsync( + InsertSslPolicyHttpRequest request) { + return insertSslPolicyOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Returns the specified SSL policy resource. Gets a list of available SSL policies by making a + * list() request. + * + *

Sample code: + * + *


+   * try (SslPolicyClient sslPolicyClient = SslPolicyClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   SslPolicy sslPolicyResource = SslPolicy.newBuilder().build();
+   *   InsertSslPolicyHttpRequest request = InsertSslPolicyHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .setSslPolicyResource(sslPolicyResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = sslPolicyClient.insertSslPolicyOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertSslPolicyOperationCallable() { + return stub.insertSslPolicyOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -462,7 +541,7 @@ public final Operation insertSslPolicy(InsertSslPolicyHttpRequest request) { * .build(); * ApiFuture<Operation> future = sslPolicyClient.insertSslPolicyCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -721,7 +800,7 @@ public final SslPoliciesListAvailableFeaturesResponse listAvailableFeaturesSslPo * ProjectGlobalSslPolicyName sslPolicy = ProjectGlobalSslPolicyName.of("[PROJECT]", "[SSL_POLICY]"); * SslPolicy sslPolicyResource = SslPolicy.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = sslPolicyClient.patchSslPolicy(sslPolicy, sslPolicyResource, fieldMask); + * sslPolicyClient.patchSslPolicyAsync(sslPolicy, sslPolicyResource, fieldMask).get(); * } * * @@ -737,8 +816,9 @@ public final SslPoliciesListAvailableFeaturesResponse listAvailableFeaturesSslPo * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchSslPolicy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchSslPolicyAsync( ProjectGlobalSslPolicyName sslPolicy, SslPolicy sslPolicyResource, List fieldMask) { PatchSslPolicyHttpRequest request = @@ -747,7 +827,7 @@ public final Operation patchSslPolicy( .setSslPolicyResource(sslPolicyResource) .addAllFieldMask(fieldMask) .build(); - return patchSslPolicy(request); + return patchSslPolicyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -761,7 +841,7 @@ public final Operation patchSslPolicy( * ProjectGlobalSslPolicyName sslPolicy = ProjectGlobalSslPolicyName.of("[PROJECT]", "[SSL_POLICY]"); * SslPolicy sslPolicyResource = SslPolicy.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = sslPolicyClient.patchSslPolicy(sslPolicy.toString(), sslPolicyResource, fieldMask); + * sslPolicyClient.patchSslPolicyAsync(sslPolicy.toString(), sslPolicyResource, fieldMask).get(); * } * * @@ -777,8 +857,9 @@ public final Operation patchSslPolicy( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchSslPolicy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchSslPolicyAsync( String sslPolicy, SslPolicy sslPolicyResource, List fieldMask) { PatchSslPolicyHttpRequest request = @@ -787,7 +868,7 @@ public final Operation patchSslPolicy( .setSslPolicyResource(sslPolicyResource) .addAllFieldMask(fieldMask) .build(); - return patchSslPolicy(request); + return patchSslPolicyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -806,16 +887,46 @@ public final Operation patchSslPolicy( * .setSslPolicyResource(sslPolicyResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = sslPolicyClient.patchSslPolicy(request); + * sslPolicyClient.patchSslPolicyAsync(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 */ - @BetaApi - public final Operation patchSslPolicy(PatchSslPolicyHttpRequest request) { - return patchSslPolicyCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchSslPolicyAsync( + PatchSslPolicyHttpRequest request) { + return patchSslPolicyOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Patches the specified SSL policy with the data included in the request. + * + *

Sample code: + * + *


+   * try (SslPolicyClient sslPolicyClient = SslPolicyClient.create()) {
+   *   ProjectGlobalSslPolicyName sslPolicy = ProjectGlobalSslPolicyName.of("[PROJECT]", "[SSL_POLICY]");
+   *   SslPolicy sslPolicyResource = SslPolicy.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   PatchSslPolicyHttpRequest request = PatchSslPolicyHttpRequest.newBuilder()
+   *     .setSslPolicy(sslPolicy.toString())
+   *     .setSslPolicyResource(sslPolicyResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = sslPolicyClient.patchSslPolicyOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + patchSslPolicyOperationCallable() { + return stub.patchSslPolicyOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -836,7 +947,7 @@ public final Operation patchSslPolicy(PatchSslPolicyHttpRequest request) { * .build(); * ApiFuture<Operation> future = sslPolicyClient.patchSslPolicyCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SslPolicySettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SslPolicySettings.java index c68915971db3..96bb2c76b022 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SslPolicySettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SslPolicySettings.java @@ -21,10 +21,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -48,13 +50,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteSslPolicy to 30 seconds: + * example, to set the total timeout of getSslPolicy to 30 seconds: * *

  * 
  * SslPolicySettings.Builder sslPolicySettingsBuilder =
  *     SslPolicySettings.newBuilder();
- * sslPolicySettingsBuilder.deleteSslPolicySettings().getRetrySettings().toBuilder()
+ * sslPolicySettingsBuilder.getSslPolicySettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * SslPolicySettings sslPolicySettings = sslPolicySettingsBuilder.build();
  * 
@@ -68,6 +70,14 @@ public UnaryCallSettings deleteSslPolicyS
     return ((SslPolicyStubSettings) getStubSettings()).deleteSslPolicySettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteSslPolicy. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteSslPolicyOperationSettings() {
+    return ((SslPolicyStubSettings) getStubSettings()).deleteSslPolicyOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getSslPolicy. */
   public UnaryCallSettings getSslPolicySettings() {
     return ((SslPolicyStubSettings) getStubSettings()).getSslPolicySettings();
@@ -78,6 +88,14 @@ public UnaryCallSettings insertSslPolicyS
     return ((SslPolicyStubSettings) getStubSettings()).insertSslPolicySettings();
   }
 
+  /** Returns the object with the settings used for calls to insertSslPolicy. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertSslPolicyOperationSettings() {
+    return ((SslPolicyStubSettings) getStubSettings()).insertSslPolicyOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listSslPolicies. */
   public PagedCallSettings<
           ListSslPoliciesHttpRequest, SslPoliciesList, ListSslPoliciesPagedResponse>
@@ -97,6 +115,14 @@ public UnaryCallSettings patchSslPolicySet
     return ((SslPolicyStubSettings) getStubSettings()).patchSslPolicySettings();
   }
 
+  /** Returns the object with the settings used for calls to patchSslPolicy. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      patchSslPolicyOperationSettings() {
+    return ((SslPolicyStubSettings) getStubSettings()).patchSslPolicyOperationSettings();
+  }
+
   public static final SslPolicySettings create(SslPolicyStubSettings stub) throws IOException {
     return new SslPolicySettings.Builder(stub.toBuilder()).build();
   }
@@ -204,6 +230,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteSslPolicySettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteSslPolicy. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteSslPolicyOperationSettings() {
+      return getStubSettingsBuilder().deleteSslPolicyOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getSslPolicy. */
     public UnaryCallSettings.Builder getSslPolicySettings() {
       return getStubSettingsBuilder().getSslPolicySettings();
@@ -215,6 +249,14 @@ public UnaryCallSettings.Builder getSslPolic
       return getStubSettingsBuilder().insertSslPolicySettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertSslPolicy. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertSslPolicyOperationSettings() {
+      return getStubSettingsBuilder().insertSslPolicyOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listSslPolicies. */
     public PagedCallSettings.Builder<
             ListSslPoliciesHttpRequest, SslPoliciesList, ListSslPoliciesPagedResponse>
@@ -235,6 +277,14 @@ public UnaryCallSettings.Builder getSslPolic
       return getStubSettingsBuilder().patchSslPolicySettings();
     }
 
+    /** Returns the builder for the settings used for calls to patchSslPolicy. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchSslPolicyOperationSettings() {
+      return getStubSettingsBuilder().patchSslPolicyOperationSettings();
+    }
+
     @Override
     public SslPolicySettings build() throws IOException {
       return new SslPolicySettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SubnetworkClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SubnetworkClient.java
index bb80c9d6c130..dddb3c5691c6 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SubnetworkClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SubnetworkClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.SubnetworkStub;
@@ -43,7 +46,7 @@
  * 
  * try (SubnetworkClient subnetworkClient = SubnetworkClient.create()) {
  *   ProjectRegionSubnetworkName subnetwork = ProjectRegionSubnetworkName.of("[PROJECT]", "[REGION]", "[SUBNETWORK]");
- *   Operation response = subnetworkClient.deleteSubnetwork(subnetwork);
+ *   Subnetwork response = subnetworkClient.getSubnetwork(subnetwork);
  * }
  * 
  * 
@@ -103,6 +106,7 @@ public class SubnetworkClient implements BackgroundResource { private final SubnetworkSettings settings; private final SubnetworkStub stub; + private final RegionOperationClient operationsClient; /** Constructs an instance of SubnetworkClient with default settings. */ public static final SubnetworkClient create() throws IOException { @@ -133,12 +137,14 @@ public static final SubnetworkClient create(SubnetworkStub stub) { protected SubnetworkClient(SubnetworkSettings settings) throws IOException { this.settings = settings; this.stub = ((SubnetworkStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected SubnetworkClient(SubnetworkStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub()); } public final SubnetworkSettings getSettings() { @@ -150,6 +156,16 @@ public SubnetworkStub getStub() { return stub; } + /** + * Returns the RegionOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final RegionOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Retrieves an aggregated list of subnetworks. @@ -299,21 +315,23 @@ public final AggregatedListSubnetworksPagedResponse aggregatedListSubnetworks( *

    * try (SubnetworkClient subnetworkClient = SubnetworkClient.create()) {
    *   ProjectRegionSubnetworkName subnetwork = ProjectRegionSubnetworkName.of("[PROJECT]", "[REGION]", "[SUBNETWORK]");
-   *   Operation response = subnetworkClient.deleteSubnetwork(subnetwork);
+   *   subnetworkClient.deleteSubnetworkAsync(subnetwork).get();
    * }
    * 
* * @param subnetwork Name of the Subnetwork resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteSubnetwork(ProjectRegionSubnetworkName subnetwork) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteSubnetworkAsync( + ProjectRegionSubnetworkName subnetwork) { DeleteSubnetworkHttpRequest request = DeleteSubnetworkHttpRequest.newBuilder() .setSubnetwork(subnetwork == null ? null : subnetwork.toString()) .build(); - return deleteSubnetwork(request); + return deleteSubnetworkAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -325,19 +343,20 @@ public final Operation deleteSubnetwork(ProjectRegionSubnetworkName subnetwork) *

    * try (SubnetworkClient subnetworkClient = SubnetworkClient.create()) {
    *   ProjectRegionSubnetworkName subnetwork = ProjectRegionSubnetworkName.of("[PROJECT]", "[REGION]", "[SUBNETWORK]");
-   *   Operation response = subnetworkClient.deleteSubnetwork(subnetwork.toString());
+   *   subnetworkClient.deleteSubnetworkAsync(subnetwork.toString()).get();
    * }
    * 
* * @param subnetwork Name of the Subnetwork resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteSubnetwork(String subnetwork) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteSubnetworkAsync(String subnetwork) { DeleteSubnetworkHttpRequest request = DeleteSubnetworkHttpRequest.newBuilder().setSubnetwork(subnetwork).build(); - return deleteSubnetwork(request); + return deleteSubnetworkAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -352,16 +371,42 @@ public final Operation deleteSubnetwork(String subnetwork) { * DeleteSubnetworkHttpRequest request = DeleteSubnetworkHttpRequest.newBuilder() * .setSubnetwork(subnetwork.toString()) * .build(); - * Operation response = subnetworkClient.deleteSubnetwork(request); + * subnetworkClient.deleteSubnetworkAsync(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 */ - @BetaApi - public final Operation deleteSubnetwork(DeleteSubnetworkHttpRequest request) { - return deleteSubnetworkCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteSubnetworkAsync( + DeleteSubnetworkHttpRequest request) { + return deleteSubnetworkOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified subnetwork. + * + *

Sample code: + * + *


+   * try (SubnetworkClient subnetworkClient = SubnetworkClient.create()) {
+   *   ProjectRegionSubnetworkName subnetwork = ProjectRegionSubnetworkName.of("[PROJECT]", "[REGION]", "[SUBNETWORK]");
+   *   DeleteSubnetworkHttpRequest request = DeleteSubnetworkHttpRequest.newBuilder()
+   *     .setSubnetwork(subnetwork.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = subnetworkClient.deleteSubnetworkOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteSubnetworkOperationCallable() { + return stub.deleteSubnetworkOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -378,7 +423,7 @@ public final Operation deleteSubnetwork(DeleteSubnetworkHttpRequest request) { * .build(); * ApiFuture<Operation> future = subnetworkClient.deleteSubnetworkCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -397,7 +442,7 @@ public final UnaryCallable deleteSubnetw * try (SubnetworkClient subnetworkClient = SubnetworkClient.create()) { * ProjectRegionSubnetworkName subnetwork = ProjectRegionSubnetworkName.of("[PROJECT]", "[REGION]", "[SUBNETWORK]"); * SubnetworksExpandIpCidrRangeRequest subnetworksExpandIpCidrRangeRequestResource = SubnetworksExpandIpCidrRangeRequest.newBuilder().build(); - * Operation response = subnetworkClient.expandIpCidrRangeSubnetwork(subnetwork, subnetworksExpandIpCidrRangeRequestResource); + * subnetworkClient.expandIpCidrRangeSubnetworkAsync(subnetwork, subnetworksExpandIpCidrRangeRequestResource).get(); * } * * @@ -405,8 +450,9 @@ public final UnaryCallable deleteSubnetw * @param subnetworksExpandIpCidrRangeRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation expandIpCidrRangeSubnetwork( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture expandIpCidrRangeSubnetworkAsync( ProjectRegionSubnetworkName subnetwork, SubnetworksExpandIpCidrRangeRequest subnetworksExpandIpCidrRangeRequestResource) { @@ -416,7 +462,7 @@ public final Operation expandIpCidrRangeSubnetwork( .setSubnetworksExpandIpCidrRangeRequestResource( subnetworksExpandIpCidrRangeRequestResource) .build(); - return expandIpCidrRangeSubnetwork(request); + return expandIpCidrRangeSubnetworkAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -429,7 +475,7 @@ public final Operation expandIpCidrRangeSubnetwork( * try (SubnetworkClient subnetworkClient = SubnetworkClient.create()) { * ProjectRegionSubnetworkName subnetwork = ProjectRegionSubnetworkName.of("[PROJECT]", "[REGION]", "[SUBNETWORK]"); * SubnetworksExpandIpCidrRangeRequest subnetworksExpandIpCidrRangeRequestResource = SubnetworksExpandIpCidrRangeRequest.newBuilder().build(); - * Operation response = subnetworkClient.expandIpCidrRangeSubnetwork(subnetwork.toString(), subnetworksExpandIpCidrRangeRequestResource); + * subnetworkClient.expandIpCidrRangeSubnetworkAsync(subnetwork.toString(), subnetworksExpandIpCidrRangeRequestResource).get(); * } * * @@ -437,8 +483,9 @@ public final Operation expandIpCidrRangeSubnetwork( * @param subnetworksExpandIpCidrRangeRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation expandIpCidrRangeSubnetwork( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture expandIpCidrRangeSubnetworkAsync( String subnetwork, SubnetworksExpandIpCidrRangeRequest subnetworksExpandIpCidrRangeRequestResource) { @@ -448,7 +495,7 @@ public final Operation expandIpCidrRangeSubnetwork( .setSubnetworksExpandIpCidrRangeRequestResource( subnetworksExpandIpCidrRangeRequestResource) .build(); - return expandIpCidrRangeSubnetwork(request); + return expandIpCidrRangeSubnetworkAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -465,17 +512,44 @@ public final Operation expandIpCidrRangeSubnetwork( * .setSubnetwork(subnetwork.toString()) * .setSubnetworksExpandIpCidrRangeRequestResource(subnetworksExpandIpCidrRangeRequestResource) * .build(); - * Operation response = subnetworkClient.expandIpCidrRangeSubnetwork(request); + * subnetworkClient.expandIpCidrRangeSubnetworkAsync(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 */ - @BetaApi - public final Operation expandIpCidrRangeSubnetwork( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture expandIpCidrRangeSubnetworkAsync( ExpandIpCidrRangeSubnetworkHttpRequest request) { - return expandIpCidrRangeSubnetworkCallable().call(request); + return expandIpCidrRangeSubnetworkOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Expands the IP CIDR range of the subnetwork to a specified value. + * + *

Sample code: + * + *


+   * try (SubnetworkClient subnetworkClient = SubnetworkClient.create()) {
+   *   ProjectRegionSubnetworkName subnetwork = ProjectRegionSubnetworkName.of("[PROJECT]", "[REGION]", "[SUBNETWORK]");
+   *   SubnetworksExpandIpCidrRangeRequest subnetworksExpandIpCidrRangeRequestResource = SubnetworksExpandIpCidrRangeRequest.newBuilder().build();
+   *   ExpandIpCidrRangeSubnetworkHttpRequest request = ExpandIpCidrRangeSubnetworkHttpRequest.newBuilder()
+   *     .setSubnetwork(subnetwork.toString())
+   *     .setSubnetworksExpandIpCidrRangeRequestResource(subnetworksExpandIpCidrRangeRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = subnetworkClient.expandIpCidrRangeSubnetworkOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + expandIpCidrRangeSubnetworkOperationCallable() { + return stub.expandIpCidrRangeSubnetworkOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -494,7 +568,7 @@ public final Operation expandIpCidrRangeSubnetwork( * .build(); * ApiFuture<Operation> future = subnetworkClient.expandIpCidrRangeSubnetworkCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -713,7 +787,7 @@ public final Policy getIamPolicySubnetwork(GetIamPolicySubnetworkHttpRequest req * try (SubnetworkClient subnetworkClient = SubnetworkClient.create()) { * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * Subnetwork subnetworkResource = Subnetwork.newBuilder().build(); - * Operation response = subnetworkClient.insertSubnetwork(region, subnetworkResource); + * subnetworkClient.insertSubnetworkAsync(region, subnetworkResource).get(); * } * * @@ -722,15 +796,17 @@ public final Policy getIamPolicySubnetwork(GetIamPolicySubnetworkHttpRequest req * resource_for v1.subnetworks ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertSubnetwork(ProjectRegionName region, Subnetwork subnetworkResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertSubnetworkAsync( + ProjectRegionName region, Subnetwork subnetworkResource) { InsertSubnetworkHttpRequest request = InsertSubnetworkHttpRequest.newBuilder() .setRegion(region == null ? null : region.toString()) .setSubnetworkResource(subnetworkResource) .build(); - return insertSubnetwork(request); + return insertSubnetworkAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -743,7 +819,7 @@ public final Operation insertSubnetwork(ProjectRegionName region, Subnetwork sub * try (SubnetworkClient subnetworkClient = SubnetworkClient.create()) { * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * Subnetwork subnetworkResource = Subnetwork.newBuilder().build(); - * Operation response = subnetworkClient.insertSubnetwork(region.toString(), subnetworkResource); + * subnetworkClient.insertSubnetworkAsync(region.toString(), subnetworkResource).get(); * } * * @@ -752,15 +828,17 @@ public final Operation insertSubnetwork(ProjectRegionName region, Subnetwork sub * resource_for v1.subnetworks ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertSubnetwork(String region, Subnetwork subnetworkResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertSubnetworkAsync( + String region, Subnetwork subnetworkResource) { InsertSubnetworkHttpRequest request = InsertSubnetworkHttpRequest.newBuilder() .setRegion(region) .setSubnetworkResource(subnetworkResource) .build(); - return insertSubnetwork(request); + return insertSubnetworkAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -777,16 +855,44 @@ public final Operation insertSubnetwork(String region, Subnetwork subnetworkReso * .setRegion(region.toString()) * .setSubnetworkResource(subnetworkResource) * .build(); - * Operation response = subnetworkClient.insertSubnetwork(request); + * subnetworkClient.insertSubnetworkAsync(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 */ - @BetaApi - public final Operation insertSubnetwork(InsertSubnetworkHttpRequest request) { - return insertSubnetworkCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertSubnetworkAsync( + InsertSubnetworkHttpRequest request) { + return insertSubnetworkOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a subnetwork in the specified project using the data included in the request. + * + *

Sample code: + * + *


+   * try (SubnetworkClient subnetworkClient = SubnetworkClient.create()) {
+   *   ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
+   *   Subnetwork subnetworkResource = Subnetwork.newBuilder().build();
+   *   InsertSubnetworkHttpRequest request = InsertSubnetworkHttpRequest.newBuilder()
+   *     .setRegion(region.toString())
+   *     .setSubnetworkResource(subnetworkResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = subnetworkClient.insertSubnetworkOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertSubnetworkOperationCallable() { + return stub.insertSubnetworkOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -805,7 +911,7 @@ public final Operation insertSubnetwork(InsertSubnetworkHttpRequest request) { * .build(); * ApiFuture<Operation> future = subnetworkClient.insertSubnetworkCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1101,7 +1207,7 @@ public final ListUsableSubnetworksPagedResponse listUsableSubnetworks( * ProjectRegionSubnetworkName subnetwork = ProjectRegionSubnetworkName.of("[PROJECT]", "[REGION]", "[SUBNETWORK]"); * Subnetwork subnetworkResource = Subnetwork.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = subnetworkClient.patchSubnetwork(subnetwork, subnetworkResource, fieldMask); + * subnetworkClient.patchSubnetworkAsync(subnetwork, subnetworkResource, fieldMask).get(); * } * * @@ -1114,8 +1220,9 @@ public final ListUsableSubnetworksPagedResponse listUsableSubnetworks( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchSubnetwork( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchSubnetworkAsync( ProjectRegionSubnetworkName subnetwork, Subnetwork subnetworkResource, List fieldMask) { @@ -1126,7 +1233,7 @@ public final Operation patchSubnetwork( .setSubnetworkResource(subnetworkResource) .addAllFieldMask(fieldMask) .build(); - return patchSubnetwork(request); + return patchSubnetworkAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1142,7 +1249,7 @@ public final Operation patchSubnetwork( * ProjectRegionSubnetworkName subnetwork = ProjectRegionSubnetworkName.of("[PROJECT]", "[REGION]", "[SUBNETWORK]"); * Subnetwork subnetworkResource = Subnetwork.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = subnetworkClient.patchSubnetwork(subnetwork.toString(), subnetworkResource, fieldMask); + * subnetworkClient.patchSubnetworkAsync(subnetwork.toString(), subnetworkResource, fieldMask).get(); * } * * @@ -1155,8 +1262,9 @@ public final Operation patchSubnetwork( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchSubnetwork( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchSubnetworkAsync( String subnetwork, Subnetwork subnetworkResource, List fieldMask) { PatchSubnetworkHttpRequest request = @@ -1165,7 +1273,7 @@ public final Operation patchSubnetwork( .setSubnetworkResource(subnetworkResource) .addAllFieldMask(fieldMask) .build(); - return patchSubnetwork(request); + return patchSubnetworkAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1186,16 +1294,48 @@ public final Operation patchSubnetwork( * .setSubnetworkResource(subnetworkResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = subnetworkClient.patchSubnetwork(request); + * subnetworkClient.patchSubnetworkAsync(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 */ - @BetaApi - public final Operation patchSubnetwork(PatchSubnetworkHttpRequest request) { - return patchSubnetworkCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchSubnetworkAsync( + PatchSubnetworkHttpRequest request) { + return patchSubnetworkOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Patches the specified subnetwork with the data included in the request. Only certain fields can + * up updated with a patch request as indicated in the field descriptions. You must specify the + * current fingeprint of the subnetwork resource being patched. + * + *

Sample code: + * + *


+   * try (SubnetworkClient subnetworkClient = SubnetworkClient.create()) {
+   *   ProjectRegionSubnetworkName subnetwork = ProjectRegionSubnetworkName.of("[PROJECT]", "[REGION]", "[SUBNETWORK]");
+   *   Subnetwork subnetworkResource = Subnetwork.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   PatchSubnetworkHttpRequest request = PatchSubnetworkHttpRequest.newBuilder()
+   *     .setSubnetwork(subnetwork.toString())
+   *     .setSubnetworkResource(subnetworkResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = subnetworkClient.patchSubnetworkOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + patchSubnetworkOperationCallable() { + return stub.patchSubnetworkOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1218,7 +1358,7 @@ public final Operation patchSubnetwork(PatchSubnetworkHttpRequest request) { * .build(); * ApiFuture<Operation> future = subnetworkClient.patchSubnetworkCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1351,7 +1491,7 @@ public final Policy setIamPolicySubnetwork(SetIamPolicySubnetworkHttpRequest req * try (SubnetworkClient subnetworkClient = SubnetworkClient.create()) { * ProjectRegionSubnetworkName subnetwork = ProjectRegionSubnetworkName.of("[PROJECT]", "[REGION]", "[SUBNETWORK]"); * SubnetworksSetPrivateIpGoogleAccessRequest subnetworksSetPrivateIpGoogleAccessRequestResource = SubnetworksSetPrivateIpGoogleAccessRequest.newBuilder().build(); - * Operation response = subnetworkClient.setPrivateIpGoogleAccessSubnetwork(subnetwork, subnetworksSetPrivateIpGoogleAccessRequestResource); + * subnetworkClient.setPrivateIpGoogleAccessSubnetworkAsync(subnetwork, subnetworksSetPrivateIpGoogleAccessRequestResource).get(); * } * * @@ -1359,8 +1499,9 @@ public final Policy setIamPolicySubnetwork(SetIamPolicySubnetworkHttpRequest req * @param subnetworksSetPrivateIpGoogleAccessRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setPrivateIpGoogleAccessSubnetwork( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setPrivateIpGoogleAccessSubnetworkAsync( ProjectRegionSubnetworkName subnetwork, SubnetworksSetPrivateIpGoogleAccessRequest subnetworksSetPrivateIpGoogleAccessRequestResource) { @@ -1371,7 +1512,7 @@ public final Operation setPrivateIpGoogleAccessSubnetwork( .setSubnetworksSetPrivateIpGoogleAccessRequestResource( subnetworksSetPrivateIpGoogleAccessRequestResource) .build(); - return setPrivateIpGoogleAccessSubnetwork(request); + return setPrivateIpGoogleAccessSubnetworkAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1385,7 +1526,7 @@ public final Operation setPrivateIpGoogleAccessSubnetwork( * try (SubnetworkClient subnetworkClient = SubnetworkClient.create()) { * ProjectRegionSubnetworkName subnetwork = ProjectRegionSubnetworkName.of("[PROJECT]", "[REGION]", "[SUBNETWORK]"); * SubnetworksSetPrivateIpGoogleAccessRequest subnetworksSetPrivateIpGoogleAccessRequestResource = SubnetworksSetPrivateIpGoogleAccessRequest.newBuilder().build(); - * Operation response = subnetworkClient.setPrivateIpGoogleAccessSubnetwork(subnetwork.toString(), subnetworksSetPrivateIpGoogleAccessRequestResource); + * subnetworkClient.setPrivateIpGoogleAccessSubnetworkAsync(subnetwork.toString(), subnetworksSetPrivateIpGoogleAccessRequestResource).get(); * } * * @@ -1393,8 +1534,9 @@ public final Operation setPrivateIpGoogleAccessSubnetwork( * @param subnetworksSetPrivateIpGoogleAccessRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setPrivateIpGoogleAccessSubnetwork( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setPrivateIpGoogleAccessSubnetworkAsync( String subnetwork, SubnetworksSetPrivateIpGoogleAccessRequest subnetworksSetPrivateIpGoogleAccessRequestResource) { @@ -1405,7 +1547,7 @@ public final Operation setPrivateIpGoogleAccessSubnetwork( .setSubnetworksSetPrivateIpGoogleAccessRequestResource( subnetworksSetPrivateIpGoogleAccessRequestResource) .build(); - return setPrivateIpGoogleAccessSubnetwork(request); + return setPrivateIpGoogleAccessSubnetworkAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1423,17 +1565,46 @@ public final Operation setPrivateIpGoogleAccessSubnetwork( * .setSubnetwork(subnetwork.toString()) * .setSubnetworksSetPrivateIpGoogleAccessRequestResource(subnetworksSetPrivateIpGoogleAccessRequestResource) * .build(); - * Operation response = subnetworkClient.setPrivateIpGoogleAccessSubnetwork(request); + * subnetworkClient.setPrivateIpGoogleAccessSubnetworkAsync(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 */ - @BetaApi - public final Operation setPrivateIpGoogleAccessSubnetwork( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setPrivateIpGoogleAccessSubnetworkAsync( SetPrivateIpGoogleAccessSubnetworkHttpRequest request) { - return setPrivateIpGoogleAccessSubnetworkCallable().call(request); + return setPrivateIpGoogleAccessSubnetworkOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Set whether VMs in this subnet can access Google services without assigning external IP + * addresses through Private Google Access. + * + *

Sample code: + * + *


+   * try (SubnetworkClient subnetworkClient = SubnetworkClient.create()) {
+   *   ProjectRegionSubnetworkName subnetwork = ProjectRegionSubnetworkName.of("[PROJECT]", "[REGION]", "[SUBNETWORK]");
+   *   SubnetworksSetPrivateIpGoogleAccessRequest subnetworksSetPrivateIpGoogleAccessRequestResource = SubnetworksSetPrivateIpGoogleAccessRequest.newBuilder().build();
+   *   SetPrivateIpGoogleAccessSubnetworkHttpRequest request = SetPrivateIpGoogleAccessSubnetworkHttpRequest.newBuilder()
+   *     .setSubnetwork(subnetwork.toString())
+   *     .setSubnetworksSetPrivateIpGoogleAccessRequestResource(subnetworksSetPrivateIpGoogleAccessRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = subnetworkClient.setPrivateIpGoogleAccessSubnetworkOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable< + SetPrivateIpGoogleAccessSubnetworkHttpRequest, EmptyMessage, Operation> + setPrivateIpGoogleAccessSubnetworkOperationCallable() { + return stub.setPrivateIpGoogleAccessSubnetworkOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1453,7 +1624,7 @@ public final Operation setPrivateIpGoogleAccessSubnetwork( * .build(); * ApiFuture<Operation> future = subnetworkClient.setPrivateIpGoogleAccessSubnetworkCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SubnetworkSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SubnetworkSettings.java index 39c44a77cf32..edec0eff98cc 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SubnetworkSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/SubnetworkSettings.java @@ -23,10 +23,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -50,13 +52,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteSubnetwork to 30 seconds: + * example, to set the total timeout of getSubnetwork to 30 seconds: * *

  * 
  * SubnetworkSettings.Builder subnetworkSettingsBuilder =
  *     SubnetworkSettings.newBuilder();
- * subnetworkSettingsBuilder.deleteSubnetworkSettings().getRetrySettings().toBuilder()
+ * subnetworkSettingsBuilder.getSubnetworkSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * SubnetworkSettings subnetworkSettings = subnetworkSettingsBuilder.build();
  * 
@@ -79,12 +81,29 @@ public UnaryCallSettings deleteSubnetwor
     return ((SubnetworkStubSettings) getStubSettings()).deleteSubnetworkSettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteSubnetwork. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteSubnetworkOperationSettings() {
+    return ((SubnetworkStubSettings) getStubSettings()).deleteSubnetworkOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to expandIpCidrRangeSubnetwork. */
   public UnaryCallSettings
       expandIpCidrRangeSubnetworkSettings() {
     return ((SubnetworkStubSettings) getStubSettings()).expandIpCidrRangeSubnetworkSettings();
   }
 
+  /** Returns the object with the settings used for calls to expandIpCidrRangeSubnetwork. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      expandIpCidrRangeSubnetworkOperationSettings() {
+    return ((SubnetworkStubSettings) getStubSettings())
+        .expandIpCidrRangeSubnetworkOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getSubnetwork. */
   public UnaryCallSettings getSubnetworkSettings() {
     return ((SubnetworkStubSettings) getStubSettings()).getSubnetworkSettings();
@@ -101,6 +120,14 @@ public UnaryCallSettings insertSubnetwor
     return ((SubnetworkStubSettings) getStubSettings()).insertSubnetworkSettings();
   }
 
+  /** Returns the object with the settings used for calls to insertSubnetwork. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertSubnetworkOperationSettings() {
+    return ((SubnetworkStubSettings) getStubSettings()).insertSubnetworkOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listSubnetworks. */
   public PagedCallSettings
       listSubnetworksSettings() {
@@ -121,6 +148,14 @@ public UnaryCallSettings patchSubnetworkS
     return ((SubnetworkStubSettings) getStubSettings()).patchSubnetworkSettings();
   }
 
+  /** Returns the object with the settings used for calls to patchSubnetwork. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      patchSubnetworkOperationSettings() {
+    return ((SubnetworkStubSettings) getStubSettings()).patchSubnetworkOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to setIamPolicySubnetwork. */
   public UnaryCallSettings
       setIamPolicySubnetworkSettings() {
@@ -134,6 +169,16 @@ public UnaryCallSettings patchSubnetworkS
         .setPrivateIpGoogleAccessSubnetworkSettings();
   }
 
+  /** Returns the object with the settings used for calls to setPrivateIpGoogleAccessSubnetwork. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings<
+          SetPrivateIpGoogleAccessSubnetworkHttpRequest, EmptyMessage, Operation>
+      setPrivateIpGoogleAccessSubnetworkOperationSettings() {
+    return ((SubnetworkStubSettings) getStubSettings())
+        .setPrivateIpGoogleAccessSubnetworkOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to testIamPermissionsSubnetwork. */
   public UnaryCallSettings
       testIamPermissionsSubnetworkSettings() {
@@ -256,12 +301,29 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteSubnetworkSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteSubnetwork. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteSubnetworkOperationSettings() {
+      return getStubSettingsBuilder().deleteSubnetworkOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to expandIpCidrRangeSubnetwork. */
     public UnaryCallSettings.Builder
         expandIpCidrRangeSubnetworkSettings() {
       return getStubSettingsBuilder().expandIpCidrRangeSubnetworkSettings();
     }
 
+    /** Returns the builder for the settings used for calls to expandIpCidrRangeSubnetwork. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            ExpandIpCidrRangeSubnetworkHttpRequest, EmptyMessage, Operation>
+        expandIpCidrRangeSubnetworkOperationSettings() {
+      return getStubSettingsBuilder().expandIpCidrRangeSubnetworkOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getSubnetwork. */
     public UnaryCallSettings.Builder getSubnetworkSettings() {
       return getStubSettingsBuilder().getSubnetworkSettings();
@@ -279,6 +341,14 @@ public UnaryCallSettings.Builder getSubnet
       return getStubSettingsBuilder().insertSubnetworkSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertSubnetwork. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertSubnetworkOperationSettings() {
+      return getStubSettingsBuilder().insertSubnetworkOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listSubnetworks. */
     public PagedCallSettings.Builder<
             ListSubnetworksHttpRequest, SubnetworkList, ListSubnetworksPagedResponse>
@@ -301,6 +371,14 @@ public UnaryCallSettings.Builder getSubnet
       return getStubSettingsBuilder().patchSubnetworkSettings();
     }
 
+    /** Returns the builder for the settings used for calls to patchSubnetwork. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchSubnetworkOperationSettings() {
+      return getStubSettingsBuilder().patchSubnetworkOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to setIamPolicySubnetwork. */
     public UnaryCallSettings.Builder
         setIamPolicySubnetworkSettings() {
@@ -315,6 +393,17 @@ public UnaryCallSettings.Builder getSubnet
       return getStubSettingsBuilder().setPrivateIpGoogleAccessSubnetworkSettings();
     }
 
+    /**
+     * Returns the builder for the settings used for calls to setPrivateIpGoogleAccessSubnetwork.
+     */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetPrivateIpGoogleAccessSubnetworkHttpRequest, EmptyMessage, Operation>
+        setPrivateIpGoogleAccessSubnetworkOperationSettings() {
+      return getStubSettingsBuilder().setPrivateIpGoogleAccessSubnetworkOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to testIamPermissionsSubnetwork. */
     public UnaryCallSettings.Builder<
             TestIamPermissionsSubnetworkHttpRequest, TestPermissionsResponse>
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetHttpProxyClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetHttpProxyClient.java
index 235e0176e5ef..875ed7d32cfc 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetHttpProxyClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetHttpProxyClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.TargetHttpProxyStub;
@@ -43,7 +46,7 @@
  * 
  * try (TargetHttpProxyClient targetHttpProxyClient = TargetHttpProxyClient.create()) {
  *   ProjectGlobalTargetHttpProxyName targetHttpProxy = ProjectGlobalTargetHttpProxyName.of("[PROJECT]", "[TARGET_HTTP_PROXY]");
- *   Operation response = targetHttpProxyClient.deleteTargetHttpProxy(targetHttpProxy);
+ *   TargetHttpProxy response = targetHttpProxyClient.getTargetHttpProxy(targetHttpProxy);
  * }
  * 
  * 
@@ -104,6 +107,7 @@ public class TargetHttpProxyClient implements BackgroundResource { private final TargetHttpProxySettings settings; private final TargetHttpProxyStub stub; + private final GlobalOperationClient operationsClient; /** Constructs an instance of TargetHttpProxyClient with default settings. */ public static final TargetHttpProxyClient create() throws IOException { @@ -136,12 +140,14 @@ public static final TargetHttpProxyClient create(TargetHttpProxyStub stub) { protected TargetHttpProxyClient(TargetHttpProxySettings settings) throws IOException { this.settings = settings; this.stub = ((TargetHttpProxyStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected TargetHttpProxyClient(TargetHttpProxyStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } public final TargetHttpProxySettings getSettings() { @@ -153,6 +159,16 @@ public TargetHttpProxyStub getStub() { return stub; } + /** + * Returns the GlobalOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final GlobalOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Deletes the specified TargetHttpProxy resource. @@ -162,21 +178,23 @@ public TargetHttpProxyStub getStub() { *

    * try (TargetHttpProxyClient targetHttpProxyClient = TargetHttpProxyClient.create()) {
    *   ProjectGlobalTargetHttpProxyName targetHttpProxy = ProjectGlobalTargetHttpProxyName.of("[PROJECT]", "[TARGET_HTTP_PROXY]");
-   *   Operation response = targetHttpProxyClient.deleteTargetHttpProxy(targetHttpProxy);
+   *   targetHttpProxyClient.deleteTargetHttpProxyAsync(targetHttpProxy).get();
    * }
    * 
* * @param targetHttpProxy Name of the TargetHttpProxy resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteTargetHttpProxy(ProjectGlobalTargetHttpProxyName targetHttpProxy) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteTargetHttpProxyAsync( + ProjectGlobalTargetHttpProxyName targetHttpProxy) { DeleteTargetHttpProxyHttpRequest request = DeleteTargetHttpProxyHttpRequest.newBuilder() .setTargetHttpProxy(targetHttpProxy == null ? null : targetHttpProxy.toString()) .build(); - return deleteTargetHttpProxy(request); + return deleteTargetHttpProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -188,19 +206,21 @@ public final Operation deleteTargetHttpProxy(ProjectGlobalTargetHttpProxyName ta *

    * try (TargetHttpProxyClient targetHttpProxyClient = TargetHttpProxyClient.create()) {
    *   ProjectGlobalTargetHttpProxyName targetHttpProxy = ProjectGlobalTargetHttpProxyName.of("[PROJECT]", "[TARGET_HTTP_PROXY]");
-   *   Operation response = targetHttpProxyClient.deleteTargetHttpProxy(targetHttpProxy.toString());
+   *   targetHttpProxyClient.deleteTargetHttpProxyAsync(targetHttpProxy.toString()).get();
    * }
    * 
* * @param targetHttpProxy Name of the TargetHttpProxy resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteTargetHttpProxy(String targetHttpProxy) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteTargetHttpProxyAsync( + String targetHttpProxy) { DeleteTargetHttpProxyHttpRequest request = DeleteTargetHttpProxyHttpRequest.newBuilder().setTargetHttpProxy(targetHttpProxy).build(); - return deleteTargetHttpProxy(request); + return deleteTargetHttpProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -215,16 +235,42 @@ public final Operation deleteTargetHttpProxy(String targetHttpProxy) { * DeleteTargetHttpProxyHttpRequest request = DeleteTargetHttpProxyHttpRequest.newBuilder() * .setTargetHttpProxy(targetHttpProxy.toString()) * .build(); - * Operation response = targetHttpProxyClient.deleteTargetHttpProxy(request); + * targetHttpProxyClient.deleteTargetHttpProxyAsync(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 */ - @BetaApi - public final Operation deleteTargetHttpProxy(DeleteTargetHttpProxyHttpRequest request) { - return deleteTargetHttpProxyCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteTargetHttpProxyAsync( + DeleteTargetHttpProxyHttpRequest request) { + return deleteTargetHttpProxyOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified TargetHttpProxy resource. + * + *

Sample code: + * + *


+   * try (TargetHttpProxyClient targetHttpProxyClient = TargetHttpProxyClient.create()) {
+   *   ProjectGlobalTargetHttpProxyName targetHttpProxy = ProjectGlobalTargetHttpProxyName.of("[PROJECT]", "[TARGET_HTTP_PROXY]");
+   *   DeleteTargetHttpProxyHttpRequest request = DeleteTargetHttpProxyHttpRequest.newBuilder()
+   *     .setTargetHttpProxy(targetHttpProxy.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetHttpProxyClient.deleteTargetHttpProxyOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteTargetHttpProxyOperationCallable() { + return stub.deleteTargetHttpProxyOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -241,7 +287,7 @@ public final Operation deleteTargetHttpProxy(DeleteTargetHttpProxyHttpRequest re * .build(); * ApiFuture<Operation> future = targetHttpProxyClient.deleteTargetHttpProxyCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -365,7 +411,7 @@ public final TargetHttpProxy getTargetHttpProxy(GetTargetHttpProxyHttpRequest re * try (TargetHttpProxyClient targetHttpProxyClient = TargetHttpProxyClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * TargetHttpProxy targetHttpProxyResource = TargetHttpProxy.newBuilder().build(); - * Operation response = targetHttpProxyClient.insertTargetHttpProxy(project, targetHttpProxyResource); + * targetHttpProxyClient.insertTargetHttpProxyAsync(project, targetHttpProxyResource).get(); * } * * @@ -374,8 +420,9 @@ public final TargetHttpProxy getTargetHttpProxy(GetTargetHttpProxyHttpRequest re * (== resource_for beta.targetHttpProxies ==) (== resource_for v1.targetHttpProxies ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertTargetHttpProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertTargetHttpProxyAsync( ProjectName project, TargetHttpProxy targetHttpProxyResource) { InsertTargetHttpProxyHttpRequest request = @@ -383,7 +430,7 @@ public final Operation insertTargetHttpProxy( .setProject(project == null ? null : project.toString()) .setTargetHttpProxyResource(targetHttpProxyResource) .build(); - return insertTargetHttpProxy(request); + return insertTargetHttpProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -397,7 +444,7 @@ public final Operation insertTargetHttpProxy( * try (TargetHttpProxyClient targetHttpProxyClient = TargetHttpProxyClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * TargetHttpProxy targetHttpProxyResource = TargetHttpProxy.newBuilder().build(); - * Operation response = targetHttpProxyClient.insertTargetHttpProxy(project.toString(), targetHttpProxyResource); + * targetHttpProxyClient.insertTargetHttpProxyAsync(project.toString(), targetHttpProxyResource).get(); * } * * @@ -406,8 +453,9 @@ public final Operation insertTargetHttpProxy( * (== resource_for beta.targetHttpProxies ==) (== resource_for v1.targetHttpProxies ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertTargetHttpProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertTargetHttpProxyAsync( String project, TargetHttpProxy targetHttpProxyResource) { InsertTargetHttpProxyHttpRequest request = @@ -415,7 +463,7 @@ public final Operation insertTargetHttpProxy( .setProject(project) .setTargetHttpProxyResource(targetHttpProxyResource) .build(); - return insertTargetHttpProxy(request); + return insertTargetHttpProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -433,16 +481,45 @@ public final Operation insertTargetHttpProxy( * .setProject(project.toString()) * .setTargetHttpProxyResource(targetHttpProxyResource) * .build(); - * Operation response = targetHttpProxyClient.insertTargetHttpProxy(request); + * targetHttpProxyClient.insertTargetHttpProxyAsync(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 */ - @BetaApi - public final Operation insertTargetHttpProxy(InsertTargetHttpProxyHttpRequest request) { - return insertTargetHttpProxyCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertTargetHttpProxyAsync( + InsertTargetHttpProxyHttpRequest request) { + return insertTargetHttpProxyOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a TargetHttpProxy resource in the specified project using the data included in the + * request. + * + *

Sample code: + * + *


+   * try (TargetHttpProxyClient targetHttpProxyClient = TargetHttpProxyClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   TargetHttpProxy targetHttpProxyResource = TargetHttpProxy.newBuilder().build();
+   *   InsertTargetHttpProxyHttpRequest request = InsertTargetHttpProxyHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .setTargetHttpProxyResource(targetHttpProxyResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetHttpProxyClient.insertTargetHttpProxyOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertTargetHttpProxyOperationCallable() { + return stub.insertTargetHttpProxyOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -462,7 +539,7 @@ public final Operation insertTargetHttpProxy(InsertTargetHttpProxyHttpRequest re * .build(); * ApiFuture<Operation> future = targetHttpProxyClient.insertTargetHttpProxyCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -620,7 +697,7 @@ public final ListTargetHttpProxiesPagedResponse listTargetHttpProxies( * try (TargetHttpProxyClient targetHttpProxyClient = TargetHttpProxyClient.create()) { * ProjectTargetHttpProxyName targetHttpProxy = ProjectTargetHttpProxyName.of("[PROJECT]", "[TARGET_HTTP_PROXY]"); * UrlMapReference urlMapReferenceResource = UrlMapReference.newBuilder().build(); - * Operation response = targetHttpProxyClient.setUrlMapTargetHttpProxy(targetHttpProxy, urlMapReferenceResource); + * targetHttpProxyClient.setUrlMapTargetHttpProxyAsync(targetHttpProxy, urlMapReferenceResource).get(); * } * * @@ -628,8 +705,9 @@ public final ListTargetHttpProxiesPagedResponse listTargetHttpProxies( * @param urlMapReferenceResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setUrlMapTargetHttpProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setUrlMapTargetHttpProxyAsync( ProjectTargetHttpProxyName targetHttpProxy, UrlMapReference urlMapReferenceResource) { SetUrlMapTargetHttpProxyHttpRequest request = @@ -637,7 +715,7 @@ public final Operation setUrlMapTargetHttpProxy( .setTargetHttpProxy(targetHttpProxy == null ? null : targetHttpProxy.toString()) .setUrlMapReferenceResource(urlMapReferenceResource) .build(); - return setUrlMapTargetHttpProxy(request); + return setUrlMapTargetHttpProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -650,7 +728,7 @@ public final Operation setUrlMapTargetHttpProxy( * try (TargetHttpProxyClient targetHttpProxyClient = TargetHttpProxyClient.create()) { * ProjectTargetHttpProxyName targetHttpProxy = ProjectTargetHttpProxyName.of("[PROJECT]", "[TARGET_HTTP_PROXY]"); * UrlMapReference urlMapReferenceResource = UrlMapReference.newBuilder().build(); - * Operation response = targetHttpProxyClient.setUrlMapTargetHttpProxy(targetHttpProxy.toString(), urlMapReferenceResource); + * targetHttpProxyClient.setUrlMapTargetHttpProxyAsync(targetHttpProxy.toString(), urlMapReferenceResource).get(); * } * * @@ -658,8 +736,9 @@ public final Operation setUrlMapTargetHttpProxy( * @param urlMapReferenceResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setUrlMapTargetHttpProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setUrlMapTargetHttpProxyAsync( String targetHttpProxy, UrlMapReference urlMapReferenceResource) { SetUrlMapTargetHttpProxyHttpRequest request = @@ -667,7 +746,7 @@ public final Operation setUrlMapTargetHttpProxy( .setTargetHttpProxy(targetHttpProxy) .setUrlMapReferenceResource(urlMapReferenceResource) .build(); - return setUrlMapTargetHttpProxy(request); + return setUrlMapTargetHttpProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -684,16 +763,44 @@ public final Operation setUrlMapTargetHttpProxy( * .setTargetHttpProxy(targetHttpProxy.toString()) * .setUrlMapReferenceResource(urlMapReferenceResource) * .build(); - * Operation response = targetHttpProxyClient.setUrlMapTargetHttpProxy(request); + * targetHttpProxyClient.setUrlMapTargetHttpProxyAsync(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 */ - @BetaApi - public final Operation setUrlMapTargetHttpProxy(SetUrlMapTargetHttpProxyHttpRequest request) { - return setUrlMapTargetHttpProxyCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setUrlMapTargetHttpProxyAsync( + SetUrlMapTargetHttpProxyHttpRequest request) { + return setUrlMapTargetHttpProxyOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Changes the URL map for TargetHttpProxy. + * + *

Sample code: + * + *


+   * try (TargetHttpProxyClient targetHttpProxyClient = TargetHttpProxyClient.create()) {
+   *   ProjectTargetHttpProxyName targetHttpProxy = ProjectTargetHttpProxyName.of("[PROJECT]", "[TARGET_HTTP_PROXY]");
+   *   UrlMapReference urlMapReferenceResource = UrlMapReference.newBuilder().build();
+   *   SetUrlMapTargetHttpProxyHttpRequest request = SetUrlMapTargetHttpProxyHttpRequest.newBuilder()
+   *     .setTargetHttpProxy(targetHttpProxy.toString())
+   *     .setUrlMapReferenceResource(urlMapReferenceResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetHttpProxyClient.setUrlMapTargetHttpProxyOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + setUrlMapTargetHttpProxyOperationCallable() { + return stub.setUrlMapTargetHttpProxyOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -712,7 +819,7 @@ public final Operation setUrlMapTargetHttpProxy(SetUrlMapTargetHttpProxyHttpRequ * .build(); * ApiFuture<Operation> future = targetHttpProxyClient.setUrlMapTargetHttpProxyCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetHttpProxySettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetHttpProxySettings.java index 74c33bda6d1c..bc2e549bd7ea 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetHttpProxySettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetHttpProxySettings.java @@ -21,10 +21,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -48,13 +50,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteTargetHttpProxy to 30 seconds: + * example, to set the total timeout of getTargetHttpProxy to 30 seconds: * *

  * 
  * TargetHttpProxySettings.Builder targetHttpProxySettingsBuilder =
  *     TargetHttpProxySettings.newBuilder();
- * targetHttpProxySettingsBuilder.deleteTargetHttpProxySettings().getRetrySettings().toBuilder()
+ * targetHttpProxySettingsBuilder.getTargetHttpProxySettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * TargetHttpProxySettings targetHttpProxySettings = targetHttpProxySettingsBuilder.build();
  * 
@@ -69,6 +71,15 @@ public class TargetHttpProxySettings extends ClientSettings
+      deleteTargetHttpProxyOperationSettings() {
+    return ((TargetHttpProxyStubSettings) getStubSettings())
+        .deleteTargetHttpProxyOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getTargetHttpProxy. */
   public UnaryCallSettings
       getTargetHttpProxySettings() {
@@ -81,6 +92,15 @@ public class TargetHttpProxySettings extends ClientSettings
+      insertTargetHttpProxyOperationSettings() {
+    return ((TargetHttpProxyStubSettings) getStubSettings())
+        .insertTargetHttpProxyOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listTargetHttpProxies. */
   public PagedCallSettings<
           ListTargetHttpProxiesHttpRequest, TargetHttpProxyList, ListTargetHttpProxiesPagedResponse>
@@ -94,6 +114,15 @@ public class TargetHttpProxySettings extends ClientSettings
+      setUrlMapTargetHttpProxyOperationSettings() {
+    return ((TargetHttpProxyStubSettings) getStubSettings())
+        .setUrlMapTargetHttpProxyOperationSettings();
+  }
+
   public static final TargetHttpProxySettings create(TargetHttpProxyStubSettings stub)
       throws IOException {
     return new TargetHttpProxySettings.Builder(stub.toBuilder()).build();
@@ -202,6 +231,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteTargetHttpProxySettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteTargetHttpProxy. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteTargetHttpProxyOperationSettings() {
+      return getStubSettingsBuilder().deleteTargetHttpProxyOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getTargetHttpProxy. */
     public UnaryCallSettings.Builder
         getTargetHttpProxySettings() {
@@ -214,6 +251,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().insertTargetHttpProxySettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertTargetHttpProxy. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertTargetHttpProxyOperationSettings() {
+      return getStubSettingsBuilder().insertTargetHttpProxyOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listTargetHttpProxies. */
     public PagedCallSettings.Builder<
             ListTargetHttpProxiesHttpRequest,
@@ -229,6 +274,15 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().setUrlMapTargetHttpProxySettings();
     }
 
+    /** Returns the builder for the settings used for calls to setUrlMapTargetHttpProxy. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetUrlMapTargetHttpProxyHttpRequest, EmptyMessage, Operation>
+        setUrlMapTargetHttpProxyOperationSettings() {
+      return getStubSettingsBuilder().setUrlMapTargetHttpProxyOperationSettings();
+    }
+
     @Override
     public TargetHttpProxySettings build() throws IOException {
       return new TargetHttpProxySettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetHttpsProxyClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetHttpsProxyClient.java
index 439a5944f737..432f5e8bda73 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetHttpsProxyClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetHttpsProxyClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.TargetHttpsProxyStub;
@@ -43,7 +46,7 @@
  * 
  * try (TargetHttpsProxyClient targetHttpsProxyClient = TargetHttpsProxyClient.create()) {
  *   ProjectGlobalTargetHttpsProxyName targetHttpsProxy = ProjectGlobalTargetHttpsProxyName.of("[PROJECT]", "[TARGET_HTTPS_PROXY]");
- *   Operation response = targetHttpsProxyClient.deleteTargetHttpsProxy(targetHttpsProxy);
+ *   TargetHttpsProxy response = targetHttpsProxyClient.getTargetHttpsProxy(targetHttpsProxy);
  * }
  * 
  * 
@@ -104,6 +107,7 @@ public class TargetHttpsProxyClient implements BackgroundResource { private final TargetHttpsProxySettings settings; private final TargetHttpsProxyStub stub; + private final GlobalOperationClient operationsClient; /** Constructs an instance of TargetHttpsProxyClient with default settings. */ public static final TargetHttpsProxyClient create() throws IOException { @@ -136,12 +140,14 @@ public static final TargetHttpsProxyClient create(TargetHttpsProxyStub stub) { protected TargetHttpsProxyClient(TargetHttpsProxySettings settings) throws IOException { this.settings = settings; this.stub = ((TargetHttpsProxyStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected TargetHttpsProxyClient(TargetHttpsProxyStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } public final TargetHttpsProxySettings getSettings() { @@ -153,6 +159,16 @@ public TargetHttpsProxyStub getStub() { return stub; } + /** + * Returns the GlobalOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final GlobalOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Deletes the specified TargetHttpsProxy resource. @@ -162,22 +178,23 @@ public TargetHttpsProxyStub getStub() { *

    * try (TargetHttpsProxyClient targetHttpsProxyClient = TargetHttpsProxyClient.create()) {
    *   ProjectGlobalTargetHttpsProxyName targetHttpsProxy = ProjectGlobalTargetHttpsProxyName.of("[PROJECT]", "[TARGET_HTTPS_PROXY]");
-   *   Operation response = targetHttpsProxyClient.deleteTargetHttpsProxy(targetHttpsProxy);
+   *   targetHttpsProxyClient.deleteTargetHttpsProxyAsync(targetHttpsProxy).get();
    * }
    * 
* * @param targetHttpsProxy Name of the TargetHttpsProxy resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteTargetHttpsProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteTargetHttpsProxyAsync( ProjectGlobalTargetHttpsProxyName targetHttpsProxy) { DeleteTargetHttpsProxyHttpRequest request = DeleteTargetHttpsProxyHttpRequest.newBuilder() .setTargetHttpsProxy(targetHttpsProxy == null ? null : targetHttpsProxy.toString()) .build(); - return deleteTargetHttpsProxy(request); + return deleteTargetHttpsProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -189,21 +206,23 @@ public final Operation deleteTargetHttpsProxy( *

    * try (TargetHttpsProxyClient targetHttpsProxyClient = TargetHttpsProxyClient.create()) {
    *   ProjectGlobalTargetHttpsProxyName targetHttpsProxy = ProjectGlobalTargetHttpsProxyName.of("[PROJECT]", "[TARGET_HTTPS_PROXY]");
-   *   Operation response = targetHttpsProxyClient.deleteTargetHttpsProxy(targetHttpsProxy.toString());
+   *   targetHttpsProxyClient.deleteTargetHttpsProxyAsync(targetHttpsProxy.toString()).get();
    * }
    * 
* * @param targetHttpsProxy Name of the TargetHttpsProxy resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteTargetHttpsProxy(String targetHttpsProxy) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteTargetHttpsProxyAsync( + String targetHttpsProxy) { DeleteTargetHttpsProxyHttpRequest request = DeleteTargetHttpsProxyHttpRequest.newBuilder() .setTargetHttpsProxy(targetHttpsProxy) .build(); - return deleteTargetHttpsProxy(request); + return deleteTargetHttpsProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -218,16 +237,42 @@ public final Operation deleteTargetHttpsProxy(String targetHttpsProxy) { * DeleteTargetHttpsProxyHttpRequest request = DeleteTargetHttpsProxyHttpRequest.newBuilder() * .setTargetHttpsProxy(targetHttpsProxy.toString()) * .build(); - * Operation response = targetHttpsProxyClient.deleteTargetHttpsProxy(request); + * targetHttpsProxyClient.deleteTargetHttpsProxyAsync(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 */ - @BetaApi - public final Operation deleteTargetHttpsProxy(DeleteTargetHttpsProxyHttpRequest request) { - return deleteTargetHttpsProxyCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteTargetHttpsProxyAsync( + DeleteTargetHttpsProxyHttpRequest request) { + return deleteTargetHttpsProxyOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified TargetHttpsProxy resource. + * + *

Sample code: + * + *


+   * try (TargetHttpsProxyClient targetHttpsProxyClient = TargetHttpsProxyClient.create()) {
+   *   ProjectGlobalTargetHttpsProxyName targetHttpsProxy = ProjectGlobalTargetHttpsProxyName.of("[PROJECT]", "[TARGET_HTTPS_PROXY]");
+   *   DeleteTargetHttpsProxyHttpRequest request = DeleteTargetHttpsProxyHttpRequest.newBuilder()
+   *     .setTargetHttpsProxy(targetHttpsProxy.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetHttpsProxyClient.deleteTargetHttpsProxyOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteTargetHttpsProxyOperationCallable() { + return stub.deleteTargetHttpsProxyOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -244,7 +289,7 @@ public final Operation deleteTargetHttpsProxy(DeleteTargetHttpsProxyHttpRequest * .build(); * ApiFuture<Operation> future = targetHttpsProxyClient.deleteTargetHttpsProxyCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -368,7 +413,7 @@ public final TargetHttpsProxy getTargetHttpsProxy(GetTargetHttpsProxyHttpRequest * try (TargetHttpsProxyClient targetHttpsProxyClient = TargetHttpsProxyClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * TargetHttpsProxy targetHttpsProxyResource = TargetHttpsProxy.newBuilder().build(); - * Operation response = targetHttpsProxyClient.insertTargetHttpsProxy(project, targetHttpsProxyResource); + * targetHttpsProxyClient.insertTargetHttpsProxyAsync(project, targetHttpsProxyResource).get(); * } * * @@ -378,8 +423,9 @@ public final TargetHttpsProxy getTargetHttpsProxy(GetTargetHttpsProxyHttpRequest * ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertTargetHttpsProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertTargetHttpsProxyAsync( ProjectName project, TargetHttpsProxy targetHttpsProxyResource) { InsertTargetHttpsProxyHttpRequest request = @@ -387,7 +433,7 @@ public final Operation insertTargetHttpsProxy( .setProject(project == null ? null : project.toString()) .setTargetHttpsProxyResource(targetHttpsProxyResource) .build(); - return insertTargetHttpsProxy(request); + return insertTargetHttpsProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -401,7 +447,7 @@ public final Operation insertTargetHttpsProxy( * try (TargetHttpsProxyClient targetHttpsProxyClient = TargetHttpsProxyClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * TargetHttpsProxy targetHttpsProxyResource = TargetHttpsProxy.newBuilder().build(); - * Operation response = targetHttpsProxyClient.insertTargetHttpsProxy(project.toString(), targetHttpsProxyResource); + * targetHttpsProxyClient.insertTargetHttpsProxyAsync(project.toString(), targetHttpsProxyResource).get(); * } * * @@ -411,8 +457,9 @@ public final Operation insertTargetHttpsProxy( * ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertTargetHttpsProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertTargetHttpsProxyAsync( String project, TargetHttpsProxy targetHttpsProxyResource) { InsertTargetHttpsProxyHttpRequest request = @@ -420,7 +467,7 @@ public final Operation insertTargetHttpsProxy( .setProject(project) .setTargetHttpsProxyResource(targetHttpsProxyResource) .build(); - return insertTargetHttpsProxy(request); + return insertTargetHttpsProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -438,16 +485,45 @@ public final Operation insertTargetHttpsProxy( * .setProject(project.toString()) * .setTargetHttpsProxyResource(targetHttpsProxyResource) * .build(); - * Operation response = targetHttpsProxyClient.insertTargetHttpsProxy(request); + * targetHttpsProxyClient.insertTargetHttpsProxyAsync(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 */ - @BetaApi - public final Operation insertTargetHttpsProxy(InsertTargetHttpsProxyHttpRequest request) { - return insertTargetHttpsProxyCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertTargetHttpsProxyAsync( + InsertTargetHttpsProxyHttpRequest request) { + return insertTargetHttpsProxyOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a TargetHttpsProxy resource in the specified project using the data included in the + * request. + * + *

Sample code: + * + *


+   * try (TargetHttpsProxyClient targetHttpsProxyClient = TargetHttpsProxyClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   TargetHttpsProxy targetHttpsProxyResource = TargetHttpsProxy.newBuilder().build();
+   *   InsertTargetHttpsProxyHttpRequest request = InsertTargetHttpsProxyHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .setTargetHttpsProxyResource(targetHttpsProxyResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetHttpsProxyClient.insertTargetHttpsProxyOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertTargetHttpsProxyOperationCallable() { + return stub.insertTargetHttpsProxyOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -467,7 +543,7 @@ public final Operation insertTargetHttpsProxy(InsertTargetHttpsProxyHttpRequest * .build(); * ApiFuture<Operation> future = targetHttpsProxyClient.insertTargetHttpsProxyCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -625,7 +701,7 @@ public final ListTargetHttpsProxiesPagedResponse listTargetHttpsProxies( * try (TargetHttpsProxyClient targetHttpsProxyClient = TargetHttpsProxyClient.create()) { * ProjectGlobalTargetHttpsProxyName targetHttpsProxy = ProjectGlobalTargetHttpsProxyName.of("[PROJECT]", "[TARGET_HTTPS_PROXY]"); * TargetHttpsProxiesSetQuicOverrideRequest targetHttpsProxiesSetQuicOverrideRequestResource = TargetHttpsProxiesSetQuicOverrideRequest.newBuilder().build(); - * Operation response = targetHttpsProxyClient.setQuicOverrideTargetHttpsProxy(targetHttpsProxy, targetHttpsProxiesSetQuicOverrideRequestResource); + * targetHttpsProxyClient.setQuicOverrideTargetHttpsProxyAsync(targetHttpsProxy, targetHttpsProxiesSetQuicOverrideRequestResource).get(); * } * * @@ -634,8 +710,9 @@ public final ListTargetHttpsProxiesPagedResponse listTargetHttpsProxies( * @param targetHttpsProxiesSetQuicOverrideRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setQuicOverrideTargetHttpsProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setQuicOverrideTargetHttpsProxyAsync( ProjectGlobalTargetHttpsProxyName targetHttpsProxy, TargetHttpsProxiesSetQuicOverrideRequest targetHttpsProxiesSetQuicOverrideRequestResource) { @@ -645,7 +722,7 @@ public final Operation setQuicOverrideTargetHttpsProxy( .setTargetHttpsProxiesSetQuicOverrideRequestResource( targetHttpsProxiesSetQuicOverrideRequestResource) .build(); - return setQuicOverrideTargetHttpsProxy(request); + return setQuicOverrideTargetHttpsProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -658,7 +735,7 @@ public final Operation setQuicOverrideTargetHttpsProxy( * try (TargetHttpsProxyClient targetHttpsProxyClient = TargetHttpsProxyClient.create()) { * ProjectGlobalTargetHttpsProxyName targetHttpsProxy = ProjectGlobalTargetHttpsProxyName.of("[PROJECT]", "[TARGET_HTTPS_PROXY]"); * TargetHttpsProxiesSetQuicOverrideRequest targetHttpsProxiesSetQuicOverrideRequestResource = TargetHttpsProxiesSetQuicOverrideRequest.newBuilder().build(); - * Operation response = targetHttpsProxyClient.setQuicOverrideTargetHttpsProxy(targetHttpsProxy.toString(), targetHttpsProxiesSetQuicOverrideRequestResource); + * targetHttpsProxyClient.setQuicOverrideTargetHttpsProxyAsync(targetHttpsProxy.toString(), targetHttpsProxiesSetQuicOverrideRequestResource).get(); * } * * @@ -667,8 +744,9 @@ public final Operation setQuicOverrideTargetHttpsProxy( * @param targetHttpsProxiesSetQuicOverrideRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setQuicOverrideTargetHttpsProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setQuicOverrideTargetHttpsProxyAsync( String targetHttpsProxy, TargetHttpsProxiesSetQuicOverrideRequest targetHttpsProxiesSetQuicOverrideRequestResource) { @@ -678,7 +756,7 @@ public final Operation setQuicOverrideTargetHttpsProxy( .setTargetHttpsProxiesSetQuicOverrideRequestResource( targetHttpsProxiesSetQuicOverrideRequestResource) .build(); - return setQuicOverrideTargetHttpsProxy(request); + return setQuicOverrideTargetHttpsProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -695,17 +773,45 @@ public final Operation setQuicOverrideTargetHttpsProxy( * .setTargetHttpsProxy(targetHttpsProxy.toString()) * .setTargetHttpsProxiesSetQuicOverrideRequestResource(targetHttpsProxiesSetQuicOverrideRequestResource) * .build(); - * Operation response = targetHttpsProxyClient.setQuicOverrideTargetHttpsProxy(request); + * targetHttpsProxyClient.setQuicOverrideTargetHttpsProxyAsync(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 */ - @BetaApi - public final Operation setQuicOverrideTargetHttpsProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setQuicOverrideTargetHttpsProxyAsync( SetQuicOverrideTargetHttpsProxyHttpRequest request) { - return setQuicOverrideTargetHttpsProxyCallable().call(request); + return setQuicOverrideTargetHttpsProxyOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Sets the QUIC override policy for TargetHttpsProxy. + * + *

Sample code: + * + *


+   * try (TargetHttpsProxyClient targetHttpsProxyClient = TargetHttpsProxyClient.create()) {
+   *   ProjectGlobalTargetHttpsProxyName targetHttpsProxy = ProjectGlobalTargetHttpsProxyName.of("[PROJECT]", "[TARGET_HTTPS_PROXY]");
+   *   TargetHttpsProxiesSetQuicOverrideRequest targetHttpsProxiesSetQuicOverrideRequestResource = TargetHttpsProxiesSetQuicOverrideRequest.newBuilder().build();
+   *   SetQuicOverrideTargetHttpsProxyHttpRequest request = SetQuicOverrideTargetHttpsProxyHttpRequest.newBuilder()
+   *     .setTargetHttpsProxy(targetHttpsProxy.toString())
+   *     .setTargetHttpsProxiesSetQuicOverrideRequestResource(targetHttpsProxiesSetQuicOverrideRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetHttpsProxyClient.setQuicOverrideTargetHttpsProxyOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable< + SetQuicOverrideTargetHttpsProxyHttpRequest, EmptyMessage, Operation> + setQuicOverrideTargetHttpsProxyOperationCallable() { + return stub.setQuicOverrideTargetHttpsProxyOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -724,7 +830,7 @@ public final Operation setQuicOverrideTargetHttpsProxy( * .build(); * ApiFuture<Operation> future = targetHttpsProxyClient.setQuicOverrideTargetHttpsProxyCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -744,7 +850,7 @@ public final Operation setQuicOverrideTargetHttpsProxy( * try (TargetHttpsProxyClient targetHttpsProxyClient = TargetHttpsProxyClient.create()) { * ProjectTargetHttpsProxyName targetHttpsProxy = ProjectTargetHttpsProxyName.of("[PROJECT]", "[TARGET_HTTPS_PROXY]"); * TargetHttpsProxiesSetSslCertificatesRequest targetHttpsProxiesSetSslCertificatesRequestResource = TargetHttpsProxiesSetSslCertificatesRequest.newBuilder().build(); - * Operation response = targetHttpsProxyClient.setSslCertificatesTargetHttpsProxy(targetHttpsProxy, targetHttpsProxiesSetSslCertificatesRequestResource); + * targetHttpsProxyClient.setSslCertificatesTargetHttpsProxyAsync(targetHttpsProxy, targetHttpsProxiesSetSslCertificatesRequestResource).get(); * } * * @@ -753,8 +859,9 @@ public final Operation setQuicOverrideTargetHttpsProxy( * @param targetHttpsProxiesSetSslCertificatesRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setSslCertificatesTargetHttpsProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setSslCertificatesTargetHttpsProxyAsync( ProjectTargetHttpsProxyName targetHttpsProxy, TargetHttpsProxiesSetSslCertificatesRequest targetHttpsProxiesSetSslCertificatesRequestResource) { @@ -765,7 +872,7 @@ public final Operation setSslCertificatesTargetHttpsProxy( .setTargetHttpsProxiesSetSslCertificatesRequestResource( targetHttpsProxiesSetSslCertificatesRequestResource) .build(); - return setSslCertificatesTargetHttpsProxy(request); + return setSslCertificatesTargetHttpsProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -778,7 +885,7 @@ public final Operation setSslCertificatesTargetHttpsProxy( * try (TargetHttpsProxyClient targetHttpsProxyClient = TargetHttpsProxyClient.create()) { * ProjectTargetHttpsProxyName targetHttpsProxy = ProjectTargetHttpsProxyName.of("[PROJECT]", "[TARGET_HTTPS_PROXY]"); * TargetHttpsProxiesSetSslCertificatesRequest targetHttpsProxiesSetSslCertificatesRequestResource = TargetHttpsProxiesSetSslCertificatesRequest.newBuilder().build(); - * Operation response = targetHttpsProxyClient.setSslCertificatesTargetHttpsProxy(targetHttpsProxy.toString(), targetHttpsProxiesSetSslCertificatesRequestResource); + * targetHttpsProxyClient.setSslCertificatesTargetHttpsProxyAsync(targetHttpsProxy.toString(), targetHttpsProxiesSetSslCertificatesRequestResource).get(); * } * * @@ -787,8 +894,9 @@ public final Operation setSslCertificatesTargetHttpsProxy( * @param targetHttpsProxiesSetSslCertificatesRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setSslCertificatesTargetHttpsProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setSslCertificatesTargetHttpsProxyAsync( String targetHttpsProxy, TargetHttpsProxiesSetSslCertificatesRequest targetHttpsProxiesSetSslCertificatesRequestResource) { @@ -799,7 +907,7 @@ public final Operation setSslCertificatesTargetHttpsProxy( .setTargetHttpsProxiesSetSslCertificatesRequestResource( targetHttpsProxiesSetSslCertificatesRequestResource) .build(); - return setSslCertificatesTargetHttpsProxy(request); + return setSslCertificatesTargetHttpsProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -816,17 +924,45 @@ public final Operation setSslCertificatesTargetHttpsProxy( * .setTargetHttpsProxy(targetHttpsProxy.toString()) * .setTargetHttpsProxiesSetSslCertificatesRequestResource(targetHttpsProxiesSetSslCertificatesRequestResource) * .build(); - * Operation response = targetHttpsProxyClient.setSslCertificatesTargetHttpsProxy(request); + * targetHttpsProxyClient.setSslCertificatesTargetHttpsProxyAsync(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 */ - @BetaApi - public final Operation setSslCertificatesTargetHttpsProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setSslCertificatesTargetHttpsProxyAsync( SetSslCertificatesTargetHttpsProxyHttpRequest request) { - return setSslCertificatesTargetHttpsProxyCallable().call(request); + return setSslCertificatesTargetHttpsProxyOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Replaces SslCertificates for TargetHttpsProxy. + * + *

Sample code: + * + *


+   * try (TargetHttpsProxyClient targetHttpsProxyClient = TargetHttpsProxyClient.create()) {
+   *   ProjectTargetHttpsProxyName targetHttpsProxy = ProjectTargetHttpsProxyName.of("[PROJECT]", "[TARGET_HTTPS_PROXY]");
+   *   TargetHttpsProxiesSetSslCertificatesRequest targetHttpsProxiesSetSslCertificatesRequestResource = TargetHttpsProxiesSetSslCertificatesRequest.newBuilder().build();
+   *   SetSslCertificatesTargetHttpsProxyHttpRequest request = SetSslCertificatesTargetHttpsProxyHttpRequest.newBuilder()
+   *     .setTargetHttpsProxy(targetHttpsProxy.toString())
+   *     .setTargetHttpsProxiesSetSslCertificatesRequestResource(targetHttpsProxiesSetSslCertificatesRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetHttpsProxyClient.setSslCertificatesTargetHttpsProxyOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable< + SetSslCertificatesTargetHttpsProxyHttpRequest, EmptyMessage, Operation> + setSslCertificatesTargetHttpsProxyOperationCallable() { + return stub.setSslCertificatesTargetHttpsProxyOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -845,7 +981,7 @@ public final Operation setSslCertificatesTargetHttpsProxy( * .build(); * ApiFuture<Operation> future = targetHttpsProxyClient.setSslCertificatesTargetHttpsProxyCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -867,7 +1003,7 @@ public final Operation setSslCertificatesTargetHttpsProxy( * try (TargetHttpsProxyClient targetHttpsProxyClient = TargetHttpsProxyClient.create()) { * ProjectGlobalTargetHttpsProxyName targetHttpsProxy = ProjectGlobalTargetHttpsProxyName.of("[PROJECT]", "[TARGET_HTTPS_PROXY]"); * SslPolicyReference sslPolicyReferenceResource = SslPolicyReference.newBuilder().build(); - * Operation response = targetHttpsProxyClient.setSslPolicyTargetHttpsProxy(targetHttpsProxy, sslPolicyReferenceResource); + * targetHttpsProxyClient.setSslPolicyTargetHttpsProxyAsync(targetHttpsProxy, sslPolicyReferenceResource).get(); * } * * @@ -876,8 +1012,9 @@ public final Operation setSslCertificatesTargetHttpsProxy( * @param sslPolicyReferenceResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setSslPolicyTargetHttpsProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setSslPolicyTargetHttpsProxyAsync( ProjectGlobalTargetHttpsProxyName targetHttpsProxy, SslPolicyReference sslPolicyReferenceResource) { @@ -886,7 +1023,7 @@ public final Operation setSslPolicyTargetHttpsProxy( .setTargetHttpsProxy(targetHttpsProxy == null ? null : targetHttpsProxy.toString()) .setSslPolicyReferenceResource(sslPolicyReferenceResource) .build(); - return setSslPolicyTargetHttpsProxy(request); + return setSslPolicyTargetHttpsProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -901,7 +1038,7 @@ public final Operation setSslPolicyTargetHttpsProxy( * try (TargetHttpsProxyClient targetHttpsProxyClient = TargetHttpsProxyClient.create()) { * ProjectGlobalTargetHttpsProxyName targetHttpsProxy = ProjectGlobalTargetHttpsProxyName.of("[PROJECT]", "[TARGET_HTTPS_PROXY]"); * SslPolicyReference sslPolicyReferenceResource = SslPolicyReference.newBuilder().build(); - * Operation response = targetHttpsProxyClient.setSslPolicyTargetHttpsProxy(targetHttpsProxy.toString(), sslPolicyReferenceResource); + * targetHttpsProxyClient.setSslPolicyTargetHttpsProxyAsync(targetHttpsProxy.toString(), sslPolicyReferenceResource).get(); * } * * @@ -910,8 +1047,9 @@ public final Operation setSslPolicyTargetHttpsProxy( * @param sslPolicyReferenceResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setSslPolicyTargetHttpsProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setSslPolicyTargetHttpsProxyAsync( String targetHttpsProxy, SslPolicyReference sslPolicyReferenceResource) { SetSslPolicyTargetHttpsProxyHttpRequest request = @@ -919,7 +1057,7 @@ public final Operation setSslPolicyTargetHttpsProxy( .setTargetHttpsProxy(targetHttpsProxy) .setSslPolicyReferenceResource(sslPolicyReferenceResource) .build(); - return setSslPolicyTargetHttpsProxy(request); + return setSslPolicyTargetHttpsProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -938,17 +1076,46 @@ public final Operation setSslPolicyTargetHttpsProxy( * .setTargetHttpsProxy(targetHttpsProxy.toString()) * .setSslPolicyReferenceResource(sslPolicyReferenceResource) * .build(); - * Operation response = targetHttpsProxyClient.setSslPolicyTargetHttpsProxy(request); + * targetHttpsProxyClient.setSslPolicyTargetHttpsProxyAsync(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 */ - @BetaApi - public final Operation setSslPolicyTargetHttpsProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setSslPolicyTargetHttpsProxyAsync( SetSslPolicyTargetHttpsProxyHttpRequest request) { - return setSslPolicyTargetHttpsProxyCallable().call(request); + return setSslPolicyTargetHttpsProxyOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Sets the SSL policy for TargetHttpsProxy. The SSL policy specifies the server-side support for + * SSL features. This affects connections between clients and the HTTPS proxy load balancer. They + * do not affect the connection between the load balancer and the backends. + * + *

Sample code: + * + *


+   * try (TargetHttpsProxyClient targetHttpsProxyClient = TargetHttpsProxyClient.create()) {
+   *   ProjectGlobalTargetHttpsProxyName targetHttpsProxy = ProjectGlobalTargetHttpsProxyName.of("[PROJECT]", "[TARGET_HTTPS_PROXY]");
+   *   SslPolicyReference sslPolicyReferenceResource = SslPolicyReference.newBuilder().build();
+   *   SetSslPolicyTargetHttpsProxyHttpRequest request = SetSslPolicyTargetHttpsProxyHttpRequest.newBuilder()
+   *     .setTargetHttpsProxy(targetHttpsProxy.toString())
+   *     .setSslPolicyReferenceResource(sslPolicyReferenceResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetHttpsProxyClient.setSslPolicyTargetHttpsProxyOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + setSslPolicyTargetHttpsProxyOperationCallable() { + return stub.setSslPolicyTargetHttpsProxyOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -969,7 +1136,7 @@ public final Operation setSslPolicyTargetHttpsProxy( * .build(); * ApiFuture<Operation> future = targetHttpsProxyClient.setSslPolicyTargetHttpsProxyCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -989,7 +1156,7 @@ public final Operation setSslPolicyTargetHttpsProxy( * try (TargetHttpsProxyClient targetHttpsProxyClient = TargetHttpsProxyClient.create()) { * ProjectTargetHttpsProxyName targetHttpsProxy = ProjectTargetHttpsProxyName.of("[PROJECT]", "[TARGET_HTTPS_PROXY]"); * UrlMapReference urlMapReferenceResource = UrlMapReference.newBuilder().build(); - * Operation response = targetHttpsProxyClient.setUrlMapTargetHttpsProxy(targetHttpsProxy, urlMapReferenceResource); + * targetHttpsProxyClient.setUrlMapTargetHttpsProxyAsync(targetHttpsProxy, urlMapReferenceResource).get(); * } * * @@ -997,8 +1164,9 @@ public final Operation setSslPolicyTargetHttpsProxy( * @param urlMapReferenceResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setUrlMapTargetHttpsProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setUrlMapTargetHttpsProxyAsync( ProjectTargetHttpsProxyName targetHttpsProxy, UrlMapReference urlMapReferenceResource) { SetUrlMapTargetHttpsProxyHttpRequest request = @@ -1006,7 +1174,7 @@ public final Operation setUrlMapTargetHttpsProxy( .setTargetHttpsProxy(targetHttpsProxy == null ? null : targetHttpsProxy.toString()) .setUrlMapReferenceResource(urlMapReferenceResource) .build(); - return setUrlMapTargetHttpsProxy(request); + return setUrlMapTargetHttpsProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1019,7 +1187,7 @@ public final Operation setUrlMapTargetHttpsProxy( * try (TargetHttpsProxyClient targetHttpsProxyClient = TargetHttpsProxyClient.create()) { * ProjectTargetHttpsProxyName targetHttpsProxy = ProjectTargetHttpsProxyName.of("[PROJECT]", "[TARGET_HTTPS_PROXY]"); * UrlMapReference urlMapReferenceResource = UrlMapReference.newBuilder().build(); - * Operation response = targetHttpsProxyClient.setUrlMapTargetHttpsProxy(targetHttpsProxy.toString(), urlMapReferenceResource); + * targetHttpsProxyClient.setUrlMapTargetHttpsProxyAsync(targetHttpsProxy.toString(), urlMapReferenceResource).get(); * } * * @@ -1027,8 +1195,9 @@ public final Operation setUrlMapTargetHttpsProxy( * @param urlMapReferenceResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setUrlMapTargetHttpsProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setUrlMapTargetHttpsProxyAsync( String targetHttpsProxy, UrlMapReference urlMapReferenceResource) { SetUrlMapTargetHttpsProxyHttpRequest request = @@ -1036,7 +1205,7 @@ public final Operation setUrlMapTargetHttpsProxy( .setTargetHttpsProxy(targetHttpsProxy) .setUrlMapReferenceResource(urlMapReferenceResource) .build(); - return setUrlMapTargetHttpsProxy(request); + return setUrlMapTargetHttpsProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1053,16 +1222,44 @@ public final Operation setUrlMapTargetHttpsProxy( * .setTargetHttpsProxy(targetHttpsProxy.toString()) * .setUrlMapReferenceResource(urlMapReferenceResource) * .build(); - * Operation response = targetHttpsProxyClient.setUrlMapTargetHttpsProxy(request); + * targetHttpsProxyClient.setUrlMapTargetHttpsProxyAsync(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 */ - @BetaApi - public final Operation setUrlMapTargetHttpsProxy(SetUrlMapTargetHttpsProxyHttpRequest request) { - return setUrlMapTargetHttpsProxyCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setUrlMapTargetHttpsProxyAsync( + SetUrlMapTargetHttpsProxyHttpRequest request) { + return setUrlMapTargetHttpsProxyOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Changes the URL map for TargetHttpsProxy. + * + *

Sample code: + * + *


+   * try (TargetHttpsProxyClient targetHttpsProxyClient = TargetHttpsProxyClient.create()) {
+   *   ProjectTargetHttpsProxyName targetHttpsProxy = ProjectTargetHttpsProxyName.of("[PROJECT]", "[TARGET_HTTPS_PROXY]");
+   *   UrlMapReference urlMapReferenceResource = UrlMapReference.newBuilder().build();
+   *   SetUrlMapTargetHttpsProxyHttpRequest request = SetUrlMapTargetHttpsProxyHttpRequest.newBuilder()
+   *     .setTargetHttpsProxy(targetHttpsProxy.toString())
+   *     .setUrlMapReferenceResource(urlMapReferenceResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetHttpsProxyClient.setUrlMapTargetHttpsProxyOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + setUrlMapTargetHttpsProxyOperationCallable() { + return stub.setUrlMapTargetHttpsProxyOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1081,7 +1278,7 @@ public final Operation setUrlMapTargetHttpsProxy(SetUrlMapTargetHttpsProxyHttpRe * .build(); * ApiFuture<Operation> future = targetHttpsProxyClient.setUrlMapTargetHttpsProxyCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetHttpsProxySettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetHttpsProxySettings.java index cadcd83543e1..a5bdc7a79d8f 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetHttpsProxySettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetHttpsProxySettings.java @@ -21,10 +21,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -48,13 +50,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteTargetHttpsProxy to 30 seconds: + * example, to set the total timeout of getTargetHttpsProxy to 30 seconds: * *

  * 
  * TargetHttpsProxySettings.Builder targetHttpsProxySettingsBuilder =
  *     TargetHttpsProxySettings.newBuilder();
- * targetHttpsProxySettingsBuilder.deleteTargetHttpsProxySettings().getRetrySettings().toBuilder()
+ * targetHttpsProxySettingsBuilder.getTargetHttpsProxySettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * TargetHttpsProxySettings targetHttpsProxySettings = targetHttpsProxySettingsBuilder.build();
  * 
@@ -69,6 +71,15 @@ public class TargetHttpsProxySettings extends ClientSettings
+      deleteTargetHttpsProxyOperationSettings() {
+    return ((TargetHttpsProxyStubSettings) getStubSettings())
+        .deleteTargetHttpsProxyOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getTargetHttpsProxy. */
   public UnaryCallSettings
       getTargetHttpsProxySettings() {
@@ -81,6 +92,15 @@ public class TargetHttpsProxySettings extends ClientSettings
+      insertTargetHttpsProxyOperationSettings() {
+    return ((TargetHttpsProxyStubSettings) getStubSettings())
+        .insertTargetHttpsProxyOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listTargetHttpsProxies. */
   public PagedCallSettings<
           ListTargetHttpsProxiesHttpRequest,
@@ -97,6 +117,15 @@ public class TargetHttpsProxySettings extends ClientSettings
+      setQuicOverrideTargetHttpsProxyOperationSettings() {
+    return ((TargetHttpsProxyStubSettings) getStubSettings())
+        .setQuicOverrideTargetHttpsProxyOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to setSslCertificatesTargetHttpsProxy. */
   public UnaryCallSettings
       setSslCertificatesTargetHttpsProxySettings() {
@@ -104,6 +133,16 @@ public class TargetHttpsProxySettings extends ClientSettings
+      setSslCertificatesTargetHttpsProxyOperationSettings() {
+    return ((TargetHttpsProxyStubSettings) getStubSettings())
+        .setSslCertificatesTargetHttpsProxyOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to setSslPolicyTargetHttpsProxy. */
   public UnaryCallSettings
       setSslPolicyTargetHttpsProxySettings() {
@@ -111,12 +150,30 @@ public class TargetHttpsProxySettings extends ClientSettings
+      setSslPolicyTargetHttpsProxyOperationSettings() {
+    return ((TargetHttpsProxyStubSettings) getStubSettings())
+        .setSslPolicyTargetHttpsProxyOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to setUrlMapTargetHttpsProxy. */
   public UnaryCallSettings
       setUrlMapTargetHttpsProxySettings() {
     return ((TargetHttpsProxyStubSettings) getStubSettings()).setUrlMapTargetHttpsProxySettings();
   }
 
+  /** Returns the object with the settings used for calls to setUrlMapTargetHttpsProxy. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setUrlMapTargetHttpsProxyOperationSettings() {
+    return ((TargetHttpsProxyStubSettings) getStubSettings())
+        .setUrlMapTargetHttpsProxyOperationSettings();
+  }
+
   public static final TargetHttpsProxySettings create(TargetHttpsProxyStubSettings stub)
       throws IOException {
     return new TargetHttpsProxySettings.Builder(stub.toBuilder()).build();
@@ -225,6 +282,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteTargetHttpsProxySettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteTargetHttpsProxy. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteTargetHttpsProxyOperationSettings() {
+      return getStubSettingsBuilder().deleteTargetHttpsProxyOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getTargetHttpsProxy. */
     public UnaryCallSettings.Builder
         getTargetHttpsProxySettings() {
@@ -237,6 +302,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().insertTargetHttpsProxySettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertTargetHttpsProxy. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertTargetHttpsProxyOperationSettings() {
+      return getStubSettingsBuilder().insertTargetHttpsProxyOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listTargetHttpsProxies. */
     public PagedCallSettings.Builder<
             ListTargetHttpsProxiesHttpRequest,
@@ -252,6 +325,15 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().setQuicOverrideTargetHttpsProxySettings();
     }
 
+    /** Returns the builder for the settings used for calls to setQuicOverrideTargetHttpsProxy. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetQuicOverrideTargetHttpsProxyHttpRequest, EmptyMessage, Operation>
+        setQuicOverrideTargetHttpsProxyOperationSettings() {
+      return getStubSettingsBuilder().setQuicOverrideTargetHttpsProxyOperationSettings();
+    }
+
     /**
      * Returns the builder for the settings used for calls to setSslCertificatesTargetHttpsProxy.
      */
@@ -260,18 +342,47 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().setSslCertificatesTargetHttpsProxySettings();
     }
 
+    /**
+     * Returns the builder for the settings used for calls to setSslCertificatesTargetHttpsProxy.
+     */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetSslCertificatesTargetHttpsProxyHttpRequest, EmptyMessage, Operation>
+        setSslCertificatesTargetHttpsProxyOperationSettings() {
+      return getStubSettingsBuilder().setSslCertificatesTargetHttpsProxyOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to setSslPolicyTargetHttpsProxy. */
     public UnaryCallSettings.Builder
         setSslPolicyTargetHttpsProxySettings() {
       return getStubSettingsBuilder().setSslPolicyTargetHttpsProxySettings();
     }
 
+    /** Returns the builder for the settings used for calls to setSslPolicyTargetHttpsProxy. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetSslPolicyTargetHttpsProxyHttpRequest, EmptyMessage, Operation>
+        setSslPolicyTargetHttpsProxyOperationSettings() {
+      return getStubSettingsBuilder().setSslPolicyTargetHttpsProxyOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to setUrlMapTargetHttpsProxy. */
     public UnaryCallSettings.Builder
         setUrlMapTargetHttpsProxySettings() {
       return getStubSettingsBuilder().setUrlMapTargetHttpsProxySettings();
     }
 
+    /** Returns the builder for the settings used for calls to setUrlMapTargetHttpsProxy. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetUrlMapTargetHttpsProxyHttpRequest, EmptyMessage, Operation>
+        setUrlMapTargetHttpsProxyOperationSettings() {
+      return getStubSettingsBuilder().setUrlMapTargetHttpsProxyOperationSettings();
+    }
+
     @Override
     public TargetHttpsProxySettings build() throws IOException {
       return new TargetHttpsProxySettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetInstanceClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetInstanceClient.java
index 37644b84a4ba..66b4992f9c2d 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetInstanceClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetInstanceClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.TargetInstanceStub;
@@ -43,7 +46,7 @@
  * 
  * try (TargetInstanceClient targetInstanceClient = TargetInstanceClient.create()) {
  *   ProjectZoneTargetInstanceName targetInstance = ProjectZoneTargetInstanceName.of("[PROJECT]", "[ZONE]", "[TARGET_INSTANCE]");
- *   Operation response = targetInstanceClient.deleteTargetInstance(targetInstance);
+ *   TargetInstance response = targetInstanceClient.getTargetInstance(targetInstance);
  * }
  * 
  * 
@@ -103,6 +106,7 @@ public class TargetInstanceClient implements BackgroundResource { private final TargetInstanceSettings settings; private final TargetInstanceStub stub; + private final ZoneOperationClient operationsClient; /** Constructs an instance of TargetInstanceClient with default settings. */ public static final TargetInstanceClient create() throws IOException { @@ -135,12 +139,14 @@ public static final TargetInstanceClient create(TargetInstanceStub stub) { protected TargetInstanceClient(TargetInstanceSettings settings) throws IOException { this.settings = settings; this.stub = ((TargetInstanceStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = ZoneOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected TargetInstanceClient(TargetInstanceStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = ZoneOperationClient.create(this.stub.getOperationsStub()); } public final TargetInstanceSettings getSettings() { @@ -152,6 +158,16 @@ public TargetInstanceStub getStub() { return stub; } + /** + * Returns the ZoneOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final ZoneOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Retrieves an aggregated list of target instances. @@ -302,21 +318,23 @@ public final AggregatedListTargetInstancesPagedResponse aggregatedListTargetInst *

    * try (TargetInstanceClient targetInstanceClient = TargetInstanceClient.create()) {
    *   ProjectZoneTargetInstanceName targetInstance = ProjectZoneTargetInstanceName.of("[PROJECT]", "[ZONE]", "[TARGET_INSTANCE]");
-   *   Operation response = targetInstanceClient.deleteTargetInstance(targetInstance);
+   *   targetInstanceClient.deleteTargetInstanceAsync(targetInstance).get();
    * }
    * 
* * @param targetInstance Name of the TargetInstance resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteTargetInstance(ProjectZoneTargetInstanceName targetInstance) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteTargetInstanceAsync( + ProjectZoneTargetInstanceName targetInstance) { DeleteTargetInstanceHttpRequest request = DeleteTargetInstanceHttpRequest.newBuilder() .setTargetInstance(targetInstance == null ? null : targetInstance.toString()) .build(); - return deleteTargetInstance(request); + return deleteTargetInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -328,19 +346,21 @@ public final Operation deleteTargetInstance(ProjectZoneTargetInstanceName target *

    * try (TargetInstanceClient targetInstanceClient = TargetInstanceClient.create()) {
    *   ProjectZoneTargetInstanceName targetInstance = ProjectZoneTargetInstanceName.of("[PROJECT]", "[ZONE]", "[TARGET_INSTANCE]");
-   *   Operation response = targetInstanceClient.deleteTargetInstance(targetInstance.toString());
+   *   targetInstanceClient.deleteTargetInstanceAsync(targetInstance.toString()).get();
    * }
    * 
* * @param targetInstance Name of the TargetInstance resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteTargetInstance(String targetInstance) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteTargetInstanceAsync( + String targetInstance) { DeleteTargetInstanceHttpRequest request = DeleteTargetInstanceHttpRequest.newBuilder().setTargetInstance(targetInstance).build(); - return deleteTargetInstance(request); + return deleteTargetInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -355,16 +375,42 @@ public final Operation deleteTargetInstance(String targetInstance) { * DeleteTargetInstanceHttpRequest request = DeleteTargetInstanceHttpRequest.newBuilder() * .setTargetInstance(targetInstance.toString()) * .build(); - * Operation response = targetInstanceClient.deleteTargetInstance(request); + * targetInstanceClient.deleteTargetInstanceAsync(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 */ - @BetaApi - public final Operation deleteTargetInstance(DeleteTargetInstanceHttpRequest request) { - return deleteTargetInstanceCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteTargetInstanceAsync( + DeleteTargetInstanceHttpRequest request) { + return deleteTargetInstanceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified TargetInstance resource. + * + *

Sample code: + * + *


+   * try (TargetInstanceClient targetInstanceClient = TargetInstanceClient.create()) {
+   *   ProjectZoneTargetInstanceName targetInstance = ProjectZoneTargetInstanceName.of("[PROJECT]", "[ZONE]", "[TARGET_INSTANCE]");
+   *   DeleteTargetInstanceHttpRequest request = DeleteTargetInstanceHttpRequest.newBuilder()
+   *     .setTargetInstance(targetInstance.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetInstanceClient.deleteTargetInstanceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteTargetInstanceOperationCallable() { + return stub.deleteTargetInstanceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -381,7 +427,7 @@ public final Operation deleteTargetInstance(DeleteTargetInstanceHttpRequest requ * .build(); * ApiFuture<Operation> future = targetInstanceClient.deleteTargetInstanceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -504,7 +550,7 @@ public final TargetInstance getTargetInstance(GetTargetInstanceHttpRequest reque * try (TargetInstanceClient targetInstanceClient = TargetInstanceClient.create()) { * ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]"); * TargetInstance targetInstanceResource = TargetInstance.newBuilder().build(); - * Operation response = targetInstanceClient.insertTargetInstance(zone, targetInstanceResource); + * targetInstanceClient.insertTargetInstanceAsync(zone, targetInstanceResource).get(); * } * * @@ -514,8 +560,9 @@ public final TargetInstance getTargetInstance(GetTargetInstanceHttpRequest reque * beta.targetInstances ==) (== resource_for v1.targetInstances ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertTargetInstance( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertTargetInstanceAsync( ProjectZoneName zone, TargetInstance targetInstanceResource) { InsertTargetInstanceHttpRequest request = @@ -523,7 +570,7 @@ public final Operation insertTargetInstance( .setZone(zone == null ? null : zone.toString()) .setTargetInstanceResource(targetInstanceResource) .build(); - return insertTargetInstance(request); + return insertTargetInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -537,7 +584,7 @@ public final Operation insertTargetInstance( * try (TargetInstanceClient targetInstanceClient = TargetInstanceClient.create()) { * ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]"); * TargetInstance targetInstanceResource = TargetInstance.newBuilder().build(); - * Operation response = targetInstanceClient.insertTargetInstance(zone.toString(), targetInstanceResource); + * targetInstanceClient.insertTargetInstanceAsync(zone.toString(), targetInstanceResource).get(); * } * * @@ -547,15 +594,17 @@ public final Operation insertTargetInstance( * beta.targetInstances ==) (== resource_for v1.targetInstances ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertTargetInstance(String zone, TargetInstance targetInstanceResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertTargetInstanceAsync( + String zone, TargetInstance targetInstanceResource) { InsertTargetInstanceHttpRequest request = InsertTargetInstanceHttpRequest.newBuilder() .setZone(zone) .setTargetInstanceResource(targetInstanceResource) .build(); - return insertTargetInstance(request); + return insertTargetInstanceAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -573,16 +622,45 @@ public final Operation insertTargetInstance(String zone, TargetInstance targetIn * .setZone(zone.toString()) * .setTargetInstanceResource(targetInstanceResource) * .build(); - * Operation response = targetInstanceClient.insertTargetInstance(request); + * targetInstanceClient.insertTargetInstanceAsync(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 */ - @BetaApi - public final Operation insertTargetInstance(InsertTargetInstanceHttpRequest request) { - return insertTargetInstanceCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertTargetInstanceAsync( + InsertTargetInstanceHttpRequest request) { + return insertTargetInstanceOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a TargetInstance resource in the specified project and zone using the data included in + * the request. + * + *

Sample code: + * + *


+   * try (TargetInstanceClient targetInstanceClient = TargetInstanceClient.create()) {
+   *   ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
+   *   TargetInstance targetInstanceResource = TargetInstance.newBuilder().build();
+   *   InsertTargetInstanceHttpRequest request = InsertTargetInstanceHttpRequest.newBuilder()
+   *     .setZone(zone.toString())
+   *     .setTargetInstanceResource(targetInstanceResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetInstanceClient.insertTargetInstanceOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertTargetInstanceOperationCallable() { + return stub.insertTargetInstanceOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -602,7 +680,7 @@ public final Operation insertTargetInstance(InsertTargetInstanceHttpRequest requ * .build(); * ApiFuture<Operation> future = targetInstanceClient.insertTargetInstanceCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetInstanceSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetInstanceSettings.java index 3f708af29ab4..6f5bb95e0f06 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetInstanceSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetInstanceSettings.java @@ -22,10 +22,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -49,13 +51,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteTargetInstance to 30 seconds: + * example, to set the total timeout of getTargetInstance to 30 seconds: * *

  * 
  * TargetInstanceSettings.Builder targetInstanceSettingsBuilder =
  *     TargetInstanceSettings.newBuilder();
- * targetInstanceSettingsBuilder.deleteTargetInstanceSettings().getRetrySettings().toBuilder()
+ * targetInstanceSettingsBuilder.getTargetInstanceSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * TargetInstanceSettings targetInstanceSettings = targetInstanceSettingsBuilder.build();
  * 
@@ -79,6 +81,14 @@ public class TargetInstanceSettings extends ClientSettings
+      deleteTargetInstanceOperationSettings() {
+    return ((TargetInstanceStubSettings) getStubSettings()).deleteTargetInstanceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getTargetInstance. */
   public UnaryCallSettings
       getTargetInstanceSettings() {
@@ -91,6 +101,14 @@ public class TargetInstanceSettings extends ClientSettings
+      insertTargetInstanceOperationSettings() {
+    return ((TargetInstanceStubSettings) getStubSettings()).insertTargetInstanceOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listTargetInstances. */
   public PagedCallSettings<
           ListTargetInstancesHttpRequest, TargetInstanceList, ListTargetInstancesPagedResponse>
@@ -215,6 +233,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteTargetInstanceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteTargetInstance. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteTargetInstanceOperationSettings() {
+      return getStubSettingsBuilder().deleteTargetInstanceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getTargetInstance. */
     public UnaryCallSettings.Builder
         getTargetInstanceSettings() {
@@ -227,6 +253,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().insertTargetInstanceSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertTargetInstance. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertTargetInstanceOperationSettings() {
+      return getStubSettingsBuilder().insertTargetInstanceOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listTargetInstances. */
     public PagedCallSettings.Builder<
             ListTargetInstancesHttpRequest, TargetInstanceList, ListTargetInstancesPagedResponse>
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetPoolClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetPoolClient.java
index 523c6e282375..34dd1f38a6c6 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetPoolClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetPoolClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.TargetPoolStub;
@@ -43,8 +46,7 @@
  * 
  * try (TargetPoolClient targetPoolClient = TargetPoolClient.create()) {
  *   ProjectRegionTargetPoolName targetPool = ProjectRegionTargetPoolName.of("[PROJECT]", "[REGION]", "[TARGET_POOL]");
- *   TargetPoolsAddHealthCheckRequest targetPoolsAddHealthCheckRequestResource = TargetPoolsAddHealthCheckRequest.newBuilder().build();
- *   Operation response = targetPoolClient.addHealthCheckTargetPool(targetPool, targetPoolsAddHealthCheckRequestResource);
+ *   TargetPool response = targetPoolClient.getTargetPool(targetPool);
  * }
  * 
  * 
@@ -104,6 +106,7 @@ public class TargetPoolClient implements BackgroundResource { private final TargetPoolSettings settings; private final TargetPoolStub stub; + private final RegionOperationClient operationsClient; /** Constructs an instance of TargetPoolClient with default settings. */ public static final TargetPoolClient create() throws IOException { @@ -134,12 +137,14 @@ public static final TargetPoolClient create(TargetPoolStub stub) { protected TargetPoolClient(TargetPoolSettings settings) throws IOException { this.settings = settings; this.stub = ((TargetPoolStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected TargetPoolClient(TargetPoolStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub()); } public final TargetPoolSettings getSettings() { @@ -151,6 +156,16 @@ public TargetPoolStub getStub() { return stub; } + /** + * Returns the RegionOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final RegionOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Adds health check URLs to a target pool. @@ -161,7 +176,7 @@ public TargetPoolStub getStub() { * try (TargetPoolClient targetPoolClient = TargetPoolClient.create()) { * ProjectRegionTargetPoolName targetPool = ProjectRegionTargetPoolName.of("[PROJECT]", "[REGION]", "[TARGET_POOL]"); * TargetPoolsAddHealthCheckRequest targetPoolsAddHealthCheckRequestResource = TargetPoolsAddHealthCheckRequest.newBuilder().build(); - * Operation response = targetPoolClient.addHealthCheckTargetPool(targetPool, targetPoolsAddHealthCheckRequestResource); + * targetPoolClient.addHealthCheckTargetPoolAsync(targetPool, targetPoolsAddHealthCheckRequestResource).get(); * } * * @@ -169,8 +184,9 @@ public TargetPoolStub getStub() { * @param targetPoolsAddHealthCheckRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation addHealthCheckTargetPool( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture addHealthCheckTargetPoolAsync( ProjectRegionTargetPoolName targetPool, TargetPoolsAddHealthCheckRequest targetPoolsAddHealthCheckRequestResource) { @@ -179,7 +195,7 @@ public final Operation addHealthCheckTargetPool( .setTargetPool(targetPool == null ? null : targetPool.toString()) .setTargetPoolsAddHealthCheckRequestResource(targetPoolsAddHealthCheckRequestResource) .build(); - return addHealthCheckTargetPool(request); + return addHealthCheckTargetPoolAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -192,7 +208,7 @@ public final Operation addHealthCheckTargetPool( * try (TargetPoolClient targetPoolClient = TargetPoolClient.create()) { * ProjectRegionTargetPoolName targetPool = ProjectRegionTargetPoolName.of("[PROJECT]", "[REGION]", "[TARGET_POOL]"); * TargetPoolsAddHealthCheckRequest targetPoolsAddHealthCheckRequestResource = TargetPoolsAddHealthCheckRequest.newBuilder().build(); - * Operation response = targetPoolClient.addHealthCheckTargetPool(targetPool.toString(), targetPoolsAddHealthCheckRequestResource); + * targetPoolClient.addHealthCheckTargetPoolAsync(targetPool.toString(), targetPoolsAddHealthCheckRequestResource).get(); * } * * @@ -200,8 +216,9 @@ public final Operation addHealthCheckTargetPool( * @param targetPoolsAddHealthCheckRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation addHealthCheckTargetPool( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture addHealthCheckTargetPoolAsync( String targetPool, TargetPoolsAddHealthCheckRequest targetPoolsAddHealthCheckRequestResource) { @@ -210,7 +227,7 @@ public final Operation addHealthCheckTargetPool( .setTargetPool(targetPool) .setTargetPoolsAddHealthCheckRequestResource(targetPoolsAddHealthCheckRequestResource) .build(); - return addHealthCheckTargetPool(request); + return addHealthCheckTargetPoolAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -227,16 +244,44 @@ public final Operation addHealthCheckTargetPool( * .setTargetPool(targetPool.toString()) * .setTargetPoolsAddHealthCheckRequestResource(targetPoolsAddHealthCheckRequestResource) * .build(); - * Operation response = targetPoolClient.addHealthCheckTargetPool(request); + * targetPoolClient.addHealthCheckTargetPoolAsync(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 */ - @BetaApi - public final Operation addHealthCheckTargetPool(AddHealthCheckTargetPoolHttpRequest request) { - return addHealthCheckTargetPoolCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture addHealthCheckTargetPoolAsync( + AddHealthCheckTargetPoolHttpRequest request) { + return addHealthCheckTargetPoolOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Adds health check URLs to a target pool. + * + *

Sample code: + * + *


+   * try (TargetPoolClient targetPoolClient = TargetPoolClient.create()) {
+   *   ProjectRegionTargetPoolName targetPool = ProjectRegionTargetPoolName.of("[PROJECT]", "[REGION]", "[TARGET_POOL]");
+   *   TargetPoolsAddHealthCheckRequest targetPoolsAddHealthCheckRequestResource = TargetPoolsAddHealthCheckRequest.newBuilder().build();
+   *   AddHealthCheckTargetPoolHttpRequest request = AddHealthCheckTargetPoolHttpRequest.newBuilder()
+   *     .setTargetPool(targetPool.toString())
+   *     .setTargetPoolsAddHealthCheckRequestResource(targetPoolsAddHealthCheckRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetPoolClient.addHealthCheckTargetPoolOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + addHealthCheckTargetPoolOperationCallable() { + return stub.addHealthCheckTargetPoolOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -255,7 +300,7 @@ public final Operation addHealthCheckTargetPool(AddHealthCheckTargetPoolHttpRequ * .build(); * ApiFuture<Operation> future = targetPoolClient.addHealthCheckTargetPoolCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -275,7 +320,7 @@ public final Operation addHealthCheckTargetPool(AddHealthCheckTargetPoolHttpRequ * try (TargetPoolClient targetPoolClient = TargetPoolClient.create()) { * ProjectRegionTargetPoolName targetPool = ProjectRegionTargetPoolName.of("[PROJECT]", "[REGION]", "[TARGET_POOL]"); * TargetPoolsAddInstanceRequest targetPoolsAddInstanceRequestResource = TargetPoolsAddInstanceRequest.newBuilder().build(); - * Operation response = targetPoolClient.addInstanceTargetPool(targetPool, targetPoolsAddInstanceRequestResource); + * targetPoolClient.addInstanceTargetPoolAsync(targetPool, targetPoolsAddInstanceRequestResource).get(); * } * * @@ -283,8 +328,9 @@ public final Operation addHealthCheckTargetPool(AddHealthCheckTargetPoolHttpRequ * @param targetPoolsAddInstanceRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation addInstanceTargetPool( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture addInstanceTargetPoolAsync( ProjectRegionTargetPoolName targetPool, TargetPoolsAddInstanceRequest targetPoolsAddInstanceRequestResource) { @@ -293,7 +339,7 @@ public final Operation addInstanceTargetPool( .setTargetPool(targetPool == null ? null : targetPool.toString()) .setTargetPoolsAddInstanceRequestResource(targetPoolsAddInstanceRequestResource) .build(); - return addInstanceTargetPool(request); + return addInstanceTargetPoolAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -306,7 +352,7 @@ public final Operation addInstanceTargetPool( * try (TargetPoolClient targetPoolClient = TargetPoolClient.create()) { * ProjectRegionTargetPoolName targetPool = ProjectRegionTargetPoolName.of("[PROJECT]", "[REGION]", "[TARGET_POOL]"); * TargetPoolsAddInstanceRequest targetPoolsAddInstanceRequestResource = TargetPoolsAddInstanceRequest.newBuilder().build(); - * Operation response = targetPoolClient.addInstanceTargetPool(targetPool.toString(), targetPoolsAddInstanceRequestResource); + * targetPoolClient.addInstanceTargetPoolAsync(targetPool.toString(), targetPoolsAddInstanceRequestResource).get(); * } * * @@ -314,8 +360,9 @@ public final Operation addInstanceTargetPool( * @param targetPoolsAddInstanceRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation addInstanceTargetPool( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture addInstanceTargetPoolAsync( String targetPool, TargetPoolsAddInstanceRequest targetPoolsAddInstanceRequestResource) { AddInstanceTargetPoolHttpRequest request = @@ -323,7 +370,7 @@ public final Operation addInstanceTargetPool( .setTargetPool(targetPool) .setTargetPoolsAddInstanceRequestResource(targetPoolsAddInstanceRequestResource) .build(); - return addInstanceTargetPool(request); + return addInstanceTargetPoolAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -340,16 +387,44 @@ public final Operation addInstanceTargetPool( * .setTargetPool(targetPool.toString()) * .setTargetPoolsAddInstanceRequestResource(targetPoolsAddInstanceRequestResource) * .build(); - * Operation response = targetPoolClient.addInstanceTargetPool(request); + * targetPoolClient.addInstanceTargetPoolAsync(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 */ - @BetaApi - public final Operation addInstanceTargetPool(AddInstanceTargetPoolHttpRequest request) { - return addInstanceTargetPoolCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture addInstanceTargetPoolAsync( + AddInstanceTargetPoolHttpRequest request) { + return addInstanceTargetPoolOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Adds an instance to a target pool. + * + *

Sample code: + * + *


+   * try (TargetPoolClient targetPoolClient = TargetPoolClient.create()) {
+   *   ProjectRegionTargetPoolName targetPool = ProjectRegionTargetPoolName.of("[PROJECT]", "[REGION]", "[TARGET_POOL]");
+   *   TargetPoolsAddInstanceRequest targetPoolsAddInstanceRequestResource = TargetPoolsAddInstanceRequest.newBuilder().build();
+   *   AddInstanceTargetPoolHttpRequest request = AddInstanceTargetPoolHttpRequest.newBuilder()
+   *     .setTargetPool(targetPool.toString())
+   *     .setTargetPoolsAddInstanceRequestResource(targetPoolsAddInstanceRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetPoolClient.addInstanceTargetPoolOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + addInstanceTargetPoolOperationCallable() { + return stub.addInstanceTargetPoolOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -368,7 +443,7 @@ public final Operation addInstanceTargetPool(AddInstanceTargetPoolHttpRequest re * .build(); * ApiFuture<Operation> future = targetPoolClient.addInstanceTargetPoolCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -527,21 +602,23 @@ public final AggregatedListTargetPoolsPagedResponse aggregatedListTargetPools( *

    * try (TargetPoolClient targetPoolClient = TargetPoolClient.create()) {
    *   ProjectRegionTargetPoolName targetPool = ProjectRegionTargetPoolName.of("[PROJECT]", "[REGION]", "[TARGET_POOL]");
-   *   Operation response = targetPoolClient.deleteTargetPool(targetPool);
+   *   targetPoolClient.deleteTargetPoolAsync(targetPool).get();
    * }
    * 
* * @param targetPool Name of the TargetPool resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteTargetPool(ProjectRegionTargetPoolName targetPool) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteTargetPoolAsync( + ProjectRegionTargetPoolName targetPool) { DeleteTargetPoolHttpRequest request = DeleteTargetPoolHttpRequest.newBuilder() .setTargetPool(targetPool == null ? null : targetPool.toString()) .build(); - return deleteTargetPool(request); + return deleteTargetPoolAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -553,19 +630,20 @@ public final Operation deleteTargetPool(ProjectRegionTargetPoolName targetPool) *

    * try (TargetPoolClient targetPoolClient = TargetPoolClient.create()) {
    *   ProjectRegionTargetPoolName targetPool = ProjectRegionTargetPoolName.of("[PROJECT]", "[REGION]", "[TARGET_POOL]");
-   *   Operation response = targetPoolClient.deleteTargetPool(targetPool.toString());
+   *   targetPoolClient.deleteTargetPoolAsync(targetPool.toString()).get();
    * }
    * 
* * @param targetPool Name of the TargetPool resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteTargetPool(String targetPool) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteTargetPoolAsync(String targetPool) { DeleteTargetPoolHttpRequest request = DeleteTargetPoolHttpRequest.newBuilder().setTargetPool(targetPool).build(); - return deleteTargetPool(request); + return deleteTargetPoolAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -580,16 +658,42 @@ public final Operation deleteTargetPool(String targetPool) { * DeleteTargetPoolHttpRequest request = DeleteTargetPoolHttpRequest.newBuilder() * .setTargetPool(targetPool.toString()) * .build(); - * Operation response = targetPoolClient.deleteTargetPool(request); + * targetPoolClient.deleteTargetPoolAsync(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 */ - @BetaApi - public final Operation deleteTargetPool(DeleteTargetPoolHttpRequest request) { - return deleteTargetPoolCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteTargetPoolAsync( + DeleteTargetPoolHttpRequest request) { + return deleteTargetPoolOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified target pool. + * + *

Sample code: + * + *


+   * try (TargetPoolClient targetPoolClient = TargetPoolClient.create()) {
+   *   ProjectRegionTargetPoolName targetPool = ProjectRegionTargetPoolName.of("[PROJECT]", "[REGION]", "[TARGET_POOL]");
+   *   DeleteTargetPoolHttpRequest request = DeleteTargetPoolHttpRequest.newBuilder()
+   *     .setTargetPool(targetPool.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetPoolClient.deleteTargetPoolOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteTargetPoolOperationCallable() { + return stub.deleteTargetPoolOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -606,7 +710,7 @@ public final Operation deleteTargetPool(DeleteTargetPoolHttpRequest request) { * .build(); * ApiFuture<Operation> future = targetPoolClient.deleteTargetPoolCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -844,7 +948,7 @@ public final TargetPoolInstanceHealth getHealthTargetPool( * try (TargetPoolClient targetPoolClient = TargetPoolClient.create()) { * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * TargetPool targetPoolResource = TargetPool.newBuilder().build(); - * Operation response = targetPoolClient.insertTargetPool(region, targetPoolResource); + * targetPoolClient.insertTargetPoolAsync(region, targetPoolResource).get(); * } * * @@ -854,15 +958,17 @@ public final TargetPoolInstanceHealth getHealthTargetPool( * beta.targetPools ==) (== resource_for v1.targetPools ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertTargetPool(ProjectRegionName region, TargetPool targetPoolResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertTargetPoolAsync( + ProjectRegionName region, TargetPool targetPoolResource) { InsertTargetPoolHttpRequest request = InsertTargetPoolHttpRequest.newBuilder() .setRegion(region == null ? null : region.toString()) .setTargetPoolResource(targetPoolResource) .build(); - return insertTargetPool(request); + return insertTargetPoolAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -876,7 +982,7 @@ public final Operation insertTargetPool(ProjectRegionName region, TargetPool tar * try (TargetPoolClient targetPoolClient = TargetPoolClient.create()) { * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * TargetPool targetPoolResource = TargetPool.newBuilder().build(); - * Operation response = targetPoolClient.insertTargetPool(region.toString(), targetPoolResource); + * targetPoolClient.insertTargetPoolAsync(region.toString(), targetPoolResource).get(); * } * * @@ -886,15 +992,17 @@ public final Operation insertTargetPool(ProjectRegionName region, TargetPool tar * beta.targetPools ==) (== resource_for v1.targetPools ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertTargetPool(String region, TargetPool targetPoolResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertTargetPoolAsync( + String region, TargetPool targetPoolResource) { InsertTargetPoolHttpRequest request = InsertTargetPoolHttpRequest.newBuilder() .setRegion(region) .setTargetPoolResource(targetPoolResource) .build(); - return insertTargetPool(request); + return insertTargetPoolAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -912,16 +1020,45 @@ public final Operation insertTargetPool(String region, TargetPool targetPoolReso * .setRegion(region.toString()) * .setTargetPoolResource(targetPoolResource) * .build(); - * Operation response = targetPoolClient.insertTargetPool(request); + * targetPoolClient.insertTargetPoolAsync(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 */ - @BetaApi - public final Operation insertTargetPool(InsertTargetPoolHttpRequest request) { - return insertTargetPoolCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertTargetPoolAsync( + InsertTargetPoolHttpRequest request) { + return insertTargetPoolOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a target pool in the specified project and region using the data included in the + * request. + * + *

Sample code: + * + *


+   * try (TargetPoolClient targetPoolClient = TargetPoolClient.create()) {
+   *   ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
+   *   TargetPool targetPoolResource = TargetPool.newBuilder().build();
+   *   InsertTargetPoolHttpRequest request = InsertTargetPoolHttpRequest.newBuilder()
+   *     .setRegion(region.toString())
+   *     .setTargetPoolResource(targetPoolResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetPoolClient.insertTargetPoolOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertTargetPoolOperationCallable() { + return stub.insertTargetPoolOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -941,7 +1078,7 @@ public final Operation insertTargetPool(InsertTargetPoolHttpRequest request) { * .build(); * ApiFuture<Operation> future = targetPoolClient.insertTargetPoolCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1096,7 +1233,7 @@ public final UnaryCallable listTarge * try (TargetPoolClient targetPoolClient = TargetPoolClient.create()) { * ProjectRegionTargetPoolName targetPool = ProjectRegionTargetPoolName.of("[PROJECT]", "[REGION]", "[TARGET_POOL]"); * TargetPoolsRemoveHealthCheckRequest targetPoolsRemoveHealthCheckRequestResource = TargetPoolsRemoveHealthCheckRequest.newBuilder().build(); - * Operation response = targetPoolClient.removeHealthCheckTargetPool(targetPool, targetPoolsRemoveHealthCheckRequestResource); + * targetPoolClient.removeHealthCheckTargetPoolAsync(targetPool, targetPoolsRemoveHealthCheckRequestResource).get(); * } * * @@ -1104,8 +1241,9 @@ public final UnaryCallable listTarge * @param targetPoolsRemoveHealthCheckRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation removeHealthCheckTargetPool( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture removeHealthCheckTargetPoolAsync( ProjectRegionTargetPoolName targetPool, TargetPoolsRemoveHealthCheckRequest targetPoolsRemoveHealthCheckRequestResource) { @@ -1115,7 +1253,7 @@ public final Operation removeHealthCheckTargetPool( .setTargetPoolsRemoveHealthCheckRequestResource( targetPoolsRemoveHealthCheckRequestResource) .build(); - return removeHealthCheckTargetPool(request); + return removeHealthCheckTargetPoolAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1128,7 +1266,7 @@ public final Operation removeHealthCheckTargetPool( * try (TargetPoolClient targetPoolClient = TargetPoolClient.create()) { * ProjectRegionTargetPoolName targetPool = ProjectRegionTargetPoolName.of("[PROJECT]", "[REGION]", "[TARGET_POOL]"); * TargetPoolsRemoveHealthCheckRequest targetPoolsRemoveHealthCheckRequestResource = TargetPoolsRemoveHealthCheckRequest.newBuilder().build(); - * Operation response = targetPoolClient.removeHealthCheckTargetPool(targetPool.toString(), targetPoolsRemoveHealthCheckRequestResource); + * targetPoolClient.removeHealthCheckTargetPoolAsync(targetPool.toString(), targetPoolsRemoveHealthCheckRequestResource).get(); * } * * @@ -1136,8 +1274,9 @@ public final Operation removeHealthCheckTargetPool( * @param targetPoolsRemoveHealthCheckRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation removeHealthCheckTargetPool( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture removeHealthCheckTargetPoolAsync( String targetPool, TargetPoolsRemoveHealthCheckRequest targetPoolsRemoveHealthCheckRequestResource) { @@ -1147,7 +1286,7 @@ public final Operation removeHealthCheckTargetPool( .setTargetPoolsRemoveHealthCheckRequestResource( targetPoolsRemoveHealthCheckRequestResource) .build(); - return removeHealthCheckTargetPool(request); + return removeHealthCheckTargetPoolAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1164,17 +1303,44 @@ public final Operation removeHealthCheckTargetPool( * .setTargetPool(targetPool.toString()) * .setTargetPoolsRemoveHealthCheckRequestResource(targetPoolsRemoveHealthCheckRequestResource) * .build(); - * Operation response = targetPoolClient.removeHealthCheckTargetPool(request); + * targetPoolClient.removeHealthCheckTargetPoolAsync(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 */ - @BetaApi - public final Operation removeHealthCheckTargetPool( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture removeHealthCheckTargetPoolAsync( RemoveHealthCheckTargetPoolHttpRequest request) { - return removeHealthCheckTargetPoolCallable().call(request); + return removeHealthCheckTargetPoolOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Removes health check URL from a target pool. + * + *

Sample code: + * + *


+   * try (TargetPoolClient targetPoolClient = TargetPoolClient.create()) {
+   *   ProjectRegionTargetPoolName targetPool = ProjectRegionTargetPoolName.of("[PROJECT]", "[REGION]", "[TARGET_POOL]");
+   *   TargetPoolsRemoveHealthCheckRequest targetPoolsRemoveHealthCheckRequestResource = TargetPoolsRemoveHealthCheckRequest.newBuilder().build();
+   *   RemoveHealthCheckTargetPoolHttpRequest request = RemoveHealthCheckTargetPoolHttpRequest.newBuilder()
+   *     .setTargetPool(targetPool.toString())
+   *     .setTargetPoolsRemoveHealthCheckRequestResource(targetPoolsRemoveHealthCheckRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetPoolClient.removeHealthCheckTargetPoolOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + removeHealthCheckTargetPoolOperationCallable() { + return stub.removeHealthCheckTargetPoolOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1193,7 +1359,7 @@ public final Operation removeHealthCheckTargetPool( * .build(); * ApiFuture<Operation> future = targetPoolClient.removeHealthCheckTargetPoolCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1213,7 +1379,7 @@ public final Operation removeHealthCheckTargetPool( * try (TargetPoolClient targetPoolClient = TargetPoolClient.create()) { * ProjectRegionTargetPoolName targetPool = ProjectRegionTargetPoolName.of("[PROJECT]", "[REGION]", "[TARGET_POOL]"); * TargetPoolsRemoveInstanceRequest targetPoolsRemoveInstanceRequestResource = TargetPoolsRemoveInstanceRequest.newBuilder().build(); - * Operation response = targetPoolClient.removeInstanceTargetPool(targetPool, targetPoolsRemoveInstanceRequestResource); + * targetPoolClient.removeInstanceTargetPoolAsync(targetPool, targetPoolsRemoveInstanceRequestResource).get(); * } * * @@ -1221,8 +1387,9 @@ public final Operation removeHealthCheckTargetPool( * @param targetPoolsRemoveInstanceRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation removeInstanceTargetPool( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture removeInstanceTargetPoolAsync( ProjectRegionTargetPoolName targetPool, TargetPoolsRemoveInstanceRequest targetPoolsRemoveInstanceRequestResource) { @@ -1231,7 +1398,7 @@ public final Operation removeInstanceTargetPool( .setTargetPool(targetPool == null ? null : targetPool.toString()) .setTargetPoolsRemoveInstanceRequestResource(targetPoolsRemoveInstanceRequestResource) .build(); - return removeInstanceTargetPool(request); + return removeInstanceTargetPoolAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1244,7 +1411,7 @@ public final Operation removeInstanceTargetPool( * try (TargetPoolClient targetPoolClient = TargetPoolClient.create()) { * ProjectRegionTargetPoolName targetPool = ProjectRegionTargetPoolName.of("[PROJECT]", "[REGION]", "[TARGET_POOL]"); * TargetPoolsRemoveInstanceRequest targetPoolsRemoveInstanceRequestResource = TargetPoolsRemoveInstanceRequest.newBuilder().build(); - * Operation response = targetPoolClient.removeInstanceTargetPool(targetPool.toString(), targetPoolsRemoveInstanceRequestResource); + * targetPoolClient.removeInstanceTargetPoolAsync(targetPool.toString(), targetPoolsRemoveInstanceRequestResource).get(); * } * * @@ -1252,8 +1419,9 @@ public final Operation removeInstanceTargetPool( * @param targetPoolsRemoveInstanceRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation removeInstanceTargetPool( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture removeInstanceTargetPoolAsync( String targetPool, TargetPoolsRemoveInstanceRequest targetPoolsRemoveInstanceRequestResource) { @@ -1262,7 +1430,7 @@ public final Operation removeInstanceTargetPool( .setTargetPool(targetPool) .setTargetPoolsRemoveInstanceRequestResource(targetPoolsRemoveInstanceRequestResource) .build(); - return removeInstanceTargetPool(request); + return removeInstanceTargetPoolAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1279,16 +1447,44 @@ public final Operation removeInstanceTargetPool( * .setTargetPool(targetPool.toString()) * .setTargetPoolsRemoveInstanceRequestResource(targetPoolsRemoveInstanceRequestResource) * .build(); - * Operation response = targetPoolClient.removeInstanceTargetPool(request); + * targetPoolClient.removeInstanceTargetPoolAsync(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 */ - @BetaApi - public final Operation removeInstanceTargetPool(RemoveInstanceTargetPoolHttpRequest request) { - return removeInstanceTargetPoolCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture removeInstanceTargetPoolAsync( + RemoveInstanceTargetPoolHttpRequest request) { + return removeInstanceTargetPoolOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Removes instance URL from a target pool. + * + *

Sample code: + * + *


+   * try (TargetPoolClient targetPoolClient = TargetPoolClient.create()) {
+   *   ProjectRegionTargetPoolName targetPool = ProjectRegionTargetPoolName.of("[PROJECT]", "[REGION]", "[TARGET_POOL]");
+   *   TargetPoolsRemoveInstanceRequest targetPoolsRemoveInstanceRequestResource = TargetPoolsRemoveInstanceRequest.newBuilder().build();
+   *   RemoveInstanceTargetPoolHttpRequest request = RemoveInstanceTargetPoolHttpRequest.newBuilder()
+   *     .setTargetPool(targetPool.toString())
+   *     .setTargetPoolsRemoveInstanceRequestResource(targetPoolsRemoveInstanceRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetPoolClient.removeInstanceTargetPoolOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + removeInstanceTargetPoolOperationCallable() { + return stub.removeInstanceTargetPoolOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1307,7 +1503,7 @@ public final Operation removeInstanceTargetPool(RemoveInstanceTargetPoolHttpRequ * .build(); * ApiFuture<Operation> future = targetPoolClient.removeInstanceTargetPoolCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -1328,7 +1524,7 @@ public final Operation removeInstanceTargetPool(RemoveInstanceTargetPoolHttpRequ * ProjectRegionTargetPoolName targetPool = ProjectRegionTargetPoolName.of("[PROJECT]", "[REGION]", "[TARGET_POOL]"); * Float failoverRatio = 0; * TargetReference targetReferenceResource = TargetReference.newBuilder().build(); - * Operation response = targetPoolClient.setBackupTargetPool(targetPool, failoverRatio, targetReferenceResource); + * targetPoolClient.setBackupTargetPoolAsync(targetPool, failoverRatio, targetReferenceResource).get(); * } * * @@ -1337,8 +1533,9 @@ public final Operation removeInstanceTargetPool(RemoveInstanceTargetPoolHttpRequ * @param targetReferenceResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setBackupTargetPool( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setBackupTargetPoolAsync( ProjectRegionTargetPoolName targetPool, Float failoverRatio, TargetReference targetReferenceResource) { @@ -1349,7 +1546,7 @@ public final Operation setBackupTargetPool( .setFailoverRatio(failoverRatio) .setTargetReferenceResource(targetReferenceResource) .build(); - return setBackupTargetPool(request); + return setBackupTargetPoolAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1363,7 +1560,7 @@ public final Operation setBackupTargetPool( * ProjectRegionTargetPoolName targetPool = ProjectRegionTargetPoolName.of("[PROJECT]", "[REGION]", "[TARGET_POOL]"); * Float failoverRatio = 0; * TargetReference targetReferenceResource = TargetReference.newBuilder().build(); - * Operation response = targetPoolClient.setBackupTargetPool(targetPool.toString(), failoverRatio, targetReferenceResource); + * targetPoolClient.setBackupTargetPoolAsync(targetPool.toString(), failoverRatio, targetReferenceResource).get(); * } * * @@ -1372,8 +1569,9 @@ public final Operation setBackupTargetPool( * @param targetReferenceResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setBackupTargetPool( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setBackupTargetPoolAsync( String targetPool, Float failoverRatio, TargetReference targetReferenceResource) { SetBackupTargetPoolHttpRequest request = @@ -1382,7 +1580,7 @@ public final Operation setBackupTargetPool( .setFailoverRatio(failoverRatio) .setTargetReferenceResource(targetReferenceResource) .build(); - return setBackupTargetPool(request); + return setBackupTargetPoolAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1401,16 +1599,46 @@ public final Operation setBackupTargetPool( * .setFailoverRatio(failoverRatio) * .setTargetReferenceResource(targetReferenceResource) * .build(); - * Operation response = targetPoolClient.setBackupTargetPool(request); + * targetPoolClient.setBackupTargetPoolAsync(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 */ - @BetaApi - public final Operation setBackupTargetPool(SetBackupTargetPoolHttpRequest request) { - return setBackupTargetPoolCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setBackupTargetPoolAsync( + SetBackupTargetPoolHttpRequest request) { + return setBackupTargetPoolOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Changes a backup target pool's configurations. + * + *

Sample code: + * + *


+   * try (TargetPoolClient targetPoolClient = TargetPoolClient.create()) {
+   *   ProjectRegionTargetPoolName targetPool = ProjectRegionTargetPoolName.of("[PROJECT]", "[REGION]", "[TARGET_POOL]");
+   *   Float failoverRatio = 0;
+   *   TargetReference targetReferenceResource = TargetReference.newBuilder().build();
+   *   SetBackupTargetPoolHttpRequest request = SetBackupTargetPoolHttpRequest.newBuilder()
+   *     .setTargetPool(targetPool.toString())
+   *     .setFailoverRatio(failoverRatio)
+   *     .setTargetReferenceResource(targetReferenceResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetPoolClient.setBackupTargetPoolOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + setBackupTargetPoolOperationCallable() { + return stub.setBackupTargetPoolOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1431,7 +1659,7 @@ public final Operation setBackupTargetPool(SetBackupTargetPoolHttpRequest reques * .build(); * ApiFuture<Operation> future = targetPoolClient.setBackupTargetPoolCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetPoolSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetPoolSettings.java index 449fb686d9ef..a5cda07953f7 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetPoolSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetPoolSettings.java @@ -22,10 +22,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -49,13 +51,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of addHealthCheckTargetPool to 30 seconds: + * example, to set the total timeout of getTargetPool to 30 seconds: * *

  * 
  * TargetPoolSettings.Builder targetPoolSettingsBuilder =
  *     TargetPoolSettings.newBuilder();
- * targetPoolSettingsBuilder.addHealthCheckTargetPoolSettings().getRetrySettings().toBuilder()
+ * targetPoolSettingsBuilder.getTargetPoolSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * TargetPoolSettings targetPoolSettings = targetPoolSettingsBuilder.build();
  * 
@@ -70,12 +72,28 @@ public class TargetPoolSettings extends ClientSettings {
     return ((TargetPoolStubSettings) getStubSettings()).addHealthCheckTargetPoolSettings();
   }
 
+  /** Returns the object with the settings used for calls to addHealthCheckTargetPool. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      addHealthCheckTargetPoolOperationSettings() {
+    return ((TargetPoolStubSettings) getStubSettings()).addHealthCheckTargetPoolOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to addInstanceTargetPool. */
   public UnaryCallSettings
       addInstanceTargetPoolSettings() {
     return ((TargetPoolStubSettings) getStubSettings()).addInstanceTargetPoolSettings();
   }
 
+  /** Returns the object with the settings used for calls to addInstanceTargetPool. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      addInstanceTargetPoolOperationSettings() {
+    return ((TargetPoolStubSettings) getStubSettings()).addInstanceTargetPoolOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to aggregatedListTargetPools. */
   public PagedCallSettings<
           AggregatedListTargetPoolsHttpRequest,
@@ -90,6 +108,14 @@ public UnaryCallSettings deleteTargetPoo
     return ((TargetPoolStubSettings) getStubSettings()).deleteTargetPoolSettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteTargetPool. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteTargetPoolOperationSettings() {
+    return ((TargetPoolStubSettings) getStubSettings()).deleteTargetPoolOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getTargetPool. */
   public UnaryCallSettings getTargetPoolSettings() {
     return ((TargetPoolStubSettings) getStubSettings()).getTargetPoolSettings();
@@ -106,6 +132,14 @@ public UnaryCallSettings insertTargetPoo
     return ((TargetPoolStubSettings) getStubSettings()).insertTargetPoolSettings();
   }
 
+  /** Returns the object with the settings used for calls to insertTargetPool. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertTargetPoolOperationSettings() {
+    return ((TargetPoolStubSettings) getStubSettings()).insertTargetPoolOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listTargetPools. */
   public PagedCallSettings
       listTargetPoolsSettings() {
@@ -118,18 +152,43 @@ public UnaryCallSettings insertTargetPoo
     return ((TargetPoolStubSettings) getStubSettings()).removeHealthCheckTargetPoolSettings();
   }
 
+  /** Returns the object with the settings used for calls to removeHealthCheckTargetPool. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      removeHealthCheckTargetPoolOperationSettings() {
+    return ((TargetPoolStubSettings) getStubSettings())
+        .removeHealthCheckTargetPoolOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to removeInstanceTargetPool. */
   public UnaryCallSettings
       removeInstanceTargetPoolSettings() {
     return ((TargetPoolStubSettings) getStubSettings()).removeInstanceTargetPoolSettings();
   }
 
+  /** Returns the object with the settings used for calls to removeInstanceTargetPool. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      removeInstanceTargetPoolOperationSettings() {
+    return ((TargetPoolStubSettings) getStubSettings()).removeInstanceTargetPoolOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to setBackupTargetPool. */
   public UnaryCallSettings
       setBackupTargetPoolSettings() {
     return ((TargetPoolStubSettings) getStubSettings()).setBackupTargetPoolSettings();
   }
 
+  /** Returns the object with the settings used for calls to setBackupTargetPool. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setBackupTargetPoolOperationSettings() {
+    return ((TargetPoolStubSettings) getStubSettings()).setBackupTargetPoolOperationSettings();
+  }
+
   public static final TargetPoolSettings create(TargetPoolStubSettings stub) throws IOException {
     return new TargetPoolSettings.Builder(stub.toBuilder()).build();
   }
@@ -237,12 +296,29 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().addHealthCheckTargetPoolSettings();
     }
 
+    /** Returns the builder for the settings used for calls to addHealthCheckTargetPool. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            AddHealthCheckTargetPoolHttpRequest, EmptyMessage, Operation>
+        addHealthCheckTargetPoolOperationSettings() {
+      return getStubSettingsBuilder().addHealthCheckTargetPoolOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to addInstanceTargetPool. */
     public UnaryCallSettings.Builder
         addInstanceTargetPoolSettings() {
       return getStubSettingsBuilder().addInstanceTargetPoolSettings();
     }
 
+    /** Returns the builder for the settings used for calls to addInstanceTargetPool. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        addInstanceTargetPoolOperationSettings() {
+      return getStubSettingsBuilder().addInstanceTargetPoolOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to aggregatedListTargetPools. */
     public PagedCallSettings.Builder<
             AggregatedListTargetPoolsHttpRequest,
@@ -258,6 +334,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteTargetPoolSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteTargetPool. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteTargetPoolOperationSettings() {
+      return getStubSettingsBuilder().deleteTargetPoolOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getTargetPool. */
     public UnaryCallSettings.Builder getTargetPoolSettings() {
       return getStubSettingsBuilder().getTargetPoolSettings();
@@ -275,6 +359,14 @@ public UnaryCallSettings.Builder getTarget
       return getStubSettingsBuilder().insertTargetPoolSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertTargetPool. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertTargetPoolOperationSettings() {
+      return getStubSettingsBuilder().insertTargetPoolOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listTargetPools. */
     public PagedCallSettings.Builder<
             ListTargetPoolsHttpRequest, TargetPoolList, ListTargetPoolsPagedResponse>
@@ -288,18 +380,44 @@ public UnaryCallSettings.Builder getTarget
       return getStubSettingsBuilder().removeHealthCheckTargetPoolSettings();
     }
 
+    /** Returns the builder for the settings used for calls to removeHealthCheckTargetPool. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            RemoveHealthCheckTargetPoolHttpRequest, EmptyMessage, Operation>
+        removeHealthCheckTargetPoolOperationSettings() {
+      return getStubSettingsBuilder().removeHealthCheckTargetPoolOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to removeInstanceTargetPool. */
     public UnaryCallSettings.Builder
         removeInstanceTargetPoolSettings() {
       return getStubSettingsBuilder().removeInstanceTargetPoolSettings();
     }
 
+    /** Returns the builder for the settings used for calls to removeInstanceTargetPool. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            RemoveInstanceTargetPoolHttpRequest, EmptyMessage, Operation>
+        removeInstanceTargetPoolOperationSettings() {
+      return getStubSettingsBuilder().removeInstanceTargetPoolOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to setBackupTargetPool. */
     public UnaryCallSettings.Builder
         setBackupTargetPoolSettings() {
       return getStubSettingsBuilder().setBackupTargetPoolSettings();
     }
 
+    /** Returns the builder for the settings used for calls to setBackupTargetPool. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        setBackupTargetPoolOperationSettings() {
+      return getStubSettingsBuilder().setBackupTargetPoolOperationSettings();
+    }
+
     @Override
     public TargetPoolSettings build() throws IOException {
       return new TargetPoolSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetSslProxyClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetSslProxyClient.java
index 443a8fb50925..d192911d81a2 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetSslProxyClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetSslProxyClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.TargetSslProxyStub;
@@ -43,7 +46,7 @@
  * 
  * try (TargetSslProxyClient targetSslProxyClient = TargetSslProxyClient.create()) {
  *   ProjectGlobalTargetSslProxyName targetSslProxy = ProjectGlobalTargetSslProxyName.of("[PROJECT]", "[TARGET_SSL_PROXY]");
- *   Operation response = targetSslProxyClient.deleteTargetSslProxy(targetSslProxy);
+ *   TargetSslProxy response = targetSslProxyClient.getTargetSslProxy(targetSslProxy);
  * }
  * 
  * 
@@ -103,6 +106,7 @@ public class TargetSslProxyClient implements BackgroundResource { private final TargetSslProxySettings settings; private final TargetSslProxyStub stub; + private final GlobalOperationClient operationsClient; /** Constructs an instance of TargetSslProxyClient with default settings. */ public static final TargetSslProxyClient create() throws IOException { @@ -135,12 +139,14 @@ public static final TargetSslProxyClient create(TargetSslProxyStub stub) { protected TargetSslProxyClient(TargetSslProxySettings settings) throws IOException { this.settings = settings; this.stub = ((TargetSslProxyStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected TargetSslProxyClient(TargetSslProxyStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } public final TargetSslProxySettings getSettings() { @@ -152,6 +158,16 @@ public TargetSslProxyStub getStub() { return stub; } + /** + * Returns the GlobalOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final GlobalOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Deletes the specified TargetSslProxy resource. @@ -161,21 +177,23 @@ public TargetSslProxyStub getStub() { *

    * try (TargetSslProxyClient targetSslProxyClient = TargetSslProxyClient.create()) {
    *   ProjectGlobalTargetSslProxyName targetSslProxy = ProjectGlobalTargetSslProxyName.of("[PROJECT]", "[TARGET_SSL_PROXY]");
-   *   Operation response = targetSslProxyClient.deleteTargetSslProxy(targetSslProxy);
+   *   targetSslProxyClient.deleteTargetSslProxyAsync(targetSslProxy).get();
    * }
    * 
* * @param targetSslProxy Name of the TargetSslProxy resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteTargetSslProxy(ProjectGlobalTargetSslProxyName targetSslProxy) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteTargetSslProxyAsync( + ProjectGlobalTargetSslProxyName targetSslProxy) { DeleteTargetSslProxyHttpRequest request = DeleteTargetSslProxyHttpRequest.newBuilder() .setTargetSslProxy(targetSslProxy == null ? null : targetSslProxy.toString()) .build(); - return deleteTargetSslProxy(request); + return deleteTargetSslProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -187,19 +205,21 @@ public final Operation deleteTargetSslProxy(ProjectGlobalTargetSslProxyName targ *

    * try (TargetSslProxyClient targetSslProxyClient = TargetSslProxyClient.create()) {
    *   ProjectGlobalTargetSslProxyName targetSslProxy = ProjectGlobalTargetSslProxyName.of("[PROJECT]", "[TARGET_SSL_PROXY]");
-   *   Operation response = targetSslProxyClient.deleteTargetSslProxy(targetSslProxy.toString());
+   *   targetSslProxyClient.deleteTargetSslProxyAsync(targetSslProxy.toString()).get();
    * }
    * 
* * @param targetSslProxy Name of the TargetSslProxy resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteTargetSslProxy(String targetSslProxy) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteTargetSslProxyAsync( + String targetSslProxy) { DeleteTargetSslProxyHttpRequest request = DeleteTargetSslProxyHttpRequest.newBuilder().setTargetSslProxy(targetSslProxy).build(); - return deleteTargetSslProxy(request); + return deleteTargetSslProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -214,16 +234,42 @@ public final Operation deleteTargetSslProxy(String targetSslProxy) { * DeleteTargetSslProxyHttpRequest request = DeleteTargetSslProxyHttpRequest.newBuilder() * .setTargetSslProxy(targetSslProxy.toString()) * .build(); - * Operation response = targetSslProxyClient.deleteTargetSslProxy(request); + * targetSslProxyClient.deleteTargetSslProxyAsync(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 */ - @BetaApi - public final Operation deleteTargetSslProxy(DeleteTargetSslProxyHttpRequest request) { - return deleteTargetSslProxyCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteTargetSslProxyAsync( + DeleteTargetSslProxyHttpRequest request) { + return deleteTargetSslProxyOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified TargetSslProxy resource. + * + *

Sample code: + * + *


+   * try (TargetSslProxyClient targetSslProxyClient = TargetSslProxyClient.create()) {
+   *   ProjectGlobalTargetSslProxyName targetSslProxy = ProjectGlobalTargetSslProxyName.of("[PROJECT]", "[TARGET_SSL_PROXY]");
+   *   DeleteTargetSslProxyHttpRequest request = DeleteTargetSslProxyHttpRequest.newBuilder()
+   *     .setTargetSslProxy(targetSslProxy.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetSslProxyClient.deleteTargetSslProxyOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteTargetSslProxyOperationCallable() { + return stub.deleteTargetSslProxyOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -240,7 +286,7 @@ public final Operation deleteTargetSslProxy(DeleteTargetSslProxyHttpRequest requ * .build(); * ApiFuture<Operation> future = targetSslProxyClient.deleteTargetSslProxyCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -363,7 +409,7 @@ public final TargetSslProxy getTargetSslProxy(GetTargetSslProxyHttpRequest reque * try (TargetSslProxyClient targetSslProxyClient = TargetSslProxyClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * TargetSslProxy targetSslProxyResource = TargetSslProxy.newBuilder().build(); - * Operation response = targetSslProxyClient.insertTargetSslProxy(project, targetSslProxyResource); + * targetSslProxyClient.insertTargetSslProxyAsync(project, targetSslProxyResource).get(); * } * * @@ -372,8 +418,9 @@ public final TargetSslProxy getTargetSslProxy(GetTargetSslProxyHttpRequest reque * (== resource_for beta.targetSslProxies ==) (== resource_for v1.targetSslProxies ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertTargetSslProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertTargetSslProxyAsync( ProjectName project, TargetSslProxy targetSslProxyResource) { InsertTargetSslProxyHttpRequest request = @@ -381,7 +428,7 @@ public final Operation insertTargetSslProxy( .setProject(project == null ? null : project.toString()) .setTargetSslProxyResource(targetSslProxyResource) .build(); - return insertTargetSslProxy(request); + return insertTargetSslProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -395,7 +442,7 @@ public final Operation insertTargetSslProxy( * try (TargetSslProxyClient targetSslProxyClient = TargetSslProxyClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * TargetSslProxy targetSslProxyResource = TargetSslProxy.newBuilder().build(); - * Operation response = targetSslProxyClient.insertTargetSslProxy(project.toString(), targetSslProxyResource); + * targetSslProxyClient.insertTargetSslProxyAsync(project.toString(), targetSslProxyResource).get(); * } * * @@ -404,8 +451,9 @@ public final Operation insertTargetSslProxy( * (== resource_for beta.targetSslProxies ==) (== resource_for v1.targetSslProxies ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertTargetSslProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertTargetSslProxyAsync( String project, TargetSslProxy targetSslProxyResource) { InsertTargetSslProxyHttpRequest request = @@ -413,7 +461,7 @@ public final Operation insertTargetSslProxy( .setProject(project) .setTargetSslProxyResource(targetSslProxyResource) .build(); - return insertTargetSslProxy(request); + return insertTargetSslProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -431,16 +479,45 @@ public final Operation insertTargetSslProxy( * .setProject(project.toString()) * .setTargetSslProxyResource(targetSslProxyResource) * .build(); - * Operation response = targetSslProxyClient.insertTargetSslProxy(request); + * targetSslProxyClient.insertTargetSslProxyAsync(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 */ - @BetaApi - public final Operation insertTargetSslProxy(InsertTargetSslProxyHttpRequest request) { - return insertTargetSslProxyCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertTargetSslProxyAsync( + InsertTargetSslProxyHttpRequest request) { + return insertTargetSslProxyOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a TargetSslProxy resource in the specified project using the data included in the + * request. + * + *

Sample code: + * + *


+   * try (TargetSslProxyClient targetSslProxyClient = TargetSslProxyClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   TargetSslProxy targetSslProxyResource = TargetSslProxy.newBuilder().build();
+   *   InsertTargetSslProxyHttpRequest request = InsertTargetSslProxyHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .setTargetSslProxyResource(targetSslProxyResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetSslProxyClient.insertTargetSslProxyOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertTargetSslProxyOperationCallable() { + return stub.insertTargetSslProxyOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -460,7 +537,7 @@ public final Operation insertTargetSslProxy(InsertTargetSslProxyHttpRequest requ * .build(); * ApiFuture<Operation> future = targetSslProxyClient.insertTargetSslProxyCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -618,7 +695,7 @@ public final ListTargetSslProxiesPagedResponse listTargetSslProxies( * try (TargetSslProxyClient targetSslProxyClient = TargetSslProxyClient.create()) { * ProjectGlobalTargetSslProxyName targetSslProxy = ProjectGlobalTargetSslProxyName.of("[PROJECT]", "[TARGET_SSL_PROXY]"); * TargetSslProxiesSetBackendServiceRequest targetSslProxiesSetBackendServiceRequestResource = TargetSslProxiesSetBackendServiceRequest.newBuilder().build(); - * Operation response = targetSslProxyClient.setBackendServiceTargetSslProxy(targetSslProxy, targetSslProxiesSetBackendServiceRequestResource); + * targetSslProxyClient.setBackendServiceTargetSslProxyAsync(targetSslProxy, targetSslProxiesSetBackendServiceRequestResource).get(); * } * * @@ -627,8 +704,9 @@ public final ListTargetSslProxiesPagedResponse listTargetSslProxies( * @param targetSslProxiesSetBackendServiceRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setBackendServiceTargetSslProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setBackendServiceTargetSslProxyAsync( ProjectGlobalTargetSslProxyName targetSslProxy, TargetSslProxiesSetBackendServiceRequest targetSslProxiesSetBackendServiceRequestResource) { @@ -638,7 +716,7 @@ public final Operation setBackendServiceTargetSslProxy( .setTargetSslProxiesSetBackendServiceRequestResource( targetSslProxiesSetBackendServiceRequestResource) .build(); - return setBackendServiceTargetSslProxy(request); + return setBackendServiceTargetSslProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -651,7 +729,7 @@ public final Operation setBackendServiceTargetSslProxy( * try (TargetSslProxyClient targetSslProxyClient = TargetSslProxyClient.create()) { * ProjectGlobalTargetSslProxyName targetSslProxy = ProjectGlobalTargetSslProxyName.of("[PROJECT]", "[TARGET_SSL_PROXY]"); * TargetSslProxiesSetBackendServiceRequest targetSslProxiesSetBackendServiceRequestResource = TargetSslProxiesSetBackendServiceRequest.newBuilder().build(); - * Operation response = targetSslProxyClient.setBackendServiceTargetSslProxy(targetSslProxy.toString(), targetSslProxiesSetBackendServiceRequestResource); + * targetSslProxyClient.setBackendServiceTargetSslProxyAsync(targetSslProxy.toString(), targetSslProxiesSetBackendServiceRequestResource).get(); * } * * @@ -660,8 +738,9 @@ public final Operation setBackendServiceTargetSslProxy( * @param targetSslProxiesSetBackendServiceRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setBackendServiceTargetSslProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setBackendServiceTargetSslProxyAsync( String targetSslProxy, TargetSslProxiesSetBackendServiceRequest targetSslProxiesSetBackendServiceRequestResource) { @@ -671,7 +750,7 @@ public final Operation setBackendServiceTargetSslProxy( .setTargetSslProxiesSetBackendServiceRequestResource( targetSslProxiesSetBackendServiceRequestResource) .build(); - return setBackendServiceTargetSslProxy(request); + return setBackendServiceTargetSslProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -688,17 +767,45 @@ public final Operation setBackendServiceTargetSslProxy( * .setTargetSslProxy(targetSslProxy.toString()) * .setTargetSslProxiesSetBackendServiceRequestResource(targetSslProxiesSetBackendServiceRequestResource) * .build(); - * Operation response = targetSslProxyClient.setBackendServiceTargetSslProxy(request); + * targetSslProxyClient.setBackendServiceTargetSslProxyAsync(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 */ - @BetaApi - public final Operation setBackendServiceTargetSslProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setBackendServiceTargetSslProxyAsync( SetBackendServiceTargetSslProxyHttpRequest request) { - return setBackendServiceTargetSslProxyCallable().call(request); + return setBackendServiceTargetSslProxyOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Changes the BackendService for TargetSslProxy. + * + *

Sample code: + * + *


+   * try (TargetSslProxyClient targetSslProxyClient = TargetSslProxyClient.create()) {
+   *   ProjectGlobalTargetSslProxyName targetSslProxy = ProjectGlobalTargetSslProxyName.of("[PROJECT]", "[TARGET_SSL_PROXY]");
+   *   TargetSslProxiesSetBackendServiceRequest targetSslProxiesSetBackendServiceRequestResource = TargetSslProxiesSetBackendServiceRequest.newBuilder().build();
+   *   SetBackendServiceTargetSslProxyHttpRequest request = SetBackendServiceTargetSslProxyHttpRequest.newBuilder()
+   *     .setTargetSslProxy(targetSslProxy.toString())
+   *     .setTargetSslProxiesSetBackendServiceRequestResource(targetSslProxiesSetBackendServiceRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetSslProxyClient.setBackendServiceTargetSslProxyOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable< + SetBackendServiceTargetSslProxyHttpRequest, EmptyMessage, Operation> + setBackendServiceTargetSslProxyOperationCallable() { + return stub.setBackendServiceTargetSslProxyOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -717,7 +824,7 @@ public final Operation setBackendServiceTargetSslProxy( * .build(); * ApiFuture<Operation> future = targetSslProxyClient.setBackendServiceTargetSslProxyCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -737,7 +844,7 @@ public final Operation setBackendServiceTargetSslProxy( * try (TargetSslProxyClient targetSslProxyClient = TargetSslProxyClient.create()) { * ProjectGlobalTargetSslProxyName targetSslProxy = ProjectGlobalTargetSslProxyName.of("[PROJECT]", "[TARGET_SSL_PROXY]"); * TargetSslProxiesSetProxyHeaderRequest targetSslProxiesSetProxyHeaderRequestResource = TargetSslProxiesSetProxyHeaderRequest.newBuilder().build(); - * Operation response = targetSslProxyClient.setProxyHeaderTargetSslProxy(targetSslProxy, targetSslProxiesSetProxyHeaderRequestResource); + * targetSslProxyClient.setProxyHeaderTargetSslProxyAsync(targetSslProxy, targetSslProxiesSetProxyHeaderRequestResource).get(); * } * * @@ -745,8 +852,9 @@ public final Operation setBackendServiceTargetSslProxy( * @param targetSslProxiesSetProxyHeaderRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setProxyHeaderTargetSslProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setProxyHeaderTargetSslProxyAsync( ProjectGlobalTargetSslProxyName targetSslProxy, TargetSslProxiesSetProxyHeaderRequest targetSslProxiesSetProxyHeaderRequestResource) { @@ -756,7 +864,7 @@ public final Operation setProxyHeaderTargetSslProxy( .setTargetSslProxiesSetProxyHeaderRequestResource( targetSslProxiesSetProxyHeaderRequestResource) .build(); - return setProxyHeaderTargetSslProxy(request); + return setProxyHeaderTargetSslProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -769,7 +877,7 @@ public final Operation setProxyHeaderTargetSslProxy( * try (TargetSslProxyClient targetSslProxyClient = TargetSslProxyClient.create()) { * ProjectGlobalTargetSslProxyName targetSslProxy = ProjectGlobalTargetSslProxyName.of("[PROJECT]", "[TARGET_SSL_PROXY]"); * TargetSslProxiesSetProxyHeaderRequest targetSslProxiesSetProxyHeaderRequestResource = TargetSslProxiesSetProxyHeaderRequest.newBuilder().build(); - * Operation response = targetSslProxyClient.setProxyHeaderTargetSslProxy(targetSslProxy.toString(), targetSslProxiesSetProxyHeaderRequestResource); + * targetSslProxyClient.setProxyHeaderTargetSslProxyAsync(targetSslProxy.toString(), targetSslProxiesSetProxyHeaderRequestResource).get(); * } * * @@ -777,8 +885,9 @@ public final Operation setProxyHeaderTargetSslProxy( * @param targetSslProxiesSetProxyHeaderRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setProxyHeaderTargetSslProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setProxyHeaderTargetSslProxyAsync( String targetSslProxy, TargetSslProxiesSetProxyHeaderRequest targetSslProxiesSetProxyHeaderRequestResource) { @@ -788,7 +897,7 @@ public final Operation setProxyHeaderTargetSslProxy( .setTargetSslProxiesSetProxyHeaderRequestResource( targetSslProxiesSetProxyHeaderRequestResource) .build(); - return setProxyHeaderTargetSslProxy(request); + return setProxyHeaderTargetSslProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -805,17 +914,44 @@ public final Operation setProxyHeaderTargetSslProxy( * .setTargetSslProxy(targetSslProxy.toString()) * .setTargetSslProxiesSetProxyHeaderRequestResource(targetSslProxiesSetProxyHeaderRequestResource) * .build(); - * Operation response = targetSslProxyClient.setProxyHeaderTargetSslProxy(request); + * targetSslProxyClient.setProxyHeaderTargetSslProxyAsync(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 */ - @BetaApi - public final Operation setProxyHeaderTargetSslProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setProxyHeaderTargetSslProxyAsync( SetProxyHeaderTargetSslProxyHttpRequest request) { - return setProxyHeaderTargetSslProxyCallable().call(request); + return setProxyHeaderTargetSslProxyOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Changes the ProxyHeaderType for TargetSslProxy. + * + *

Sample code: + * + *


+   * try (TargetSslProxyClient targetSslProxyClient = TargetSslProxyClient.create()) {
+   *   ProjectGlobalTargetSslProxyName targetSslProxy = ProjectGlobalTargetSslProxyName.of("[PROJECT]", "[TARGET_SSL_PROXY]");
+   *   TargetSslProxiesSetProxyHeaderRequest targetSslProxiesSetProxyHeaderRequestResource = TargetSslProxiesSetProxyHeaderRequest.newBuilder().build();
+   *   SetProxyHeaderTargetSslProxyHttpRequest request = SetProxyHeaderTargetSslProxyHttpRequest.newBuilder()
+   *     .setTargetSslProxy(targetSslProxy.toString())
+   *     .setTargetSslProxiesSetProxyHeaderRequestResource(targetSslProxiesSetProxyHeaderRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetSslProxyClient.setProxyHeaderTargetSslProxyOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + setProxyHeaderTargetSslProxyOperationCallable() { + return stub.setProxyHeaderTargetSslProxyOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -834,7 +970,7 @@ public final Operation setProxyHeaderTargetSslProxy( * .build(); * ApiFuture<Operation> future = targetSslProxyClient.setProxyHeaderTargetSslProxyCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -854,7 +990,7 @@ public final Operation setProxyHeaderTargetSslProxy( * try (TargetSslProxyClient targetSslProxyClient = TargetSslProxyClient.create()) { * ProjectGlobalTargetSslProxyName targetSslProxy = ProjectGlobalTargetSslProxyName.of("[PROJECT]", "[TARGET_SSL_PROXY]"); * TargetSslProxiesSetSslCertificatesRequest targetSslProxiesSetSslCertificatesRequestResource = TargetSslProxiesSetSslCertificatesRequest.newBuilder().build(); - * Operation response = targetSslProxyClient.setSslCertificatesTargetSslProxy(targetSslProxy, targetSslProxiesSetSslCertificatesRequestResource); + * targetSslProxyClient.setSslCertificatesTargetSslProxyAsync(targetSslProxy, targetSslProxiesSetSslCertificatesRequestResource).get(); * } * * @@ -863,8 +999,9 @@ public final Operation setProxyHeaderTargetSslProxy( * @param targetSslProxiesSetSslCertificatesRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setSslCertificatesTargetSslProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setSslCertificatesTargetSslProxyAsync( ProjectGlobalTargetSslProxyName targetSslProxy, TargetSslProxiesSetSslCertificatesRequest targetSslProxiesSetSslCertificatesRequestResource) { @@ -874,7 +1011,7 @@ public final Operation setSslCertificatesTargetSslProxy( .setTargetSslProxiesSetSslCertificatesRequestResource( targetSslProxiesSetSslCertificatesRequestResource) .build(); - return setSslCertificatesTargetSslProxy(request); + return setSslCertificatesTargetSslProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -887,7 +1024,7 @@ public final Operation setSslCertificatesTargetSslProxy( * try (TargetSslProxyClient targetSslProxyClient = TargetSslProxyClient.create()) { * ProjectGlobalTargetSslProxyName targetSslProxy = ProjectGlobalTargetSslProxyName.of("[PROJECT]", "[TARGET_SSL_PROXY]"); * TargetSslProxiesSetSslCertificatesRequest targetSslProxiesSetSslCertificatesRequestResource = TargetSslProxiesSetSslCertificatesRequest.newBuilder().build(); - * Operation response = targetSslProxyClient.setSslCertificatesTargetSslProxy(targetSslProxy.toString(), targetSslProxiesSetSslCertificatesRequestResource); + * targetSslProxyClient.setSslCertificatesTargetSslProxyAsync(targetSslProxy.toString(), targetSslProxiesSetSslCertificatesRequestResource).get(); * } * * @@ -896,8 +1033,9 @@ public final Operation setSslCertificatesTargetSslProxy( * @param targetSslProxiesSetSslCertificatesRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setSslCertificatesTargetSslProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setSslCertificatesTargetSslProxyAsync( String targetSslProxy, TargetSslProxiesSetSslCertificatesRequest targetSslProxiesSetSslCertificatesRequestResource) { @@ -907,7 +1045,7 @@ public final Operation setSslCertificatesTargetSslProxy( .setTargetSslProxiesSetSslCertificatesRequestResource( targetSslProxiesSetSslCertificatesRequestResource) .build(); - return setSslCertificatesTargetSslProxy(request); + return setSslCertificatesTargetSslProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -924,17 +1062,45 @@ public final Operation setSslCertificatesTargetSslProxy( * .setTargetSslProxy(targetSslProxy.toString()) * .setTargetSslProxiesSetSslCertificatesRequestResource(targetSslProxiesSetSslCertificatesRequestResource) * .build(); - * Operation response = targetSslProxyClient.setSslCertificatesTargetSslProxy(request); + * targetSslProxyClient.setSslCertificatesTargetSslProxyAsync(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 */ - @BetaApi - public final Operation setSslCertificatesTargetSslProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setSslCertificatesTargetSslProxyAsync( SetSslCertificatesTargetSslProxyHttpRequest request) { - return setSslCertificatesTargetSslProxyCallable().call(request); + return setSslCertificatesTargetSslProxyOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Changes SslCertificates for TargetSslProxy. + * + *

Sample code: + * + *


+   * try (TargetSslProxyClient targetSslProxyClient = TargetSslProxyClient.create()) {
+   *   ProjectGlobalTargetSslProxyName targetSslProxy = ProjectGlobalTargetSslProxyName.of("[PROJECT]", "[TARGET_SSL_PROXY]");
+   *   TargetSslProxiesSetSslCertificatesRequest targetSslProxiesSetSslCertificatesRequestResource = TargetSslProxiesSetSslCertificatesRequest.newBuilder().build();
+   *   SetSslCertificatesTargetSslProxyHttpRequest request = SetSslCertificatesTargetSslProxyHttpRequest.newBuilder()
+   *     .setTargetSslProxy(targetSslProxy.toString())
+   *     .setTargetSslProxiesSetSslCertificatesRequestResource(targetSslProxiesSetSslCertificatesRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetSslProxyClient.setSslCertificatesTargetSslProxyOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable< + SetSslCertificatesTargetSslProxyHttpRequest, EmptyMessage, Operation> + setSslCertificatesTargetSslProxyOperationCallable() { + return stub.setSslCertificatesTargetSslProxyOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -953,7 +1119,7 @@ public final Operation setSslCertificatesTargetSslProxy( * .build(); * ApiFuture<Operation> future = targetSslProxyClient.setSslCertificatesTargetSslProxyCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -975,7 +1141,7 @@ public final Operation setSslCertificatesTargetSslProxy( * try (TargetSslProxyClient targetSslProxyClient = TargetSslProxyClient.create()) { * ProjectGlobalTargetSslProxyName targetSslProxy = ProjectGlobalTargetSslProxyName.of("[PROJECT]", "[TARGET_SSL_PROXY]"); * SslPolicyReference sslPolicyReferenceResource = SslPolicyReference.newBuilder().build(); - * Operation response = targetSslProxyClient.setSslPolicyTargetSslProxy(targetSslProxy, sslPolicyReferenceResource); + * targetSslProxyClient.setSslPolicyTargetSslProxyAsync(targetSslProxy, sslPolicyReferenceResource).get(); * } * * @@ -984,8 +1150,9 @@ public final Operation setSslCertificatesTargetSslProxy( * @param sslPolicyReferenceResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setSslPolicyTargetSslProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setSslPolicyTargetSslProxyAsync( ProjectGlobalTargetSslProxyName targetSslProxy, SslPolicyReference sslPolicyReferenceResource) { @@ -994,7 +1161,7 @@ public final Operation setSslPolicyTargetSslProxy( .setTargetSslProxy(targetSslProxy == null ? null : targetSslProxy.toString()) .setSslPolicyReferenceResource(sslPolicyReferenceResource) .build(); - return setSslPolicyTargetSslProxy(request); + return setSslPolicyTargetSslProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1009,7 +1176,7 @@ public final Operation setSslPolicyTargetSslProxy( * try (TargetSslProxyClient targetSslProxyClient = TargetSslProxyClient.create()) { * ProjectGlobalTargetSslProxyName targetSslProxy = ProjectGlobalTargetSslProxyName.of("[PROJECT]", "[TARGET_SSL_PROXY]"); * SslPolicyReference sslPolicyReferenceResource = SslPolicyReference.newBuilder().build(); - * Operation response = targetSslProxyClient.setSslPolicyTargetSslProxy(targetSslProxy.toString(), sslPolicyReferenceResource); + * targetSslProxyClient.setSslPolicyTargetSslProxyAsync(targetSslProxy.toString(), sslPolicyReferenceResource).get(); * } * * @@ -1018,8 +1185,9 @@ public final Operation setSslPolicyTargetSslProxy( * @param sslPolicyReferenceResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setSslPolicyTargetSslProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setSslPolicyTargetSslProxyAsync( String targetSslProxy, SslPolicyReference sslPolicyReferenceResource) { SetSslPolicyTargetSslProxyHttpRequest request = @@ -1027,7 +1195,7 @@ public final Operation setSslPolicyTargetSslProxy( .setTargetSslProxy(targetSslProxy) .setSslPolicyReferenceResource(sslPolicyReferenceResource) .build(); - return setSslPolicyTargetSslProxy(request); + return setSslPolicyTargetSslProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1046,16 +1214,46 @@ public final Operation setSslPolicyTargetSslProxy( * .setTargetSslProxy(targetSslProxy.toString()) * .setSslPolicyReferenceResource(sslPolicyReferenceResource) * .build(); - * Operation response = targetSslProxyClient.setSslPolicyTargetSslProxy(request); + * targetSslProxyClient.setSslPolicyTargetSslProxyAsync(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 */ - @BetaApi - public final Operation setSslPolicyTargetSslProxy(SetSslPolicyTargetSslProxyHttpRequest request) { - return setSslPolicyTargetSslProxyCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setSslPolicyTargetSslProxyAsync( + SetSslPolicyTargetSslProxyHttpRequest request) { + return setSslPolicyTargetSslProxyOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Sets the SSL policy for TargetSslProxy. The SSL policy specifies the server-side support for + * SSL features. This affects connections between clients and the SSL proxy load balancer. They do + * not affect the connection between the load balancer and the backends. + * + *

Sample code: + * + *


+   * try (TargetSslProxyClient targetSslProxyClient = TargetSslProxyClient.create()) {
+   *   ProjectGlobalTargetSslProxyName targetSslProxy = ProjectGlobalTargetSslProxyName.of("[PROJECT]", "[TARGET_SSL_PROXY]");
+   *   SslPolicyReference sslPolicyReferenceResource = SslPolicyReference.newBuilder().build();
+   *   SetSslPolicyTargetSslProxyHttpRequest request = SetSslPolicyTargetSslProxyHttpRequest.newBuilder()
+   *     .setTargetSslProxy(targetSslProxy.toString())
+   *     .setSslPolicyReferenceResource(sslPolicyReferenceResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetSslProxyClient.setSslPolicyTargetSslProxyOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + setSslPolicyTargetSslProxyOperationCallable() { + return stub.setSslPolicyTargetSslProxyOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1076,7 +1274,7 @@ public final Operation setSslPolicyTargetSslProxy(SetSslPolicyTargetSslProxyHttp * .build(); * ApiFuture<Operation> future = targetSslProxyClient.setSslPolicyTargetSslProxyCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetSslProxySettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetSslProxySettings.java index 98a0974de251..e5fd090b3e5d 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetSslProxySettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetSslProxySettings.java @@ -21,10 +21,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -48,13 +50,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteTargetSslProxy to 30 seconds: + * example, to set the total timeout of getTargetSslProxy to 30 seconds: * *

  * 
  * TargetSslProxySettings.Builder targetSslProxySettingsBuilder =
  *     TargetSslProxySettings.newBuilder();
- * targetSslProxySettingsBuilder.deleteTargetSslProxySettings().getRetrySettings().toBuilder()
+ * targetSslProxySettingsBuilder.getTargetSslProxySettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * TargetSslProxySettings targetSslProxySettings = targetSslProxySettingsBuilder.build();
  * 
@@ -69,6 +71,14 @@ public class TargetSslProxySettings extends ClientSettings
+      deleteTargetSslProxyOperationSettings() {
+    return ((TargetSslProxyStubSettings) getStubSettings()).deleteTargetSslProxyOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getTargetSslProxy. */
   public UnaryCallSettings
       getTargetSslProxySettings() {
@@ -81,6 +91,14 @@ public class TargetSslProxySettings extends ClientSettings
+      insertTargetSslProxyOperationSettings() {
+    return ((TargetSslProxyStubSettings) getStubSettings()).insertTargetSslProxyOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listTargetSslProxies. */
   public PagedCallSettings<
           ListTargetSslProxiesHttpRequest, TargetSslProxyList, ListTargetSslProxiesPagedResponse>
@@ -95,12 +113,30 @@ public class TargetSslProxySettings extends ClientSettings
+      setBackendServiceTargetSslProxyOperationSettings() {
+    return ((TargetSslProxyStubSettings) getStubSettings())
+        .setBackendServiceTargetSslProxyOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to setProxyHeaderTargetSslProxy. */
   public UnaryCallSettings
       setProxyHeaderTargetSslProxySettings() {
     return ((TargetSslProxyStubSettings) getStubSettings()).setProxyHeaderTargetSslProxySettings();
   }
 
+  /** Returns the object with the settings used for calls to setProxyHeaderTargetSslProxy. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setProxyHeaderTargetSslProxyOperationSettings() {
+    return ((TargetSslProxyStubSettings) getStubSettings())
+        .setProxyHeaderTargetSslProxyOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to setSslCertificatesTargetSslProxy. */
   public UnaryCallSettings
       setSslCertificatesTargetSslProxySettings() {
@@ -108,12 +144,30 @@ public class TargetSslProxySettings extends ClientSettings
+      setSslCertificatesTargetSslProxyOperationSettings() {
+    return ((TargetSslProxyStubSettings) getStubSettings())
+        .setSslCertificatesTargetSslProxyOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to setSslPolicyTargetSslProxy. */
   public UnaryCallSettings
       setSslPolicyTargetSslProxySettings() {
     return ((TargetSslProxyStubSettings) getStubSettings()).setSslPolicyTargetSslProxySettings();
   }
 
+  /** Returns the object with the settings used for calls to setSslPolicyTargetSslProxy. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setSslPolicyTargetSslProxyOperationSettings() {
+    return ((TargetSslProxyStubSettings) getStubSettings())
+        .setSslPolicyTargetSslProxyOperationSettings();
+  }
+
   public static final TargetSslProxySettings create(TargetSslProxyStubSettings stub)
       throws IOException {
     return new TargetSslProxySettings.Builder(stub.toBuilder()).build();
@@ -222,6 +276,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteTargetSslProxySettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteTargetSslProxy. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteTargetSslProxyOperationSettings() {
+      return getStubSettingsBuilder().deleteTargetSslProxyOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getTargetSslProxy. */
     public UnaryCallSettings.Builder
         getTargetSslProxySettings() {
@@ -234,6 +296,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().insertTargetSslProxySettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertTargetSslProxy. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertTargetSslProxyOperationSettings() {
+      return getStubSettingsBuilder().insertTargetSslProxyOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listTargetSslProxies. */
     public PagedCallSettings.Builder<
             ListTargetSslProxiesHttpRequest, TargetSslProxyList, ListTargetSslProxiesPagedResponse>
@@ -247,24 +317,60 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().setBackendServiceTargetSslProxySettings();
     }
 
+    /** Returns the builder for the settings used for calls to setBackendServiceTargetSslProxy. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetBackendServiceTargetSslProxyHttpRequest, EmptyMessage, Operation>
+        setBackendServiceTargetSslProxyOperationSettings() {
+      return getStubSettingsBuilder().setBackendServiceTargetSslProxyOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to setProxyHeaderTargetSslProxy. */
     public UnaryCallSettings.Builder
         setProxyHeaderTargetSslProxySettings() {
       return getStubSettingsBuilder().setProxyHeaderTargetSslProxySettings();
     }
 
+    /** Returns the builder for the settings used for calls to setProxyHeaderTargetSslProxy. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetProxyHeaderTargetSslProxyHttpRequest, EmptyMessage, Operation>
+        setProxyHeaderTargetSslProxyOperationSettings() {
+      return getStubSettingsBuilder().setProxyHeaderTargetSslProxyOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to setSslCertificatesTargetSslProxy. */
     public UnaryCallSettings.Builder
         setSslCertificatesTargetSslProxySettings() {
       return getStubSettingsBuilder().setSslCertificatesTargetSslProxySettings();
     }
 
+    /** Returns the builder for the settings used for calls to setSslCertificatesTargetSslProxy. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetSslCertificatesTargetSslProxyHttpRequest, EmptyMessage, Operation>
+        setSslCertificatesTargetSslProxyOperationSettings() {
+      return getStubSettingsBuilder().setSslCertificatesTargetSslProxyOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to setSslPolicyTargetSslProxy. */
     public UnaryCallSettings.Builder
         setSslPolicyTargetSslProxySettings() {
       return getStubSettingsBuilder().setSslPolicyTargetSslProxySettings();
     }
 
+    /** Returns the builder for the settings used for calls to setSslPolicyTargetSslProxy. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetSslPolicyTargetSslProxyHttpRequest, EmptyMessage, Operation>
+        setSslPolicyTargetSslProxyOperationSettings() {
+      return getStubSettingsBuilder().setSslPolicyTargetSslProxyOperationSettings();
+    }
+
     @Override
     public TargetSslProxySettings build() throws IOException {
       return new TargetSslProxySettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetTcpProxyClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetTcpProxyClient.java
index 0fbcd7c51685..b86ad9412fce 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetTcpProxyClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetTcpProxyClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.TargetTcpProxyStub;
@@ -43,7 +46,7 @@
  * 
  * try (TargetTcpProxyClient targetTcpProxyClient = TargetTcpProxyClient.create()) {
  *   ProjectGlobalTargetTcpProxyName targetTcpProxy = ProjectGlobalTargetTcpProxyName.of("[PROJECT]", "[TARGET_TCP_PROXY]");
- *   Operation response = targetTcpProxyClient.deleteTargetTcpProxy(targetTcpProxy);
+ *   TargetTcpProxy response = targetTcpProxyClient.getTargetTcpProxy(targetTcpProxy);
  * }
  * 
  * 
@@ -103,6 +106,7 @@ public class TargetTcpProxyClient implements BackgroundResource { private final TargetTcpProxySettings settings; private final TargetTcpProxyStub stub; + private final GlobalOperationClient operationsClient; /** Constructs an instance of TargetTcpProxyClient with default settings. */ public static final TargetTcpProxyClient create() throws IOException { @@ -135,12 +139,14 @@ public static final TargetTcpProxyClient create(TargetTcpProxyStub stub) { protected TargetTcpProxyClient(TargetTcpProxySettings settings) throws IOException { this.settings = settings; this.stub = ((TargetTcpProxyStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected TargetTcpProxyClient(TargetTcpProxyStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } public final TargetTcpProxySettings getSettings() { @@ -152,6 +158,16 @@ public TargetTcpProxyStub getStub() { return stub; } + /** + * Returns the GlobalOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final GlobalOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Deletes the specified TargetTcpProxy resource. @@ -161,21 +177,23 @@ public TargetTcpProxyStub getStub() { *

    * try (TargetTcpProxyClient targetTcpProxyClient = TargetTcpProxyClient.create()) {
    *   ProjectGlobalTargetTcpProxyName targetTcpProxy = ProjectGlobalTargetTcpProxyName.of("[PROJECT]", "[TARGET_TCP_PROXY]");
-   *   Operation response = targetTcpProxyClient.deleteTargetTcpProxy(targetTcpProxy);
+   *   targetTcpProxyClient.deleteTargetTcpProxyAsync(targetTcpProxy).get();
    * }
    * 
* * @param targetTcpProxy Name of the TargetTcpProxy resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteTargetTcpProxy(ProjectGlobalTargetTcpProxyName targetTcpProxy) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteTargetTcpProxyAsync( + ProjectGlobalTargetTcpProxyName targetTcpProxy) { DeleteTargetTcpProxyHttpRequest request = DeleteTargetTcpProxyHttpRequest.newBuilder() .setTargetTcpProxy(targetTcpProxy == null ? null : targetTcpProxy.toString()) .build(); - return deleteTargetTcpProxy(request); + return deleteTargetTcpProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -187,19 +205,21 @@ public final Operation deleteTargetTcpProxy(ProjectGlobalTargetTcpProxyName targ *

    * try (TargetTcpProxyClient targetTcpProxyClient = TargetTcpProxyClient.create()) {
    *   ProjectGlobalTargetTcpProxyName targetTcpProxy = ProjectGlobalTargetTcpProxyName.of("[PROJECT]", "[TARGET_TCP_PROXY]");
-   *   Operation response = targetTcpProxyClient.deleteTargetTcpProxy(targetTcpProxy.toString());
+   *   targetTcpProxyClient.deleteTargetTcpProxyAsync(targetTcpProxy.toString()).get();
    * }
    * 
* * @param targetTcpProxy Name of the TargetTcpProxy resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteTargetTcpProxy(String targetTcpProxy) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteTargetTcpProxyAsync( + String targetTcpProxy) { DeleteTargetTcpProxyHttpRequest request = DeleteTargetTcpProxyHttpRequest.newBuilder().setTargetTcpProxy(targetTcpProxy).build(); - return deleteTargetTcpProxy(request); + return deleteTargetTcpProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -214,16 +234,42 @@ public final Operation deleteTargetTcpProxy(String targetTcpProxy) { * DeleteTargetTcpProxyHttpRequest request = DeleteTargetTcpProxyHttpRequest.newBuilder() * .setTargetTcpProxy(targetTcpProxy.toString()) * .build(); - * Operation response = targetTcpProxyClient.deleteTargetTcpProxy(request); + * targetTcpProxyClient.deleteTargetTcpProxyAsync(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 */ - @BetaApi - public final Operation deleteTargetTcpProxy(DeleteTargetTcpProxyHttpRequest request) { - return deleteTargetTcpProxyCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteTargetTcpProxyAsync( + DeleteTargetTcpProxyHttpRequest request) { + return deleteTargetTcpProxyOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified TargetTcpProxy resource. + * + *

Sample code: + * + *


+   * try (TargetTcpProxyClient targetTcpProxyClient = TargetTcpProxyClient.create()) {
+   *   ProjectGlobalTargetTcpProxyName targetTcpProxy = ProjectGlobalTargetTcpProxyName.of("[PROJECT]", "[TARGET_TCP_PROXY]");
+   *   DeleteTargetTcpProxyHttpRequest request = DeleteTargetTcpProxyHttpRequest.newBuilder()
+   *     .setTargetTcpProxy(targetTcpProxy.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetTcpProxyClient.deleteTargetTcpProxyOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteTargetTcpProxyOperationCallable() { + return stub.deleteTargetTcpProxyOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -240,7 +286,7 @@ public final Operation deleteTargetTcpProxy(DeleteTargetTcpProxyHttpRequest requ * .build(); * ApiFuture<Operation> future = targetTcpProxyClient.deleteTargetTcpProxyCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -363,7 +409,7 @@ public final TargetTcpProxy getTargetTcpProxy(GetTargetTcpProxyHttpRequest reque * try (TargetTcpProxyClient targetTcpProxyClient = TargetTcpProxyClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * TargetTcpProxy targetTcpProxyResource = TargetTcpProxy.newBuilder().build(); - * Operation response = targetTcpProxyClient.insertTargetTcpProxy(project, targetTcpProxyResource); + * targetTcpProxyClient.insertTargetTcpProxyAsync(project, targetTcpProxyResource).get(); * } * * @@ -372,8 +418,9 @@ public final TargetTcpProxy getTargetTcpProxy(GetTargetTcpProxyHttpRequest reque * resource_for beta.targetTcpProxies ==) (== resource_for v1.targetTcpProxies ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertTargetTcpProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertTargetTcpProxyAsync( ProjectName project, TargetTcpProxy targetTcpProxyResource) { InsertTargetTcpProxyHttpRequest request = @@ -381,7 +428,7 @@ public final Operation insertTargetTcpProxy( .setProject(project == null ? null : project.toString()) .setTargetTcpProxyResource(targetTcpProxyResource) .build(); - return insertTargetTcpProxy(request); + return insertTargetTcpProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -395,7 +442,7 @@ public final Operation insertTargetTcpProxy( * try (TargetTcpProxyClient targetTcpProxyClient = TargetTcpProxyClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * TargetTcpProxy targetTcpProxyResource = TargetTcpProxy.newBuilder().build(); - * Operation response = targetTcpProxyClient.insertTargetTcpProxy(project.toString(), targetTcpProxyResource); + * targetTcpProxyClient.insertTargetTcpProxyAsync(project.toString(), targetTcpProxyResource).get(); * } * * @@ -404,8 +451,9 @@ public final Operation insertTargetTcpProxy( * resource_for beta.targetTcpProxies ==) (== resource_for v1.targetTcpProxies ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertTargetTcpProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertTargetTcpProxyAsync( String project, TargetTcpProxy targetTcpProxyResource) { InsertTargetTcpProxyHttpRequest request = @@ -413,7 +461,7 @@ public final Operation insertTargetTcpProxy( .setProject(project) .setTargetTcpProxyResource(targetTcpProxyResource) .build(); - return insertTargetTcpProxy(request); + return insertTargetTcpProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -431,16 +479,45 @@ public final Operation insertTargetTcpProxy( * .setProject(project.toString()) * .setTargetTcpProxyResource(targetTcpProxyResource) * .build(); - * Operation response = targetTcpProxyClient.insertTargetTcpProxy(request); + * targetTcpProxyClient.insertTargetTcpProxyAsync(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 */ - @BetaApi - public final Operation insertTargetTcpProxy(InsertTargetTcpProxyHttpRequest request) { - return insertTargetTcpProxyCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertTargetTcpProxyAsync( + InsertTargetTcpProxyHttpRequest request) { + return insertTargetTcpProxyOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a TargetTcpProxy resource in the specified project using the data included in the + * request. + * + *

Sample code: + * + *


+   * try (TargetTcpProxyClient targetTcpProxyClient = TargetTcpProxyClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   TargetTcpProxy targetTcpProxyResource = TargetTcpProxy.newBuilder().build();
+   *   InsertTargetTcpProxyHttpRequest request = InsertTargetTcpProxyHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .setTargetTcpProxyResource(targetTcpProxyResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetTcpProxyClient.insertTargetTcpProxyOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertTargetTcpProxyOperationCallable() { + return stub.insertTargetTcpProxyOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -460,7 +537,7 @@ public final Operation insertTargetTcpProxy(InsertTargetTcpProxyHttpRequest requ * .build(); * ApiFuture<Operation> future = targetTcpProxyClient.insertTargetTcpProxyCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -618,7 +695,7 @@ public final ListTargetTcpProxiesPagedResponse listTargetTcpProxies( * try (TargetTcpProxyClient targetTcpProxyClient = TargetTcpProxyClient.create()) { * ProjectGlobalTargetTcpProxyName targetTcpProxy = ProjectGlobalTargetTcpProxyName.of("[PROJECT]", "[TARGET_TCP_PROXY]"); * TargetTcpProxiesSetBackendServiceRequest targetTcpProxiesSetBackendServiceRequestResource = TargetTcpProxiesSetBackendServiceRequest.newBuilder().build(); - * Operation response = targetTcpProxyClient.setBackendServiceTargetTcpProxy(targetTcpProxy, targetTcpProxiesSetBackendServiceRequestResource); + * targetTcpProxyClient.setBackendServiceTargetTcpProxyAsync(targetTcpProxy, targetTcpProxiesSetBackendServiceRequestResource).get(); * } * * @@ -627,8 +704,9 @@ public final ListTargetTcpProxiesPagedResponse listTargetTcpProxies( * @param targetTcpProxiesSetBackendServiceRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setBackendServiceTargetTcpProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setBackendServiceTargetTcpProxyAsync( ProjectGlobalTargetTcpProxyName targetTcpProxy, TargetTcpProxiesSetBackendServiceRequest targetTcpProxiesSetBackendServiceRequestResource) { @@ -638,7 +716,7 @@ public final Operation setBackendServiceTargetTcpProxy( .setTargetTcpProxiesSetBackendServiceRequestResource( targetTcpProxiesSetBackendServiceRequestResource) .build(); - return setBackendServiceTargetTcpProxy(request); + return setBackendServiceTargetTcpProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -651,7 +729,7 @@ public final Operation setBackendServiceTargetTcpProxy( * try (TargetTcpProxyClient targetTcpProxyClient = TargetTcpProxyClient.create()) { * ProjectGlobalTargetTcpProxyName targetTcpProxy = ProjectGlobalTargetTcpProxyName.of("[PROJECT]", "[TARGET_TCP_PROXY]"); * TargetTcpProxiesSetBackendServiceRequest targetTcpProxiesSetBackendServiceRequestResource = TargetTcpProxiesSetBackendServiceRequest.newBuilder().build(); - * Operation response = targetTcpProxyClient.setBackendServiceTargetTcpProxy(targetTcpProxy.toString(), targetTcpProxiesSetBackendServiceRequestResource); + * targetTcpProxyClient.setBackendServiceTargetTcpProxyAsync(targetTcpProxy.toString(), targetTcpProxiesSetBackendServiceRequestResource).get(); * } * * @@ -660,8 +738,9 @@ public final Operation setBackendServiceTargetTcpProxy( * @param targetTcpProxiesSetBackendServiceRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setBackendServiceTargetTcpProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setBackendServiceTargetTcpProxyAsync( String targetTcpProxy, TargetTcpProxiesSetBackendServiceRequest targetTcpProxiesSetBackendServiceRequestResource) { @@ -671,7 +750,7 @@ public final Operation setBackendServiceTargetTcpProxy( .setTargetTcpProxiesSetBackendServiceRequestResource( targetTcpProxiesSetBackendServiceRequestResource) .build(); - return setBackendServiceTargetTcpProxy(request); + return setBackendServiceTargetTcpProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -688,17 +767,45 @@ public final Operation setBackendServiceTargetTcpProxy( * .setTargetTcpProxy(targetTcpProxy.toString()) * .setTargetTcpProxiesSetBackendServiceRequestResource(targetTcpProxiesSetBackendServiceRequestResource) * .build(); - * Operation response = targetTcpProxyClient.setBackendServiceTargetTcpProxy(request); + * targetTcpProxyClient.setBackendServiceTargetTcpProxyAsync(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 */ - @BetaApi - public final Operation setBackendServiceTargetTcpProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setBackendServiceTargetTcpProxyAsync( SetBackendServiceTargetTcpProxyHttpRequest request) { - return setBackendServiceTargetTcpProxyCallable().call(request); + return setBackendServiceTargetTcpProxyOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Changes the BackendService for TargetTcpProxy. + * + *

Sample code: + * + *


+   * try (TargetTcpProxyClient targetTcpProxyClient = TargetTcpProxyClient.create()) {
+   *   ProjectGlobalTargetTcpProxyName targetTcpProxy = ProjectGlobalTargetTcpProxyName.of("[PROJECT]", "[TARGET_TCP_PROXY]");
+   *   TargetTcpProxiesSetBackendServiceRequest targetTcpProxiesSetBackendServiceRequestResource = TargetTcpProxiesSetBackendServiceRequest.newBuilder().build();
+   *   SetBackendServiceTargetTcpProxyHttpRequest request = SetBackendServiceTargetTcpProxyHttpRequest.newBuilder()
+   *     .setTargetTcpProxy(targetTcpProxy.toString())
+   *     .setTargetTcpProxiesSetBackendServiceRequestResource(targetTcpProxiesSetBackendServiceRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetTcpProxyClient.setBackendServiceTargetTcpProxyOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable< + SetBackendServiceTargetTcpProxyHttpRequest, EmptyMessage, Operation> + setBackendServiceTargetTcpProxyOperationCallable() { + return stub.setBackendServiceTargetTcpProxyOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -717,7 +824,7 @@ public final Operation setBackendServiceTargetTcpProxy( * .build(); * ApiFuture<Operation> future = targetTcpProxyClient.setBackendServiceTargetTcpProxyCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -737,7 +844,7 @@ public final Operation setBackendServiceTargetTcpProxy( * try (TargetTcpProxyClient targetTcpProxyClient = TargetTcpProxyClient.create()) { * ProjectGlobalTargetTcpProxyName targetTcpProxy = ProjectGlobalTargetTcpProxyName.of("[PROJECT]", "[TARGET_TCP_PROXY]"); * TargetTcpProxiesSetProxyHeaderRequest targetTcpProxiesSetProxyHeaderRequestResource = TargetTcpProxiesSetProxyHeaderRequest.newBuilder().build(); - * Operation response = targetTcpProxyClient.setProxyHeaderTargetTcpProxy(targetTcpProxy, targetTcpProxiesSetProxyHeaderRequestResource); + * targetTcpProxyClient.setProxyHeaderTargetTcpProxyAsync(targetTcpProxy, targetTcpProxiesSetProxyHeaderRequestResource).get(); * } * * @@ -745,8 +852,9 @@ public final Operation setBackendServiceTargetTcpProxy( * @param targetTcpProxiesSetProxyHeaderRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setProxyHeaderTargetTcpProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setProxyHeaderTargetTcpProxyAsync( ProjectGlobalTargetTcpProxyName targetTcpProxy, TargetTcpProxiesSetProxyHeaderRequest targetTcpProxiesSetProxyHeaderRequestResource) { @@ -756,7 +864,7 @@ public final Operation setProxyHeaderTargetTcpProxy( .setTargetTcpProxiesSetProxyHeaderRequestResource( targetTcpProxiesSetProxyHeaderRequestResource) .build(); - return setProxyHeaderTargetTcpProxy(request); + return setProxyHeaderTargetTcpProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -769,7 +877,7 @@ public final Operation setProxyHeaderTargetTcpProxy( * try (TargetTcpProxyClient targetTcpProxyClient = TargetTcpProxyClient.create()) { * ProjectGlobalTargetTcpProxyName targetTcpProxy = ProjectGlobalTargetTcpProxyName.of("[PROJECT]", "[TARGET_TCP_PROXY]"); * TargetTcpProxiesSetProxyHeaderRequest targetTcpProxiesSetProxyHeaderRequestResource = TargetTcpProxiesSetProxyHeaderRequest.newBuilder().build(); - * Operation response = targetTcpProxyClient.setProxyHeaderTargetTcpProxy(targetTcpProxy.toString(), targetTcpProxiesSetProxyHeaderRequestResource); + * targetTcpProxyClient.setProxyHeaderTargetTcpProxyAsync(targetTcpProxy.toString(), targetTcpProxiesSetProxyHeaderRequestResource).get(); * } * * @@ -777,8 +885,9 @@ public final Operation setProxyHeaderTargetTcpProxy( * @param targetTcpProxiesSetProxyHeaderRequestResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation setProxyHeaderTargetTcpProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setProxyHeaderTargetTcpProxyAsync( String targetTcpProxy, TargetTcpProxiesSetProxyHeaderRequest targetTcpProxiesSetProxyHeaderRequestResource) { @@ -788,7 +897,7 @@ public final Operation setProxyHeaderTargetTcpProxy( .setTargetTcpProxiesSetProxyHeaderRequestResource( targetTcpProxiesSetProxyHeaderRequestResource) .build(); - return setProxyHeaderTargetTcpProxy(request); + return setProxyHeaderTargetTcpProxyAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -805,17 +914,44 @@ public final Operation setProxyHeaderTargetTcpProxy( * .setTargetTcpProxy(targetTcpProxy.toString()) * .setTargetTcpProxiesSetProxyHeaderRequestResource(targetTcpProxiesSetProxyHeaderRequestResource) * .build(); - * Operation response = targetTcpProxyClient.setProxyHeaderTargetTcpProxy(request); + * targetTcpProxyClient.setProxyHeaderTargetTcpProxyAsync(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 */ - @BetaApi - public final Operation setProxyHeaderTargetTcpProxy( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture setProxyHeaderTargetTcpProxyAsync( SetProxyHeaderTargetTcpProxyHttpRequest request) { - return setProxyHeaderTargetTcpProxyCallable().call(request); + return setProxyHeaderTargetTcpProxyOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Changes the ProxyHeaderType for TargetTcpProxy. + * + *

Sample code: + * + *


+   * try (TargetTcpProxyClient targetTcpProxyClient = TargetTcpProxyClient.create()) {
+   *   ProjectGlobalTargetTcpProxyName targetTcpProxy = ProjectGlobalTargetTcpProxyName.of("[PROJECT]", "[TARGET_TCP_PROXY]");
+   *   TargetTcpProxiesSetProxyHeaderRequest targetTcpProxiesSetProxyHeaderRequestResource = TargetTcpProxiesSetProxyHeaderRequest.newBuilder().build();
+   *   SetProxyHeaderTargetTcpProxyHttpRequest request = SetProxyHeaderTargetTcpProxyHttpRequest.newBuilder()
+   *     .setTargetTcpProxy(targetTcpProxy.toString())
+   *     .setTargetTcpProxiesSetProxyHeaderRequestResource(targetTcpProxiesSetProxyHeaderRequestResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetTcpProxyClient.setProxyHeaderTargetTcpProxyOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + setProxyHeaderTargetTcpProxyOperationCallable() { + return stub.setProxyHeaderTargetTcpProxyOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -834,7 +970,7 @@ public final Operation setProxyHeaderTargetTcpProxy( * .build(); * ApiFuture<Operation> future = targetTcpProxyClient.setProxyHeaderTargetTcpProxyCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetTcpProxySettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetTcpProxySettings.java index dbd3807b8b27..db203f6df2b3 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetTcpProxySettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetTcpProxySettings.java @@ -21,10 +21,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -48,13 +50,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteTargetTcpProxy to 30 seconds: + * example, to set the total timeout of getTargetTcpProxy to 30 seconds: * *

  * 
  * TargetTcpProxySettings.Builder targetTcpProxySettingsBuilder =
  *     TargetTcpProxySettings.newBuilder();
- * targetTcpProxySettingsBuilder.deleteTargetTcpProxySettings().getRetrySettings().toBuilder()
+ * targetTcpProxySettingsBuilder.getTargetTcpProxySettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * TargetTcpProxySettings targetTcpProxySettings = targetTcpProxySettingsBuilder.build();
  * 
@@ -69,6 +71,14 @@ public class TargetTcpProxySettings extends ClientSettings
+      deleteTargetTcpProxyOperationSettings() {
+    return ((TargetTcpProxyStubSettings) getStubSettings()).deleteTargetTcpProxyOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getTargetTcpProxy. */
   public UnaryCallSettings
       getTargetTcpProxySettings() {
@@ -81,6 +91,14 @@ public class TargetTcpProxySettings extends ClientSettings
+      insertTargetTcpProxyOperationSettings() {
+    return ((TargetTcpProxyStubSettings) getStubSettings()).insertTargetTcpProxyOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listTargetTcpProxies. */
   public PagedCallSettings<
           ListTargetTcpProxiesHttpRequest, TargetTcpProxyList, ListTargetTcpProxiesPagedResponse>
@@ -95,12 +113,30 @@ public class TargetTcpProxySettings extends ClientSettings
+      setBackendServiceTargetTcpProxyOperationSettings() {
+    return ((TargetTcpProxyStubSettings) getStubSettings())
+        .setBackendServiceTargetTcpProxyOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to setProxyHeaderTargetTcpProxy. */
   public UnaryCallSettings
       setProxyHeaderTargetTcpProxySettings() {
     return ((TargetTcpProxyStubSettings) getStubSettings()).setProxyHeaderTargetTcpProxySettings();
   }
 
+  /** Returns the object with the settings used for calls to setProxyHeaderTargetTcpProxy. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setProxyHeaderTargetTcpProxyOperationSettings() {
+    return ((TargetTcpProxyStubSettings) getStubSettings())
+        .setProxyHeaderTargetTcpProxyOperationSettings();
+  }
+
   public static final TargetTcpProxySettings create(TargetTcpProxyStubSettings stub)
       throws IOException {
     return new TargetTcpProxySettings.Builder(stub.toBuilder()).build();
@@ -209,6 +245,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteTargetTcpProxySettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteTargetTcpProxy. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteTargetTcpProxyOperationSettings() {
+      return getStubSettingsBuilder().deleteTargetTcpProxyOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getTargetTcpProxy. */
     public UnaryCallSettings.Builder
         getTargetTcpProxySettings() {
@@ -221,6 +265,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().insertTargetTcpProxySettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertTargetTcpProxy. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertTargetTcpProxyOperationSettings() {
+      return getStubSettingsBuilder().insertTargetTcpProxyOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listTargetTcpProxies. */
     public PagedCallSettings.Builder<
             ListTargetTcpProxiesHttpRequest, TargetTcpProxyList, ListTargetTcpProxiesPagedResponse>
@@ -234,12 +286,30 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().setBackendServiceTargetTcpProxySettings();
     }
 
+    /** Returns the builder for the settings used for calls to setBackendServiceTargetTcpProxy. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetBackendServiceTargetTcpProxyHttpRequest, EmptyMessage, Operation>
+        setBackendServiceTargetTcpProxyOperationSettings() {
+      return getStubSettingsBuilder().setBackendServiceTargetTcpProxyOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to setProxyHeaderTargetTcpProxy. */
     public UnaryCallSettings.Builder
         setProxyHeaderTargetTcpProxySettings() {
       return getStubSettingsBuilder().setProxyHeaderTargetTcpProxySettings();
     }
 
+    /** Returns the builder for the settings used for calls to setProxyHeaderTargetTcpProxy. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetProxyHeaderTargetTcpProxyHttpRequest, EmptyMessage, Operation>
+        setProxyHeaderTargetTcpProxyOperationSettings() {
+      return getStubSettingsBuilder().setProxyHeaderTargetTcpProxyOperationSettings();
+    }
+
     @Override
     public TargetTcpProxySettings build() throws IOException {
       return new TargetTcpProxySettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetVpnGatewayClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetVpnGatewayClient.java
index 745be670bcfd..59f5588ed36e 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetVpnGatewayClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetVpnGatewayClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.TargetVpnGatewayStub;
@@ -43,7 +46,7 @@
  * 
  * try (TargetVpnGatewayClient targetVpnGatewayClient = TargetVpnGatewayClient.create()) {
  *   ProjectRegionTargetVpnGatewayName targetVpnGateway = ProjectRegionTargetVpnGatewayName.of("[PROJECT]", "[REGION]", "[TARGET_VPN_GATEWAY]");
- *   Operation response = targetVpnGatewayClient.deleteTargetVpnGateway(targetVpnGateway);
+ *   TargetVpnGateway response = targetVpnGatewayClient.getTargetVpnGateway(targetVpnGateway);
  * }
  * 
  * 
@@ -104,6 +107,7 @@ public class TargetVpnGatewayClient implements BackgroundResource { private final TargetVpnGatewaySettings settings; private final TargetVpnGatewayStub stub; + private final RegionOperationClient operationsClient; /** Constructs an instance of TargetVpnGatewayClient with default settings. */ public static final TargetVpnGatewayClient create() throws IOException { @@ -136,12 +140,14 @@ public static final TargetVpnGatewayClient create(TargetVpnGatewayStub stub) { protected TargetVpnGatewayClient(TargetVpnGatewaySettings settings) throws IOException { this.settings = settings; this.stub = ((TargetVpnGatewayStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected TargetVpnGatewayClient(TargetVpnGatewayStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub()); } public final TargetVpnGatewaySettings getSettings() { @@ -153,6 +159,16 @@ public TargetVpnGatewayStub getStub() { return stub; } + /** + * Returns the RegionOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final RegionOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Retrieves an aggregated list of target VPN gateways. @@ -304,22 +320,23 @@ public final AggregatedListTargetVpnGatewaysPagedResponse aggregatedListTargetVp *

    * try (TargetVpnGatewayClient targetVpnGatewayClient = TargetVpnGatewayClient.create()) {
    *   ProjectRegionTargetVpnGatewayName targetVpnGateway = ProjectRegionTargetVpnGatewayName.of("[PROJECT]", "[REGION]", "[TARGET_VPN_GATEWAY]");
-   *   Operation response = targetVpnGatewayClient.deleteTargetVpnGateway(targetVpnGateway);
+   *   targetVpnGatewayClient.deleteTargetVpnGatewayAsync(targetVpnGateway).get();
    * }
    * 
* * @param targetVpnGateway Name of the target VPN gateway to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteTargetVpnGateway( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteTargetVpnGatewayAsync( ProjectRegionTargetVpnGatewayName targetVpnGateway) { DeleteTargetVpnGatewayHttpRequest request = DeleteTargetVpnGatewayHttpRequest.newBuilder() .setTargetVpnGateway(targetVpnGateway == null ? null : targetVpnGateway.toString()) .build(); - return deleteTargetVpnGateway(request); + return deleteTargetVpnGatewayAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -331,21 +348,23 @@ public final Operation deleteTargetVpnGateway( *

    * try (TargetVpnGatewayClient targetVpnGatewayClient = TargetVpnGatewayClient.create()) {
    *   ProjectRegionTargetVpnGatewayName targetVpnGateway = ProjectRegionTargetVpnGatewayName.of("[PROJECT]", "[REGION]", "[TARGET_VPN_GATEWAY]");
-   *   Operation response = targetVpnGatewayClient.deleteTargetVpnGateway(targetVpnGateway.toString());
+   *   targetVpnGatewayClient.deleteTargetVpnGatewayAsync(targetVpnGateway.toString()).get();
    * }
    * 
* * @param targetVpnGateway Name of the target VPN gateway to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteTargetVpnGateway(String targetVpnGateway) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteTargetVpnGatewayAsync( + String targetVpnGateway) { DeleteTargetVpnGatewayHttpRequest request = DeleteTargetVpnGatewayHttpRequest.newBuilder() .setTargetVpnGateway(targetVpnGateway) .build(); - return deleteTargetVpnGateway(request); + return deleteTargetVpnGatewayAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -360,16 +379,42 @@ public final Operation deleteTargetVpnGateway(String targetVpnGateway) { * DeleteTargetVpnGatewayHttpRequest request = DeleteTargetVpnGatewayHttpRequest.newBuilder() * .setTargetVpnGateway(targetVpnGateway.toString()) * .build(); - * Operation response = targetVpnGatewayClient.deleteTargetVpnGateway(request); + * targetVpnGatewayClient.deleteTargetVpnGatewayAsync(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 */ - @BetaApi - public final Operation deleteTargetVpnGateway(DeleteTargetVpnGatewayHttpRequest request) { - return deleteTargetVpnGatewayCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteTargetVpnGatewayAsync( + DeleteTargetVpnGatewayHttpRequest request) { + return deleteTargetVpnGatewayOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified target VPN gateway. + * + *

Sample code: + * + *


+   * try (TargetVpnGatewayClient targetVpnGatewayClient = TargetVpnGatewayClient.create()) {
+   *   ProjectRegionTargetVpnGatewayName targetVpnGateway = ProjectRegionTargetVpnGatewayName.of("[PROJECT]", "[REGION]", "[TARGET_VPN_GATEWAY]");
+   *   DeleteTargetVpnGatewayHttpRequest request = DeleteTargetVpnGatewayHttpRequest.newBuilder()
+   *     .setTargetVpnGateway(targetVpnGateway.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetVpnGatewayClient.deleteTargetVpnGatewayOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteTargetVpnGatewayOperationCallable() { + return stub.deleteTargetVpnGatewayOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -386,7 +431,7 @@ public final Operation deleteTargetVpnGateway(DeleteTargetVpnGatewayHttpRequest * .build(); * ApiFuture<Operation> future = targetVpnGatewayClient.deleteTargetVpnGatewayCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -510,7 +555,7 @@ public final TargetVpnGateway getTargetVpnGateway(GetTargetVpnGatewayHttpRequest * try (TargetVpnGatewayClient targetVpnGatewayClient = TargetVpnGatewayClient.create()) { * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * TargetVpnGateway targetVpnGatewayResource = TargetVpnGateway.newBuilder().build(); - * Operation response = targetVpnGatewayClient.insertTargetVpnGateway(region, targetVpnGatewayResource); + * targetVpnGatewayClient.insertTargetVpnGatewayAsync(region, targetVpnGatewayResource).get(); * } * * @@ -519,8 +564,9 @@ public final TargetVpnGateway getTargetVpnGateway(GetTargetVpnGatewayHttpRequest * beta.targetVpnGateways ==) (== resource_for v1.targetVpnGateways ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertTargetVpnGateway( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertTargetVpnGatewayAsync( ProjectRegionName region, TargetVpnGateway targetVpnGatewayResource) { InsertTargetVpnGatewayHttpRequest request = @@ -528,7 +574,7 @@ public final Operation insertTargetVpnGateway( .setRegion(region == null ? null : region.toString()) .setTargetVpnGatewayResource(targetVpnGatewayResource) .build(); - return insertTargetVpnGateway(request); + return insertTargetVpnGatewayAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -542,7 +588,7 @@ public final Operation insertTargetVpnGateway( * try (TargetVpnGatewayClient targetVpnGatewayClient = TargetVpnGatewayClient.create()) { * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * TargetVpnGateway targetVpnGatewayResource = TargetVpnGateway.newBuilder().build(); - * Operation response = targetVpnGatewayClient.insertTargetVpnGateway(region.toString(), targetVpnGatewayResource); + * targetVpnGatewayClient.insertTargetVpnGatewayAsync(region.toString(), targetVpnGatewayResource).get(); * } * * @@ -551,8 +597,9 @@ public final Operation insertTargetVpnGateway( * beta.targetVpnGateways ==) (== resource_for v1.targetVpnGateways ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertTargetVpnGateway( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertTargetVpnGatewayAsync( String region, TargetVpnGateway targetVpnGatewayResource) { InsertTargetVpnGatewayHttpRequest request = @@ -560,7 +607,7 @@ public final Operation insertTargetVpnGateway( .setRegion(region) .setTargetVpnGatewayResource(targetVpnGatewayResource) .build(); - return insertTargetVpnGateway(request); + return insertTargetVpnGatewayAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -578,16 +625,45 @@ public final Operation insertTargetVpnGateway( * .setRegion(region.toString()) * .setTargetVpnGatewayResource(targetVpnGatewayResource) * .build(); - * Operation response = targetVpnGatewayClient.insertTargetVpnGateway(request); + * targetVpnGatewayClient.insertTargetVpnGatewayAsync(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 */ - @BetaApi - public final Operation insertTargetVpnGateway(InsertTargetVpnGatewayHttpRequest request) { - return insertTargetVpnGatewayCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertTargetVpnGatewayAsync( + InsertTargetVpnGatewayHttpRequest request) { + return insertTargetVpnGatewayOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a target VPN gateway in the specified project and region using the data included in the + * request. + * + *

Sample code: + * + *


+   * try (TargetVpnGatewayClient targetVpnGatewayClient = TargetVpnGatewayClient.create()) {
+   *   ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
+   *   TargetVpnGateway targetVpnGatewayResource = TargetVpnGateway.newBuilder().build();
+   *   InsertTargetVpnGatewayHttpRequest request = InsertTargetVpnGatewayHttpRequest.newBuilder()
+   *     .setRegion(region.toString())
+   *     .setTargetVpnGatewayResource(targetVpnGatewayResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = targetVpnGatewayClient.insertTargetVpnGatewayOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertTargetVpnGatewayOperationCallable() { + return stub.insertTargetVpnGatewayOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -607,7 +683,7 @@ public final Operation insertTargetVpnGateway(InsertTargetVpnGatewayHttpRequest * .build(); * ApiFuture<Operation> future = targetVpnGatewayClient.insertTargetVpnGatewayCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetVpnGatewaySettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetVpnGatewaySettings.java index f887b42a8e62..cc29f85e0c2d 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetVpnGatewaySettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/TargetVpnGatewaySettings.java @@ -22,10 +22,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -49,13 +51,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteTargetVpnGateway to 30 seconds: + * example, to set the total timeout of getTargetVpnGateway to 30 seconds: * *

  * 
  * TargetVpnGatewaySettings.Builder targetVpnGatewaySettingsBuilder =
  *     TargetVpnGatewaySettings.newBuilder();
- * targetVpnGatewaySettingsBuilder.deleteTargetVpnGatewaySettings().getRetrySettings().toBuilder()
+ * targetVpnGatewaySettingsBuilder.getTargetVpnGatewaySettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * TargetVpnGatewaySettings targetVpnGatewaySettings = targetVpnGatewaySettingsBuilder.build();
  * 
@@ -80,6 +82,15 @@ public class TargetVpnGatewaySettings extends ClientSettings
+      deleteTargetVpnGatewayOperationSettings() {
+    return ((TargetVpnGatewayStubSettings) getStubSettings())
+        .deleteTargetVpnGatewayOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getTargetVpnGateway. */
   public UnaryCallSettings
       getTargetVpnGatewaySettings() {
@@ -92,6 +103,15 @@ public class TargetVpnGatewaySettings extends ClientSettings
+      insertTargetVpnGatewayOperationSettings() {
+    return ((TargetVpnGatewayStubSettings) getStubSettings())
+        .insertTargetVpnGatewayOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listTargetVpnGateways. */
   public PagedCallSettings<
           ListTargetVpnGatewaysHttpRequest,
@@ -218,6 +238,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteTargetVpnGatewaySettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteTargetVpnGateway. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteTargetVpnGatewayOperationSettings() {
+      return getStubSettingsBuilder().deleteTargetVpnGatewayOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getTargetVpnGateway. */
     public UnaryCallSettings.Builder
         getTargetVpnGatewaySettings() {
@@ -230,6 +258,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().insertTargetVpnGatewaySettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertTargetVpnGateway. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertTargetVpnGatewayOperationSettings() {
+      return getStubSettingsBuilder().insertTargetVpnGatewayOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listTargetVpnGateways. */
     public PagedCallSettings.Builder<
             ListTargetVpnGatewaysHttpRequest,
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/UrlMapClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/UrlMapClient.java
index 26a3c830ac28..67a6295b4a14 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/UrlMapClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/UrlMapClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.UrlMapStub;
@@ -43,7 +46,7 @@
  * 
  * try (UrlMapClient urlMapClient = UrlMapClient.create()) {
  *   ProjectGlobalUrlMapName urlMap = ProjectGlobalUrlMapName.of("[PROJECT]", "[URL_MAP]");
- *   Operation response = urlMapClient.deleteUrlMap(urlMap);
+ *   UrlMap response = urlMapClient.getUrlMap(urlMap);
  * }
  * 
  * 
@@ -103,6 +106,7 @@ public class UrlMapClient implements BackgroundResource { private final UrlMapSettings settings; private final UrlMapStub stub; + private final GlobalOperationClient operationsClient; /** Constructs an instance of UrlMapClient with default settings. */ public static final UrlMapClient create() throws IOException { @@ -133,12 +137,14 @@ public static final UrlMapClient create(UrlMapStub stub) { protected UrlMapClient(UrlMapSettings settings) throws IOException { this.settings = settings; this.stub = ((UrlMapStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected UrlMapClient(UrlMapStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = GlobalOperationClient.create(this.stub.getOperationsStub()); } public final UrlMapSettings getSettings() { @@ -150,6 +156,16 @@ public UrlMapStub getStub() { return stub; } + /** + * Returns the GlobalOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final GlobalOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Deletes the specified UrlMap resource. @@ -159,21 +175,23 @@ public UrlMapStub getStub() { *

    * try (UrlMapClient urlMapClient = UrlMapClient.create()) {
    *   ProjectGlobalUrlMapName urlMap = ProjectGlobalUrlMapName.of("[PROJECT]", "[URL_MAP]");
-   *   Operation response = urlMapClient.deleteUrlMap(urlMap);
+   *   urlMapClient.deleteUrlMapAsync(urlMap).get();
    * }
    * 
* * @param urlMap Name of the UrlMap resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteUrlMap(ProjectGlobalUrlMapName urlMap) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteUrlMapAsync( + ProjectGlobalUrlMapName urlMap) { DeleteUrlMapHttpRequest request = DeleteUrlMapHttpRequest.newBuilder() .setUrlMap(urlMap == null ? null : urlMap.toString()) .build(); - return deleteUrlMap(request); + return deleteUrlMapAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -185,19 +203,20 @@ public final Operation deleteUrlMap(ProjectGlobalUrlMapName urlMap) { *

    * try (UrlMapClient urlMapClient = UrlMapClient.create()) {
    *   ProjectGlobalUrlMapName urlMap = ProjectGlobalUrlMapName.of("[PROJECT]", "[URL_MAP]");
-   *   Operation response = urlMapClient.deleteUrlMap(urlMap.toString());
+   *   urlMapClient.deleteUrlMapAsync(urlMap.toString()).get();
    * }
    * 
* * @param urlMap Name of the UrlMap resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteUrlMap(String urlMap) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteUrlMapAsync(String urlMap) { DeleteUrlMapHttpRequest request = DeleteUrlMapHttpRequest.newBuilder().setUrlMap(urlMap).build(); - return deleteUrlMap(request); + return deleteUrlMapAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -212,16 +231,42 @@ public final Operation deleteUrlMap(String urlMap) { * DeleteUrlMapHttpRequest request = DeleteUrlMapHttpRequest.newBuilder() * .setUrlMap(urlMap.toString()) * .build(); - * Operation response = urlMapClient.deleteUrlMap(request); + * urlMapClient.deleteUrlMapAsync(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 */ - @BetaApi - public final Operation deleteUrlMap(DeleteUrlMapHttpRequest request) { - return deleteUrlMapCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteUrlMapAsync( + DeleteUrlMapHttpRequest request) { + return deleteUrlMapOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified UrlMap resource. + * + *

Sample code: + * + *


+   * try (UrlMapClient urlMapClient = UrlMapClient.create()) {
+   *   ProjectGlobalUrlMapName urlMap = ProjectGlobalUrlMapName.of("[PROJECT]", "[URL_MAP]");
+   *   DeleteUrlMapHttpRequest request = DeleteUrlMapHttpRequest.newBuilder()
+   *     .setUrlMap(urlMap.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = urlMapClient.deleteUrlMapOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteUrlMapOperationCallable() { + return stub.deleteUrlMapOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -238,7 +283,7 @@ public final Operation deleteUrlMap(DeleteUrlMapHttpRequest request) { * .build(); * ApiFuture<Operation> future = urlMapClient.deleteUrlMapCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -357,7 +402,7 @@ public final UnaryCallable getUrlMapCallable() { * try (UrlMapClient urlMapClient = UrlMapClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * UrlMap urlMapResource = UrlMap.newBuilder().build(); - * Operation response = urlMapClient.insertUrlMap(project, urlMapResource); + * urlMapClient.insertUrlMapAsync(project, urlMapResource).get(); * } * * @@ -366,15 +411,17 @@ public final UnaryCallable getUrlMapCallable() { * BackendService resource, based on the "longest-match" of the URL's host and path. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertUrlMap(ProjectName project, UrlMap urlMapResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertUrlMapAsync( + ProjectName project, UrlMap urlMapResource) { InsertUrlMapHttpRequest request = InsertUrlMapHttpRequest.newBuilder() .setProject(project == null ? null : project.toString()) .setUrlMapResource(urlMapResource) .build(); - return insertUrlMap(request); + return insertUrlMapAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -387,7 +434,7 @@ public final Operation insertUrlMap(ProjectName project, UrlMap urlMapResource) * try (UrlMapClient urlMapClient = UrlMapClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); * UrlMap urlMapResource = UrlMap.newBuilder().build(); - * Operation response = urlMapClient.insertUrlMap(project.toString(), urlMapResource); + * urlMapClient.insertUrlMapAsync(project.toString(), urlMapResource).get(); * } * * @@ -396,15 +443,17 @@ public final Operation insertUrlMap(ProjectName project, UrlMap urlMapResource) * BackendService resource, based on the "longest-match" of the URL's host and path. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertUrlMap(String project, UrlMap urlMapResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertUrlMapAsync( + String project, UrlMap urlMapResource) { InsertUrlMapHttpRequest request = InsertUrlMapHttpRequest.newBuilder() .setProject(project) .setUrlMapResource(urlMapResource) .build(); - return insertUrlMap(request); + return insertUrlMapAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -421,16 +470,44 @@ public final Operation insertUrlMap(String project, UrlMap urlMapResource) { * .setProject(project.toString()) * .setUrlMapResource(urlMapResource) * .build(); - * Operation response = urlMapClient.insertUrlMap(request); + * urlMapClient.insertUrlMapAsync(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 */ - @BetaApi - public final Operation insertUrlMap(InsertUrlMapHttpRequest request) { - return insertUrlMapCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertUrlMapAsync( + InsertUrlMapHttpRequest request) { + return insertUrlMapOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a UrlMap resource in the specified project using the data included in the request. + * + *

Sample code: + * + *


+   * try (UrlMapClient urlMapClient = UrlMapClient.create()) {
+   *   ProjectName project = ProjectName.of("[PROJECT]");
+   *   UrlMap urlMapResource = UrlMap.newBuilder().build();
+   *   InsertUrlMapHttpRequest request = InsertUrlMapHttpRequest.newBuilder()
+   *     .setProject(project.toString())
+   *     .setUrlMapResource(urlMapResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = urlMapClient.insertUrlMapOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertUrlMapOperationCallable() { + return stub.insertUrlMapOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -449,7 +526,7 @@ public final Operation insertUrlMap(InsertUrlMapHttpRequest request) { * .build(); * ApiFuture<Operation> future = urlMapClient.insertUrlMapCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -469,7 +546,7 @@ public final UnaryCallable insertUrlMapCalla * try (UrlMapClient urlMapClient = UrlMapClient.create()) { * ProjectGlobalUrlMapName urlMap = ProjectGlobalUrlMapName.of("[PROJECT]", "[URL_MAP]"); * CacheInvalidationRule cacheInvalidationRuleResource = CacheInvalidationRule.newBuilder().build(); - * Operation response = urlMapClient.invalidateCacheUrlMap(urlMap, cacheInvalidationRuleResource); + * urlMapClient.invalidateCacheUrlMapAsync(urlMap, cacheInvalidationRuleResource).get(); * } * * @@ -477,8 +554,9 @@ public final UnaryCallable insertUrlMapCalla * @param cacheInvalidationRuleResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation invalidateCacheUrlMap( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture invalidateCacheUrlMapAsync( ProjectGlobalUrlMapName urlMap, CacheInvalidationRule cacheInvalidationRuleResource) { InvalidateCacheUrlMapHttpRequest request = @@ -486,7 +564,7 @@ public final Operation invalidateCacheUrlMap( .setUrlMap(urlMap == null ? null : urlMap.toString()) .setCacheInvalidationRuleResource(cacheInvalidationRuleResource) .build(); - return invalidateCacheUrlMap(request); + return invalidateCacheUrlMapAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -500,7 +578,7 @@ public final Operation invalidateCacheUrlMap( * try (UrlMapClient urlMapClient = UrlMapClient.create()) { * ProjectGlobalUrlMapName urlMap = ProjectGlobalUrlMapName.of("[PROJECT]", "[URL_MAP]"); * CacheInvalidationRule cacheInvalidationRuleResource = CacheInvalidationRule.newBuilder().build(); - * Operation response = urlMapClient.invalidateCacheUrlMap(urlMap.toString(), cacheInvalidationRuleResource); + * urlMapClient.invalidateCacheUrlMapAsync(urlMap.toString(), cacheInvalidationRuleResource).get(); * } * * @@ -508,8 +586,9 @@ public final Operation invalidateCacheUrlMap( * @param cacheInvalidationRuleResource * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation invalidateCacheUrlMap( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture invalidateCacheUrlMapAsync( String urlMap, CacheInvalidationRule cacheInvalidationRuleResource) { InvalidateCacheUrlMapHttpRequest request = @@ -517,7 +596,7 @@ public final Operation invalidateCacheUrlMap( .setUrlMap(urlMap) .setCacheInvalidationRuleResource(cacheInvalidationRuleResource) .build(); - return invalidateCacheUrlMap(request); + return invalidateCacheUrlMapAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -535,16 +614,45 @@ public final Operation invalidateCacheUrlMap( * .setUrlMap(urlMap.toString()) * .setCacheInvalidationRuleResource(cacheInvalidationRuleResource) * .build(); - * Operation response = urlMapClient.invalidateCacheUrlMap(request); + * urlMapClient.invalidateCacheUrlMapAsync(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 */ - @BetaApi - public final Operation invalidateCacheUrlMap(InvalidateCacheUrlMapHttpRequest request) { - return invalidateCacheUrlMapCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture invalidateCacheUrlMapAsync( + InvalidateCacheUrlMapHttpRequest request) { + return invalidateCacheUrlMapOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Initiates a cache invalidation operation, invalidating the specified path, scoped to the + * specified UrlMap. + * + *

Sample code: + * + *


+   * try (UrlMapClient urlMapClient = UrlMapClient.create()) {
+   *   ProjectGlobalUrlMapName urlMap = ProjectGlobalUrlMapName.of("[PROJECT]", "[URL_MAP]");
+   *   CacheInvalidationRule cacheInvalidationRuleResource = CacheInvalidationRule.newBuilder().build();
+   *   InvalidateCacheUrlMapHttpRequest request = InvalidateCacheUrlMapHttpRequest.newBuilder()
+   *     .setUrlMap(urlMap.toString())
+   *     .setCacheInvalidationRuleResource(cacheInvalidationRuleResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = urlMapClient.invalidateCacheUrlMapOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + invalidateCacheUrlMapOperationCallable() { + return stub.invalidateCacheUrlMapOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -564,7 +672,7 @@ public final Operation invalidateCacheUrlMap(InvalidateCacheUrlMapHttpRequest re * .build(); * ApiFuture<Operation> future = urlMapClient.invalidateCacheUrlMapCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -722,7 +830,7 @@ public final UnaryCallable listUrlMapsCallab * ProjectGlobalUrlMapName urlMap = ProjectGlobalUrlMapName.of("[PROJECT]", "[URL_MAP]"); * UrlMap urlMapResource = UrlMap.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = urlMapClient.patchUrlMap(urlMap, urlMapResource, fieldMask); + * urlMapClient.patchUrlMapAsync(urlMap, urlMapResource, fieldMask).get(); * } * * @@ -735,8 +843,9 @@ public final UnaryCallable listUrlMapsCallab * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchUrlMap( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchUrlMapAsync( ProjectGlobalUrlMapName urlMap, UrlMap urlMapResource, List fieldMask) { PatchUrlMapHttpRequest request = @@ -745,7 +854,7 @@ public final Operation patchUrlMap( .setUrlMapResource(urlMapResource) .addAllFieldMask(fieldMask) .build(); - return patchUrlMap(request); + return patchUrlMapAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -760,7 +869,7 @@ public final Operation patchUrlMap( * ProjectGlobalUrlMapName urlMap = ProjectGlobalUrlMapName.of("[PROJECT]", "[URL_MAP]"); * UrlMap urlMapResource = UrlMap.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = urlMapClient.patchUrlMap(urlMap.toString(), urlMapResource, fieldMask); + * urlMapClient.patchUrlMapAsync(urlMap.toString(), urlMapResource, fieldMask).get(); * } * * @@ -773,8 +882,10 @@ public final Operation patchUrlMap( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation patchUrlMap(String urlMap, UrlMap urlMapResource, List fieldMask) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchUrlMapAsync( + String urlMap, UrlMap urlMapResource, List fieldMask) { PatchUrlMapHttpRequest request = PatchUrlMapHttpRequest.newBuilder() @@ -782,7 +893,7 @@ public final Operation patchUrlMap(String urlMap, UrlMap urlMapResource, List * * @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 */ - @BetaApi - public final Operation patchUrlMap(PatchUrlMapHttpRequest request) { - return patchUrlMapCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture patchUrlMapAsync( + PatchUrlMapHttpRequest request) { + return patchUrlMapOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Patches the specified UrlMap resource with the data included in the request. This method + * supports PATCH semantics and uses the JSON merge patch format and processing rules. + * + *

Sample code: + * + *


+   * try (UrlMapClient urlMapClient = UrlMapClient.create()) {
+   *   ProjectGlobalUrlMapName urlMap = ProjectGlobalUrlMapName.of("[PROJECT]", "[URL_MAP]");
+   *   UrlMap urlMapResource = UrlMap.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   PatchUrlMapHttpRequest request = PatchUrlMapHttpRequest.newBuilder()
+   *     .setUrlMap(urlMap.toString())
+   *     .setUrlMapResource(urlMapResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = urlMapClient.patchUrlMapOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + patchUrlMapOperationCallable() { + return stub.patchUrlMapOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -833,7 +975,7 @@ public final Operation patchUrlMap(PatchUrlMapHttpRequest request) { * .build(); * ApiFuture<Operation> future = urlMapClient.patchUrlMapCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -853,7 +995,7 @@ public final UnaryCallable patchUrlMapCallabl * ProjectGlobalUrlMapName urlMap = ProjectGlobalUrlMapName.of("[PROJECT]", "[URL_MAP]"); * UrlMap urlMapResource = UrlMap.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = urlMapClient.updateUrlMap(urlMap, urlMapResource, fieldMask); + * urlMapClient.updateUrlMapAsync(urlMap, urlMapResource, fieldMask).get(); * } * * @@ -866,8 +1008,9 @@ public final UnaryCallable patchUrlMapCallabl * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation updateUrlMap( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateUrlMapAsync( ProjectGlobalUrlMapName urlMap, UrlMap urlMapResource, List fieldMask) { UpdateUrlMapHttpRequest request = @@ -876,7 +1019,7 @@ public final Operation updateUrlMap( .setUrlMapResource(urlMapResource) .addAllFieldMask(fieldMask) .build(); - return updateUrlMap(request); + return updateUrlMapAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -890,7 +1033,7 @@ public final Operation updateUrlMap( * ProjectGlobalUrlMapName urlMap = ProjectGlobalUrlMapName.of("[PROJECT]", "[URL_MAP]"); * UrlMap urlMapResource = UrlMap.newBuilder().build(); * List<String> fieldMask = new ArrayList<>(); - * Operation response = urlMapClient.updateUrlMap(urlMap.toString(), urlMapResource, fieldMask); + * urlMapClient.updateUrlMapAsync(urlMap.toString(), urlMapResource, fieldMask).get(); * } * * @@ -903,8 +1046,9 @@ public final Operation updateUrlMap( * not have a fieldmask, then only non-empty fields will be serialized. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation updateUrlMap( + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateUrlMapAsync( String urlMap, UrlMap urlMapResource, List fieldMask) { UpdateUrlMapHttpRequest request = @@ -913,7 +1057,7 @@ public final Operation updateUrlMap( .setUrlMapResource(urlMapResource) .addAllFieldMask(fieldMask) .build(); - return updateUrlMap(request); + return updateUrlMapAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -932,16 +1076,46 @@ public final Operation updateUrlMap( * .setUrlMapResource(urlMapResource) * .addAllFieldMask(fieldMask) * .build(); - * Operation response = urlMapClient.updateUrlMap(request); + * urlMapClient.updateUrlMapAsync(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 */ - @BetaApi - public final Operation updateUrlMap(UpdateUrlMapHttpRequest request) { - return updateUrlMapCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture updateUrlMapAsync( + UpdateUrlMapHttpRequest request) { + return updateUrlMapOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Updates the specified UrlMap resource with the data included in the request. + * + *

Sample code: + * + *


+   * try (UrlMapClient urlMapClient = UrlMapClient.create()) {
+   *   ProjectGlobalUrlMapName urlMap = ProjectGlobalUrlMapName.of("[PROJECT]", "[URL_MAP]");
+   *   UrlMap urlMapResource = UrlMap.newBuilder().build();
+   *   List<String> fieldMask = new ArrayList<>();
+   *   UpdateUrlMapHttpRequest request = UpdateUrlMapHttpRequest.newBuilder()
+   *     .setUrlMap(urlMap.toString())
+   *     .setUrlMapResource(urlMapResource)
+   *     .addAllFieldMask(fieldMask)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = urlMapClient.updateUrlMapOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + updateUrlMapOperationCallable() { + return stub.updateUrlMapOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -962,7 +1136,7 @@ public final Operation updateUrlMap(UpdateUrlMapHttpRequest request) { * .build(); * ApiFuture<Operation> future = urlMapClient.updateUrlMapCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/UrlMapSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/UrlMapSettings.java index 81532b9aedaa..ab5e436e705b 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/UrlMapSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/UrlMapSettings.java @@ -21,10 +21,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -48,13 +50,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteUrlMap to 30 seconds: + * example, to set the total timeout of getUrlMap to 30 seconds: * *

  * 
  * UrlMapSettings.Builder urlMapSettingsBuilder =
  *     UrlMapSettings.newBuilder();
- * urlMapSettingsBuilder.deleteUrlMapSettings().getRetrySettings().toBuilder()
+ * urlMapSettingsBuilder.getUrlMapSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * UrlMapSettings urlMapSettings = urlMapSettingsBuilder.build();
  * 
@@ -68,6 +70,14 @@ public UnaryCallSettings deleteUrlMapSetting
     return ((UrlMapStubSettings) getStubSettings()).deleteUrlMapSettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteUrlMap. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteUrlMapOperationSettings() {
+    return ((UrlMapStubSettings) getStubSettings()).deleteUrlMapOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getUrlMap. */
   public UnaryCallSettings getUrlMapSettings() {
     return ((UrlMapStubSettings) getStubSettings()).getUrlMapSettings();
@@ -78,12 +88,28 @@ public UnaryCallSettings insertUrlMapSetting
     return ((UrlMapStubSettings) getStubSettings()).insertUrlMapSettings();
   }
 
+  /** Returns the object with the settings used for calls to insertUrlMap. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertUrlMapOperationSettings() {
+    return ((UrlMapStubSettings) getStubSettings()).insertUrlMapOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to invalidateCacheUrlMap. */
   public UnaryCallSettings
       invalidateCacheUrlMapSettings() {
     return ((UrlMapStubSettings) getStubSettings()).invalidateCacheUrlMapSettings();
   }
 
+  /** Returns the object with the settings used for calls to invalidateCacheUrlMap. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      invalidateCacheUrlMapOperationSettings() {
+    return ((UrlMapStubSettings) getStubSettings()).invalidateCacheUrlMapOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listUrlMaps. */
   public PagedCallSettings
       listUrlMapsSettings() {
@@ -95,11 +121,27 @@ public UnaryCallSettings patchUrlMapSettings(
     return ((UrlMapStubSettings) getStubSettings()).patchUrlMapSettings();
   }
 
+  /** Returns the object with the settings used for calls to patchUrlMap. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      patchUrlMapOperationSettings() {
+    return ((UrlMapStubSettings) getStubSettings()).patchUrlMapOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to updateUrlMap. */
   public UnaryCallSettings updateUrlMapSettings() {
     return ((UrlMapStubSettings) getStubSettings()).updateUrlMapSettings();
   }
 
+  /** Returns the object with the settings used for calls to updateUrlMap. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      updateUrlMapOperationSettings() {
+    return ((UrlMapStubSettings) getStubSettings()).updateUrlMapOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to validateUrlMap. */
   public UnaryCallSettings
       validateUrlMapSettings() {
@@ -212,6 +254,14 @@ public UnaryCallSettings.Builder deleteUrlMa
       return getStubSettingsBuilder().deleteUrlMapSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteUrlMap. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteUrlMapOperationSettings() {
+      return getStubSettingsBuilder().deleteUrlMapOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getUrlMap. */
     public UnaryCallSettings.Builder getUrlMapSettings() {
       return getStubSettingsBuilder().getUrlMapSettings();
@@ -222,12 +272,28 @@ public UnaryCallSettings.Builder insertUrlMa
       return getStubSettingsBuilder().insertUrlMapSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertUrlMap. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertUrlMapOperationSettings() {
+      return getStubSettingsBuilder().insertUrlMapOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to invalidateCacheUrlMap. */
     public UnaryCallSettings.Builder
         invalidateCacheUrlMapSettings() {
       return getStubSettingsBuilder().invalidateCacheUrlMapSettings();
     }
 
+    /** Returns the builder for the settings used for calls to invalidateCacheUrlMap. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        invalidateCacheUrlMapOperationSettings() {
+      return getStubSettingsBuilder().invalidateCacheUrlMapOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listUrlMaps. */
     public PagedCallSettings.Builder
         listUrlMapsSettings() {
@@ -239,11 +305,27 @@ public UnaryCallSettings.Builder patchUrlMapS
       return getStubSettingsBuilder().patchUrlMapSettings();
     }
 
+    /** Returns the builder for the settings used for calls to patchUrlMap. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchUrlMapOperationSettings() {
+      return getStubSettingsBuilder().patchUrlMapOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to updateUrlMap. */
     public UnaryCallSettings.Builder updateUrlMapSettings() {
       return getStubSettingsBuilder().updateUrlMapSettings();
     }
 
+    /** Returns the builder for the settings used for calls to updateUrlMap. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        updateUrlMapOperationSettings() {
+      return getStubSettingsBuilder().updateUrlMapOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to validateUrlMap. */
     public UnaryCallSettings.Builder
         validateUrlMapSettings() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/VpnTunnelClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/VpnTunnelClient.java
index f69be3298ba9..3100343f9e9c 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/VpnTunnelClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/VpnTunnelClient.java
@@ -20,9 +20,12 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.stub.VpnTunnelStub;
@@ -43,7 +46,7 @@
  * 
  * try (VpnTunnelClient vpnTunnelClient = VpnTunnelClient.create()) {
  *   ProjectRegionVpnTunnelName vpnTunnel = ProjectRegionVpnTunnelName.of("[PROJECT]", "[REGION]", "[VPN_TUNNEL]");
- *   Operation response = vpnTunnelClient.deleteVpnTunnel(vpnTunnel);
+ *   VpnTunnel response = vpnTunnelClient.getVpnTunnel(vpnTunnel);
  * }
  * 
  * 
@@ -103,6 +106,7 @@ public class VpnTunnelClient implements BackgroundResource { private final VpnTunnelSettings settings; private final VpnTunnelStub stub; + private final RegionOperationClient operationsClient; /** Constructs an instance of VpnTunnelClient with default settings. */ public static final VpnTunnelClient create() throws IOException { @@ -133,12 +137,14 @@ public static final VpnTunnelClient create(VpnTunnelStub stub) { protected VpnTunnelClient(VpnTunnelSettings settings) throws IOException { this.settings = settings; this.stub = ((VpnTunnelStubSettings) settings.getStubSettings()).createStub(); + this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub()); } @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected VpnTunnelClient(VpnTunnelStub stub) { this.settings = null; this.stub = stub; + this.operationsClient = RegionOperationClient.create(this.stub.getOperationsStub()); } public final VpnTunnelSettings getSettings() { @@ -150,6 +156,16 @@ public VpnTunnelStub getStub() { return stub; } + /** + * Returns the RegionOperationClient that can be used to query the status of a long-running + * operation returned by another API method call. + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final RegionOperationClient getOperationsClient() { + return operationsClient; + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Retrieves an aggregated list of VPN tunnels. @@ -298,21 +314,23 @@ public final AggregatedListVpnTunnelsPagedResponse aggregatedListVpnTunnels( *

    * try (VpnTunnelClient vpnTunnelClient = VpnTunnelClient.create()) {
    *   ProjectRegionVpnTunnelName vpnTunnel = ProjectRegionVpnTunnelName.of("[PROJECT]", "[REGION]", "[VPN_TUNNEL]");
-   *   Operation response = vpnTunnelClient.deleteVpnTunnel(vpnTunnel);
+   *   vpnTunnelClient.deleteVpnTunnelAsync(vpnTunnel).get();
    * }
    * 
* * @param vpnTunnel Name of the VpnTunnel resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteVpnTunnel(ProjectRegionVpnTunnelName vpnTunnel) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteVpnTunnelAsync( + ProjectRegionVpnTunnelName vpnTunnel) { DeleteVpnTunnelHttpRequest request = DeleteVpnTunnelHttpRequest.newBuilder() .setVpnTunnel(vpnTunnel == null ? null : vpnTunnel.toString()) .build(); - return deleteVpnTunnel(request); + return deleteVpnTunnelAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -324,19 +342,20 @@ public final Operation deleteVpnTunnel(ProjectRegionVpnTunnelName vpnTunnel) { *

    * try (VpnTunnelClient vpnTunnelClient = VpnTunnelClient.create()) {
    *   ProjectRegionVpnTunnelName vpnTunnel = ProjectRegionVpnTunnelName.of("[PROJECT]", "[REGION]", "[VPN_TUNNEL]");
-   *   Operation response = vpnTunnelClient.deleteVpnTunnel(vpnTunnel.toString());
+   *   vpnTunnelClient.deleteVpnTunnelAsync(vpnTunnel.toString()).get();
    * }
    * 
* * @param vpnTunnel Name of the VpnTunnel resource to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation deleteVpnTunnel(String vpnTunnel) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteVpnTunnelAsync(String vpnTunnel) { DeleteVpnTunnelHttpRequest request = DeleteVpnTunnelHttpRequest.newBuilder().setVpnTunnel(vpnTunnel).build(); - return deleteVpnTunnel(request); + return deleteVpnTunnelAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -351,16 +370,42 @@ public final Operation deleteVpnTunnel(String vpnTunnel) { * DeleteVpnTunnelHttpRequest request = DeleteVpnTunnelHttpRequest.newBuilder() * .setVpnTunnel(vpnTunnel.toString()) * .build(); - * Operation response = vpnTunnelClient.deleteVpnTunnel(request); + * vpnTunnelClient.deleteVpnTunnelAsync(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 */ - @BetaApi - public final Operation deleteVpnTunnel(DeleteVpnTunnelHttpRequest request) { - return deleteVpnTunnelCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture deleteVpnTunnelAsync( + DeleteVpnTunnelHttpRequest request) { + return deleteVpnTunnelOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Deletes the specified VpnTunnel resource. + * + *

Sample code: + * + *


+   * try (VpnTunnelClient vpnTunnelClient = VpnTunnelClient.create()) {
+   *   ProjectRegionVpnTunnelName vpnTunnel = ProjectRegionVpnTunnelName.of("[PROJECT]", "[REGION]", "[VPN_TUNNEL]");
+   *   DeleteVpnTunnelHttpRequest request = DeleteVpnTunnelHttpRequest.newBuilder()
+   *     .setVpnTunnel(vpnTunnel.toString())
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = vpnTunnelClient.deleteVpnTunnelOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + deleteVpnTunnelOperationCallable() { + return stub.deleteVpnTunnelOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -377,7 +422,7 @@ public final Operation deleteVpnTunnel(DeleteVpnTunnelHttpRequest request) { * .build(); * ApiFuture<Operation> future = vpnTunnelClient.deleteVpnTunnelCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ @@ -498,7 +543,7 @@ public final UnaryCallable getVpnTunnelCalla * try (VpnTunnelClient vpnTunnelClient = VpnTunnelClient.create()) { * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * VpnTunnel vpnTunnelResource = VpnTunnel.newBuilder().build(); - * Operation response = vpnTunnelClient.insertVpnTunnel(region, vpnTunnelResource); + * vpnTunnelClient.insertVpnTunnelAsync(region, vpnTunnelResource).get(); * } * * @@ -507,15 +552,17 @@ public final UnaryCallable getVpnTunnelCalla * resource_for v1.vpnTunnels ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertVpnTunnel(ProjectRegionName region, VpnTunnel vpnTunnelResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertVpnTunnelAsync( + ProjectRegionName region, VpnTunnel vpnTunnelResource) { InsertVpnTunnelHttpRequest request = InsertVpnTunnelHttpRequest.newBuilder() .setRegion(region == null ? null : region.toString()) .setVpnTunnelResource(vpnTunnelResource) .build(); - return insertVpnTunnel(request); + return insertVpnTunnelAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -529,7 +576,7 @@ public final Operation insertVpnTunnel(ProjectRegionName region, VpnTunnel vpnTu * try (VpnTunnelClient vpnTunnelClient = VpnTunnelClient.create()) { * ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]"); * VpnTunnel vpnTunnelResource = VpnTunnel.newBuilder().build(); - * Operation response = vpnTunnelClient.insertVpnTunnel(region.toString(), vpnTunnelResource); + * vpnTunnelClient.insertVpnTunnelAsync(region.toString(), vpnTunnelResource).get(); * } * * @@ -538,15 +585,17 @@ public final Operation insertVpnTunnel(ProjectRegionName region, VpnTunnel vpnTu * resource_for v1.vpnTunnels ==) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - @BetaApi - public final Operation insertVpnTunnel(String region, VpnTunnel vpnTunnelResource) { + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertVpnTunnelAsync( + String region, VpnTunnel vpnTunnelResource) { InsertVpnTunnelHttpRequest request = InsertVpnTunnelHttpRequest.newBuilder() .setRegion(region) .setVpnTunnelResource(vpnTunnelResource) .build(); - return insertVpnTunnel(request); + return insertVpnTunnelAsync(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -564,16 +613,45 @@ public final Operation insertVpnTunnel(String region, VpnTunnel vpnTunnelResourc * .setRegion(region.toString()) * .setVpnTunnelResource(vpnTunnelResource) * .build(); - * Operation response = vpnTunnelClient.insertVpnTunnel(request); + * vpnTunnelClient.insertVpnTunnelAsync(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 */ - @BetaApi - public final Operation insertVpnTunnel(InsertVpnTunnelHttpRequest request) { - return insertVpnTunnelCallable().call(request); + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture insertVpnTunnelAsync( + InsertVpnTunnelHttpRequest request) { + return insertVpnTunnelOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates a VpnTunnel resource in the specified project and region using the data included in the + * request. + * + *

Sample code: + * + *


+   * try (VpnTunnelClient vpnTunnelClient = VpnTunnelClient.create()) {
+   *   ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
+   *   VpnTunnel vpnTunnelResource = VpnTunnel.newBuilder().build();
+   *   InsertVpnTunnelHttpRequest request = InsertVpnTunnelHttpRequest.newBuilder()
+   *     .setRegion(region.toString())
+   *     .setVpnTunnelResource(vpnTunnelResource)
+   *     .build();
+   *   OperationFuture<EmptyMessage, Operation> future = vpnTunnelClient.insertVpnTunnelOperationCallable().futureCall(request);
+   *   // Do something
+   *   future.get();
+   * }
+   * 
+ */ + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public final OperationCallable + insertVpnTunnelOperationCallable() { + return stub.insertVpnTunnelOperationCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -593,7 +671,7 @@ public final Operation insertVpnTunnel(InsertVpnTunnelHttpRequest request) { * .build(); * ApiFuture<Operation> future = vpnTunnelClient.insertVpnTunnelCallable().futureCall(request); * // Do something - * Operation response = future.get(); + * future.get(); * } * */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/VpnTunnelSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/VpnTunnelSettings.java index 0e644eed7723..615625994c6c 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/VpnTunnelSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/VpnTunnelSettings.java @@ -22,10 +22,12 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; @@ -49,13 +51,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteVpnTunnel to 30 seconds: + * example, to set the total timeout of getVpnTunnel to 30 seconds: * *

  * 
  * VpnTunnelSettings.Builder vpnTunnelSettingsBuilder =
  *     VpnTunnelSettings.newBuilder();
- * vpnTunnelSettingsBuilder.deleteVpnTunnelSettings().getRetrySettings().toBuilder()
+ * vpnTunnelSettingsBuilder.getVpnTunnelSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * VpnTunnelSettings vpnTunnelSettings = vpnTunnelSettingsBuilder.build();
  * 
@@ -78,6 +80,14 @@ public UnaryCallSettings deleteVpnTunnelS
     return ((VpnTunnelStubSettings) getStubSettings()).deleteVpnTunnelSettings();
   }
 
+  /** Returns the object with the settings used for calls to deleteVpnTunnel. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteVpnTunnelOperationSettings() {
+    return ((VpnTunnelStubSettings) getStubSettings()).deleteVpnTunnelOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to getVpnTunnel. */
   public UnaryCallSettings getVpnTunnelSettings() {
     return ((VpnTunnelStubSettings) getStubSettings()).getVpnTunnelSettings();
@@ -88,6 +98,14 @@ public UnaryCallSettings insertVpnTunnelS
     return ((VpnTunnelStubSettings) getStubSettings()).insertVpnTunnelSettings();
   }
 
+  /** Returns the object with the settings used for calls to insertVpnTunnel. */
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertVpnTunnelOperationSettings() {
+    return ((VpnTunnelStubSettings) getStubSettings()).insertVpnTunnelOperationSettings();
+  }
+
   /** Returns the object with the settings used for calls to listVpnTunnels. */
   public PagedCallSettings
       listVpnTunnelsSettings() {
@@ -210,6 +228,14 @@ public Builder applyToAllUnaryMethods(
       return getStubSettingsBuilder().deleteVpnTunnelSettings();
     }
 
+    /** Returns the builder for the settings used for calls to deleteVpnTunnel. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteVpnTunnelOperationSettings() {
+      return getStubSettingsBuilder().deleteVpnTunnelOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to getVpnTunnel. */
     public UnaryCallSettings.Builder getVpnTunnelSettings() {
       return getStubSettingsBuilder().getVpnTunnelSettings();
@@ -221,6 +247,14 @@ public UnaryCallSettings.Builder getVpnTunne
       return getStubSettingsBuilder().insertVpnTunnelSettings();
     }
 
+    /** Returns the builder for the settings used for calls to insertVpnTunnel. */
+    @BetaApi(
+        "The surface for long-running operations is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertVpnTunnelOperationSettings() {
+      return getStubSettingsBuilder().insertVpnTunnelOperationSettings();
+    }
+
     /** Returns the builder for the settings used for calls to listVpnTunnels. */
     public PagedCallSettings.Builder<
             ListVpnTunnelsHttpRequest, VpnTunnelList, ListVpnTunnelsPagedResponse>
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ZoneOperationClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ZoneOperationClient.java
index dc0774a7bc4a..0329e499d55a 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ZoneOperationClient.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ZoneOperationClient.java
@@ -20,6 +20,7 @@
 import com.google.api.core.ApiFutures;
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.paging.AbstractFixedSizeCollection;
 import com.google.api.gax.paging.AbstractPage;
 import com.google.api.gax.paging.AbstractPagedListResponse;
@@ -245,7 +246,8 @@ public final void deleteZoneOperation(DeleteZoneOperationHttpRequest request) {
    * 
*/ @BetaApi - public final UnaryCallable deleteZoneOperationCallable() { + public final UnaryCallable + deleteZoneOperationCallable() { return stub.deleteZoneOperationCallable(); } diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ZoneOperationSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ZoneOperationSettings.java index 7d0684c08cd6..6569038b3b3b 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ZoneOperationSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ZoneOperationSettings.java @@ -21,6 +21,7 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; @@ -64,7 +65,8 @@ @BetaApi public class ZoneOperationSettings extends ClientSettings { /** Returns the object with the settings used for calls to deleteZoneOperation. */ - public UnaryCallSettings deleteZoneOperationSettings() { + public UnaryCallSettings + deleteZoneOperationSettings() { return ((ZoneOperationStubSettings) getStubSettings()).deleteZoneOperationSettings(); } @@ -183,7 +185,7 @@ public Builder applyToAllUnaryMethods( } /** Returns the builder for the settings used for calls to deleteZoneOperation. */ - public UnaryCallSettings.Builder + public UnaryCallSettings.Builder deleteZoneOperationSettings() { return getStubSettingsBuilder().deleteZoneOperationSettings(); } diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/longrunning/ComputeLongRunningClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/longrunning/ComputeLongRunningClient.java new file mode 100644 index 000000000000..8b3cef5a7b33 --- /dev/null +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/longrunning/ComputeLongRunningClient.java @@ -0,0 +1,99 @@ +package com.google.cloud.compute.v1.longrunning; + +import com.google.api.core.ApiFunction; +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.httpjson.EmptyMessage; +import com.google.api.gax.longrunning.OperationSnapshot; +import com.google.api.gax.rpc.LongRunningClient; +import com.google.api.gax.rpc.TranslatingUnaryCallable; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.cloud.compute.v1.Operation; +import java.util.concurrent.TimeUnit; + +/** Unites all Compute's different [Scope]OperationClients under a single shared implementation of the LongRunningClient. + * Package-private for internal use. Used by gax-java to get callables. */ +class ComputeLongRunningClient + implements LongRunningClient, BackgroundResource { + + private final UnaryCallable getOperationCallable; + private final UnaryCallable deleteOperationCallable; + private final ApiFunction createGetRequestFunc; + private final ApiFunction createDeleteRequestFunc; + private final BackgroundResource stub; + + public ComputeLongRunningClient( + BackgroundResource stub, + UnaryCallable deleteOperationCallable, + UnaryCallable getOperationCallable, + ApiFunction createDeleteRequestFunc, + ApiFunction createGetRequestFunc) { + this.stub = stub; + this.getOperationCallable = getOperationCallable; + this.deleteOperationCallable = deleteOperationCallable; + this.createGetRequestFunc = createGetRequestFunc; + this.createDeleteRequestFunc = createDeleteRequestFunc; + } + + private BackgroundResource getStub() { return stub; } + + @Override + public UnaryCallable getOperationCallable() { + return TranslatingUnaryCallable.create( + getOperationCallable, + createGetRequestFunc, + new ApiFunction() { + @Override + public OperationSnapshot apply(Operation operation) { + return ComputeOperationSnapshot.create(operation); + } + }); + } + + @Override + public UnaryCallable cancelOperationCallable() { + throw new UnsupportedOperationException("Cancelling operations is not supported by this API."); + } + + @Override + public UnaryCallable deleteOperationCallable() { + return TranslatingUnaryCallable.create( + deleteOperationCallable, + createDeleteRequestFunc, + new ApiFunction() { + @Override + public Void apply(EmptyMessage empty) { + return null; + } + }); + } + + @Override + public void shutdown() { + getStub().shutdown(); + } + + @Override + public boolean isShutdown() { + return getStub().isShutdown(); + } + + @Override + public boolean isTerminated() { + return getStub().isTerminated(); + } + + @Override + public void shutdownNow() { + getStub().shutdown(); + } + + @Override + public boolean awaitTermination(long l, TimeUnit timeUnit) throws InterruptedException { + return getStub().awaitTermination(l, timeUnit); + } + + @Override + public void close() throws Exception { + getStub().close(); + } +} diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/longrunning/ComputeLongRunningClientFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/longrunning/ComputeLongRunningClientFactory.java new file mode 100644 index 000000000000..56575d3b0eb2 --- /dev/null +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/longrunning/ComputeLongRunningClientFactory.java @@ -0,0 +1,82 @@ +package com.google.cloud.compute.v1.longrunning; + +import com.google.api.core.ApiFunction; +import com.google.api.core.BetaApi; +import com.google.cloud.compute.v1.DeleteGlobalOperationHttpRequest; +import com.google.cloud.compute.v1.DeleteRegionOperationHttpRequest; +import com.google.cloud.compute.v1.DeleteZoneOperationHttpRequest; +import com.google.cloud.compute.v1.GetGlobalOperationHttpRequest; +import com.google.cloud.compute.v1.GetRegionOperationHttpRequest; +import com.google.cloud.compute.v1.GetZoneOperationHttpRequest; +import com.google.cloud.compute.v1.stub.GlobalOperationStub; +import com.google.cloud.compute.v1.stub.RegionOperationStub; +import com.google.cloud.compute.v1.stub.ZoneOperationStub; + +/** Factory for creating Compute LongRunningClients for a given [Scope]OperationStub. */ +@BetaApi +public class ComputeLongRunningClientFactory { + + /* Create a ComputeLongRunningClient from a GlobalOperationsStub. */ + public static ComputeLongRunningClient create(GlobalOperationStub operationStub) { + return new ComputeLongRunningClient<>( + operationStub, + operationStub.deleteGlobalOperationCallable(), + operationStub.getGlobalOperationCallable(), + new ApiFunction() { + public DeleteGlobalOperationHttpRequest apply(String operationSelfLink) { + return DeleteGlobalOperationHttpRequest.newBuilder() + .setOperation(operationSelfLink) + .build(); + } + }, + new ApiFunction() { + public GetGlobalOperationHttpRequest apply(String operationSelfLink) { + return GetGlobalOperationHttpRequest.newBuilder().setOperation(operationSelfLink).build(); + } + }); + } + + /* Create a ComputeLongRunningClient from a ZoneOperationStub. */ + public static ComputeLongRunningClient create(ZoneOperationStub operationStub) { + return new ComputeLongRunningClient<>( + operationStub, + operationStub.deleteZoneOperationCallable(), + operationStub.getZoneOperationCallable(), + new ApiFunction() { + public DeleteZoneOperationHttpRequest apply(String operationSelfLink) { + // Make sure operation is a formatted string. + return DeleteZoneOperationHttpRequest.newBuilder() + .setOperation(operationSelfLink) + .build(); + } + }, + new ApiFunction() { + public GetZoneOperationHttpRequest apply(String operationSelfLink) { + // Make sure operation is a formatted string. + return GetZoneOperationHttpRequest.newBuilder().setOperation(operationSelfLink).build(); + } + }); + } + + /* Create a ComputeLongRunningClient from a RegionOperationStub. */ + public static ComputeLongRunningClient create(RegionOperationStub operationStub) { + return new ComputeLongRunningClient<>( + operationStub, + operationStub.deleteRegionOperationCallable(), + operationStub.getRegionOperationCallable(), + new ApiFunction() { + public DeleteRegionOperationHttpRequest apply(String operationSelfLink) { + // Make sure operation is a formatted string. + return DeleteRegionOperationHttpRequest.newBuilder() + .setOperation(operationSelfLink) + .build(); + } + }, + new ApiFunction() { + public GetRegionOperationHttpRequest apply(String operationSelfLink) { + // Make sure operation is a formatted string. + return GetRegionOperationHttpRequest.newBuilder().setOperation(operationSelfLink).build(); + } + }); + } +} diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/longrunning/ComputeOperationSnapshot.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/longrunning/ComputeOperationSnapshot.java new file mode 100644 index 000000000000..3869f3465405 --- /dev/null +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/longrunning/ComputeOperationSnapshot.java @@ -0,0 +1,78 @@ +package com.google.cloud.compute.v1.longrunning; + +import com.google.api.core.BetaApi; +import com.google.api.gax.httpjson.EmptyMessage; +import com.google.api.gax.httpjson.HttpJsonStatusCode; +import com.google.api.gax.longrunning.OperationSnapshot; +import com.google.api.gax.rpc.StatusCode; +import com.google.cloud.compute.v1.Operation; + +/** + * Implementation of a long-running operation for the Compute client. Wraps a compute {@code Operation} + * object. + */ +@BetaApi +public class ComputeOperationSnapshot implements OperationSnapshot { + + private static final EmptyMessage response = EmptyMessage.getDefaultInstance(); + + private final Operation operation; + + private ComputeOperationSnapshot(Operation operation) { + this.operation = operation; + } + + public static ComputeOperationSnapshot create(Operation operation) { + return new ComputeOperationSnapshot(operation); + } + + @Override + // Returns full resource name of the operation. + public String getName() { + return operation.getSelfLink(); + } + + @Override + // Returns the underlying Compute Operation object that is natively returned by + // longrunning methods. + public Operation getMetadata() { + return operation; + } + + @Override + public boolean isDone() { + return "DONE".equals(operation.getStatus()); + } + + @Override + public EmptyMessage getResponse() { + // Compute methods do not have responses. + return response; + } + + @Override + public StatusCode getErrorCode() { + int code; + String message; + try { + code = Integer.valueOf(operation.getError().getErrorsList().get(0).getCode()); + message = operation.getError().getErrorsList().get(0).getMessage(); + } catch (NullPointerException | IndexOutOfBoundsException e) { + code = 200; + message = "OK"; + } + + return HttpJsonStatusCode.of(code, message); + } + + @Override + public String getErrorMessage() { + + try { + return operation.getError().getErrorsList().toString(); + } catch (NullPointerException | ArrayIndexOutOfBoundsException e) { + // No error found. + return null; + } + } +} diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/longrunning/OperationSnapshotCallable.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/longrunning/OperationSnapshotCallable.java new file mode 100644 index 000000000000..11eed7fe9e30 --- /dev/null +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/longrunning/OperationSnapshotCallable.java @@ -0,0 +1,68 @@ +/* + * Copyright 2017 Google LLC + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google LLC nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.google.cloud.compute.v1.longrunning; + +import static com.google.common.util.concurrent.MoreExecutors.directExecutor; + +import com.google.api.core.ApiFunction; +import com.google.api.core.ApiFuture; +import com.google.api.core.ApiFutures; +import com.google.api.core.BetaApi; +import com.google.api.gax.longrunning.OperationSnapshot; +import com.google.api.gax.rpc.ApiCallContext; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.cloud.compute.v1.Operation; + +/** + * A {@code UnaryCallable} that wraps a UnaryCallable returning an Operation and returns an + * OperationSnapshot instead. + */ +@BetaApi +public class OperationSnapshotCallable + extends UnaryCallable { + private final UnaryCallable innerCallable; + + public OperationSnapshotCallable(UnaryCallable innerCallable) { + this.innerCallable = innerCallable; + } + + @Override + public ApiFuture futureCall(RequestT request, ApiCallContext context) { + return ApiFutures.transform( + innerCallable.futureCall(request, context), + new ApiFunction() { + @Override + public OperationSnapshot apply(Operation operation) { + return ComputeOperationSnapshot.create(operation); + } + }, + directExecutor()); + } +} diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/package-info.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/package-info.java index 62f6781bacfe..aeed83b6c8c1 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/package-info.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/package-info.java @@ -44,7 +44,7 @@ * * try (AddressClient addressClient = AddressClient.create()) { * ProjectRegionAddressName address = ProjectRegionAddressName.of("[PROJECT]", "[REGION]", "[ADDRESS]"); - * Operation response = addressClient.deleteAddress(address); + * Address response = addressClient.getAddress(address); * } * * @@ -59,7 +59,7 @@ * * try (AutoscalerClient autoscalerClient = AutoscalerClient.create()) { * ProjectZoneAutoscalerName autoscaler = ProjectZoneAutoscalerName.of("[PROJECT]", "[ZONE]", "[AUTOSCALER]"); - * Operation response = autoscalerClient.deleteAutoscaler(autoscaler); + * Autoscaler response = autoscalerClient.getAutoscaler(autoscaler); * } * * @@ -74,8 +74,7 @@ * * try (BackendBucketClient backendBucketClient = BackendBucketClient.create()) { * ProjectGlobalBackendBucketName backendBucket = ProjectGlobalBackendBucketName.of("[PROJECT]", "[BACKEND_BUCKET]"); - * SignedUrlKey signedUrlKeyResource = SignedUrlKey.newBuilder().build(); - * Operation response = backendBucketClient.addSignedUrlKeyBackendBucket(backendBucket, signedUrlKeyResource); + * BackendBucket response = backendBucketClient.getBackendBucket(backendBucket); * } * * @@ -90,8 +89,7 @@ * * try (BackendServiceClient backendServiceClient = BackendServiceClient.create()) { * ProjectGlobalBackendServiceName backendService = ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]"); - * SignedUrlKey signedUrlKeyResource = SignedUrlKey.newBuilder().build(); - * Operation response = backendServiceClient.addSignedUrlKeyBackendService(backendService, signedUrlKeyResource); + * BackendService response = backendServiceClient.getBackendService(backendService); * } * * @@ -121,9 +119,7 @@ * * try (DiskClient diskClient = DiskClient.create()) { * ProjectZoneDiskName disk = ProjectZoneDiskName.of("[PROJECT]", "[ZONE]", "[DISK]"); - * Boolean guestFlush = false; - * Snapshot snapshotResource = Snapshot.newBuilder().build(); - * Operation response = diskClient.createSnapshotDisk(disk, guestFlush, snapshotResource); + * Disk response = diskClient.getDisk(disk); * } * * @@ -138,7 +134,7 @@ * * try (FirewallClient firewallClient = FirewallClient.create()) { * ProjectGlobalFirewallName firewall = ProjectGlobalFirewallName.of("[PROJECT]", "[FIREWALL]"); - * Operation response = firewallClient.deleteFirewall(firewall); + * Firewall response = firewallClient.getFirewall(firewall); * } * * @@ -153,7 +149,7 @@ * * try (ForwardingRuleClient forwardingRuleClient = ForwardingRuleClient.create()) { * ProjectRegionForwardingRuleName forwardingRule = ProjectRegionForwardingRuleName.of("[PROJECT]", "[REGION]", "[FORWARDING_RULE]"); - * Operation response = forwardingRuleClient.deleteForwardingRule(forwardingRule); + * ForwardingRule response = forwardingRuleClient.getForwardingRule(forwardingRule); * } * * @@ -168,7 +164,7 @@ * * try (GlobalAddressClient globalAddressClient = GlobalAddressClient.create()) { * ProjectGlobalAddressName address = ProjectGlobalAddressName.of("[PROJECT]", "[ADDRESS]"); - * Operation response = globalAddressClient.deleteGlobalAddress(address); + * Address response = globalAddressClient.getGlobalAddress(address); * } * * @@ -183,7 +179,7 @@ * * try (GlobalForwardingRuleClient globalForwardingRuleClient = GlobalForwardingRuleClient.create()) { * ProjectGlobalForwardingRuleName forwardingRule = ProjectGlobalForwardingRuleName.of("[PROJECT]", "[FORWARDING_RULE]"); - * Operation response = globalForwardingRuleClient.deleteGlobalForwardingRule(forwardingRule); + * ForwardingRule response = globalForwardingRuleClient.getGlobalForwardingRule(forwardingRule); * } * * @@ -213,7 +209,7 @@ * * try (HealthCheckClient healthCheckClient = HealthCheckClient.create()) { * ProjectGlobalHealthCheckName healthCheck = ProjectGlobalHealthCheckName.of("[PROJECT]", "[HEALTH_CHECK]"); - * Operation response = healthCheckClient.deleteHealthCheck(healthCheck); + * HealthCheck response = healthCheckClient.getHealthCheck(healthCheck); * } * * @@ -228,7 +224,7 @@ * * try (HttpHealthCheckClient httpHealthCheckClient = HttpHealthCheckClient.create()) { * ProjectGlobalHttpHealthCheckName httpHealthCheck = ProjectGlobalHttpHealthCheckName.of("[PROJECT]", "[HTTP_HEALTH_CHECK]"); - * Operation response = httpHealthCheckClient.deleteHttpHealthCheck(httpHealthCheck); + * HttpHealthCheck2 response = httpHealthCheckClient.getHttpHealthCheck(httpHealthCheck); * } * * @@ -243,7 +239,7 @@ * * try (HttpsHealthCheckClient httpsHealthCheckClient = HttpsHealthCheckClient.create()) { * ProjectGlobalHttpsHealthCheckName httpsHealthCheck = ProjectGlobalHttpsHealthCheckName.of("[PROJECT]", "[HTTPS_HEALTH_CHECK]"); - * Operation response = httpsHealthCheckClient.deleteHttpsHealthCheck(httpsHealthCheck); + * HttpsHealthCheck2 response = httpsHealthCheckClient.getHttpsHealthCheck(httpsHealthCheck); * } * * @@ -258,7 +254,7 @@ * * try (ImageClient imageClient = ImageClient.create()) { * ProjectGlobalImageName image = ProjectGlobalImageName.of("[PROJECT]", "[IMAGE]"); - * Operation response = imageClient.deleteImage(image); + * Image response = imageClient.getImage(image); * } * * @@ -273,8 +269,7 @@ * * try (InstanceGroupManagerClient instanceGroupManagerClient = InstanceGroupManagerClient.create()) { * ProjectZoneInstanceGroupManagerName instanceGroupManager = ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]"); - * InstanceGroupManagersAbandonInstancesRequest instanceGroupManagersAbandonInstancesRequestResource = InstanceGroupManagersAbandonInstancesRequest.newBuilder().build(); - * Operation response = instanceGroupManagerClient.abandonInstancesInstanceGroupManager(instanceGroupManager, instanceGroupManagersAbandonInstancesRequestResource); + * InstanceGroupManager response = instanceGroupManagerClient.getInstanceGroupManager(instanceGroupManager); * } * * @@ -289,8 +284,7 @@ * * try (InstanceGroupClient instanceGroupClient = InstanceGroupClient.create()) { * ProjectZoneInstanceGroupName instanceGroup = ProjectZoneInstanceGroupName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP]"); - * InstanceGroupsAddInstancesRequest instanceGroupsAddInstancesRequestResource = InstanceGroupsAddInstancesRequest.newBuilder().build(); - * Operation response = instanceGroupClient.addInstancesInstanceGroup(instanceGroup, instanceGroupsAddInstancesRequestResource); + * InstanceGroup response = instanceGroupClient.getInstanceGroup(instanceGroup); * } * * @@ -305,7 +299,7 @@ * * try (InstanceTemplateClient instanceTemplateClient = InstanceTemplateClient.create()) { * ProjectGlobalInstanceTemplateName instanceTemplate = ProjectGlobalInstanceTemplateName.of("[PROJECT]", "[INSTANCE_TEMPLATE]"); - * Operation response = instanceTemplateClient.deleteInstanceTemplate(instanceTemplate); + * InstanceTemplate response = instanceTemplateClient.getInstanceTemplate(instanceTemplate); * } * * @@ -320,9 +314,7 @@ * * try (InstanceClient instanceClient = InstanceClient.create()) { * ProjectZoneInstanceName instance = ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]"); - * String networkInterface = ""; - * AccessConfig accessConfigResource = AccessConfig.newBuilder().build(); - * Operation response = instanceClient.addAccessConfigInstance(instance, networkInterface, accessConfigResource); + * Instance response = instanceClient.getInstance(instance); * } * * @@ -337,7 +329,7 @@ * * try (InterconnectAttachmentClient interconnectAttachmentClient = InterconnectAttachmentClient.create()) { * ProjectRegionInterconnectAttachmentName interconnectAttachment = ProjectRegionInterconnectAttachmentName.of("[PROJECT]", "[REGION]", "[INTERCONNECT_ATTACHMENT]"); - * Operation response = interconnectAttachmentClient.deleteInterconnectAttachment(interconnectAttachment); + * InterconnectAttachment response = interconnectAttachmentClient.getInterconnectAttachment(interconnectAttachment); * } * * @@ -367,7 +359,7 @@ * * try (InterconnectClient interconnectClient = InterconnectClient.create()) { * ProjectGlobalInterconnectName interconnect = ProjectGlobalInterconnectName.of("[PROJECT]", "[INTERCONNECT]"); - * Operation response = interconnectClient.deleteInterconnect(interconnect); + * Interconnect response = interconnectClient.getInterconnect(interconnect); * } * * @@ -397,7 +389,7 @@ * * try (LicenseClient licenseClient = LicenseClient.create()) { * ProjectGlobalLicenseName license = ProjectGlobalLicenseName.of("[PROJECT]", "[LICENSE]"); - * Operation response = licenseClient.deleteLicense(license); + * License response = licenseClient.getLicense(license); * } * * @@ -427,8 +419,7 @@ * * try (NetworkClient networkClient = NetworkClient.create()) { * ProjectGlobalNetworkName network = ProjectGlobalNetworkName.of("[PROJECT]", "[NETWORK]"); - * NetworksAddPeeringRequest networksAddPeeringRequestResource = NetworksAddPeeringRequest.newBuilder().build(); - * Operation response = networkClient.addPeeringNetwork(network, networksAddPeeringRequestResource); + * Network response = networkClient.getNetwork(network); * } * * @@ -443,8 +434,7 @@ * * try (NodeGroupClient nodeGroupClient = NodeGroupClient.create()) { * ProjectZoneNodeGroupName nodeGroup = ProjectZoneNodeGroupName.of("[PROJECT]", "[ZONE]", "[NODE_GROUP]"); - * NodeGroupsAddNodesRequest nodeGroupsAddNodesRequestResource = NodeGroupsAddNodesRequest.newBuilder().build(); - * Operation response = nodeGroupClient.addNodesNodeGroup(nodeGroup, nodeGroupsAddNodesRequestResource); + * NodeGroup response = nodeGroupClient.getNodeGroup(nodeGroup); * } * * @@ -459,7 +449,7 @@ * * try (NodeTemplateClient nodeTemplateClient = NodeTemplateClient.create()) { * ProjectRegionNodeTemplateName nodeTemplate = ProjectRegionNodeTemplateName.of("[PROJECT]", "[REGION]", "[NODE_TEMPLATE]"); - * Operation response = nodeTemplateClient.deleteNodeTemplate(nodeTemplate); + * NodeTemplate response = nodeTemplateClient.getNodeTemplate(nodeTemplate); * } * * @@ -489,7 +479,7 @@ * * try (ProjectClient projectClient = ProjectClient.create()) { * ProjectName project = ProjectName.of("[PROJECT]"); - * Operation response = projectClient.disableXpnHostProject(project); + * Project response = projectClient.getProject(project); * } * * @@ -504,7 +494,7 @@ * * try (RegionAutoscalerClient regionAutoscalerClient = RegionAutoscalerClient.create()) { * ProjectRegionAutoscalerName autoscaler = ProjectRegionAutoscalerName.of("[PROJECT]", "[REGION]", "[AUTOSCALER]"); - * Operation response = regionAutoscalerClient.deleteRegionAutoscaler(autoscaler); + * Autoscaler response = regionAutoscalerClient.getRegionAutoscaler(autoscaler); * } * * @@ -519,7 +509,7 @@ * * try (RegionBackendServiceClient regionBackendServiceClient = RegionBackendServiceClient.create()) { * ProjectRegionBackendServiceName backendService = ProjectRegionBackendServiceName.of("[PROJECT]", "[REGION]", "[BACKEND_SERVICE]"); - * Operation response = regionBackendServiceClient.deleteRegionBackendService(backendService); + * BackendService response = regionBackendServiceClient.getRegionBackendService(backendService); * } * * @@ -564,8 +554,7 @@ * * try (RegionDiskClient regionDiskClient = RegionDiskClient.create()) { * ProjectRegionDiskName disk = ProjectRegionDiskName.of("[PROJECT]", "[REGION]", "[DISK]"); - * Snapshot snapshotResource = Snapshot.newBuilder().build(); - * Operation response = regionDiskClient.createSnapshotRegionDisk(disk, snapshotResource); + * Disk response = regionDiskClient.getRegionDisk(disk); * } * * @@ -581,8 +570,7 @@ * * try (RegionInstanceGroupManagerClient regionInstanceGroupManagerClient = RegionInstanceGroupManagerClient.create()) { * ProjectRegionInstanceGroupManagerName instanceGroupManager = ProjectRegionInstanceGroupManagerName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]"); - * RegionInstanceGroupManagersAbandonInstancesRequest regionInstanceGroupManagersAbandonInstancesRequestResource = RegionInstanceGroupManagersAbandonInstancesRequest.newBuilder().build(); - * Operation response = regionInstanceGroupManagerClient.abandonInstancesRegionInstanceGroupManager(instanceGroupManager, regionInstanceGroupManagersAbandonInstancesRequestResource); + * InstanceGroupManager response = regionInstanceGroupManagerClient.getRegionInstanceGroupManager(instanceGroupManager); * } * * @@ -642,7 +630,7 @@ * * try (RouterClient routerClient = RouterClient.create()) { * ProjectRegionRouterName router = ProjectRegionRouterName.of("[PROJECT]", "[REGION]", "[ROUTER]"); - * Operation response = routerClient.deleteRouter(router); + * Router response = routerClient.getRouter(router); * } * * @@ -657,7 +645,7 @@ * * try (RouteClient routeClient = RouteClient.create()) { * ProjectGlobalRouteName route = ProjectGlobalRouteName.of("[PROJECT]", "[ROUTE]"); - * Operation response = routeClient.deleteRoute(route); + * Route response = routeClient.getRoute(route); * } * * @@ -672,8 +660,7 @@ * * try (SecurityPolicyClient securityPolicyClient = SecurityPolicyClient.create()) { * ProjectGlobalSecurityPolicyName securityPolicy = ProjectGlobalSecurityPolicyName.of("[PROJECT]", "[SECURITY_POLICY]"); - * SecurityPolicyRule securityPolicyRuleResource = SecurityPolicyRule.newBuilder().build(); - * Operation response = securityPolicyClient.addRuleSecurityPolicy(securityPolicy, securityPolicyRuleResource); + * SecurityPolicy response = securityPolicyClient.getSecurityPolicy(securityPolicy); * } * * @@ -688,7 +675,7 @@ * * try (SnapshotClient snapshotClient = SnapshotClient.create()) { * ProjectGlobalSnapshotName snapshot = ProjectGlobalSnapshotName.of("[PROJECT]", "[SNAPSHOT]"); - * Operation response = snapshotClient.deleteSnapshot(snapshot); + * Snapshot response = snapshotClient.getSnapshot(snapshot); * } * * @@ -703,7 +690,7 @@ * * try (SslCertificateClient sslCertificateClient = SslCertificateClient.create()) { * ProjectGlobalSslCertificateName sslCertificate = ProjectGlobalSslCertificateName.of("[PROJECT]", "[SSL_CERTIFICATE]"); - * Operation response = sslCertificateClient.deleteSslCertificate(sslCertificate); + * SslCertificate response = sslCertificateClient.getSslCertificate(sslCertificate); * } * * @@ -718,7 +705,7 @@ * * try (SslPolicyClient sslPolicyClient = SslPolicyClient.create()) { * ProjectGlobalSslPolicyName sslPolicy = ProjectGlobalSslPolicyName.of("[PROJECT]", "[SSL_POLICY]"); - * Operation response = sslPolicyClient.deleteSslPolicy(sslPolicy); + * SslPolicy response = sslPolicyClient.getSslPolicy(sslPolicy); * } * * @@ -733,7 +720,7 @@ * * try (SubnetworkClient subnetworkClient = SubnetworkClient.create()) { * ProjectRegionSubnetworkName subnetwork = ProjectRegionSubnetworkName.of("[PROJECT]", "[REGION]", "[SUBNETWORK]"); - * Operation response = subnetworkClient.deleteSubnetwork(subnetwork); + * Subnetwork response = subnetworkClient.getSubnetwork(subnetwork); * } * * @@ -748,7 +735,7 @@ * * try (TargetHttpProxyClient targetHttpProxyClient = TargetHttpProxyClient.create()) { * ProjectGlobalTargetHttpProxyName targetHttpProxy = ProjectGlobalTargetHttpProxyName.of("[PROJECT]", "[TARGET_HTTP_PROXY]"); - * Operation response = targetHttpProxyClient.deleteTargetHttpProxy(targetHttpProxy); + * TargetHttpProxy response = targetHttpProxyClient.getTargetHttpProxy(targetHttpProxy); * } * * @@ -763,7 +750,7 @@ * * try (TargetHttpsProxyClient targetHttpsProxyClient = TargetHttpsProxyClient.create()) { * ProjectGlobalTargetHttpsProxyName targetHttpsProxy = ProjectGlobalTargetHttpsProxyName.of("[PROJECT]", "[TARGET_HTTPS_PROXY]"); - * Operation response = targetHttpsProxyClient.deleteTargetHttpsProxy(targetHttpsProxy); + * TargetHttpsProxy response = targetHttpsProxyClient.getTargetHttpsProxy(targetHttpsProxy); * } * * @@ -778,7 +765,7 @@ * * try (TargetInstanceClient targetInstanceClient = TargetInstanceClient.create()) { * ProjectZoneTargetInstanceName targetInstance = ProjectZoneTargetInstanceName.of("[PROJECT]", "[ZONE]", "[TARGET_INSTANCE]"); - * Operation response = targetInstanceClient.deleteTargetInstance(targetInstance); + * TargetInstance response = targetInstanceClient.getTargetInstance(targetInstance); * } * * @@ -793,8 +780,7 @@ * * try (TargetPoolClient targetPoolClient = TargetPoolClient.create()) { * ProjectRegionTargetPoolName targetPool = ProjectRegionTargetPoolName.of("[PROJECT]", "[REGION]", "[TARGET_POOL]"); - * TargetPoolsAddHealthCheckRequest targetPoolsAddHealthCheckRequestResource = TargetPoolsAddHealthCheckRequest.newBuilder().build(); - * Operation response = targetPoolClient.addHealthCheckTargetPool(targetPool, targetPoolsAddHealthCheckRequestResource); + * TargetPool response = targetPoolClient.getTargetPool(targetPool); * } * * @@ -809,7 +795,7 @@ * * try (TargetSslProxyClient targetSslProxyClient = TargetSslProxyClient.create()) { * ProjectGlobalTargetSslProxyName targetSslProxy = ProjectGlobalTargetSslProxyName.of("[PROJECT]", "[TARGET_SSL_PROXY]"); - * Operation response = targetSslProxyClient.deleteTargetSslProxy(targetSslProxy); + * TargetSslProxy response = targetSslProxyClient.getTargetSslProxy(targetSslProxy); * } * * @@ -824,7 +810,7 @@ * * try (TargetTcpProxyClient targetTcpProxyClient = TargetTcpProxyClient.create()) { * ProjectGlobalTargetTcpProxyName targetTcpProxy = ProjectGlobalTargetTcpProxyName.of("[PROJECT]", "[TARGET_TCP_PROXY]"); - * Operation response = targetTcpProxyClient.deleteTargetTcpProxy(targetTcpProxy); + * TargetTcpProxy response = targetTcpProxyClient.getTargetTcpProxy(targetTcpProxy); * } * * @@ -839,7 +825,7 @@ * * try (TargetVpnGatewayClient targetVpnGatewayClient = TargetVpnGatewayClient.create()) { * ProjectRegionTargetVpnGatewayName targetVpnGateway = ProjectRegionTargetVpnGatewayName.of("[PROJECT]", "[REGION]", "[TARGET_VPN_GATEWAY]"); - * Operation response = targetVpnGatewayClient.deleteTargetVpnGateway(targetVpnGateway); + * TargetVpnGateway response = targetVpnGatewayClient.getTargetVpnGateway(targetVpnGateway); * } * * @@ -854,7 +840,7 @@ * * try (UrlMapClient urlMapClient = UrlMapClient.create()) { * ProjectGlobalUrlMapName urlMap = ProjectGlobalUrlMapName.of("[PROJECT]", "[URL_MAP]"); - * Operation response = urlMapClient.deleteUrlMap(urlMap); + * UrlMap response = urlMapClient.getUrlMap(urlMap); * } * * @@ -869,7 +855,7 @@ * * try (VpnTunnelClient vpnTunnelClient = VpnTunnelClient.create()) { * ProjectRegionVpnTunnelName vpnTunnel = ProjectRegionVpnTunnelName.of("[PROJECT]", "[REGION]", "[VPN_TUNNEL]"); - * Operation response = vpnTunnelClient.deleteVpnTunnel(vpnTunnel); + * VpnTunnel response = vpnTunnelClient.getVpnTunnel(vpnTunnel); * } * * diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/AddressStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/AddressStub.java index 22bf14f60f80..49497f163e7c 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/AddressStub.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/AddressStub.java @@ -20,6 +20,8 @@ import com.google.api.core.BetaApi; import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.httpjson.EmptyMessage; +import com.google.api.gax.rpc.OperationCallable; import com.google.api.gax.rpc.UnaryCallable; import com.google.cloud.compute.v1.Address; import com.google.cloud.compute.v1.AddressAggregatedList; @@ -42,6 +44,11 @@ @BetaApi("A restructuring of stub classes is planned, so this may break in the future") public abstract class AddressStub implements BackgroundResource { + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public RegionOperationStub getOperationsStub() { + throw new UnsupportedOperationException("Not implemented: getOperationsStub()"); + } + @BetaApi public UnaryCallable aggregatedListAddressesPagedCallable() { @@ -55,6 +62,12 @@ public abstract class AddressStub implements BackgroundResource { throw new UnsupportedOperationException("Not implemented: aggregatedListAddressesCallable()"); } + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public OperationCallable + deleteAddressOperationCallable() { + throw new UnsupportedOperationException("Not implemented: deleteAddressOperationCallable()"); + } + @BetaApi public UnaryCallable deleteAddressCallable() { throw new UnsupportedOperationException("Not implemented: deleteAddressCallable()"); @@ -65,6 +78,12 @@ public UnaryCallable getAddressCallable() { throw new UnsupportedOperationException("Not implemented: getAddressCallable()"); } + @BetaApi("The surface for use by generated code is not stable yet and may change in the future.") + public OperationCallable + insertAddressOperationCallable() { + throw new UnsupportedOperationException("Not implemented: insertAddressOperationCallable()"); + } + @BetaApi public UnaryCallable insertAddressCallable() { throw new UnsupportedOperationException("Not implemented: insertAddressCallable()"); diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/AddressStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/AddressStubSettings.java index b55480be3ec8..898e9ff4aa2f 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/AddressStubSettings.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/AddressStubSettings.java @@ -24,13 +24,18 @@ import com.google.api.gax.core.GaxProperties; import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; +import com.google.api.gax.httpjson.ApiMessageOperationTransformers; +import com.google.api.gax.httpjson.EmptyMessage; import com.google.api.gax.httpjson.GaxHttpJsonProperties; import com.google.api.gax.httpjson.HttpJsonTransportChannel; import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; +import com.google.api.gax.longrunning.OperationSnapshot; +import com.google.api.gax.longrunning.OperationTimedPollAlgorithm; import com.google.api.gax.retrying.RetrySettings; import com.google.api.gax.rpc.ApiCallContext; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.OperationCallSettings; import com.google.api.gax.rpc.PageContext; import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.PagedListDescriptor; @@ -74,13 +79,13 @@ * *

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteAddress to 30 seconds: + * example, to set the total timeout of getAddress to 30 seconds: * *

  * 
  * AddressStubSettings.Builder addressSettingsBuilder =
  *     AddressStubSettings.newBuilder();
- * addressSettingsBuilder.deleteAddressSettings().getRetrySettings().toBuilder()
+ * addressSettingsBuilder.getAddressSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * AddressStubSettings addressSettings = addressSettingsBuilder.build();
  * 
@@ -106,8 +111,12 @@ public class AddressStubSettings extends StubSettings {
           AggregatedListAddressesPagedResponse>
       aggregatedListAddressesSettings;
   private final UnaryCallSettings deleteAddressSettings;
+  private final OperationCallSettings
+      deleteAddressOperationSettings;
   private final UnaryCallSettings getAddressSettings;
   private final UnaryCallSettings insertAddressSettings;
+  private final OperationCallSettings
+      insertAddressOperationSettings;
   private final PagedCallSettings
       listAddressesSettings;
 
@@ -125,6 +134,13 @@ public UnaryCallSettings deleteAddressSetti
     return deleteAddressSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteAddress. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteAddressOperationSettings() {
+    return deleteAddressOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getAddress. */
   public UnaryCallSettings getAddressSettings() {
     return getAddressSettings;
@@ -135,6 +151,13 @@ public UnaryCallSettings insertAddressSetti
     return insertAddressSettings;
   }
 
+  /** Returns the object with the settings used for calls to insertAddress. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertAddressOperationSettings() {
+    return insertAddressOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listAddresses. */
   public PagedCallSettings
       listAddressesSettings() {
@@ -217,8 +240,10 @@ protected AddressStubSettings(Builder settingsBuilder) throws IOException {
 
     aggregatedListAddressesSettings = settingsBuilder.aggregatedListAddressesSettings().build();
     deleteAddressSettings = settingsBuilder.deleteAddressSettings().build();
+    deleteAddressOperationSettings = settingsBuilder.deleteAddressOperationSettings().build();
     getAddressSettings = settingsBuilder.getAddressSettings().build();
     insertAddressSettings = settingsBuilder.insertAddressSettings().build();
+    insertAddressOperationSettings = settingsBuilder.insertAddressOperationSettings().build();
     listAddressesSettings = settingsBuilder.listAddressesSettings().build();
   }
 
@@ -358,9 +383,13 @@ public static class Builder extends StubSettings.Builder
         deleteAddressSettings;
+    private final OperationCallSettings.Builder
+        deleteAddressOperationSettings;
     private final UnaryCallSettings.Builder getAddressSettings;
     private final UnaryCallSettings.Builder
         insertAddressSettings;
+    private final OperationCallSettings.Builder
+        insertAddressOperationSettings;
     private final PagedCallSettings.Builder<
             ListAddressesHttpRequest, AddressList, ListAddressesPagedResponse>
         listAddressesSettings;
@@ -411,10 +440,14 @@ protected Builder(ClientContext clientContext) {
 
       deleteAddressSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteAddressOperationSettings = OperationCallSettings.newBuilder();
+
       getAddressSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertAddressSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertAddressOperationSettings = OperationCallSettings.newBuilder();
+
       listAddressesSettings = PagedCallSettings.newBuilder(LIST_ADDRESSES_PAGE_STR_FACT);
 
       unaryMethodSettingsBuilders =
@@ -463,6 +496,48 @@ private static Builder initDefaults(Builder builder) {
           .listAddressesSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteAddressOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertAddressOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -472,8 +547,10 @@ protected Builder(AddressStubSettings settings) {
 
       aggregatedListAddressesSettings = settings.aggregatedListAddressesSettings.toBuilder();
       deleteAddressSettings = settings.deleteAddressSettings.toBuilder();
+      deleteAddressOperationSettings = settings.deleteAddressOperationSettings.toBuilder();
       getAddressSettings = settings.getAddressSettings.toBuilder();
       insertAddressSettings = settings.insertAddressSettings.toBuilder();
+      insertAddressOperationSettings = settings.insertAddressOperationSettings.toBuilder();
       listAddressesSettings = settings.listAddressesSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
@@ -515,6 +592,14 @@ public UnaryCallSettings.Builder deleteAddr
       return deleteAddressSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteAddress. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteAddressOperationSettings() {
+      return deleteAddressOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getAddress. */
     public UnaryCallSettings.Builder getAddressSettings() {
       return getAddressSettings;
@@ -525,6 +610,14 @@ public UnaryCallSettings.Builder insertAddr
       return insertAddressSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertAddress. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertAddressOperationSettings() {
+      return insertAddressOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listAddresses. */
     public PagedCallSettings.Builder<
             ListAddressesHttpRequest, AddressList, ListAddressesPagedResponse>
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/AutoscalerStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/AutoscalerStub.java
index d713b8e587c6..6da38a56f5f5 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/AutoscalerStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/AutoscalerStub.java
@@ -20,6 +20,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.AggregatedListAutoscalersHttpRequest;
 import com.google.cloud.compute.v1.Autoscaler;
@@ -44,6 +46,11 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class AutoscalerStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public ZoneOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
   @BetaApi
   public UnaryCallable
       aggregatedListAutoscalersPagedCallable() {
@@ -57,6 +64,12 @@ public abstract class AutoscalerStub implements BackgroundResource {
     throw new UnsupportedOperationException("Not implemented: aggregatedListAutoscalersCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteAutoscalerOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: deleteAutoscalerOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteAutoscalerCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteAutoscalerCallable()");
@@ -67,6 +80,12 @@ public UnaryCallable getAutoscalerCallable
     throw new UnsupportedOperationException("Not implemented: getAutoscalerCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertAutoscalerOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: insertAutoscalerOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertAutoscalerCallable() {
     throw new UnsupportedOperationException("Not implemented: insertAutoscalerCallable()");
@@ -83,11 +102,23 @@ public UnaryCallable listAutoscalers
     throw new UnsupportedOperationException("Not implemented: listAutoscalersCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchAutoscalerOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: patchAutoscalerOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable patchAutoscalerCallable() {
     throw new UnsupportedOperationException("Not implemented: patchAutoscalerCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      updateAutoscalerOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: updateAutoscalerOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable updateAutoscalerCallable() {
     throw new UnsupportedOperationException("Not implemented: updateAutoscalerCallable()");
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/AutoscalerStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/AutoscalerStubSettings.java
index 546c6997be9f..1b180e696e6d 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/AutoscalerStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/AutoscalerStubSettings.java
@@ -24,13 +24,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -76,13 +81,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteAutoscaler to 30 seconds: + * example, to set the total timeout of getAutoscaler to 30 seconds: * *

  * 
  * AutoscalerStubSettings.Builder autoscalerSettingsBuilder =
  *     AutoscalerStubSettings.newBuilder();
- * autoscalerSettingsBuilder.deleteAutoscalerSettings().getRetrySettings().toBuilder()
+ * autoscalerSettingsBuilder.getAutoscalerSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * AutoscalerStubSettings autoscalerSettings = autoscalerSettingsBuilder.build();
  * 
@@ -108,13 +113,21 @@ public class AutoscalerStubSettings extends StubSettings
           AggregatedListAutoscalersPagedResponse>
       aggregatedListAutoscalersSettings;
   private final UnaryCallSettings deleteAutoscalerSettings;
+  private final OperationCallSettings
+      deleteAutoscalerOperationSettings;
   private final UnaryCallSettings getAutoscalerSettings;
   private final UnaryCallSettings insertAutoscalerSettings;
+  private final OperationCallSettings
+      insertAutoscalerOperationSettings;
   private final PagedCallSettings<
           ListAutoscalersHttpRequest, AutoscalerList, ListAutoscalersPagedResponse>
       listAutoscalersSettings;
   private final UnaryCallSettings patchAutoscalerSettings;
+  private final OperationCallSettings
+      patchAutoscalerOperationSettings;
   private final UnaryCallSettings updateAutoscalerSettings;
+  private final OperationCallSettings
+      updateAutoscalerOperationSettings;
 
   /** Returns the object with the settings used for calls to aggregatedListAutoscalers. */
   public PagedCallSettings<
@@ -130,6 +143,13 @@ public UnaryCallSettings deleteAutoscale
     return deleteAutoscalerSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteAutoscaler. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteAutoscalerOperationSettings() {
+    return deleteAutoscalerOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getAutoscaler. */
   public UnaryCallSettings getAutoscalerSettings() {
     return getAutoscalerSettings;
@@ -140,6 +160,13 @@ public UnaryCallSettings insertAutoscale
     return insertAutoscalerSettings;
   }
 
+  /** Returns the object with the settings used for calls to insertAutoscaler. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertAutoscalerOperationSettings() {
+    return insertAutoscalerOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listAutoscalers. */
   public PagedCallSettings
       listAutoscalersSettings() {
@@ -151,11 +178,25 @@ public UnaryCallSettings patchAutoscalerS
     return patchAutoscalerSettings;
   }
 
+  /** Returns the object with the settings used for calls to patchAutoscaler. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      patchAutoscalerOperationSettings() {
+    return patchAutoscalerOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to updateAutoscaler. */
   public UnaryCallSettings updateAutoscalerSettings() {
     return updateAutoscalerSettings;
   }
 
+  /** Returns the object with the settings used for calls to updateAutoscaler. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      updateAutoscalerOperationSettings() {
+    return updateAutoscalerOperationSettings;
+  }
+
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   public AutoscalerStub createStub() throws IOException {
     if (getTransportChannelProvider()
@@ -233,11 +274,15 @@ protected AutoscalerStubSettings(Builder settingsBuilder) throws IOException {
 
     aggregatedListAutoscalersSettings = settingsBuilder.aggregatedListAutoscalersSettings().build();
     deleteAutoscalerSettings = settingsBuilder.deleteAutoscalerSettings().build();
+    deleteAutoscalerOperationSettings = settingsBuilder.deleteAutoscalerOperationSettings().build();
     getAutoscalerSettings = settingsBuilder.getAutoscalerSettings().build();
     insertAutoscalerSettings = settingsBuilder.insertAutoscalerSettings().build();
+    insertAutoscalerOperationSettings = settingsBuilder.insertAutoscalerOperationSettings().build();
     listAutoscalersSettings = settingsBuilder.listAutoscalersSettings().build();
     patchAutoscalerSettings = settingsBuilder.patchAutoscalerSettings().build();
+    patchAutoscalerOperationSettings = settingsBuilder.patchAutoscalerOperationSettings().build();
     updateAutoscalerSettings = settingsBuilder.updateAutoscalerSettings().build();
+    updateAutoscalerOperationSettings = settingsBuilder.updateAutoscalerOperationSettings().build();
   }
 
   private static final PagedListDescriptor<
@@ -381,17 +426,28 @@ public static class Builder extends StubSettings.Builder
         deleteAutoscalerSettings;
+    private final OperationCallSettings.Builder<
+            DeleteAutoscalerHttpRequest, EmptyMessage, Operation>
+        deleteAutoscalerOperationSettings;
     private final UnaryCallSettings.Builder
         getAutoscalerSettings;
     private final UnaryCallSettings.Builder
         insertAutoscalerSettings;
+    private final OperationCallSettings.Builder<
+            InsertAutoscalerHttpRequest, EmptyMessage, Operation>
+        insertAutoscalerOperationSettings;
     private final PagedCallSettings.Builder<
             ListAutoscalersHttpRequest, AutoscalerList, ListAutoscalersPagedResponse>
         listAutoscalersSettings;
     private final UnaryCallSettings.Builder
         patchAutoscalerSettings;
+    private final OperationCallSettings.Builder
+        patchAutoscalerOperationSettings;
     private final UnaryCallSettings.Builder
         updateAutoscalerSettings;
+    private final OperationCallSettings.Builder<
+            UpdateAutoscalerHttpRequest, EmptyMessage, Operation>
+        updateAutoscalerOperationSettings;
 
     private static final ImmutableMap>
         RETRYABLE_CODE_DEFINITIONS;
@@ -439,16 +495,24 @@ protected Builder(ClientContext clientContext) {
 
       deleteAutoscalerSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteAutoscalerOperationSettings = OperationCallSettings.newBuilder();
+
       getAutoscalerSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertAutoscalerSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertAutoscalerOperationSettings = OperationCallSettings.newBuilder();
+
       listAutoscalersSettings = PagedCallSettings.newBuilder(LIST_AUTOSCALERS_PAGE_STR_FACT);
 
       patchAutoscalerSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      patchAutoscalerOperationSettings = OperationCallSettings.newBuilder();
+
       updateAutoscalerSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      updateAutoscalerOperationSettings = OperationCallSettings.newBuilder();
+
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
               aggregatedListAutoscalersSettings,
@@ -507,6 +571,90 @@ private static Builder initDefaults(Builder builder) {
           .updateAutoscalerSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteAutoscalerOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertAutoscalerOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .patchAutoscalerOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .updateAutoscalerOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -516,11 +664,15 @@ protected Builder(AutoscalerStubSettings settings) {
 
       aggregatedListAutoscalersSettings = settings.aggregatedListAutoscalersSettings.toBuilder();
       deleteAutoscalerSettings = settings.deleteAutoscalerSettings.toBuilder();
+      deleteAutoscalerOperationSettings = settings.deleteAutoscalerOperationSettings.toBuilder();
       getAutoscalerSettings = settings.getAutoscalerSettings.toBuilder();
       insertAutoscalerSettings = settings.insertAutoscalerSettings.toBuilder();
+      insertAutoscalerOperationSettings = settings.insertAutoscalerOperationSettings.toBuilder();
       listAutoscalersSettings = settings.listAutoscalersSettings.toBuilder();
       patchAutoscalerSettings = settings.patchAutoscalerSettings.toBuilder();
+      patchAutoscalerOperationSettings = settings.patchAutoscalerOperationSettings.toBuilder();
       updateAutoscalerSettings = settings.updateAutoscalerSettings.toBuilder();
+      updateAutoscalerOperationSettings = settings.updateAutoscalerOperationSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
@@ -564,6 +716,14 @@ public Builder applyToAllUnaryMethods(
       return deleteAutoscalerSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteAutoscaler. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteAutoscalerOperationSettings() {
+      return deleteAutoscalerOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getAutoscaler. */
     public UnaryCallSettings.Builder getAutoscalerSettings() {
       return getAutoscalerSettings;
@@ -575,6 +735,14 @@ public UnaryCallSettings.Builder getAutosc
       return insertAutoscalerSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertAutoscaler. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertAutoscalerOperationSettings() {
+      return insertAutoscalerOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listAutoscalers. */
     public PagedCallSettings.Builder<
             ListAutoscalersHttpRequest, AutoscalerList, ListAutoscalersPagedResponse>
@@ -588,12 +756,28 @@ public UnaryCallSettings.Builder getAutosc
       return patchAutoscalerSettings;
     }
 
+    /** Returns the builder for the settings used for calls to patchAutoscaler. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchAutoscalerOperationSettings() {
+      return patchAutoscalerOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to updateAutoscaler. */
     public UnaryCallSettings.Builder
         updateAutoscalerSettings() {
       return updateAutoscalerSettings;
     }
 
+    /** Returns the builder for the settings used for calls to updateAutoscaler. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        updateAutoscalerOperationSettings() {
+      return updateAutoscalerOperationSettings;
+    }
+
     @Override
     public AutoscalerStubSettings build() throws IOException {
       return new AutoscalerStubSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/BackendBucketStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/BackendBucketStub.java
index 0b11c5b40aee..43a9f03ad958 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/BackendBucketStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/BackendBucketStub.java
@@ -19,6 +19,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.AddSignedUrlKeyBackendBucketHttpRequest;
 import com.google.cloud.compute.v1.BackendBucket;
@@ -43,6 +45,18 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class BackendBucketStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public GlobalOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      addSignedUrlKeyBackendBucketOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: addSignedUrlKeyBackendBucketOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       addSignedUrlKeyBackendBucketCallable() {
@@ -50,11 +64,25 @@ public abstract class BackendBucketStub implements BackgroundResource {
         "Not implemented: addSignedUrlKeyBackendBucketCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteBackendBucketOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteBackendBucketOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteBackendBucketCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteBackendBucketCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteSignedUrlKeyBackendBucketOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteSignedUrlKeyBackendBucketOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       deleteSignedUrlKeyBackendBucketCallable() {
@@ -67,6 +95,13 @@ public UnaryCallable getBackendBucke
     throw new UnsupportedOperationException("Not implemented: getBackendBucketCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertBackendBucketOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: insertBackendBucketOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertBackendBucketCallable() {
     throw new UnsupportedOperationException("Not implemented: insertBackendBucketCallable()");
@@ -84,11 +119,25 @@ public UnaryCallable insertBackendBuc
     throw new UnsupportedOperationException("Not implemented: listBackendBucketsCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchBackendBucketOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: patchBackendBucketOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable patchBackendBucketCallable() {
     throw new UnsupportedOperationException("Not implemented: patchBackendBucketCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      updateBackendBucketOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: updateBackendBucketOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable updateBackendBucketCallable() {
     throw new UnsupportedOperationException("Not implemented: updateBackendBucketCallable()");
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/BackendBucketStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/BackendBucketStubSettings.java
index acdd245d802a..f1897a05e0cf 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/BackendBucketStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/BackendBucketStubSettings.java
@@ -23,13 +23,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -74,13 +79,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of addSignedUrlKeyBackendBucket to 30 seconds: + * example, to set the total timeout of getBackendBucket to 30 seconds: * *

  * 
  * BackendBucketStubSettings.Builder backendBucketSettingsBuilder =
  *     BackendBucketStubSettings.newBuilder();
- * backendBucketSettingsBuilder.addSignedUrlKeyBackendBucketSettings().getRetrySettings().toBuilder()
+ * backendBucketSettingsBuilder.getBackendBucketSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * BackendBucketStubSettings backendBucketSettings = backendBucketSettingsBuilder.build();
  * 
@@ -102,21 +107,35 @@ public class BackendBucketStubSettings extends StubSettings
       addSignedUrlKeyBackendBucketSettings;
+  private final OperationCallSettings<
+          AddSignedUrlKeyBackendBucketHttpRequest, EmptyMessage, Operation>
+      addSignedUrlKeyBackendBucketOperationSettings;
   private final UnaryCallSettings
       deleteBackendBucketSettings;
+  private final OperationCallSettings
+      deleteBackendBucketOperationSettings;
   private final UnaryCallSettings
       deleteSignedUrlKeyBackendBucketSettings;
+  private final OperationCallSettings<
+          DeleteSignedUrlKeyBackendBucketHttpRequest, EmptyMessage, Operation>
+      deleteSignedUrlKeyBackendBucketOperationSettings;
   private final UnaryCallSettings
       getBackendBucketSettings;
   private final UnaryCallSettings
       insertBackendBucketSettings;
+  private final OperationCallSettings
+      insertBackendBucketOperationSettings;
   private final PagedCallSettings<
           ListBackendBucketsHttpRequest, BackendBucketList, ListBackendBucketsPagedResponse>
       listBackendBucketsSettings;
   private final UnaryCallSettings
       patchBackendBucketSettings;
+  private final OperationCallSettings
+      patchBackendBucketOperationSettings;
   private final UnaryCallSettings
       updateBackendBucketSettings;
+  private final OperationCallSettings
+      updateBackendBucketOperationSettings;
 
   /** Returns the object with the settings used for calls to addSignedUrlKeyBackendBucket. */
   public UnaryCallSettings
@@ -124,18 +143,39 @@ public class BackendBucketStubSettings extends StubSettings
+      addSignedUrlKeyBackendBucketOperationSettings() {
+    return addSignedUrlKeyBackendBucketOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to deleteBackendBucket. */
   public UnaryCallSettings
       deleteBackendBucketSettings() {
     return deleteBackendBucketSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteBackendBucket. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteBackendBucketOperationSettings() {
+    return deleteBackendBucketOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to deleteSignedUrlKeyBackendBucket. */
   public UnaryCallSettings
       deleteSignedUrlKeyBackendBucketSettings() {
     return deleteSignedUrlKeyBackendBucketSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteSignedUrlKeyBackendBucket. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteSignedUrlKeyBackendBucketOperationSettings() {
+    return deleteSignedUrlKeyBackendBucketOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getBackendBucket. */
   public UnaryCallSettings getBackendBucketSettings() {
     return getBackendBucketSettings;
@@ -147,6 +187,13 @@ public UnaryCallSettings getBackendB
     return insertBackendBucketSettings;
   }
 
+  /** Returns the object with the settings used for calls to insertBackendBucket. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertBackendBucketOperationSettings() {
+    return insertBackendBucketOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listBackendBuckets. */
   public PagedCallSettings<
           ListBackendBucketsHttpRequest, BackendBucketList, ListBackendBucketsPagedResponse>
@@ -159,12 +206,26 @@ public UnaryCallSettings patchBackendB
     return patchBackendBucketSettings;
   }
 
+  /** Returns the object with the settings used for calls to patchBackendBucket. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      patchBackendBucketOperationSettings() {
+    return patchBackendBucketOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to updateBackendBucket. */
   public UnaryCallSettings
       updateBackendBucketSettings() {
     return updateBackendBucketSettings;
   }
 
+  /** Returns the object with the settings used for calls to updateBackendBucket. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      updateBackendBucketOperationSettings() {
+    return updateBackendBucketOperationSettings;
+  }
+
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   public BackendBucketStub createStub() throws IOException {
     if (getTransportChannelProvider()
@@ -242,14 +303,26 @@ protected BackendBucketStubSettings(Builder settingsBuilder) throws IOException
 
     addSignedUrlKeyBackendBucketSettings =
         settingsBuilder.addSignedUrlKeyBackendBucketSettings().build();
+    addSignedUrlKeyBackendBucketOperationSettings =
+        settingsBuilder.addSignedUrlKeyBackendBucketOperationSettings().build();
     deleteBackendBucketSettings = settingsBuilder.deleteBackendBucketSettings().build();
+    deleteBackendBucketOperationSettings =
+        settingsBuilder.deleteBackendBucketOperationSettings().build();
     deleteSignedUrlKeyBackendBucketSettings =
         settingsBuilder.deleteSignedUrlKeyBackendBucketSettings().build();
+    deleteSignedUrlKeyBackendBucketOperationSettings =
+        settingsBuilder.deleteSignedUrlKeyBackendBucketOperationSettings().build();
     getBackendBucketSettings = settingsBuilder.getBackendBucketSettings().build();
     insertBackendBucketSettings = settingsBuilder.insertBackendBucketSettings().build();
+    insertBackendBucketOperationSettings =
+        settingsBuilder.insertBackendBucketOperationSettings().build();
     listBackendBucketsSettings = settingsBuilder.listBackendBucketsSettings().build();
     patchBackendBucketSettings = settingsBuilder.patchBackendBucketSettings().build();
+    patchBackendBucketOperationSettings =
+        settingsBuilder.patchBackendBucketOperationSettings().build();
     updateBackendBucketSettings = settingsBuilder.updateBackendBucketSettings().build();
+    updateBackendBucketOperationSettings =
+        settingsBuilder.updateBackendBucketOperationSettings().build();
   }
 
   private static final PagedListDescriptor<
@@ -319,21 +392,39 @@ public static class Builder extends StubSettings.Builder
         addSignedUrlKeyBackendBucketSettings;
+    private final OperationCallSettings.Builder<
+            AddSignedUrlKeyBackendBucketHttpRequest, EmptyMessage, Operation>
+        addSignedUrlKeyBackendBucketOperationSettings;
     private final UnaryCallSettings.Builder
         deleteBackendBucketSettings;
+    private final OperationCallSettings.Builder<
+            DeleteBackendBucketHttpRequest, EmptyMessage, Operation>
+        deleteBackendBucketOperationSettings;
     private final UnaryCallSettings.Builder
         deleteSignedUrlKeyBackendBucketSettings;
+    private final OperationCallSettings.Builder<
+            DeleteSignedUrlKeyBackendBucketHttpRequest, EmptyMessage, Operation>
+        deleteSignedUrlKeyBackendBucketOperationSettings;
     private final UnaryCallSettings.Builder
         getBackendBucketSettings;
     private final UnaryCallSettings.Builder
         insertBackendBucketSettings;
+    private final OperationCallSettings.Builder<
+            InsertBackendBucketHttpRequest, EmptyMessage, Operation>
+        insertBackendBucketOperationSettings;
     private final PagedCallSettings.Builder<
             ListBackendBucketsHttpRequest, BackendBucketList, ListBackendBucketsPagedResponse>
         listBackendBucketsSettings;
     private final UnaryCallSettings.Builder
         patchBackendBucketSettings;
+    private final OperationCallSettings.Builder<
+            PatchBackendBucketHttpRequest, EmptyMessage, Operation>
+        patchBackendBucketOperationSettings;
     private final UnaryCallSettings.Builder
         updateBackendBucketSettings;
+    private final OperationCallSettings.Builder<
+            UpdateBackendBucketHttpRequest, EmptyMessage, Operation>
+        updateBackendBucketOperationSettings;
 
     private static final ImmutableMap>
         RETRYABLE_CODE_DEFINITIONS;
@@ -378,20 +469,32 @@ protected Builder(ClientContext clientContext) {
 
       addSignedUrlKeyBackendBucketSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      addSignedUrlKeyBackendBucketOperationSettings = OperationCallSettings.newBuilder();
+
       deleteBackendBucketSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteBackendBucketOperationSettings = OperationCallSettings.newBuilder();
+
       deleteSignedUrlKeyBackendBucketSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteSignedUrlKeyBackendBucketOperationSettings = OperationCallSettings.newBuilder();
+
       getBackendBucketSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertBackendBucketSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertBackendBucketOperationSettings = OperationCallSettings.newBuilder();
+
       listBackendBucketsSettings = PagedCallSettings.newBuilder(LIST_BACKEND_BUCKETS_PAGE_STR_FACT);
 
       patchBackendBucketSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      patchBackendBucketOperationSettings = OperationCallSettings.newBuilder();
+
       updateBackendBucketSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      updateBackendBucketOperationSettings = OperationCallSettings.newBuilder();
+
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
               addSignedUrlKeyBackendBucketSettings,
@@ -456,6 +559,134 @@ private static Builder initDefaults(Builder builder) {
           .updateBackendBucketSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .addSignedUrlKeyBackendBucketOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .deleteBackendBucketOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .deleteSignedUrlKeyBackendBucketOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertBackendBucketOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .patchBackendBucketOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .updateBackendBucketOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -465,14 +696,26 @@ protected Builder(BackendBucketStubSettings settings) {
 
       addSignedUrlKeyBackendBucketSettings =
           settings.addSignedUrlKeyBackendBucketSettings.toBuilder();
+      addSignedUrlKeyBackendBucketOperationSettings =
+          settings.addSignedUrlKeyBackendBucketOperationSettings.toBuilder();
       deleteBackendBucketSettings = settings.deleteBackendBucketSettings.toBuilder();
+      deleteBackendBucketOperationSettings =
+          settings.deleteBackendBucketOperationSettings.toBuilder();
       deleteSignedUrlKeyBackendBucketSettings =
           settings.deleteSignedUrlKeyBackendBucketSettings.toBuilder();
+      deleteSignedUrlKeyBackendBucketOperationSettings =
+          settings.deleteSignedUrlKeyBackendBucketOperationSettings.toBuilder();
       getBackendBucketSettings = settings.getBackendBucketSettings.toBuilder();
       insertBackendBucketSettings = settings.insertBackendBucketSettings.toBuilder();
+      insertBackendBucketOperationSettings =
+          settings.insertBackendBucketOperationSettings.toBuilder();
       listBackendBucketsSettings = settings.listBackendBucketsSettings.toBuilder();
       patchBackendBucketSettings = settings.patchBackendBucketSettings.toBuilder();
+      patchBackendBucketOperationSettings =
+          settings.patchBackendBucketOperationSettings.toBuilder();
       updateBackendBucketSettings = settings.updateBackendBucketSettings.toBuilder();
+      updateBackendBucketOperationSettings =
+          settings.updateBackendBucketOperationSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
@@ -508,18 +751,44 @@ public Builder applyToAllUnaryMethods(
       return addSignedUrlKeyBackendBucketSettings;
     }
 
+    /** Returns the builder for the settings used for calls to addSignedUrlKeyBackendBucket. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            AddSignedUrlKeyBackendBucketHttpRequest, EmptyMessage, Operation>
+        addSignedUrlKeyBackendBucketOperationSettings() {
+      return addSignedUrlKeyBackendBucketOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to deleteBackendBucket. */
     public UnaryCallSettings.Builder
         deleteBackendBucketSettings() {
       return deleteBackendBucketSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteBackendBucket. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteBackendBucketOperationSettings() {
+      return deleteBackendBucketOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to deleteSignedUrlKeyBackendBucket. */
     public UnaryCallSettings.Builder
         deleteSignedUrlKeyBackendBucketSettings() {
       return deleteSignedUrlKeyBackendBucketSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteSignedUrlKeyBackendBucket. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            DeleteSignedUrlKeyBackendBucketHttpRequest, EmptyMessage, Operation>
+        deleteSignedUrlKeyBackendBucketOperationSettings() {
+      return deleteSignedUrlKeyBackendBucketOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getBackendBucket. */
     public UnaryCallSettings.Builder
         getBackendBucketSettings() {
@@ -532,6 +801,14 @@ public Builder applyToAllUnaryMethods(
       return insertBackendBucketSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertBackendBucket. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertBackendBucketOperationSettings() {
+      return insertBackendBucketOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listBackendBuckets. */
     public PagedCallSettings.Builder<
             ListBackendBucketsHttpRequest, BackendBucketList, ListBackendBucketsPagedResponse>
@@ -545,12 +822,28 @@ public Builder applyToAllUnaryMethods(
       return patchBackendBucketSettings;
     }
 
+    /** Returns the builder for the settings used for calls to patchBackendBucket. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchBackendBucketOperationSettings() {
+      return patchBackendBucketOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to updateBackendBucket. */
     public UnaryCallSettings.Builder
         updateBackendBucketSettings() {
       return updateBackendBucketSettings;
     }
 
+    /** Returns the builder for the settings used for calls to updateBackendBucket. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        updateBackendBucketOperationSettings() {
+      return updateBackendBucketOperationSettings;
+    }
+
     @Override
     public BackendBucketStubSettings build() throws IOException {
       return new BackendBucketStubSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/BackendServiceStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/BackendServiceStub.java
index e8463750305d..32bb397667c1 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/BackendServiceStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/BackendServiceStub.java
@@ -20,6 +20,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.AddSignedUrlKeyBackendServiceHttpRequest;
 import com.google.cloud.compute.v1.AggregatedListBackendServicesHttpRequest;
@@ -49,6 +51,18 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class BackendServiceStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public GlobalOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      addSignedUrlKeyBackendServiceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: addSignedUrlKeyBackendServiceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       addSignedUrlKeyBackendServiceCallable() {
@@ -71,11 +85,25 @@ public abstract class BackendServiceStub implements BackgroundResource {
         "Not implemented: aggregatedListBackendServicesCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteBackendServiceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteBackendServiceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteBackendServiceCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteBackendServiceCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteSignedUrlKeyBackendServiceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteSignedUrlKeyBackendServiceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       deleteSignedUrlKeyBackendServiceCallable() {
@@ -94,6 +122,13 @@ public UnaryCallable getBackendSer
     throw new UnsupportedOperationException("Not implemented: getHealthBackendServiceCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertBackendServiceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: insertBackendServiceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertBackendServiceCallable() {
     throw new UnsupportedOperationException("Not implemented: insertBackendServiceCallable()");
@@ -111,11 +146,25 @@ public UnaryCallable insertBackendSe
     throw new UnsupportedOperationException("Not implemented: listBackendServicesCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchBackendServiceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: patchBackendServiceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable patchBackendServiceCallable() {
     throw new UnsupportedOperationException("Not implemented: patchBackendServiceCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setSecurityPolicyBackendServiceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setSecurityPolicyBackendServiceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setSecurityPolicyBackendServiceCallable() {
@@ -123,6 +172,13 @@ public UnaryCallable patchBackendServ
         "Not implemented: setSecurityPolicyBackendServiceCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      updateBackendServiceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: updateBackendServiceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable updateBackendServiceCallable() {
     throw new UnsupportedOperationException("Not implemented: updateBackendServiceCallable()");
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/BackendServiceStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/BackendServiceStubSettings.java
index 0d9bd047475c..45fdfe036ff3 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/BackendServiceStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/BackendServiceStubSettings.java
@@ -24,13 +24,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -81,13 +86,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of addSignedUrlKeyBackendService to 30 seconds: + * example, to set the total timeout of getBackendService to 30 seconds: * *

  * 
  * BackendServiceStubSettings.Builder backendServiceSettingsBuilder =
  *     BackendServiceStubSettings.newBuilder();
- * backendServiceSettingsBuilder.addSignedUrlKeyBackendServiceSettings().getRetrySettings().toBuilder()
+ * backendServiceSettingsBuilder.getBackendServiceSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * BackendServiceStubSettings backendServiceSettings = backendServiceSettingsBuilder.build();
  * 
@@ -109,6 +114,9 @@ public class BackendServiceStubSettings extends StubSettings
       addSignedUrlKeyBackendServiceSettings;
+  private final OperationCallSettings<
+          AddSignedUrlKeyBackendServiceHttpRequest, EmptyMessage, Operation>
+      addSignedUrlKeyBackendServiceOperationSettings;
   private final PagedCallSettings<
           AggregatedListBackendServicesHttpRequest,
           BackendServiceAggregatedList,
@@ -116,23 +124,37 @@ public class BackendServiceStubSettings extends StubSettings
       deleteBackendServiceSettings;
+  private final OperationCallSettings
+      deleteBackendServiceOperationSettings;
   private final UnaryCallSettings
       deleteSignedUrlKeyBackendServiceSettings;
+  private final OperationCallSettings<
+          DeleteSignedUrlKeyBackendServiceHttpRequest, EmptyMessage, Operation>
+      deleteSignedUrlKeyBackendServiceOperationSettings;
   private final UnaryCallSettings
       getBackendServiceSettings;
   private final UnaryCallSettings
       getHealthBackendServiceSettings;
   private final UnaryCallSettings
       insertBackendServiceSettings;
+  private final OperationCallSettings
+      insertBackendServiceOperationSettings;
   private final PagedCallSettings<
           ListBackendServicesHttpRequest, BackendServiceList, ListBackendServicesPagedResponse>
       listBackendServicesSettings;
   private final UnaryCallSettings
       patchBackendServiceSettings;
+  private final OperationCallSettings
+      patchBackendServiceOperationSettings;
   private final UnaryCallSettings
       setSecurityPolicyBackendServiceSettings;
+  private final OperationCallSettings<
+          SetSecurityPolicyBackendServiceHttpRequest, EmptyMessage, Operation>
+      setSecurityPolicyBackendServiceOperationSettings;
   private final UnaryCallSettings
       updateBackendServiceSettings;
+  private final OperationCallSettings
+      updateBackendServiceOperationSettings;
 
   /** Returns the object with the settings used for calls to addSignedUrlKeyBackendService. */
   public UnaryCallSettings
@@ -140,6 +162,13 @@ public class BackendServiceStubSettings extends StubSettings
+      addSignedUrlKeyBackendServiceOperationSettings() {
+    return addSignedUrlKeyBackendServiceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to aggregatedListBackendServices. */
   public PagedCallSettings<
           AggregatedListBackendServicesHttpRequest,
@@ -155,12 +184,26 @@ public class BackendServiceStubSettings extends StubSettings
+      deleteBackendServiceOperationSettings() {
+    return deleteBackendServiceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to deleteSignedUrlKeyBackendService. */
   public UnaryCallSettings
       deleteSignedUrlKeyBackendServiceSettings() {
     return deleteSignedUrlKeyBackendServiceSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteSignedUrlKeyBackendService. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteSignedUrlKeyBackendServiceOperationSettings() {
+    return deleteSignedUrlKeyBackendServiceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getBackendService. */
   public UnaryCallSettings
       getBackendServiceSettings() {
@@ -179,6 +222,13 @@ public class BackendServiceStubSettings extends StubSettings
+      insertBackendServiceOperationSettings() {
+    return insertBackendServiceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listBackendServices. */
   public PagedCallSettings<
           ListBackendServicesHttpRequest, BackendServiceList, ListBackendServicesPagedResponse>
@@ -192,18 +242,39 @@ public class BackendServiceStubSettings extends StubSettings
+      patchBackendServiceOperationSettings() {
+    return patchBackendServiceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to setSecurityPolicyBackendService. */
   public UnaryCallSettings
       setSecurityPolicyBackendServiceSettings() {
     return setSecurityPolicyBackendServiceSettings;
   }
 
+  /** Returns the object with the settings used for calls to setSecurityPolicyBackendService. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setSecurityPolicyBackendServiceOperationSettings() {
+    return setSecurityPolicyBackendServiceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to updateBackendService. */
   public UnaryCallSettings
       updateBackendServiceSettings() {
     return updateBackendServiceSettings;
   }
 
+  /** Returns the object with the settings used for calls to updateBackendService. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      updateBackendServiceOperationSettings() {
+    return updateBackendServiceOperationSettings;
+  }
+
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   public BackendServiceStub createStub() throws IOException {
     if (getTransportChannelProvider()
@@ -281,19 +352,33 @@ protected BackendServiceStubSettings(Builder settingsBuilder) throws IOException
 
     addSignedUrlKeyBackendServiceSettings =
         settingsBuilder.addSignedUrlKeyBackendServiceSettings().build();
+    addSignedUrlKeyBackendServiceOperationSettings =
+        settingsBuilder.addSignedUrlKeyBackendServiceOperationSettings().build();
     aggregatedListBackendServicesSettings =
         settingsBuilder.aggregatedListBackendServicesSettings().build();
     deleteBackendServiceSettings = settingsBuilder.deleteBackendServiceSettings().build();
+    deleteBackendServiceOperationSettings =
+        settingsBuilder.deleteBackendServiceOperationSettings().build();
     deleteSignedUrlKeyBackendServiceSettings =
         settingsBuilder.deleteSignedUrlKeyBackendServiceSettings().build();
+    deleteSignedUrlKeyBackendServiceOperationSettings =
+        settingsBuilder.deleteSignedUrlKeyBackendServiceOperationSettings().build();
     getBackendServiceSettings = settingsBuilder.getBackendServiceSettings().build();
     getHealthBackendServiceSettings = settingsBuilder.getHealthBackendServiceSettings().build();
     insertBackendServiceSettings = settingsBuilder.insertBackendServiceSettings().build();
+    insertBackendServiceOperationSettings =
+        settingsBuilder.insertBackendServiceOperationSettings().build();
     listBackendServicesSettings = settingsBuilder.listBackendServicesSettings().build();
     patchBackendServiceSettings = settingsBuilder.patchBackendServiceSettings().build();
+    patchBackendServiceOperationSettings =
+        settingsBuilder.patchBackendServiceOperationSettings().build();
     setSecurityPolicyBackendServiceSettings =
         settingsBuilder.setSecurityPolicyBackendServiceSettings().build();
+    setSecurityPolicyBackendServiceOperationSettings =
+        settingsBuilder.setSecurityPolicyBackendServiceOperationSettings().build();
     updateBackendServiceSettings = settingsBuilder.updateBackendServiceSettings().build();
+    updateBackendServiceOperationSettings =
+        settingsBuilder.updateBackendServiceOperationSettings().build();
   }
 
   private static final PagedListDescriptor<
@@ -446,6 +531,9 @@ public static class Builder extends StubSettings.Builder
         addSignedUrlKeyBackendServiceSettings;
+    private final OperationCallSettings.Builder<
+            AddSignedUrlKeyBackendServiceHttpRequest, EmptyMessage, Operation>
+        addSignedUrlKeyBackendServiceOperationSettings;
     private final PagedCallSettings.Builder<
             AggregatedListBackendServicesHttpRequest,
             BackendServiceAggregatedList,
@@ -453,8 +541,14 @@ public static class Builder extends StubSettings.Builder
         deleteBackendServiceSettings;
+    private final OperationCallSettings.Builder<
+            DeleteBackendServiceHttpRequest, EmptyMessage, Operation>
+        deleteBackendServiceOperationSettings;
     private final UnaryCallSettings.Builder
         deleteSignedUrlKeyBackendServiceSettings;
+    private final OperationCallSettings.Builder<
+            DeleteSignedUrlKeyBackendServiceHttpRequest, EmptyMessage, Operation>
+        deleteSignedUrlKeyBackendServiceOperationSettings;
     private final UnaryCallSettings.Builder
         getBackendServiceSettings;
     private final UnaryCallSettings.Builder<
@@ -462,15 +556,27 @@ public static class Builder extends StubSettings.Builder
         insertBackendServiceSettings;
+    private final OperationCallSettings.Builder<
+            InsertBackendServiceHttpRequest, EmptyMessage, Operation>
+        insertBackendServiceOperationSettings;
     private final PagedCallSettings.Builder<
             ListBackendServicesHttpRequest, BackendServiceList, ListBackendServicesPagedResponse>
         listBackendServicesSettings;
     private final UnaryCallSettings.Builder
         patchBackendServiceSettings;
+    private final OperationCallSettings.Builder<
+            PatchBackendServiceHttpRequest, EmptyMessage, Operation>
+        patchBackendServiceOperationSettings;
     private final UnaryCallSettings.Builder
         setSecurityPolicyBackendServiceSettings;
+    private final OperationCallSettings.Builder<
+            SetSecurityPolicyBackendServiceHttpRequest, EmptyMessage, Operation>
+        setSecurityPolicyBackendServiceOperationSettings;
     private final UnaryCallSettings.Builder
         updateBackendServiceSettings;
+    private final OperationCallSettings.Builder<
+            UpdateBackendServiceHttpRequest, EmptyMessage, Operation>
+        updateBackendServiceOperationSettings;
 
     private static final ImmutableMap>
         RETRYABLE_CODE_DEFINITIONS;
@@ -515,28 +621,42 @@ protected Builder(ClientContext clientContext) {
 
       addSignedUrlKeyBackendServiceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      addSignedUrlKeyBackendServiceOperationSettings = OperationCallSettings.newBuilder();
+
       aggregatedListBackendServicesSettings =
           PagedCallSettings.newBuilder(AGGREGATED_LIST_BACKEND_SERVICES_PAGE_STR_FACT);
 
       deleteBackendServiceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteBackendServiceOperationSettings = OperationCallSettings.newBuilder();
+
       deleteSignedUrlKeyBackendServiceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteSignedUrlKeyBackendServiceOperationSettings = OperationCallSettings.newBuilder();
+
       getBackendServiceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       getHealthBackendServiceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertBackendServiceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertBackendServiceOperationSettings = OperationCallSettings.newBuilder();
+
       listBackendServicesSettings =
           PagedCallSettings.newBuilder(LIST_BACKEND_SERVICES_PAGE_STR_FACT);
 
       patchBackendServiceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      patchBackendServiceOperationSettings = OperationCallSettings.newBuilder();
+
       setSecurityPolicyBackendServiceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setSecurityPolicyBackendServiceOperationSettings = OperationCallSettings.newBuilder();
+
       updateBackendServiceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      updateBackendServiceOperationSettings = OperationCallSettings.newBuilder();
+
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
               addSignedUrlKeyBackendServiceSettings,
@@ -619,6 +739,156 @@ private static Builder initDefaults(Builder builder) {
           .updateBackendServiceSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .addSignedUrlKeyBackendServiceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .deleteBackendServiceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .deleteSignedUrlKeyBackendServiceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertBackendServiceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .patchBackendServiceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setSecurityPolicyBackendServiceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .updateBackendServiceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -628,19 +898,33 @@ protected Builder(BackendServiceStubSettings settings) {
 
       addSignedUrlKeyBackendServiceSettings =
           settings.addSignedUrlKeyBackendServiceSettings.toBuilder();
+      addSignedUrlKeyBackendServiceOperationSettings =
+          settings.addSignedUrlKeyBackendServiceOperationSettings.toBuilder();
       aggregatedListBackendServicesSettings =
           settings.aggregatedListBackendServicesSettings.toBuilder();
       deleteBackendServiceSettings = settings.deleteBackendServiceSettings.toBuilder();
+      deleteBackendServiceOperationSettings =
+          settings.deleteBackendServiceOperationSettings.toBuilder();
       deleteSignedUrlKeyBackendServiceSettings =
           settings.deleteSignedUrlKeyBackendServiceSettings.toBuilder();
+      deleteSignedUrlKeyBackendServiceOperationSettings =
+          settings.deleteSignedUrlKeyBackendServiceOperationSettings.toBuilder();
       getBackendServiceSettings = settings.getBackendServiceSettings.toBuilder();
       getHealthBackendServiceSettings = settings.getHealthBackendServiceSettings.toBuilder();
       insertBackendServiceSettings = settings.insertBackendServiceSettings.toBuilder();
+      insertBackendServiceOperationSettings =
+          settings.insertBackendServiceOperationSettings.toBuilder();
       listBackendServicesSettings = settings.listBackendServicesSettings.toBuilder();
       patchBackendServiceSettings = settings.patchBackendServiceSettings.toBuilder();
+      patchBackendServiceOperationSettings =
+          settings.patchBackendServiceOperationSettings.toBuilder();
       setSecurityPolicyBackendServiceSettings =
           settings.setSecurityPolicyBackendServiceSettings.toBuilder();
+      setSecurityPolicyBackendServiceOperationSettings =
+          settings.setSecurityPolicyBackendServiceOperationSettings.toBuilder();
       updateBackendServiceSettings = settings.updateBackendServiceSettings.toBuilder();
+      updateBackendServiceOperationSettings =
+          settings.updateBackendServiceOperationSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
@@ -679,6 +963,15 @@ public Builder applyToAllUnaryMethods(
       return addSignedUrlKeyBackendServiceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to addSignedUrlKeyBackendService. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            AddSignedUrlKeyBackendServiceHttpRequest, EmptyMessage, Operation>
+        addSignedUrlKeyBackendServiceOperationSettings() {
+      return addSignedUrlKeyBackendServiceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to aggregatedListBackendServices. */
     public PagedCallSettings.Builder<
             AggregatedListBackendServicesHttpRequest,
@@ -694,12 +987,29 @@ public Builder applyToAllUnaryMethods(
       return deleteBackendServiceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteBackendService. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteBackendServiceOperationSettings() {
+      return deleteBackendServiceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to deleteSignedUrlKeyBackendService. */
     public UnaryCallSettings.Builder
         deleteSignedUrlKeyBackendServiceSettings() {
       return deleteSignedUrlKeyBackendServiceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteSignedUrlKeyBackendService. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            DeleteSignedUrlKeyBackendServiceHttpRequest, EmptyMessage, Operation>
+        deleteSignedUrlKeyBackendServiceOperationSettings() {
+      return deleteSignedUrlKeyBackendServiceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getBackendService. */
     public UnaryCallSettings.Builder
         getBackendServiceSettings() {
@@ -718,6 +1028,14 @@ public Builder applyToAllUnaryMethods(
       return insertBackendServiceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertBackendService. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertBackendServiceOperationSettings() {
+      return insertBackendServiceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listBackendServices. */
     public PagedCallSettings.Builder<
             ListBackendServicesHttpRequest, BackendServiceList, ListBackendServicesPagedResponse>
@@ -731,18 +1049,43 @@ public Builder applyToAllUnaryMethods(
       return patchBackendServiceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to patchBackendService. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchBackendServiceOperationSettings() {
+      return patchBackendServiceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to setSecurityPolicyBackendService. */
     public UnaryCallSettings.Builder
         setSecurityPolicyBackendServiceSettings() {
       return setSecurityPolicyBackendServiceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to setSecurityPolicyBackendService. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetSecurityPolicyBackendServiceHttpRequest, EmptyMessage, Operation>
+        setSecurityPolicyBackendServiceOperationSettings() {
+      return setSecurityPolicyBackendServiceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to updateBackendService. */
     public UnaryCallSettings.Builder
         updateBackendServiceSettings() {
       return updateBackendServiceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to updateBackendService. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        updateBackendServiceOperationSettings() {
+      return updateBackendServiceOperationSettings;
+    }
+
     @Override
     public BackendServiceStubSettings build() throws IOException {
       return new BackendServiceStubSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/DiskStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/DiskStub.java
index ff83aef3950d..83692d9a795d 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/DiskStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/DiskStub.java
@@ -20,6 +20,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.AggregatedListDisksHttpRequest;
 import com.google.cloud.compute.v1.CreateSnapshotDiskHttpRequest;
@@ -50,6 +52,11 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class DiskStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public ZoneOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
   @BetaApi
   public UnaryCallable
       aggregatedListDisksPagedCallable() {
@@ -62,11 +69,24 @@ public abstract class DiskStub implements BackgroundResource {
     throw new UnsupportedOperationException("Not implemented: aggregatedListDisksCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      createSnapshotDiskOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: createSnapshotDiskOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable createSnapshotDiskCallable() {
     throw new UnsupportedOperationException("Not implemented: createSnapshotDiskCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteDiskOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: deleteDiskOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteDiskCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteDiskCallable()");
@@ -82,6 +102,12 @@ public UnaryCallable getIamPolicyDiskCallab
     throw new UnsupportedOperationException("Not implemented: getIamPolicyDiskCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertDiskOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: insertDiskOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertDiskCallable() {
     throw new UnsupportedOperationException("Not implemented: insertDiskCallable()");
@@ -97,6 +123,12 @@ public UnaryCallable listDisksCallable() {
     throw new UnsupportedOperationException("Not implemented: listDisksCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      resizeDiskOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: resizeDiskOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable resizeDiskCallable() {
     throw new UnsupportedOperationException("Not implemented: resizeDiskCallable()");
@@ -107,6 +139,12 @@ public UnaryCallable setIamPolicyDiskCallab
     throw new UnsupportedOperationException("Not implemented: setIamPolicyDiskCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setLabelsDiskOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: setLabelsDiskOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable setLabelsDiskCallable() {
     throw new UnsupportedOperationException("Not implemented: setLabelsDiskCallable()");
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/DiskStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/DiskStubSettings.java
index 4e7bc404810f..c55af1916d87 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/DiskStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/DiskStubSettings.java
@@ -24,13 +24,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -82,13 +87,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of createSnapshotDisk to 30 seconds: + * example, to set the total timeout of getDisk to 30 seconds: * *

  * 
  * DiskStubSettings.Builder diskSettingsBuilder =
  *     DiskStubSettings.newBuilder();
- * diskSettingsBuilder.createSnapshotDiskSettings().getRetrySettings().toBuilder()
+ * diskSettingsBuilder.getDiskSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * DiskStubSettings diskSettings = diskSettingsBuilder.build();
  * 
@@ -113,15 +118,25 @@ public class DiskStubSettings extends StubSettings {
       aggregatedListDisksSettings;
   private final UnaryCallSettings
       createSnapshotDiskSettings;
+  private final OperationCallSettings
+      createSnapshotDiskOperationSettings;
   private final UnaryCallSettings deleteDiskSettings;
+  private final OperationCallSettings
+      deleteDiskOperationSettings;
   private final UnaryCallSettings getDiskSettings;
   private final UnaryCallSettings getIamPolicyDiskSettings;
   private final UnaryCallSettings insertDiskSettings;
+  private final OperationCallSettings
+      insertDiskOperationSettings;
   private final PagedCallSettings
       listDisksSettings;
   private final UnaryCallSettings resizeDiskSettings;
+  private final OperationCallSettings
+      resizeDiskOperationSettings;
   private final UnaryCallSettings setIamPolicyDiskSettings;
   private final UnaryCallSettings setLabelsDiskSettings;
+  private final OperationCallSettings
+      setLabelsDiskOperationSettings;
   private final UnaryCallSettings
       testIamPermissionsDiskSettings;
 
@@ -137,11 +152,25 @@ public UnaryCallSettings createSnapsho
     return createSnapshotDiskSettings;
   }
 
+  /** Returns the object with the settings used for calls to createSnapshotDisk. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      createSnapshotDiskOperationSettings() {
+    return createSnapshotDiskOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to deleteDisk. */
   public UnaryCallSettings deleteDiskSettings() {
     return deleteDiskSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteDisk. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteDiskOperationSettings() {
+    return deleteDiskOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getDisk. */
   public UnaryCallSettings getDiskSettings() {
     return getDiskSettings;
@@ -157,6 +186,13 @@ public UnaryCallSettings insertDiskSettings()
     return insertDiskSettings;
   }
 
+  /** Returns the object with the settings used for calls to insertDisk. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertDiskOperationSettings() {
+    return insertDiskOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listDisks. */
   public PagedCallSettings
       listDisksSettings() {
@@ -168,6 +204,13 @@ public UnaryCallSettings resizeDiskSettings()
     return resizeDiskSettings;
   }
 
+  /** Returns the object with the settings used for calls to resizeDisk. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      resizeDiskOperationSettings() {
+    return resizeDiskOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to setIamPolicyDisk. */
   public UnaryCallSettings setIamPolicyDiskSettings() {
     return setIamPolicyDiskSettings;
@@ -178,6 +221,13 @@ public UnaryCallSettings setLabelsDiskSetti
     return setLabelsDiskSettings;
   }
 
+  /** Returns the object with the settings used for calls to setLabelsDisk. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setLabelsDiskOperationSettings() {
+    return setLabelsDiskOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to testIamPermissionsDisk. */
   public UnaryCallSettings
       testIamPermissionsDiskSettings() {
@@ -260,14 +310,20 @@ protected DiskStubSettings(Builder settingsBuilder) throws IOException {
 
     aggregatedListDisksSettings = settingsBuilder.aggregatedListDisksSettings().build();
     createSnapshotDiskSettings = settingsBuilder.createSnapshotDiskSettings().build();
+    createSnapshotDiskOperationSettings =
+        settingsBuilder.createSnapshotDiskOperationSettings().build();
     deleteDiskSettings = settingsBuilder.deleteDiskSettings().build();
+    deleteDiskOperationSettings = settingsBuilder.deleteDiskOperationSettings().build();
     getDiskSettings = settingsBuilder.getDiskSettings().build();
     getIamPolicyDiskSettings = settingsBuilder.getIamPolicyDiskSettings().build();
     insertDiskSettings = settingsBuilder.insertDiskSettings().build();
+    insertDiskOperationSettings = settingsBuilder.insertDiskOperationSettings().build();
     listDisksSettings = settingsBuilder.listDisksSettings().build();
     resizeDiskSettings = settingsBuilder.resizeDiskSettings().build();
+    resizeDiskOperationSettings = settingsBuilder.resizeDiskOperationSettings().build();
     setIamPolicyDiskSettings = settingsBuilder.setIamPolicyDiskSettings().build();
     setLabelsDiskSettings = settingsBuilder.setLabelsDiskSettings().build();
+    setLabelsDiskOperationSettings = settingsBuilder.setLabelsDiskOperationSettings().build();
     testIamPermissionsDiskSettings = settingsBuilder.testIamPermissionsDiskSettings().build();
   }
 
@@ -395,18 +451,29 @@ public static class Builder extends StubSettings.Builder
         createSnapshotDiskSettings;
+    private final OperationCallSettings.Builder<
+            CreateSnapshotDiskHttpRequest, EmptyMessage, Operation>
+        createSnapshotDiskOperationSettings;
     private final UnaryCallSettings.Builder deleteDiskSettings;
+    private final OperationCallSettings.Builder
+        deleteDiskOperationSettings;
     private final UnaryCallSettings.Builder getDiskSettings;
     private final UnaryCallSettings.Builder
         getIamPolicyDiskSettings;
     private final UnaryCallSettings.Builder insertDiskSettings;
+    private final OperationCallSettings.Builder
+        insertDiskOperationSettings;
     private final PagedCallSettings.Builder
         listDisksSettings;
     private final UnaryCallSettings.Builder resizeDiskSettings;
+    private final OperationCallSettings.Builder
+        resizeDiskOperationSettings;
     private final UnaryCallSettings.Builder
         setIamPolicyDiskSettings;
     private final UnaryCallSettings.Builder
         setLabelsDiskSettings;
+    private final OperationCallSettings.Builder
+        setLabelsDiskOperationSettings;
     private final UnaryCallSettings.Builder<
             TestIamPermissionsDiskHttpRequest, TestPermissionsResponse>
         testIamPermissionsDiskSettings;
@@ -457,22 +524,32 @@ protected Builder(ClientContext clientContext) {
 
       createSnapshotDiskSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      createSnapshotDiskOperationSettings = OperationCallSettings.newBuilder();
+
       deleteDiskSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteDiskOperationSettings = OperationCallSettings.newBuilder();
+
       getDiskSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       getIamPolicyDiskSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertDiskSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertDiskOperationSettings = OperationCallSettings.newBuilder();
+
       listDisksSettings = PagedCallSettings.newBuilder(LIST_DISKS_PAGE_STR_FACT);
 
       resizeDiskSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      resizeDiskOperationSettings = OperationCallSettings.newBuilder();
+
       setIamPolicyDiskSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       setLabelsDiskSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setLabelsDiskOperationSettings = OperationCallSettings.newBuilder();
+
       testIamPermissionsDiskSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       unaryMethodSettingsBuilders =
@@ -557,6 +634,111 @@ private static Builder initDefaults(Builder builder) {
           .testIamPermissionsDiskSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .createSnapshotDiskOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .deleteDiskOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertDiskOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .resizeDiskOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setLabelsDiskOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -566,14 +748,20 @@ protected Builder(DiskStubSettings settings) {
 
       aggregatedListDisksSettings = settings.aggregatedListDisksSettings.toBuilder();
       createSnapshotDiskSettings = settings.createSnapshotDiskSettings.toBuilder();
+      createSnapshotDiskOperationSettings =
+          settings.createSnapshotDiskOperationSettings.toBuilder();
       deleteDiskSettings = settings.deleteDiskSettings.toBuilder();
+      deleteDiskOperationSettings = settings.deleteDiskOperationSettings.toBuilder();
       getDiskSettings = settings.getDiskSettings.toBuilder();
       getIamPolicyDiskSettings = settings.getIamPolicyDiskSettings.toBuilder();
       insertDiskSettings = settings.insertDiskSettings.toBuilder();
+      insertDiskOperationSettings = settings.insertDiskOperationSettings.toBuilder();
       listDisksSettings = settings.listDisksSettings.toBuilder();
       resizeDiskSettings = settings.resizeDiskSettings.toBuilder();
+      resizeDiskOperationSettings = settings.resizeDiskOperationSettings.toBuilder();
       setIamPolicyDiskSettings = settings.setIamPolicyDiskSettings.toBuilder();
       setLabelsDiskSettings = settings.setLabelsDiskSettings.toBuilder();
+      setLabelsDiskOperationSettings = settings.setLabelsDiskOperationSettings.toBuilder();
       testIamPermissionsDiskSettings = settings.testIamPermissionsDiskSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
@@ -620,11 +808,27 @@ public Builder applyToAllUnaryMethods(
       return createSnapshotDiskSettings;
     }
 
+    /** Returns the builder for the settings used for calls to createSnapshotDisk. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        createSnapshotDiskOperationSettings() {
+      return createSnapshotDiskOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to deleteDisk. */
     public UnaryCallSettings.Builder deleteDiskSettings() {
       return deleteDiskSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteDisk. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteDiskOperationSettings() {
+      return deleteDiskOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getDisk. */
     public UnaryCallSettings.Builder getDiskSettings() {
       return getDiskSettings;
@@ -641,6 +845,14 @@ public UnaryCallSettings.Builder insertDiskSet
       return insertDiskSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertDisk. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertDiskOperationSettings() {
+      return insertDiskOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listDisks. */
     public PagedCallSettings.Builder
         listDisksSettings() {
@@ -652,6 +864,14 @@ public UnaryCallSettings.Builder resizeDiskSet
       return resizeDiskSettings;
     }
 
+    /** Returns the builder for the settings used for calls to resizeDisk. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        resizeDiskOperationSettings() {
+      return resizeDiskOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to setIamPolicyDisk. */
     public UnaryCallSettings.Builder
         setIamPolicyDiskSettings() {
@@ -663,6 +883,14 @@ public UnaryCallSettings.Builder setLabelsD
       return setLabelsDiskSettings;
     }
 
+    /** Returns the builder for the settings used for calls to setLabelsDisk. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        setLabelsDiskOperationSettings() {
+      return setLabelsDiskOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to testIamPermissionsDisk. */
     public UnaryCallSettings.Builder
         testIamPermissionsDiskSettings() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/FirewallStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/FirewallStub.java
index 543b18dea5f9..f5564c4eb3db 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/FirewallStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/FirewallStub.java
@@ -19,6 +19,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.DeleteFirewallHttpRequest;
 import com.google.cloud.compute.v1.Firewall;
@@ -41,6 +43,17 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class FirewallStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public GlobalOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteFirewallOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: deleteFirewallOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteFirewallCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteFirewallCallable()");
@@ -51,6 +64,12 @@ public UnaryCallable getFirewallCallable() {
     throw new UnsupportedOperationException("Not implemented: getFirewallCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertFirewallOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: insertFirewallOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertFirewallCallable() {
     throw new UnsupportedOperationException("Not implemented: insertFirewallCallable()");
@@ -67,11 +86,23 @@ public UnaryCallable listFirewallsCallab
     throw new UnsupportedOperationException("Not implemented: listFirewallsCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchFirewallOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: patchFirewallOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable patchFirewallCallable() {
     throw new UnsupportedOperationException("Not implemented: patchFirewallCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      updateFirewallOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: updateFirewallOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable updateFirewallCallable() {
     throw new UnsupportedOperationException("Not implemented: updateFirewallCallable()");
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/FirewallStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/FirewallStubSettings.java
index c9bc99f66b8b..7777fb7be151 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/FirewallStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/FirewallStubSettings.java
@@ -23,13 +23,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -72,13 +77,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteFirewall to 30 seconds: + * example, to set the total timeout of getFirewall to 30 seconds: * *

  * 
  * FirewallStubSettings.Builder firewallSettingsBuilder =
  *     FirewallStubSettings.newBuilder();
- * firewallSettingsBuilder.deleteFirewallSettings().getRetrySettings().toBuilder()
+ * firewallSettingsBuilder.getFirewallSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * FirewallStubSettings firewallSettings = firewallSettingsBuilder.build();
  * 
@@ -99,19 +104,34 @@ public class FirewallStubSettings extends StubSettings {
           .build();
 
   private final UnaryCallSettings deleteFirewallSettings;
+  private final OperationCallSettings
+      deleteFirewallOperationSettings;
   private final UnaryCallSettings getFirewallSettings;
   private final UnaryCallSettings insertFirewallSettings;
+  private final OperationCallSettings
+      insertFirewallOperationSettings;
   private final PagedCallSettings<
           ListFirewallsHttpRequest, FirewallList, ListFirewallsPagedResponse>
       listFirewallsSettings;
   private final UnaryCallSettings patchFirewallSettings;
+  private final OperationCallSettings
+      patchFirewallOperationSettings;
   private final UnaryCallSettings updateFirewallSettings;
+  private final OperationCallSettings
+      updateFirewallOperationSettings;
 
   /** Returns the object with the settings used for calls to deleteFirewall. */
   public UnaryCallSettings deleteFirewallSettings() {
     return deleteFirewallSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteFirewall. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteFirewallOperationSettings() {
+    return deleteFirewallOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getFirewall. */
   public UnaryCallSettings getFirewallSettings() {
     return getFirewallSettings;
@@ -122,6 +142,13 @@ public UnaryCallSettings insertFirewallSet
     return insertFirewallSettings;
   }
 
+  /** Returns the object with the settings used for calls to insertFirewall. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertFirewallOperationSettings() {
+    return insertFirewallOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listFirewalls. */
   public PagedCallSettings
       listFirewallsSettings() {
@@ -133,11 +160,25 @@ public UnaryCallSettings patchFirewallSetti
     return patchFirewallSettings;
   }
 
+  /** Returns the object with the settings used for calls to patchFirewall. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      patchFirewallOperationSettings() {
+    return patchFirewallOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to updateFirewall. */
   public UnaryCallSettings updateFirewallSettings() {
     return updateFirewallSettings;
   }
 
+  /** Returns the object with the settings used for calls to updateFirewall. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      updateFirewallOperationSettings() {
+    return updateFirewallOperationSettings;
+  }
+
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   public FirewallStub createStub() throws IOException {
     if (getTransportChannelProvider()
@@ -213,11 +254,15 @@ protected FirewallStubSettings(Builder settingsBuilder) throws IOException {
     super(settingsBuilder);
 
     deleteFirewallSettings = settingsBuilder.deleteFirewallSettings().build();
+    deleteFirewallOperationSettings = settingsBuilder.deleteFirewallOperationSettings().build();
     getFirewallSettings = settingsBuilder.getFirewallSettings().build();
     insertFirewallSettings = settingsBuilder.insertFirewallSettings().build();
+    insertFirewallOperationSettings = settingsBuilder.insertFirewallOperationSettings().build();
     listFirewallsSettings = settingsBuilder.listFirewallsSettings().build();
     patchFirewallSettings = settingsBuilder.patchFirewallSettings().build();
+    patchFirewallOperationSettings = settingsBuilder.patchFirewallOperationSettings().build();
     updateFirewallSettings = settingsBuilder.updateFirewallSettings().build();
+    updateFirewallOperationSettings = settingsBuilder.updateFirewallOperationSettings().build();
   }
 
   private static final PagedListDescriptor
@@ -281,16 +326,24 @@ public static class Builder extends StubSettings.Builder
         deleteFirewallSettings;
+    private final OperationCallSettings.Builder
+        deleteFirewallOperationSettings;
     private final UnaryCallSettings.Builder getFirewallSettings;
     private final UnaryCallSettings.Builder
         insertFirewallSettings;
+    private final OperationCallSettings.Builder
+        insertFirewallOperationSettings;
     private final PagedCallSettings.Builder<
             ListFirewallsHttpRequest, FirewallList, ListFirewallsPagedResponse>
         listFirewallsSettings;
     private final UnaryCallSettings.Builder
         patchFirewallSettings;
+    private final OperationCallSettings.Builder
+        patchFirewallOperationSettings;
     private final UnaryCallSettings.Builder
         updateFirewallSettings;
+    private final OperationCallSettings.Builder
+        updateFirewallOperationSettings;
 
     private static final ImmutableMap>
         RETRYABLE_CODE_DEFINITIONS;
@@ -335,16 +388,24 @@ protected Builder(ClientContext clientContext) {
 
       deleteFirewallSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteFirewallOperationSettings = OperationCallSettings.newBuilder();
+
       getFirewallSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertFirewallSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertFirewallOperationSettings = OperationCallSettings.newBuilder();
+
       listFirewallsSettings = PagedCallSettings.newBuilder(LIST_FIREWALLS_PAGE_STR_FACT);
 
       patchFirewallSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      patchFirewallOperationSettings = OperationCallSettings.newBuilder();
+
       updateFirewallSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      updateFirewallOperationSettings = OperationCallSettings.newBuilder();
+
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
               deleteFirewallSettings,
@@ -397,6 +458,90 @@ private static Builder initDefaults(Builder builder) {
           .updateFirewallSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteFirewallOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertFirewallOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .patchFirewallOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .updateFirewallOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -405,11 +550,15 @@ protected Builder(FirewallStubSettings settings) {
       super(settings);
 
       deleteFirewallSettings = settings.deleteFirewallSettings.toBuilder();
+      deleteFirewallOperationSettings = settings.deleteFirewallOperationSettings.toBuilder();
       getFirewallSettings = settings.getFirewallSettings.toBuilder();
       insertFirewallSettings = settings.insertFirewallSettings.toBuilder();
+      insertFirewallOperationSettings = settings.insertFirewallOperationSettings.toBuilder();
       listFirewallsSettings = settings.listFirewallsSettings.toBuilder();
       patchFirewallSettings = settings.patchFirewallSettings.toBuilder();
+      patchFirewallOperationSettings = settings.patchFirewallOperationSettings.toBuilder();
       updateFirewallSettings = settings.updateFirewallSettings.toBuilder();
+      updateFirewallOperationSettings = settings.updateFirewallOperationSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
@@ -443,6 +592,14 @@ public Builder applyToAllUnaryMethods(
       return deleteFirewallSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteFirewall. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteFirewallOperationSettings() {
+      return deleteFirewallOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getFirewall. */
     public UnaryCallSettings.Builder getFirewallSettings() {
       return getFirewallSettings;
@@ -454,6 +611,14 @@ public UnaryCallSettings.Builder getFirewallSe
       return insertFirewallSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertFirewall. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertFirewallOperationSettings() {
+      return insertFirewallOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listFirewalls. */
     public PagedCallSettings.Builder<
             ListFirewallsHttpRequest, FirewallList, ListFirewallsPagedResponse>
@@ -466,12 +631,28 @@ public UnaryCallSettings.Builder patchFirew
       return patchFirewallSettings;
     }
 
+    /** Returns the builder for the settings used for calls to patchFirewall. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchFirewallOperationSettings() {
+      return patchFirewallOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to updateFirewall. */
     public UnaryCallSettings.Builder
         updateFirewallSettings() {
       return updateFirewallSettings;
     }
 
+    /** Returns the builder for the settings used for calls to updateFirewall. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        updateFirewallOperationSettings() {
+      return updateFirewallOperationSettings;
+    }
+
     @Override
     public FirewallStubSettings build() throws IOException {
       return new FirewallStubSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ForwardingRuleStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ForwardingRuleStub.java
index 362e65f7e3f0..a0fd7975c646 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ForwardingRuleStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ForwardingRuleStub.java
@@ -20,6 +20,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.AggregatedListForwardingRulesHttpRequest;
 import com.google.cloud.compute.v1.DeleteForwardingRuleHttpRequest;
@@ -43,6 +45,11 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class ForwardingRuleStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public RegionOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
   @BetaApi
   public UnaryCallable<
           AggregatedListForwardingRulesHttpRequest, AggregatedListForwardingRulesPagedResponse>
@@ -58,6 +65,13 @@ public abstract class ForwardingRuleStub implements BackgroundResource {
         "Not implemented: aggregatedListForwardingRulesCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteForwardingRuleOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteForwardingRuleOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteForwardingRuleCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteForwardingRuleCallable()");
@@ -68,6 +82,13 @@ public UnaryCallable getForwarding
     throw new UnsupportedOperationException("Not implemented: getForwardingRuleCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertForwardingRuleOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: insertForwardingRuleOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertForwardingRuleCallable() {
     throw new UnsupportedOperationException("Not implemented: insertForwardingRuleCallable()");
@@ -85,6 +106,13 @@ public UnaryCallable insertForwardin
     throw new UnsupportedOperationException("Not implemented: listForwardingRulesCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setTargetForwardingRuleOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setTargetForwardingRuleOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setTargetForwardingRuleCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ForwardingRuleStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ForwardingRuleStubSettings.java
index 04f0b0b2967e..792e522e18bb 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ForwardingRuleStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ForwardingRuleStubSettings.java
@@ -24,13 +24,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -75,13 +80,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteForwardingRule to 30 seconds: + * example, to set the total timeout of getForwardingRule to 30 seconds: * *

  * 
  * ForwardingRuleStubSettings.Builder forwardingRuleSettingsBuilder =
  *     ForwardingRuleStubSettings.newBuilder();
- * forwardingRuleSettingsBuilder.deleteForwardingRuleSettings().getRetrySettings().toBuilder()
+ * forwardingRuleSettingsBuilder.getForwardingRuleSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * ForwardingRuleStubSettings forwardingRuleSettings = forwardingRuleSettingsBuilder.build();
  * 
@@ -108,15 +113,21 @@ public class ForwardingRuleStubSettings extends StubSettings
       deleteForwardingRuleSettings;
+  private final OperationCallSettings
+      deleteForwardingRuleOperationSettings;
   private final UnaryCallSettings
       getForwardingRuleSettings;
   private final UnaryCallSettings
       insertForwardingRuleSettings;
+  private final OperationCallSettings
+      insertForwardingRuleOperationSettings;
   private final PagedCallSettings<
           ListForwardingRulesHttpRequest, ForwardingRuleList, ListForwardingRulesPagedResponse>
       listForwardingRulesSettings;
   private final UnaryCallSettings
       setTargetForwardingRuleSettings;
+  private final OperationCallSettings
+      setTargetForwardingRuleOperationSettings;
 
   /** Returns the object with the settings used for calls to aggregatedListForwardingRules. */
   public PagedCallSettings<
@@ -133,6 +144,13 @@ public class ForwardingRuleStubSettings extends StubSettings
+      deleteForwardingRuleOperationSettings() {
+    return deleteForwardingRuleOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getForwardingRule. */
   public UnaryCallSettings
       getForwardingRuleSettings() {
@@ -145,6 +163,13 @@ public class ForwardingRuleStubSettings extends StubSettings
+      insertForwardingRuleOperationSettings() {
+    return insertForwardingRuleOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listForwardingRules. */
   public PagedCallSettings<
           ListForwardingRulesHttpRequest, ForwardingRuleList, ListForwardingRulesPagedResponse>
@@ -158,6 +183,13 @@ public class ForwardingRuleStubSettings extends StubSettings
+      setTargetForwardingRuleOperationSettings() {
+    return setTargetForwardingRuleOperationSettings;
+  }
+
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   public ForwardingRuleStub createStub() throws IOException {
     if (getTransportChannelProvider()
@@ -236,10 +268,16 @@ protected ForwardingRuleStubSettings(Builder settingsBuilder) throws IOException
     aggregatedListForwardingRulesSettings =
         settingsBuilder.aggregatedListForwardingRulesSettings().build();
     deleteForwardingRuleSettings = settingsBuilder.deleteForwardingRuleSettings().build();
+    deleteForwardingRuleOperationSettings =
+        settingsBuilder.deleteForwardingRuleOperationSettings().build();
     getForwardingRuleSettings = settingsBuilder.getForwardingRuleSettings().build();
     insertForwardingRuleSettings = settingsBuilder.insertForwardingRuleSettings().build();
+    insertForwardingRuleOperationSettings =
+        settingsBuilder.insertForwardingRuleOperationSettings().build();
     listForwardingRulesSettings = settingsBuilder.listForwardingRulesSettings().build();
     setTargetForwardingRuleSettings = settingsBuilder.setTargetForwardingRuleSettings().build();
+    setTargetForwardingRuleOperationSettings =
+        settingsBuilder.setTargetForwardingRuleOperationSettings().build();
   }
 
   private static final PagedListDescriptor<
@@ -397,15 +435,24 @@ public static class Builder extends StubSettings.Builder
         deleteForwardingRuleSettings;
+    private final OperationCallSettings.Builder<
+            DeleteForwardingRuleHttpRequest, EmptyMessage, Operation>
+        deleteForwardingRuleOperationSettings;
     private final UnaryCallSettings.Builder
         getForwardingRuleSettings;
     private final UnaryCallSettings.Builder
         insertForwardingRuleSettings;
+    private final OperationCallSettings.Builder<
+            InsertForwardingRuleHttpRequest, EmptyMessage, Operation>
+        insertForwardingRuleOperationSettings;
     private final PagedCallSettings.Builder<
             ListForwardingRulesHttpRequest, ForwardingRuleList, ListForwardingRulesPagedResponse>
         listForwardingRulesSettings;
     private final UnaryCallSettings.Builder
         setTargetForwardingRuleSettings;
+    private final OperationCallSettings.Builder<
+            SetTargetForwardingRuleHttpRequest, EmptyMessage, Operation>
+        setTargetForwardingRuleOperationSettings;
 
     private static final ImmutableMap>
         RETRYABLE_CODE_DEFINITIONS;
@@ -453,15 +500,21 @@ protected Builder(ClientContext clientContext) {
 
       deleteForwardingRuleSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteForwardingRuleOperationSettings = OperationCallSettings.newBuilder();
+
       getForwardingRuleSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertForwardingRuleSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertForwardingRuleOperationSettings = OperationCallSettings.newBuilder();
+
       listForwardingRulesSettings =
           PagedCallSettings.newBuilder(LIST_FORWARDING_RULES_PAGE_STR_FACT);
 
       setTargetForwardingRuleSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setTargetForwardingRuleOperationSettings = OperationCallSettings.newBuilder();
+
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
               aggregatedListForwardingRulesSettings,
@@ -514,6 +567,70 @@ private static Builder initDefaults(Builder builder) {
           .setTargetForwardingRuleSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteForwardingRuleOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertForwardingRuleOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setTargetForwardingRuleOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -524,10 +641,16 @@ protected Builder(ForwardingRuleStubSettings settings) {
       aggregatedListForwardingRulesSettings =
           settings.aggregatedListForwardingRulesSettings.toBuilder();
       deleteForwardingRuleSettings = settings.deleteForwardingRuleSettings.toBuilder();
+      deleteForwardingRuleOperationSettings =
+          settings.deleteForwardingRuleOperationSettings.toBuilder();
       getForwardingRuleSettings = settings.getForwardingRuleSettings.toBuilder();
       insertForwardingRuleSettings = settings.insertForwardingRuleSettings.toBuilder();
+      insertForwardingRuleOperationSettings =
+          settings.insertForwardingRuleOperationSettings.toBuilder();
       listForwardingRulesSettings = settings.listForwardingRulesSettings.toBuilder();
       setTargetForwardingRuleSettings = settings.setTargetForwardingRuleSettings.toBuilder();
+      setTargetForwardingRuleOperationSettings =
+          settings.setTargetForwardingRuleOperationSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
@@ -570,6 +693,14 @@ public Builder applyToAllUnaryMethods(
       return deleteForwardingRuleSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteForwardingRule. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteForwardingRuleOperationSettings() {
+      return deleteForwardingRuleOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getForwardingRule. */
     public UnaryCallSettings.Builder
         getForwardingRuleSettings() {
@@ -582,6 +713,14 @@ public Builder applyToAllUnaryMethods(
       return insertForwardingRuleSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertForwardingRule. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertForwardingRuleOperationSettings() {
+      return insertForwardingRuleOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listForwardingRules. */
     public PagedCallSettings.Builder<
             ListForwardingRulesHttpRequest, ForwardingRuleList, ListForwardingRulesPagedResponse>
@@ -595,6 +734,15 @@ public Builder applyToAllUnaryMethods(
       return setTargetForwardingRuleSettings;
     }
 
+    /** Returns the builder for the settings used for calls to setTargetForwardingRule. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetTargetForwardingRuleHttpRequest, EmptyMessage, Operation>
+        setTargetForwardingRuleOperationSettings() {
+      return setTargetForwardingRuleOperationSettings;
+    }
+
     @Override
     public ForwardingRuleStubSettings build() throws IOException {
       return new ForwardingRuleStubSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/GlobalAddressStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/GlobalAddressStub.java
index 9082e4ff0093..ea5dfcb1c8ad 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/GlobalAddressStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/GlobalAddressStub.java
@@ -19,6 +19,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.Address;
 import com.google.cloud.compute.v1.AddressList;
@@ -39,6 +41,18 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class GlobalAddressStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public GlobalOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteGlobalAddressOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteGlobalAddressOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteGlobalAddressCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteGlobalAddressCallable()");
@@ -49,6 +63,13 @@ public UnaryCallable getGlobalAddressCalla
     throw new UnsupportedOperationException("Not implemented: getGlobalAddressCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertGlobalAddressOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: insertGlobalAddressOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertGlobalAddressCallable() {
     throw new UnsupportedOperationException("Not implemented: insertGlobalAddressCallable()");
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/GlobalAddressStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/GlobalAddressStubSettings.java
index e05c845daa68..0a93ff98dfc5 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/GlobalAddressStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/GlobalAddressStubSettings.java
@@ -23,13 +23,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -70,13 +75,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteGlobalAddress to 30 seconds: + * example, to set the total timeout of getGlobalAddress to 30 seconds: * *

  * 
  * GlobalAddressStubSettings.Builder globalAddressSettingsBuilder =
  *     GlobalAddressStubSettings.newBuilder();
- * globalAddressSettingsBuilder.deleteGlobalAddressSettings().getRetrySettings().toBuilder()
+ * globalAddressSettingsBuilder.getGlobalAddressSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * GlobalAddressStubSettings globalAddressSettings = globalAddressSettingsBuilder.build();
  * 
@@ -98,9 +103,13 @@ public class GlobalAddressStubSettings extends StubSettings
       deleteGlobalAddressSettings;
+  private final OperationCallSettings
+      deleteGlobalAddressOperationSettings;
   private final UnaryCallSettings getGlobalAddressSettings;
   private final UnaryCallSettings
       insertGlobalAddressSettings;
+  private final OperationCallSettings
+      insertGlobalAddressOperationSettings;
   private final PagedCallSettings<
           ListGlobalAddressesHttpRequest, AddressList, ListGlobalAddressesPagedResponse>
       listGlobalAddressesSettings;
@@ -111,6 +120,13 @@ public class GlobalAddressStubSettings extends StubSettings
+      deleteGlobalAddressOperationSettings() {
+    return deleteGlobalAddressOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getGlobalAddress. */
   public UnaryCallSettings getGlobalAddressSettings() {
     return getGlobalAddressSettings;
@@ -122,6 +138,13 @@ public UnaryCallSettings getGlobalAddressS
     return insertGlobalAddressSettings;
   }
 
+  /** Returns the object with the settings used for calls to insertGlobalAddress. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertGlobalAddressOperationSettings() {
+    return insertGlobalAddressOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listGlobalAddresses. */
   public PagedCallSettings<
           ListGlobalAddressesHttpRequest, AddressList, ListGlobalAddressesPagedResponse>
@@ -205,8 +228,12 @@ protected GlobalAddressStubSettings(Builder settingsBuilder) throws IOException
     super(settingsBuilder);
 
     deleteGlobalAddressSettings = settingsBuilder.deleteGlobalAddressSettings().build();
+    deleteGlobalAddressOperationSettings =
+        settingsBuilder.deleteGlobalAddressOperationSettings().build();
     getGlobalAddressSettings = settingsBuilder.getGlobalAddressSettings().build();
     insertGlobalAddressSettings = settingsBuilder.insertGlobalAddressSettings().build();
+    insertGlobalAddressOperationSettings =
+        settingsBuilder.insertGlobalAddressOperationSettings().build();
     listGlobalAddressesSettings = settingsBuilder.listGlobalAddressesSettings().build();
   }
 
@@ -274,10 +301,16 @@ public static class Builder extends StubSettings.Builder
         deleteGlobalAddressSettings;
+    private final OperationCallSettings.Builder<
+            DeleteGlobalAddressHttpRequest, EmptyMessage, Operation>
+        deleteGlobalAddressOperationSettings;
     private final UnaryCallSettings.Builder
         getGlobalAddressSettings;
     private final UnaryCallSettings.Builder
         insertGlobalAddressSettings;
+    private final OperationCallSettings.Builder<
+            InsertGlobalAddressHttpRequest, EmptyMessage, Operation>
+        insertGlobalAddressOperationSettings;
     private final PagedCallSettings.Builder<
             ListGlobalAddressesHttpRequest, AddressList, ListGlobalAddressesPagedResponse>
         listGlobalAddressesSettings;
@@ -325,10 +358,14 @@ protected Builder(ClientContext clientContext) {
 
       deleteGlobalAddressSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteGlobalAddressOperationSettings = OperationCallSettings.newBuilder();
+
       getGlobalAddressSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertGlobalAddressSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertGlobalAddressOperationSettings = OperationCallSettings.newBuilder();
+
       listGlobalAddressesSettings =
           PagedCallSettings.newBuilder(LIST_GLOBAL_ADDRESSES_PAGE_STR_FACT);
 
@@ -372,6 +409,48 @@ private static Builder initDefaults(Builder builder) {
           .listGlobalAddressesSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteGlobalAddressOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertGlobalAddressOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -380,8 +459,12 @@ protected Builder(GlobalAddressStubSettings settings) {
       super(settings);
 
       deleteGlobalAddressSettings = settings.deleteGlobalAddressSettings.toBuilder();
+      deleteGlobalAddressOperationSettings =
+          settings.deleteGlobalAddressOperationSettings.toBuilder();
       getGlobalAddressSettings = settings.getGlobalAddressSettings.toBuilder();
       insertGlobalAddressSettings = settings.insertGlobalAddressSettings.toBuilder();
+      insertGlobalAddressOperationSettings =
+          settings.insertGlobalAddressOperationSettings.toBuilder();
       listGlobalAddressesSettings = settings.listGlobalAddressesSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
@@ -414,6 +497,14 @@ public Builder applyToAllUnaryMethods(
       return deleteGlobalAddressSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteGlobalAddress. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteGlobalAddressOperationSettings() {
+      return deleteGlobalAddressOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getGlobalAddress. */
     public UnaryCallSettings.Builder
         getGlobalAddressSettings() {
@@ -426,6 +517,14 @@ public Builder applyToAllUnaryMethods(
       return insertGlobalAddressSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertGlobalAddress. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertGlobalAddressOperationSettings() {
+      return insertGlobalAddressOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listGlobalAddresses. */
     public PagedCallSettings.Builder<
             ListGlobalAddressesHttpRequest, AddressList, ListGlobalAddressesPagedResponse>
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/GlobalForwardingRuleStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/GlobalForwardingRuleStub.java
index f7adbbec36f3..d065412e6e70 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/GlobalForwardingRuleStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/GlobalForwardingRuleStub.java
@@ -19,6 +19,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.DeleteGlobalForwardingRuleHttpRequest;
 import com.google.cloud.compute.v1.ForwardingRule;
@@ -40,6 +42,18 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class GlobalForwardingRuleStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public GlobalOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteGlobalForwardingRuleOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteGlobalForwardingRuleOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       deleteGlobalForwardingRuleCallable() {
@@ -53,6 +67,13 @@ public abstract class GlobalForwardingRuleStub implements BackgroundResource {
     throw new UnsupportedOperationException("Not implemented: getGlobalForwardingRuleCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertGlobalForwardingRuleOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: insertGlobalForwardingRuleOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       insertGlobalForwardingRuleCallable() {
@@ -73,6 +94,13 @@ public abstract class GlobalForwardingRuleStub implements BackgroundResource {
     throw new UnsupportedOperationException("Not implemented: listGlobalForwardingRulesCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setTargetGlobalForwardingRuleOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setTargetGlobalForwardingRuleOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setTargetGlobalForwardingRuleCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/GlobalForwardingRuleStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/GlobalForwardingRuleStubSettings.java
index 9b520926ca60..61d07b0c525d 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/GlobalForwardingRuleStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/GlobalForwardingRuleStubSettings.java
@@ -23,13 +23,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -71,13 +76,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteGlobalForwardingRule to 30 seconds: + * example, to set the total timeout of getGlobalForwardingRule to 30 seconds: * *

  * 
  * GlobalForwardingRuleStubSettings.Builder globalForwardingRuleSettingsBuilder =
  *     GlobalForwardingRuleStubSettings.newBuilder();
- * globalForwardingRuleSettingsBuilder.deleteGlobalForwardingRuleSettings().getRetrySettings().toBuilder()
+ * globalForwardingRuleSettingsBuilder.getGlobalForwardingRuleSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * GlobalForwardingRuleStubSettings globalForwardingRuleSettings = globalForwardingRuleSettingsBuilder.build();
  * 
@@ -100,10 +105,16 @@ public class GlobalForwardingRuleStubSettings
 
   private final UnaryCallSettings
       deleteGlobalForwardingRuleSettings;
+  private final OperationCallSettings<
+          DeleteGlobalForwardingRuleHttpRequest, EmptyMessage, Operation>
+      deleteGlobalForwardingRuleOperationSettings;
   private final UnaryCallSettings
       getGlobalForwardingRuleSettings;
   private final UnaryCallSettings
       insertGlobalForwardingRuleSettings;
+  private final OperationCallSettings<
+          InsertGlobalForwardingRuleHttpRequest, EmptyMessage, Operation>
+      insertGlobalForwardingRuleOperationSettings;
   private final PagedCallSettings<
           ListGlobalForwardingRulesHttpRequest,
           ForwardingRuleList,
@@ -111,6 +122,9 @@ public class GlobalForwardingRuleStubSettings
       listGlobalForwardingRulesSettings;
   private final UnaryCallSettings
       setTargetGlobalForwardingRuleSettings;
+  private final OperationCallSettings<
+          SetTargetGlobalForwardingRuleHttpRequest, EmptyMessage, Operation>
+      setTargetGlobalForwardingRuleOperationSettings;
 
   /** Returns the object with the settings used for calls to deleteGlobalForwardingRule. */
   public UnaryCallSettings
@@ -118,6 +132,13 @@ public class GlobalForwardingRuleStubSettings
     return deleteGlobalForwardingRuleSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteGlobalForwardingRule. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteGlobalForwardingRuleOperationSettings() {
+    return deleteGlobalForwardingRuleOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getGlobalForwardingRule. */
   public UnaryCallSettings
       getGlobalForwardingRuleSettings() {
@@ -130,6 +151,13 @@ public class GlobalForwardingRuleStubSettings
     return insertGlobalForwardingRuleSettings;
   }
 
+  /** Returns the object with the settings used for calls to insertGlobalForwardingRule. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertGlobalForwardingRuleOperationSettings() {
+    return insertGlobalForwardingRuleOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listGlobalForwardingRules. */
   public PagedCallSettings<
           ListGlobalForwardingRulesHttpRequest,
@@ -145,6 +173,13 @@ public class GlobalForwardingRuleStubSettings
     return setTargetGlobalForwardingRuleSettings;
   }
 
+  /** Returns the object with the settings used for calls to setTargetGlobalForwardingRule. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setTargetGlobalForwardingRuleOperationSettings() {
+    return setTargetGlobalForwardingRuleOperationSettings;
+  }
+
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   public GlobalForwardingRuleStub createStub() throws IOException {
     if (getTransportChannelProvider()
@@ -222,12 +257,18 @@ protected GlobalForwardingRuleStubSettings(Builder settingsBuilder) throws IOExc
 
     deleteGlobalForwardingRuleSettings =
         settingsBuilder.deleteGlobalForwardingRuleSettings().build();
+    deleteGlobalForwardingRuleOperationSettings =
+        settingsBuilder.deleteGlobalForwardingRuleOperationSettings().build();
     getGlobalForwardingRuleSettings = settingsBuilder.getGlobalForwardingRuleSettings().build();
     insertGlobalForwardingRuleSettings =
         settingsBuilder.insertGlobalForwardingRuleSettings().build();
+    insertGlobalForwardingRuleOperationSettings =
+        settingsBuilder.insertGlobalForwardingRuleOperationSettings().build();
     listGlobalForwardingRulesSettings = settingsBuilder.listGlobalForwardingRulesSettings().build();
     setTargetGlobalForwardingRuleSettings =
         settingsBuilder.setTargetGlobalForwardingRuleSettings().build();
+    setTargetGlobalForwardingRuleOperationSettings =
+        settingsBuilder.setTargetGlobalForwardingRuleOperationSettings().build();
   }
 
   private static final PagedListDescriptor<
@@ -305,10 +346,16 @@ public static class Builder
 
     private final UnaryCallSettings.Builder
         deleteGlobalForwardingRuleSettings;
+    private final OperationCallSettings.Builder<
+            DeleteGlobalForwardingRuleHttpRequest, EmptyMessage, Operation>
+        deleteGlobalForwardingRuleOperationSettings;
     private final UnaryCallSettings.Builder
         getGlobalForwardingRuleSettings;
     private final UnaryCallSettings.Builder
         insertGlobalForwardingRuleSettings;
+    private final OperationCallSettings.Builder<
+            InsertGlobalForwardingRuleHttpRequest, EmptyMessage, Operation>
+        insertGlobalForwardingRuleOperationSettings;
     private final PagedCallSettings.Builder<
             ListGlobalForwardingRulesHttpRequest,
             ForwardingRuleList,
@@ -316,6 +363,9 @@ public static class Builder
         listGlobalForwardingRulesSettings;
     private final UnaryCallSettings.Builder
         setTargetGlobalForwardingRuleSettings;
+    private final OperationCallSettings.Builder<
+            SetTargetGlobalForwardingRuleHttpRequest, EmptyMessage, Operation>
+        setTargetGlobalForwardingRuleOperationSettings;
 
     private static final ImmutableMap>
         RETRYABLE_CODE_DEFINITIONS;
@@ -360,15 +410,21 @@ protected Builder(ClientContext clientContext) {
 
       deleteGlobalForwardingRuleSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteGlobalForwardingRuleOperationSettings = OperationCallSettings.newBuilder();
+
       getGlobalForwardingRuleSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertGlobalForwardingRuleSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertGlobalForwardingRuleOperationSettings = OperationCallSettings.newBuilder();
+
       listGlobalForwardingRulesSettings =
           PagedCallSettings.newBuilder(LIST_GLOBAL_FORWARDING_RULES_PAGE_STR_FACT);
 
       setTargetGlobalForwardingRuleSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setTargetGlobalForwardingRuleOperationSettings = OperationCallSettings.newBuilder();
+
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
               deleteGlobalForwardingRuleSettings,
@@ -415,6 +471,72 @@ private static Builder initDefaults(Builder builder) {
           .setTargetGlobalForwardingRuleSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteGlobalForwardingRuleOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertGlobalForwardingRuleOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setTargetGlobalForwardingRuleOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -423,11 +545,17 @@ protected Builder(GlobalForwardingRuleStubSettings settings) {
       super(settings);
 
       deleteGlobalForwardingRuleSettings = settings.deleteGlobalForwardingRuleSettings.toBuilder();
+      deleteGlobalForwardingRuleOperationSettings =
+          settings.deleteGlobalForwardingRuleOperationSettings.toBuilder();
       getGlobalForwardingRuleSettings = settings.getGlobalForwardingRuleSettings.toBuilder();
       insertGlobalForwardingRuleSettings = settings.insertGlobalForwardingRuleSettings.toBuilder();
+      insertGlobalForwardingRuleOperationSettings =
+          settings.insertGlobalForwardingRuleOperationSettings.toBuilder();
       listGlobalForwardingRulesSettings = settings.listGlobalForwardingRulesSettings.toBuilder();
       setTargetGlobalForwardingRuleSettings =
           settings.setTargetGlobalForwardingRuleSettings.toBuilder();
+      setTargetGlobalForwardingRuleOperationSettings =
+          settings.setTargetGlobalForwardingRuleOperationSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
@@ -460,6 +588,15 @@ public Builder applyToAllUnaryMethods(
       return deleteGlobalForwardingRuleSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteGlobalForwardingRule. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            DeleteGlobalForwardingRuleHttpRequest, EmptyMessage, Operation>
+        deleteGlobalForwardingRuleOperationSettings() {
+      return deleteGlobalForwardingRuleOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getGlobalForwardingRule. */
     public UnaryCallSettings.Builder
         getGlobalForwardingRuleSettings() {
@@ -472,6 +609,15 @@ public Builder applyToAllUnaryMethods(
       return insertGlobalForwardingRuleSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertGlobalForwardingRule. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            InsertGlobalForwardingRuleHttpRequest, EmptyMessage, Operation>
+        insertGlobalForwardingRuleOperationSettings() {
+      return insertGlobalForwardingRuleOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listGlobalForwardingRules. */
     public PagedCallSettings.Builder<
             ListGlobalForwardingRulesHttpRequest,
@@ -487,6 +633,15 @@ public Builder applyToAllUnaryMethods(
       return setTargetGlobalForwardingRuleSettings;
     }
 
+    /** Returns the builder for the settings used for calls to setTargetGlobalForwardingRule. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetTargetGlobalForwardingRuleHttpRequest, EmptyMessage, Operation>
+        setTargetGlobalForwardingRuleOperationSettings() {
+      return setTargetGlobalForwardingRuleOperationSettings;
+    }
+
     @Override
     public GlobalForwardingRuleStubSettings build() throws IOException {
       return new GlobalForwardingRuleStubSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/GlobalOperationStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/GlobalOperationStub.java
index 3fa9174f2d9c..e0ebbc7c2746 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/GlobalOperationStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/GlobalOperationStub.java
@@ -20,6 +20,7 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.AggregatedListGlobalOperationsHttpRequest;
 import com.google.cloud.compute.v1.DeleteGlobalOperationHttpRequest;
@@ -56,7 +57,8 @@ public abstract class GlobalOperationStub implements BackgroundResource {
   }
 
   @BetaApi
-  public UnaryCallable deleteGlobalOperationCallable() {
+  public UnaryCallable
+      deleteGlobalOperationCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteGlobalOperationCallable()");
   }
 
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/GlobalOperationStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/GlobalOperationStubSettings.java
index 54125f13d802..620f4de081af 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/GlobalOperationStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/GlobalOperationStubSettings.java
@@ -24,6 +24,7 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
@@ -103,7 +104,7 @@ public class GlobalOperationStubSettings extends StubSettings
       aggregatedListGlobalOperationsSettings;
-  private final UnaryCallSettings
+  private final UnaryCallSettings
       deleteGlobalOperationSettings;
   private final UnaryCallSettings
       getGlobalOperationSettings;
@@ -121,7 +122,8 @@ public class GlobalOperationStubSettings extends StubSettings deleteGlobalOperationSettings() {
+  public UnaryCallSettings
+      deleteGlobalOperationSettings() {
     return deleteGlobalOperationSettings;
   }
 
@@ -367,7 +369,7 @@ public static class Builder extends StubSettings.Builder
         aggregatedListGlobalOperationsSettings;
-    private final UnaryCallSettings.Builder
+    private final UnaryCallSettings.Builder
         deleteGlobalOperationSettings;
     private final UnaryCallSettings.Builder
         getGlobalOperationSettings;
@@ -513,7 +515,7 @@ public Builder applyToAllUnaryMethods(
     }
 
     /** Returns the builder for the settings used for calls to deleteGlobalOperation. */
-    public UnaryCallSettings.Builder
+    public UnaryCallSettings.Builder
         deleteGlobalOperationSettings() {
       return deleteGlobalOperationSettings;
     }
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HealthCheckStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HealthCheckStub.java
index 9d76b2872586..388d34b0fe74 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HealthCheckStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HealthCheckStub.java
@@ -19,6 +19,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.DeleteHealthCheckHttpRequest;
 import com.google.cloud.compute.v1.GetHealthCheckHttpRequest;
@@ -41,6 +43,18 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class HealthCheckStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public GlobalOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteHealthCheckOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteHealthCheckOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteHealthCheckCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteHealthCheckCallable()");
@@ -51,6 +65,13 @@ public UnaryCallable getHealthCheckCalla
     throw new UnsupportedOperationException("Not implemented: getHealthCheckCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertHealthCheckOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: insertHealthCheckOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertHealthCheckCallable() {
     throw new UnsupportedOperationException("Not implemented: insertHealthCheckCallable()");
@@ -67,11 +88,24 @@ public UnaryCallable listHealthChe
     throw new UnsupportedOperationException("Not implemented: listHealthChecksCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchHealthCheckOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: patchHealthCheckOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable patchHealthCheckCallable() {
     throw new UnsupportedOperationException("Not implemented: patchHealthCheckCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      updateHealthCheckOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: updateHealthCheckOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable updateHealthCheckCallable() {
     throw new UnsupportedOperationException("Not implemented: updateHealthCheckCallable()");
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HealthCheckStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HealthCheckStubSettings.java
index 7ee4a09758a8..fe74759eb6a7 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HealthCheckStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HealthCheckStubSettings.java
@@ -23,13 +23,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -72,13 +77,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteHealthCheck to 30 seconds: + * example, to set the total timeout of getHealthCheck to 30 seconds: * *

  * 
  * HealthCheckStubSettings.Builder healthCheckSettingsBuilder =
  *     HealthCheckStubSettings.newBuilder();
- * healthCheckSettingsBuilder.deleteHealthCheckSettings().getRetrySettings().toBuilder()
+ * healthCheckSettingsBuilder.getHealthCheckSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * HealthCheckStubSettings healthCheckSettings = healthCheckSettingsBuilder.build();
  * 
@@ -100,21 +105,36 @@ public class HealthCheckStubSettings extends StubSettings
       deleteHealthCheckSettings;
+  private final OperationCallSettings
+      deleteHealthCheckOperationSettings;
   private final UnaryCallSettings getHealthCheckSettings;
   private final UnaryCallSettings
       insertHealthCheckSettings;
+  private final OperationCallSettings
+      insertHealthCheckOperationSettings;
   private final PagedCallSettings<
           ListHealthChecksHttpRequest, HealthCheckList, ListHealthChecksPagedResponse>
       listHealthChecksSettings;
   private final UnaryCallSettings patchHealthCheckSettings;
+  private final OperationCallSettings
+      patchHealthCheckOperationSettings;
   private final UnaryCallSettings
       updateHealthCheckSettings;
+  private final OperationCallSettings
+      updateHealthCheckOperationSettings;
 
   /** Returns the object with the settings used for calls to deleteHealthCheck. */
   public UnaryCallSettings deleteHealthCheckSettings() {
     return deleteHealthCheckSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteHealthCheck. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteHealthCheckOperationSettings() {
+    return deleteHealthCheckOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getHealthCheck. */
   public UnaryCallSettings getHealthCheckSettings() {
     return getHealthCheckSettings;
@@ -125,6 +145,13 @@ public UnaryCallSettings insertHealthCh
     return insertHealthCheckSettings;
   }
 
+  /** Returns the object with the settings used for calls to insertHealthCheck. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertHealthCheckOperationSettings() {
+    return insertHealthCheckOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listHealthChecks. */
   public PagedCallSettings<
           ListHealthChecksHttpRequest, HealthCheckList, ListHealthChecksPagedResponse>
@@ -137,11 +164,25 @@ public UnaryCallSettings patchHealthChec
     return patchHealthCheckSettings;
   }
 
+  /** Returns the object with the settings used for calls to patchHealthCheck. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      patchHealthCheckOperationSettings() {
+    return patchHealthCheckOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to updateHealthCheck. */
   public UnaryCallSettings updateHealthCheckSettings() {
     return updateHealthCheckSettings;
   }
 
+  /** Returns the object with the settings used for calls to updateHealthCheck. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      updateHealthCheckOperationSettings() {
+    return updateHealthCheckOperationSettings;
+  }
+
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   public HealthCheckStub createStub() throws IOException {
     if (getTransportChannelProvider()
@@ -218,11 +259,18 @@ protected HealthCheckStubSettings(Builder settingsBuilder) throws IOException {
     super(settingsBuilder);
 
     deleteHealthCheckSettings = settingsBuilder.deleteHealthCheckSettings().build();
+    deleteHealthCheckOperationSettings =
+        settingsBuilder.deleteHealthCheckOperationSettings().build();
     getHealthCheckSettings = settingsBuilder.getHealthCheckSettings().build();
     insertHealthCheckSettings = settingsBuilder.insertHealthCheckSettings().build();
+    insertHealthCheckOperationSettings =
+        settingsBuilder.insertHealthCheckOperationSettings().build();
     listHealthChecksSettings = settingsBuilder.listHealthChecksSettings().build();
     patchHealthCheckSettings = settingsBuilder.patchHealthCheckSettings().build();
+    patchHealthCheckOperationSettings = settingsBuilder.patchHealthCheckOperationSettings().build();
     updateHealthCheckSettings = settingsBuilder.updateHealthCheckSettings().build();
+    updateHealthCheckOperationSettings =
+        settingsBuilder.updateHealthCheckOperationSettings().build();
   }
 
   private static final PagedListDescriptor<
@@ -289,17 +337,29 @@ public static class Builder extends StubSettings.Builder
         deleteHealthCheckSettings;
+    private final OperationCallSettings.Builder<
+            DeleteHealthCheckHttpRequest, EmptyMessage, Operation>
+        deleteHealthCheckOperationSettings;
     private final UnaryCallSettings.Builder
         getHealthCheckSettings;
     private final UnaryCallSettings.Builder
         insertHealthCheckSettings;
+    private final OperationCallSettings.Builder<
+            InsertHealthCheckHttpRequest, EmptyMessage, Operation>
+        insertHealthCheckOperationSettings;
     private final PagedCallSettings.Builder<
             ListHealthChecksHttpRequest, HealthCheckList, ListHealthChecksPagedResponse>
         listHealthChecksSettings;
     private final UnaryCallSettings.Builder
         patchHealthCheckSettings;
+    private final OperationCallSettings.Builder<
+            PatchHealthCheckHttpRequest, EmptyMessage, Operation>
+        patchHealthCheckOperationSettings;
     private final UnaryCallSettings.Builder
         updateHealthCheckSettings;
+    private final OperationCallSettings.Builder<
+            UpdateHealthCheckHttpRequest, EmptyMessage, Operation>
+        updateHealthCheckOperationSettings;
 
     private static final ImmutableMap>
         RETRYABLE_CODE_DEFINITIONS;
@@ -344,16 +404,24 @@ protected Builder(ClientContext clientContext) {
 
       deleteHealthCheckSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteHealthCheckOperationSettings = OperationCallSettings.newBuilder();
+
       getHealthCheckSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertHealthCheckSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertHealthCheckOperationSettings = OperationCallSettings.newBuilder();
+
       listHealthChecksSettings = PagedCallSettings.newBuilder(LIST_HEALTH_CHECKS_PAGE_STR_FACT);
 
       patchHealthCheckSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      patchHealthCheckOperationSettings = OperationCallSettings.newBuilder();
+
       updateHealthCheckSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      updateHealthCheckOperationSettings = OperationCallSettings.newBuilder();
+
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
               deleteHealthCheckSettings,
@@ -406,6 +474,90 @@ private static Builder initDefaults(Builder builder) {
           .updateHealthCheckSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteHealthCheckOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertHealthCheckOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .patchHealthCheckOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .updateHealthCheckOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -414,11 +566,15 @@ protected Builder(HealthCheckStubSettings settings) {
       super(settings);
 
       deleteHealthCheckSettings = settings.deleteHealthCheckSettings.toBuilder();
+      deleteHealthCheckOperationSettings = settings.deleteHealthCheckOperationSettings.toBuilder();
       getHealthCheckSettings = settings.getHealthCheckSettings.toBuilder();
       insertHealthCheckSettings = settings.insertHealthCheckSettings.toBuilder();
+      insertHealthCheckOperationSettings = settings.insertHealthCheckOperationSettings.toBuilder();
       listHealthChecksSettings = settings.listHealthChecksSettings.toBuilder();
       patchHealthCheckSettings = settings.patchHealthCheckSettings.toBuilder();
+      patchHealthCheckOperationSettings = settings.patchHealthCheckOperationSettings.toBuilder();
       updateHealthCheckSettings = settings.updateHealthCheckSettings.toBuilder();
+      updateHealthCheckOperationSettings = settings.updateHealthCheckOperationSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
@@ -452,6 +608,14 @@ public Builder applyToAllUnaryMethods(
       return deleteHealthCheckSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteHealthCheck. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteHealthCheckOperationSettings() {
+      return deleteHealthCheckOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getHealthCheck. */
     public UnaryCallSettings.Builder
         getHealthCheckSettings() {
@@ -464,6 +628,14 @@ public Builder applyToAllUnaryMethods(
       return insertHealthCheckSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertHealthCheck. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertHealthCheckOperationSettings() {
+      return insertHealthCheckOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listHealthChecks. */
     public PagedCallSettings.Builder<
             ListHealthChecksHttpRequest, HealthCheckList, ListHealthChecksPagedResponse>
@@ -477,12 +649,28 @@ public Builder applyToAllUnaryMethods(
       return patchHealthCheckSettings;
     }
 
+    /** Returns the builder for the settings used for calls to patchHealthCheck. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchHealthCheckOperationSettings() {
+      return patchHealthCheckOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to updateHealthCheck. */
     public UnaryCallSettings.Builder
         updateHealthCheckSettings() {
       return updateHealthCheckSettings;
     }
 
+    /** Returns the builder for the settings used for calls to updateHealthCheck. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        updateHealthCheckOperationSettings() {
+      return updateHealthCheckOperationSettings;
+    }
+
     @Override
     public HealthCheckStubSettings build() throws IOException {
       return new HealthCheckStubSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpHealthCheckStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpHealthCheckStub.java
index 8858c6194d48..1a4ca2386388 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpHealthCheckStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpHealthCheckStub.java
@@ -19,6 +19,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.DeleteHttpHealthCheckHttpRequest;
 import com.google.cloud.compute.v1.GetHttpHealthCheckHttpRequest;
@@ -41,6 +43,18 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class HttpHealthCheckStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public GlobalOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteHttpHealthCheckOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteHttpHealthCheckOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       deleteHttpHealthCheckCallable() {
@@ -53,6 +67,13 @@ public abstract class HttpHealthCheckStub implements BackgroundResource {
     throw new UnsupportedOperationException("Not implemented: getHttpHealthCheckCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertHttpHealthCheckOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: insertHttpHealthCheckOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       insertHttpHealthCheckCallable() {
@@ -71,11 +92,25 @@ public abstract class HttpHealthCheckStub implements BackgroundResource {
     throw new UnsupportedOperationException("Not implemented: listHttpHealthChecksCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchHttpHealthCheckOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: patchHttpHealthCheckOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable patchHttpHealthCheckCallable() {
     throw new UnsupportedOperationException("Not implemented: patchHttpHealthCheckCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      updateHttpHealthCheckOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: updateHttpHealthCheckOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       updateHttpHealthCheckCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpHealthCheckStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpHealthCheckStubSettings.java
index 22a22f9b553b..0925a03f76cc 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpHealthCheckStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpHealthCheckStubSettings.java
@@ -23,13 +23,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -72,13 +77,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteHttpHealthCheck to 30 seconds: + * example, to set the total timeout of getHttpHealthCheck to 30 seconds: * *

  * 
  * HttpHealthCheckStubSettings.Builder httpHealthCheckSettingsBuilder =
  *     HttpHealthCheckStubSettings.newBuilder();
- * httpHealthCheckSettingsBuilder.deleteHttpHealthCheckSettings().getRetrySettings().toBuilder()
+ * httpHealthCheckSettingsBuilder.getHttpHealthCheckSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * HttpHealthCheckStubSettings httpHealthCheckSettings = httpHealthCheckSettingsBuilder.build();
  * 
@@ -100,17 +105,25 @@ public class HttpHealthCheckStubSettings extends StubSettings
       deleteHttpHealthCheckSettings;
+  private final OperationCallSettings
+      deleteHttpHealthCheckOperationSettings;
   private final UnaryCallSettings
       getHttpHealthCheckSettings;
   private final UnaryCallSettings
       insertHttpHealthCheckSettings;
+  private final OperationCallSettings
+      insertHttpHealthCheckOperationSettings;
   private final PagedCallSettings<
           ListHttpHealthChecksHttpRequest, HttpHealthCheckList, ListHttpHealthChecksPagedResponse>
       listHttpHealthChecksSettings;
   private final UnaryCallSettings
       patchHttpHealthCheckSettings;
+  private final OperationCallSettings
+      patchHttpHealthCheckOperationSettings;
   private final UnaryCallSettings
       updateHttpHealthCheckSettings;
+  private final OperationCallSettings
+      updateHttpHealthCheckOperationSettings;
 
   /** Returns the object with the settings used for calls to deleteHttpHealthCheck. */
   public UnaryCallSettings
@@ -118,6 +131,13 @@ public class HttpHealthCheckStubSettings extends StubSettings
+      deleteHttpHealthCheckOperationSettings() {
+    return deleteHttpHealthCheckOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getHttpHealthCheck. */
   public UnaryCallSettings
       getHttpHealthCheckSettings() {
@@ -130,6 +150,13 @@ public class HttpHealthCheckStubSettings extends StubSettings
+      insertHttpHealthCheckOperationSettings() {
+    return insertHttpHealthCheckOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listHttpHealthChecks. */
   public PagedCallSettings<
           ListHttpHealthChecksHttpRequest, HttpHealthCheckList, ListHttpHealthChecksPagedResponse>
@@ -143,12 +170,26 @@ public class HttpHealthCheckStubSettings extends StubSettings
+      patchHttpHealthCheckOperationSettings() {
+    return patchHttpHealthCheckOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to updateHttpHealthCheck. */
   public UnaryCallSettings
       updateHttpHealthCheckSettings() {
     return updateHttpHealthCheckSettings;
   }
 
+  /** Returns the object with the settings used for calls to updateHttpHealthCheck. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      updateHttpHealthCheckOperationSettings() {
+    return updateHttpHealthCheckOperationSettings;
+  }
+
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   public HttpHealthCheckStub createStub() throws IOException {
     if (getTransportChannelProvider()
@@ -225,11 +266,19 @@ protected HttpHealthCheckStubSettings(Builder settingsBuilder) throws IOExceptio
     super(settingsBuilder);
 
     deleteHttpHealthCheckSettings = settingsBuilder.deleteHttpHealthCheckSettings().build();
+    deleteHttpHealthCheckOperationSettings =
+        settingsBuilder.deleteHttpHealthCheckOperationSettings().build();
     getHttpHealthCheckSettings = settingsBuilder.getHttpHealthCheckSettings().build();
     insertHttpHealthCheckSettings = settingsBuilder.insertHttpHealthCheckSettings().build();
+    insertHttpHealthCheckOperationSettings =
+        settingsBuilder.insertHttpHealthCheckOperationSettings().build();
     listHttpHealthChecksSettings = settingsBuilder.listHttpHealthChecksSettings().build();
     patchHttpHealthCheckSettings = settingsBuilder.patchHttpHealthCheckSettings().build();
+    patchHttpHealthCheckOperationSettings =
+        settingsBuilder.patchHttpHealthCheckOperationSettings().build();
     updateHttpHealthCheckSettings = settingsBuilder.updateHttpHealthCheckSettings().build();
+    updateHttpHealthCheckOperationSettings =
+        settingsBuilder.updateHttpHealthCheckOperationSettings().build();
   }
 
   private static final PagedListDescriptor<
@@ -303,17 +352,29 @@ public static class Builder extends StubSettings.Builder
         deleteHttpHealthCheckSettings;
+    private final OperationCallSettings.Builder<
+            DeleteHttpHealthCheckHttpRequest, EmptyMessage, Operation>
+        deleteHttpHealthCheckOperationSettings;
     private final UnaryCallSettings.Builder
         getHttpHealthCheckSettings;
     private final UnaryCallSettings.Builder
         insertHttpHealthCheckSettings;
+    private final OperationCallSettings.Builder<
+            InsertHttpHealthCheckHttpRequest, EmptyMessage, Operation>
+        insertHttpHealthCheckOperationSettings;
     private final PagedCallSettings.Builder<
             ListHttpHealthChecksHttpRequest, HttpHealthCheckList, ListHttpHealthChecksPagedResponse>
         listHttpHealthChecksSettings;
     private final UnaryCallSettings.Builder
         patchHttpHealthCheckSettings;
+    private final OperationCallSettings.Builder<
+            PatchHttpHealthCheckHttpRequest, EmptyMessage, Operation>
+        patchHttpHealthCheckOperationSettings;
     private final UnaryCallSettings.Builder
         updateHttpHealthCheckSettings;
+    private final OperationCallSettings.Builder<
+            UpdateHttpHealthCheckHttpRequest, EmptyMessage, Operation>
+        updateHttpHealthCheckOperationSettings;
 
     private static final ImmutableMap>
         RETRYABLE_CODE_DEFINITIONS;
@@ -358,17 +419,25 @@ protected Builder(ClientContext clientContext) {
 
       deleteHttpHealthCheckSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteHttpHealthCheckOperationSettings = OperationCallSettings.newBuilder();
+
       getHttpHealthCheckSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertHttpHealthCheckSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertHttpHealthCheckOperationSettings = OperationCallSettings.newBuilder();
+
       listHttpHealthChecksSettings =
           PagedCallSettings.newBuilder(LIST_HTTP_HEALTH_CHECKS_PAGE_STR_FACT);
 
       patchHttpHealthCheckSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      patchHttpHealthCheckOperationSettings = OperationCallSettings.newBuilder();
+
       updateHttpHealthCheckSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      updateHttpHealthCheckOperationSettings = OperationCallSettings.newBuilder();
+
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
               deleteHttpHealthCheckSettings,
@@ -421,6 +490,93 @@ private static Builder initDefaults(Builder builder) {
           .updateHttpHealthCheckSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteHttpHealthCheckOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertHttpHealthCheckOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .patchHttpHealthCheckOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .updateHttpHealthCheckOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -429,11 +585,19 @@ protected Builder(HttpHealthCheckStubSettings settings) {
       super(settings);
 
       deleteHttpHealthCheckSettings = settings.deleteHttpHealthCheckSettings.toBuilder();
+      deleteHttpHealthCheckOperationSettings =
+          settings.deleteHttpHealthCheckOperationSettings.toBuilder();
       getHttpHealthCheckSettings = settings.getHttpHealthCheckSettings.toBuilder();
       insertHttpHealthCheckSettings = settings.insertHttpHealthCheckSettings.toBuilder();
+      insertHttpHealthCheckOperationSettings =
+          settings.insertHttpHealthCheckOperationSettings.toBuilder();
       listHttpHealthChecksSettings = settings.listHttpHealthChecksSettings.toBuilder();
       patchHttpHealthCheckSettings = settings.patchHttpHealthCheckSettings.toBuilder();
+      patchHttpHealthCheckOperationSettings =
+          settings.patchHttpHealthCheckOperationSettings.toBuilder();
       updateHttpHealthCheckSettings = settings.updateHttpHealthCheckSettings.toBuilder();
+      updateHttpHealthCheckOperationSettings =
+          settings.updateHttpHealthCheckOperationSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
@@ -467,6 +631,14 @@ public Builder applyToAllUnaryMethods(
       return deleteHttpHealthCheckSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteHttpHealthCheck. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteHttpHealthCheckOperationSettings() {
+      return deleteHttpHealthCheckOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getHttpHealthCheck. */
     public UnaryCallSettings.Builder
         getHttpHealthCheckSettings() {
@@ -479,6 +651,14 @@ public Builder applyToAllUnaryMethods(
       return insertHttpHealthCheckSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertHttpHealthCheck. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertHttpHealthCheckOperationSettings() {
+      return insertHttpHealthCheckOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listHttpHealthChecks. */
     public PagedCallSettings.Builder<
             ListHttpHealthChecksHttpRequest, HttpHealthCheckList, ListHttpHealthChecksPagedResponse>
@@ -492,12 +672,28 @@ public Builder applyToAllUnaryMethods(
       return patchHttpHealthCheckSettings;
     }
 
+    /** Returns the builder for the settings used for calls to patchHttpHealthCheck. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchHttpHealthCheckOperationSettings() {
+      return patchHttpHealthCheckOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to updateHttpHealthCheck. */
     public UnaryCallSettings.Builder
         updateHttpHealthCheckSettings() {
       return updateHttpHealthCheckSettings;
     }
 
+    /** Returns the builder for the settings used for calls to updateHttpHealthCheck. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        updateHttpHealthCheckOperationSettings() {
+      return updateHttpHealthCheckOperationSettings;
+    }
+
     @Override
     public HttpHealthCheckStubSettings build() throws IOException {
       return new HttpHealthCheckStubSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonAcceleratorTypeCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonAcceleratorTypeCallableFactory.java
index 4cfae18316bd..7b07f3ad7fda 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonAcceleratorTypeCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonAcceleratorTypeCallableFactory.java
@@ -16,14 +16,18 @@
 package com.google.cloud.compute.v1.stub;
 
 import com.google.api.core.BetaApi;
+import com.google.api.gax.core.BackgroundResource;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.BatchingCallSettings;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +38,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonAcceleratorTypeCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonAcceleratorTypeCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +49,19 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          BackgroundResource operationsStub) {
+    return null;
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonAddressCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonAddressCallableFactory.java
index 69365a14f053..bd3164ef511b 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonAddressCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonAddressCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonAddressCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonAddressCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          RegionOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonAddressStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonAddressStub.java
index 5cc0e5614938..56f9a95151a5 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonAddressStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonAddressStub.java
@@ -26,9 +26,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.Address;
@@ -158,6 +160,7 @@ public class HttpJsonAddressStub extends AddressStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonRegionOperationStub operationsStub;
 
   private final UnaryCallable
       aggregatedListAddressesCallable;
@@ -165,8 +168,12 @@ public class HttpJsonAddressStub extends AddressStub {
           AggregatedListAddressesHttpRequest, AggregatedListAddressesPagedResponse>
       aggregatedListAddressesPagedCallable;
   private final UnaryCallable deleteAddressCallable;
+  private final OperationCallable
+      deleteAddressOperationCallable;
   private final UnaryCallable getAddressCallable;
   private final UnaryCallable insertAddressCallable;
+  private final OperationCallable
+      insertAddressOperationCallable;
   private final UnaryCallable listAddressesCallable;
   private final UnaryCallable
       listAddressesPagedCallable;
@@ -208,6 +215,7 @@ protected HttpJsonAddressStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonRegionOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         aggregatedListAddressesTransportSettings =
@@ -245,12 +253,24 @@ protected HttpJsonAddressStub(
     this.deleteAddressCallable =
         callableFactory.createUnaryCallable(
             deleteAddressTransportSettings, settings.deleteAddressSettings(), clientContext);
+    this.deleteAddressOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteAddressTransportSettings,
+            settings.deleteAddressOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getAddressCallable =
         callableFactory.createUnaryCallable(
             getAddressTransportSettings, settings.getAddressSettings(), clientContext);
     this.insertAddressCallable =
         callableFactory.createUnaryCallable(
             insertAddressTransportSettings, settings.insertAddressSettings(), clientContext);
+    this.insertAddressOperationCallable =
+        callableFactory.createOperationCallable(
+            insertAddressTransportSettings,
+            settings.insertAddressOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listAddressesCallable =
         callableFactory.createUnaryCallable(
             listAddressesTransportSettings, settings.listAddressesSettings(), clientContext);
@@ -261,6 +281,11 @@ protected HttpJsonAddressStub(
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonRegionOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
   @BetaApi
   public UnaryCallable
       aggregatedListAddressesPagedCallable() {
@@ -273,6 +298,12 @@ protected HttpJsonAddressStub(
     return aggregatedListAddressesCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteAddressOperationCallable() {
+    return deleteAddressOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteAddressCallable() {
     return deleteAddressCallable;
@@ -283,6 +314,12 @@ public UnaryCallable getAddressCallable() {
     return getAddressCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertAddressOperationCallable() {
+    return insertAddressOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertAddressCallable() {
     return insertAddressCallable;
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonAutoscalerCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonAutoscalerCallableFactory.java
index c809bd99b192..e43544e0d36f 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonAutoscalerCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonAutoscalerCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonAutoscalerCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonAutoscalerCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          ZoneOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonAutoscalerStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonAutoscalerStub.java
index f0ce30433123..60792c62cd62 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonAutoscalerStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonAutoscalerStub.java
@@ -26,9 +26,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.AggregatedListAutoscalersHttpRequest;
@@ -199,6 +201,7 @@ public class HttpJsonAutoscalerStub extends AutoscalerStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonZoneOperationStub operationsStub;
 
   private final UnaryCallable
       aggregatedListAutoscalersCallable;
@@ -206,13 +209,21 @@ public class HttpJsonAutoscalerStub extends AutoscalerStub {
           AggregatedListAutoscalersHttpRequest, AggregatedListAutoscalersPagedResponse>
       aggregatedListAutoscalersPagedCallable;
   private final UnaryCallable deleteAutoscalerCallable;
+  private final OperationCallable
+      deleteAutoscalerOperationCallable;
   private final UnaryCallable getAutoscalerCallable;
   private final UnaryCallable insertAutoscalerCallable;
+  private final OperationCallable
+      insertAutoscalerOperationCallable;
   private final UnaryCallable listAutoscalersCallable;
   private final UnaryCallable
       listAutoscalersPagedCallable;
   private final UnaryCallable patchAutoscalerCallable;
+  private final OperationCallable
+      patchAutoscalerOperationCallable;
   private final UnaryCallable updateAutoscalerCallable;
+  private final OperationCallable
+      updateAutoscalerOperationCallable;
 
   private final HttpJsonStubCallableFactory callableFactory;
 
@@ -253,6 +264,7 @@ protected HttpJsonAutoscalerStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonZoneOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         aggregatedListAutoscalersTransportSettings =
@@ -299,12 +311,24 @@ protected HttpJsonAutoscalerStub(
     this.deleteAutoscalerCallable =
         callableFactory.createUnaryCallable(
             deleteAutoscalerTransportSettings, settings.deleteAutoscalerSettings(), clientContext);
+    this.deleteAutoscalerOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteAutoscalerTransportSettings,
+            settings.deleteAutoscalerOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getAutoscalerCallable =
         callableFactory.createUnaryCallable(
             getAutoscalerTransportSettings, settings.getAutoscalerSettings(), clientContext);
     this.insertAutoscalerCallable =
         callableFactory.createUnaryCallable(
             insertAutoscalerTransportSettings, settings.insertAutoscalerSettings(), clientContext);
+    this.insertAutoscalerOperationCallable =
+        callableFactory.createOperationCallable(
+            insertAutoscalerTransportSettings,
+            settings.insertAutoscalerOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listAutoscalersCallable =
         callableFactory.createUnaryCallable(
             listAutoscalersTransportSettings, settings.listAutoscalersSettings(), clientContext);
@@ -314,13 +338,30 @@ protected HttpJsonAutoscalerStub(
     this.patchAutoscalerCallable =
         callableFactory.createUnaryCallable(
             patchAutoscalerTransportSettings, settings.patchAutoscalerSettings(), clientContext);
+    this.patchAutoscalerOperationCallable =
+        callableFactory.createOperationCallable(
+            patchAutoscalerTransportSettings,
+            settings.patchAutoscalerOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.updateAutoscalerCallable =
         callableFactory.createUnaryCallable(
             updateAutoscalerTransportSettings, settings.updateAutoscalerSettings(), clientContext);
+    this.updateAutoscalerOperationCallable =
+        callableFactory.createOperationCallable(
+            updateAutoscalerTransportSettings,
+            settings.updateAutoscalerOperationSettings(),
+            clientContext,
+            this.operationsStub);
 
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonZoneOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
   @BetaApi
   public UnaryCallable
       aggregatedListAutoscalersPagedCallable() {
@@ -333,6 +374,12 @@ protected HttpJsonAutoscalerStub(
     return aggregatedListAutoscalersCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteAutoscalerOperationCallable() {
+    return deleteAutoscalerOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteAutoscalerCallable() {
     return deleteAutoscalerCallable;
@@ -343,6 +390,12 @@ public UnaryCallable getAutoscalerCallable
     return getAutoscalerCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertAutoscalerOperationCallable() {
+    return insertAutoscalerOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertAutoscalerCallable() {
     return insertAutoscalerCallable;
@@ -359,11 +412,23 @@ public UnaryCallable listAutoscalers
     return listAutoscalersCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchAutoscalerOperationCallable() {
+    return patchAutoscalerOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable patchAutoscalerCallable() {
     return patchAutoscalerCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      updateAutoscalerOperationCallable() {
+    return updateAutoscalerOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable updateAutoscalerCallable() {
     return updateAutoscalerCallable;
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonBackendBucketCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonBackendBucketCallableFactory.java
index 25f2a59c0cff..1a30137d28a4 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonBackendBucketCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonBackendBucketCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonBackendBucketCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonBackendBucketCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          GlobalOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonBackendBucketStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonBackendBucketStub.java
index 67bce61c7446..ce9dc6b0327d 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonBackendBucketStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonBackendBucketStub.java
@@ -25,9 +25,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.AddSignedUrlKeyBackendBucketHttpRequest;
@@ -221,23 +223,37 @@ public class HttpJsonBackendBucketStub extends BackendBucketStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonGlobalOperationStub operationsStub;
 
   private final UnaryCallable
       addSignedUrlKeyBackendBucketCallable;
+  private final OperationCallable
+      addSignedUrlKeyBackendBucketOperationCallable;
   private final UnaryCallable
       deleteBackendBucketCallable;
+  private final OperationCallable
+      deleteBackendBucketOperationCallable;
   private final UnaryCallable
       deleteSignedUrlKeyBackendBucketCallable;
+  private final OperationCallable<
+          DeleteSignedUrlKeyBackendBucketHttpRequest, EmptyMessage, Operation>
+      deleteSignedUrlKeyBackendBucketOperationCallable;
   private final UnaryCallable getBackendBucketCallable;
   private final UnaryCallable
       insertBackendBucketCallable;
+  private final OperationCallable
+      insertBackendBucketOperationCallable;
   private final UnaryCallable
       listBackendBucketsCallable;
   private final UnaryCallable
       listBackendBucketsPagedCallable;
   private final UnaryCallable patchBackendBucketCallable;
+  private final OperationCallable
+      patchBackendBucketOperationCallable;
   private final UnaryCallable
       updateBackendBucketCallable;
+  private final OperationCallable
+      updateBackendBucketOperationCallable;
 
   private final HttpJsonStubCallableFactory callableFactory;
 
@@ -279,6 +295,7 @@ protected HttpJsonBackendBucketStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonGlobalOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         addSignedUrlKeyBackendBucketTransportSettings =
@@ -326,16 +343,34 @@ protected HttpJsonBackendBucketStub(
             addSignedUrlKeyBackendBucketTransportSettings,
             settings.addSignedUrlKeyBackendBucketSettings(),
             clientContext);
+    this.addSignedUrlKeyBackendBucketOperationCallable =
+        callableFactory.createOperationCallable(
+            addSignedUrlKeyBackendBucketTransportSettings,
+            settings.addSignedUrlKeyBackendBucketOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.deleteBackendBucketCallable =
         callableFactory.createUnaryCallable(
             deleteBackendBucketTransportSettings,
             settings.deleteBackendBucketSettings(),
             clientContext);
+    this.deleteBackendBucketOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteBackendBucketTransportSettings,
+            settings.deleteBackendBucketOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.deleteSignedUrlKeyBackendBucketCallable =
         callableFactory.createUnaryCallable(
             deleteSignedUrlKeyBackendBucketTransportSettings,
             settings.deleteSignedUrlKeyBackendBucketSettings(),
             clientContext);
+    this.deleteSignedUrlKeyBackendBucketOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteSignedUrlKeyBackendBucketTransportSettings,
+            settings.deleteSignedUrlKeyBackendBucketOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getBackendBucketCallable =
         callableFactory.createUnaryCallable(
             getBackendBucketTransportSettings, settings.getBackendBucketSettings(), clientContext);
@@ -344,6 +379,12 @@ protected HttpJsonBackendBucketStub(
             insertBackendBucketTransportSettings,
             settings.insertBackendBucketSettings(),
             clientContext);
+    this.insertBackendBucketOperationCallable =
+        callableFactory.createOperationCallable(
+            insertBackendBucketTransportSettings,
+            settings.insertBackendBucketOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listBackendBucketsCallable =
         callableFactory.createUnaryCallable(
             listBackendBucketsTransportSettings,
@@ -359,26 +400,61 @@ protected HttpJsonBackendBucketStub(
             patchBackendBucketTransportSettings,
             settings.patchBackendBucketSettings(),
             clientContext);
+    this.patchBackendBucketOperationCallable =
+        callableFactory.createOperationCallable(
+            patchBackendBucketTransportSettings,
+            settings.patchBackendBucketOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.updateBackendBucketCallable =
         callableFactory.createUnaryCallable(
             updateBackendBucketTransportSettings,
             settings.updateBackendBucketSettings(),
             clientContext);
+    this.updateBackendBucketOperationCallable =
+        callableFactory.createOperationCallable(
+            updateBackendBucketTransportSettings,
+            settings.updateBackendBucketOperationSettings(),
+            clientContext,
+            this.operationsStub);
 
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonGlobalOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      addSignedUrlKeyBackendBucketOperationCallable() {
+    return addSignedUrlKeyBackendBucketOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       addSignedUrlKeyBackendBucketCallable() {
     return addSignedUrlKeyBackendBucketCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteBackendBucketOperationCallable() {
+    return deleteBackendBucketOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteBackendBucketCallable() {
     return deleteBackendBucketCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteSignedUrlKeyBackendBucketOperationCallable() {
+    return deleteSignedUrlKeyBackendBucketOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       deleteSignedUrlKeyBackendBucketCallable() {
@@ -390,6 +466,12 @@ public UnaryCallable getBackendBucke
     return getBackendBucketCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertBackendBucketOperationCallable() {
+    return insertBackendBucketOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertBackendBucketCallable() {
     return insertBackendBucketCallable;
@@ -407,11 +489,23 @@ public UnaryCallable insertBackendBuc
     return listBackendBucketsCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchBackendBucketOperationCallable() {
+    return patchBackendBucketOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable patchBackendBucketCallable() {
     return patchBackendBucketCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      updateBackendBucketOperationCallable() {
+    return updateBackendBucketOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable updateBackendBucketCallable() {
     return updateBackendBucketCallable;
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonBackendServiceCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonBackendServiceCallableFactory.java
index d8c3a181ec7c..ff6d25c2bdaf 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonBackendServiceCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonBackendServiceCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonBackendServiceCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonBackendServiceCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          GlobalOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonBackendServiceStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonBackendServiceStub.java
index e67026c332fe..a6dfc6bf4943 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonBackendServiceStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonBackendServiceStub.java
@@ -26,9 +26,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.AddSignedUrlKeyBackendServiceHttpRequest;
@@ -295,9 +297,12 @@ public class HttpJsonBackendServiceStub extends BackendServiceStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonGlobalOperationStub operationsStub;
 
   private final UnaryCallable
       addSignedUrlKeyBackendServiceCallable;
+  private final OperationCallable
+      addSignedUrlKeyBackendServiceOperationCallable;
   private final UnaryCallable<
           AggregatedListBackendServicesHttpRequest, BackendServiceAggregatedList>
       aggregatedListBackendServicesCallable;
@@ -306,24 +311,38 @@ public class HttpJsonBackendServiceStub extends BackendServiceStub {
       aggregatedListBackendServicesPagedCallable;
   private final UnaryCallable
       deleteBackendServiceCallable;
+  private final OperationCallable
+      deleteBackendServiceOperationCallable;
   private final UnaryCallable
       deleteSignedUrlKeyBackendServiceCallable;
+  private final OperationCallable<
+          DeleteSignedUrlKeyBackendServiceHttpRequest, EmptyMessage, Operation>
+      deleteSignedUrlKeyBackendServiceOperationCallable;
   private final UnaryCallable
       getBackendServiceCallable;
   private final UnaryCallable
       getHealthBackendServiceCallable;
   private final UnaryCallable
       insertBackendServiceCallable;
+  private final OperationCallable
+      insertBackendServiceOperationCallable;
   private final UnaryCallable
       listBackendServicesCallable;
   private final UnaryCallable
       listBackendServicesPagedCallable;
   private final UnaryCallable
       patchBackendServiceCallable;
+  private final OperationCallable
+      patchBackendServiceOperationCallable;
   private final UnaryCallable
       setSecurityPolicyBackendServiceCallable;
+  private final OperationCallable<
+          SetSecurityPolicyBackendServiceHttpRequest, EmptyMessage, Operation>
+      setSecurityPolicyBackendServiceOperationCallable;
   private final UnaryCallable
       updateBackendServiceCallable;
+  private final OperationCallable
+      updateBackendServiceOperationCallable;
 
   private final HttpJsonStubCallableFactory callableFactory;
 
@@ -365,6 +384,7 @@ protected HttpJsonBackendServiceStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonGlobalOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         addSignedUrlKeyBackendServiceTransportSettings =
@@ -431,6 +451,12 @@ protected HttpJsonBackendServiceStub(
             addSignedUrlKeyBackendServiceTransportSettings,
             settings.addSignedUrlKeyBackendServiceSettings(),
             clientContext);
+    this.addSignedUrlKeyBackendServiceOperationCallable =
+        callableFactory.createOperationCallable(
+            addSignedUrlKeyBackendServiceTransportSettings,
+            settings.addSignedUrlKeyBackendServiceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.aggregatedListBackendServicesCallable =
         callableFactory.createUnaryCallable(
             aggregatedListBackendServicesTransportSettings,
@@ -446,11 +472,23 @@ protected HttpJsonBackendServiceStub(
             deleteBackendServiceTransportSettings,
             settings.deleteBackendServiceSettings(),
             clientContext);
+    this.deleteBackendServiceOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteBackendServiceTransportSettings,
+            settings.deleteBackendServiceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.deleteSignedUrlKeyBackendServiceCallable =
         callableFactory.createUnaryCallable(
             deleteSignedUrlKeyBackendServiceTransportSettings,
             settings.deleteSignedUrlKeyBackendServiceSettings(),
             clientContext);
+    this.deleteSignedUrlKeyBackendServiceOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteSignedUrlKeyBackendServiceTransportSettings,
+            settings.deleteSignedUrlKeyBackendServiceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getBackendServiceCallable =
         callableFactory.createUnaryCallable(
             getBackendServiceTransportSettings,
@@ -466,6 +504,12 @@ protected HttpJsonBackendServiceStub(
             insertBackendServiceTransportSettings,
             settings.insertBackendServiceSettings(),
             clientContext);
+    this.insertBackendServiceOperationCallable =
+        callableFactory.createOperationCallable(
+            insertBackendServiceTransportSettings,
+            settings.insertBackendServiceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listBackendServicesCallable =
         callableFactory.createUnaryCallable(
             listBackendServicesTransportSettings,
@@ -481,20 +525,49 @@ protected HttpJsonBackendServiceStub(
             patchBackendServiceTransportSettings,
             settings.patchBackendServiceSettings(),
             clientContext);
+    this.patchBackendServiceOperationCallable =
+        callableFactory.createOperationCallable(
+            patchBackendServiceTransportSettings,
+            settings.patchBackendServiceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setSecurityPolicyBackendServiceCallable =
         callableFactory.createUnaryCallable(
             setSecurityPolicyBackendServiceTransportSettings,
             settings.setSecurityPolicyBackendServiceSettings(),
             clientContext);
+    this.setSecurityPolicyBackendServiceOperationCallable =
+        callableFactory.createOperationCallable(
+            setSecurityPolicyBackendServiceTransportSettings,
+            settings.setSecurityPolicyBackendServiceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.updateBackendServiceCallable =
         callableFactory.createUnaryCallable(
             updateBackendServiceTransportSettings,
             settings.updateBackendServiceSettings(),
             clientContext);
+    this.updateBackendServiceOperationCallable =
+        callableFactory.createOperationCallable(
+            updateBackendServiceTransportSettings,
+            settings.updateBackendServiceOperationSettings(),
+            clientContext,
+            this.operationsStub);
 
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonGlobalOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      addSignedUrlKeyBackendServiceOperationCallable() {
+    return addSignedUrlKeyBackendServiceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       addSignedUrlKeyBackendServiceCallable() {
@@ -514,11 +587,23 @@ protected HttpJsonBackendServiceStub(
     return aggregatedListBackendServicesCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteBackendServiceOperationCallable() {
+    return deleteBackendServiceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteBackendServiceCallable() {
     return deleteBackendServiceCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteSignedUrlKeyBackendServiceOperationCallable() {
+    return deleteSignedUrlKeyBackendServiceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       deleteSignedUrlKeyBackendServiceCallable() {
@@ -536,6 +621,12 @@ public UnaryCallable getBackendSer
     return getHealthBackendServiceCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertBackendServiceOperationCallable() {
+    return insertBackendServiceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertBackendServiceCallable() {
     return insertBackendServiceCallable;
@@ -553,17 +644,35 @@ public UnaryCallable insertBackendSe
     return listBackendServicesCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchBackendServiceOperationCallable() {
+    return patchBackendServiceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable patchBackendServiceCallable() {
     return patchBackendServiceCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setSecurityPolicyBackendServiceOperationCallable() {
+    return setSecurityPolicyBackendServiceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setSecurityPolicyBackendServiceCallable() {
     return setSecurityPolicyBackendServiceCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      updateBackendServiceOperationCallable() {
+    return updateBackendServiceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable updateBackendServiceCallable() {
     return updateBackendServiceCallable;
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonDiskCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonDiskCallableFactory.java
index 26772348f613..a385486e01d5 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonDiskCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonDiskCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonDiskCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonDiskCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          ZoneOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonDiskStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonDiskStub.java
index 689ff9876128..85ec975432b4 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonDiskStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonDiskStub.java
@@ -26,9 +26,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.AggregatedListDisksHttpRequest;
@@ -288,21 +290,32 @@ public class HttpJsonDiskStub extends DiskStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonZoneOperationStub operationsStub;
 
   private final UnaryCallable
       aggregatedListDisksCallable;
   private final UnaryCallable
       aggregatedListDisksPagedCallable;
   private final UnaryCallable createSnapshotDiskCallable;
+  private final OperationCallable
+      createSnapshotDiskOperationCallable;
   private final UnaryCallable deleteDiskCallable;
+  private final OperationCallable
+      deleteDiskOperationCallable;
   private final UnaryCallable getDiskCallable;
   private final UnaryCallable getIamPolicyDiskCallable;
   private final UnaryCallable insertDiskCallable;
+  private final OperationCallable
+      insertDiskOperationCallable;
   private final UnaryCallable listDisksCallable;
   private final UnaryCallable listDisksPagedCallable;
   private final UnaryCallable resizeDiskCallable;
+  private final OperationCallable
+      resizeDiskOperationCallable;
   private final UnaryCallable setIamPolicyDiskCallable;
   private final UnaryCallable setLabelsDiskCallable;
+  private final OperationCallable
+      setLabelsDiskOperationCallable;
   private final UnaryCallable
       testIamPermissionsDiskCallable;
 
@@ -341,6 +354,7 @@ protected HttpJsonDiskStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonZoneOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         aggregatedListDisksTransportSettings =
@@ -406,9 +420,21 @@ protected HttpJsonDiskStub(
             createSnapshotDiskTransportSettings,
             settings.createSnapshotDiskSettings(),
             clientContext);
+    this.createSnapshotDiskOperationCallable =
+        callableFactory.createOperationCallable(
+            createSnapshotDiskTransportSettings,
+            settings.createSnapshotDiskOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.deleteDiskCallable =
         callableFactory.createUnaryCallable(
             deleteDiskTransportSettings, settings.deleteDiskSettings(), clientContext);
+    this.deleteDiskOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteDiskTransportSettings,
+            settings.deleteDiskOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getDiskCallable =
         callableFactory.createUnaryCallable(
             getDiskTransportSettings, settings.getDiskSettings(), clientContext);
@@ -418,6 +444,12 @@ protected HttpJsonDiskStub(
     this.insertDiskCallable =
         callableFactory.createUnaryCallable(
             insertDiskTransportSettings, settings.insertDiskSettings(), clientContext);
+    this.insertDiskOperationCallable =
+        callableFactory.createOperationCallable(
+            insertDiskTransportSettings,
+            settings.insertDiskOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listDisksCallable =
         callableFactory.createUnaryCallable(
             listDisksTransportSettings, settings.listDisksSettings(), clientContext);
@@ -427,12 +459,24 @@ protected HttpJsonDiskStub(
     this.resizeDiskCallable =
         callableFactory.createUnaryCallable(
             resizeDiskTransportSettings, settings.resizeDiskSettings(), clientContext);
+    this.resizeDiskOperationCallable =
+        callableFactory.createOperationCallable(
+            resizeDiskTransportSettings,
+            settings.resizeDiskOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setIamPolicyDiskCallable =
         callableFactory.createUnaryCallable(
             setIamPolicyDiskTransportSettings, settings.setIamPolicyDiskSettings(), clientContext);
     this.setLabelsDiskCallable =
         callableFactory.createUnaryCallable(
             setLabelsDiskTransportSettings, settings.setLabelsDiskSettings(), clientContext);
+    this.setLabelsDiskOperationCallable =
+        callableFactory.createOperationCallable(
+            setLabelsDiskTransportSettings,
+            settings.setLabelsDiskOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.testIamPermissionsDiskCallable =
         callableFactory.createUnaryCallable(
             testIamPermissionsDiskTransportSettings,
@@ -442,6 +486,11 @@ protected HttpJsonDiskStub(
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonZoneOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
   @BetaApi
   public UnaryCallable
       aggregatedListDisksPagedCallable() {
@@ -454,11 +503,23 @@ protected HttpJsonDiskStub(
     return aggregatedListDisksCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      createSnapshotDiskOperationCallable() {
+    return createSnapshotDiskOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable createSnapshotDiskCallable() {
     return createSnapshotDiskCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteDiskOperationCallable() {
+    return deleteDiskOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteDiskCallable() {
     return deleteDiskCallable;
@@ -474,6 +535,12 @@ public UnaryCallable getIamPolicyDiskCallab
     return getIamPolicyDiskCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertDiskOperationCallable() {
+    return insertDiskOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertDiskCallable() {
     return insertDiskCallable;
@@ -489,6 +556,12 @@ public UnaryCallable listDisksCallable() {
     return listDisksCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      resizeDiskOperationCallable() {
+    return resizeDiskOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable resizeDiskCallable() {
     return resizeDiskCallable;
@@ -499,6 +572,12 @@ public UnaryCallable setIamPolicyDiskCallab
     return setIamPolicyDiskCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setLabelsDiskOperationCallable() {
+    return setLabelsDiskOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable setLabelsDiskCallable() {
     return setLabelsDiskCallable;
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonDiskTypeCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonDiskTypeCallableFactory.java
index 928e628b530a..29e609382d88 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonDiskTypeCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonDiskTypeCallableFactory.java
@@ -16,14 +16,18 @@
 package com.google.cloud.compute.v1.stub;
 
 import com.google.api.core.BetaApi;
+import com.google.api.gax.core.BackgroundResource;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.BatchingCallSettings;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +38,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonDiskTypeCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonDiskTypeCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +49,19 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          BackgroundResource operationsStub) {
+    return null;
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonFirewallCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonFirewallCallableFactory.java
index 16199de782e1..6f54706a1527 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonFirewallCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonFirewallCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonFirewallCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonFirewallCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          GlobalOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonFirewallStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonFirewallStub.java
index f592ee9cc377..651292f4e968 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonFirewallStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonFirewallStub.java
@@ -25,9 +25,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.DeleteFirewallHttpRequest;
@@ -171,15 +173,24 @@ public class HttpJsonFirewallStub extends FirewallStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonGlobalOperationStub operationsStub;
 
   private final UnaryCallable deleteFirewallCallable;
+  private final OperationCallable
+      deleteFirewallOperationCallable;
   private final UnaryCallable getFirewallCallable;
   private final UnaryCallable insertFirewallCallable;
+  private final OperationCallable
+      insertFirewallOperationCallable;
   private final UnaryCallable listFirewallsCallable;
   private final UnaryCallable
       listFirewallsPagedCallable;
   private final UnaryCallable patchFirewallCallable;
+  private final OperationCallable
+      patchFirewallOperationCallable;
   private final UnaryCallable updateFirewallCallable;
+  private final OperationCallable
+      updateFirewallOperationCallable;
 
   private final HttpJsonStubCallableFactory callableFactory;
 
@@ -219,6 +230,7 @@ protected HttpJsonFirewallStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonGlobalOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings deleteFirewallTransportSettings =
         HttpJsonCallSettings.newBuilder()
@@ -248,12 +260,24 @@ protected HttpJsonFirewallStub(
     this.deleteFirewallCallable =
         callableFactory.createUnaryCallable(
             deleteFirewallTransportSettings, settings.deleteFirewallSettings(), clientContext);
+    this.deleteFirewallOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteFirewallTransportSettings,
+            settings.deleteFirewallOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getFirewallCallable =
         callableFactory.createUnaryCallable(
             getFirewallTransportSettings, settings.getFirewallSettings(), clientContext);
     this.insertFirewallCallable =
         callableFactory.createUnaryCallable(
             insertFirewallTransportSettings, settings.insertFirewallSettings(), clientContext);
+    this.insertFirewallOperationCallable =
+        callableFactory.createOperationCallable(
+            insertFirewallTransportSettings,
+            settings.insertFirewallOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listFirewallsCallable =
         callableFactory.createUnaryCallable(
             listFirewallsTransportSettings, settings.listFirewallsSettings(), clientContext);
@@ -263,13 +287,36 @@ protected HttpJsonFirewallStub(
     this.patchFirewallCallable =
         callableFactory.createUnaryCallable(
             patchFirewallTransportSettings, settings.patchFirewallSettings(), clientContext);
+    this.patchFirewallOperationCallable =
+        callableFactory.createOperationCallable(
+            patchFirewallTransportSettings,
+            settings.patchFirewallOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.updateFirewallCallable =
         callableFactory.createUnaryCallable(
             updateFirewallTransportSettings, settings.updateFirewallSettings(), clientContext);
+    this.updateFirewallOperationCallable =
+        callableFactory.createOperationCallable(
+            updateFirewallTransportSettings,
+            settings.updateFirewallOperationSettings(),
+            clientContext,
+            this.operationsStub);
 
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonGlobalOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteFirewallOperationCallable() {
+    return deleteFirewallOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteFirewallCallable() {
     return deleteFirewallCallable;
@@ -280,6 +327,12 @@ public UnaryCallable getFirewallCallable() {
     return getFirewallCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertFirewallOperationCallable() {
+    return insertFirewallOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertFirewallCallable() {
     return insertFirewallCallable;
@@ -296,11 +349,23 @@ public UnaryCallable listFirewallsCallab
     return listFirewallsCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchFirewallOperationCallable() {
+    return patchFirewallOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable patchFirewallCallable() {
     return patchFirewallCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      updateFirewallOperationCallable() {
+    return updateFirewallOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable updateFirewallCallable() {
     return updateFirewallCallable;
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonForwardingRuleCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonForwardingRuleCallableFactory.java
index 3a4bf5f6e844..e4dea3c509ef 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonForwardingRuleCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonForwardingRuleCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonForwardingRuleCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonForwardingRuleCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          RegionOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonForwardingRuleStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonForwardingRuleStub.java
index 03caf5adabbb..73f916c4422b 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonForwardingRuleStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonForwardingRuleStub.java
@@ -26,9 +26,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.AggregatedListForwardingRulesHttpRequest;
@@ -186,6 +188,7 @@ public class HttpJsonForwardingRuleStub extends ForwardingRuleStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonRegionOperationStub operationsStub;
 
   private final UnaryCallable<
           AggregatedListForwardingRulesHttpRequest, ForwardingRuleAggregatedList>
@@ -195,16 +198,22 @@ public class HttpJsonForwardingRuleStub extends ForwardingRuleStub {
       aggregatedListForwardingRulesPagedCallable;
   private final UnaryCallable
       deleteForwardingRuleCallable;
+  private final OperationCallable
+      deleteForwardingRuleOperationCallable;
   private final UnaryCallable
       getForwardingRuleCallable;
   private final UnaryCallable
       insertForwardingRuleCallable;
+  private final OperationCallable
+      insertForwardingRuleOperationCallable;
   private final UnaryCallable
       listForwardingRulesCallable;
   private final UnaryCallable
       listForwardingRulesPagedCallable;
   private final UnaryCallable
       setTargetForwardingRuleCallable;
+  private final OperationCallable
+      setTargetForwardingRuleOperationCallable;
 
   private final HttpJsonStubCallableFactory callableFactory;
 
@@ -246,6 +255,7 @@ protected HttpJsonForwardingRuleStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonRegionOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         aggregatedListForwardingRulesTransportSettings =
@@ -295,6 +305,12 @@ protected HttpJsonForwardingRuleStub(
             deleteForwardingRuleTransportSettings,
             settings.deleteForwardingRuleSettings(),
             clientContext);
+    this.deleteForwardingRuleOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteForwardingRuleTransportSettings,
+            settings.deleteForwardingRuleOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getForwardingRuleCallable =
         callableFactory.createUnaryCallable(
             getForwardingRuleTransportSettings,
@@ -305,6 +321,12 @@ protected HttpJsonForwardingRuleStub(
             insertForwardingRuleTransportSettings,
             settings.insertForwardingRuleSettings(),
             clientContext);
+    this.insertForwardingRuleOperationCallable =
+        callableFactory.createOperationCallable(
+            insertForwardingRuleTransportSettings,
+            settings.insertForwardingRuleOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listForwardingRulesCallable =
         callableFactory.createUnaryCallable(
             listForwardingRulesTransportSettings,
@@ -320,10 +342,21 @@ protected HttpJsonForwardingRuleStub(
             setTargetForwardingRuleTransportSettings,
             settings.setTargetForwardingRuleSettings(),
             clientContext);
+    this.setTargetForwardingRuleOperationCallable =
+        callableFactory.createOperationCallable(
+            setTargetForwardingRuleTransportSettings,
+            settings.setTargetForwardingRuleOperationSettings(),
+            clientContext,
+            this.operationsStub);
 
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonRegionOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
   @BetaApi
   public UnaryCallable<
           AggregatedListForwardingRulesHttpRequest, AggregatedListForwardingRulesPagedResponse>
@@ -337,6 +370,12 @@ protected HttpJsonForwardingRuleStub(
     return aggregatedListForwardingRulesCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteForwardingRuleOperationCallable() {
+    return deleteForwardingRuleOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteForwardingRuleCallable() {
     return deleteForwardingRuleCallable;
@@ -347,6 +386,12 @@ public UnaryCallable getForwarding
     return getForwardingRuleCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertForwardingRuleOperationCallable() {
+    return insertForwardingRuleOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertForwardingRuleCallable() {
     return insertForwardingRuleCallable;
@@ -364,6 +409,12 @@ public UnaryCallable insertForwardin
     return listForwardingRulesCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setTargetForwardingRuleOperationCallable() {
+    return setTargetForwardingRuleOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setTargetForwardingRuleCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonGlobalAddressCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonGlobalAddressCallableFactory.java
index 62da914a4012..1e3129abce50 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonGlobalAddressCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonGlobalAddressCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonGlobalAddressCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonGlobalAddressCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          GlobalOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonGlobalAddressStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonGlobalAddressStub.java
index b22c934da4b6..ed08534b474b 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonGlobalAddressStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonGlobalAddressStub.java
@@ -25,9 +25,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.Address;
@@ -131,12 +133,17 @@ public class HttpJsonGlobalAddressStub extends GlobalAddressStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonGlobalOperationStub operationsStub;
 
   private final UnaryCallable
       deleteGlobalAddressCallable;
+  private final OperationCallable
+      deleteGlobalAddressOperationCallable;
   private final UnaryCallable getGlobalAddressCallable;
   private final UnaryCallable
       insertGlobalAddressCallable;
+  private final OperationCallable
+      insertGlobalAddressOperationCallable;
   private final UnaryCallable
       listGlobalAddressesCallable;
   private final UnaryCallable
@@ -182,6 +189,7 @@ protected HttpJsonGlobalAddressStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonGlobalOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         deleteGlobalAddressTransportSettings =
@@ -208,6 +216,12 @@ protected HttpJsonGlobalAddressStub(
             deleteGlobalAddressTransportSettings,
             settings.deleteGlobalAddressSettings(),
             clientContext);
+    this.deleteGlobalAddressOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteGlobalAddressTransportSettings,
+            settings.deleteGlobalAddressOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getGlobalAddressCallable =
         callableFactory.createUnaryCallable(
             getGlobalAddressTransportSettings, settings.getGlobalAddressSettings(), clientContext);
@@ -216,6 +230,12 @@ protected HttpJsonGlobalAddressStub(
             insertGlobalAddressTransportSettings,
             settings.insertGlobalAddressSettings(),
             clientContext);
+    this.insertGlobalAddressOperationCallable =
+        callableFactory.createOperationCallable(
+            insertGlobalAddressTransportSettings,
+            settings.insertGlobalAddressOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listGlobalAddressesCallable =
         callableFactory.createUnaryCallable(
             listGlobalAddressesTransportSettings,
@@ -230,6 +250,17 @@ protected HttpJsonGlobalAddressStub(
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonGlobalOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteGlobalAddressOperationCallable() {
+    return deleteGlobalAddressOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteGlobalAddressCallable() {
     return deleteGlobalAddressCallable;
@@ -240,6 +271,12 @@ public UnaryCallable getGlobalAddressCalla
     return getGlobalAddressCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertGlobalAddressOperationCallable() {
+    return insertGlobalAddressOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertGlobalAddressCallable() {
     return insertGlobalAddressCallable;
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonGlobalForwardingRuleCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonGlobalForwardingRuleCallableFactory.java
index 584a93b0104b..d4a9ed030504 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonGlobalForwardingRuleCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonGlobalForwardingRuleCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonGlobalForwardingRuleCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonGlobalForwardingRuleCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          GlobalOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonGlobalForwardingRuleStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonGlobalForwardingRuleStub.java
index 0b34f52ee443..611d70296035 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonGlobalForwardingRuleStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonGlobalForwardingRuleStub.java
@@ -25,9 +25,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.DeleteGlobalForwardingRuleHttpRequest;
@@ -156,13 +158,18 @@ public class HttpJsonGlobalForwardingRuleStub extends GlobalForwardingRuleStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonGlobalOperationStub operationsStub;
 
   private final UnaryCallable
       deleteGlobalForwardingRuleCallable;
+  private final OperationCallable
+      deleteGlobalForwardingRuleOperationCallable;
   private final UnaryCallable
       getGlobalForwardingRuleCallable;
   private final UnaryCallable
       insertGlobalForwardingRuleCallable;
+  private final OperationCallable
+      insertGlobalForwardingRuleOperationCallable;
   private final UnaryCallable
       listGlobalForwardingRulesCallable;
   private final UnaryCallable<
@@ -170,6 +177,8 @@ public class HttpJsonGlobalForwardingRuleStub extends GlobalForwardingRuleStub {
       listGlobalForwardingRulesPagedCallable;
   private final UnaryCallable
       setTargetGlobalForwardingRuleCallable;
+  private final OperationCallable
+      setTargetGlobalForwardingRuleOperationCallable;
 
   private final HttpJsonStubCallableFactory callableFactory;
 
@@ -211,6 +220,7 @@ protected HttpJsonGlobalForwardingRuleStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonGlobalOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         deleteGlobalForwardingRuleTransportSettings =
@@ -244,6 +254,12 @@ protected HttpJsonGlobalForwardingRuleStub(
             deleteGlobalForwardingRuleTransportSettings,
             settings.deleteGlobalForwardingRuleSettings(),
             clientContext);
+    this.deleteGlobalForwardingRuleOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteGlobalForwardingRuleTransportSettings,
+            settings.deleteGlobalForwardingRuleOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getGlobalForwardingRuleCallable =
         callableFactory.createUnaryCallable(
             getGlobalForwardingRuleTransportSettings,
@@ -254,6 +270,12 @@ protected HttpJsonGlobalForwardingRuleStub(
             insertGlobalForwardingRuleTransportSettings,
             settings.insertGlobalForwardingRuleSettings(),
             clientContext);
+    this.insertGlobalForwardingRuleOperationCallable =
+        callableFactory.createOperationCallable(
+            insertGlobalForwardingRuleTransportSettings,
+            settings.insertGlobalForwardingRuleOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listGlobalForwardingRulesCallable =
         callableFactory.createUnaryCallable(
             listGlobalForwardingRulesTransportSettings,
@@ -269,10 +291,27 @@ protected HttpJsonGlobalForwardingRuleStub(
             setTargetGlobalForwardingRuleTransportSettings,
             settings.setTargetGlobalForwardingRuleSettings(),
             clientContext);
+    this.setTargetGlobalForwardingRuleOperationCallable =
+        callableFactory.createOperationCallable(
+            setTargetGlobalForwardingRuleTransportSettings,
+            settings.setTargetGlobalForwardingRuleOperationSettings(),
+            clientContext,
+            this.operationsStub);
 
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonGlobalOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteGlobalForwardingRuleOperationCallable() {
+    return deleteGlobalForwardingRuleOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       deleteGlobalForwardingRuleCallable() {
@@ -285,6 +324,12 @@ protected HttpJsonGlobalForwardingRuleStub(
     return getGlobalForwardingRuleCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertGlobalForwardingRuleOperationCallable() {
+    return insertGlobalForwardingRuleOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       insertGlobalForwardingRuleCallable() {
@@ -303,6 +348,12 @@ protected HttpJsonGlobalForwardingRuleStub(
     return listGlobalForwardingRulesCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setTargetGlobalForwardingRuleOperationCallable() {
+    return setTargetGlobalForwardingRuleOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setTargetGlobalForwardingRuleCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonGlobalOperationCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonGlobalOperationCallableFactory.java
index b23bc230a52f..c6c545248a48 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonGlobalOperationCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonGlobalOperationCallableFactory.java
@@ -16,14 +16,18 @@
 package com.google.cloud.compute.v1.stub;
 
 import com.google.api.core.BetaApi;
+import com.google.api.gax.core.BackgroundResource;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.BatchingCallSettings;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +38,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonGlobalOperationCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonGlobalOperationCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +49,19 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          BackgroundResource operationsStub) {
+    return null;
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonGlobalOperationStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonGlobalOperationStub.java
index 7f8cf57ce81c..5df7c9d663b9 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonGlobalOperationStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonGlobalOperationStub.java
@@ -26,6 +26,7 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
@@ -78,9 +79,9 @@ public class HttpJsonGlobalOperationStub extends GlobalOperationStub {
               .build();
 
   @InternalApi
-  public static final ApiMethodDescriptor
+  public static final ApiMethodDescriptor
       deleteGlobalOperationMethodDescriptor =
-          ApiMethodDescriptor.newBuilder()
+          ApiMethodDescriptor.newBuilder()
               .setFullMethodName("compute.globalOperations.delete")
               .setHttpMethod(HttpMethods.DELETE)
               .setRequestFormatter(
@@ -140,7 +141,8 @@ public class HttpJsonGlobalOperationStub extends GlobalOperationStub {
   private final UnaryCallable<
           AggregatedListGlobalOperationsHttpRequest, AggregatedListGlobalOperationsPagedResponse>
       aggregatedListGlobalOperationsPagedCallable;
-  private final UnaryCallable deleteGlobalOperationCallable;
+  private final UnaryCallable
+      deleteGlobalOperationCallable;
   private final UnaryCallable getGlobalOperationCallable;
   private final UnaryCallable
       listGlobalOperationsCallable;
@@ -194,9 +196,9 @@ protected HttpJsonGlobalOperationStub(
                 .newBuilder()
                 .setMethodDescriptor(aggregatedListGlobalOperationsMethodDescriptor)
                 .build();
-    HttpJsonCallSettings
+    HttpJsonCallSettings
         deleteGlobalOperationTransportSettings =
-            HttpJsonCallSettings.newBuilder()
+            HttpJsonCallSettings.newBuilder()
                 .setMethodDescriptor(deleteGlobalOperationMethodDescriptor)
                 .build();
     HttpJsonCallSettings
@@ -258,7 +260,8 @@ protected HttpJsonGlobalOperationStub(
   }
 
   @BetaApi
-  public UnaryCallable deleteGlobalOperationCallable() {
+  public UnaryCallable
+      deleteGlobalOperationCallable() {
     return deleteGlobalOperationCallable;
   }
 
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonHealthCheckCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonHealthCheckCallableFactory.java
index 6eef2549ec3a..ffe593658d83 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonHealthCheckCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonHealthCheckCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonHealthCheckCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonHealthCheckCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          GlobalOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonHealthCheckStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonHealthCheckStub.java
index 8b29707770d6..8e9e7097e83b 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonHealthCheckStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonHealthCheckStub.java
@@ -25,9 +25,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.DeleteHealthCheckHttpRequest;
@@ -175,16 +177,25 @@ public class HttpJsonHealthCheckStub extends HealthCheckStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonGlobalOperationStub operationsStub;
 
   private final UnaryCallable deleteHealthCheckCallable;
+  private final OperationCallable
+      deleteHealthCheckOperationCallable;
   private final UnaryCallable getHealthCheckCallable;
   private final UnaryCallable insertHealthCheckCallable;
+  private final OperationCallable
+      insertHealthCheckOperationCallable;
   private final UnaryCallable
       listHealthChecksCallable;
   private final UnaryCallable
       listHealthChecksPagedCallable;
   private final UnaryCallable patchHealthCheckCallable;
+  private final OperationCallable
+      patchHealthCheckOperationCallable;
   private final UnaryCallable updateHealthCheckCallable;
+  private final OperationCallable
+      updateHealthCheckOperationCallable;
 
   private final HttpJsonStubCallableFactory callableFactory;
 
@@ -225,6 +236,7 @@ protected HttpJsonHealthCheckStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonGlobalOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         deleteHealthCheckTransportSettings =
@@ -260,6 +272,12 @@ protected HttpJsonHealthCheckStub(
             deleteHealthCheckTransportSettings,
             settings.deleteHealthCheckSettings(),
             clientContext);
+    this.deleteHealthCheckOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteHealthCheckTransportSettings,
+            settings.deleteHealthCheckOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getHealthCheckCallable =
         callableFactory.createUnaryCallable(
             getHealthCheckTransportSettings, settings.getHealthCheckSettings(), clientContext);
@@ -268,6 +286,12 @@ protected HttpJsonHealthCheckStub(
             insertHealthCheckTransportSettings,
             settings.insertHealthCheckSettings(),
             clientContext);
+    this.insertHealthCheckOperationCallable =
+        callableFactory.createOperationCallable(
+            insertHealthCheckTransportSettings,
+            settings.insertHealthCheckOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listHealthChecksCallable =
         callableFactory.createUnaryCallable(
             listHealthChecksTransportSettings, settings.listHealthChecksSettings(), clientContext);
@@ -277,15 +301,38 @@ protected HttpJsonHealthCheckStub(
     this.patchHealthCheckCallable =
         callableFactory.createUnaryCallable(
             patchHealthCheckTransportSettings, settings.patchHealthCheckSettings(), clientContext);
+    this.patchHealthCheckOperationCallable =
+        callableFactory.createOperationCallable(
+            patchHealthCheckTransportSettings,
+            settings.patchHealthCheckOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.updateHealthCheckCallable =
         callableFactory.createUnaryCallable(
             updateHealthCheckTransportSettings,
             settings.updateHealthCheckSettings(),
             clientContext);
+    this.updateHealthCheckOperationCallable =
+        callableFactory.createOperationCallable(
+            updateHealthCheckTransportSettings,
+            settings.updateHealthCheckOperationSettings(),
+            clientContext,
+            this.operationsStub);
 
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonGlobalOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteHealthCheckOperationCallable() {
+    return deleteHealthCheckOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteHealthCheckCallable() {
     return deleteHealthCheckCallable;
@@ -296,6 +343,12 @@ public UnaryCallable getHealthCheckCalla
     return getHealthCheckCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertHealthCheckOperationCallable() {
+    return insertHealthCheckOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertHealthCheckCallable() {
     return insertHealthCheckCallable;
@@ -312,11 +365,23 @@ public UnaryCallable listHealthChe
     return listHealthChecksCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchHealthCheckOperationCallable() {
+    return patchHealthCheckOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable patchHealthCheckCallable() {
     return patchHealthCheckCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      updateHealthCheckOperationCallable() {
+    return updateHealthCheckOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable updateHealthCheckCallable() {
     return updateHealthCheckCallable;
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonHttpHealthCheckCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonHttpHealthCheckCallableFactory.java
index 56a61bba2c97..b6f0365f3f68 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonHttpHealthCheckCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonHttpHealthCheckCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonHttpHealthCheckCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonHttpHealthCheckCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          GlobalOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonHttpHealthCheckStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonHttpHealthCheckStub.java
index 8cde8bdfe4ca..ee685b2fb7ba 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonHttpHealthCheckStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonHttpHealthCheckStub.java
@@ -25,9 +25,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.DeleteHttpHealthCheckHttpRequest;
@@ -179,21 +181,30 @@ public class HttpJsonHttpHealthCheckStub extends HttpHealthCheckStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonGlobalOperationStub operationsStub;
 
   private final UnaryCallable
       deleteHttpHealthCheckCallable;
+  private final OperationCallable
+      deleteHttpHealthCheckOperationCallable;
   private final UnaryCallable
       getHttpHealthCheckCallable;
   private final UnaryCallable
       insertHttpHealthCheckCallable;
+  private final OperationCallable
+      insertHttpHealthCheckOperationCallable;
   private final UnaryCallable
       listHttpHealthChecksCallable;
   private final UnaryCallable
       listHttpHealthChecksPagedCallable;
   private final UnaryCallable
       patchHttpHealthCheckCallable;
+  private final OperationCallable
+      patchHttpHealthCheckOperationCallable;
   private final UnaryCallable
       updateHttpHealthCheckCallable;
+  private final OperationCallable
+      updateHttpHealthCheckOperationCallable;
 
   private final HttpJsonStubCallableFactory callableFactory;
 
@@ -235,6 +246,7 @@ protected HttpJsonHttpHealthCheckStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonGlobalOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         deleteHttpHealthCheckTransportSettings =
@@ -272,6 +284,12 @@ protected HttpJsonHttpHealthCheckStub(
             deleteHttpHealthCheckTransportSettings,
             settings.deleteHttpHealthCheckSettings(),
             clientContext);
+    this.deleteHttpHealthCheckOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteHttpHealthCheckTransportSettings,
+            settings.deleteHttpHealthCheckOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getHttpHealthCheckCallable =
         callableFactory.createUnaryCallable(
             getHttpHealthCheckTransportSettings,
@@ -282,6 +300,12 @@ protected HttpJsonHttpHealthCheckStub(
             insertHttpHealthCheckTransportSettings,
             settings.insertHttpHealthCheckSettings(),
             clientContext);
+    this.insertHttpHealthCheckOperationCallable =
+        callableFactory.createOperationCallable(
+            insertHttpHealthCheckTransportSettings,
+            settings.insertHttpHealthCheckOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listHttpHealthChecksCallable =
         callableFactory.createUnaryCallable(
             listHttpHealthChecksTransportSettings,
@@ -297,15 +321,38 @@ protected HttpJsonHttpHealthCheckStub(
             patchHttpHealthCheckTransportSettings,
             settings.patchHttpHealthCheckSettings(),
             clientContext);
+    this.patchHttpHealthCheckOperationCallable =
+        callableFactory.createOperationCallable(
+            patchHttpHealthCheckTransportSettings,
+            settings.patchHttpHealthCheckOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.updateHttpHealthCheckCallable =
         callableFactory.createUnaryCallable(
             updateHttpHealthCheckTransportSettings,
             settings.updateHttpHealthCheckSettings(),
             clientContext);
+    this.updateHttpHealthCheckOperationCallable =
+        callableFactory.createOperationCallable(
+            updateHttpHealthCheckTransportSettings,
+            settings.updateHttpHealthCheckOperationSettings(),
+            clientContext,
+            this.operationsStub);
 
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonGlobalOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteHttpHealthCheckOperationCallable() {
+    return deleteHttpHealthCheckOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       deleteHttpHealthCheckCallable() {
@@ -318,6 +365,12 @@ protected HttpJsonHttpHealthCheckStub(
     return getHttpHealthCheckCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertHttpHealthCheckOperationCallable() {
+    return insertHttpHealthCheckOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       insertHttpHealthCheckCallable() {
@@ -336,11 +389,23 @@ protected HttpJsonHttpHealthCheckStub(
     return listHttpHealthChecksCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchHttpHealthCheckOperationCallable() {
+    return patchHttpHealthCheckOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable patchHttpHealthCheckCallable() {
     return patchHttpHealthCheckCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      updateHttpHealthCheckOperationCallable() {
+    return updateHttpHealthCheckOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       updateHttpHealthCheckCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonHttpsHealthCheckCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonHttpsHealthCheckCallableFactory.java
index a34e901537d3..add6a7743981 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonHttpsHealthCheckCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonHttpsHealthCheckCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonHttpsHealthCheckCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonHttpsHealthCheckCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          GlobalOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonHttpsHealthCheckStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonHttpsHealthCheckStub.java
index ae64022b6cf4..5dc0823e486d 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonHttpsHealthCheckStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonHttpsHealthCheckStub.java
@@ -25,9 +25,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.DeleteHttpsHealthCheckHttpRequest;
@@ -179,21 +181,30 @@ public class HttpJsonHttpsHealthCheckStub extends HttpsHealthCheckStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonGlobalOperationStub operationsStub;
 
   private final UnaryCallable
       deleteHttpsHealthCheckCallable;
+  private final OperationCallable
+      deleteHttpsHealthCheckOperationCallable;
   private final UnaryCallable
       getHttpsHealthCheckCallable;
   private final UnaryCallable
       insertHttpsHealthCheckCallable;
+  private final OperationCallable
+      insertHttpsHealthCheckOperationCallable;
   private final UnaryCallable
       listHttpsHealthChecksCallable;
   private final UnaryCallable
       listHttpsHealthChecksPagedCallable;
   private final UnaryCallable
       patchHttpsHealthCheckCallable;
+  private final OperationCallable
+      patchHttpsHealthCheckOperationCallable;
   private final UnaryCallable
       updateHttpsHealthCheckCallable;
+  private final OperationCallable
+      updateHttpsHealthCheckOperationCallable;
 
   private final HttpJsonStubCallableFactory callableFactory;
 
@@ -235,6 +246,7 @@ protected HttpJsonHttpsHealthCheckStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonGlobalOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         deleteHttpsHealthCheckTransportSettings =
@@ -273,6 +285,12 @@ protected HttpJsonHttpsHealthCheckStub(
             deleteHttpsHealthCheckTransportSettings,
             settings.deleteHttpsHealthCheckSettings(),
             clientContext);
+    this.deleteHttpsHealthCheckOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteHttpsHealthCheckTransportSettings,
+            settings.deleteHttpsHealthCheckOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getHttpsHealthCheckCallable =
         callableFactory.createUnaryCallable(
             getHttpsHealthCheckTransportSettings,
@@ -283,6 +301,12 @@ protected HttpJsonHttpsHealthCheckStub(
             insertHttpsHealthCheckTransportSettings,
             settings.insertHttpsHealthCheckSettings(),
             clientContext);
+    this.insertHttpsHealthCheckOperationCallable =
+        callableFactory.createOperationCallable(
+            insertHttpsHealthCheckTransportSettings,
+            settings.insertHttpsHealthCheckOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listHttpsHealthChecksCallable =
         callableFactory.createUnaryCallable(
             listHttpsHealthChecksTransportSettings,
@@ -298,15 +322,38 @@ protected HttpJsonHttpsHealthCheckStub(
             patchHttpsHealthCheckTransportSettings,
             settings.patchHttpsHealthCheckSettings(),
             clientContext);
+    this.patchHttpsHealthCheckOperationCallable =
+        callableFactory.createOperationCallable(
+            patchHttpsHealthCheckTransportSettings,
+            settings.patchHttpsHealthCheckOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.updateHttpsHealthCheckCallable =
         callableFactory.createUnaryCallable(
             updateHttpsHealthCheckTransportSettings,
             settings.updateHttpsHealthCheckSettings(),
             clientContext);
+    this.updateHttpsHealthCheckOperationCallable =
+        callableFactory.createOperationCallable(
+            updateHttpsHealthCheckTransportSettings,
+            settings.updateHttpsHealthCheckOperationSettings(),
+            clientContext,
+            this.operationsStub);
 
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonGlobalOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteHttpsHealthCheckOperationCallable() {
+    return deleteHttpsHealthCheckOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       deleteHttpsHealthCheckCallable() {
@@ -319,6 +366,12 @@ protected HttpJsonHttpsHealthCheckStub(
     return getHttpsHealthCheckCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertHttpsHealthCheckOperationCallable() {
+    return insertHttpsHealthCheckOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       insertHttpsHealthCheckCallable() {
@@ -337,12 +390,24 @@ protected HttpJsonHttpsHealthCheckStub(
     return listHttpsHealthChecksCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchHttpsHealthCheckOperationCallable() {
+    return patchHttpsHealthCheckOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       patchHttpsHealthCheckCallable() {
     return patchHttpsHealthCheckCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      updateHttpsHealthCheckOperationCallable() {
+    return updateHttpsHealthCheckOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       updateHttpsHealthCheckCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonImageCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonImageCallableFactory.java
index 143b1de15f99..bb5bd314f4b3 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonImageCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonImageCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonImageCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonImageCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          GlobalOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonImageStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonImageStub.java
index c946d32c9fce..e9f1bece900b 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonImageStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonImageStub.java
@@ -25,9 +25,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.DeleteImageHttpRequest;
@@ -263,18 +265,27 @@ public class HttpJsonImageStub extends ImageStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonGlobalOperationStub operationsStub;
 
   private final UnaryCallable deleteImageCallable;
+  private final OperationCallable
+      deleteImageOperationCallable;
   private final UnaryCallable deprecateImageCallable;
+  private final OperationCallable
+      deprecateImageOperationCallable;
   private final UnaryCallable getImageCallable;
   private final UnaryCallable getFromFamilyImageCallable;
   private final UnaryCallable getIamPolicyImageCallable;
   private final UnaryCallable insertImageCallable;
+  private final OperationCallable
+      insertImageOperationCallable;
   private final UnaryCallable listImagesCallable;
   private final UnaryCallable
       listImagesPagedCallable;
   private final UnaryCallable setIamPolicyImageCallable;
   private final UnaryCallable setLabelsImageCallable;
+  private final OperationCallable
+      setLabelsImageOperationCallable;
   private final UnaryCallable
       testIamPermissionsImageCallable;
 
@@ -315,6 +326,7 @@ protected HttpJsonImageStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonGlobalOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings deleteImageTransportSettings =
         HttpJsonCallSettings.newBuilder()
@@ -362,9 +374,21 @@ protected HttpJsonImageStub(
     this.deleteImageCallable =
         callableFactory.createUnaryCallable(
             deleteImageTransportSettings, settings.deleteImageSettings(), clientContext);
+    this.deleteImageOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteImageTransportSettings,
+            settings.deleteImageOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.deprecateImageCallable =
         callableFactory.createUnaryCallable(
             deprecateImageTransportSettings, settings.deprecateImageSettings(), clientContext);
+    this.deprecateImageOperationCallable =
+        callableFactory.createOperationCallable(
+            deprecateImageTransportSettings,
+            settings.deprecateImageOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getImageCallable =
         callableFactory.createUnaryCallable(
             getImageTransportSettings, settings.getImageSettings(), clientContext);
@@ -381,6 +405,12 @@ protected HttpJsonImageStub(
     this.insertImageCallable =
         callableFactory.createUnaryCallable(
             insertImageTransportSettings, settings.insertImageSettings(), clientContext);
+    this.insertImageOperationCallable =
+        callableFactory.createOperationCallable(
+            insertImageTransportSettings,
+            settings.insertImageOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listImagesCallable =
         callableFactory.createUnaryCallable(
             listImagesTransportSettings, settings.listImagesSettings(), clientContext);
@@ -395,6 +425,12 @@ protected HttpJsonImageStub(
     this.setLabelsImageCallable =
         callableFactory.createUnaryCallable(
             setLabelsImageTransportSettings, settings.setLabelsImageSettings(), clientContext);
+    this.setLabelsImageOperationCallable =
+        callableFactory.createOperationCallable(
+            setLabelsImageTransportSettings,
+            settings.setLabelsImageOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.testIamPermissionsImageCallable =
         callableFactory.createUnaryCallable(
             testIamPermissionsImageTransportSettings,
@@ -404,11 +440,28 @@ protected HttpJsonImageStub(
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonGlobalOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteImageOperationCallable() {
+    return deleteImageOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteImageCallable() {
     return deleteImageCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deprecateImageOperationCallable() {
+    return deprecateImageOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deprecateImageCallable() {
     return deprecateImageCallable;
@@ -429,6 +482,12 @@ public UnaryCallable getIamPolicyImageCall
     return getIamPolicyImageCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertImageOperationCallable() {
+    return insertImageOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertImageCallable() {
     return insertImageCallable;
@@ -449,6 +508,12 @@ public UnaryCallable setIamPolicyImageCall
     return setIamPolicyImageCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setLabelsImageOperationCallable() {
+    return setLabelsImageOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable setLabelsImageCallable() {
     return setLabelsImageCallable;
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceCallableFactory.java
index 1c68f61d2dbf..f3fc809316b0 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonInstanceCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonInstanceCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          ZoneOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceGroupCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceGroupCallableFactory.java
index 8247b0fa6708..8ba901f55fe8 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceGroupCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceGroupCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonInstanceGroupCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonInstanceGroupCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          ZoneOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceGroupManagerCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceGroupManagerCallableFactory.java
index 5f26d7a7eeee..90f3bd0ac1d9 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceGroupManagerCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceGroupManagerCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonInstanceGroupManagerCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonInstanceGroupManagerCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          ZoneOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceGroupManagerStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceGroupManagerStub.java
index eb51bbde5a80..9fa54e7f70d9 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceGroupManagerStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceGroupManagerStub.java
@@ -26,9 +26,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.AbandonInstancesInstanceGroupManagerHttpRequest;
@@ -366,9 +368,13 @@ public class HttpJsonInstanceGroupManagerStub extends InstanceGroupManagerStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonZoneOperationStub operationsStub;
 
   private final UnaryCallable
       abandonInstancesInstanceGroupManagerCallable;
+  private final OperationCallable<
+          AbandonInstancesInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      abandonInstancesInstanceGroupManagerOperationCallable;
   private final UnaryCallable<
           AggregatedListInstanceGroupManagersHttpRequest, InstanceGroupManagerAggregatedList>
       aggregatedListInstanceGroupManagersCallable;
@@ -378,12 +384,19 @@ public class HttpJsonInstanceGroupManagerStub extends InstanceGroupManagerStub {
       aggregatedListInstanceGroupManagersPagedCallable;
   private final UnaryCallable
       deleteInstanceGroupManagerCallable;
+  private final OperationCallable
+      deleteInstanceGroupManagerOperationCallable;
   private final UnaryCallable
       deleteInstancesInstanceGroupManagerCallable;
+  private final OperationCallable<
+          DeleteInstancesInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      deleteInstancesInstanceGroupManagerOperationCallable;
   private final UnaryCallable
       getInstanceGroupManagerCallable;
   private final UnaryCallable
       insertInstanceGroupManagerCallable;
+  private final OperationCallable
+      insertInstanceGroupManagerOperationCallable;
   private final UnaryCallable
       listInstanceGroupManagersCallable;
   private final UnaryCallable<
@@ -395,14 +408,27 @@ public class HttpJsonInstanceGroupManagerStub extends InstanceGroupManagerStub {
       listManagedInstancesInstanceGroupManagersCallable;
   private final UnaryCallable
       patchInstanceGroupManagerCallable;
+  private final OperationCallable
+      patchInstanceGroupManagerOperationCallable;
   private final UnaryCallable
       recreateInstancesInstanceGroupManagerCallable;
+  private final OperationCallable<
+          RecreateInstancesInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      recreateInstancesInstanceGroupManagerOperationCallable;
   private final UnaryCallable
       resizeInstanceGroupManagerCallable;
+  private final OperationCallable
+      resizeInstanceGroupManagerOperationCallable;
   private final UnaryCallable
       setInstanceTemplateInstanceGroupManagerCallable;
+  private final OperationCallable<
+          SetInstanceTemplateInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      setInstanceTemplateInstanceGroupManagerOperationCallable;
   private final UnaryCallable
       setTargetPoolsInstanceGroupManagerCallable;
+  private final OperationCallable<
+          SetTargetPoolsInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      setTargetPoolsInstanceGroupManagerOperationCallable;
 
   private final HttpJsonStubCallableFactory callableFactory;
 
@@ -444,6 +470,7 @@ protected HttpJsonInstanceGroupManagerStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonZoneOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         abandonInstancesInstanceGroupManagerTransportSettings =
@@ -532,6 +559,12 @@ protected HttpJsonInstanceGroupManagerStub(
             abandonInstancesInstanceGroupManagerTransportSettings,
             settings.abandonInstancesInstanceGroupManagerSettings(),
             clientContext);
+    this.abandonInstancesInstanceGroupManagerOperationCallable =
+        callableFactory.createOperationCallable(
+            abandonInstancesInstanceGroupManagerTransportSettings,
+            settings.abandonInstancesInstanceGroupManagerOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.aggregatedListInstanceGroupManagersCallable =
         callableFactory.createUnaryCallable(
             aggregatedListInstanceGroupManagersTransportSettings,
@@ -547,11 +580,23 @@ protected HttpJsonInstanceGroupManagerStub(
             deleteInstanceGroupManagerTransportSettings,
             settings.deleteInstanceGroupManagerSettings(),
             clientContext);
+    this.deleteInstanceGroupManagerOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteInstanceGroupManagerTransportSettings,
+            settings.deleteInstanceGroupManagerOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.deleteInstancesInstanceGroupManagerCallable =
         callableFactory.createUnaryCallable(
             deleteInstancesInstanceGroupManagerTransportSettings,
             settings.deleteInstancesInstanceGroupManagerSettings(),
             clientContext);
+    this.deleteInstancesInstanceGroupManagerOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteInstancesInstanceGroupManagerTransportSettings,
+            settings.deleteInstancesInstanceGroupManagerOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getInstanceGroupManagerCallable =
         callableFactory.createUnaryCallable(
             getInstanceGroupManagerTransportSettings,
@@ -562,6 +607,12 @@ protected HttpJsonInstanceGroupManagerStub(
             insertInstanceGroupManagerTransportSettings,
             settings.insertInstanceGroupManagerSettings(),
             clientContext);
+    this.insertInstanceGroupManagerOperationCallable =
+        callableFactory.createOperationCallable(
+            insertInstanceGroupManagerTransportSettings,
+            settings.insertInstanceGroupManagerOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listInstanceGroupManagersCallable =
         callableFactory.createUnaryCallable(
             listInstanceGroupManagersTransportSettings,
@@ -582,30 +633,71 @@ protected HttpJsonInstanceGroupManagerStub(
             patchInstanceGroupManagerTransportSettings,
             settings.patchInstanceGroupManagerSettings(),
             clientContext);
+    this.patchInstanceGroupManagerOperationCallable =
+        callableFactory.createOperationCallable(
+            patchInstanceGroupManagerTransportSettings,
+            settings.patchInstanceGroupManagerOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.recreateInstancesInstanceGroupManagerCallable =
         callableFactory.createUnaryCallable(
             recreateInstancesInstanceGroupManagerTransportSettings,
             settings.recreateInstancesInstanceGroupManagerSettings(),
             clientContext);
+    this.recreateInstancesInstanceGroupManagerOperationCallable =
+        callableFactory.createOperationCallable(
+            recreateInstancesInstanceGroupManagerTransportSettings,
+            settings.recreateInstancesInstanceGroupManagerOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.resizeInstanceGroupManagerCallable =
         callableFactory.createUnaryCallable(
             resizeInstanceGroupManagerTransportSettings,
             settings.resizeInstanceGroupManagerSettings(),
             clientContext);
+    this.resizeInstanceGroupManagerOperationCallable =
+        callableFactory.createOperationCallable(
+            resizeInstanceGroupManagerTransportSettings,
+            settings.resizeInstanceGroupManagerOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setInstanceTemplateInstanceGroupManagerCallable =
         callableFactory.createUnaryCallable(
             setInstanceTemplateInstanceGroupManagerTransportSettings,
             settings.setInstanceTemplateInstanceGroupManagerSettings(),
             clientContext);
+    this.setInstanceTemplateInstanceGroupManagerOperationCallable =
+        callableFactory.createOperationCallable(
+            setInstanceTemplateInstanceGroupManagerTransportSettings,
+            settings.setInstanceTemplateInstanceGroupManagerOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setTargetPoolsInstanceGroupManagerCallable =
         callableFactory.createUnaryCallable(
             setTargetPoolsInstanceGroupManagerTransportSettings,
             settings.setTargetPoolsInstanceGroupManagerSettings(),
             clientContext);
+    this.setTargetPoolsInstanceGroupManagerOperationCallable =
+        callableFactory.createOperationCallable(
+            setTargetPoolsInstanceGroupManagerTransportSettings,
+            settings.setTargetPoolsInstanceGroupManagerOperationSettings(),
+            clientContext,
+            this.operationsStub);
 
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonZoneOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      abandonInstancesInstanceGroupManagerOperationCallable() {
+    return abandonInstancesInstanceGroupManagerOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       abandonInstancesInstanceGroupManagerCallable() {
@@ -627,12 +719,24 @@ protected HttpJsonInstanceGroupManagerStub(
     return aggregatedListInstanceGroupManagersCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteInstanceGroupManagerOperationCallable() {
+    return deleteInstanceGroupManagerOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       deleteInstanceGroupManagerCallable() {
     return deleteInstanceGroupManagerCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteInstancesInstanceGroupManagerOperationCallable() {
+    return deleteInstancesInstanceGroupManagerOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       deleteInstancesInstanceGroupManagerCallable() {
@@ -645,6 +749,12 @@ protected HttpJsonInstanceGroupManagerStub(
     return getInstanceGroupManagerCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertInstanceGroupManagerOperationCallable() {
+    return insertInstanceGroupManagerOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       insertInstanceGroupManagerCallable() {
@@ -671,30 +781,62 @@ protected HttpJsonInstanceGroupManagerStub(
     return listManagedInstancesInstanceGroupManagersCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchInstanceGroupManagerOperationCallable() {
+    return patchInstanceGroupManagerOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       patchInstanceGroupManagerCallable() {
     return patchInstanceGroupManagerCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable<
+          RecreateInstancesInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      recreateInstancesInstanceGroupManagerOperationCallable() {
+    return recreateInstancesInstanceGroupManagerOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       recreateInstancesInstanceGroupManagerCallable() {
     return recreateInstancesInstanceGroupManagerCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      resizeInstanceGroupManagerOperationCallable() {
+    return resizeInstanceGroupManagerOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       resizeInstanceGroupManagerCallable() {
     return resizeInstanceGroupManagerCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable<
+          SetInstanceTemplateInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      setInstanceTemplateInstanceGroupManagerOperationCallable() {
+    return setInstanceTemplateInstanceGroupManagerOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setInstanceTemplateInstanceGroupManagerCallable() {
     return setInstanceTemplateInstanceGroupManagerCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setTargetPoolsInstanceGroupManagerOperationCallable() {
+    return setTargetPoolsInstanceGroupManagerOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setTargetPoolsInstanceGroupManagerCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceGroupStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceGroupStub.java
index 698fa8df33b2..cd641819cea8 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceGroupStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceGroupStub.java
@@ -27,9 +27,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.AddInstancesInstanceGroupHttpRequest;
@@ -257,9 +259,12 @@ public class HttpJsonInstanceGroupStub extends InstanceGroupStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonZoneOperationStub operationsStub;
 
   private final UnaryCallable
       addInstancesInstanceGroupCallable;
+  private final OperationCallable
+      addInstancesInstanceGroupOperationCallable;
   private final UnaryCallable
       aggregatedListInstanceGroupsCallable;
   private final UnaryCallable<
@@ -267,9 +272,13 @@ public class HttpJsonInstanceGroupStub extends InstanceGroupStub {
       aggregatedListInstanceGroupsPagedCallable;
   private final UnaryCallable
       deleteInstanceGroupCallable;
+  private final OperationCallable
+      deleteInstanceGroupOperationCallable;
   private final UnaryCallable getInstanceGroupCallable;
   private final UnaryCallable
       insertInstanceGroupCallable;
+  private final OperationCallable
+      insertInstanceGroupOperationCallable;
   private final UnaryCallable
       listInstanceGroupsCallable;
   private final UnaryCallable
@@ -281,8 +290,12 @@ public class HttpJsonInstanceGroupStub extends InstanceGroupStub {
       listInstancesInstanceGroupsPagedCallable;
   private final UnaryCallable
       removeInstancesInstanceGroupCallable;
+  private final OperationCallable
+      removeInstancesInstanceGroupOperationCallable;
   private final UnaryCallable
       setNamedPortsInstanceGroupCallable;
+  private final OperationCallable
+      setNamedPortsInstanceGroupOperationCallable;
 
   private final HttpJsonStubCallableFactory callableFactory;
 
@@ -324,6 +337,7 @@ protected HttpJsonInstanceGroupStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonZoneOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         addInstancesInstanceGroupTransportSettings =
@@ -378,6 +392,12 @@ protected HttpJsonInstanceGroupStub(
             addInstancesInstanceGroupTransportSettings,
             settings.addInstancesInstanceGroupSettings(),
             clientContext);
+    this.addInstancesInstanceGroupOperationCallable =
+        callableFactory.createOperationCallable(
+            addInstancesInstanceGroupTransportSettings,
+            settings.addInstancesInstanceGroupOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.aggregatedListInstanceGroupsCallable =
         callableFactory.createUnaryCallable(
             aggregatedListInstanceGroupsTransportSettings,
@@ -393,6 +413,12 @@ protected HttpJsonInstanceGroupStub(
             deleteInstanceGroupTransportSettings,
             settings.deleteInstanceGroupSettings(),
             clientContext);
+    this.deleteInstanceGroupOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteInstanceGroupTransportSettings,
+            settings.deleteInstanceGroupOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getInstanceGroupCallable =
         callableFactory.createUnaryCallable(
             getInstanceGroupTransportSettings, settings.getInstanceGroupSettings(), clientContext);
@@ -401,6 +427,12 @@ protected HttpJsonInstanceGroupStub(
             insertInstanceGroupTransportSettings,
             settings.insertInstanceGroupSettings(),
             clientContext);
+    this.insertInstanceGroupOperationCallable =
+        callableFactory.createOperationCallable(
+            insertInstanceGroupTransportSettings,
+            settings.insertInstanceGroupOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listInstanceGroupsCallable =
         callableFactory.createUnaryCallable(
             listInstanceGroupsTransportSettings,
@@ -426,15 +458,38 @@ protected HttpJsonInstanceGroupStub(
             removeInstancesInstanceGroupTransportSettings,
             settings.removeInstancesInstanceGroupSettings(),
             clientContext);
+    this.removeInstancesInstanceGroupOperationCallable =
+        callableFactory.createOperationCallable(
+            removeInstancesInstanceGroupTransportSettings,
+            settings.removeInstancesInstanceGroupOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setNamedPortsInstanceGroupCallable =
         callableFactory.createUnaryCallable(
             setNamedPortsInstanceGroupTransportSettings,
             settings.setNamedPortsInstanceGroupSettings(),
             clientContext);
+    this.setNamedPortsInstanceGroupOperationCallable =
+        callableFactory.createOperationCallable(
+            setNamedPortsInstanceGroupTransportSettings,
+            settings.setNamedPortsInstanceGroupOperationSettings(),
+            clientContext,
+            this.operationsStub);
 
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonZoneOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      addInstancesInstanceGroupOperationCallable() {
+    return addInstancesInstanceGroupOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       addInstancesInstanceGroupCallable() {
@@ -454,6 +509,12 @@ protected HttpJsonInstanceGroupStub(
     return aggregatedListInstanceGroupsCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteInstanceGroupOperationCallable() {
+    return deleteInstanceGroupOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteInstanceGroupCallable() {
     return deleteInstanceGroupCallable;
@@ -464,6 +525,12 @@ public UnaryCallable getInstanceGrou
     return getInstanceGroupCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertInstanceGroupOperationCallable() {
+    return insertInstanceGroupOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertInstanceGroupCallable() {
     return insertInstanceGroupCallable;
@@ -494,12 +561,24 @@ public UnaryCallable insertInstanceGr
     return listInstancesInstanceGroupsCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      removeInstancesInstanceGroupOperationCallable() {
+    return removeInstancesInstanceGroupOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       removeInstancesInstanceGroupCallable() {
     return removeInstancesInstanceGroupCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setNamedPortsInstanceGroupOperationCallable() {
+    return setNamedPortsInstanceGroupOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setNamedPortsInstanceGroupCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceStub.java
index 0e54b2f419eb..bb526a426c87 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceStub.java
@@ -27,9 +27,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.AddAccessConfigInstanceHttpRequest;
@@ -746,24 +748,37 @@ public class HttpJsonInstanceStub extends InstanceStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonZoneOperationStub operationsStub;
 
   private final UnaryCallable
       addAccessConfigInstanceCallable;
+  private final OperationCallable
+      addAccessConfigInstanceOperationCallable;
   private final UnaryCallable
       aggregatedListInstancesCallable;
   private final UnaryCallable<
           AggregatedListInstancesHttpRequest, AggregatedListInstancesPagedResponse>
       aggregatedListInstancesPagedCallable;
   private final UnaryCallable attachDiskInstanceCallable;
+  private final OperationCallable
+      attachDiskInstanceOperationCallable;
   private final UnaryCallable deleteInstanceCallable;
+  private final OperationCallable
+      deleteInstanceOperationCallable;
   private final UnaryCallable
       deleteAccessConfigInstanceCallable;
+  private final OperationCallable
+      deleteAccessConfigInstanceOperationCallable;
   private final UnaryCallable detachDiskInstanceCallable;
+  private final OperationCallable
+      detachDiskInstanceOperationCallable;
   private final UnaryCallable getInstanceCallable;
   private final UnaryCallable getIamPolicyInstanceCallable;
   private final UnaryCallable
       getSerialPortOutputInstanceCallable;
   private final UnaryCallable insertInstanceCallable;
+  private final OperationCallable
+      insertInstanceOperationCallable;
   private final UnaryCallable listInstancesCallable;
   private final UnaryCallable
       listInstancesPagedCallable;
@@ -773,37 +788,74 @@ public class HttpJsonInstanceStub extends InstanceStub {
           ListReferrersInstancesHttpRequest, ListReferrersInstancesPagedResponse>
       listReferrersInstancesPagedCallable;
   private final UnaryCallable resetInstanceCallable;
+  private final OperationCallable
+      resetInstanceOperationCallable;
   private final UnaryCallable
       setDeletionProtectionInstanceCallable;
+  private final OperationCallable
+      setDeletionProtectionInstanceOperationCallable;
   private final UnaryCallable
       setDiskAutoDeleteInstanceCallable;
+  private final OperationCallable
+      setDiskAutoDeleteInstanceOperationCallable;
   private final UnaryCallable setIamPolicyInstanceCallable;
   private final UnaryCallable setLabelsInstanceCallable;
+  private final OperationCallable
+      setLabelsInstanceOperationCallable;
   private final UnaryCallable
       setMachineResourcesInstanceCallable;
+  private final OperationCallable
+      setMachineResourcesInstanceOperationCallable;
   private final UnaryCallable
       setMachineTypeInstanceCallable;
+  private final OperationCallable
+      setMachineTypeInstanceOperationCallable;
   private final UnaryCallable
       setMetadataInstanceCallable;
+  private final OperationCallable
+      setMetadataInstanceOperationCallable;
   private final UnaryCallable
       setMinCpuPlatformInstanceCallable;
+  private final OperationCallable
+      setMinCpuPlatformInstanceOperationCallable;
   private final UnaryCallable
       setSchedulingInstanceCallable;
+  private final OperationCallable
+      setSchedulingInstanceOperationCallable;
   private final UnaryCallable
       setServiceAccountInstanceCallable;
+  private final OperationCallable
+      setServiceAccountInstanceOperationCallable;
   private final UnaryCallable setTagsInstanceCallable;
+  private final OperationCallable
+      setTagsInstanceOperationCallable;
   private final UnaryCallable
       simulateMaintenanceEventInstanceCallable;
+  private final OperationCallable<
+          SimulateMaintenanceEventInstanceHttpRequest, EmptyMessage, Operation>
+      simulateMaintenanceEventInstanceOperationCallable;
   private final UnaryCallable startInstanceCallable;
+  private final OperationCallable
+      startInstanceOperationCallable;
   private final UnaryCallable
       startWithEncryptionKeyInstanceCallable;
+  private final OperationCallable<
+          StartWithEncryptionKeyInstanceHttpRequest, EmptyMessage, Operation>
+      startWithEncryptionKeyInstanceOperationCallable;
   private final UnaryCallable stopInstanceCallable;
+  private final OperationCallable
+      stopInstanceOperationCallable;
   private final UnaryCallable
       testIamPermissionsInstanceCallable;
   private final UnaryCallable
       updateAccessConfigInstanceCallable;
+  private final OperationCallable
+      updateAccessConfigInstanceOperationCallable;
   private final UnaryCallable
       updateNetworkInterfaceInstanceCallable;
+  private final OperationCallable<
+          UpdateNetworkInterfaceInstanceHttpRequest, EmptyMessage, Operation>
+      updateNetworkInterfaceInstanceOperationCallable;
 
   private final HttpJsonStubCallableFactory callableFactory;
 
@@ -843,6 +895,7 @@ protected HttpJsonInstanceStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonZoneOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         addAccessConfigInstanceTransportSettings =
@@ -1002,6 +1055,12 @@ protected HttpJsonInstanceStub(
             addAccessConfigInstanceTransportSettings,
             settings.addAccessConfigInstanceSettings(),
             clientContext);
+    this.addAccessConfigInstanceOperationCallable =
+        callableFactory.createOperationCallable(
+            addAccessConfigInstanceTransportSettings,
+            settings.addAccessConfigInstanceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.aggregatedListInstancesCallable =
         callableFactory.createUnaryCallable(
             aggregatedListInstancesTransportSettings,
@@ -1017,19 +1076,43 @@ protected HttpJsonInstanceStub(
             attachDiskInstanceTransportSettings,
             settings.attachDiskInstanceSettings(),
             clientContext);
+    this.attachDiskInstanceOperationCallable =
+        callableFactory.createOperationCallable(
+            attachDiskInstanceTransportSettings,
+            settings.attachDiskInstanceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.deleteInstanceCallable =
         callableFactory.createUnaryCallable(
             deleteInstanceTransportSettings, settings.deleteInstanceSettings(), clientContext);
+    this.deleteInstanceOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteInstanceTransportSettings,
+            settings.deleteInstanceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.deleteAccessConfigInstanceCallable =
         callableFactory.createUnaryCallable(
             deleteAccessConfigInstanceTransportSettings,
             settings.deleteAccessConfigInstanceSettings(),
             clientContext);
+    this.deleteAccessConfigInstanceOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteAccessConfigInstanceTransportSettings,
+            settings.deleteAccessConfigInstanceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.detachDiskInstanceCallable =
         callableFactory.createUnaryCallable(
             detachDiskInstanceTransportSettings,
             settings.detachDiskInstanceSettings(),
             clientContext);
+    this.detachDiskInstanceOperationCallable =
+        callableFactory.createOperationCallable(
+            detachDiskInstanceTransportSettings,
+            settings.detachDiskInstanceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getInstanceCallable =
         callableFactory.createUnaryCallable(
             getInstanceTransportSettings, settings.getInstanceSettings(), clientContext);
@@ -1046,6 +1129,12 @@ protected HttpJsonInstanceStub(
     this.insertInstanceCallable =
         callableFactory.createUnaryCallable(
             insertInstanceTransportSettings, settings.insertInstanceSettings(), clientContext);
+    this.insertInstanceOperationCallable =
+        callableFactory.createOperationCallable(
+            insertInstanceTransportSettings,
+            settings.insertInstanceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listInstancesCallable =
         callableFactory.createUnaryCallable(
             listInstancesTransportSettings, settings.listInstancesSettings(), clientContext);
@@ -1065,16 +1154,34 @@ protected HttpJsonInstanceStub(
     this.resetInstanceCallable =
         callableFactory.createUnaryCallable(
             resetInstanceTransportSettings, settings.resetInstanceSettings(), clientContext);
+    this.resetInstanceOperationCallable =
+        callableFactory.createOperationCallable(
+            resetInstanceTransportSettings,
+            settings.resetInstanceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setDeletionProtectionInstanceCallable =
         callableFactory.createUnaryCallable(
             setDeletionProtectionInstanceTransportSettings,
             settings.setDeletionProtectionInstanceSettings(),
             clientContext);
+    this.setDeletionProtectionInstanceOperationCallable =
+        callableFactory.createOperationCallable(
+            setDeletionProtectionInstanceTransportSettings,
+            settings.setDeletionProtectionInstanceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setDiskAutoDeleteInstanceCallable =
         callableFactory.createUnaryCallable(
             setDiskAutoDeleteInstanceTransportSettings,
             settings.setDiskAutoDeleteInstanceSettings(),
             clientContext);
+    this.setDiskAutoDeleteInstanceOperationCallable =
+        callableFactory.createOperationCallable(
+            setDiskAutoDeleteInstanceTransportSettings,
+            settings.setDiskAutoDeleteInstanceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setIamPolicyInstanceCallable =
         callableFactory.createUnaryCallable(
             setIamPolicyInstanceTransportSettings,
@@ -1085,55 +1192,127 @@ protected HttpJsonInstanceStub(
             setLabelsInstanceTransportSettings,
             settings.setLabelsInstanceSettings(),
             clientContext);
+    this.setLabelsInstanceOperationCallable =
+        callableFactory.createOperationCallable(
+            setLabelsInstanceTransportSettings,
+            settings.setLabelsInstanceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setMachineResourcesInstanceCallable =
         callableFactory.createUnaryCallable(
             setMachineResourcesInstanceTransportSettings,
             settings.setMachineResourcesInstanceSettings(),
             clientContext);
+    this.setMachineResourcesInstanceOperationCallable =
+        callableFactory.createOperationCallable(
+            setMachineResourcesInstanceTransportSettings,
+            settings.setMachineResourcesInstanceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setMachineTypeInstanceCallable =
         callableFactory.createUnaryCallable(
             setMachineTypeInstanceTransportSettings,
             settings.setMachineTypeInstanceSettings(),
             clientContext);
+    this.setMachineTypeInstanceOperationCallable =
+        callableFactory.createOperationCallable(
+            setMachineTypeInstanceTransportSettings,
+            settings.setMachineTypeInstanceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setMetadataInstanceCallable =
         callableFactory.createUnaryCallable(
             setMetadataInstanceTransportSettings,
             settings.setMetadataInstanceSettings(),
             clientContext);
+    this.setMetadataInstanceOperationCallable =
+        callableFactory.createOperationCallable(
+            setMetadataInstanceTransportSettings,
+            settings.setMetadataInstanceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setMinCpuPlatformInstanceCallable =
         callableFactory.createUnaryCallable(
             setMinCpuPlatformInstanceTransportSettings,
             settings.setMinCpuPlatformInstanceSettings(),
             clientContext);
+    this.setMinCpuPlatformInstanceOperationCallable =
+        callableFactory.createOperationCallable(
+            setMinCpuPlatformInstanceTransportSettings,
+            settings.setMinCpuPlatformInstanceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setSchedulingInstanceCallable =
         callableFactory.createUnaryCallable(
             setSchedulingInstanceTransportSettings,
             settings.setSchedulingInstanceSettings(),
             clientContext);
+    this.setSchedulingInstanceOperationCallable =
+        callableFactory.createOperationCallable(
+            setSchedulingInstanceTransportSettings,
+            settings.setSchedulingInstanceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setServiceAccountInstanceCallable =
         callableFactory.createUnaryCallable(
             setServiceAccountInstanceTransportSettings,
             settings.setServiceAccountInstanceSettings(),
             clientContext);
+    this.setServiceAccountInstanceOperationCallable =
+        callableFactory.createOperationCallable(
+            setServiceAccountInstanceTransportSettings,
+            settings.setServiceAccountInstanceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setTagsInstanceCallable =
         callableFactory.createUnaryCallable(
             setTagsInstanceTransportSettings, settings.setTagsInstanceSettings(), clientContext);
+    this.setTagsInstanceOperationCallable =
+        callableFactory.createOperationCallable(
+            setTagsInstanceTransportSettings,
+            settings.setTagsInstanceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.simulateMaintenanceEventInstanceCallable =
         callableFactory.createUnaryCallable(
             simulateMaintenanceEventInstanceTransportSettings,
             settings.simulateMaintenanceEventInstanceSettings(),
             clientContext);
+    this.simulateMaintenanceEventInstanceOperationCallable =
+        callableFactory.createOperationCallable(
+            simulateMaintenanceEventInstanceTransportSettings,
+            settings.simulateMaintenanceEventInstanceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.startInstanceCallable =
         callableFactory.createUnaryCallable(
             startInstanceTransportSettings, settings.startInstanceSettings(), clientContext);
+    this.startInstanceOperationCallable =
+        callableFactory.createOperationCallable(
+            startInstanceTransportSettings,
+            settings.startInstanceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.startWithEncryptionKeyInstanceCallable =
         callableFactory.createUnaryCallable(
             startWithEncryptionKeyInstanceTransportSettings,
             settings.startWithEncryptionKeyInstanceSettings(),
             clientContext);
+    this.startWithEncryptionKeyInstanceOperationCallable =
+        callableFactory.createOperationCallable(
+            startWithEncryptionKeyInstanceTransportSettings,
+            settings.startWithEncryptionKeyInstanceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.stopInstanceCallable =
         callableFactory.createUnaryCallable(
             stopInstanceTransportSettings, settings.stopInstanceSettings(), clientContext);
+    this.stopInstanceOperationCallable =
+        callableFactory.createOperationCallable(
+            stopInstanceTransportSettings,
+            settings.stopInstanceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.testIamPermissionsInstanceCallable =
         callableFactory.createUnaryCallable(
             testIamPermissionsInstanceTransportSettings,
@@ -1144,15 +1323,38 @@ protected HttpJsonInstanceStub(
             updateAccessConfigInstanceTransportSettings,
             settings.updateAccessConfigInstanceSettings(),
             clientContext);
+    this.updateAccessConfigInstanceOperationCallable =
+        callableFactory.createOperationCallable(
+            updateAccessConfigInstanceTransportSettings,
+            settings.updateAccessConfigInstanceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.updateNetworkInterfaceInstanceCallable =
         callableFactory.createUnaryCallable(
             updateNetworkInterfaceInstanceTransportSettings,
             settings.updateNetworkInterfaceInstanceSettings(),
             clientContext);
+    this.updateNetworkInterfaceInstanceOperationCallable =
+        callableFactory.createOperationCallable(
+            updateNetworkInterfaceInstanceTransportSettings,
+            settings.updateNetworkInterfaceInstanceOperationSettings(),
+            clientContext,
+            this.operationsStub);
 
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonZoneOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      addAccessConfigInstanceOperationCallable() {
+    return addAccessConfigInstanceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       addAccessConfigInstanceCallable() {
@@ -1171,22 +1373,46 @@ protected HttpJsonInstanceStub(
     return aggregatedListInstancesCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      attachDiskInstanceOperationCallable() {
+    return attachDiskInstanceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable attachDiskInstanceCallable() {
     return attachDiskInstanceCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteInstanceOperationCallable() {
+    return deleteInstanceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteInstanceCallable() {
     return deleteInstanceCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteAccessConfigInstanceOperationCallable() {
+    return deleteAccessConfigInstanceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       deleteAccessConfigInstanceCallable() {
     return deleteAccessConfigInstanceCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      detachDiskInstanceOperationCallable() {
+    return detachDiskInstanceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable detachDiskInstanceCallable() {
     return detachDiskInstanceCallable;
@@ -1208,6 +1434,12 @@ public UnaryCallable getIamPolicyInstan
     return getSerialPortOutputInstanceCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertInstanceOperationCallable() {
+    return insertInstanceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertInstanceCallable() {
     return insertInstanceCallable;
@@ -1236,17 +1468,35 @@ public UnaryCallable listInstancesCallab
     return listReferrersInstancesCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      resetInstanceOperationCallable() {
+    return resetInstanceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable resetInstanceCallable() {
     return resetInstanceCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setDeletionProtectionInstanceOperationCallable() {
+    return setDeletionProtectionInstanceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setDeletionProtectionInstanceCallable() {
     return setDeletionProtectionInstanceCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setDiskAutoDeleteInstanceOperationCallable() {
+    return setDiskAutoDeleteInstanceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setDiskAutoDeleteInstanceCallable() {
@@ -1258,68 +1508,140 @@ public UnaryCallable setIamPolicyInstan
     return setIamPolicyInstanceCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setLabelsInstanceOperationCallable() {
+    return setLabelsInstanceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable setLabelsInstanceCallable() {
     return setLabelsInstanceCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setMachineResourcesInstanceOperationCallable() {
+    return setMachineResourcesInstanceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setMachineResourcesInstanceCallable() {
     return setMachineResourcesInstanceCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setMachineTypeInstanceOperationCallable() {
+    return setMachineTypeInstanceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setMachineTypeInstanceCallable() {
     return setMachineTypeInstanceCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setMetadataInstanceOperationCallable() {
+    return setMetadataInstanceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable setMetadataInstanceCallable() {
     return setMetadataInstanceCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setMinCpuPlatformInstanceOperationCallable() {
+    return setMinCpuPlatformInstanceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setMinCpuPlatformInstanceCallable() {
     return setMinCpuPlatformInstanceCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setSchedulingInstanceOperationCallable() {
+    return setSchedulingInstanceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setSchedulingInstanceCallable() {
     return setSchedulingInstanceCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setServiceAccountInstanceOperationCallable() {
+    return setServiceAccountInstanceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setServiceAccountInstanceCallable() {
     return setServiceAccountInstanceCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setTagsInstanceOperationCallable() {
+    return setTagsInstanceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable setTagsInstanceCallable() {
     return setTagsInstanceCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      simulateMaintenanceEventInstanceOperationCallable() {
+    return simulateMaintenanceEventInstanceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       simulateMaintenanceEventInstanceCallable() {
     return simulateMaintenanceEventInstanceCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      startInstanceOperationCallable() {
+    return startInstanceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable startInstanceCallable() {
     return startInstanceCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      startWithEncryptionKeyInstanceOperationCallable() {
+    return startWithEncryptionKeyInstanceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       startWithEncryptionKeyInstanceCallable() {
     return startWithEncryptionKeyInstanceCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      stopInstanceOperationCallable() {
+    return stopInstanceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable stopInstanceCallable() {
     return stopInstanceCallable;
@@ -1331,12 +1653,24 @@ public UnaryCallable stopInstanceCallable()
     return testIamPermissionsInstanceCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      updateAccessConfigInstanceOperationCallable() {
+    return updateAccessConfigInstanceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       updateAccessConfigInstanceCallable() {
     return updateAccessConfigInstanceCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      updateNetworkInterfaceInstanceOperationCallable() {
+    return updateNetworkInterfaceInstanceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       updateNetworkInterfaceInstanceCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceTemplateCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceTemplateCallableFactory.java
index eb1d219984ed..a88c63a8ceb7 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceTemplateCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceTemplateCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonInstanceTemplateCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonInstanceTemplateCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          GlobalOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceTemplateStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceTemplateStub.java
index 0a6549a48fa6..a6e2bd2f1ef9 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceTemplateStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInstanceTemplateStub.java
@@ -25,9 +25,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.DeleteInstanceTemplateHttpRequest;
@@ -212,15 +214,20 @@ public class HttpJsonInstanceTemplateStub extends InstanceTemplateStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonGlobalOperationStub operationsStub;
 
   private final UnaryCallable
       deleteInstanceTemplateCallable;
+  private final OperationCallable
+      deleteInstanceTemplateOperationCallable;
   private final UnaryCallable
       getInstanceTemplateCallable;
   private final UnaryCallable
       getIamPolicyInstanceTemplateCallable;
   private final UnaryCallable
       insertInstanceTemplateCallable;
+  private final OperationCallable
+      insertInstanceTemplateOperationCallable;
   private final UnaryCallable
       listInstanceTemplatesCallable;
   private final UnaryCallable
@@ -271,6 +278,7 @@ protected HttpJsonInstanceTemplateStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonGlobalOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         deleteInstanceTemplateTransportSettings =
@@ -316,6 +324,12 @@ protected HttpJsonInstanceTemplateStub(
             deleteInstanceTemplateTransportSettings,
             settings.deleteInstanceTemplateSettings(),
             clientContext);
+    this.deleteInstanceTemplateOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteInstanceTemplateTransportSettings,
+            settings.deleteInstanceTemplateOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getInstanceTemplateCallable =
         callableFactory.createUnaryCallable(
             getInstanceTemplateTransportSettings,
@@ -331,6 +345,12 @@ protected HttpJsonInstanceTemplateStub(
             insertInstanceTemplateTransportSettings,
             settings.insertInstanceTemplateSettings(),
             clientContext);
+    this.insertInstanceTemplateOperationCallable =
+        callableFactory.createOperationCallable(
+            insertInstanceTemplateTransportSettings,
+            settings.insertInstanceTemplateOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listInstanceTemplatesCallable =
         callableFactory.createUnaryCallable(
             listInstanceTemplatesTransportSettings,
@@ -355,6 +375,17 @@ protected HttpJsonInstanceTemplateStub(
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonGlobalOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteInstanceTemplateOperationCallable() {
+    return deleteInstanceTemplateOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       deleteInstanceTemplateCallable() {
@@ -373,6 +404,12 @@ protected HttpJsonInstanceTemplateStub(
     return getIamPolicyInstanceTemplateCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertInstanceTemplateOperationCallable() {
+    return insertInstanceTemplateOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       insertInstanceTemplateCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInterconnectAttachmentCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInterconnectAttachmentCallableFactory.java
index 5e7ed80b7b6b..fa9ef1280336 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInterconnectAttachmentCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInterconnectAttachmentCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonInterconnectAttachmentCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonInterconnectAttachmentCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          RegionOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInterconnectAttachmentStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInterconnectAttachmentStub.java
index cfac96c1de41..9e9ecdeb2f06 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInterconnectAttachmentStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInterconnectAttachmentStub.java
@@ -26,9 +26,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.AggregatedListInterconnectAttachmentsHttpRequest;
@@ -198,6 +200,7 @@ public class HttpJsonInterconnectAttachmentStub extends InterconnectAttachmentSt
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonRegionOperationStub operationsStub;
 
   private final UnaryCallable<
           AggregatedListInterconnectAttachmentsHttpRequest, InterconnectAttachmentAggregatedList>
@@ -208,10 +211,14 @@ public class HttpJsonInterconnectAttachmentStub extends InterconnectAttachmentSt
       aggregatedListInterconnectAttachmentsPagedCallable;
   private final UnaryCallable
       deleteInterconnectAttachmentCallable;
+  private final OperationCallable
+      deleteInterconnectAttachmentOperationCallable;
   private final UnaryCallable
       getInterconnectAttachmentCallable;
   private final UnaryCallable
       insertInterconnectAttachmentCallable;
+  private final OperationCallable
+      insertInterconnectAttachmentOperationCallable;
   private final UnaryCallable
       listInterconnectAttachmentsCallable;
   private final UnaryCallable<
@@ -219,6 +226,8 @@ public class HttpJsonInterconnectAttachmentStub extends InterconnectAttachmentSt
       listInterconnectAttachmentsPagedCallable;
   private final UnaryCallable
       patchInterconnectAttachmentCallable;
+  private final OperationCallable
+      patchInterconnectAttachmentOperationCallable;
 
   private final HttpJsonStubCallableFactory callableFactory;
 
@@ -260,6 +269,7 @@ protected HttpJsonInterconnectAttachmentStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonRegionOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings<
             AggregatedListInterconnectAttachmentsHttpRequest, InterconnectAttachmentAggregatedList>
@@ -313,6 +323,12 @@ protected HttpJsonInterconnectAttachmentStub(
             deleteInterconnectAttachmentTransportSettings,
             settings.deleteInterconnectAttachmentSettings(),
             clientContext);
+    this.deleteInterconnectAttachmentOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteInterconnectAttachmentTransportSettings,
+            settings.deleteInterconnectAttachmentOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getInterconnectAttachmentCallable =
         callableFactory.createUnaryCallable(
             getInterconnectAttachmentTransportSettings,
@@ -323,6 +339,12 @@ protected HttpJsonInterconnectAttachmentStub(
             insertInterconnectAttachmentTransportSettings,
             settings.insertInterconnectAttachmentSettings(),
             clientContext);
+    this.insertInterconnectAttachmentOperationCallable =
+        callableFactory.createOperationCallable(
+            insertInterconnectAttachmentTransportSettings,
+            settings.insertInterconnectAttachmentOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listInterconnectAttachmentsCallable =
         callableFactory.createUnaryCallable(
             listInterconnectAttachmentsTransportSettings,
@@ -338,10 +360,21 @@ protected HttpJsonInterconnectAttachmentStub(
             patchInterconnectAttachmentTransportSettings,
             settings.patchInterconnectAttachmentSettings(),
             clientContext);
+    this.patchInterconnectAttachmentOperationCallable =
+        callableFactory.createOperationCallable(
+            patchInterconnectAttachmentTransportSettings,
+            settings.patchInterconnectAttachmentOperationSettings(),
+            clientContext,
+            this.operationsStub);
 
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonRegionOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
   @BetaApi
   public UnaryCallable<
           AggregatedListInterconnectAttachmentsHttpRequest,
@@ -357,6 +390,12 @@ protected HttpJsonInterconnectAttachmentStub(
     return aggregatedListInterconnectAttachmentsCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteInterconnectAttachmentOperationCallable() {
+    return deleteInterconnectAttachmentOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       deleteInterconnectAttachmentCallable() {
@@ -369,6 +408,12 @@ protected HttpJsonInterconnectAttachmentStub(
     return getInterconnectAttachmentCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertInterconnectAttachmentOperationCallable() {
+    return insertInterconnectAttachmentOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       insertInterconnectAttachmentCallable() {
@@ -388,6 +433,12 @@ protected HttpJsonInterconnectAttachmentStub(
     return listInterconnectAttachmentsCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchInterconnectAttachmentOperationCallable() {
+    return patchInterconnectAttachmentOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       patchInterconnectAttachmentCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInterconnectCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInterconnectCallableFactory.java
index 005b9bc35e25..99ed1364807b 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInterconnectCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInterconnectCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonInterconnectCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonInterconnectCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          GlobalOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInterconnectLocationCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInterconnectLocationCallableFactory.java
index 8b8bdc9a3f46..2c843c5fca45 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInterconnectLocationCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInterconnectLocationCallableFactory.java
@@ -16,14 +16,18 @@
 package com.google.cloud.compute.v1.stub;
 
 import com.google.api.core.BetaApi;
+import com.google.api.gax.core.BackgroundResource;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.BatchingCallSettings;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +38,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonInterconnectLocationCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonInterconnectLocationCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +49,19 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          BackgroundResource operationsStub) {
+    return null;
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInterconnectStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInterconnectStub.java
index a3b8c7c66fea..c42e617e606f 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInterconnectStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonInterconnectStub.java
@@ -25,9 +25,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.DeleteInterconnectHttpRequest;
@@ -180,18 +182,25 @@ public class HttpJsonInterconnectStub extends InterconnectStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonGlobalOperationStub operationsStub;
 
   private final UnaryCallable deleteInterconnectCallable;
+  private final OperationCallable
+      deleteInterconnectOperationCallable;
   private final UnaryCallable getInterconnectCallable;
   private final UnaryCallable<
           GetDiagnosticsInterconnectHttpRequest, InterconnectsGetDiagnosticsResponse>
       getDiagnosticsInterconnectCallable;
   private final UnaryCallable insertInterconnectCallable;
+  private final OperationCallable
+      insertInterconnectOperationCallable;
   private final UnaryCallable
       listInterconnectsCallable;
   private final UnaryCallable
       listInterconnectsPagedCallable;
   private final UnaryCallable patchInterconnectCallable;
+  private final OperationCallable
+      patchInterconnectOperationCallable;
 
   private final HttpJsonStubCallableFactory callableFactory;
 
@@ -233,6 +242,7 @@ protected HttpJsonInterconnectStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonGlobalOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         deleteInterconnectTransportSettings =
@@ -272,6 +282,12 @@ protected HttpJsonInterconnectStub(
             deleteInterconnectTransportSettings,
             settings.deleteInterconnectSettings(),
             clientContext);
+    this.deleteInterconnectOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteInterconnectTransportSettings,
+            settings.deleteInterconnectOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getInterconnectCallable =
         callableFactory.createUnaryCallable(
             getInterconnectTransportSettings, settings.getInterconnectSettings(), clientContext);
@@ -285,6 +301,12 @@ protected HttpJsonInterconnectStub(
             insertInterconnectTransportSettings,
             settings.insertInterconnectSettings(),
             clientContext);
+    this.insertInterconnectOperationCallable =
+        callableFactory.createOperationCallable(
+            insertInterconnectTransportSettings,
+            settings.insertInterconnectOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listInterconnectsCallable =
         callableFactory.createUnaryCallable(
             listInterconnectsTransportSettings,
@@ -300,10 +322,27 @@ protected HttpJsonInterconnectStub(
             patchInterconnectTransportSettings,
             settings.patchInterconnectSettings(),
             clientContext);
+    this.patchInterconnectOperationCallable =
+        callableFactory.createOperationCallable(
+            patchInterconnectTransportSettings,
+            settings.patchInterconnectOperationSettings(),
+            clientContext,
+            this.operationsStub);
 
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonGlobalOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteInterconnectOperationCallable() {
+    return deleteInterconnectOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteInterconnectCallable() {
     return deleteInterconnectCallable;
@@ -320,6 +359,12 @@ public UnaryCallable getInterconnectCa
     return getDiagnosticsInterconnectCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertInterconnectOperationCallable() {
+    return insertInterconnectOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertInterconnectCallable() {
     return insertInterconnectCallable;
@@ -336,6 +381,12 @@ public UnaryCallable listInterco
     return listInterconnectsCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchInterconnectOperationCallable() {
+    return patchInterconnectOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable patchInterconnectCallable() {
     return patchInterconnectCallable;
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonLicenseCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonLicenseCallableFactory.java
index 347d5fbe9dcd..93e7d0f82064 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonLicenseCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonLicenseCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonLicenseCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonLicenseCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          GlobalOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonLicenseCodeCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonLicenseCodeCallableFactory.java
index 851adb6dc07e..391a6cb589bc 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonLicenseCodeCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonLicenseCodeCallableFactory.java
@@ -16,14 +16,18 @@
 package com.google.cloud.compute.v1.stub;
 
 import com.google.api.core.BetaApi;
+import com.google.api.gax.core.BackgroundResource;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.BatchingCallSettings;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +38,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonLicenseCodeCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonLicenseCodeCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +49,19 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          BackgroundResource operationsStub) {
+    return null;
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonLicenseStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonLicenseStub.java
index 9b34a9667d73..1c771607f3ec 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonLicenseStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonLicenseStub.java
@@ -25,9 +25,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.DeleteLicenseHttpRequest;
@@ -200,11 +202,16 @@ public class HttpJsonLicenseStub extends LicenseStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonGlobalOperationStub operationsStub;
 
   private final UnaryCallable deleteLicenseCallable;
+  private final OperationCallable
+      deleteLicenseOperationCallable;
   private final UnaryCallable getLicenseCallable;
   private final UnaryCallable getIamPolicyLicenseCallable;
   private final UnaryCallable insertLicenseCallable;
+  private final OperationCallable
+      insertLicenseOperationCallable;
   private final UnaryCallable listLicensesCallable;
   private final UnaryCallable
       listLicensesPagedCallable;
@@ -249,6 +256,7 @@ protected HttpJsonLicenseStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonGlobalOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings deleteLicenseTransportSettings =
         HttpJsonCallSettings.newBuilder()
@@ -287,6 +295,12 @@ protected HttpJsonLicenseStub(
     this.deleteLicenseCallable =
         callableFactory.createUnaryCallable(
             deleteLicenseTransportSettings, settings.deleteLicenseSettings(), clientContext);
+    this.deleteLicenseOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteLicenseTransportSettings,
+            settings.deleteLicenseOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getLicenseCallable =
         callableFactory.createUnaryCallable(
             getLicenseTransportSettings, settings.getLicenseSettings(), clientContext);
@@ -298,6 +312,12 @@ protected HttpJsonLicenseStub(
     this.insertLicenseCallable =
         callableFactory.createUnaryCallable(
             insertLicenseTransportSettings, settings.insertLicenseSettings(), clientContext);
+    this.insertLicenseOperationCallable =
+        callableFactory.createOperationCallable(
+            insertLicenseTransportSettings,
+            settings.insertLicenseOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listLicensesCallable =
         callableFactory.createUnaryCallable(
             listLicensesTransportSettings, settings.listLicensesSettings(), clientContext);
@@ -318,6 +338,17 @@ protected HttpJsonLicenseStub(
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonGlobalOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteLicenseOperationCallable() {
+    return deleteLicenseOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteLicenseCallable() {
     return deleteLicenseCallable;
@@ -333,6 +364,12 @@ public UnaryCallable getIamPolicyLicense
     return getIamPolicyLicenseCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertLicenseOperationCallable() {
+    return insertLicenseOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertLicenseCallable() {
     return insertLicenseCallable;
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonMachineTypeCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonMachineTypeCallableFactory.java
index cdbb974f6936..6cb90d41db00 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonMachineTypeCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonMachineTypeCallableFactory.java
@@ -16,14 +16,18 @@
 package com.google.cloud.compute.v1.stub;
 
 import com.google.api.core.BetaApi;
+import com.google.api.gax.core.BackgroundResource;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.BatchingCallSettings;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +38,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonMachineTypeCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonMachineTypeCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +49,19 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          BackgroundResource operationsStub) {
+    return null;
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonNetworkCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonNetworkCallableFactory.java
index bf5a46c9941c..2f7f30ea700e 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonNetworkCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonNetworkCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonNetworkCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonNetworkCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          GlobalOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonNetworkStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonNetworkStub.java
index 33d352747e58..d407c2eb0c14 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonNetworkStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonNetworkStub.java
@@ -25,9 +25,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.AddPeeringNetworkHttpRequest;
@@ -215,19 +217,32 @@ public class HttpJsonNetworkStub extends NetworkStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonGlobalOperationStub operationsStub;
 
   private final UnaryCallable addPeeringNetworkCallable;
+  private final OperationCallable
+      addPeeringNetworkOperationCallable;
   private final UnaryCallable deleteNetworkCallable;
+  private final OperationCallable
+      deleteNetworkOperationCallable;
   private final UnaryCallable getNetworkCallable;
   private final UnaryCallable insertNetworkCallable;
+  private final OperationCallable
+      insertNetworkOperationCallable;
   private final UnaryCallable listNetworksCallable;
   private final UnaryCallable
       listNetworksPagedCallable;
   private final UnaryCallable patchNetworkCallable;
+  private final OperationCallable
+      patchNetworkOperationCallable;
   private final UnaryCallable
       removePeeringNetworkCallable;
+  private final OperationCallable
+      removePeeringNetworkOperationCallable;
   private final UnaryCallable
       switchToCustomModeNetworkCallable;
+  private final OperationCallable
+      switchToCustomModeNetworkOperationCallable;
 
   private final HttpJsonStubCallableFactory callableFactory;
 
@@ -266,6 +281,7 @@ protected HttpJsonNetworkStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonGlobalOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         addPeeringNetworkTransportSettings =
@@ -308,15 +324,33 @@ protected HttpJsonNetworkStub(
             addPeeringNetworkTransportSettings,
             settings.addPeeringNetworkSettings(),
             clientContext);
+    this.addPeeringNetworkOperationCallable =
+        callableFactory.createOperationCallable(
+            addPeeringNetworkTransportSettings,
+            settings.addPeeringNetworkOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.deleteNetworkCallable =
         callableFactory.createUnaryCallable(
             deleteNetworkTransportSettings, settings.deleteNetworkSettings(), clientContext);
+    this.deleteNetworkOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteNetworkTransportSettings,
+            settings.deleteNetworkOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getNetworkCallable =
         callableFactory.createUnaryCallable(
             getNetworkTransportSettings, settings.getNetworkSettings(), clientContext);
     this.insertNetworkCallable =
         callableFactory.createUnaryCallable(
             insertNetworkTransportSettings, settings.insertNetworkSettings(), clientContext);
+    this.insertNetworkOperationCallable =
+        callableFactory.createOperationCallable(
+            insertNetworkTransportSettings,
+            settings.insertNetworkOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listNetworksCallable =
         callableFactory.createUnaryCallable(
             listNetworksTransportSettings, settings.listNetworksSettings(), clientContext);
@@ -326,25 +360,60 @@ protected HttpJsonNetworkStub(
     this.patchNetworkCallable =
         callableFactory.createUnaryCallable(
             patchNetworkTransportSettings, settings.patchNetworkSettings(), clientContext);
+    this.patchNetworkOperationCallable =
+        callableFactory.createOperationCallable(
+            patchNetworkTransportSettings,
+            settings.patchNetworkOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.removePeeringNetworkCallable =
         callableFactory.createUnaryCallable(
             removePeeringNetworkTransportSettings,
             settings.removePeeringNetworkSettings(),
             clientContext);
+    this.removePeeringNetworkOperationCallable =
+        callableFactory.createOperationCallable(
+            removePeeringNetworkTransportSettings,
+            settings.removePeeringNetworkOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.switchToCustomModeNetworkCallable =
         callableFactory.createUnaryCallable(
             switchToCustomModeNetworkTransportSettings,
             settings.switchToCustomModeNetworkSettings(),
             clientContext);
+    this.switchToCustomModeNetworkOperationCallable =
+        callableFactory.createOperationCallable(
+            switchToCustomModeNetworkTransportSettings,
+            settings.switchToCustomModeNetworkOperationSettings(),
+            clientContext,
+            this.operationsStub);
 
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonGlobalOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      addPeeringNetworkOperationCallable() {
+    return addPeeringNetworkOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable addPeeringNetworkCallable() {
     return addPeeringNetworkCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteNetworkOperationCallable() {
+    return deleteNetworkOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteNetworkCallable() {
     return deleteNetworkCallable;
@@ -355,6 +424,12 @@ public UnaryCallable getNetworkCallable() {
     return getNetworkCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertNetworkOperationCallable() {
+    return insertNetworkOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertNetworkCallable() {
     return insertNetworkCallable;
@@ -371,16 +446,34 @@ public UnaryCallable listNetworksCallable(
     return listNetworksCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchNetworkOperationCallable() {
+    return patchNetworkOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable patchNetworkCallable() {
     return patchNetworkCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      removePeeringNetworkOperationCallable() {
+    return removePeeringNetworkOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable removePeeringNetworkCallable() {
     return removePeeringNetworkCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      switchToCustomModeNetworkOperationCallable() {
+    return switchToCustomModeNetworkOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       switchToCustomModeNetworkCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonNodeGroupCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonNodeGroupCallableFactory.java
index f13957c45b0c..e12535adf72b 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonNodeGroupCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonNodeGroupCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonNodeGroupCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonNodeGroupCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          ZoneOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonNodeGroupStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonNodeGroupStub.java
index 69e6cabc81d9..19fc94fb6525 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonNodeGroupStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonNodeGroupStub.java
@@ -27,9 +27,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.AddNodesNodeGroupHttpRequest;
@@ -322,20 +324,29 @@ public class HttpJsonNodeGroupStub extends NodeGroupStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonZoneOperationStub operationsStub;
 
   private final UnaryCallable addNodesNodeGroupCallable;
+  private final OperationCallable
+      addNodesNodeGroupOperationCallable;
   private final UnaryCallable
       aggregatedListNodeGroupsCallable;
   private final UnaryCallable<
           AggregatedListNodeGroupsHttpRequest, AggregatedListNodeGroupsPagedResponse>
       aggregatedListNodeGroupsPagedCallable;
   private final UnaryCallable deleteNodeGroupCallable;
+  private final OperationCallable
+      deleteNodeGroupOperationCallable;
   private final UnaryCallable
       deleteNodesNodeGroupCallable;
+  private final OperationCallable
+      deleteNodesNodeGroupOperationCallable;
   private final UnaryCallable getNodeGroupCallable;
   private final UnaryCallable
       getIamPolicyNodeGroupCallable;
   private final UnaryCallable insertNodeGroupCallable;
+  private final OperationCallable
+      insertNodeGroupOperationCallable;
   private final UnaryCallable listNodeGroupsCallable;
   private final UnaryCallable
       listNodeGroupsPagedCallable;
@@ -347,6 +358,8 @@ public class HttpJsonNodeGroupStub extends NodeGroupStub {
       setIamPolicyNodeGroupCallable;
   private final UnaryCallable
       setNodeTemplateNodeGroupCallable;
+  private final OperationCallable
+      setNodeTemplateNodeGroupOperationCallable;
   private final UnaryCallable
       testIamPermissionsNodeGroupCallable;
 
@@ -388,6 +401,7 @@ protected HttpJsonNodeGroupStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonZoneOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         addNodesNodeGroupTransportSettings =
@@ -453,6 +467,12 @@ protected HttpJsonNodeGroupStub(
             addNodesNodeGroupTransportSettings,
             settings.addNodesNodeGroupSettings(),
             clientContext);
+    this.addNodesNodeGroupOperationCallable =
+        callableFactory.createOperationCallable(
+            addNodesNodeGroupTransportSettings,
+            settings.addNodesNodeGroupOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.aggregatedListNodeGroupsCallable =
         callableFactory.createUnaryCallable(
             aggregatedListNodeGroupsTransportSettings,
@@ -466,11 +486,23 @@ protected HttpJsonNodeGroupStub(
     this.deleteNodeGroupCallable =
         callableFactory.createUnaryCallable(
             deleteNodeGroupTransportSettings, settings.deleteNodeGroupSettings(), clientContext);
+    this.deleteNodeGroupOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteNodeGroupTransportSettings,
+            settings.deleteNodeGroupOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.deleteNodesNodeGroupCallable =
         callableFactory.createUnaryCallable(
             deleteNodesNodeGroupTransportSettings,
             settings.deleteNodesNodeGroupSettings(),
             clientContext);
+    this.deleteNodesNodeGroupOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteNodesNodeGroupTransportSettings,
+            settings.deleteNodesNodeGroupOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getNodeGroupCallable =
         callableFactory.createUnaryCallable(
             getNodeGroupTransportSettings, settings.getNodeGroupSettings(), clientContext);
@@ -482,6 +514,12 @@ protected HttpJsonNodeGroupStub(
     this.insertNodeGroupCallable =
         callableFactory.createUnaryCallable(
             insertNodeGroupTransportSettings, settings.insertNodeGroupSettings(), clientContext);
+    this.insertNodeGroupOperationCallable =
+        callableFactory.createOperationCallable(
+            insertNodeGroupTransportSettings,
+            settings.insertNodeGroupOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listNodeGroupsCallable =
         callableFactory.createUnaryCallable(
             listNodeGroupsTransportSettings, settings.listNodeGroupsSettings(), clientContext);
@@ -508,6 +546,12 @@ protected HttpJsonNodeGroupStub(
             setNodeTemplateNodeGroupTransportSettings,
             settings.setNodeTemplateNodeGroupSettings(),
             clientContext);
+    this.setNodeTemplateNodeGroupOperationCallable =
+        callableFactory.createOperationCallable(
+            setNodeTemplateNodeGroupTransportSettings,
+            settings.setNodeTemplateNodeGroupOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.testIamPermissionsNodeGroupCallable =
         callableFactory.createUnaryCallable(
             testIamPermissionsNodeGroupTransportSettings,
@@ -517,6 +561,17 @@ protected HttpJsonNodeGroupStub(
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonZoneOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      addNodesNodeGroupOperationCallable() {
+    return addNodesNodeGroupOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable addNodesNodeGroupCallable() {
     return addNodesNodeGroupCallable;
@@ -534,11 +589,23 @@ public UnaryCallable addNodesNodeGroupC
     return aggregatedListNodeGroupsCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteNodeGroupOperationCallable() {
+    return deleteNodeGroupOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteNodeGroupCallable() {
     return deleteNodeGroupCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteNodesNodeGroupOperationCallable() {
+    return deleteNodesNodeGroupOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteNodesNodeGroupCallable() {
     return deleteNodesNodeGroupCallable;
@@ -554,6 +621,12 @@ public UnaryCallable getIamPolicyNodeG
     return getIamPolicyNodeGroupCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertNodeGroupOperationCallable() {
+    return insertNodeGroupOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertNodeGroupCallable() {
     return insertNodeGroupCallable;
@@ -587,6 +660,12 @@ public UnaryCallable setIamPolicyNodeG
     return setIamPolicyNodeGroupCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setNodeTemplateNodeGroupOperationCallable() {
+    return setNodeTemplateNodeGroupOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setNodeTemplateNodeGroupCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonNodeTemplateCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonNodeTemplateCallableFactory.java
index d1945ac2207a..2c7cab086871 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonNodeTemplateCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonNodeTemplateCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonNodeTemplateCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonNodeTemplateCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          RegionOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonNodeTemplateStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonNodeTemplateStub.java
index fdcb15ac394b..0e00e7d62392 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonNodeTemplateStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonNodeTemplateStub.java
@@ -26,9 +26,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.AggregatedListNodeTemplatesHttpRequest;
@@ -236,6 +238,7 @@ public class HttpJsonNodeTemplateStub extends NodeTemplateStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonRegionOperationStub operationsStub;
 
   private final UnaryCallable
       aggregatedListNodeTemplatesCallable;
@@ -243,10 +246,14 @@ public class HttpJsonNodeTemplateStub extends NodeTemplateStub {
           AggregatedListNodeTemplatesHttpRequest, AggregatedListNodeTemplatesPagedResponse>
       aggregatedListNodeTemplatesPagedCallable;
   private final UnaryCallable deleteNodeTemplateCallable;
+  private final OperationCallable
+      deleteNodeTemplateOperationCallable;
   private final UnaryCallable getNodeTemplateCallable;
   private final UnaryCallable
       getIamPolicyNodeTemplateCallable;
   private final UnaryCallable insertNodeTemplateCallable;
+  private final OperationCallable
+      insertNodeTemplateOperationCallable;
   private final UnaryCallable
       listNodeTemplatesCallable;
   private final UnaryCallable
@@ -296,6 +303,7 @@ protected HttpJsonNodeTemplateStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonRegionOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         aggregatedListNodeTemplatesTransportSettings =
@@ -355,6 +363,12 @@ protected HttpJsonNodeTemplateStub(
             deleteNodeTemplateTransportSettings,
             settings.deleteNodeTemplateSettings(),
             clientContext);
+    this.deleteNodeTemplateOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteNodeTemplateTransportSettings,
+            settings.deleteNodeTemplateOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getNodeTemplateCallable =
         callableFactory.createUnaryCallable(
             getNodeTemplateTransportSettings, settings.getNodeTemplateSettings(), clientContext);
@@ -368,6 +382,12 @@ protected HttpJsonNodeTemplateStub(
             insertNodeTemplateTransportSettings,
             settings.insertNodeTemplateSettings(),
             clientContext);
+    this.insertNodeTemplateOperationCallable =
+        callableFactory.createOperationCallable(
+            insertNodeTemplateTransportSettings,
+            settings.insertNodeTemplateOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listNodeTemplatesCallable =
         callableFactory.createUnaryCallable(
             listNodeTemplatesTransportSettings,
@@ -392,6 +412,11 @@ protected HttpJsonNodeTemplateStub(
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonRegionOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
   @BetaApi
   public UnaryCallable<
           AggregatedListNodeTemplatesHttpRequest, AggregatedListNodeTemplatesPagedResponse>
@@ -405,6 +430,12 @@ protected HttpJsonNodeTemplateStub(
     return aggregatedListNodeTemplatesCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteNodeTemplateOperationCallable() {
+    return deleteNodeTemplateOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteNodeTemplateCallable() {
     return deleteNodeTemplateCallable;
@@ -421,6 +452,12 @@ public UnaryCallable getNodeTemplateCa
     return getIamPolicyNodeTemplateCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertNodeTemplateOperationCallable() {
+    return insertNodeTemplateOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertNodeTemplateCallable() {
     return insertNodeTemplateCallable;
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonNodeTypeCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonNodeTypeCallableFactory.java
index 3507770f5f95..1599bb297540 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonNodeTypeCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonNodeTypeCallableFactory.java
@@ -16,14 +16,18 @@
 package com.google.cloud.compute.v1.stub;
 
 import com.google.api.core.BetaApi;
+import com.google.api.gax.core.BackgroundResource;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.BatchingCallSettings;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +38,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonNodeTypeCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonNodeTypeCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +49,19 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          BackgroundResource operationsStub) {
+    return null;
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonProjectCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonProjectCallableFactory.java
index 8c4f2a3843ca..84959dc5b7bc 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonProjectCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonProjectCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonProjectCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonProjectCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          GlobalOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonProjectStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonProjectStub.java
index 8c5ba3d6f86d..52b6fd8e2693 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonProjectStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonProjectStub.java
@@ -26,9 +26,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.DisableXpnHostProjectHttpRequest;
@@ -318,15 +320,24 @@ public class HttpJsonProjectStub extends ProjectStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonGlobalOperationStub operationsStub;
 
   private final UnaryCallable
       disableXpnHostProjectCallable;
+  private final OperationCallable
+      disableXpnHostProjectOperationCallable;
   private final UnaryCallable
       disableXpnResourceProjectCallable;
+  private final OperationCallable
+      disableXpnResourceProjectOperationCallable;
   private final UnaryCallable
       enableXpnHostProjectCallable;
+  private final OperationCallable
+      enableXpnHostProjectOperationCallable;
   private final UnaryCallable
       enableXpnResourceProjectCallable;
+  private final OperationCallable
+      enableXpnResourceProjectOperationCallable;
   private final UnaryCallable getProjectCallable;
   private final UnaryCallable getXpnHostProjectCallable;
   private final UnaryCallable
@@ -339,14 +350,25 @@ public class HttpJsonProjectStub extends ProjectStub {
   private final UnaryCallable
       listXpnHostsProjectsPagedCallable;
   private final UnaryCallable moveDiskProjectCallable;
+  private final OperationCallable
+      moveDiskProjectOperationCallable;
   private final UnaryCallable
       moveInstanceProjectCallable;
+  private final OperationCallable
+      moveInstanceProjectOperationCallable;
   private final UnaryCallable
       setCommonInstanceMetadataProjectCallable;
+  private final OperationCallable<
+          SetCommonInstanceMetadataProjectHttpRequest, EmptyMessage, Operation>
+      setCommonInstanceMetadataProjectOperationCallable;
   private final UnaryCallable
       setDefaultNetworkTierProjectCallable;
+  private final OperationCallable
+      setDefaultNetworkTierProjectOperationCallable;
   private final UnaryCallable
       setUsageExportBucketProjectCallable;
+  private final OperationCallable
+      setUsageExportBucketProjectOperationCallable;
 
   private final HttpJsonStubCallableFactory callableFactory;
 
@@ -385,6 +407,7 @@ protected HttpJsonProjectStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonGlobalOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         disableXpnHostProjectTransportSettings =
@@ -456,21 +479,45 @@ protected HttpJsonProjectStub(
             disableXpnHostProjectTransportSettings,
             settings.disableXpnHostProjectSettings(),
             clientContext);
+    this.disableXpnHostProjectOperationCallable =
+        callableFactory.createOperationCallable(
+            disableXpnHostProjectTransportSettings,
+            settings.disableXpnHostProjectOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.disableXpnResourceProjectCallable =
         callableFactory.createUnaryCallable(
             disableXpnResourceProjectTransportSettings,
             settings.disableXpnResourceProjectSettings(),
             clientContext);
+    this.disableXpnResourceProjectOperationCallable =
+        callableFactory.createOperationCallable(
+            disableXpnResourceProjectTransportSettings,
+            settings.disableXpnResourceProjectOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.enableXpnHostProjectCallable =
         callableFactory.createUnaryCallable(
             enableXpnHostProjectTransportSettings,
             settings.enableXpnHostProjectSettings(),
             clientContext);
+    this.enableXpnHostProjectOperationCallable =
+        callableFactory.createOperationCallable(
+            enableXpnHostProjectTransportSettings,
+            settings.enableXpnHostProjectOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.enableXpnResourceProjectCallable =
         callableFactory.createUnaryCallable(
             enableXpnResourceProjectTransportSettings,
             settings.enableXpnResourceProjectSettings(),
             clientContext);
+    this.enableXpnResourceProjectOperationCallable =
+        callableFactory.createOperationCallable(
+            enableXpnResourceProjectTransportSettings,
+            settings.enableXpnResourceProjectOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getProjectCallable =
         callableFactory.createUnaryCallable(
             getProjectTransportSettings, settings.getProjectSettings(), clientContext);
@@ -502,47 +549,106 @@ protected HttpJsonProjectStub(
     this.moveDiskProjectCallable =
         callableFactory.createUnaryCallable(
             moveDiskProjectTransportSettings, settings.moveDiskProjectSettings(), clientContext);
+    this.moveDiskProjectOperationCallable =
+        callableFactory.createOperationCallable(
+            moveDiskProjectTransportSettings,
+            settings.moveDiskProjectOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.moveInstanceProjectCallable =
         callableFactory.createUnaryCallable(
             moveInstanceProjectTransportSettings,
             settings.moveInstanceProjectSettings(),
             clientContext);
+    this.moveInstanceProjectOperationCallable =
+        callableFactory.createOperationCallable(
+            moveInstanceProjectTransportSettings,
+            settings.moveInstanceProjectOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setCommonInstanceMetadataProjectCallable =
         callableFactory.createUnaryCallable(
             setCommonInstanceMetadataProjectTransportSettings,
             settings.setCommonInstanceMetadataProjectSettings(),
             clientContext);
+    this.setCommonInstanceMetadataProjectOperationCallable =
+        callableFactory.createOperationCallable(
+            setCommonInstanceMetadataProjectTransportSettings,
+            settings.setCommonInstanceMetadataProjectOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setDefaultNetworkTierProjectCallable =
         callableFactory.createUnaryCallable(
             setDefaultNetworkTierProjectTransportSettings,
             settings.setDefaultNetworkTierProjectSettings(),
             clientContext);
+    this.setDefaultNetworkTierProjectOperationCallable =
+        callableFactory.createOperationCallable(
+            setDefaultNetworkTierProjectTransportSettings,
+            settings.setDefaultNetworkTierProjectOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setUsageExportBucketProjectCallable =
         callableFactory.createUnaryCallable(
             setUsageExportBucketProjectTransportSettings,
             settings.setUsageExportBucketProjectSettings(),
             clientContext);
+    this.setUsageExportBucketProjectOperationCallable =
+        callableFactory.createOperationCallable(
+            setUsageExportBucketProjectTransportSettings,
+            settings.setUsageExportBucketProjectOperationSettings(),
+            clientContext,
+            this.operationsStub);
 
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonGlobalOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      disableXpnHostProjectOperationCallable() {
+    return disableXpnHostProjectOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       disableXpnHostProjectCallable() {
     return disableXpnHostProjectCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      disableXpnResourceProjectOperationCallable() {
+    return disableXpnResourceProjectOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       disableXpnResourceProjectCallable() {
     return disableXpnResourceProjectCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      enableXpnHostProjectOperationCallable() {
+    return enableXpnHostProjectOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable enableXpnHostProjectCallable() {
     return enableXpnHostProjectCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      enableXpnResourceProjectOperationCallable() {
+    return enableXpnResourceProjectOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       enableXpnResourceProjectCallable() {
@@ -583,28 +689,58 @@ public UnaryCallable getXpnHostProjectCal
     return listXpnHostsProjectsCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      moveDiskProjectOperationCallable() {
+    return moveDiskProjectOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable moveDiskProjectCallable() {
     return moveDiskProjectCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      moveInstanceProjectOperationCallable() {
+    return moveInstanceProjectOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable moveInstanceProjectCallable() {
     return moveInstanceProjectCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setCommonInstanceMetadataProjectOperationCallable() {
+    return setCommonInstanceMetadataProjectOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setCommonInstanceMetadataProjectCallable() {
     return setCommonInstanceMetadataProjectCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setDefaultNetworkTierProjectOperationCallable() {
+    return setDefaultNetworkTierProjectOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setDefaultNetworkTierProjectCallable() {
     return setDefaultNetworkTierProjectCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setUsageExportBucketProjectOperationCallable() {
+    return setUsageExportBucketProjectOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setUsageExportBucketProjectCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionAutoscalerCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionAutoscalerCallableFactory.java
index 028dd7ee0d48..d2aa08c7f6fc 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionAutoscalerCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionAutoscalerCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonRegionAutoscalerCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonRegionAutoscalerCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          RegionOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionAutoscalerStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionAutoscalerStub.java
index bba45e3c6b1d..db15445ffaa0 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionAutoscalerStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionAutoscalerStub.java
@@ -25,9 +25,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.Autoscaler;
@@ -179,21 +181,30 @@ public class HttpJsonRegionAutoscalerStub extends RegionAutoscalerStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonRegionOperationStub operationsStub;
 
   private final UnaryCallable
       deleteRegionAutoscalerCallable;
+  private final OperationCallable
+      deleteRegionAutoscalerOperationCallable;
   private final UnaryCallable
       getRegionAutoscalerCallable;
   private final UnaryCallable
       insertRegionAutoscalerCallable;
+  private final OperationCallable
+      insertRegionAutoscalerOperationCallable;
   private final UnaryCallable
       listRegionAutoscalersCallable;
   private final UnaryCallable
       listRegionAutoscalersPagedCallable;
   private final UnaryCallable
       patchRegionAutoscalerCallable;
+  private final OperationCallable
+      patchRegionAutoscalerOperationCallable;
   private final UnaryCallable
       updateRegionAutoscalerCallable;
+  private final OperationCallable
+      updateRegionAutoscalerOperationCallable;
 
   private final HttpJsonStubCallableFactory callableFactory;
 
@@ -235,6 +246,7 @@ protected HttpJsonRegionAutoscalerStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonRegionOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         deleteRegionAutoscalerTransportSettings =
@@ -273,6 +285,12 @@ protected HttpJsonRegionAutoscalerStub(
             deleteRegionAutoscalerTransportSettings,
             settings.deleteRegionAutoscalerSettings(),
             clientContext);
+    this.deleteRegionAutoscalerOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteRegionAutoscalerTransportSettings,
+            settings.deleteRegionAutoscalerOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getRegionAutoscalerCallable =
         callableFactory.createUnaryCallable(
             getRegionAutoscalerTransportSettings,
@@ -283,6 +301,12 @@ protected HttpJsonRegionAutoscalerStub(
             insertRegionAutoscalerTransportSettings,
             settings.insertRegionAutoscalerSettings(),
             clientContext);
+    this.insertRegionAutoscalerOperationCallable =
+        callableFactory.createOperationCallable(
+            insertRegionAutoscalerTransportSettings,
+            settings.insertRegionAutoscalerOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listRegionAutoscalersCallable =
         callableFactory.createUnaryCallable(
             listRegionAutoscalersTransportSettings,
@@ -298,15 +322,38 @@ protected HttpJsonRegionAutoscalerStub(
             patchRegionAutoscalerTransportSettings,
             settings.patchRegionAutoscalerSettings(),
             clientContext);
+    this.patchRegionAutoscalerOperationCallable =
+        callableFactory.createOperationCallable(
+            patchRegionAutoscalerTransportSettings,
+            settings.patchRegionAutoscalerOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.updateRegionAutoscalerCallable =
         callableFactory.createUnaryCallable(
             updateRegionAutoscalerTransportSettings,
             settings.updateRegionAutoscalerSettings(),
             clientContext);
+    this.updateRegionAutoscalerOperationCallable =
+        callableFactory.createOperationCallable(
+            updateRegionAutoscalerTransportSettings,
+            settings.updateRegionAutoscalerOperationSettings(),
+            clientContext,
+            this.operationsStub);
 
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonRegionOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteRegionAutoscalerOperationCallable() {
+    return deleteRegionAutoscalerOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       deleteRegionAutoscalerCallable() {
@@ -318,6 +365,12 @@ public UnaryCallable getRegionAutosc
     return getRegionAutoscalerCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertRegionAutoscalerOperationCallable() {
+    return insertRegionAutoscalerOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       insertRegionAutoscalerCallable() {
@@ -336,12 +389,24 @@ public UnaryCallable getRegionAutosc
     return listRegionAutoscalersCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchRegionAutoscalerOperationCallable() {
+    return patchRegionAutoscalerOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       patchRegionAutoscalerCallable() {
     return patchRegionAutoscalerCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      updateRegionAutoscalerOperationCallable() {
+    return updateRegionAutoscalerOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       updateRegionAutoscalerCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionBackendServiceCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionBackendServiceCallableFactory.java
index 33b0dbe1575f..f806480fd5c2 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionBackendServiceCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionBackendServiceCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonRegionBackendServiceCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonRegionBackendServiceCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          RegionOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionBackendServiceStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionBackendServiceStub.java
index bba503ee377e..1c13ee6e5f20 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionBackendServiceStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionBackendServiceStub.java
@@ -25,9 +25,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.BackendService;
@@ -207,15 +209,20 @@ public class HttpJsonRegionBackendServiceStub extends RegionBackendServiceStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonRegionOperationStub operationsStub;
 
   private final UnaryCallable
       deleteRegionBackendServiceCallable;
+  private final OperationCallable
+      deleteRegionBackendServiceOperationCallable;
   private final UnaryCallable
       getRegionBackendServiceCallable;
   private final UnaryCallable
       getHealthRegionBackendServiceCallable;
   private final UnaryCallable
       insertRegionBackendServiceCallable;
+  private final OperationCallable
+      insertRegionBackendServiceOperationCallable;
   private final UnaryCallable
       listRegionBackendServicesCallable;
   private final UnaryCallable<
@@ -223,8 +230,12 @@ public class HttpJsonRegionBackendServiceStub extends RegionBackendServiceStub {
       listRegionBackendServicesPagedCallable;
   private final UnaryCallable
       patchRegionBackendServiceCallable;
+  private final OperationCallable
+      patchRegionBackendServiceOperationCallable;
   private final UnaryCallable
       updateRegionBackendServiceCallable;
+  private final OperationCallable
+      updateRegionBackendServiceOperationCallable;
 
   private final HttpJsonStubCallableFactory callableFactory;
 
@@ -266,6 +277,7 @@ protected HttpJsonRegionBackendServiceStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonRegionOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         deleteRegionBackendServiceTransportSettings =
@@ -310,6 +322,12 @@ protected HttpJsonRegionBackendServiceStub(
             deleteRegionBackendServiceTransportSettings,
             settings.deleteRegionBackendServiceSettings(),
             clientContext);
+    this.deleteRegionBackendServiceOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteRegionBackendServiceTransportSettings,
+            settings.deleteRegionBackendServiceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getRegionBackendServiceCallable =
         callableFactory.createUnaryCallable(
             getRegionBackendServiceTransportSettings,
@@ -325,6 +343,12 @@ protected HttpJsonRegionBackendServiceStub(
             insertRegionBackendServiceTransportSettings,
             settings.insertRegionBackendServiceSettings(),
             clientContext);
+    this.insertRegionBackendServiceOperationCallable =
+        callableFactory.createOperationCallable(
+            insertRegionBackendServiceTransportSettings,
+            settings.insertRegionBackendServiceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listRegionBackendServicesCallable =
         callableFactory.createUnaryCallable(
             listRegionBackendServicesTransportSettings,
@@ -340,15 +364,38 @@ protected HttpJsonRegionBackendServiceStub(
             patchRegionBackendServiceTransportSettings,
             settings.patchRegionBackendServiceSettings(),
             clientContext);
+    this.patchRegionBackendServiceOperationCallable =
+        callableFactory.createOperationCallable(
+            patchRegionBackendServiceTransportSettings,
+            settings.patchRegionBackendServiceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.updateRegionBackendServiceCallable =
         callableFactory.createUnaryCallable(
             updateRegionBackendServiceTransportSettings,
             settings.updateRegionBackendServiceSettings(),
             clientContext);
+    this.updateRegionBackendServiceOperationCallable =
+        callableFactory.createOperationCallable(
+            updateRegionBackendServiceTransportSettings,
+            settings.updateRegionBackendServiceOperationSettings(),
+            clientContext,
+            this.operationsStub);
 
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonRegionOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteRegionBackendServiceOperationCallable() {
+    return deleteRegionBackendServiceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       deleteRegionBackendServiceCallable() {
@@ -367,6 +414,12 @@ protected HttpJsonRegionBackendServiceStub(
     return getHealthRegionBackendServiceCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertRegionBackendServiceOperationCallable() {
+    return insertRegionBackendServiceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       insertRegionBackendServiceCallable() {
@@ -385,12 +438,24 @@ protected HttpJsonRegionBackendServiceStub(
     return listRegionBackendServicesCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchRegionBackendServiceOperationCallable() {
+    return patchRegionBackendServiceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       patchRegionBackendServiceCallable() {
     return patchRegionBackendServiceCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      updateRegionBackendServiceOperationCallable() {
+    return updateRegionBackendServiceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       updateRegionBackendServiceCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionCallableFactory.java
index a4f59c2af3b7..7e7fe3ea78e6 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionCallableFactory.java
@@ -16,14 +16,18 @@
 package com.google.cloud.compute.v1.stub;
 
 import com.google.api.core.BetaApi;
+import com.google.api.gax.core.BackgroundResource;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.BatchingCallSettings;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +38,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonRegionCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonRegionCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +49,19 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          BackgroundResource operationsStub) {
+    return null;
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionCommitmentCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionCommitmentCallableFactory.java
index ee7033a26498..6433fb5afb54 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionCommitmentCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionCommitmentCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonRegionCommitmentCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonRegionCommitmentCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          RegionOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionCommitmentStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionCommitmentStub.java
index f663e13f1027..74a1d4df14bb 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionCommitmentStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionCommitmentStub.java
@@ -26,9 +26,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.AggregatedListRegionCommitmentsHttpRequest;
@@ -142,6 +144,7 @@ public class HttpJsonRegionCommitmentStub extends RegionCommitmentStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonRegionOperationStub operationsStub;
 
   private final UnaryCallable
       aggregatedListRegionCommitmentsCallable;
@@ -152,6 +155,8 @@ public class HttpJsonRegionCommitmentStub extends RegionCommitmentStub {
       getRegionCommitmentCallable;
   private final UnaryCallable
       insertRegionCommitmentCallable;
+  private final OperationCallable
+      insertRegionCommitmentOperationCallable;
   private final UnaryCallable
       listRegionCommitmentsCallable;
   private final UnaryCallable
@@ -197,6 +202,7 @@ protected HttpJsonRegionCommitmentStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonRegionOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         aggregatedListRegionCommitmentsTransportSettings =
@@ -240,6 +246,12 @@ protected HttpJsonRegionCommitmentStub(
             insertRegionCommitmentTransportSettings,
             settings.insertRegionCommitmentSettings(),
             clientContext);
+    this.insertRegionCommitmentOperationCallable =
+        callableFactory.createOperationCallable(
+            insertRegionCommitmentTransportSettings,
+            settings.insertRegionCommitmentOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listRegionCommitmentsCallable =
         callableFactory.createUnaryCallable(
             listRegionCommitmentsTransportSettings,
@@ -254,6 +266,11 @@ protected HttpJsonRegionCommitmentStub(
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonRegionOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
   @BetaApi
   public UnaryCallable<
           AggregatedListRegionCommitmentsHttpRequest, AggregatedListRegionCommitmentsPagedResponse>
@@ -272,6 +289,12 @@ public UnaryCallable getRegionCommit
     return getRegionCommitmentCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertRegionCommitmentOperationCallable() {
+    return insertRegionCommitmentOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       insertRegionCommitmentCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionDiskCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionDiskCallableFactory.java
index 75d069e610d5..ee8c94408fc5 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionDiskCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionDiskCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonRegionDiskCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonRegionDiskCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          RegionOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionDiskStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionDiskStub.java
index 4acf4f0ca240..be9f50de79a5 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionDiskStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionDiskStub.java
@@ -25,9 +25,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.CreateSnapshotRegionDiskHttpRequest;
@@ -225,18 +227,29 @@ public class HttpJsonRegionDiskStub extends RegionDiskStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonRegionOperationStub operationsStub;
 
   private final UnaryCallable
       createSnapshotRegionDiskCallable;
+  private final OperationCallable
+      createSnapshotRegionDiskOperationCallable;
   private final UnaryCallable deleteRegionDiskCallable;
+  private final OperationCallable
+      deleteRegionDiskOperationCallable;
   private final UnaryCallable getRegionDiskCallable;
   private final UnaryCallable insertRegionDiskCallable;
+  private final OperationCallable
+      insertRegionDiskOperationCallable;
   private final UnaryCallable listRegionDisksCallable;
   private final UnaryCallable
       listRegionDisksPagedCallable;
   private final UnaryCallable resizeRegionDiskCallable;
+  private final OperationCallable
+      resizeRegionDiskOperationCallable;
   private final UnaryCallable
       setLabelsRegionDiskCallable;
+  private final OperationCallable
+      setLabelsRegionDiskOperationCallable;
   private final UnaryCallable
       testIamPermissionsRegionDiskCallable;
 
@@ -279,6 +292,7 @@ protected HttpJsonRegionDiskStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonRegionOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         createSnapshotRegionDiskTransportSettings =
@@ -322,15 +336,33 @@ protected HttpJsonRegionDiskStub(
             createSnapshotRegionDiskTransportSettings,
             settings.createSnapshotRegionDiskSettings(),
             clientContext);
+    this.createSnapshotRegionDiskOperationCallable =
+        callableFactory.createOperationCallable(
+            createSnapshotRegionDiskTransportSettings,
+            settings.createSnapshotRegionDiskOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.deleteRegionDiskCallable =
         callableFactory.createUnaryCallable(
             deleteRegionDiskTransportSettings, settings.deleteRegionDiskSettings(), clientContext);
+    this.deleteRegionDiskOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteRegionDiskTransportSettings,
+            settings.deleteRegionDiskOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getRegionDiskCallable =
         callableFactory.createUnaryCallable(
             getRegionDiskTransportSettings, settings.getRegionDiskSettings(), clientContext);
     this.insertRegionDiskCallable =
         callableFactory.createUnaryCallable(
             insertRegionDiskTransportSettings, settings.insertRegionDiskSettings(), clientContext);
+    this.insertRegionDiskOperationCallable =
+        callableFactory.createOperationCallable(
+            insertRegionDiskTransportSettings,
+            settings.insertRegionDiskOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listRegionDisksCallable =
         callableFactory.createUnaryCallable(
             listRegionDisksTransportSettings, settings.listRegionDisksSettings(), clientContext);
@@ -340,11 +372,23 @@ protected HttpJsonRegionDiskStub(
     this.resizeRegionDiskCallable =
         callableFactory.createUnaryCallable(
             resizeRegionDiskTransportSettings, settings.resizeRegionDiskSettings(), clientContext);
+    this.resizeRegionDiskOperationCallable =
+        callableFactory.createOperationCallable(
+            resizeRegionDiskTransportSettings,
+            settings.resizeRegionDiskOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setLabelsRegionDiskCallable =
         callableFactory.createUnaryCallable(
             setLabelsRegionDiskTransportSettings,
             settings.setLabelsRegionDiskSettings(),
             clientContext);
+    this.setLabelsRegionDiskOperationCallable =
+        callableFactory.createOperationCallable(
+            setLabelsRegionDiskTransportSettings,
+            settings.setLabelsRegionDiskOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.testIamPermissionsRegionDiskCallable =
         callableFactory.createUnaryCallable(
             testIamPermissionsRegionDiskTransportSettings,
@@ -354,12 +398,29 @@ protected HttpJsonRegionDiskStub(
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonRegionOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      createSnapshotRegionDiskOperationCallable() {
+    return createSnapshotRegionDiskOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       createSnapshotRegionDiskCallable() {
     return createSnapshotRegionDiskCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteRegionDiskOperationCallable() {
+    return deleteRegionDiskOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteRegionDiskCallable() {
     return deleteRegionDiskCallable;
@@ -370,6 +431,12 @@ public UnaryCallable getRegionDiskCallable() {
     return getRegionDiskCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertRegionDiskOperationCallable() {
+    return insertRegionDiskOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertRegionDiskCallable() {
     return insertRegionDiskCallable;
@@ -386,11 +453,23 @@ public UnaryCallable listRegionDisksCallab
     return listRegionDisksCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      resizeRegionDiskOperationCallable() {
+    return resizeRegionDiskOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable resizeRegionDiskCallable() {
     return resizeRegionDiskCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setLabelsRegionDiskOperationCallable() {
+    return setLabelsRegionDiskOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable setLabelsRegionDiskCallable() {
     return setLabelsRegionDiskCallable;
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionDiskTypeCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionDiskTypeCallableFactory.java
index 19cac958665a..044a28518068 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionDiskTypeCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionDiskTypeCallableFactory.java
@@ -16,14 +16,18 @@
 package com.google.cloud.compute.v1.stub;
 
 import com.google.api.core.BetaApi;
+import com.google.api.gax.core.BackgroundResource;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.BatchingCallSettings;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +38,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonRegionDiskTypeCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonRegionDiskTypeCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +49,19 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          BackgroundResource operationsStub) {
+    return null;
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionInstanceGroupCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionInstanceGroupCallableFactory.java
index f6cf1a937e52..f0444a1bfef5 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionInstanceGroupCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionInstanceGroupCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonRegionInstanceGroupCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonRegionInstanceGroupCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          RegionOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionInstanceGroupManagerCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionInstanceGroupManagerCallableFactory.java
index 1d3cc2486d7a..6e0e4d624807 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionInstanceGroupManagerCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionInstanceGroupManagerCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -35,7 +43,7 @@
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
 public class HttpJsonRegionInstanceGroupManagerCallableFactory
-    implements HttpJsonStubCallableFactory {
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -45,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          RegionOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionInstanceGroupManagerStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionInstanceGroupManagerStub.java
index ef39cdfb0ef9..f8bc12b4c5f7 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionInstanceGroupManagerStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionInstanceGroupManagerStub.java
@@ -25,9 +25,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.AbandonInstancesRegionInstanceGroupManagerHttpRequest;
@@ -349,17 +351,30 @@ public class HttpJsonRegionInstanceGroupManagerStub extends RegionInstanceGroupM
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonRegionOperationStub operationsStub;
 
   private final UnaryCallable
       abandonInstancesRegionInstanceGroupManagerCallable;
+  private final OperationCallable<
+          AbandonInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      abandonInstancesRegionInstanceGroupManagerOperationCallable;
   private final UnaryCallable
       deleteRegionInstanceGroupManagerCallable;
+  private final OperationCallable<
+          DeleteRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      deleteRegionInstanceGroupManagerOperationCallable;
   private final UnaryCallable
       deleteInstancesRegionInstanceGroupManagerCallable;
+  private final OperationCallable<
+          DeleteInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      deleteInstancesRegionInstanceGroupManagerOperationCallable;
   private final UnaryCallable
       getRegionInstanceGroupManagerCallable;
   private final UnaryCallable
       insertRegionInstanceGroupManagerCallable;
+  private final OperationCallable<
+          InsertRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      insertRegionInstanceGroupManagerOperationCallable;
   private final UnaryCallable<
           ListRegionInstanceGroupManagersHttpRequest, RegionInstanceGroupManagerList>
       listRegionInstanceGroupManagersCallable;
@@ -372,14 +387,29 @@ public class HttpJsonRegionInstanceGroupManagerStub extends RegionInstanceGroupM
       listManagedInstancesRegionInstanceGroupManagersCallable;
   private final UnaryCallable
       patchRegionInstanceGroupManagerCallable;
+  private final OperationCallable<
+          PatchRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      patchRegionInstanceGroupManagerOperationCallable;
   private final UnaryCallable
       recreateInstancesRegionInstanceGroupManagerCallable;
+  private final OperationCallable<
+          RecreateInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      recreateInstancesRegionInstanceGroupManagerOperationCallable;
   private final UnaryCallable
       resizeRegionInstanceGroupManagerCallable;
+  private final OperationCallable<
+          ResizeRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      resizeRegionInstanceGroupManagerOperationCallable;
   private final UnaryCallable
       setInstanceTemplateRegionInstanceGroupManagerCallable;
+  private final OperationCallable<
+          SetInstanceTemplateRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      setInstanceTemplateRegionInstanceGroupManagerOperationCallable;
   private final UnaryCallable
       setTargetPoolsRegionInstanceGroupManagerCallable;
+  private final OperationCallable<
+          SetTargetPoolsRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      setTargetPoolsRegionInstanceGroupManagerOperationCallable;
 
   private final HttpJsonStubCallableFactory callableFactory;
 
@@ -424,6 +454,7 @@ protected HttpJsonRegionInstanceGroupManagerStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonRegionOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         abandonInstancesRegionInstanceGroupManagerTransportSettings =
@@ -508,16 +539,34 @@ protected HttpJsonRegionInstanceGroupManagerStub(
             abandonInstancesRegionInstanceGroupManagerTransportSettings,
             settings.abandonInstancesRegionInstanceGroupManagerSettings(),
             clientContext);
+    this.abandonInstancesRegionInstanceGroupManagerOperationCallable =
+        callableFactory.createOperationCallable(
+            abandonInstancesRegionInstanceGroupManagerTransportSettings,
+            settings.abandonInstancesRegionInstanceGroupManagerOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.deleteRegionInstanceGroupManagerCallable =
         callableFactory.createUnaryCallable(
             deleteRegionInstanceGroupManagerTransportSettings,
             settings.deleteRegionInstanceGroupManagerSettings(),
             clientContext);
+    this.deleteRegionInstanceGroupManagerOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteRegionInstanceGroupManagerTransportSettings,
+            settings.deleteRegionInstanceGroupManagerOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.deleteInstancesRegionInstanceGroupManagerCallable =
         callableFactory.createUnaryCallable(
             deleteInstancesRegionInstanceGroupManagerTransportSettings,
             settings.deleteInstancesRegionInstanceGroupManagerSettings(),
             clientContext);
+    this.deleteInstancesRegionInstanceGroupManagerOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteInstancesRegionInstanceGroupManagerTransportSettings,
+            settings.deleteInstancesRegionInstanceGroupManagerOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getRegionInstanceGroupManagerCallable =
         callableFactory.createUnaryCallable(
             getRegionInstanceGroupManagerTransportSettings,
@@ -528,6 +577,12 @@ protected HttpJsonRegionInstanceGroupManagerStub(
             insertRegionInstanceGroupManagerTransportSettings,
             settings.insertRegionInstanceGroupManagerSettings(),
             clientContext);
+    this.insertRegionInstanceGroupManagerOperationCallable =
+        callableFactory.createOperationCallable(
+            insertRegionInstanceGroupManagerTransportSettings,
+            settings.insertRegionInstanceGroupManagerOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listRegionInstanceGroupManagersCallable =
         callableFactory.createUnaryCallable(
             listRegionInstanceGroupManagersTransportSettings,
@@ -548,42 +603,97 @@ protected HttpJsonRegionInstanceGroupManagerStub(
             patchRegionInstanceGroupManagerTransportSettings,
             settings.patchRegionInstanceGroupManagerSettings(),
             clientContext);
+    this.patchRegionInstanceGroupManagerOperationCallable =
+        callableFactory.createOperationCallable(
+            patchRegionInstanceGroupManagerTransportSettings,
+            settings.patchRegionInstanceGroupManagerOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.recreateInstancesRegionInstanceGroupManagerCallable =
         callableFactory.createUnaryCallable(
             recreateInstancesRegionInstanceGroupManagerTransportSettings,
             settings.recreateInstancesRegionInstanceGroupManagerSettings(),
             clientContext);
+    this.recreateInstancesRegionInstanceGroupManagerOperationCallable =
+        callableFactory.createOperationCallable(
+            recreateInstancesRegionInstanceGroupManagerTransportSettings,
+            settings.recreateInstancesRegionInstanceGroupManagerOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.resizeRegionInstanceGroupManagerCallable =
         callableFactory.createUnaryCallable(
             resizeRegionInstanceGroupManagerTransportSettings,
             settings.resizeRegionInstanceGroupManagerSettings(),
             clientContext);
+    this.resizeRegionInstanceGroupManagerOperationCallable =
+        callableFactory.createOperationCallable(
+            resizeRegionInstanceGroupManagerTransportSettings,
+            settings.resizeRegionInstanceGroupManagerOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setInstanceTemplateRegionInstanceGroupManagerCallable =
         callableFactory.createUnaryCallable(
             setInstanceTemplateRegionInstanceGroupManagerTransportSettings,
             settings.setInstanceTemplateRegionInstanceGroupManagerSettings(),
             clientContext);
+    this.setInstanceTemplateRegionInstanceGroupManagerOperationCallable =
+        callableFactory.createOperationCallable(
+            setInstanceTemplateRegionInstanceGroupManagerTransportSettings,
+            settings.setInstanceTemplateRegionInstanceGroupManagerOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setTargetPoolsRegionInstanceGroupManagerCallable =
         callableFactory.createUnaryCallable(
             setTargetPoolsRegionInstanceGroupManagerTransportSettings,
             settings.setTargetPoolsRegionInstanceGroupManagerSettings(),
             clientContext);
+    this.setTargetPoolsRegionInstanceGroupManagerOperationCallable =
+        callableFactory.createOperationCallable(
+            setTargetPoolsRegionInstanceGroupManagerTransportSettings,
+            settings.setTargetPoolsRegionInstanceGroupManagerOperationSettings(),
+            clientContext,
+            this.operationsStub);
 
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonRegionOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable<
+          AbandonInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      abandonInstancesRegionInstanceGroupManagerOperationCallable() {
+    return abandonInstancesRegionInstanceGroupManagerOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       abandonInstancesRegionInstanceGroupManagerCallable() {
     return abandonInstancesRegionInstanceGroupManagerCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteRegionInstanceGroupManagerOperationCallable() {
+    return deleteRegionInstanceGroupManagerOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       deleteRegionInstanceGroupManagerCallable() {
     return deleteRegionInstanceGroupManagerCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable<
+          DeleteInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      deleteInstancesRegionInstanceGroupManagerOperationCallable() {
+    return deleteInstancesRegionInstanceGroupManagerOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       deleteInstancesRegionInstanceGroupManagerCallable() {
@@ -596,6 +706,12 @@ protected HttpJsonRegionInstanceGroupManagerStub(
     return getRegionInstanceGroupManagerCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertRegionInstanceGroupManagerOperationCallable() {
+    return insertRegionInstanceGroupManagerOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       insertRegionInstanceGroupManagerCallable() {
@@ -623,30 +739,63 @@ protected HttpJsonRegionInstanceGroupManagerStub(
     return listManagedInstancesRegionInstanceGroupManagersCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchRegionInstanceGroupManagerOperationCallable() {
+    return patchRegionInstanceGroupManagerOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       patchRegionInstanceGroupManagerCallable() {
     return patchRegionInstanceGroupManagerCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable<
+          RecreateInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      recreateInstancesRegionInstanceGroupManagerOperationCallable() {
+    return recreateInstancesRegionInstanceGroupManagerOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       recreateInstancesRegionInstanceGroupManagerCallable() {
     return recreateInstancesRegionInstanceGroupManagerCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      resizeRegionInstanceGroupManagerOperationCallable() {
+    return resizeRegionInstanceGroupManagerOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       resizeRegionInstanceGroupManagerCallable() {
     return resizeRegionInstanceGroupManagerCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable<
+          SetInstanceTemplateRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      setInstanceTemplateRegionInstanceGroupManagerOperationCallable() {
+    return setInstanceTemplateRegionInstanceGroupManagerOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setInstanceTemplateRegionInstanceGroupManagerCallable() {
     return setInstanceTemplateRegionInstanceGroupManagerCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable<
+          SetTargetPoolsRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      setTargetPoolsRegionInstanceGroupManagerOperationCallable() {
+    return setTargetPoolsRegionInstanceGroupManagerOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setTargetPoolsRegionInstanceGroupManagerCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionInstanceGroupStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionInstanceGroupStub.java
index 6146a000a984..66d437201457 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionInstanceGroupStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionInstanceGroupStub.java
@@ -26,9 +26,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.GetRegionInstanceGroupHttpRequest;
@@ -148,6 +150,7 @@ public class HttpJsonRegionInstanceGroupStub extends RegionInstanceGroupStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonRegionOperationStub operationsStub;
 
   private final UnaryCallable
       getRegionInstanceGroupCallable;
@@ -165,6 +168,9 @@ public class HttpJsonRegionInstanceGroupStub extends RegionInstanceGroupStub {
       listInstancesRegionInstanceGroupsPagedCallable;
   private final UnaryCallable
       setNamedPortsRegionInstanceGroupCallable;
+  private final OperationCallable<
+          SetNamedPortsRegionInstanceGroupHttpRequest, EmptyMessage, Operation>
+      setNamedPortsRegionInstanceGroupOperationCallable;
 
   private final HttpJsonStubCallableFactory callableFactory;
 
@@ -206,6 +212,7 @@ protected HttpJsonRegionInstanceGroupStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonRegionOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         getRegionInstanceGroupTransportSettings =
@@ -263,10 +270,21 @@ protected HttpJsonRegionInstanceGroupStub(
             setNamedPortsRegionInstanceGroupTransportSettings,
             settings.setNamedPortsRegionInstanceGroupSettings(),
             clientContext);
+    this.setNamedPortsRegionInstanceGroupOperationCallable =
+        callableFactory.createOperationCallable(
+            setNamedPortsRegionInstanceGroupTransportSettings,
+            settings.setNamedPortsRegionInstanceGroupOperationSettings(),
+            clientContext,
+            this.operationsStub);
 
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonRegionOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
   @BetaApi
   public UnaryCallable
       getRegionInstanceGroupCallable() {
@@ -300,6 +318,12 @@ protected HttpJsonRegionInstanceGroupStub(
     return listInstancesRegionInstanceGroupsCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setNamedPortsRegionInstanceGroupOperationCallable() {
+    return setNamedPortsRegionInstanceGroupOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setNamedPortsRegionInstanceGroupCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionOperationCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionOperationCallableFactory.java
index 25091b74575e..2d4a53820a97 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionOperationCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionOperationCallableFactory.java
@@ -16,14 +16,18 @@
 package com.google.cloud.compute.v1.stub;
 
 import com.google.api.core.BetaApi;
+import com.google.api.gax.core.BackgroundResource;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.BatchingCallSettings;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +38,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonRegionOperationCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonRegionOperationCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +49,19 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          BackgroundResource operationsStub) {
+    return null;
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionOperationStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionOperationStub.java
index 45541f5760e3..bae7063c1049 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionOperationStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRegionOperationStub.java
@@ -25,6 +25,7 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
@@ -52,9 +53,9 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public class HttpJsonRegionOperationStub extends RegionOperationStub {
   @InternalApi
-  public static final ApiMethodDescriptor
+  public static final ApiMethodDescriptor
       deleteRegionOperationMethodDescriptor =
-          ApiMethodDescriptor.newBuilder()
+          ApiMethodDescriptor.newBuilder()
               .setFullMethodName("compute.regionOperations.delete")
               .setHttpMethod(HttpMethods.DELETE)
               .setRequestFormatter(
@@ -109,7 +110,8 @@ public class HttpJsonRegionOperationStub extends RegionOperationStub {
 
   private final BackgroundResource backgroundResources;
 
-  private final UnaryCallable deleteRegionOperationCallable;
+  private final UnaryCallable
+      deleteRegionOperationCallable;
   private final UnaryCallable getRegionOperationCallable;
   private final UnaryCallable
       listRegionOperationsCallable;
@@ -157,9 +159,9 @@ protected HttpJsonRegionOperationStub(
       throws IOException {
     this.callableFactory = callableFactory;
 
-    HttpJsonCallSettings
+    HttpJsonCallSettings
         deleteRegionOperationTransportSettings =
-            HttpJsonCallSettings.newBuilder()
+            HttpJsonCallSettings.newBuilder()
                 .setMethodDescriptor(deleteRegionOperationMethodDescriptor)
                 .build();
     HttpJsonCallSettings
@@ -198,7 +200,8 @@ protected HttpJsonRegionOperationStub(
   }
 
   @BetaApi
-  public UnaryCallable deleteRegionOperationCallable() {
+  public UnaryCallable
+      deleteRegionOperationCallable() {
     return deleteRegionOperationCallable;
   }
 
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRouteCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRouteCallableFactory.java
index e8fa8bdb5b38..1e96704d4524 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRouteCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRouteCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonRouteCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonRouteCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          GlobalOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRouteStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRouteStub.java
index 2fdf0bd0d5c8..c562e1cc4928 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRouteStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRouteStub.java
@@ -25,9 +25,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.DeleteRouteHttpRequest;
@@ -130,10 +132,15 @@ public class HttpJsonRouteStub extends RouteStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonGlobalOperationStub operationsStub;
 
   private final UnaryCallable deleteRouteCallable;
+  private final OperationCallable
+      deleteRouteOperationCallable;
   private final UnaryCallable getRouteCallable;
   private final UnaryCallable insertRouteCallable;
+  private final OperationCallable
+      insertRouteOperationCallable;
   private final UnaryCallable listRoutesCallable;
   private final UnaryCallable
       listRoutesPagedCallable;
@@ -175,6 +182,7 @@ protected HttpJsonRouteStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonGlobalOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings deleteRouteTransportSettings =
         HttpJsonCallSettings.newBuilder()
@@ -196,12 +204,24 @@ protected HttpJsonRouteStub(
     this.deleteRouteCallable =
         callableFactory.createUnaryCallable(
             deleteRouteTransportSettings, settings.deleteRouteSettings(), clientContext);
+    this.deleteRouteOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteRouteTransportSettings,
+            settings.deleteRouteOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getRouteCallable =
         callableFactory.createUnaryCallable(
             getRouteTransportSettings, settings.getRouteSettings(), clientContext);
     this.insertRouteCallable =
         callableFactory.createUnaryCallable(
             insertRouteTransportSettings, settings.insertRouteSettings(), clientContext);
+    this.insertRouteOperationCallable =
+        callableFactory.createOperationCallable(
+            insertRouteTransportSettings,
+            settings.insertRouteOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listRoutesCallable =
         callableFactory.createUnaryCallable(
             listRoutesTransportSettings, settings.listRoutesSettings(), clientContext);
@@ -212,6 +232,17 @@ protected HttpJsonRouteStub(
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonGlobalOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteRouteOperationCallable() {
+    return deleteRouteOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteRouteCallable() {
     return deleteRouteCallable;
@@ -222,6 +253,12 @@ public UnaryCallable getRouteCallable() {
     return getRouteCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertRouteOperationCallable() {
+    return insertRouteOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertRouteCallable() {
     return insertRouteCallable;
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRouterCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRouterCallableFactory.java
index b875a6777070..701d53c5e8bc 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRouterCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRouterCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonRouterCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonRouterCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          RegionOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRouterStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRouterStub.java
index 1fabc642a139..011ff331b67a 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRouterStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonRouterStub.java
@@ -27,9 +27,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.AggregatedListRoutersHttpRequest;
@@ -271,12 +273,15 @@ public class HttpJsonRouterStub extends RouterStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonRegionOperationStub operationsStub;
 
   private final UnaryCallable
       aggregatedListRoutersCallable;
   private final UnaryCallable
       aggregatedListRoutersPagedCallable;
   private final UnaryCallable deleteRouterCallable;
+  private final OperationCallable
+      deleteRouterOperationCallable;
   private final UnaryCallable getRouterCallable;
   private final UnaryCallable
       getNatMappingInfoRoutersCallable;
@@ -286,13 +291,19 @@ public class HttpJsonRouterStub extends RouterStub {
   private final UnaryCallable
       getRouterStatusRouterCallable;
   private final UnaryCallable insertRouterCallable;
+  private final OperationCallable
+      insertRouterOperationCallable;
   private final UnaryCallable listRoutersCallable;
   private final UnaryCallable
       listRoutersPagedCallable;
   private final UnaryCallable patchRouterCallable;
+  private final OperationCallable
+      patchRouterOperationCallable;
   private final UnaryCallable
       previewRouterCallable;
   private final UnaryCallable updateRouterCallable;
+  private final OperationCallable
+      updateRouterOperationCallable;
 
   private final HttpJsonStubCallableFactory callableFactory;
 
@@ -331,6 +342,7 @@ protected HttpJsonRouterStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonRegionOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         aggregatedListRoutersTransportSettings =
@@ -393,6 +405,12 @@ protected HttpJsonRouterStub(
     this.deleteRouterCallable =
         callableFactory.createUnaryCallable(
             deleteRouterTransportSettings, settings.deleteRouterSettings(), clientContext);
+    this.deleteRouterOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteRouterTransportSettings,
+            settings.deleteRouterOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getRouterCallable =
         callableFactory.createUnaryCallable(
             getRouterTransportSettings, settings.getRouterSettings(), clientContext);
@@ -414,6 +432,12 @@ protected HttpJsonRouterStub(
     this.insertRouterCallable =
         callableFactory.createUnaryCallable(
             insertRouterTransportSettings, settings.insertRouterSettings(), clientContext);
+    this.insertRouterOperationCallable =
+        callableFactory.createOperationCallable(
+            insertRouterTransportSettings,
+            settings.insertRouterOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listRoutersCallable =
         callableFactory.createUnaryCallable(
             listRoutersTransportSettings, settings.listRoutersSettings(), clientContext);
@@ -423,16 +447,33 @@ protected HttpJsonRouterStub(
     this.patchRouterCallable =
         callableFactory.createUnaryCallable(
             patchRouterTransportSettings, settings.patchRouterSettings(), clientContext);
+    this.patchRouterOperationCallable =
+        callableFactory.createOperationCallable(
+            patchRouterTransportSettings,
+            settings.patchRouterOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.previewRouterCallable =
         callableFactory.createUnaryCallable(
             previewRouterTransportSettings, settings.previewRouterSettings(), clientContext);
     this.updateRouterCallable =
         callableFactory.createUnaryCallable(
             updateRouterTransportSettings, settings.updateRouterSettings(), clientContext);
+    this.updateRouterOperationCallable =
+        callableFactory.createOperationCallable(
+            updateRouterTransportSettings,
+            settings.updateRouterOperationSettings(),
+            clientContext,
+            this.operationsStub);
 
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonRegionOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
   @BetaApi
   public UnaryCallable
       aggregatedListRoutersPagedCallable() {
@@ -445,6 +486,12 @@ protected HttpJsonRouterStub(
     return aggregatedListRoutersCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteRouterOperationCallable() {
+    return deleteRouterOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteRouterCallable() {
     return deleteRouterCallable;
@@ -473,6 +520,12 @@ public UnaryCallable getRouterCallable() {
     return getRouterStatusRouterCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertRouterOperationCallable() {
+    return insertRouterOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertRouterCallable() {
     return insertRouterCallable;
@@ -489,6 +542,12 @@ public UnaryCallable listRoutersCallable() {
     return listRoutersCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchRouterOperationCallable() {
+    return patchRouterOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable patchRouterCallable() {
     return patchRouterCallable;
@@ -499,6 +558,12 @@ public UnaryCallable previewRo
     return previewRouterCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      updateRouterOperationCallable() {
+    return updateRouterOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable updateRouterCallable() {
     return updateRouterCallable;
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSecurityPolicyCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSecurityPolicyCallableFactory.java
index 4a93225f5329..c243ab4aef00 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSecurityPolicyCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSecurityPolicyCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonSecurityPolicyCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonSecurityPolicyCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          GlobalOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSecurityPolicyStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSecurityPolicyStub.java
index 088e54bd8495..a34f5e5ecd4d 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSecurityPolicyStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSecurityPolicyStub.java
@@ -25,9 +25,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.AddRuleSecurityPolicyHttpRequest;
@@ -243,27 +245,40 @@ public class HttpJsonSecurityPolicyStub extends SecurityPolicyStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonGlobalOperationStub operationsStub;
 
   private final UnaryCallable
       addRuleSecurityPolicyCallable;
+  private final OperationCallable
+      addRuleSecurityPolicyOperationCallable;
   private final UnaryCallable
       deleteSecurityPolicyCallable;
+  private final OperationCallable
+      deleteSecurityPolicyOperationCallable;
   private final UnaryCallable
       getSecurityPolicyCallable;
   private final UnaryCallable
       getRuleSecurityPolicyCallable;
   private final UnaryCallable
       insertSecurityPolicyCallable;
+  private final OperationCallable
+      insertSecurityPolicyOperationCallable;
   private final UnaryCallable
       listSecurityPoliciesCallable;
   private final UnaryCallable
       listSecurityPoliciesPagedCallable;
   private final UnaryCallable
       patchSecurityPolicyCallable;
+  private final OperationCallable
+      patchSecurityPolicyOperationCallable;
   private final UnaryCallable
       patchRuleSecurityPolicyCallable;
+  private final OperationCallable
+      patchRuleSecurityPolicyOperationCallable;
   private final UnaryCallable
       removeRuleSecurityPolicyCallable;
+  private final OperationCallable
+      removeRuleSecurityPolicyOperationCallable;
 
   private final HttpJsonStubCallableFactory callableFactory;
 
@@ -305,6 +320,7 @@ protected HttpJsonSecurityPolicyStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonGlobalOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         addRuleSecurityPolicyTransportSettings =
@@ -357,11 +373,23 @@ protected HttpJsonSecurityPolicyStub(
             addRuleSecurityPolicyTransportSettings,
             settings.addRuleSecurityPolicySettings(),
             clientContext);
+    this.addRuleSecurityPolicyOperationCallable =
+        callableFactory.createOperationCallable(
+            addRuleSecurityPolicyTransportSettings,
+            settings.addRuleSecurityPolicyOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.deleteSecurityPolicyCallable =
         callableFactory.createUnaryCallable(
             deleteSecurityPolicyTransportSettings,
             settings.deleteSecurityPolicySettings(),
             clientContext);
+    this.deleteSecurityPolicyOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteSecurityPolicyTransportSettings,
+            settings.deleteSecurityPolicyOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getSecurityPolicyCallable =
         callableFactory.createUnaryCallable(
             getSecurityPolicyTransportSettings,
@@ -377,6 +405,12 @@ protected HttpJsonSecurityPolicyStub(
             insertSecurityPolicyTransportSettings,
             settings.insertSecurityPolicySettings(),
             clientContext);
+    this.insertSecurityPolicyOperationCallable =
+        callableFactory.createOperationCallable(
+            insertSecurityPolicyTransportSettings,
+            settings.insertSecurityPolicyOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listSecurityPoliciesCallable =
         callableFactory.createUnaryCallable(
             listSecurityPoliciesTransportSettings,
@@ -392,26 +426,61 @@ protected HttpJsonSecurityPolicyStub(
             patchSecurityPolicyTransportSettings,
             settings.patchSecurityPolicySettings(),
             clientContext);
+    this.patchSecurityPolicyOperationCallable =
+        callableFactory.createOperationCallable(
+            patchSecurityPolicyTransportSettings,
+            settings.patchSecurityPolicyOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.patchRuleSecurityPolicyCallable =
         callableFactory.createUnaryCallable(
             patchRuleSecurityPolicyTransportSettings,
             settings.patchRuleSecurityPolicySettings(),
             clientContext);
+    this.patchRuleSecurityPolicyOperationCallable =
+        callableFactory.createOperationCallable(
+            patchRuleSecurityPolicyTransportSettings,
+            settings.patchRuleSecurityPolicyOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.removeRuleSecurityPolicyCallable =
         callableFactory.createUnaryCallable(
             removeRuleSecurityPolicyTransportSettings,
             settings.removeRuleSecurityPolicySettings(),
             clientContext);
+    this.removeRuleSecurityPolicyOperationCallable =
+        callableFactory.createOperationCallable(
+            removeRuleSecurityPolicyTransportSettings,
+            settings.removeRuleSecurityPolicyOperationSettings(),
+            clientContext,
+            this.operationsStub);
 
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonGlobalOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      addRuleSecurityPolicyOperationCallable() {
+    return addRuleSecurityPolicyOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       addRuleSecurityPolicyCallable() {
     return addRuleSecurityPolicyCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteSecurityPolicyOperationCallable() {
+    return deleteSecurityPolicyOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteSecurityPolicyCallable() {
     return deleteSecurityPolicyCallable;
@@ -428,6 +497,12 @@ public UnaryCallable getSecurityPo
     return getRuleSecurityPolicyCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertSecurityPolicyOperationCallable() {
+    return insertSecurityPolicyOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertSecurityPolicyCallable() {
     return insertSecurityPolicyCallable;
@@ -445,17 +520,35 @@ public UnaryCallable insertSecurityP
     return listSecurityPoliciesCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchSecurityPolicyOperationCallable() {
+    return patchSecurityPolicyOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable patchSecurityPolicyCallable() {
     return patchSecurityPolicyCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchRuleSecurityPolicyOperationCallable() {
+    return patchRuleSecurityPolicyOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       patchRuleSecurityPolicyCallable() {
     return patchRuleSecurityPolicyCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      removeRuleSecurityPolicyOperationCallable() {
+    return removeRuleSecurityPolicyOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       removeRuleSecurityPolicyCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSnapshotCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSnapshotCallableFactory.java
index 29e105d62789..4d62d3b467b0 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSnapshotCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSnapshotCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonSnapshotCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonSnapshotCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          GlobalOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSnapshotStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSnapshotStub.java
index c63bdf9ec090..300cf7dce3a4 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSnapshotStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSnapshotStub.java
@@ -25,9 +25,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.DeleteSnapshotHttpRequest;
@@ -201,8 +203,11 @@ public class HttpJsonSnapshotStub extends SnapshotStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonGlobalOperationStub operationsStub;
 
   private final UnaryCallable deleteSnapshotCallable;
+  private final OperationCallable
+      deleteSnapshotOperationCallable;
   private final UnaryCallable getSnapshotCallable;
   private final UnaryCallable getIamPolicySnapshotCallable;
   private final UnaryCallable listSnapshotsCallable;
@@ -210,6 +215,8 @@ public class HttpJsonSnapshotStub extends SnapshotStub {
       listSnapshotsPagedCallable;
   private final UnaryCallable setIamPolicySnapshotCallable;
   private final UnaryCallable setLabelsSnapshotCallable;
+  private final OperationCallable
+      setLabelsSnapshotOperationCallable;
   private final UnaryCallable
       testIamPermissionsSnapshotCallable;
 
@@ -251,6 +258,7 @@ protected HttpJsonSnapshotStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonGlobalOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings deleteSnapshotTransportSettings =
         HttpJsonCallSettings.newBuilder()
@@ -289,6 +297,12 @@ protected HttpJsonSnapshotStub(
     this.deleteSnapshotCallable =
         callableFactory.createUnaryCallable(
             deleteSnapshotTransportSettings, settings.deleteSnapshotSettings(), clientContext);
+    this.deleteSnapshotOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteSnapshotTransportSettings,
+            settings.deleteSnapshotOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getSnapshotCallable =
         callableFactory.createUnaryCallable(
             getSnapshotTransportSettings, settings.getSnapshotSettings(), clientContext);
@@ -313,6 +327,12 @@ protected HttpJsonSnapshotStub(
             setLabelsSnapshotTransportSettings,
             settings.setLabelsSnapshotSettings(),
             clientContext);
+    this.setLabelsSnapshotOperationCallable =
+        callableFactory.createOperationCallable(
+            setLabelsSnapshotTransportSettings,
+            settings.setLabelsSnapshotOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.testIamPermissionsSnapshotCallable =
         callableFactory.createUnaryCallable(
             testIamPermissionsSnapshotTransportSettings,
@@ -322,6 +342,17 @@ protected HttpJsonSnapshotStub(
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonGlobalOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteSnapshotOperationCallable() {
+    return deleteSnapshotOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteSnapshotCallable() {
     return deleteSnapshotCallable;
@@ -353,6 +384,12 @@ public UnaryCallable setIamPolicySnapsh
     return setIamPolicySnapshotCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setLabelsSnapshotOperationCallable() {
+    return setLabelsSnapshotOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable setLabelsSnapshotCallable() {
     return setLabelsSnapshotCallable;
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSslCertificateCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSslCertificateCallableFactory.java
index 9adb16e4921e..446c76dc1cc5 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSslCertificateCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSslCertificateCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonSslCertificateCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonSslCertificateCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          GlobalOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSslCertificateStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSslCertificateStub.java
index 302473618bce..a2aafce8ffc6 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSslCertificateStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSslCertificateStub.java
@@ -25,9 +25,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.DeleteSslCertificateHttpRequest;
@@ -133,13 +135,18 @@ public class HttpJsonSslCertificateStub extends SslCertificateStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonGlobalOperationStub operationsStub;
 
   private final UnaryCallable
       deleteSslCertificateCallable;
+  private final OperationCallable
+      deleteSslCertificateOperationCallable;
   private final UnaryCallable
       getSslCertificateCallable;
   private final UnaryCallable
       insertSslCertificateCallable;
+  private final OperationCallable
+      insertSslCertificateOperationCallable;
   private final UnaryCallable
       listSslCertificatesCallable;
   private final UnaryCallable
@@ -185,6 +192,7 @@ protected HttpJsonSslCertificateStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonGlobalOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         deleteSslCertificateTransportSettings =
@@ -212,6 +220,12 @@ protected HttpJsonSslCertificateStub(
             deleteSslCertificateTransportSettings,
             settings.deleteSslCertificateSettings(),
             clientContext);
+    this.deleteSslCertificateOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteSslCertificateTransportSettings,
+            settings.deleteSslCertificateOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getSslCertificateCallable =
         callableFactory.createUnaryCallable(
             getSslCertificateTransportSettings,
@@ -222,6 +236,12 @@ protected HttpJsonSslCertificateStub(
             insertSslCertificateTransportSettings,
             settings.insertSslCertificateSettings(),
             clientContext);
+    this.insertSslCertificateOperationCallable =
+        callableFactory.createOperationCallable(
+            insertSslCertificateTransportSettings,
+            settings.insertSslCertificateOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listSslCertificatesCallable =
         callableFactory.createUnaryCallable(
             listSslCertificatesTransportSettings,
@@ -236,6 +256,17 @@ protected HttpJsonSslCertificateStub(
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonGlobalOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteSslCertificateOperationCallable() {
+    return deleteSslCertificateOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteSslCertificateCallable() {
     return deleteSslCertificateCallable;
@@ -246,6 +277,12 @@ public UnaryCallable getSslCertifi
     return getSslCertificateCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertSslCertificateOperationCallable() {
+    return insertSslCertificateOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertSslCertificateCallable() {
     return insertSslCertificateCallable;
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSslPolicyCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSslPolicyCallableFactory.java
index 06b68d1c85a4..ca3a4f5b6dc9 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSslPolicyCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSslPolicyCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonSslPolicyCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonSslPolicyCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          GlobalOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSslPolicyStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSslPolicyStub.java
index eb476c418106..e45ea9cb6db4 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSslPolicyStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSslPolicyStub.java
@@ -25,9 +25,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.DeleteSslPolicyHttpRequest;
@@ -184,10 +186,15 @@ public class HttpJsonSslPolicyStub extends SslPolicyStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonGlobalOperationStub operationsStub;
 
   private final UnaryCallable deleteSslPolicyCallable;
+  private final OperationCallable
+      deleteSslPolicyOperationCallable;
   private final UnaryCallable getSslPolicyCallable;
   private final UnaryCallable insertSslPolicyCallable;
+  private final OperationCallable
+      insertSslPolicyOperationCallable;
   private final UnaryCallable listSslPoliciesCallable;
   private final UnaryCallable
       listSslPoliciesPagedCallable;
@@ -195,6 +202,8 @@ public class HttpJsonSslPolicyStub extends SslPolicyStub {
           ListAvailableFeaturesSslPoliciesHttpRequest, SslPoliciesListAvailableFeaturesResponse>
       listAvailableFeaturesSslPoliciesCallable;
   private final UnaryCallable patchSslPolicyCallable;
+  private final OperationCallable
+      patchSslPolicyOperationCallable;
 
   private final HttpJsonStubCallableFactory callableFactory;
 
@@ -234,6 +243,7 @@ protected HttpJsonSslPolicyStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonGlobalOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings deleteSslPolicyTransportSettings =
         HttpJsonCallSettings.newBuilder()
@@ -269,12 +279,24 @@ protected HttpJsonSslPolicyStub(
     this.deleteSslPolicyCallable =
         callableFactory.createUnaryCallable(
             deleteSslPolicyTransportSettings, settings.deleteSslPolicySettings(), clientContext);
+    this.deleteSslPolicyOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteSslPolicyTransportSettings,
+            settings.deleteSslPolicyOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getSslPolicyCallable =
         callableFactory.createUnaryCallable(
             getSslPolicyTransportSettings, settings.getSslPolicySettings(), clientContext);
     this.insertSslPolicyCallable =
         callableFactory.createUnaryCallable(
             insertSslPolicyTransportSettings, settings.insertSslPolicySettings(), clientContext);
+    this.insertSslPolicyOperationCallable =
+        callableFactory.createOperationCallable(
+            insertSslPolicyTransportSettings,
+            settings.insertSslPolicyOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listSslPoliciesCallable =
         callableFactory.createUnaryCallable(
             listSslPoliciesTransportSettings, settings.listSslPoliciesSettings(), clientContext);
@@ -289,10 +311,27 @@ protected HttpJsonSslPolicyStub(
     this.patchSslPolicyCallable =
         callableFactory.createUnaryCallable(
             patchSslPolicyTransportSettings, settings.patchSslPolicySettings(), clientContext);
+    this.patchSslPolicyOperationCallable =
+        callableFactory.createOperationCallable(
+            patchSslPolicyTransportSettings,
+            settings.patchSslPolicyOperationSettings(),
+            clientContext,
+            this.operationsStub);
 
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonGlobalOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteSslPolicyOperationCallable() {
+    return deleteSslPolicyOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteSslPolicyCallable() {
     return deleteSslPolicyCallable;
@@ -303,6 +342,12 @@ public UnaryCallable getSslPolicyCallable()
     return getSslPolicyCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertSslPolicyOperationCallable() {
+    return insertSslPolicyOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertSslPolicyCallable() {
     return insertSslPolicyCallable;
@@ -326,6 +371,12 @@ public UnaryCallable listSslPolicie
     return listAvailableFeaturesSslPoliciesCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchSslPolicyOperationCallable() {
+    return patchSslPolicyOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable patchSslPolicyCallable() {
     return patchSslPolicyCallable;
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSubnetworkCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSubnetworkCallableFactory.java
index 47d2c1a62a63..7ddfe8c1fe7f 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSubnetworkCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSubnetworkCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonSubnetworkCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonSubnetworkCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          RegionOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSubnetworkStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSubnetworkStub.java
index 80cad7918e47..272806a5c082 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSubnetworkStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonSubnetworkStub.java
@@ -27,9 +27,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.AggregatedListSubnetworksHttpRequest;
@@ -329,6 +331,7 @@ public class HttpJsonSubnetworkStub extends SubnetworkStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonRegionOperationStub operationsStub;
 
   private final UnaryCallable
       aggregatedListSubnetworksCallable;
@@ -336,12 +339,18 @@ public class HttpJsonSubnetworkStub extends SubnetworkStub {
           AggregatedListSubnetworksHttpRequest, AggregatedListSubnetworksPagedResponse>
       aggregatedListSubnetworksPagedCallable;
   private final UnaryCallable deleteSubnetworkCallable;
+  private final OperationCallable
+      deleteSubnetworkOperationCallable;
   private final UnaryCallable
       expandIpCidrRangeSubnetworkCallable;
+  private final OperationCallable
+      expandIpCidrRangeSubnetworkOperationCallable;
   private final UnaryCallable getSubnetworkCallable;
   private final UnaryCallable
       getIamPolicySubnetworkCallable;
   private final UnaryCallable insertSubnetworkCallable;
+  private final OperationCallable
+      insertSubnetworkOperationCallable;
   private final UnaryCallable listSubnetworksCallable;
   private final UnaryCallable
       listSubnetworksPagedCallable;
@@ -350,10 +359,15 @@ public class HttpJsonSubnetworkStub extends SubnetworkStub {
   private final UnaryCallable
       listUsableSubnetworksPagedCallable;
   private final UnaryCallable patchSubnetworkCallable;
+  private final OperationCallable
+      patchSubnetworkOperationCallable;
   private final UnaryCallable
       setIamPolicySubnetworkCallable;
   private final UnaryCallable
       setPrivateIpGoogleAccessSubnetworkCallable;
+  private final OperationCallable<
+          SetPrivateIpGoogleAccessSubnetworkHttpRequest, EmptyMessage, Operation>
+      setPrivateIpGoogleAccessSubnetworkOperationCallable;
   private final UnaryCallable
       testIamPermissionsSubnetworkCallable;
 
@@ -396,6 +410,7 @@ protected HttpJsonSubnetworkStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonRegionOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         aggregatedListSubnetworksTransportSettings =
@@ -471,11 +486,23 @@ protected HttpJsonSubnetworkStub(
     this.deleteSubnetworkCallable =
         callableFactory.createUnaryCallable(
             deleteSubnetworkTransportSettings, settings.deleteSubnetworkSettings(), clientContext);
+    this.deleteSubnetworkOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteSubnetworkTransportSettings,
+            settings.deleteSubnetworkOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.expandIpCidrRangeSubnetworkCallable =
         callableFactory.createUnaryCallable(
             expandIpCidrRangeSubnetworkTransportSettings,
             settings.expandIpCidrRangeSubnetworkSettings(),
             clientContext);
+    this.expandIpCidrRangeSubnetworkOperationCallable =
+        callableFactory.createOperationCallable(
+            expandIpCidrRangeSubnetworkTransportSettings,
+            settings.expandIpCidrRangeSubnetworkOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getSubnetworkCallable =
         callableFactory.createUnaryCallable(
             getSubnetworkTransportSettings, settings.getSubnetworkSettings(), clientContext);
@@ -487,6 +514,12 @@ protected HttpJsonSubnetworkStub(
     this.insertSubnetworkCallable =
         callableFactory.createUnaryCallable(
             insertSubnetworkTransportSettings, settings.insertSubnetworkSettings(), clientContext);
+    this.insertSubnetworkOperationCallable =
+        callableFactory.createOperationCallable(
+            insertSubnetworkTransportSettings,
+            settings.insertSubnetworkOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listSubnetworksCallable =
         callableFactory.createUnaryCallable(
             listSubnetworksTransportSettings, settings.listSubnetworksSettings(), clientContext);
@@ -506,6 +539,12 @@ protected HttpJsonSubnetworkStub(
     this.patchSubnetworkCallable =
         callableFactory.createUnaryCallable(
             patchSubnetworkTransportSettings, settings.patchSubnetworkSettings(), clientContext);
+    this.patchSubnetworkOperationCallable =
+        callableFactory.createOperationCallable(
+            patchSubnetworkTransportSettings,
+            settings.patchSubnetworkOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setIamPolicySubnetworkCallable =
         callableFactory.createUnaryCallable(
             setIamPolicySubnetworkTransportSettings,
@@ -516,6 +555,12 @@ protected HttpJsonSubnetworkStub(
             setPrivateIpGoogleAccessSubnetworkTransportSettings,
             settings.setPrivateIpGoogleAccessSubnetworkSettings(),
             clientContext);
+    this.setPrivateIpGoogleAccessSubnetworkOperationCallable =
+        callableFactory.createOperationCallable(
+            setPrivateIpGoogleAccessSubnetworkTransportSettings,
+            settings.setPrivateIpGoogleAccessSubnetworkOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.testIamPermissionsSubnetworkCallable =
         callableFactory.createUnaryCallable(
             testIamPermissionsSubnetworkTransportSettings,
@@ -525,6 +570,11 @@ protected HttpJsonSubnetworkStub(
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonRegionOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
   @BetaApi
   public UnaryCallable
       aggregatedListSubnetworksPagedCallable() {
@@ -537,11 +587,23 @@ protected HttpJsonSubnetworkStub(
     return aggregatedListSubnetworksCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteSubnetworkOperationCallable() {
+    return deleteSubnetworkOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteSubnetworkCallable() {
     return deleteSubnetworkCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      expandIpCidrRangeSubnetworkOperationCallable() {
+    return expandIpCidrRangeSubnetworkOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       expandIpCidrRangeSubnetworkCallable() {
@@ -558,6 +620,12 @@ public UnaryCallable getIamPolicySubn
     return getIamPolicySubnetworkCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertSubnetworkOperationCallable() {
+    return insertSubnetworkOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertSubnetworkCallable() {
     return insertSubnetworkCallable;
@@ -586,6 +654,12 @@ public UnaryCallable listSubnetworks
     return listUsableSubnetworksCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchSubnetworkOperationCallable() {
+    return patchSubnetworkOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable patchSubnetworkCallable() {
     return patchSubnetworkCallable;
@@ -596,6 +670,12 @@ public UnaryCallable setIamPolicySubn
     return setIamPolicySubnetworkCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setPrivateIpGoogleAccessSubnetworkOperationCallable() {
+    return setPrivateIpGoogleAccessSubnetworkOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setPrivateIpGoogleAccessSubnetworkCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetHttpProxyCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetHttpProxyCallableFactory.java
index 7f5fae37970a..81bfb2aa2310 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetHttpProxyCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetHttpProxyCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonTargetHttpProxyCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonTargetHttpProxyCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          GlobalOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetHttpProxyStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetHttpProxyStub.java
index 44ed155a14f6..0c592ceb229f 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetHttpProxyStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetHttpProxyStub.java
@@ -25,9 +25,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.DeleteTargetHttpProxyHttpRequest;
@@ -158,19 +160,26 @@ public class HttpJsonTargetHttpProxyStub extends TargetHttpProxyStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonGlobalOperationStub operationsStub;
 
   private final UnaryCallable
       deleteTargetHttpProxyCallable;
+  private final OperationCallable
+      deleteTargetHttpProxyOperationCallable;
   private final UnaryCallable
       getTargetHttpProxyCallable;
   private final UnaryCallable
       insertTargetHttpProxyCallable;
+  private final OperationCallable
+      insertTargetHttpProxyOperationCallable;
   private final UnaryCallable
       listTargetHttpProxiesCallable;
   private final UnaryCallable
       listTargetHttpProxiesPagedCallable;
   private final UnaryCallable
       setUrlMapTargetHttpProxyCallable;
+  private final OperationCallable
+      setUrlMapTargetHttpProxyOperationCallable;
 
   private final HttpJsonStubCallableFactory callableFactory;
 
@@ -212,6 +221,7 @@ protected HttpJsonTargetHttpProxyStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonGlobalOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         deleteTargetHttpProxyTransportSettings =
@@ -244,6 +254,12 @@ protected HttpJsonTargetHttpProxyStub(
             deleteTargetHttpProxyTransportSettings,
             settings.deleteTargetHttpProxySettings(),
             clientContext);
+    this.deleteTargetHttpProxyOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteTargetHttpProxyTransportSettings,
+            settings.deleteTargetHttpProxyOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getTargetHttpProxyCallable =
         callableFactory.createUnaryCallable(
             getTargetHttpProxyTransportSettings,
@@ -254,6 +270,12 @@ protected HttpJsonTargetHttpProxyStub(
             insertTargetHttpProxyTransportSettings,
             settings.insertTargetHttpProxySettings(),
             clientContext);
+    this.insertTargetHttpProxyOperationCallable =
+        callableFactory.createOperationCallable(
+            insertTargetHttpProxyTransportSettings,
+            settings.insertTargetHttpProxyOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listTargetHttpProxiesCallable =
         callableFactory.createUnaryCallable(
             listTargetHttpProxiesTransportSettings,
@@ -269,10 +291,27 @@ protected HttpJsonTargetHttpProxyStub(
             setUrlMapTargetHttpProxyTransportSettings,
             settings.setUrlMapTargetHttpProxySettings(),
             clientContext);
+    this.setUrlMapTargetHttpProxyOperationCallable =
+        callableFactory.createOperationCallable(
+            setUrlMapTargetHttpProxyTransportSettings,
+            settings.setUrlMapTargetHttpProxyOperationSettings(),
+            clientContext,
+            this.operationsStub);
 
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonGlobalOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteTargetHttpProxyOperationCallable() {
+    return deleteTargetHttpProxyOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       deleteTargetHttpProxyCallable() {
@@ -285,6 +324,12 @@ protected HttpJsonTargetHttpProxyStub(
     return getTargetHttpProxyCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertTargetHttpProxyOperationCallable() {
+    return insertTargetHttpProxyOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       insertTargetHttpProxyCallable() {
@@ -303,6 +348,12 @@ protected HttpJsonTargetHttpProxyStub(
     return listTargetHttpProxiesCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setUrlMapTargetHttpProxyOperationCallable() {
+    return setUrlMapTargetHttpProxyOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setUrlMapTargetHttpProxyCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetHttpsProxyCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetHttpsProxyCallableFactory.java
index d1901422ed86..6ece8c7d32fb 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetHttpsProxyCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetHttpsProxyCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonTargetHttpsProxyCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonTargetHttpsProxyCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          GlobalOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetHttpsProxyStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetHttpsProxyStub.java
index 3fbe48b0d04c..dc64e2476cd2 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetHttpsProxyStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetHttpsProxyStub.java
@@ -25,9 +25,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.DeleteTargetHttpsProxyHttpRequest;
@@ -227,13 +229,18 @@ public class HttpJsonTargetHttpsProxyStub extends TargetHttpsProxyStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonGlobalOperationStub operationsStub;
 
   private final UnaryCallable
       deleteTargetHttpsProxyCallable;
+  private final OperationCallable
+      deleteTargetHttpsProxyOperationCallable;
   private final UnaryCallable
       getTargetHttpsProxyCallable;
   private final UnaryCallable
       insertTargetHttpsProxyCallable;
+  private final OperationCallable
+      insertTargetHttpsProxyOperationCallable;
   private final UnaryCallable
       listTargetHttpsProxiesCallable;
   private final UnaryCallable<
@@ -241,12 +248,22 @@ public class HttpJsonTargetHttpsProxyStub extends TargetHttpsProxyStub {
       listTargetHttpsProxiesPagedCallable;
   private final UnaryCallable
       setQuicOverrideTargetHttpsProxyCallable;
+  private final OperationCallable<
+          SetQuicOverrideTargetHttpsProxyHttpRequest, EmptyMessage, Operation>
+      setQuicOverrideTargetHttpsProxyOperationCallable;
   private final UnaryCallable
       setSslCertificatesTargetHttpsProxyCallable;
+  private final OperationCallable<
+          SetSslCertificatesTargetHttpsProxyHttpRequest, EmptyMessage, Operation>
+      setSslCertificatesTargetHttpsProxyOperationCallable;
   private final UnaryCallable
       setSslPolicyTargetHttpsProxyCallable;
+  private final OperationCallable
+      setSslPolicyTargetHttpsProxyOperationCallable;
   private final UnaryCallable
       setUrlMapTargetHttpsProxyCallable;
+  private final OperationCallable
+      setUrlMapTargetHttpsProxyOperationCallable;
 
   private final HttpJsonStubCallableFactory callableFactory;
 
@@ -288,6 +305,7 @@ protected HttpJsonTargetHttpsProxyStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonGlobalOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         deleteTargetHttpsProxyTransportSettings =
@@ -337,6 +355,12 @@ protected HttpJsonTargetHttpsProxyStub(
             deleteTargetHttpsProxyTransportSettings,
             settings.deleteTargetHttpsProxySettings(),
             clientContext);
+    this.deleteTargetHttpsProxyOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteTargetHttpsProxyTransportSettings,
+            settings.deleteTargetHttpsProxyOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getTargetHttpsProxyCallable =
         callableFactory.createUnaryCallable(
             getTargetHttpsProxyTransportSettings,
@@ -347,6 +371,12 @@ protected HttpJsonTargetHttpsProxyStub(
             insertTargetHttpsProxyTransportSettings,
             settings.insertTargetHttpsProxySettings(),
             clientContext);
+    this.insertTargetHttpsProxyOperationCallable =
+        callableFactory.createOperationCallable(
+            insertTargetHttpsProxyTransportSettings,
+            settings.insertTargetHttpsProxyOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listTargetHttpsProxiesCallable =
         callableFactory.createUnaryCallable(
             listTargetHttpsProxiesTransportSettings,
@@ -362,25 +392,60 @@ protected HttpJsonTargetHttpsProxyStub(
             setQuicOverrideTargetHttpsProxyTransportSettings,
             settings.setQuicOverrideTargetHttpsProxySettings(),
             clientContext);
+    this.setQuicOverrideTargetHttpsProxyOperationCallable =
+        callableFactory.createOperationCallable(
+            setQuicOverrideTargetHttpsProxyTransportSettings,
+            settings.setQuicOverrideTargetHttpsProxyOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setSslCertificatesTargetHttpsProxyCallable =
         callableFactory.createUnaryCallable(
             setSslCertificatesTargetHttpsProxyTransportSettings,
             settings.setSslCertificatesTargetHttpsProxySettings(),
             clientContext);
+    this.setSslCertificatesTargetHttpsProxyOperationCallable =
+        callableFactory.createOperationCallable(
+            setSslCertificatesTargetHttpsProxyTransportSettings,
+            settings.setSslCertificatesTargetHttpsProxyOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setSslPolicyTargetHttpsProxyCallable =
         callableFactory.createUnaryCallable(
             setSslPolicyTargetHttpsProxyTransportSettings,
             settings.setSslPolicyTargetHttpsProxySettings(),
             clientContext);
+    this.setSslPolicyTargetHttpsProxyOperationCallable =
+        callableFactory.createOperationCallable(
+            setSslPolicyTargetHttpsProxyTransportSettings,
+            settings.setSslPolicyTargetHttpsProxyOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setUrlMapTargetHttpsProxyCallable =
         callableFactory.createUnaryCallable(
             setUrlMapTargetHttpsProxyTransportSettings,
             settings.setUrlMapTargetHttpsProxySettings(),
             clientContext);
+    this.setUrlMapTargetHttpsProxyOperationCallable =
+        callableFactory.createOperationCallable(
+            setUrlMapTargetHttpsProxyTransportSettings,
+            settings.setUrlMapTargetHttpsProxyOperationSettings(),
+            clientContext,
+            this.operationsStub);
 
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonGlobalOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteTargetHttpsProxyOperationCallable() {
+    return deleteTargetHttpsProxyOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       deleteTargetHttpsProxyCallable() {
@@ -393,6 +458,12 @@ protected HttpJsonTargetHttpsProxyStub(
     return getTargetHttpsProxyCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertTargetHttpsProxyOperationCallable() {
+    return insertTargetHttpsProxyOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       insertTargetHttpsProxyCallable() {
@@ -411,24 +482,48 @@ protected HttpJsonTargetHttpsProxyStub(
     return listTargetHttpsProxiesCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setQuicOverrideTargetHttpsProxyOperationCallable() {
+    return setQuicOverrideTargetHttpsProxyOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setQuicOverrideTargetHttpsProxyCallable() {
     return setQuicOverrideTargetHttpsProxyCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setSslCertificatesTargetHttpsProxyOperationCallable() {
+    return setSslCertificatesTargetHttpsProxyOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setSslCertificatesTargetHttpsProxyCallable() {
     return setSslCertificatesTargetHttpsProxyCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setSslPolicyTargetHttpsProxyOperationCallable() {
+    return setSslPolicyTargetHttpsProxyOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setSslPolicyTargetHttpsProxyCallable() {
     return setSslPolicyTargetHttpsProxyCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setUrlMapTargetHttpsProxyOperationCallable() {
+    return setUrlMapTargetHttpsProxyOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setUrlMapTargetHttpsProxyCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetInstanceCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetInstanceCallableFactory.java
index f7edec6f9894..3ac3eb2044f7 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetInstanceCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetInstanceCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonTargetInstanceCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonTargetInstanceCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          ZoneOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetInstanceStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetInstanceStub.java
index 016b8839ef02..04c5f2041f4c 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetInstanceStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetInstanceStub.java
@@ -26,9 +26,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.AggregatedListTargetInstancesHttpRequest;
@@ -164,6 +166,7 @@ public class HttpJsonTargetInstanceStub extends TargetInstanceStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonZoneOperationStub operationsStub;
 
   private final UnaryCallable<
           AggregatedListTargetInstancesHttpRequest, TargetInstanceAggregatedList>
@@ -173,10 +176,14 @@ public class HttpJsonTargetInstanceStub extends TargetInstanceStub {
       aggregatedListTargetInstancesPagedCallable;
   private final UnaryCallable
       deleteTargetInstanceCallable;
+  private final OperationCallable
+      deleteTargetInstanceOperationCallable;
   private final UnaryCallable
       getTargetInstanceCallable;
   private final UnaryCallable
       insertTargetInstanceCallable;
+  private final OperationCallable
+      insertTargetInstanceOperationCallable;
   private final UnaryCallable
       listTargetInstancesCallable;
   private final UnaryCallable
@@ -222,6 +229,7 @@ protected HttpJsonTargetInstanceStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonZoneOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         aggregatedListTargetInstancesTransportSettings =
@@ -266,6 +274,12 @@ protected HttpJsonTargetInstanceStub(
             deleteTargetInstanceTransportSettings,
             settings.deleteTargetInstanceSettings(),
             clientContext);
+    this.deleteTargetInstanceOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteTargetInstanceTransportSettings,
+            settings.deleteTargetInstanceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getTargetInstanceCallable =
         callableFactory.createUnaryCallable(
             getTargetInstanceTransportSettings,
@@ -276,6 +290,12 @@ protected HttpJsonTargetInstanceStub(
             insertTargetInstanceTransportSettings,
             settings.insertTargetInstanceSettings(),
             clientContext);
+    this.insertTargetInstanceOperationCallable =
+        callableFactory.createOperationCallable(
+            insertTargetInstanceTransportSettings,
+            settings.insertTargetInstanceOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listTargetInstancesCallable =
         callableFactory.createUnaryCallable(
             listTargetInstancesTransportSettings,
@@ -290,6 +310,11 @@ protected HttpJsonTargetInstanceStub(
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonZoneOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
   @BetaApi
   public UnaryCallable<
           AggregatedListTargetInstancesHttpRequest, AggregatedListTargetInstancesPagedResponse>
@@ -303,6 +328,12 @@ protected HttpJsonTargetInstanceStub(
     return aggregatedListTargetInstancesCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteTargetInstanceOperationCallable() {
+    return deleteTargetInstanceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteTargetInstanceCallable() {
     return deleteTargetInstanceCallable;
@@ -313,6 +344,12 @@ public UnaryCallable getTargetInst
     return getTargetInstanceCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertTargetInstanceOperationCallable() {
+    return insertTargetInstanceOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertTargetInstanceCallable() {
     return insertTargetInstanceCallable;
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetPoolCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetPoolCallableFactory.java
index 5b81d1ea2886..0d779290e00a 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetPoolCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetPoolCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonTargetPoolCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonTargetPoolCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          RegionOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetPoolStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetPoolStub.java
index 0ff9945df4eb..6afcf19f8694 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetPoolStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetPoolStub.java
@@ -26,9 +26,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.AddHealthCheckTargetPoolHttpRequest;
@@ -297,30 +299,45 @@ public class HttpJsonTargetPoolStub extends TargetPoolStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonRegionOperationStub operationsStub;
 
   private final UnaryCallable
       addHealthCheckTargetPoolCallable;
+  private final OperationCallable
+      addHealthCheckTargetPoolOperationCallable;
   private final UnaryCallable
       addInstanceTargetPoolCallable;
+  private final OperationCallable
+      addInstanceTargetPoolOperationCallable;
   private final UnaryCallable
       aggregatedListTargetPoolsCallable;
   private final UnaryCallable<
           AggregatedListTargetPoolsHttpRequest, AggregatedListTargetPoolsPagedResponse>
       aggregatedListTargetPoolsPagedCallable;
   private final UnaryCallable deleteTargetPoolCallable;
+  private final OperationCallable
+      deleteTargetPoolOperationCallable;
   private final UnaryCallable getTargetPoolCallable;
   private final UnaryCallable
       getHealthTargetPoolCallable;
   private final UnaryCallable insertTargetPoolCallable;
+  private final OperationCallable
+      insertTargetPoolOperationCallable;
   private final UnaryCallable listTargetPoolsCallable;
   private final UnaryCallable
       listTargetPoolsPagedCallable;
   private final UnaryCallable
       removeHealthCheckTargetPoolCallable;
+  private final OperationCallable
+      removeHealthCheckTargetPoolOperationCallable;
   private final UnaryCallable
       removeInstanceTargetPoolCallable;
+  private final OperationCallable
+      removeInstanceTargetPoolOperationCallable;
   private final UnaryCallable
       setBackupTargetPoolCallable;
+  private final OperationCallable
+      setBackupTargetPoolOperationCallable;
 
   private final HttpJsonStubCallableFactory callableFactory;
 
@@ -361,6 +378,7 @@ protected HttpJsonTargetPoolStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonRegionOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         addHealthCheckTargetPoolTransportSettings =
@@ -422,11 +440,23 @@ protected HttpJsonTargetPoolStub(
             addHealthCheckTargetPoolTransportSettings,
             settings.addHealthCheckTargetPoolSettings(),
             clientContext);
+    this.addHealthCheckTargetPoolOperationCallable =
+        callableFactory.createOperationCallable(
+            addHealthCheckTargetPoolTransportSettings,
+            settings.addHealthCheckTargetPoolOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.addInstanceTargetPoolCallable =
         callableFactory.createUnaryCallable(
             addInstanceTargetPoolTransportSettings,
             settings.addInstanceTargetPoolSettings(),
             clientContext);
+    this.addInstanceTargetPoolOperationCallable =
+        callableFactory.createOperationCallable(
+            addInstanceTargetPoolTransportSettings,
+            settings.addInstanceTargetPoolOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.aggregatedListTargetPoolsCallable =
         callableFactory.createUnaryCallable(
             aggregatedListTargetPoolsTransportSettings,
@@ -440,6 +470,12 @@ protected HttpJsonTargetPoolStub(
     this.deleteTargetPoolCallable =
         callableFactory.createUnaryCallable(
             deleteTargetPoolTransportSettings, settings.deleteTargetPoolSettings(), clientContext);
+    this.deleteTargetPoolOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteTargetPoolTransportSettings,
+            settings.deleteTargetPoolOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getTargetPoolCallable =
         callableFactory.createUnaryCallable(
             getTargetPoolTransportSettings, settings.getTargetPoolSettings(), clientContext);
@@ -451,6 +487,12 @@ protected HttpJsonTargetPoolStub(
     this.insertTargetPoolCallable =
         callableFactory.createUnaryCallable(
             insertTargetPoolTransportSettings, settings.insertTargetPoolSettings(), clientContext);
+    this.insertTargetPoolOperationCallable =
+        callableFactory.createOperationCallable(
+            insertTargetPoolTransportSettings,
+            settings.insertTargetPoolOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listTargetPoolsCallable =
         callableFactory.createUnaryCallable(
             listTargetPoolsTransportSettings, settings.listTargetPoolsSettings(), clientContext);
@@ -462,26 +504,61 @@ protected HttpJsonTargetPoolStub(
             removeHealthCheckTargetPoolTransportSettings,
             settings.removeHealthCheckTargetPoolSettings(),
             clientContext);
+    this.removeHealthCheckTargetPoolOperationCallable =
+        callableFactory.createOperationCallable(
+            removeHealthCheckTargetPoolTransportSettings,
+            settings.removeHealthCheckTargetPoolOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.removeInstanceTargetPoolCallable =
         callableFactory.createUnaryCallable(
             removeInstanceTargetPoolTransportSettings,
             settings.removeInstanceTargetPoolSettings(),
             clientContext);
+    this.removeInstanceTargetPoolOperationCallable =
+        callableFactory.createOperationCallable(
+            removeInstanceTargetPoolTransportSettings,
+            settings.removeInstanceTargetPoolOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setBackupTargetPoolCallable =
         callableFactory.createUnaryCallable(
             setBackupTargetPoolTransportSettings,
             settings.setBackupTargetPoolSettings(),
             clientContext);
+    this.setBackupTargetPoolOperationCallable =
+        callableFactory.createOperationCallable(
+            setBackupTargetPoolTransportSettings,
+            settings.setBackupTargetPoolOperationSettings(),
+            clientContext,
+            this.operationsStub);
 
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonRegionOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      addHealthCheckTargetPoolOperationCallable() {
+    return addHealthCheckTargetPoolOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       addHealthCheckTargetPoolCallable() {
     return addHealthCheckTargetPoolCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      addInstanceTargetPoolOperationCallable() {
+    return addInstanceTargetPoolOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       addInstanceTargetPoolCallable() {
@@ -500,6 +577,12 @@ protected HttpJsonTargetPoolStub(
     return aggregatedListTargetPoolsCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteTargetPoolOperationCallable() {
+    return deleteTargetPoolOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteTargetPoolCallable() {
     return deleteTargetPoolCallable;
@@ -516,6 +599,12 @@ public UnaryCallable getTargetPoolCallable
     return getHealthTargetPoolCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertTargetPoolOperationCallable() {
+    return insertTargetPoolOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertTargetPoolCallable() {
     return insertTargetPoolCallable;
@@ -532,18 +621,36 @@ public UnaryCallable listTargetPools
     return listTargetPoolsCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      removeHealthCheckTargetPoolOperationCallable() {
+    return removeHealthCheckTargetPoolOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       removeHealthCheckTargetPoolCallable() {
     return removeHealthCheckTargetPoolCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      removeInstanceTargetPoolOperationCallable() {
+    return removeInstanceTargetPoolOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       removeInstanceTargetPoolCallable() {
     return removeInstanceTargetPoolCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setBackupTargetPoolOperationCallable() {
+    return setBackupTargetPoolOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable setBackupTargetPoolCallable() {
     return setBackupTargetPoolCallable;
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetSslProxyCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetSslProxyCallableFactory.java
index e666655bc1c2..5578ef007f99 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetSslProxyCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetSslProxyCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonTargetSslProxyCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonTargetSslProxyCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          GlobalOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetSslProxyStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetSslProxyStub.java
index 12e1ef4be84c..3bd0362b4b30 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetSslProxyStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetSslProxyStub.java
@@ -25,9 +25,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.DeleteTargetSslProxyHttpRequest;
@@ -224,25 +226,40 @@ public class HttpJsonTargetSslProxyStub extends TargetSslProxyStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonGlobalOperationStub operationsStub;
 
   private final UnaryCallable
       deleteTargetSslProxyCallable;
+  private final OperationCallable
+      deleteTargetSslProxyOperationCallable;
   private final UnaryCallable
       getTargetSslProxyCallable;
   private final UnaryCallable
       insertTargetSslProxyCallable;
+  private final OperationCallable
+      insertTargetSslProxyOperationCallable;
   private final UnaryCallable
       listTargetSslProxiesCallable;
   private final UnaryCallable
       listTargetSslProxiesPagedCallable;
   private final UnaryCallable
       setBackendServiceTargetSslProxyCallable;
+  private final OperationCallable<
+          SetBackendServiceTargetSslProxyHttpRequest, EmptyMessage, Operation>
+      setBackendServiceTargetSslProxyOperationCallable;
   private final UnaryCallable
       setProxyHeaderTargetSslProxyCallable;
+  private final OperationCallable
+      setProxyHeaderTargetSslProxyOperationCallable;
   private final UnaryCallable
       setSslCertificatesTargetSslProxyCallable;
+  private final OperationCallable<
+          SetSslCertificatesTargetSslProxyHttpRequest, EmptyMessage, Operation>
+      setSslCertificatesTargetSslProxyOperationCallable;
   private final UnaryCallable
       setSslPolicyTargetSslProxyCallable;
+  private final OperationCallable
+      setSslPolicyTargetSslProxyOperationCallable;
 
   private final HttpJsonStubCallableFactory callableFactory;
 
@@ -284,6 +301,7 @@ protected HttpJsonTargetSslProxyStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonGlobalOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         deleteTargetSslProxyTransportSettings =
@@ -332,6 +350,12 @@ protected HttpJsonTargetSslProxyStub(
             deleteTargetSslProxyTransportSettings,
             settings.deleteTargetSslProxySettings(),
             clientContext);
+    this.deleteTargetSslProxyOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteTargetSslProxyTransportSettings,
+            settings.deleteTargetSslProxyOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getTargetSslProxyCallable =
         callableFactory.createUnaryCallable(
             getTargetSslProxyTransportSettings,
@@ -342,6 +366,12 @@ protected HttpJsonTargetSslProxyStub(
             insertTargetSslProxyTransportSettings,
             settings.insertTargetSslProxySettings(),
             clientContext);
+    this.insertTargetSslProxyOperationCallable =
+        callableFactory.createOperationCallable(
+            insertTargetSslProxyTransportSettings,
+            settings.insertTargetSslProxyOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listTargetSslProxiesCallable =
         callableFactory.createUnaryCallable(
             listTargetSslProxiesTransportSettings,
@@ -357,25 +387,60 @@ protected HttpJsonTargetSslProxyStub(
             setBackendServiceTargetSslProxyTransportSettings,
             settings.setBackendServiceTargetSslProxySettings(),
             clientContext);
+    this.setBackendServiceTargetSslProxyOperationCallable =
+        callableFactory.createOperationCallable(
+            setBackendServiceTargetSslProxyTransportSettings,
+            settings.setBackendServiceTargetSslProxyOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setProxyHeaderTargetSslProxyCallable =
         callableFactory.createUnaryCallable(
             setProxyHeaderTargetSslProxyTransportSettings,
             settings.setProxyHeaderTargetSslProxySettings(),
             clientContext);
+    this.setProxyHeaderTargetSslProxyOperationCallable =
+        callableFactory.createOperationCallable(
+            setProxyHeaderTargetSslProxyTransportSettings,
+            settings.setProxyHeaderTargetSslProxyOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setSslCertificatesTargetSslProxyCallable =
         callableFactory.createUnaryCallable(
             setSslCertificatesTargetSslProxyTransportSettings,
             settings.setSslCertificatesTargetSslProxySettings(),
             clientContext);
+    this.setSslCertificatesTargetSslProxyOperationCallable =
+        callableFactory.createOperationCallable(
+            setSslCertificatesTargetSslProxyTransportSettings,
+            settings.setSslCertificatesTargetSslProxyOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setSslPolicyTargetSslProxyCallable =
         callableFactory.createUnaryCallable(
             setSslPolicyTargetSslProxyTransportSettings,
             settings.setSslPolicyTargetSslProxySettings(),
             clientContext);
+    this.setSslPolicyTargetSslProxyOperationCallable =
+        callableFactory.createOperationCallable(
+            setSslPolicyTargetSslProxyTransportSettings,
+            settings.setSslPolicyTargetSslProxyOperationSettings(),
+            clientContext,
+            this.operationsStub);
 
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonGlobalOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteTargetSslProxyOperationCallable() {
+    return deleteTargetSslProxyOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteTargetSslProxyCallable() {
     return deleteTargetSslProxyCallable;
@@ -386,6 +451,12 @@ public UnaryCallable getTargetSslP
     return getTargetSslProxyCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertTargetSslProxyOperationCallable() {
+    return insertTargetSslProxyOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertTargetSslProxyCallable() {
     return insertTargetSslProxyCallable;
@@ -403,24 +474,48 @@ public UnaryCallable insertTargetSsl
     return listTargetSslProxiesCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setBackendServiceTargetSslProxyOperationCallable() {
+    return setBackendServiceTargetSslProxyOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setBackendServiceTargetSslProxyCallable() {
     return setBackendServiceTargetSslProxyCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setProxyHeaderTargetSslProxyOperationCallable() {
+    return setProxyHeaderTargetSslProxyOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setProxyHeaderTargetSslProxyCallable() {
     return setProxyHeaderTargetSslProxyCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setSslCertificatesTargetSslProxyOperationCallable() {
+    return setSslCertificatesTargetSslProxyOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setSslCertificatesTargetSslProxyCallable() {
     return setSslCertificatesTargetSslProxyCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setSslPolicyTargetSslProxyOperationCallable() {
+    return setSslPolicyTargetSslProxyOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setSslPolicyTargetSslProxyCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetTcpProxyCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetTcpProxyCallableFactory.java
index f355beddcac3..4acf0ac32066 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetTcpProxyCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetTcpProxyCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonTargetTcpProxyCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonTargetTcpProxyCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          GlobalOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetTcpProxyStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetTcpProxyStub.java
index 5fe962bde06f..0eb0fd2493af 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetTcpProxyStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetTcpProxyStub.java
@@ -25,9 +25,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.DeleteTargetTcpProxyHttpRequest;
@@ -179,21 +181,31 @@ public class HttpJsonTargetTcpProxyStub extends TargetTcpProxyStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonGlobalOperationStub operationsStub;
 
   private final UnaryCallable
       deleteTargetTcpProxyCallable;
+  private final OperationCallable
+      deleteTargetTcpProxyOperationCallable;
   private final UnaryCallable
       getTargetTcpProxyCallable;
   private final UnaryCallable
       insertTargetTcpProxyCallable;
+  private final OperationCallable
+      insertTargetTcpProxyOperationCallable;
   private final UnaryCallable
       listTargetTcpProxiesCallable;
   private final UnaryCallable
       listTargetTcpProxiesPagedCallable;
   private final UnaryCallable
       setBackendServiceTargetTcpProxyCallable;
+  private final OperationCallable<
+          SetBackendServiceTargetTcpProxyHttpRequest, EmptyMessage, Operation>
+      setBackendServiceTargetTcpProxyOperationCallable;
   private final UnaryCallable
       setProxyHeaderTargetTcpProxyCallable;
+  private final OperationCallable
+      setProxyHeaderTargetTcpProxyOperationCallable;
 
   private final HttpJsonStubCallableFactory callableFactory;
 
@@ -235,6 +247,7 @@ protected HttpJsonTargetTcpProxyStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonGlobalOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         deleteTargetTcpProxyTransportSettings =
@@ -272,6 +285,12 @@ protected HttpJsonTargetTcpProxyStub(
             deleteTargetTcpProxyTransportSettings,
             settings.deleteTargetTcpProxySettings(),
             clientContext);
+    this.deleteTargetTcpProxyOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteTargetTcpProxyTransportSettings,
+            settings.deleteTargetTcpProxyOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getTargetTcpProxyCallable =
         callableFactory.createUnaryCallable(
             getTargetTcpProxyTransportSettings,
@@ -282,6 +301,12 @@ protected HttpJsonTargetTcpProxyStub(
             insertTargetTcpProxyTransportSettings,
             settings.insertTargetTcpProxySettings(),
             clientContext);
+    this.insertTargetTcpProxyOperationCallable =
+        callableFactory.createOperationCallable(
+            insertTargetTcpProxyTransportSettings,
+            settings.insertTargetTcpProxyOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listTargetTcpProxiesCallable =
         callableFactory.createUnaryCallable(
             listTargetTcpProxiesTransportSettings,
@@ -297,15 +322,38 @@ protected HttpJsonTargetTcpProxyStub(
             setBackendServiceTargetTcpProxyTransportSettings,
             settings.setBackendServiceTargetTcpProxySettings(),
             clientContext);
+    this.setBackendServiceTargetTcpProxyOperationCallable =
+        callableFactory.createOperationCallable(
+            setBackendServiceTargetTcpProxyTransportSettings,
+            settings.setBackendServiceTargetTcpProxyOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.setProxyHeaderTargetTcpProxyCallable =
         callableFactory.createUnaryCallable(
             setProxyHeaderTargetTcpProxyTransportSettings,
             settings.setProxyHeaderTargetTcpProxySettings(),
             clientContext);
+    this.setProxyHeaderTargetTcpProxyOperationCallable =
+        callableFactory.createOperationCallable(
+            setProxyHeaderTargetTcpProxyTransportSettings,
+            settings.setProxyHeaderTargetTcpProxyOperationSettings(),
+            clientContext,
+            this.operationsStub);
 
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonGlobalOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteTargetTcpProxyOperationCallable() {
+    return deleteTargetTcpProxyOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteTargetTcpProxyCallable() {
     return deleteTargetTcpProxyCallable;
@@ -316,6 +364,12 @@ public UnaryCallable getTargetTcpP
     return getTargetTcpProxyCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertTargetTcpProxyOperationCallable() {
+    return insertTargetTcpProxyOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertTargetTcpProxyCallable() {
     return insertTargetTcpProxyCallable;
@@ -333,12 +387,24 @@ public UnaryCallable insertTargetTcp
     return listTargetTcpProxiesCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setBackendServiceTargetTcpProxyOperationCallable() {
+    return setBackendServiceTargetTcpProxyOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setBackendServiceTargetTcpProxyCallable() {
     return setBackendServiceTargetTcpProxyCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setProxyHeaderTargetTcpProxyOperationCallable() {
+    return setProxyHeaderTargetTcpProxyOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       setProxyHeaderTargetTcpProxyCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetVpnGatewayCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetVpnGatewayCallableFactory.java
index 46b4a202bd21..e82cfed64995 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetVpnGatewayCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetVpnGatewayCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonTargetVpnGatewayCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonTargetVpnGatewayCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          RegionOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetVpnGatewayStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetVpnGatewayStub.java
index acad41daa6da..1de2304349d5 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetVpnGatewayStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonTargetVpnGatewayStub.java
@@ -26,9 +26,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.AggregatedListTargetVpnGatewaysHttpRequest;
@@ -166,6 +168,7 @@ public class HttpJsonTargetVpnGatewayStub extends TargetVpnGatewayStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonRegionOperationStub operationsStub;
 
   private final UnaryCallable<
           AggregatedListTargetVpnGatewaysHttpRequest, TargetVpnGatewayAggregatedList>
@@ -175,10 +178,14 @@ public class HttpJsonTargetVpnGatewayStub extends TargetVpnGatewayStub {
       aggregatedListTargetVpnGatewaysPagedCallable;
   private final UnaryCallable
       deleteTargetVpnGatewayCallable;
+  private final OperationCallable
+      deleteTargetVpnGatewayOperationCallable;
   private final UnaryCallable
       getTargetVpnGatewayCallable;
   private final UnaryCallable
       insertTargetVpnGatewayCallable;
+  private final OperationCallable
+      insertTargetVpnGatewayOperationCallable;
   private final UnaryCallable
       listTargetVpnGatewaysCallable;
   private final UnaryCallable
@@ -224,6 +231,7 @@ protected HttpJsonTargetVpnGatewayStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonRegionOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         aggregatedListTargetVpnGatewaysTransportSettings =
@@ -269,6 +277,12 @@ protected HttpJsonTargetVpnGatewayStub(
             deleteTargetVpnGatewayTransportSettings,
             settings.deleteTargetVpnGatewaySettings(),
             clientContext);
+    this.deleteTargetVpnGatewayOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteTargetVpnGatewayTransportSettings,
+            settings.deleteTargetVpnGatewayOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getTargetVpnGatewayCallable =
         callableFactory.createUnaryCallable(
             getTargetVpnGatewayTransportSettings,
@@ -279,6 +293,12 @@ protected HttpJsonTargetVpnGatewayStub(
             insertTargetVpnGatewayTransportSettings,
             settings.insertTargetVpnGatewaySettings(),
             clientContext);
+    this.insertTargetVpnGatewayOperationCallable =
+        callableFactory.createOperationCallable(
+            insertTargetVpnGatewayTransportSettings,
+            settings.insertTargetVpnGatewayOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listTargetVpnGatewaysCallable =
         callableFactory.createUnaryCallable(
             listTargetVpnGatewaysTransportSettings,
@@ -293,6 +313,11 @@ protected HttpJsonTargetVpnGatewayStub(
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonRegionOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
   @BetaApi
   public UnaryCallable<
           AggregatedListTargetVpnGatewaysHttpRequest, AggregatedListTargetVpnGatewaysPagedResponse>
@@ -306,6 +331,12 @@ protected HttpJsonTargetVpnGatewayStub(
     return aggregatedListTargetVpnGatewaysCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteTargetVpnGatewayOperationCallable() {
+    return deleteTargetVpnGatewayOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       deleteTargetVpnGatewayCallable() {
@@ -318,6 +349,12 @@ protected HttpJsonTargetVpnGatewayStub(
     return getTargetVpnGatewayCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertTargetVpnGatewayOperationCallable() {
+    return insertTargetVpnGatewayOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       insertTargetVpnGatewayCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonUrlMapCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonUrlMapCallableFactory.java
index ab9bd4cbe8e9..97d3e6e81735 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonUrlMapCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonUrlMapCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonUrlMapCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonUrlMapCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          GlobalOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonUrlMapStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonUrlMapStub.java
index d5bbf9fa0bfb..2222df806023 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonUrlMapStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonUrlMapStub.java
@@ -25,9 +25,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.DeleteUrlMapHttpRequest;
@@ -213,17 +215,28 @@ public class HttpJsonUrlMapStub extends UrlMapStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonGlobalOperationStub operationsStub;
 
   private final UnaryCallable deleteUrlMapCallable;
+  private final OperationCallable
+      deleteUrlMapOperationCallable;
   private final UnaryCallable getUrlMapCallable;
   private final UnaryCallable insertUrlMapCallable;
+  private final OperationCallable
+      insertUrlMapOperationCallable;
   private final UnaryCallable
       invalidateCacheUrlMapCallable;
+  private final OperationCallable
+      invalidateCacheUrlMapOperationCallable;
   private final UnaryCallable listUrlMapsCallable;
   private final UnaryCallable
       listUrlMapsPagedCallable;
   private final UnaryCallable patchUrlMapCallable;
+  private final OperationCallable
+      patchUrlMapOperationCallable;
   private final UnaryCallable updateUrlMapCallable;
+  private final OperationCallable
+      updateUrlMapOperationCallable;
   private final UnaryCallable
       validateUrlMapCallable;
 
@@ -264,6 +277,7 @@ protected HttpJsonUrlMapStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonGlobalOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings deleteUrlMapTransportSettings =
         HttpJsonCallSettings.newBuilder()
@@ -303,17 +317,35 @@ protected HttpJsonUrlMapStub(
     this.deleteUrlMapCallable =
         callableFactory.createUnaryCallable(
             deleteUrlMapTransportSettings, settings.deleteUrlMapSettings(), clientContext);
+    this.deleteUrlMapOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteUrlMapTransportSettings,
+            settings.deleteUrlMapOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getUrlMapCallable =
         callableFactory.createUnaryCallable(
             getUrlMapTransportSettings, settings.getUrlMapSettings(), clientContext);
     this.insertUrlMapCallable =
         callableFactory.createUnaryCallable(
             insertUrlMapTransportSettings, settings.insertUrlMapSettings(), clientContext);
+    this.insertUrlMapOperationCallable =
+        callableFactory.createOperationCallable(
+            insertUrlMapTransportSettings,
+            settings.insertUrlMapOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.invalidateCacheUrlMapCallable =
         callableFactory.createUnaryCallable(
             invalidateCacheUrlMapTransportSettings,
             settings.invalidateCacheUrlMapSettings(),
             clientContext);
+    this.invalidateCacheUrlMapOperationCallable =
+        callableFactory.createOperationCallable(
+            invalidateCacheUrlMapTransportSettings,
+            settings.invalidateCacheUrlMapOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listUrlMapsCallable =
         callableFactory.createUnaryCallable(
             listUrlMapsTransportSettings, settings.listUrlMapsSettings(), clientContext);
@@ -323,9 +355,21 @@ protected HttpJsonUrlMapStub(
     this.patchUrlMapCallable =
         callableFactory.createUnaryCallable(
             patchUrlMapTransportSettings, settings.patchUrlMapSettings(), clientContext);
+    this.patchUrlMapOperationCallable =
+        callableFactory.createOperationCallable(
+            patchUrlMapTransportSettings,
+            settings.patchUrlMapOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.updateUrlMapCallable =
         callableFactory.createUnaryCallable(
             updateUrlMapTransportSettings, settings.updateUrlMapSettings(), clientContext);
+    this.updateUrlMapOperationCallable =
+        callableFactory.createOperationCallable(
+            updateUrlMapTransportSettings,
+            settings.updateUrlMapOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.validateUrlMapCallable =
         callableFactory.createUnaryCallable(
             validateUrlMapTransportSettings, settings.validateUrlMapSettings(), clientContext);
@@ -333,6 +377,17 @@ protected HttpJsonUrlMapStub(
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonGlobalOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteUrlMapOperationCallable() {
+    return deleteUrlMapOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteUrlMapCallable() {
     return deleteUrlMapCallable;
@@ -343,11 +398,23 @@ public UnaryCallable getUrlMapCallable() {
     return getUrlMapCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertUrlMapOperationCallable() {
+    return insertUrlMapOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertUrlMapCallable() {
     return insertUrlMapCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      invalidateCacheUrlMapOperationCallable() {
+    return invalidateCacheUrlMapOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable
       invalidateCacheUrlMapCallable() {
@@ -365,11 +432,23 @@ public UnaryCallable listUrlMapsCallable() {
     return listUrlMapsCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchUrlMapOperationCallable() {
+    return patchUrlMapOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable patchUrlMapCallable() {
     return patchUrlMapCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      updateUrlMapOperationCallable() {
+    return updateUrlMapOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable updateUrlMapCallable() {
     return updateUrlMapCallable;
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonVpnTunnelCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonVpnTunnelCallableFactory.java
index 96616805bbbe..80e40f220d02 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonVpnTunnelCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonVpnTunnelCallableFactory.java
@@ -19,11 +19,19 @@
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
+import com.google.api.gax.longrunning.OperationSnapshot;
 import com.google.api.gax.rpc.BatchingCallSettings;
+import com.google.api.gax.rpc.Callables;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LongRunningClient;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.longrunning.ComputeLongRunningClientFactory;
+import com.google.cloud.compute.v1.longrunning.OperationSnapshotCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +42,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonVpnTunnelCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonVpnTunnelCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +53,29 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          RegionOperationStub operationsStub) {
+    UnaryCallable initialHttpCallable =
+        HttpJsonCallableFactory.createBaseUnaryCallable(
+            httpJsonCallSettings, operationCallSettings.getInitialCallSettings(), clientContext);
+    UnaryCallable initialCallable =
+        new OperationSnapshotCallable<>(initialHttpCallable);
+    LongRunningClient longRunningClient = ComputeLongRunningClientFactory.create(operationsStub);
+    OperationCallable operationCallable =
+        Callables.longRunningOperation(
+            initialCallable, operationCallSettings, clientContext, longRunningClient);
+    return HttpJsonCallableFactory.createOperationCallable(
+        operationCallSettings, clientContext, longRunningClient, initialCallable);
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonVpnTunnelStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonVpnTunnelStub.java
index 05812a8a9ff4..d3ddc6757b4b 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonVpnTunnelStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonVpnTunnelStub.java
@@ -26,9 +26,11 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.api.pathtemplate.PathTemplate;
 import com.google.cloud.compute.v1.AggregatedListVpnTunnelsHttpRequest;
@@ -159,6 +161,7 @@ public class HttpJsonVpnTunnelStub extends VpnTunnelStub {
               .build();
 
   private final BackgroundResource backgroundResources;
+  private final HttpJsonRegionOperationStub operationsStub;
 
   private final UnaryCallable
       aggregatedListVpnTunnelsCallable;
@@ -166,8 +169,12 @@ public class HttpJsonVpnTunnelStub extends VpnTunnelStub {
           AggregatedListVpnTunnelsHttpRequest, AggregatedListVpnTunnelsPagedResponse>
       aggregatedListVpnTunnelsPagedCallable;
   private final UnaryCallable deleteVpnTunnelCallable;
+  private final OperationCallable
+      deleteVpnTunnelOperationCallable;
   private final UnaryCallable getVpnTunnelCallable;
   private final UnaryCallable insertVpnTunnelCallable;
+  private final OperationCallable
+      insertVpnTunnelOperationCallable;
   private final UnaryCallable listVpnTunnelsCallable;
   private final UnaryCallable
       listVpnTunnelsPagedCallable;
@@ -210,6 +217,7 @@ protected HttpJsonVpnTunnelStub(
       HttpJsonStubCallableFactory callableFactory)
       throws IOException {
     this.callableFactory = callableFactory;
+    this.operationsStub = HttpJsonRegionOperationStub.create(clientContext, callableFactory);
 
     HttpJsonCallSettings
         aggregatedListVpnTunnelsTransportSettings =
@@ -247,12 +255,24 @@ protected HttpJsonVpnTunnelStub(
     this.deleteVpnTunnelCallable =
         callableFactory.createUnaryCallable(
             deleteVpnTunnelTransportSettings, settings.deleteVpnTunnelSettings(), clientContext);
+    this.deleteVpnTunnelOperationCallable =
+        callableFactory.createOperationCallable(
+            deleteVpnTunnelTransportSettings,
+            settings.deleteVpnTunnelOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.getVpnTunnelCallable =
         callableFactory.createUnaryCallable(
             getVpnTunnelTransportSettings, settings.getVpnTunnelSettings(), clientContext);
     this.insertVpnTunnelCallable =
         callableFactory.createUnaryCallable(
             insertVpnTunnelTransportSettings, settings.insertVpnTunnelSettings(), clientContext);
+    this.insertVpnTunnelOperationCallable =
+        callableFactory.createOperationCallable(
+            insertVpnTunnelTransportSettings,
+            settings.insertVpnTunnelOperationSettings(),
+            clientContext,
+            this.operationsStub);
     this.listVpnTunnelsCallable =
         callableFactory.createUnaryCallable(
             listVpnTunnelsTransportSettings, settings.listVpnTunnelsSettings(), clientContext);
@@ -263,6 +283,11 @@ protected HttpJsonVpnTunnelStub(
     backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources());
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public HttpJsonRegionOperationStub getOperationsStub() {
+    return operationsStub;
+  }
+
   @BetaApi
   public UnaryCallable
       aggregatedListVpnTunnelsPagedCallable() {
@@ -275,6 +300,12 @@ protected HttpJsonVpnTunnelStub(
     return aggregatedListVpnTunnelsCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteVpnTunnelOperationCallable() {
+    return deleteVpnTunnelOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable deleteVpnTunnelCallable() {
     return deleteVpnTunnelCallable;
@@ -285,6 +316,12 @@ public UnaryCallable getVpnTunnelCallable()
     return getVpnTunnelCallable;
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertVpnTunnelOperationCallable() {
+    return insertVpnTunnelOperationCallable;
+  }
+
   @BetaApi
   public UnaryCallable insertVpnTunnelCallable() {
     return insertVpnTunnelCallable;
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonZoneCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonZoneCallableFactory.java
index c48aee25f81c..1c26e0bff3b5 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonZoneCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonZoneCallableFactory.java
@@ -16,14 +16,18 @@
 package com.google.cloud.compute.v1.stub;
 
 import com.google.api.core.BetaApi;
+import com.google.api.gax.core.BackgroundResource;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.BatchingCallSettings;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +38,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonZoneCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonZoneCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +49,19 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          BackgroundResource operationsStub) {
+    return null;
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonZoneOperationCallableFactory.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonZoneOperationCallableFactory.java
index 572e3f39edba..67b2a4bed15b 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonZoneOperationCallableFactory.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonZoneOperationCallableFactory.java
@@ -16,14 +16,18 @@
 package com.google.cloud.compute.v1.stub;
 
 import com.google.api.core.BetaApi;
+import com.google.api.gax.core.BackgroundResource;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonCallableFactory;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.BatchingCallSettings;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.UnaryCallSettings;
 import com.google.api.gax.rpc.UnaryCallable;
+import com.google.cloud.compute.v1.Operation;
 import javax.annotation.Generated;
 
 // AUTO-GENERATED DOCUMENTATION AND CLASS
@@ -34,7 +38,8 @@
  */
 @Generated("by gapic-generator")
 @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
-public class HttpJsonZoneOperationCallableFactory implements HttpJsonStubCallableFactory {
+public class HttpJsonZoneOperationCallableFactory
+    implements HttpJsonStubCallableFactory {
   @Override
   public  UnaryCallable createUnaryCallable(
       HttpJsonCallSettings httpJsonCallSettings,
@@ -44,6 +49,19 @@ public  UnaryCallable createUnaryCalla
         httpJsonCallSettings, callSettings, clientContext);
   }
 
+  @BetaApi(
+      "The surface for long-running operations is not stable yet and may change in the future.")
+  @Override
+  public 
+      OperationCallable createOperationCallable(
+          HttpJsonCallSettings
+              httpJsonCallSettings,
+          OperationCallSettings operationCallSettings,
+          ClientContext clientContext,
+          BackgroundResource operationsStub) {
+    return null;
+  }
+
   @Override
   public 
       UnaryCallable createPagedCallable(
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonZoneOperationStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonZoneOperationStub.java
index 755fa09a8df5..4cdb774c0b02 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonZoneOperationStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpJsonZoneOperationStub.java
@@ -25,6 +25,7 @@
 import com.google.api.gax.httpjson.ApiMessageHttpRequestFormatter;
 import com.google.api.gax.httpjson.ApiMessageHttpResponseParser;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.HttpJsonCallSettings;
 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
 import com.google.api.gax.rpc.ClientContext;
@@ -52,9 +53,9 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public class HttpJsonZoneOperationStub extends ZoneOperationStub {
   @InternalApi
-  public static final ApiMethodDescriptor
+  public static final ApiMethodDescriptor
       deleteZoneOperationMethodDescriptor =
-          ApiMethodDescriptor.newBuilder()
+          ApiMethodDescriptor.newBuilder()
               .setFullMethodName("compute.zoneOperations.delete")
               .setHttpMethod(HttpMethods.DELETE)
               .setRequestFormatter(
@@ -109,7 +110,8 @@ public class HttpJsonZoneOperationStub extends ZoneOperationStub {
 
   private final BackgroundResource backgroundResources;
 
-  private final UnaryCallable deleteZoneOperationCallable;
+  private final UnaryCallable
+      deleteZoneOperationCallable;
   private final UnaryCallable getZoneOperationCallable;
   private final UnaryCallable
       listZoneOperationsCallable;
@@ -157,9 +159,9 @@ protected HttpJsonZoneOperationStub(
       throws IOException {
     this.callableFactory = callableFactory;
 
-    HttpJsonCallSettings
+    HttpJsonCallSettings
         deleteZoneOperationTransportSettings =
-            HttpJsonCallSettings.newBuilder()
+            HttpJsonCallSettings.newBuilder()
                 .setMethodDescriptor(deleteZoneOperationMethodDescriptor)
                 .build();
     HttpJsonCallSettings getZoneOperationTransportSettings =
@@ -195,7 +197,7 @@ protected HttpJsonZoneOperationStub(
   }
 
   @BetaApi
-  public UnaryCallable deleteZoneOperationCallable() {
+  public UnaryCallable deleteZoneOperationCallable() {
     return deleteZoneOperationCallable;
   }
 
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpsHealthCheckStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpsHealthCheckStub.java
index c3b6218c1139..ebd685f9485b 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpsHealthCheckStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpsHealthCheckStub.java
@@ -19,6 +19,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.DeleteHttpsHealthCheckHttpRequest;
 import com.google.cloud.compute.v1.GetHttpsHealthCheckHttpRequest;
@@ -41,6 +43,18 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class HttpsHealthCheckStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public GlobalOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteHttpsHealthCheckOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteHttpsHealthCheckOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       deleteHttpsHealthCheckCallable() {
@@ -53,6 +67,13 @@ public abstract class HttpsHealthCheckStub implements BackgroundResource {
     throw new UnsupportedOperationException("Not implemented: getHttpsHealthCheckCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertHttpsHealthCheckOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: insertHttpsHealthCheckOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       insertHttpsHealthCheckCallable() {
@@ -72,12 +93,26 @@ public abstract class HttpsHealthCheckStub implements BackgroundResource {
     throw new UnsupportedOperationException("Not implemented: listHttpsHealthChecksCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchHttpsHealthCheckOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: patchHttpsHealthCheckOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       patchHttpsHealthCheckCallable() {
     throw new UnsupportedOperationException("Not implemented: patchHttpsHealthCheckCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      updateHttpsHealthCheckOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: updateHttpsHealthCheckOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       updateHttpsHealthCheckCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpsHealthCheckStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpsHealthCheckStubSettings.java
index 3dc2a7f4be90..2e78f7cc1d1c 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpsHealthCheckStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/HttpsHealthCheckStubSettings.java
@@ -23,13 +23,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -72,13 +77,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteHttpsHealthCheck to 30 seconds: + * example, to set the total timeout of getHttpsHealthCheck to 30 seconds: * *

  * 
  * HttpsHealthCheckStubSettings.Builder httpsHealthCheckSettingsBuilder =
  *     HttpsHealthCheckStubSettings.newBuilder();
- * httpsHealthCheckSettingsBuilder.deleteHttpsHealthCheckSettings().getRetrySettings().toBuilder()
+ * httpsHealthCheckSettingsBuilder.getHttpsHealthCheckSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * HttpsHealthCheckStubSettings httpsHealthCheckSettings = httpsHealthCheckSettingsBuilder.build();
  * 
@@ -100,10 +105,14 @@ public class HttpsHealthCheckStubSettings extends StubSettings
       deleteHttpsHealthCheckSettings;
+  private final OperationCallSettings
+      deleteHttpsHealthCheckOperationSettings;
   private final UnaryCallSettings
       getHttpsHealthCheckSettings;
   private final UnaryCallSettings
       insertHttpsHealthCheckSettings;
+  private final OperationCallSettings
+      insertHttpsHealthCheckOperationSettings;
   private final PagedCallSettings<
           ListHttpsHealthChecksHttpRequest,
           HttpsHealthCheckList,
@@ -111,8 +120,12 @@ public class HttpsHealthCheckStubSettings extends StubSettings
       patchHttpsHealthCheckSettings;
+  private final OperationCallSettings
+      patchHttpsHealthCheckOperationSettings;
   private final UnaryCallSettings
       updateHttpsHealthCheckSettings;
+  private final OperationCallSettings
+      updateHttpsHealthCheckOperationSettings;
 
   /** Returns the object with the settings used for calls to deleteHttpsHealthCheck. */
   public UnaryCallSettings
@@ -120,6 +133,13 @@ public class HttpsHealthCheckStubSettings extends StubSettings
+      deleteHttpsHealthCheckOperationSettings() {
+    return deleteHttpsHealthCheckOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getHttpsHealthCheck. */
   public UnaryCallSettings
       getHttpsHealthCheckSettings() {
@@ -132,6 +152,13 @@ public class HttpsHealthCheckStubSettings extends StubSettings
+      insertHttpsHealthCheckOperationSettings() {
+    return insertHttpsHealthCheckOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listHttpsHealthChecks. */
   public PagedCallSettings<
           ListHttpsHealthChecksHttpRequest,
@@ -147,12 +174,26 @@ public class HttpsHealthCheckStubSettings extends StubSettings
+      patchHttpsHealthCheckOperationSettings() {
+    return patchHttpsHealthCheckOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to updateHttpsHealthCheck. */
   public UnaryCallSettings
       updateHttpsHealthCheckSettings() {
     return updateHttpsHealthCheckSettings;
   }
 
+  /** Returns the object with the settings used for calls to updateHttpsHealthCheck. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      updateHttpsHealthCheckOperationSettings() {
+    return updateHttpsHealthCheckOperationSettings;
+  }
+
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   public HttpsHealthCheckStub createStub() throws IOException {
     if (getTransportChannelProvider()
@@ -229,11 +270,19 @@ protected HttpsHealthCheckStubSettings(Builder settingsBuilder) throws IOExcepti
     super(settingsBuilder);
 
     deleteHttpsHealthCheckSettings = settingsBuilder.deleteHttpsHealthCheckSettings().build();
+    deleteHttpsHealthCheckOperationSettings =
+        settingsBuilder.deleteHttpsHealthCheckOperationSettings().build();
     getHttpsHealthCheckSettings = settingsBuilder.getHttpsHealthCheckSettings().build();
     insertHttpsHealthCheckSettings = settingsBuilder.insertHttpsHealthCheckSettings().build();
+    insertHttpsHealthCheckOperationSettings =
+        settingsBuilder.insertHttpsHealthCheckOperationSettings().build();
     listHttpsHealthChecksSettings = settingsBuilder.listHttpsHealthChecksSettings().build();
     patchHttpsHealthCheckSettings = settingsBuilder.patchHttpsHealthCheckSettings().build();
+    patchHttpsHealthCheckOperationSettings =
+        settingsBuilder.patchHttpsHealthCheckOperationSettings().build();
     updateHttpsHealthCheckSettings = settingsBuilder.updateHttpsHealthCheckSettings().build();
+    updateHttpsHealthCheckOperationSettings =
+        settingsBuilder.updateHttpsHealthCheckOperationSettings().build();
   }
 
   private static final PagedListDescriptor<
@@ -309,10 +358,16 @@ public static class Builder extends StubSettings.Builder
         deleteHttpsHealthCheckSettings;
+    private final OperationCallSettings.Builder<
+            DeleteHttpsHealthCheckHttpRequest, EmptyMessage, Operation>
+        deleteHttpsHealthCheckOperationSettings;
     private final UnaryCallSettings.Builder
         getHttpsHealthCheckSettings;
     private final UnaryCallSettings.Builder
         insertHttpsHealthCheckSettings;
+    private final OperationCallSettings.Builder<
+            InsertHttpsHealthCheckHttpRequest, EmptyMessage, Operation>
+        insertHttpsHealthCheckOperationSettings;
     private final PagedCallSettings.Builder<
             ListHttpsHealthChecksHttpRequest,
             HttpsHealthCheckList,
@@ -320,8 +375,14 @@ public static class Builder extends StubSettings.Builder
         patchHttpsHealthCheckSettings;
+    private final OperationCallSettings.Builder<
+            PatchHttpsHealthCheckHttpRequest, EmptyMessage, Operation>
+        patchHttpsHealthCheckOperationSettings;
     private final UnaryCallSettings.Builder
         updateHttpsHealthCheckSettings;
+    private final OperationCallSettings.Builder<
+            UpdateHttpsHealthCheckHttpRequest, EmptyMessage, Operation>
+        updateHttpsHealthCheckOperationSettings;
 
     private static final ImmutableMap>
         RETRYABLE_CODE_DEFINITIONS;
@@ -366,17 +427,25 @@ protected Builder(ClientContext clientContext) {
 
       deleteHttpsHealthCheckSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteHttpsHealthCheckOperationSettings = OperationCallSettings.newBuilder();
+
       getHttpsHealthCheckSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertHttpsHealthCheckSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertHttpsHealthCheckOperationSettings = OperationCallSettings.newBuilder();
+
       listHttpsHealthChecksSettings =
           PagedCallSettings.newBuilder(LIST_HTTPS_HEALTH_CHECKS_PAGE_STR_FACT);
 
       patchHttpsHealthCheckSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      patchHttpsHealthCheckOperationSettings = OperationCallSettings.newBuilder();
+
       updateHttpsHealthCheckSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      updateHttpsHealthCheckOperationSettings = OperationCallSettings.newBuilder();
+
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
               deleteHttpsHealthCheckSettings,
@@ -429,6 +498,94 @@ private static Builder initDefaults(Builder builder) {
           .updateHttpsHealthCheckSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteHttpsHealthCheckOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertHttpsHealthCheckOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .patchHttpsHealthCheckOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .updateHttpsHealthCheckOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -437,11 +594,19 @@ protected Builder(HttpsHealthCheckStubSettings settings) {
       super(settings);
 
       deleteHttpsHealthCheckSettings = settings.deleteHttpsHealthCheckSettings.toBuilder();
+      deleteHttpsHealthCheckOperationSettings =
+          settings.deleteHttpsHealthCheckOperationSettings.toBuilder();
       getHttpsHealthCheckSettings = settings.getHttpsHealthCheckSettings.toBuilder();
       insertHttpsHealthCheckSettings = settings.insertHttpsHealthCheckSettings.toBuilder();
+      insertHttpsHealthCheckOperationSettings =
+          settings.insertHttpsHealthCheckOperationSettings.toBuilder();
       listHttpsHealthChecksSettings = settings.listHttpsHealthChecksSettings.toBuilder();
       patchHttpsHealthCheckSettings = settings.patchHttpsHealthCheckSettings.toBuilder();
+      patchHttpsHealthCheckOperationSettings =
+          settings.patchHttpsHealthCheckOperationSettings.toBuilder();
       updateHttpsHealthCheckSettings = settings.updateHttpsHealthCheckSettings.toBuilder();
+      updateHttpsHealthCheckOperationSettings =
+          settings.updateHttpsHealthCheckOperationSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
@@ -475,6 +640,14 @@ public Builder applyToAllUnaryMethods(
       return deleteHttpsHealthCheckSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteHttpsHealthCheck. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteHttpsHealthCheckOperationSettings() {
+      return deleteHttpsHealthCheckOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getHttpsHealthCheck. */
     public UnaryCallSettings.Builder
         getHttpsHealthCheckSettings() {
@@ -487,6 +660,14 @@ public Builder applyToAllUnaryMethods(
       return insertHttpsHealthCheckSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertHttpsHealthCheck. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertHttpsHealthCheckOperationSettings() {
+      return insertHttpsHealthCheckOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listHttpsHealthChecks. */
     public PagedCallSettings.Builder<
             ListHttpsHealthChecksHttpRequest,
@@ -502,12 +683,28 @@ public Builder applyToAllUnaryMethods(
       return patchHttpsHealthCheckSettings;
     }
 
+    /** Returns the builder for the settings used for calls to patchHttpsHealthCheck. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchHttpsHealthCheckOperationSettings() {
+      return patchHttpsHealthCheckOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to updateHttpsHealthCheck. */
     public UnaryCallSettings.Builder
         updateHttpsHealthCheckSettings() {
       return updateHttpsHealthCheckSettings;
     }
 
+    /** Returns the builder for the settings used for calls to updateHttpsHealthCheck. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        updateHttpsHealthCheckOperationSettings() {
+      return updateHttpsHealthCheckOperationSettings;
+    }
+
     @Override
     public HttpsHealthCheckStubSettings build() throws IOException {
       return new HttpsHealthCheckStubSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ImageStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ImageStub.java
index d9ba6a8583a0..0f45bee1c82d 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ImageStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ImageStub.java
@@ -19,6 +19,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.DeleteImageHttpRequest;
 import com.google.cloud.compute.v1.DeprecateImageHttpRequest;
@@ -47,11 +49,28 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class ImageStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public GlobalOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteImageOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: deleteImageOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteImageCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteImageCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deprecateImageOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: deprecateImageOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deprecateImageCallable() {
     throw new UnsupportedOperationException("Not implemented: deprecateImageCallable()");
@@ -72,6 +91,12 @@ public UnaryCallable getIamPolicyImageCall
     throw new UnsupportedOperationException("Not implemented: getIamPolicyImageCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertImageOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: insertImageOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertImageCallable() {
     throw new UnsupportedOperationException("Not implemented: insertImageCallable()");
@@ -92,6 +117,12 @@ public UnaryCallable setIamPolicyImageCall
     throw new UnsupportedOperationException("Not implemented: setIamPolicyImageCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setLabelsImageOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: setLabelsImageOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable setLabelsImageCallable() {
     throw new UnsupportedOperationException("Not implemented: setLabelsImageCallable()");
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ImageStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ImageStubSettings.java
index aa939c97d53c..07500809156b 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ImageStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ImageStubSettings.java
@@ -23,13 +23,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -78,13 +83,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteImage to 30 seconds: + * example, to set the total timeout of getImage to 30 seconds: * *

  * 
  * ImageStubSettings.Builder imageSettingsBuilder =
  *     ImageStubSettings.newBuilder();
- * imageSettingsBuilder.deleteImageSettings().getRetrySettings().toBuilder()
+ * imageSettingsBuilder.getImageSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * ImageStubSettings imageSettings = imageSettingsBuilder.build();
  * 
@@ -105,15 +110,23 @@ public class ImageStubSettings extends StubSettings {
           .build();
 
   private final UnaryCallSettings deleteImageSettings;
+  private final OperationCallSettings
+      deleteImageOperationSettings;
   private final UnaryCallSettings deprecateImageSettings;
+  private final OperationCallSettings
+      deprecateImageOperationSettings;
   private final UnaryCallSettings getImageSettings;
   private final UnaryCallSettings getFromFamilyImageSettings;
   private final UnaryCallSettings getIamPolicyImageSettings;
   private final UnaryCallSettings insertImageSettings;
+  private final OperationCallSettings
+      insertImageOperationSettings;
   private final PagedCallSettings
       listImagesSettings;
   private final UnaryCallSettings setIamPolicyImageSettings;
   private final UnaryCallSettings setLabelsImageSettings;
+  private final OperationCallSettings
+      setLabelsImageOperationSettings;
   private final UnaryCallSettings
       testIamPermissionsImageSettings;
 
@@ -122,11 +135,25 @@ public UnaryCallSettings deleteImageSettings(
     return deleteImageSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteImage. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteImageOperationSettings() {
+    return deleteImageOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to deprecateImage. */
   public UnaryCallSettings deprecateImageSettings() {
     return deprecateImageSettings;
   }
 
+  /** Returns the object with the settings used for calls to deprecateImage. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deprecateImageOperationSettings() {
+    return deprecateImageOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getImage. */
   public UnaryCallSettings getImageSettings() {
     return getImageSettings;
@@ -147,6 +174,13 @@ public UnaryCallSettings insertImageSettings(
     return insertImageSettings;
   }
 
+  /** Returns the object with the settings used for calls to insertImage. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertImageOperationSettings() {
+    return insertImageOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listImages. */
   public PagedCallSettings
       listImagesSettings() {
@@ -163,6 +197,13 @@ public UnaryCallSettings setLabelsImageSet
     return setLabelsImageSettings;
   }
 
+  /** Returns the object with the settings used for calls to setLabelsImage. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setLabelsImageOperationSettings() {
+    return setLabelsImageOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to testIamPermissionsImage. */
   public UnaryCallSettings
       testIamPermissionsImageSettings() {
@@ -244,14 +285,18 @@ protected ImageStubSettings(Builder settingsBuilder) throws IOException {
     super(settingsBuilder);
 
     deleteImageSettings = settingsBuilder.deleteImageSettings().build();
+    deleteImageOperationSettings = settingsBuilder.deleteImageOperationSettings().build();
     deprecateImageSettings = settingsBuilder.deprecateImageSettings().build();
+    deprecateImageOperationSettings = settingsBuilder.deprecateImageOperationSettings().build();
     getImageSettings = settingsBuilder.getImageSettings().build();
     getFromFamilyImageSettings = settingsBuilder.getFromFamilyImageSettings().build();
     getIamPolicyImageSettings = settingsBuilder.getIamPolicyImageSettings().build();
     insertImageSettings = settingsBuilder.insertImageSettings().build();
+    insertImageOperationSettings = settingsBuilder.insertImageOperationSettings().build();
     listImagesSettings = settingsBuilder.listImagesSettings().build();
     setIamPolicyImageSettings = settingsBuilder.setIamPolicyImageSettings().build();
     setLabelsImageSettings = settingsBuilder.setLabelsImageSettings().build();
+    setLabelsImageOperationSettings = settingsBuilder.setLabelsImageOperationSettings().build();
     testIamPermissionsImageSettings = settingsBuilder.testIamPermissionsImageSettings().build();
   }
 
@@ -314,14 +359,20 @@ public static class Builder extends StubSettings.Builder> unaryMethodSettingsBuilders;
 
     private final UnaryCallSettings.Builder deleteImageSettings;
+    private final OperationCallSettings.Builder
+        deleteImageOperationSettings;
     private final UnaryCallSettings.Builder
         deprecateImageSettings;
+    private final OperationCallSettings.Builder
+        deprecateImageOperationSettings;
     private final UnaryCallSettings.Builder getImageSettings;
     private final UnaryCallSettings.Builder
         getFromFamilyImageSettings;
     private final UnaryCallSettings.Builder
         getIamPolicyImageSettings;
     private final UnaryCallSettings.Builder insertImageSettings;
+    private final OperationCallSettings.Builder
+        insertImageOperationSettings;
     private final PagedCallSettings.Builder<
             ListImagesHttpRequest, ImageList, ListImagesPagedResponse>
         listImagesSettings;
@@ -329,6 +380,8 @@ public static class Builder extends StubSettings.Builder
         setLabelsImageSettings;
+    private final OperationCallSettings.Builder
+        setLabelsImageOperationSettings;
     private final UnaryCallSettings.Builder<
             TestIamPermissionsImageHttpRequest, TestPermissionsResponse>
         testIamPermissionsImageSettings;
@@ -376,8 +429,12 @@ protected Builder(ClientContext clientContext) {
 
       deleteImageSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteImageOperationSettings = OperationCallSettings.newBuilder();
+
       deprecateImageSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deprecateImageOperationSettings = OperationCallSettings.newBuilder();
+
       getImageSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       getFromFamilyImageSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
@@ -386,12 +443,16 @@ protected Builder(ClientContext clientContext) {
 
       insertImageSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertImageOperationSettings = OperationCallSettings.newBuilder();
+
       listImagesSettings = PagedCallSettings.newBuilder(LIST_IMAGES_PAGE_STR_FACT);
 
       setIamPolicyImageSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       setLabelsImageSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setLabelsImageOperationSettings = OperationCallSettings.newBuilder();
+
       testIamPermissionsImageSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       unaryMethodSettingsBuilders =
@@ -470,6 +531,90 @@ private static Builder initDefaults(Builder builder) {
           .testIamPermissionsImageSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteImageOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .deprecateImageOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertImageOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setLabelsImageOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -478,14 +623,18 @@ protected Builder(ImageStubSettings settings) {
       super(settings);
 
       deleteImageSettings = settings.deleteImageSettings.toBuilder();
+      deleteImageOperationSettings = settings.deleteImageOperationSettings.toBuilder();
       deprecateImageSettings = settings.deprecateImageSettings.toBuilder();
+      deprecateImageOperationSettings = settings.deprecateImageOperationSettings.toBuilder();
       getImageSettings = settings.getImageSettings.toBuilder();
       getFromFamilyImageSettings = settings.getFromFamilyImageSettings.toBuilder();
       getIamPolicyImageSettings = settings.getIamPolicyImageSettings.toBuilder();
       insertImageSettings = settings.insertImageSettings.toBuilder();
+      insertImageOperationSettings = settings.insertImageOperationSettings.toBuilder();
       listImagesSettings = settings.listImagesSettings.toBuilder();
       setIamPolicyImageSettings = settings.setIamPolicyImageSettings.toBuilder();
       setLabelsImageSettings = settings.setLabelsImageSettings.toBuilder();
+      setLabelsImageOperationSettings = settings.setLabelsImageOperationSettings.toBuilder();
       testIamPermissionsImageSettings = settings.testIamPermissionsImageSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
@@ -523,12 +672,28 @@ public UnaryCallSettings.Builder deleteImageS
       return deleteImageSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteImage. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteImageOperationSettings() {
+      return deleteImageOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to deprecateImage. */
     public UnaryCallSettings.Builder
         deprecateImageSettings() {
       return deprecateImageSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deprecateImage. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deprecateImageOperationSettings() {
+      return deprecateImageOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getImage. */
     public UnaryCallSettings.Builder getImageSettings() {
       return getImageSettings;
@@ -551,6 +716,14 @@ public UnaryCallSettings.Builder insertImageS
       return insertImageSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertImage. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertImageOperationSettings() {
+      return insertImageOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listImages. */
     public PagedCallSettings.Builder
         listImagesSettings() {
@@ -569,6 +742,14 @@ public UnaryCallSettings.Builder insertImageS
       return setLabelsImageSettings;
     }
 
+    /** Returns the builder for the settings used for calls to setLabelsImage. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        setLabelsImageOperationSettings() {
+      return setLabelsImageOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to testIamPermissionsImage. */
     public UnaryCallSettings.Builder
         testIamPermissionsImageSettings() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceGroupManagerStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceGroupManagerStub.java
index 52517c11d822..db016577f7f4 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceGroupManagerStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceGroupManagerStub.java
@@ -20,6 +20,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.AbandonInstancesInstanceGroupManagerHttpRequest;
 import com.google.cloud.compute.v1.AggregatedListInstanceGroupManagersHttpRequest;
@@ -51,6 +53,18 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class InstanceGroupManagerStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public ZoneOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      abandonInstancesInstanceGroupManagerOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: abandonInstancesInstanceGroupManagerOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       abandonInstancesInstanceGroupManagerCallable() {
@@ -75,6 +89,13 @@ public abstract class InstanceGroupManagerStub implements BackgroundResource {
         "Not implemented: aggregatedListInstanceGroupManagersCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteInstanceGroupManagerOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteInstanceGroupManagerOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       deleteInstanceGroupManagerCallable() {
@@ -82,6 +103,13 @@ public abstract class InstanceGroupManagerStub implements BackgroundResource {
         "Not implemented: deleteInstanceGroupManagerCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteInstancesInstanceGroupManagerOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteInstancesInstanceGroupManagerOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       deleteInstancesInstanceGroupManagerCallable() {
@@ -95,6 +123,13 @@ public abstract class InstanceGroupManagerStub implements BackgroundResource {
     throw new UnsupportedOperationException("Not implemented: getInstanceGroupManagerCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertInstanceGroupManagerOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: insertInstanceGroupManagerOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       insertInstanceGroupManagerCallable() {
@@ -124,12 +159,27 @@ public abstract class InstanceGroupManagerStub implements BackgroundResource {
         "Not implemented: listManagedInstancesInstanceGroupManagersCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchInstanceGroupManagerOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: patchInstanceGroupManagerOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       patchInstanceGroupManagerCallable() {
     throw new UnsupportedOperationException("Not implemented: patchInstanceGroupManagerCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable<
+          RecreateInstancesInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      recreateInstancesInstanceGroupManagerOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: recreateInstancesInstanceGroupManagerOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       recreateInstancesInstanceGroupManagerCallable() {
@@ -137,6 +187,13 @@ public abstract class InstanceGroupManagerStub implements BackgroundResource {
         "Not implemented: recreateInstancesInstanceGroupManagerCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      resizeInstanceGroupManagerOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: resizeInstanceGroupManagerOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       resizeInstanceGroupManagerCallable() {
@@ -144,6 +201,14 @@ public abstract class InstanceGroupManagerStub implements BackgroundResource {
         "Not implemented: resizeInstanceGroupManagerCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable<
+          SetInstanceTemplateInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      setInstanceTemplateInstanceGroupManagerOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setInstanceTemplateInstanceGroupManagerOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setInstanceTemplateInstanceGroupManagerCallable() {
@@ -151,6 +216,13 @@ public abstract class InstanceGroupManagerStub implements BackgroundResource {
         "Not implemented: setInstanceTemplateInstanceGroupManagerCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setTargetPoolsInstanceGroupManagerOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setTargetPoolsInstanceGroupManagerOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setTargetPoolsInstanceGroupManagerCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceGroupManagerStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceGroupManagerStubSettings.java
index 0e1aad903d62..c811c23cf48b 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceGroupManagerStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceGroupManagerStubSettings.java
@@ -24,13 +24,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -83,13 +88,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of abandonInstancesInstanceGroupManager to 30 seconds: + * example, to set the total timeout of getInstanceGroupManager to 30 seconds: * *

  * 
  * InstanceGroupManagerStubSettings.Builder instanceGroupManagerSettingsBuilder =
  *     InstanceGroupManagerStubSettings.newBuilder();
- * instanceGroupManagerSettingsBuilder.abandonInstancesInstanceGroupManagerSettings().getRetrySettings().toBuilder()
+ * instanceGroupManagerSettingsBuilder.getInstanceGroupManagerSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * InstanceGroupManagerStubSettings instanceGroupManagerSettings = instanceGroupManagerSettingsBuilder.build();
  * 
@@ -112,6 +117,9 @@ public class InstanceGroupManagerStubSettings
 
   private final UnaryCallSettings
       abandonInstancesInstanceGroupManagerSettings;
+  private final OperationCallSettings<
+          AbandonInstancesInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      abandonInstancesInstanceGroupManagerOperationSettings;
   private final PagedCallSettings<
           AggregatedListInstanceGroupManagersHttpRequest,
           InstanceGroupManagerAggregatedList,
@@ -119,12 +127,21 @@ public class InstanceGroupManagerStubSettings
       aggregatedListInstanceGroupManagersSettings;
   private final UnaryCallSettings
       deleteInstanceGroupManagerSettings;
+  private final OperationCallSettings<
+          DeleteInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      deleteInstanceGroupManagerOperationSettings;
   private final UnaryCallSettings
       deleteInstancesInstanceGroupManagerSettings;
+  private final OperationCallSettings<
+          DeleteInstancesInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      deleteInstancesInstanceGroupManagerOperationSettings;
   private final UnaryCallSettings
       getInstanceGroupManagerSettings;
   private final UnaryCallSettings
       insertInstanceGroupManagerSettings;
+  private final OperationCallSettings<
+          InsertInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      insertInstanceGroupManagerOperationSettings;
   private final PagedCallSettings<
           ListInstanceGroupManagersHttpRequest,
           InstanceGroupManagerList,
@@ -136,14 +153,28 @@ public class InstanceGroupManagerStubSettings
       listManagedInstancesInstanceGroupManagersSettings;
   private final UnaryCallSettings
       patchInstanceGroupManagerSettings;
+  private final OperationCallSettings
+      patchInstanceGroupManagerOperationSettings;
   private final UnaryCallSettings
       recreateInstancesInstanceGroupManagerSettings;
+  private final OperationCallSettings<
+          RecreateInstancesInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      recreateInstancesInstanceGroupManagerOperationSettings;
   private final UnaryCallSettings
       resizeInstanceGroupManagerSettings;
+  private final OperationCallSettings<
+          ResizeInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      resizeInstanceGroupManagerOperationSettings;
   private final UnaryCallSettings
       setInstanceTemplateInstanceGroupManagerSettings;
+  private final OperationCallSettings<
+          SetInstanceTemplateInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      setInstanceTemplateInstanceGroupManagerOperationSettings;
   private final UnaryCallSettings
       setTargetPoolsInstanceGroupManagerSettings;
+  private final OperationCallSettings<
+          SetTargetPoolsInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      setTargetPoolsInstanceGroupManagerOperationSettings;
 
   /**
    * Returns the object with the settings used for calls to abandonInstancesInstanceGroupManager.
@@ -153,6 +184,16 @@ public class InstanceGroupManagerStubSettings
     return abandonInstancesInstanceGroupManagerSettings;
   }
 
+  /**
+   * Returns the object with the settings used for calls to abandonInstancesInstanceGroupManager.
+   */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings<
+          AbandonInstancesInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      abandonInstancesInstanceGroupManagerOperationSettings() {
+    return abandonInstancesInstanceGroupManagerOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to aggregatedListInstanceGroupManagers. */
   public PagedCallSettings<
           AggregatedListInstanceGroupManagersHttpRequest,
@@ -168,12 +209,27 @@ public class InstanceGroupManagerStubSettings
     return deleteInstanceGroupManagerSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteInstanceGroupManager. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteInstanceGroupManagerOperationSettings() {
+    return deleteInstanceGroupManagerOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to deleteInstancesInstanceGroupManager. */
   public UnaryCallSettings
       deleteInstancesInstanceGroupManagerSettings() {
     return deleteInstancesInstanceGroupManagerSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteInstancesInstanceGroupManager. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings<
+          DeleteInstancesInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      deleteInstancesInstanceGroupManagerOperationSettings() {
+    return deleteInstancesInstanceGroupManagerOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getInstanceGroupManager. */
   public UnaryCallSettings
       getInstanceGroupManagerSettings() {
@@ -186,6 +242,13 @@ public class InstanceGroupManagerStubSettings
     return insertInstanceGroupManagerSettings;
   }
 
+  /** Returns the object with the settings used for calls to insertInstanceGroupManager. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertInstanceGroupManagerOperationSettings() {
+    return insertInstanceGroupManagerOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listInstanceGroupManagers. */
   public PagedCallSettings<
           ListInstanceGroupManagersHttpRequest,
@@ -212,6 +275,13 @@ public class InstanceGroupManagerStubSettings
     return patchInstanceGroupManagerSettings;
   }
 
+  /** Returns the object with the settings used for calls to patchInstanceGroupManager. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      patchInstanceGroupManagerOperationSettings() {
+    return patchInstanceGroupManagerOperationSettings;
+  }
+
   /**
    * Returns the object with the settings used for calls to recreateInstancesInstanceGroupManager.
    */
@@ -220,12 +290,29 @@ public class InstanceGroupManagerStubSettings
     return recreateInstancesInstanceGroupManagerSettings;
   }
 
+  /**
+   * Returns the object with the settings used for calls to recreateInstancesInstanceGroupManager.
+   */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings<
+          RecreateInstancesInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      recreateInstancesInstanceGroupManagerOperationSettings() {
+    return recreateInstancesInstanceGroupManagerOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to resizeInstanceGroupManager. */
   public UnaryCallSettings
       resizeInstanceGroupManagerSettings() {
     return resizeInstanceGroupManagerSettings;
   }
 
+  /** Returns the object with the settings used for calls to resizeInstanceGroupManager. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      resizeInstanceGroupManagerOperationSettings() {
+    return resizeInstanceGroupManagerOperationSettings;
+  }
+
   /**
    * Returns the object with the settings used for calls to setInstanceTemplateInstanceGroupManager.
    */
@@ -234,12 +321,30 @@ public class InstanceGroupManagerStubSettings
     return setInstanceTemplateInstanceGroupManagerSettings;
   }
 
+  /**
+   * Returns the object with the settings used for calls to setInstanceTemplateInstanceGroupManager.
+   */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings<
+          SetInstanceTemplateInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      setInstanceTemplateInstanceGroupManagerOperationSettings() {
+    return setInstanceTemplateInstanceGroupManagerOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to setTargetPoolsInstanceGroupManager. */
   public UnaryCallSettings
       setTargetPoolsInstanceGroupManagerSettings() {
     return setTargetPoolsInstanceGroupManagerSettings;
   }
 
+  /** Returns the object with the settings used for calls to setTargetPoolsInstanceGroupManager. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings<
+          SetTargetPoolsInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      setTargetPoolsInstanceGroupManagerOperationSettings() {
+    return setTargetPoolsInstanceGroupManagerOperationSettings;
+  }
+
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   public InstanceGroupManagerStub createStub() throws IOException {
     if (getTransportChannelProvider()
@@ -317,27 +422,45 @@ protected InstanceGroupManagerStubSettings(Builder settingsBuilder) throws IOExc
 
     abandonInstancesInstanceGroupManagerSettings =
         settingsBuilder.abandonInstancesInstanceGroupManagerSettings().build();
+    abandonInstancesInstanceGroupManagerOperationSettings =
+        settingsBuilder.abandonInstancesInstanceGroupManagerOperationSettings().build();
     aggregatedListInstanceGroupManagersSettings =
         settingsBuilder.aggregatedListInstanceGroupManagersSettings().build();
     deleteInstanceGroupManagerSettings =
         settingsBuilder.deleteInstanceGroupManagerSettings().build();
+    deleteInstanceGroupManagerOperationSettings =
+        settingsBuilder.deleteInstanceGroupManagerOperationSettings().build();
     deleteInstancesInstanceGroupManagerSettings =
         settingsBuilder.deleteInstancesInstanceGroupManagerSettings().build();
+    deleteInstancesInstanceGroupManagerOperationSettings =
+        settingsBuilder.deleteInstancesInstanceGroupManagerOperationSettings().build();
     getInstanceGroupManagerSettings = settingsBuilder.getInstanceGroupManagerSettings().build();
     insertInstanceGroupManagerSettings =
         settingsBuilder.insertInstanceGroupManagerSettings().build();
+    insertInstanceGroupManagerOperationSettings =
+        settingsBuilder.insertInstanceGroupManagerOperationSettings().build();
     listInstanceGroupManagersSettings = settingsBuilder.listInstanceGroupManagersSettings().build();
     listManagedInstancesInstanceGroupManagersSettings =
         settingsBuilder.listManagedInstancesInstanceGroupManagersSettings().build();
     patchInstanceGroupManagerSettings = settingsBuilder.patchInstanceGroupManagerSettings().build();
+    patchInstanceGroupManagerOperationSettings =
+        settingsBuilder.patchInstanceGroupManagerOperationSettings().build();
     recreateInstancesInstanceGroupManagerSettings =
         settingsBuilder.recreateInstancesInstanceGroupManagerSettings().build();
+    recreateInstancesInstanceGroupManagerOperationSettings =
+        settingsBuilder.recreateInstancesInstanceGroupManagerOperationSettings().build();
     resizeInstanceGroupManagerSettings =
         settingsBuilder.resizeInstanceGroupManagerSettings().build();
+    resizeInstanceGroupManagerOperationSettings =
+        settingsBuilder.resizeInstanceGroupManagerOperationSettings().build();
     setInstanceTemplateInstanceGroupManagerSettings =
         settingsBuilder.setInstanceTemplateInstanceGroupManagerSettings().build();
+    setInstanceTemplateInstanceGroupManagerOperationSettings =
+        settingsBuilder.setInstanceTemplateInstanceGroupManagerOperationSettings().build();
     setTargetPoolsInstanceGroupManagerSettings =
         settingsBuilder.setTargetPoolsInstanceGroupManagerSettings().build();
+    setTargetPoolsInstanceGroupManagerOperationSettings =
+        settingsBuilder.setTargetPoolsInstanceGroupManagerOperationSettings().build();
   }
 
   private static final PagedListDescriptor<
@@ -506,6 +629,9 @@ public static class Builder
     private final UnaryCallSettings.Builder<
             AbandonInstancesInstanceGroupManagerHttpRequest, Operation>
         abandonInstancesInstanceGroupManagerSettings;
+    private final OperationCallSettings.Builder<
+            AbandonInstancesInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        abandonInstancesInstanceGroupManagerOperationSettings;
     private final PagedCallSettings.Builder<
             AggregatedListInstanceGroupManagersHttpRequest,
             InstanceGroupManagerAggregatedList,
@@ -513,14 +639,23 @@ public static class Builder
         aggregatedListInstanceGroupManagersSettings;
     private final UnaryCallSettings.Builder
         deleteInstanceGroupManagerSettings;
+    private final OperationCallSettings.Builder<
+            DeleteInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        deleteInstanceGroupManagerOperationSettings;
     private final UnaryCallSettings.Builder<
             DeleteInstancesInstanceGroupManagerHttpRequest, Operation>
         deleteInstancesInstanceGroupManagerSettings;
+    private final OperationCallSettings.Builder<
+            DeleteInstancesInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        deleteInstancesInstanceGroupManagerOperationSettings;
     private final UnaryCallSettings.Builder<
             GetInstanceGroupManagerHttpRequest, InstanceGroupManager>
         getInstanceGroupManagerSettings;
     private final UnaryCallSettings.Builder
         insertInstanceGroupManagerSettings;
+    private final OperationCallSettings.Builder<
+            InsertInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        insertInstanceGroupManagerOperationSettings;
     private final PagedCallSettings.Builder<
             ListInstanceGroupManagersHttpRequest,
             InstanceGroupManagerList,
@@ -532,17 +667,32 @@ public static class Builder
         listManagedInstancesInstanceGroupManagersSettings;
     private final UnaryCallSettings.Builder
         patchInstanceGroupManagerSettings;
+    private final OperationCallSettings.Builder<
+            PatchInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        patchInstanceGroupManagerOperationSettings;
     private final UnaryCallSettings.Builder<
             RecreateInstancesInstanceGroupManagerHttpRequest, Operation>
         recreateInstancesInstanceGroupManagerSettings;
+    private final OperationCallSettings.Builder<
+            RecreateInstancesInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        recreateInstancesInstanceGroupManagerOperationSettings;
     private final UnaryCallSettings.Builder
         resizeInstanceGroupManagerSettings;
+    private final OperationCallSettings.Builder<
+            ResizeInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        resizeInstanceGroupManagerOperationSettings;
     private final UnaryCallSettings.Builder<
             SetInstanceTemplateInstanceGroupManagerHttpRequest, Operation>
         setInstanceTemplateInstanceGroupManagerSettings;
+    private final OperationCallSettings.Builder<
+            SetInstanceTemplateInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        setInstanceTemplateInstanceGroupManagerOperationSettings;
     private final UnaryCallSettings.Builder<
             SetTargetPoolsInstanceGroupManagerHttpRequest, Operation>
         setTargetPoolsInstanceGroupManagerSettings;
+    private final OperationCallSettings.Builder<
+            SetTargetPoolsInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        setTargetPoolsInstanceGroupManagerOperationSettings;
 
     private static final ImmutableMap>
         RETRYABLE_CODE_DEFINITIONS;
@@ -588,17 +738,25 @@ protected Builder(ClientContext clientContext) {
       abandonInstancesInstanceGroupManagerSettings =
           UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      abandonInstancesInstanceGroupManagerOperationSettings = OperationCallSettings.newBuilder();
+
       aggregatedListInstanceGroupManagersSettings =
           PagedCallSettings.newBuilder(AGGREGATED_LIST_INSTANCE_GROUP_MANAGERS_PAGE_STR_FACT);
 
       deleteInstanceGroupManagerSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteInstanceGroupManagerOperationSettings = OperationCallSettings.newBuilder();
+
       deleteInstancesInstanceGroupManagerSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteInstancesInstanceGroupManagerOperationSettings = OperationCallSettings.newBuilder();
+
       getInstanceGroupManagerSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertInstanceGroupManagerSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertInstanceGroupManagerOperationSettings = OperationCallSettings.newBuilder();
+
       listInstanceGroupManagersSettings =
           PagedCallSettings.newBuilder(LIST_INSTANCE_GROUP_MANAGERS_PAGE_STR_FACT);
 
@@ -607,16 +765,26 @@ protected Builder(ClientContext clientContext) {
 
       patchInstanceGroupManagerSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      patchInstanceGroupManagerOperationSettings = OperationCallSettings.newBuilder();
+
       recreateInstancesInstanceGroupManagerSettings =
           UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      recreateInstancesInstanceGroupManagerOperationSettings = OperationCallSettings.newBuilder();
+
       resizeInstanceGroupManagerSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      resizeInstanceGroupManagerOperationSettings = OperationCallSettings.newBuilder();
+
       setInstanceTemplateInstanceGroupManagerSettings =
           UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setInstanceTemplateInstanceGroupManagerOperationSettings = OperationCallSettings.newBuilder();
+
       setTargetPoolsInstanceGroupManagerSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setTargetPoolsInstanceGroupManagerOperationSettings = OperationCallSettings.newBuilder();
+
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
               abandonInstancesInstanceGroupManagerSettings,
@@ -711,6 +879,204 @@ private static Builder initDefaults(Builder builder) {
           .setTargetPoolsInstanceGroupManagerSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .abandonInstancesInstanceGroupManagerOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .deleteInstanceGroupManagerOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .deleteInstancesInstanceGroupManagerOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertInstanceGroupManagerOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .patchInstanceGroupManagerOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .recreateInstancesInstanceGroupManagerOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .resizeInstanceGroupManagerOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setInstanceTemplateInstanceGroupManagerOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setTargetPoolsInstanceGroupManagerOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -720,24 +1086,42 @@ protected Builder(InstanceGroupManagerStubSettings settings) {
 
       abandonInstancesInstanceGroupManagerSettings =
           settings.abandonInstancesInstanceGroupManagerSettings.toBuilder();
+      abandonInstancesInstanceGroupManagerOperationSettings =
+          settings.abandonInstancesInstanceGroupManagerOperationSettings.toBuilder();
       aggregatedListInstanceGroupManagersSettings =
           settings.aggregatedListInstanceGroupManagersSettings.toBuilder();
       deleteInstanceGroupManagerSettings = settings.deleteInstanceGroupManagerSettings.toBuilder();
+      deleteInstanceGroupManagerOperationSettings =
+          settings.deleteInstanceGroupManagerOperationSettings.toBuilder();
       deleteInstancesInstanceGroupManagerSettings =
           settings.deleteInstancesInstanceGroupManagerSettings.toBuilder();
+      deleteInstancesInstanceGroupManagerOperationSettings =
+          settings.deleteInstancesInstanceGroupManagerOperationSettings.toBuilder();
       getInstanceGroupManagerSettings = settings.getInstanceGroupManagerSettings.toBuilder();
       insertInstanceGroupManagerSettings = settings.insertInstanceGroupManagerSettings.toBuilder();
+      insertInstanceGroupManagerOperationSettings =
+          settings.insertInstanceGroupManagerOperationSettings.toBuilder();
       listInstanceGroupManagersSettings = settings.listInstanceGroupManagersSettings.toBuilder();
       listManagedInstancesInstanceGroupManagersSettings =
           settings.listManagedInstancesInstanceGroupManagersSettings.toBuilder();
       patchInstanceGroupManagerSettings = settings.patchInstanceGroupManagerSettings.toBuilder();
+      patchInstanceGroupManagerOperationSettings =
+          settings.patchInstanceGroupManagerOperationSettings.toBuilder();
       recreateInstancesInstanceGroupManagerSettings =
           settings.recreateInstancesInstanceGroupManagerSettings.toBuilder();
+      recreateInstancesInstanceGroupManagerOperationSettings =
+          settings.recreateInstancesInstanceGroupManagerOperationSettings.toBuilder();
       resizeInstanceGroupManagerSettings = settings.resizeInstanceGroupManagerSettings.toBuilder();
+      resizeInstanceGroupManagerOperationSettings =
+          settings.resizeInstanceGroupManagerOperationSettings.toBuilder();
       setInstanceTemplateInstanceGroupManagerSettings =
           settings.setInstanceTemplateInstanceGroupManagerSettings.toBuilder();
+      setInstanceTemplateInstanceGroupManagerOperationSettings =
+          settings.setInstanceTemplateInstanceGroupManagerOperationSettings.toBuilder();
       setTargetPoolsInstanceGroupManagerSettings =
           settings.setTargetPoolsInstanceGroupManagerSettings.toBuilder();
+      setTargetPoolsInstanceGroupManagerOperationSettings =
+          settings.setTargetPoolsInstanceGroupManagerOperationSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
@@ -780,6 +1164,17 @@ public Builder applyToAllUnaryMethods(
       return abandonInstancesInstanceGroupManagerSettings;
     }
 
+    /**
+     * Returns the builder for the settings used for calls to abandonInstancesInstanceGroupManager.
+     */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            AbandonInstancesInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        abandonInstancesInstanceGroupManagerOperationSettings() {
+      return abandonInstancesInstanceGroupManagerOperationSettings;
+    }
+
     /**
      * Returns the builder for the settings used for calls to aggregatedListInstanceGroupManagers.
      */
@@ -797,6 +1192,15 @@ public Builder applyToAllUnaryMethods(
       return deleteInstanceGroupManagerSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteInstanceGroupManager. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            DeleteInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        deleteInstanceGroupManagerOperationSettings() {
+      return deleteInstanceGroupManagerOperationSettings;
+    }
+
     /**
      * Returns the builder for the settings used for calls to deleteInstancesInstanceGroupManager.
      */
@@ -805,6 +1209,17 @@ public Builder applyToAllUnaryMethods(
       return deleteInstancesInstanceGroupManagerSettings;
     }
 
+    /**
+     * Returns the builder for the settings used for calls to deleteInstancesInstanceGroupManager.
+     */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            DeleteInstancesInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        deleteInstancesInstanceGroupManagerOperationSettings() {
+      return deleteInstancesInstanceGroupManagerOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getInstanceGroupManager. */
     public UnaryCallSettings.Builder
         getInstanceGroupManagerSettings() {
@@ -817,6 +1232,15 @@ public Builder applyToAllUnaryMethods(
       return insertInstanceGroupManagerSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertInstanceGroupManager. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            InsertInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        insertInstanceGroupManagerOperationSettings() {
+      return insertInstanceGroupManagerOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listInstanceGroupManagers. */
     public PagedCallSettings.Builder<
             ListInstanceGroupManagersHttpRequest,
@@ -843,6 +1267,15 @@ public Builder applyToAllUnaryMethods(
       return patchInstanceGroupManagerSettings;
     }
 
+    /** Returns the builder for the settings used for calls to patchInstanceGroupManager. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            PatchInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        patchInstanceGroupManagerOperationSettings() {
+      return patchInstanceGroupManagerOperationSettings;
+    }
+
     /**
      * Returns the builder for the settings used for calls to recreateInstancesInstanceGroupManager.
      */
@@ -851,12 +1284,32 @@ public Builder applyToAllUnaryMethods(
       return recreateInstancesInstanceGroupManagerSettings;
     }
 
+    /**
+     * Returns the builder for the settings used for calls to recreateInstancesInstanceGroupManager.
+     */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            RecreateInstancesInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        recreateInstancesInstanceGroupManagerOperationSettings() {
+      return recreateInstancesInstanceGroupManagerOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to resizeInstanceGroupManager. */
     public UnaryCallSettings.Builder
         resizeInstanceGroupManagerSettings() {
       return resizeInstanceGroupManagerSettings;
     }
 
+    /** Returns the builder for the settings used for calls to resizeInstanceGroupManager. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            ResizeInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        resizeInstanceGroupManagerOperationSettings() {
+      return resizeInstanceGroupManagerOperationSettings;
+    }
+
     /**
      * Returns the builder for the settings used for calls to
      * setInstanceTemplateInstanceGroupManager.
@@ -866,6 +1319,18 @@ public Builder applyToAllUnaryMethods(
       return setInstanceTemplateInstanceGroupManagerSettings;
     }
 
+    /**
+     * Returns the builder for the settings used for calls to
+     * setInstanceTemplateInstanceGroupManager.
+     */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetInstanceTemplateInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        setInstanceTemplateInstanceGroupManagerOperationSettings() {
+      return setInstanceTemplateInstanceGroupManagerOperationSettings;
+    }
+
     /**
      * Returns the builder for the settings used for calls to setTargetPoolsInstanceGroupManager.
      */
@@ -874,6 +1339,17 @@ public Builder applyToAllUnaryMethods(
       return setTargetPoolsInstanceGroupManagerSettings;
     }
 
+    /**
+     * Returns the builder for the settings used for calls to setTargetPoolsInstanceGroupManager.
+     */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetTargetPoolsInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        setTargetPoolsInstanceGroupManagerOperationSettings() {
+      return setTargetPoolsInstanceGroupManagerOperationSettings;
+    }
+
     @Override
     public InstanceGroupManagerStubSettings build() throws IOException {
       return new InstanceGroupManagerStubSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceGroupStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceGroupStub.java
index b2cca5bba6fd..b9cb456ec0aa 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceGroupStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceGroupStub.java
@@ -21,6 +21,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.AddInstancesInstanceGroupHttpRequest;
 import com.google.cloud.compute.v1.AggregatedListInstanceGroupsHttpRequest;
@@ -48,6 +50,18 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class InstanceGroupStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public ZoneOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      addInstancesInstanceGroupOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: addInstancesInstanceGroupOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       addInstancesInstanceGroupCallable() {
@@ -69,6 +83,13 @@ public abstract class InstanceGroupStub implements BackgroundResource {
         "Not implemented: aggregatedListInstanceGroupsCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteInstanceGroupOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteInstanceGroupOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteInstanceGroupCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteInstanceGroupCallable()");
@@ -79,6 +100,13 @@ public UnaryCallable getInstanceGrou
     throw new UnsupportedOperationException("Not implemented: getInstanceGroupCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertInstanceGroupOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: insertInstanceGroupOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertInstanceGroupCallable() {
     throw new UnsupportedOperationException("Not implemented: insertInstanceGroupCallable()");
@@ -111,6 +139,13 @@ public UnaryCallable insertInstanceGr
         "Not implemented: listInstancesInstanceGroupsCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      removeInstancesInstanceGroupOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: removeInstancesInstanceGroupOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       removeInstancesInstanceGroupCallable() {
@@ -118,6 +153,13 @@ public UnaryCallable insertInstanceGr
         "Not implemented: removeInstancesInstanceGroupCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setNamedPortsInstanceGroupOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setNamedPortsInstanceGroupOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setNamedPortsInstanceGroupCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceGroupStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceGroupStubSettings.java
index a7d55573eb55..e0b0a09a75ed 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceGroupStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceGroupStubSettings.java
@@ -25,13 +25,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -81,13 +86,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of addInstancesInstanceGroup to 30 seconds: + * example, to set the total timeout of getInstanceGroup to 30 seconds: * *

  * 
  * InstanceGroupStubSettings.Builder instanceGroupSettingsBuilder =
  *     InstanceGroupStubSettings.newBuilder();
- * instanceGroupSettingsBuilder.addInstancesInstanceGroupSettings().getRetrySettings().toBuilder()
+ * instanceGroupSettingsBuilder.getInstanceGroupSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * InstanceGroupStubSettings instanceGroupSettings = instanceGroupSettingsBuilder.build();
  * 
@@ -109,6 +114,8 @@ public class InstanceGroupStubSettings extends StubSettings
       addInstancesInstanceGroupSettings;
+  private final OperationCallSettings
+      addInstancesInstanceGroupOperationSettings;
   private final PagedCallSettings<
           AggregatedListInstanceGroupsHttpRequest,
           InstanceGroupAggregatedList,
@@ -116,10 +123,14 @@ public class InstanceGroupStubSettings extends StubSettings
       deleteInstanceGroupSettings;
+  private final OperationCallSettings
+      deleteInstanceGroupOperationSettings;
   private final UnaryCallSettings
       getInstanceGroupSettings;
   private final UnaryCallSettings
       insertInstanceGroupSettings;
+  private final OperationCallSettings
+      insertInstanceGroupOperationSettings;
   private final PagedCallSettings<
           ListInstanceGroupsHttpRequest, InstanceGroupList, ListInstanceGroupsPagedResponse>
       listInstanceGroupsSettings;
@@ -130,8 +141,14 @@ public class InstanceGroupStubSettings extends StubSettings
       removeInstancesInstanceGroupSettings;
+  private final OperationCallSettings<
+          RemoveInstancesInstanceGroupHttpRequest, EmptyMessage, Operation>
+      removeInstancesInstanceGroupOperationSettings;
   private final UnaryCallSettings
       setNamedPortsInstanceGroupSettings;
+  private final OperationCallSettings<
+          SetNamedPortsInstanceGroupHttpRequest, EmptyMessage, Operation>
+      setNamedPortsInstanceGroupOperationSettings;
 
   /** Returns the object with the settings used for calls to addInstancesInstanceGroup. */
   public UnaryCallSettings
@@ -139,6 +156,13 @@ public class InstanceGroupStubSettings extends StubSettings
+      addInstancesInstanceGroupOperationSettings() {
+    return addInstancesInstanceGroupOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to aggregatedListInstanceGroups. */
   public PagedCallSettings<
           AggregatedListInstanceGroupsHttpRequest,
@@ -154,6 +178,13 @@ public class InstanceGroupStubSettings extends StubSettings
+      deleteInstanceGroupOperationSettings() {
+    return deleteInstanceGroupOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getInstanceGroup. */
   public UnaryCallSettings getInstanceGroupSettings() {
     return getInstanceGroupSettings;
@@ -165,6 +196,13 @@ public UnaryCallSettings getInstance
     return insertInstanceGroupSettings;
   }
 
+  /** Returns the object with the settings used for calls to insertInstanceGroup. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertInstanceGroupOperationSettings() {
+    return insertInstanceGroupOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listInstanceGroups. */
   public PagedCallSettings<
           ListInstanceGroupsHttpRequest, InstanceGroupList, ListInstanceGroupsPagedResponse>
@@ -187,12 +225,26 @@ public UnaryCallSettings getInstance
     return removeInstancesInstanceGroupSettings;
   }
 
+  /** Returns the object with the settings used for calls to removeInstancesInstanceGroup. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      removeInstancesInstanceGroupOperationSettings() {
+    return removeInstancesInstanceGroupOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to setNamedPortsInstanceGroup. */
   public UnaryCallSettings
       setNamedPortsInstanceGroupSettings() {
     return setNamedPortsInstanceGroupSettings;
   }
 
+  /** Returns the object with the settings used for calls to setNamedPortsInstanceGroup. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setNamedPortsInstanceGroupOperationSettings() {
+    return setNamedPortsInstanceGroupOperationSettings;
+  }
+
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   public InstanceGroupStub createStub() throws IOException {
     if (getTransportChannelProvider()
@@ -269,18 +321,28 @@ protected InstanceGroupStubSettings(Builder settingsBuilder) throws IOException
     super(settingsBuilder);
 
     addInstancesInstanceGroupSettings = settingsBuilder.addInstancesInstanceGroupSettings().build();
+    addInstancesInstanceGroupOperationSettings =
+        settingsBuilder.addInstancesInstanceGroupOperationSettings().build();
     aggregatedListInstanceGroupsSettings =
         settingsBuilder.aggregatedListInstanceGroupsSettings().build();
     deleteInstanceGroupSettings = settingsBuilder.deleteInstanceGroupSettings().build();
+    deleteInstanceGroupOperationSettings =
+        settingsBuilder.deleteInstanceGroupOperationSettings().build();
     getInstanceGroupSettings = settingsBuilder.getInstanceGroupSettings().build();
     insertInstanceGroupSettings = settingsBuilder.insertInstanceGroupSettings().build();
+    insertInstanceGroupOperationSettings =
+        settingsBuilder.insertInstanceGroupOperationSettings().build();
     listInstanceGroupsSettings = settingsBuilder.listInstanceGroupsSettings().build();
     listInstancesInstanceGroupsSettings =
         settingsBuilder.listInstancesInstanceGroupsSettings().build();
     removeInstancesInstanceGroupSettings =
         settingsBuilder.removeInstancesInstanceGroupSettings().build();
+    removeInstancesInstanceGroupOperationSettings =
+        settingsBuilder.removeInstancesInstanceGroupOperationSettings().build();
     setNamedPortsInstanceGroupSettings =
         settingsBuilder.setNamedPortsInstanceGroupSettings().build();
+    setNamedPortsInstanceGroupOperationSettings =
+        settingsBuilder.setNamedPortsInstanceGroupOperationSettings().build();
   }
 
   private static final PagedListDescriptor<
@@ -507,6 +569,9 @@ public static class Builder extends StubSettings.Builder
         addInstancesInstanceGroupSettings;
+    private final OperationCallSettings.Builder<
+            AddInstancesInstanceGroupHttpRequest, EmptyMessage, Operation>
+        addInstancesInstanceGroupOperationSettings;
     private final PagedCallSettings.Builder<
             AggregatedListInstanceGroupsHttpRequest,
             InstanceGroupAggregatedList,
@@ -514,10 +579,16 @@ public static class Builder extends StubSettings.Builder
         deleteInstanceGroupSettings;
+    private final OperationCallSettings.Builder<
+            DeleteInstanceGroupHttpRequest, EmptyMessage, Operation>
+        deleteInstanceGroupOperationSettings;
     private final UnaryCallSettings.Builder
         getInstanceGroupSettings;
     private final UnaryCallSettings.Builder
         insertInstanceGroupSettings;
+    private final OperationCallSettings.Builder<
+            InsertInstanceGroupHttpRequest, EmptyMessage, Operation>
+        insertInstanceGroupOperationSettings;
     private final PagedCallSettings.Builder<
             ListInstanceGroupsHttpRequest, InstanceGroupList, ListInstanceGroupsPagedResponse>
         listInstanceGroupsSettings;
@@ -528,8 +599,14 @@ public static class Builder extends StubSettings.Builder
         removeInstancesInstanceGroupSettings;
+    private final OperationCallSettings.Builder<
+            RemoveInstancesInstanceGroupHttpRequest, EmptyMessage, Operation>
+        removeInstancesInstanceGroupOperationSettings;
     private final UnaryCallSettings.Builder
         setNamedPortsInstanceGroupSettings;
+    private final OperationCallSettings.Builder<
+            SetNamedPortsInstanceGroupHttpRequest, EmptyMessage, Operation>
+        setNamedPortsInstanceGroupOperationSettings;
 
     private static final ImmutableMap>
         RETRYABLE_CODE_DEFINITIONS;
@@ -574,15 +651,21 @@ protected Builder(ClientContext clientContext) {
 
       addInstancesInstanceGroupSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      addInstancesInstanceGroupOperationSettings = OperationCallSettings.newBuilder();
+
       aggregatedListInstanceGroupsSettings =
           PagedCallSettings.newBuilder(AGGREGATED_LIST_INSTANCE_GROUPS_PAGE_STR_FACT);
 
       deleteInstanceGroupSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteInstanceGroupOperationSettings = OperationCallSettings.newBuilder();
+
       getInstanceGroupSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertInstanceGroupSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertInstanceGroupOperationSettings = OperationCallSettings.newBuilder();
+
       listInstanceGroupsSettings = PagedCallSettings.newBuilder(LIST_INSTANCE_GROUPS_PAGE_STR_FACT);
 
       listInstancesInstanceGroupsSettings =
@@ -590,8 +673,12 @@ protected Builder(ClientContext clientContext) {
 
       removeInstancesInstanceGroupSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      removeInstancesInstanceGroupOperationSettings = OperationCallSettings.newBuilder();
+
       setNamedPortsInstanceGroupSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setNamedPortsInstanceGroupOperationSettings = OperationCallSettings.newBuilder();
+
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
               addInstancesInstanceGroupSettings,
@@ -662,6 +749,114 @@ private static Builder initDefaults(Builder builder) {
           .setNamedPortsInstanceGroupSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .addInstancesInstanceGroupOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .deleteInstanceGroupOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertInstanceGroupOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .removeInstancesInstanceGroupOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setNamedPortsInstanceGroupOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -670,17 +865,27 @@ protected Builder(InstanceGroupStubSettings settings) {
       super(settings);
 
       addInstancesInstanceGroupSettings = settings.addInstancesInstanceGroupSettings.toBuilder();
+      addInstancesInstanceGroupOperationSettings =
+          settings.addInstancesInstanceGroupOperationSettings.toBuilder();
       aggregatedListInstanceGroupsSettings =
           settings.aggregatedListInstanceGroupsSettings.toBuilder();
       deleteInstanceGroupSettings = settings.deleteInstanceGroupSettings.toBuilder();
+      deleteInstanceGroupOperationSettings =
+          settings.deleteInstanceGroupOperationSettings.toBuilder();
       getInstanceGroupSettings = settings.getInstanceGroupSettings.toBuilder();
       insertInstanceGroupSettings = settings.insertInstanceGroupSettings.toBuilder();
+      insertInstanceGroupOperationSettings =
+          settings.insertInstanceGroupOperationSettings.toBuilder();
       listInstanceGroupsSettings = settings.listInstanceGroupsSettings.toBuilder();
       listInstancesInstanceGroupsSettings =
           settings.listInstancesInstanceGroupsSettings.toBuilder();
       removeInstancesInstanceGroupSettings =
           settings.removeInstancesInstanceGroupSettings.toBuilder();
+      removeInstancesInstanceGroupOperationSettings =
+          settings.removeInstancesInstanceGroupOperationSettings.toBuilder();
       setNamedPortsInstanceGroupSettings = settings.setNamedPortsInstanceGroupSettings.toBuilder();
+      setNamedPortsInstanceGroupOperationSettings =
+          settings.setNamedPortsInstanceGroupOperationSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
@@ -717,6 +922,15 @@ public Builder applyToAllUnaryMethods(
       return addInstancesInstanceGroupSettings;
     }
 
+    /** Returns the builder for the settings used for calls to addInstancesInstanceGroup. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            AddInstancesInstanceGroupHttpRequest, EmptyMessage, Operation>
+        addInstancesInstanceGroupOperationSettings() {
+      return addInstancesInstanceGroupOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to aggregatedListInstanceGroups. */
     public PagedCallSettings.Builder<
             AggregatedListInstanceGroupsHttpRequest,
@@ -732,6 +946,14 @@ public Builder applyToAllUnaryMethods(
       return deleteInstanceGroupSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteInstanceGroup. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteInstanceGroupOperationSettings() {
+      return deleteInstanceGroupOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getInstanceGroup. */
     public UnaryCallSettings.Builder
         getInstanceGroupSettings() {
@@ -744,6 +966,14 @@ public Builder applyToAllUnaryMethods(
       return insertInstanceGroupSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertInstanceGroup. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertInstanceGroupOperationSettings() {
+      return insertInstanceGroupOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listInstanceGroups. */
     public PagedCallSettings.Builder<
             ListInstanceGroupsHttpRequest, InstanceGroupList, ListInstanceGroupsPagedResponse>
@@ -766,12 +996,30 @@ public Builder applyToAllUnaryMethods(
       return removeInstancesInstanceGroupSettings;
     }
 
+    /** Returns the builder for the settings used for calls to removeInstancesInstanceGroup. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            RemoveInstancesInstanceGroupHttpRequest, EmptyMessage, Operation>
+        removeInstancesInstanceGroupOperationSettings() {
+      return removeInstancesInstanceGroupOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to setNamedPortsInstanceGroup. */
     public UnaryCallSettings.Builder
         setNamedPortsInstanceGroupSettings() {
       return setNamedPortsInstanceGroupSettings;
     }
 
+    /** Returns the builder for the settings used for calls to setNamedPortsInstanceGroup. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetNamedPortsInstanceGroupHttpRequest, EmptyMessage, Operation>
+        setNamedPortsInstanceGroupOperationSettings() {
+      return setNamedPortsInstanceGroupOperationSettings;
+    }
+
     @Override
     public InstanceGroupStubSettings build() throws IOException {
       return new InstanceGroupStubSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceStub.java
index e06e430fa527..9eb9f5f3304f 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceStub.java
@@ -21,6 +21,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.AddAccessConfigInstanceHttpRequest;
 import com.google.cloud.compute.v1.AggregatedListInstancesHttpRequest;
@@ -73,6 +75,18 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class InstanceStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public ZoneOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      addAccessConfigInstanceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: addAccessConfigInstanceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       addAccessConfigInstanceCallable() {
@@ -92,16 +106,36 @@ public abstract class InstanceStub implements BackgroundResource {
     throw new UnsupportedOperationException("Not implemented: aggregatedListInstancesCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      attachDiskInstanceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: attachDiskInstanceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable attachDiskInstanceCallable() {
     throw new UnsupportedOperationException("Not implemented: attachDiskInstanceCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteInstanceOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: deleteInstanceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteInstanceCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteInstanceCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteAccessConfigInstanceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteAccessConfigInstanceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       deleteAccessConfigInstanceCallable() {
@@ -109,6 +143,13 @@ public UnaryCallable deleteInstanceCallabl
         "Not implemented: deleteAccessConfigInstanceCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      detachDiskInstanceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: detachDiskInstanceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable detachDiskInstanceCallable() {
     throw new UnsupportedOperationException("Not implemented: detachDiskInstanceCallable()");
@@ -131,6 +172,12 @@ public UnaryCallable getIamPolicyInstan
         "Not implemented: getSerialPortOutputInstanceCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertInstanceOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: insertInstanceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertInstanceCallable() {
     throw new UnsupportedOperationException("Not implemented: insertInstanceCallable()");
@@ -160,11 +207,24 @@ public UnaryCallable listInstancesCallab
     throw new UnsupportedOperationException("Not implemented: listReferrersInstancesCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      resetInstanceOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: resetInstanceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable resetInstanceCallable() {
     throw new UnsupportedOperationException("Not implemented: resetInstanceCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setDeletionProtectionInstanceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setDeletionProtectionInstanceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setDeletionProtectionInstanceCallable() {
@@ -172,6 +232,13 @@ public UnaryCallable resetInstanceCallable(
         "Not implemented: setDeletionProtectionInstanceCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setDiskAutoDeleteInstanceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setDiskAutoDeleteInstanceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setDiskAutoDeleteInstanceCallable() {
@@ -183,11 +250,25 @@ public UnaryCallable setIamPolicyInstan
     throw new UnsupportedOperationException("Not implemented: setIamPolicyInstanceCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setLabelsInstanceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setLabelsInstanceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable setLabelsInstanceCallable() {
     throw new UnsupportedOperationException("Not implemented: setLabelsInstanceCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setMachineResourcesInstanceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setMachineResourcesInstanceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setMachineResourcesInstanceCallable() {
@@ -195,40 +276,88 @@ public UnaryCallable setLabelsInstanceC
         "Not implemented: setMachineResourcesInstanceCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setMachineTypeInstanceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setMachineTypeInstanceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setMachineTypeInstanceCallable() {
     throw new UnsupportedOperationException("Not implemented: setMachineTypeInstanceCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setMetadataInstanceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setMetadataInstanceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable setMetadataInstanceCallable() {
     throw new UnsupportedOperationException("Not implemented: setMetadataInstanceCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setMinCpuPlatformInstanceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setMinCpuPlatformInstanceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setMinCpuPlatformInstanceCallable() {
     throw new UnsupportedOperationException("Not implemented: setMinCpuPlatformInstanceCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setSchedulingInstanceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setSchedulingInstanceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setSchedulingInstanceCallable() {
     throw new UnsupportedOperationException("Not implemented: setSchedulingInstanceCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setServiceAccountInstanceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setServiceAccountInstanceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setServiceAccountInstanceCallable() {
     throw new UnsupportedOperationException("Not implemented: setServiceAccountInstanceCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setTagsInstanceOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: setTagsInstanceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable setTagsInstanceCallable() {
     throw new UnsupportedOperationException("Not implemented: setTagsInstanceCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      simulateMaintenanceEventInstanceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: simulateMaintenanceEventInstanceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       simulateMaintenanceEventInstanceCallable() {
@@ -236,11 +365,24 @@ public UnaryCallable setTagsInstanceCalla
         "Not implemented: simulateMaintenanceEventInstanceCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      startInstanceOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: startInstanceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable startInstanceCallable() {
     throw new UnsupportedOperationException("Not implemented: startInstanceCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      startWithEncryptionKeyInstanceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: startWithEncryptionKeyInstanceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       startWithEncryptionKeyInstanceCallable() {
@@ -248,6 +390,12 @@ public UnaryCallable startInstanceCallable(
         "Not implemented: startWithEncryptionKeyInstanceCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      stopInstanceOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: stopInstanceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable stopInstanceCallable() {
     throw new UnsupportedOperationException("Not implemented: stopInstanceCallable()");
@@ -260,6 +408,13 @@ public UnaryCallable stopInstanceCallable()
         "Not implemented: testIamPermissionsInstanceCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      updateAccessConfigInstanceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: updateAccessConfigInstanceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       updateAccessConfigInstanceCallable() {
@@ -267,6 +422,13 @@ public UnaryCallable stopInstanceCallable()
         "Not implemented: updateAccessConfigInstanceCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      updateNetworkInterfaceInstanceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: updateNetworkInterfaceInstanceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       updateNetworkInterfaceInstanceCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceStubSettings.java
index 89dc19dc04e1..d806b2799f40 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceStubSettings.java
@@ -25,13 +25,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -106,13 +111,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of addAccessConfigInstance to 30 seconds: + * example, to set the total timeout of getInstance to 30 seconds: * *

  * 
  * InstanceStubSettings.Builder instanceSettingsBuilder =
  *     InstanceStubSettings.newBuilder();
- * instanceSettingsBuilder.addAccessConfigInstanceSettings().getRetrySettings().toBuilder()
+ * instanceSettingsBuilder.getInstanceSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * InstanceStubSettings instanceSettings = instanceSettingsBuilder.build();
  * 
@@ -134,6 +139,8 @@ public class InstanceStubSettings extends StubSettings {
 
   private final UnaryCallSettings
       addAccessConfigInstanceSettings;
+  private final OperationCallSettings
+      addAccessConfigInstanceOperationSettings;
   private final PagedCallSettings<
           AggregatedListInstancesHttpRequest,
           InstanceAggregatedList,
@@ -141,17 +148,28 @@ public class InstanceStubSettings extends StubSettings {
       aggregatedListInstancesSettings;
   private final UnaryCallSettings
       attachDiskInstanceSettings;
+  private final OperationCallSettings
+      attachDiskInstanceOperationSettings;
   private final UnaryCallSettings deleteInstanceSettings;
+  private final OperationCallSettings
+      deleteInstanceOperationSettings;
   private final UnaryCallSettings
       deleteAccessConfigInstanceSettings;
+  private final OperationCallSettings<
+          DeleteAccessConfigInstanceHttpRequest, EmptyMessage, Operation>
+      deleteAccessConfigInstanceOperationSettings;
   private final UnaryCallSettings
       detachDiskInstanceSettings;
+  private final OperationCallSettings
+      detachDiskInstanceOperationSettings;
   private final UnaryCallSettings getInstanceSettings;
   private final UnaryCallSettings
       getIamPolicyInstanceSettings;
   private final UnaryCallSettings
       getSerialPortOutputInstanceSettings;
   private final UnaryCallSettings insertInstanceSettings;
+  private final OperationCallSettings
+      insertInstanceOperationSettings;
   private final PagedCallSettings<
           ListInstancesHttpRequest, InstanceList, ListInstancesPagedResponse>
       listInstancesSettings;
@@ -161,39 +179,79 @@ public class InstanceStubSettings extends StubSettings {
           ListReferrersInstancesPagedResponse>
       listReferrersInstancesSettings;
   private final UnaryCallSettings resetInstanceSettings;
+  private final OperationCallSettings
+      resetInstanceOperationSettings;
   private final UnaryCallSettings
       setDeletionProtectionInstanceSettings;
+  private final OperationCallSettings<
+          SetDeletionProtectionInstanceHttpRequest, EmptyMessage, Operation>
+      setDeletionProtectionInstanceOperationSettings;
   private final UnaryCallSettings
       setDiskAutoDeleteInstanceSettings;
+  private final OperationCallSettings
+      setDiskAutoDeleteInstanceOperationSettings;
   private final UnaryCallSettings
       setIamPolicyInstanceSettings;
   private final UnaryCallSettings
       setLabelsInstanceSettings;
+  private final OperationCallSettings
+      setLabelsInstanceOperationSettings;
   private final UnaryCallSettings
       setMachineResourcesInstanceSettings;
+  private final OperationCallSettings<
+          SetMachineResourcesInstanceHttpRequest, EmptyMessage, Operation>
+      setMachineResourcesInstanceOperationSettings;
   private final UnaryCallSettings
       setMachineTypeInstanceSettings;
+  private final OperationCallSettings
+      setMachineTypeInstanceOperationSettings;
   private final UnaryCallSettings
       setMetadataInstanceSettings;
+  private final OperationCallSettings
+      setMetadataInstanceOperationSettings;
   private final UnaryCallSettings
       setMinCpuPlatformInstanceSettings;
+  private final OperationCallSettings
+      setMinCpuPlatformInstanceOperationSettings;
   private final UnaryCallSettings
       setSchedulingInstanceSettings;
+  private final OperationCallSettings
+      setSchedulingInstanceOperationSettings;
   private final UnaryCallSettings
       setServiceAccountInstanceSettings;
+  private final OperationCallSettings
+      setServiceAccountInstanceOperationSettings;
   private final UnaryCallSettings setTagsInstanceSettings;
+  private final OperationCallSettings
+      setTagsInstanceOperationSettings;
   private final UnaryCallSettings
       simulateMaintenanceEventInstanceSettings;
+  private final OperationCallSettings<
+          SimulateMaintenanceEventInstanceHttpRequest, EmptyMessage, Operation>
+      simulateMaintenanceEventInstanceOperationSettings;
   private final UnaryCallSettings startInstanceSettings;
+  private final OperationCallSettings
+      startInstanceOperationSettings;
   private final UnaryCallSettings
       startWithEncryptionKeyInstanceSettings;
+  private final OperationCallSettings<
+          StartWithEncryptionKeyInstanceHttpRequest, EmptyMessage, Operation>
+      startWithEncryptionKeyInstanceOperationSettings;
   private final UnaryCallSettings stopInstanceSettings;
+  private final OperationCallSettings
+      stopInstanceOperationSettings;
   private final UnaryCallSettings
       testIamPermissionsInstanceSettings;
   private final UnaryCallSettings
       updateAccessConfigInstanceSettings;
+  private final OperationCallSettings<
+          UpdateAccessConfigInstanceHttpRequest, EmptyMessage, Operation>
+      updateAccessConfigInstanceOperationSettings;
   private final UnaryCallSettings
       updateNetworkInterfaceInstanceSettings;
+  private final OperationCallSettings<
+          UpdateNetworkInterfaceInstanceHttpRequest, EmptyMessage, Operation>
+      updateNetworkInterfaceInstanceOperationSettings;
 
   /** Returns the object with the settings used for calls to addAccessConfigInstance. */
   public UnaryCallSettings
@@ -201,6 +259,13 @@ public class InstanceStubSettings extends StubSettings {
     return addAccessConfigInstanceSettings;
   }
 
+  /** Returns the object with the settings used for calls to addAccessConfigInstance. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      addAccessConfigInstanceOperationSettings() {
+    return addAccessConfigInstanceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to aggregatedListInstances. */
   public PagedCallSettings<
           AggregatedListInstancesHttpRequest,
@@ -215,22 +280,50 @@ public UnaryCallSettings attachDiskIns
     return attachDiskInstanceSettings;
   }
 
+  /** Returns the object with the settings used for calls to attachDiskInstance. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      attachDiskInstanceOperationSettings() {
+    return attachDiskInstanceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to deleteInstance. */
   public UnaryCallSettings deleteInstanceSettings() {
     return deleteInstanceSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteInstance. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteInstanceOperationSettings() {
+    return deleteInstanceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to deleteAccessConfigInstance. */
   public UnaryCallSettings
       deleteAccessConfigInstanceSettings() {
     return deleteAccessConfigInstanceSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteAccessConfigInstance. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteAccessConfigInstanceOperationSettings() {
+    return deleteAccessConfigInstanceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to detachDiskInstance. */
   public UnaryCallSettings detachDiskInstanceSettings() {
     return detachDiskInstanceSettings;
   }
 
+  /** Returns the object with the settings used for calls to detachDiskInstance. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      detachDiskInstanceOperationSettings() {
+    return detachDiskInstanceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getInstance. */
   public UnaryCallSettings getInstanceSettings() {
     return getInstanceSettings;
@@ -252,6 +345,13 @@ public UnaryCallSettings insertInstanceSet
     return insertInstanceSettings;
   }
 
+  /** Returns the object with the settings used for calls to insertInstance. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertInstanceOperationSettings() {
+    return insertInstanceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listInstances. */
   public PagedCallSettings
       listInstancesSettings() {
@@ -272,18 +372,39 @@ public UnaryCallSettings resetInstanceSetti
     return resetInstanceSettings;
   }
 
+  /** Returns the object with the settings used for calls to resetInstance. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      resetInstanceOperationSettings() {
+    return resetInstanceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to setDeletionProtectionInstance. */
   public UnaryCallSettings
       setDeletionProtectionInstanceSettings() {
     return setDeletionProtectionInstanceSettings;
   }
 
+  /** Returns the object with the settings used for calls to setDeletionProtectionInstance. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setDeletionProtectionInstanceOperationSettings() {
+    return setDeletionProtectionInstanceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to setDiskAutoDeleteInstance. */
   public UnaryCallSettings
       setDiskAutoDeleteInstanceSettings() {
     return setDiskAutoDeleteInstanceSettings;
   }
 
+  /** Returns the object with the settings used for calls to setDiskAutoDeleteInstance. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setDiskAutoDeleteInstanceOperationSettings() {
+    return setDiskAutoDeleteInstanceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to setIamPolicyInstance. */
   public UnaryCallSettings setIamPolicyInstanceSettings() {
     return setIamPolicyInstanceSettings;
@@ -294,69 +415,153 @@ public UnaryCallSettings setLabelsInsta
     return setLabelsInstanceSettings;
   }
 
+  /** Returns the object with the settings used for calls to setLabelsInstance. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setLabelsInstanceOperationSettings() {
+    return setLabelsInstanceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to setMachineResourcesInstance. */
   public UnaryCallSettings
       setMachineResourcesInstanceSettings() {
     return setMachineResourcesInstanceSettings;
   }
 
+  /** Returns the object with the settings used for calls to setMachineResourcesInstance. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setMachineResourcesInstanceOperationSettings() {
+    return setMachineResourcesInstanceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to setMachineTypeInstance. */
   public UnaryCallSettings
       setMachineTypeInstanceSettings() {
     return setMachineTypeInstanceSettings;
   }
 
+  /** Returns the object with the settings used for calls to setMachineTypeInstance. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setMachineTypeInstanceOperationSettings() {
+    return setMachineTypeInstanceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to setMetadataInstance. */
   public UnaryCallSettings
       setMetadataInstanceSettings() {
     return setMetadataInstanceSettings;
   }
 
+  /** Returns the object with the settings used for calls to setMetadataInstance. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setMetadataInstanceOperationSettings() {
+    return setMetadataInstanceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to setMinCpuPlatformInstance. */
   public UnaryCallSettings
       setMinCpuPlatformInstanceSettings() {
     return setMinCpuPlatformInstanceSettings;
   }
 
+  /** Returns the object with the settings used for calls to setMinCpuPlatformInstance. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setMinCpuPlatformInstanceOperationSettings() {
+    return setMinCpuPlatformInstanceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to setSchedulingInstance. */
   public UnaryCallSettings
       setSchedulingInstanceSettings() {
     return setSchedulingInstanceSettings;
   }
 
+  /** Returns the object with the settings used for calls to setSchedulingInstance. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setSchedulingInstanceOperationSettings() {
+    return setSchedulingInstanceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to setServiceAccountInstance. */
   public UnaryCallSettings
       setServiceAccountInstanceSettings() {
     return setServiceAccountInstanceSettings;
   }
 
+  /** Returns the object with the settings used for calls to setServiceAccountInstance. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setServiceAccountInstanceOperationSettings() {
+    return setServiceAccountInstanceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to setTagsInstance. */
   public UnaryCallSettings setTagsInstanceSettings() {
     return setTagsInstanceSettings;
   }
 
+  /** Returns the object with the settings used for calls to setTagsInstance. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setTagsInstanceOperationSettings() {
+    return setTagsInstanceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to simulateMaintenanceEventInstance. */
   public UnaryCallSettings
       simulateMaintenanceEventInstanceSettings() {
     return simulateMaintenanceEventInstanceSettings;
   }
 
+  /** Returns the object with the settings used for calls to simulateMaintenanceEventInstance. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      simulateMaintenanceEventInstanceOperationSettings() {
+    return simulateMaintenanceEventInstanceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to startInstance. */
   public UnaryCallSettings startInstanceSettings() {
     return startInstanceSettings;
   }
 
+  /** Returns the object with the settings used for calls to startInstance. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      startInstanceOperationSettings() {
+    return startInstanceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to startWithEncryptionKeyInstance. */
   public UnaryCallSettings
       startWithEncryptionKeyInstanceSettings() {
     return startWithEncryptionKeyInstanceSettings;
   }
 
+  /** Returns the object with the settings used for calls to startWithEncryptionKeyInstance. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      startWithEncryptionKeyInstanceOperationSettings() {
+    return startWithEncryptionKeyInstanceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to stopInstance. */
   public UnaryCallSettings stopInstanceSettings() {
     return stopInstanceSettings;
   }
 
+  /** Returns the object with the settings used for calls to stopInstance. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      stopInstanceOperationSettings() {
+    return stopInstanceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to testIamPermissionsInstance. */
   public UnaryCallSettings
       testIamPermissionsInstanceSettings() {
@@ -369,12 +574,26 @@ public UnaryCallSettings stopInstanceSetting
     return updateAccessConfigInstanceSettings;
   }
 
+  /** Returns the object with the settings used for calls to updateAccessConfigInstance. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      updateAccessConfigInstanceOperationSettings() {
+    return updateAccessConfigInstanceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to updateNetworkInterfaceInstance. */
   public UnaryCallSettings
       updateNetworkInterfaceInstanceSettings() {
     return updateNetworkInterfaceInstanceSettings;
   }
 
+  /** Returns the object with the settings used for calls to updateNetworkInterfaceInstance. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      updateNetworkInterfaceInstanceOperationSettings() {
+    return updateNetworkInterfaceInstanceOperationSettings;
+  }
+
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   public InstanceStub createStub() throws IOException {
     if (getTransportChannelProvider()
@@ -450,45 +669,85 @@ protected InstanceStubSettings(Builder settingsBuilder) throws IOException {
     super(settingsBuilder);
 
     addAccessConfigInstanceSettings = settingsBuilder.addAccessConfigInstanceSettings().build();
+    addAccessConfigInstanceOperationSettings =
+        settingsBuilder.addAccessConfigInstanceOperationSettings().build();
     aggregatedListInstancesSettings = settingsBuilder.aggregatedListInstancesSettings().build();
     attachDiskInstanceSettings = settingsBuilder.attachDiskInstanceSettings().build();
+    attachDiskInstanceOperationSettings =
+        settingsBuilder.attachDiskInstanceOperationSettings().build();
     deleteInstanceSettings = settingsBuilder.deleteInstanceSettings().build();
+    deleteInstanceOperationSettings = settingsBuilder.deleteInstanceOperationSettings().build();
     deleteAccessConfigInstanceSettings =
         settingsBuilder.deleteAccessConfigInstanceSettings().build();
+    deleteAccessConfigInstanceOperationSettings =
+        settingsBuilder.deleteAccessConfigInstanceOperationSettings().build();
     detachDiskInstanceSettings = settingsBuilder.detachDiskInstanceSettings().build();
+    detachDiskInstanceOperationSettings =
+        settingsBuilder.detachDiskInstanceOperationSettings().build();
     getInstanceSettings = settingsBuilder.getInstanceSettings().build();
     getIamPolicyInstanceSettings = settingsBuilder.getIamPolicyInstanceSettings().build();
     getSerialPortOutputInstanceSettings =
         settingsBuilder.getSerialPortOutputInstanceSettings().build();
     insertInstanceSettings = settingsBuilder.insertInstanceSettings().build();
+    insertInstanceOperationSettings = settingsBuilder.insertInstanceOperationSettings().build();
     listInstancesSettings = settingsBuilder.listInstancesSettings().build();
     listReferrersInstancesSettings = settingsBuilder.listReferrersInstancesSettings().build();
     resetInstanceSettings = settingsBuilder.resetInstanceSettings().build();
+    resetInstanceOperationSettings = settingsBuilder.resetInstanceOperationSettings().build();
     setDeletionProtectionInstanceSettings =
         settingsBuilder.setDeletionProtectionInstanceSettings().build();
+    setDeletionProtectionInstanceOperationSettings =
+        settingsBuilder.setDeletionProtectionInstanceOperationSettings().build();
     setDiskAutoDeleteInstanceSettings = settingsBuilder.setDiskAutoDeleteInstanceSettings().build();
+    setDiskAutoDeleteInstanceOperationSettings =
+        settingsBuilder.setDiskAutoDeleteInstanceOperationSettings().build();
     setIamPolicyInstanceSettings = settingsBuilder.setIamPolicyInstanceSettings().build();
     setLabelsInstanceSettings = settingsBuilder.setLabelsInstanceSettings().build();
+    setLabelsInstanceOperationSettings =
+        settingsBuilder.setLabelsInstanceOperationSettings().build();
     setMachineResourcesInstanceSettings =
         settingsBuilder.setMachineResourcesInstanceSettings().build();
+    setMachineResourcesInstanceOperationSettings =
+        settingsBuilder.setMachineResourcesInstanceOperationSettings().build();
     setMachineTypeInstanceSettings = settingsBuilder.setMachineTypeInstanceSettings().build();
+    setMachineTypeInstanceOperationSettings =
+        settingsBuilder.setMachineTypeInstanceOperationSettings().build();
     setMetadataInstanceSettings = settingsBuilder.setMetadataInstanceSettings().build();
+    setMetadataInstanceOperationSettings =
+        settingsBuilder.setMetadataInstanceOperationSettings().build();
     setMinCpuPlatformInstanceSettings = settingsBuilder.setMinCpuPlatformInstanceSettings().build();
+    setMinCpuPlatformInstanceOperationSettings =
+        settingsBuilder.setMinCpuPlatformInstanceOperationSettings().build();
     setSchedulingInstanceSettings = settingsBuilder.setSchedulingInstanceSettings().build();
+    setSchedulingInstanceOperationSettings =
+        settingsBuilder.setSchedulingInstanceOperationSettings().build();
     setServiceAccountInstanceSettings = settingsBuilder.setServiceAccountInstanceSettings().build();
+    setServiceAccountInstanceOperationSettings =
+        settingsBuilder.setServiceAccountInstanceOperationSettings().build();
     setTagsInstanceSettings = settingsBuilder.setTagsInstanceSettings().build();
+    setTagsInstanceOperationSettings = settingsBuilder.setTagsInstanceOperationSettings().build();
     simulateMaintenanceEventInstanceSettings =
         settingsBuilder.simulateMaintenanceEventInstanceSettings().build();
+    simulateMaintenanceEventInstanceOperationSettings =
+        settingsBuilder.simulateMaintenanceEventInstanceOperationSettings().build();
     startInstanceSettings = settingsBuilder.startInstanceSettings().build();
+    startInstanceOperationSettings = settingsBuilder.startInstanceOperationSettings().build();
     startWithEncryptionKeyInstanceSettings =
         settingsBuilder.startWithEncryptionKeyInstanceSettings().build();
+    startWithEncryptionKeyInstanceOperationSettings =
+        settingsBuilder.startWithEncryptionKeyInstanceOperationSettings().build();
     stopInstanceSettings = settingsBuilder.stopInstanceSettings().build();
+    stopInstanceOperationSettings = settingsBuilder.stopInstanceOperationSettings().build();
     testIamPermissionsInstanceSettings =
         settingsBuilder.testIamPermissionsInstanceSettings().build();
     updateAccessConfigInstanceSettings =
         settingsBuilder.updateAccessConfigInstanceSettings().build();
+    updateAccessConfigInstanceOperationSettings =
+        settingsBuilder.updateAccessConfigInstanceOperationSettings().build();
     updateNetworkInterfaceInstanceSettings =
         settingsBuilder.updateNetworkInterfaceInstanceSettings().build();
+    updateNetworkInterfaceInstanceOperationSettings =
+        settingsBuilder.updateNetworkInterfaceInstanceOperationSettings().build();
   }
 
   private static final PagedListDescriptor<
@@ -689,6 +948,9 @@ public static class Builder extends StubSettings.Builder
         addAccessConfigInstanceSettings;
+    private final OperationCallSettings.Builder<
+            AddAccessConfigInstanceHttpRequest, EmptyMessage, Operation>
+        addAccessConfigInstanceOperationSettings;
     private final PagedCallSettings.Builder<
             AggregatedListInstancesHttpRequest,
             InstanceAggregatedList,
@@ -696,12 +958,23 @@ public static class Builder extends StubSettings.Builder
         attachDiskInstanceSettings;
+    private final OperationCallSettings.Builder<
+            AttachDiskInstanceHttpRequest, EmptyMessage, Operation>
+        attachDiskInstanceOperationSettings;
     private final UnaryCallSettings.Builder
         deleteInstanceSettings;
+    private final OperationCallSettings.Builder
+        deleteInstanceOperationSettings;
     private final UnaryCallSettings.Builder
         deleteAccessConfigInstanceSettings;
+    private final OperationCallSettings.Builder<
+            DeleteAccessConfigInstanceHttpRequest, EmptyMessage, Operation>
+        deleteAccessConfigInstanceOperationSettings;
     private final UnaryCallSettings.Builder
         detachDiskInstanceSettings;
+    private final OperationCallSettings.Builder<
+            DetachDiskInstanceHttpRequest, EmptyMessage, Operation>
+        detachDiskInstanceOperationSettings;
     private final UnaryCallSettings.Builder getInstanceSettings;
     private final UnaryCallSettings.Builder
         getIamPolicyInstanceSettings;
@@ -710,6 +983,8 @@ public static class Builder extends StubSettings.Builder
         insertInstanceSettings;
+    private final OperationCallSettings.Builder
+        insertInstanceOperationSettings;
     private final PagedCallSettings.Builder<
             ListInstancesHttpRequest, InstanceList, ListInstancesPagedResponse>
         listInstancesSettings;
@@ -720,43 +995,90 @@ public static class Builder extends StubSettings.Builder
         resetInstanceSettings;
+    private final OperationCallSettings.Builder
+        resetInstanceOperationSettings;
     private final UnaryCallSettings.Builder
         setDeletionProtectionInstanceSettings;
+    private final OperationCallSettings.Builder<
+            SetDeletionProtectionInstanceHttpRequest, EmptyMessage, Operation>
+        setDeletionProtectionInstanceOperationSettings;
     private final UnaryCallSettings.Builder
         setDiskAutoDeleteInstanceSettings;
+    private final OperationCallSettings.Builder<
+            SetDiskAutoDeleteInstanceHttpRequest, EmptyMessage, Operation>
+        setDiskAutoDeleteInstanceOperationSettings;
     private final UnaryCallSettings.Builder
         setIamPolicyInstanceSettings;
     private final UnaryCallSettings.Builder
         setLabelsInstanceSettings;
+    private final OperationCallSettings.Builder<
+            SetLabelsInstanceHttpRequest, EmptyMessage, Operation>
+        setLabelsInstanceOperationSettings;
     private final UnaryCallSettings.Builder
         setMachineResourcesInstanceSettings;
+    private final OperationCallSettings.Builder<
+            SetMachineResourcesInstanceHttpRequest, EmptyMessage, Operation>
+        setMachineResourcesInstanceOperationSettings;
     private final UnaryCallSettings.Builder
         setMachineTypeInstanceSettings;
+    private final OperationCallSettings.Builder<
+            SetMachineTypeInstanceHttpRequest, EmptyMessage, Operation>
+        setMachineTypeInstanceOperationSettings;
     private final UnaryCallSettings.Builder
         setMetadataInstanceSettings;
+    private final OperationCallSettings.Builder<
+            SetMetadataInstanceHttpRequest, EmptyMessage, Operation>
+        setMetadataInstanceOperationSettings;
     private final UnaryCallSettings.Builder
         setMinCpuPlatformInstanceSettings;
+    private final OperationCallSettings.Builder<
+            SetMinCpuPlatformInstanceHttpRequest, EmptyMessage, Operation>
+        setMinCpuPlatformInstanceOperationSettings;
     private final UnaryCallSettings.Builder
         setSchedulingInstanceSettings;
+    private final OperationCallSettings.Builder<
+            SetSchedulingInstanceHttpRequest, EmptyMessage, Operation>
+        setSchedulingInstanceOperationSettings;
     private final UnaryCallSettings.Builder
         setServiceAccountInstanceSettings;
+    private final OperationCallSettings.Builder<
+            SetServiceAccountInstanceHttpRequest, EmptyMessage, Operation>
+        setServiceAccountInstanceOperationSettings;
     private final UnaryCallSettings.Builder
         setTagsInstanceSettings;
+    private final OperationCallSettings.Builder
+        setTagsInstanceOperationSettings;
     private final UnaryCallSettings.Builder
         simulateMaintenanceEventInstanceSettings;
+    private final OperationCallSettings.Builder<
+            SimulateMaintenanceEventInstanceHttpRequest, EmptyMessage, Operation>
+        simulateMaintenanceEventInstanceOperationSettings;
     private final UnaryCallSettings.Builder
         startInstanceSettings;
+    private final OperationCallSettings.Builder
+        startInstanceOperationSettings;
     private final UnaryCallSettings.Builder
         startWithEncryptionKeyInstanceSettings;
+    private final OperationCallSettings.Builder<
+            StartWithEncryptionKeyInstanceHttpRequest, EmptyMessage, Operation>
+        startWithEncryptionKeyInstanceOperationSettings;
     private final UnaryCallSettings.Builder
         stopInstanceSettings;
+    private final OperationCallSettings.Builder
+        stopInstanceOperationSettings;
     private final UnaryCallSettings.Builder<
             TestIamPermissionsInstanceHttpRequest, TestPermissionsResponse>
         testIamPermissionsInstanceSettings;
     private final UnaryCallSettings.Builder
         updateAccessConfigInstanceSettings;
+    private final OperationCallSettings.Builder<
+            UpdateAccessConfigInstanceHttpRequest, EmptyMessage, Operation>
+        updateAccessConfigInstanceOperationSettings;
     private final UnaryCallSettings.Builder
         updateNetworkInterfaceInstanceSettings;
+    private final OperationCallSettings.Builder<
+            UpdateNetworkInterfaceInstanceHttpRequest, EmptyMessage, Operation>
+        updateNetworkInterfaceInstanceOperationSettings;
 
     private static final ImmutableMap>
         RETRYABLE_CODE_DEFINITIONS;
@@ -801,17 +1123,27 @@ protected Builder(ClientContext clientContext) {
 
       addAccessConfigInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      addAccessConfigInstanceOperationSettings = OperationCallSettings.newBuilder();
+
       aggregatedListInstancesSettings =
           PagedCallSettings.newBuilder(AGGREGATED_LIST_INSTANCES_PAGE_STR_FACT);
 
       attachDiskInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      attachDiskInstanceOperationSettings = OperationCallSettings.newBuilder();
+
       deleteInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteInstanceOperationSettings = OperationCallSettings.newBuilder();
+
       deleteAccessConfigInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteAccessConfigInstanceOperationSettings = OperationCallSettings.newBuilder();
+
       detachDiskInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      detachDiskInstanceOperationSettings = OperationCallSettings.newBuilder();
+
       getInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       getIamPolicyInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
@@ -820,6 +1152,8 @@ protected Builder(ClientContext clientContext) {
 
       insertInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertInstanceOperationSettings = OperationCallSettings.newBuilder();
+
       listInstancesSettings = PagedCallSettings.newBuilder(LIST_INSTANCES_PAGE_STR_FACT);
 
       listReferrersInstancesSettings =
@@ -827,42 +1161,76 @@ protected Builder(ClientContext clientContext) {
 
       resetInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      resetInstanceOperationSettings = OperationCallSettings.newBuilder();
+
       setDeletionProtectionInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setDeletionProtectionInstanceOperationSettings = OperationCallSettings.newBuilder();
+
       setDiskAutoDeleteInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setDiskAutoDeleteInstanceOperationSettings = OperationCallSettings.newBuilder();
+
       setIamPolicyInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       setLabelsInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setLabelsInstanceOperationSettings = OperationCallSettings.newBuilder();
+
       setMachineResourcesInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setMachineResourcesInstanceOperationSettings = OperationCallSettings.newBuilder();
+
       setMachineTypeInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setMachineTypeInstanceOperationSettings = OperationCallSettings.newBuilder();
+
       setMetadataInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setMetadataInstanceOperationSettings = OperationCallSettings.newBuilder();
+
       setMinCpuPlatformInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setMinCpuPlatformInstanceOperationSettings = OperationCallSettings.newBuilder();
+
       setSchedulingInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setSchedulingInstanceOperationSettings = OperationCallSettings.newBuilder();
+
       setServiceAccountInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setServiceAccountInstanceOperationSettings = OperationCallSettings.newBuilder();
+
       setTagsInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setTagsInstanceOperationSettings = OperationCallSettings.newBuilder();
+
       simulateMaintenanceEventInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      simulateMaintenanceEventInstanceOperationSettings = OperationCallSettings.newBuilder();
+
       startInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      startInstanceOperationSettings = OperationCallSettings.newBuilder();
+
       startWithEncryptionKeyInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      startWithEncryptionKeyInstanceOperationSettings = OperationCallSettings.newBuilder();
+
       stopInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      stopInstanceOperationSettings = OperationCallSettings.newBuilder();
+
       testIamPermissionsInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       updateAccessConfigInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      updateAccessConfigInstanceOperationSettings = OperationCallSettings.newBuilder();
+
       updateNetworkInterfaceInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      updateNetworkInterfaceInstanceOperationSettings = OperationCallSettings.newBuilder();
+
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
               addAccessConfigInstanceSettings,
@@ -1065,6 +1433,502 @@ private static Builder initDefaults(Builder builder) {
           .updateNetworkInterfaceInstanceSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .addAccessConfigInstanceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .attachDiskInstanceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .deleteInstanceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .deleteAccessConfigInstanceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .detachDiskInstanceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertInstanceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .resetInstanceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setDeletionProtectionInstanceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setDiskAutoDeleteInstanceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setLabelsInstanceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setMachineResourcesInstanceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setMachineTypeInstanceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setMetadataInstanceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setMinCpuPlatformInstanceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setSchedulingInstanceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setServiceAccountInstanceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setTagsInstanceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .simulateMaintenanceEventInstanceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .startInstanceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .startWithEncryptionKeyInstanceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .stopInstanceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .updateAccessConfigInstanceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .updateNetworkInterfaceInstanceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -1073,42 +1937,81 @@ protected Builder(InstanceStubSettings settings) {
       super(settings);
 
       addAccessConfigInstanceSettings = settings.addAccessConfigInstanceSettings.toBuilder();
+      addAccessConfigInstanceOperationSettings =
+          settings.addAccessConfigInstanceOperationSettings.toBuilder();
       aggregatedListInstancesSettings = settings.aggregatedListInstancesSettings.toBuilder();
       attachDiskInstanceSettings = settings.attachDiskInstanceSettings.toBuilder();
+      attachDiskInstanceOperationSettings =
+          settings.attachDiskInstanceOperationSettings.toBuilder();
       deleteInstanceSettings = settings.deleteInstanceSettings.toBuilder();
+      deleteInstanceOperationSettings = settings.deleteInstanceOperationSettings.toBuilder();
       deleteAccessConfigInstanceSettings = settings.deleteAccessConfigInstanceSettings.toBuilder();
+      deleteAccessConfigInstanceOperationSettings =
+          settings.deleteAccessConfigInstanceOperationSettings.toBuilder();
       detachDiskInstanceSettings = settings.detachDiskInstanceSettings.toBuilder();
+      detachDiskInstanceOperationSettings =
+          settings.detachDiskInstanceOperationSettings.toBuilder();
       getInstanceSettings = settings.getInstanceSettings.toBuilder();
       getIamPolicyInstanceSettings = settings.getIamPolicyInstanceSettings.toBuilder();
       getSerialPortOutputInstanceSettings =
           settings.getSerialPortOutputInstanceSettings.toBuilder();
       insertInstanceSettings = settings.insertInstanceSettings.toBuilder();
+      insertInstanceOperationSettings = settings.insertInstanceOperationSettings.toBuilder();
       listInstancesSettings = settings.listInstancesSettings.toBuilder();
       listReferrersInstancesSettings = settings.listReferrersInstancesSettings.toBuilder();
       resetInstanceSettings = settings.resetInstanceSettings.toBuilder();
+      resetInstanceOperationSettings = settings.resetInstanceOperationSettings.toBuilder();
       setDeletionProtectionInstanceSettings =
           settings.setDeletionProtectionInstanceSettings.toBuilder();
+      setDeletionProtectionInstanceOperationSettings =
+          settings.setDeletionProtectionInstanceOperationSettings.toBuilder();
       setDiskAutoDeleteInstanceSettings = settings.setDiskAutoDeleteInstanceSettings.toBuilder();
+      setDiskAutoDeleteInstanceOperationSettings =
+          settings.setDiskAutoDeleteInstanceOperationSettings.toBuilder();
       setIamPolicyInstanceSettings = settings.setIamPolicyInstanceSettings.toBuilder();
       setLabelsInstanceSettings = settings.setLabelsInstanceSettings.toBuilder();
+      setLabelsInstanceOperationSettings = settings.setLabelsInstanceOperationSettings.toBuilder();
       setMachineResourcesInstanceSettings =
           settings.setMachineResourcesInstanceSettings.toBuilder();
+      setMachineResourcesInstanceOperationSettings =
+          settings.setMachineResourcesInstanceOperationSettings.toBuilder();
       setMachineTypeInstanceSettings = settings.setMachineTypeInstanceSettings.toBuilder();
+      setMachineTypeInstanceOperationSettings =
+          settings.setMachineTypeInstanceOperationSettings.toBuilder();
       setMetadataInstanceSettings = settings.setMetadataInstanceSettings.toBuilder();
+      setMetadataInstanceOperationSettings =
+          settings.setMetadataInstanceOperationSettings.toBuilder();
       setMinCpuPlatformInstanceSettings = settings.setMinCpuPlatformInstanceSettings.toBuilder();
+      setMinCpuPlatformInstanceOperationSettings =
+          settings.setMinCpuPlatformInstanceOperationSettings.toBuilder();
       setSchedulingInstanceSettings = settings.setSchedulingInstanceSettings.toBuilder();
+      setSchedulingInstanceOperationSettings =
+          settings.setSchedulingInstanceOperationSettings.toBuilder();
       setServiceAccountInstanceSettings = settings.setServiceAccountInstanceSettings.toBuilder();
+      setServiceAccountInstanceOperationSettings =
+          settings.setServiceAccountInstanceOperationSettings.toBuilder();
       setTagsInstanceSettings = settings.setTagsInstanceSettings.toBuilder();
+      setTagsInstanceOperationSettings = settings.setTagsInstanceOperationSettings.toBuilder();
       simulateMaintenanceEventInstanceSettings =
           settings.simulateMaintenanceEventInstanceSettings.toBuilder();
+      simulateMaintenanceEventInstanceOperationSettings =
+          settings.simulateMaintenanceEventInstanceOperationSettings.toBuilder();
       startInstanceSettings = settings.startInstanceSettings.toBuilder();
+      startInstanceOperationSettings = settings.startInstanceOperationSettings.toBuilder();
       startWithEncryptionKeyInstanceSettings =
           settings.startWithEncryptionKeyInstanceSettings.toBuilder();
+      startWithEncryptionKeyInstanceOperationSettings =
+          settings.startWithEncryptionKeyInstanceOperationSettings.toBuilder();
       stopInstanceSettings = settings.stopInstanceSettings.toBuilder();
+      stopInstanceOperationSettings = settings.stopInstanceOperationSettings.toBuilder();
       testIamPermissionsInstanceSettings = settings.testIamPermissionsInstanceSettings.toBuilder();
       updateAccessConfigInstanceSettings = settings.updateAccessConfigInstanceSettings.toBuilder();
+      updateAccessConfigInstanceOperationSettings =
+          settings.updateAccessConfigInstanceOperationSettings.toBuilder();
       updateNetworkInterfaceInstanceSettings =
           settings.updateNetworkInterfaceInstanceSettings.toBuilder();
+      updateNetworkInterfaceInstanceOperationSettings =
+          settings.updateNetworkInterfaceInstanceOperationSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
@@ -1167,6 +2070,15 @@ public Builder applyToAllUnaryMethods(
       return addAccessConfigInstanceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to addAccessConfigInstance. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            AddAccessConfigInstanceHttpRequest, EmptyMessage, Operation>
+        addAccessConfigInstanceOperationSettings() {
+      return addAccessConfigInstanceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to aggregatedListInstances. */
     public PagedCallSettings.Builder<
             AggregatedListInstancesHttpRequest,
@@ -1182,24 +2094,57 @@ public Builder applyToAllUnaryMethods(
       return attachDiskInstanceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to attachDiskInstance. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        attachDiskInstanceOperationSettings() {
+      return attachDiskInstanceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to deleteInstance. */
     public UnaryCallSettings.Builder
         deleteInstanceSettings() {
       return deleteInstanceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteInstance. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteInstanceOperationSettings() {
+      return deleteInstanceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to deleteAccessConfigInstance. */
     public UnaryCallSettings.Builder
         deleteAccessConfigInstanceSettings() {
       return deleteAccessConfigInstanceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteAccessConfigInstance. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            DeleteAccessConfigInstanceHttpRequest, EmptyMessage, Operation>
+        deleteAccessConfigInstanceOperationSettings() {
+      return deleteAccessConfigInstanceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to detachDiskInstance. */
     public UnaryCallSettings.Builder
         detachDiskInstanceSettings() {
       return detachDiskInstanceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to detachDiskInstance. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        detachDiskInstanceOperationSettings() {
+      return detachDiskInstanceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getInstance. */
     public UnaryCallSettings.Builder getInstanceSettings() {
       return getInstanceSettings;
@@ -1223,6 +2168,14 @@ public UnaryCallSettings.Builder getInstanceSe
       return insertInstanceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertInstance. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertInstanceOperationSettings() {
+      return insertInstanceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listInstances. */
     public PagedCallSettings.Builder<
             ListInstancesHttpRequest, InstanceList, ListInstancesPagedResponse>
@@ -1244,18 +2197,44 @@ public UnaryCallSettings.Builder resetInsta
       return resetInstanceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to resetInstance. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        resetInstanceOperationSettings() {
+      return resetInstanceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to setDeletionProtectionInstance. */
     public UnaryCallSettings.Builder
         setDeletionProtectionInstanceSettings() {
       return setDeletionProtectionInstanceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to setDeletionProtectionInstance. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetDeletionProtectionInstanceHttpRequest, EmptyMessage, Operation>
+        setDeletionProtectionInstanceOperationSettings() {
+      return setDeletionProtectionInstanceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to setDiskAutoDeleteInstance. */
     public UnaryCallSettings.Builder
         setDiskAutoDeleteInstanceSettings() {
       return setDiskAutoDeleteInstanceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to setDiskAutoDeleteInstance. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetDiskAutoDeleteInstanceHttpRequest, EmptyMessage, Operation>
+        setDiskAutoDeleteInstanceOperationSettings() {
+      return setDiskAutoDeleteInstanceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to setIamPolicyInstance. */
     public UnaryCallSettings.Builder
         setIamPolicyInstanceSettings() {
@@ -1268,70 +2247,171 @@ public UnaryCallSettings.Builder resetInsta
       return setLabelsInstanceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to setLabelsInstance. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        setLabelsInstanceOperationSettings() {
+      return setLabelsInstanceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to setMachineResourcesInstance. */
     public UnaryCallSettings.Builder
         setMachineResourcesInstanceSettings() {
       return setMachineResourcesInstanceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to setMachineResourcesInstance. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetMachineResourcesInstanceHttpRequest, EmptyMessage, Operation>
+        setMachineResourcesInstanceOperationSettings() {
+      return setMachineResourcesInstanceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to setMachineTypeInstance. */
     public UnaryCallSettings.Builder
         setMachineTypeInstanceSettings() {
       return setMachineTypeInstanceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to setMachineTypeInstance. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        setMachineTypeInstanceOperationSettings() {
+      return setMachineTypeInstanceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to setMetadataInstance. */
     public UnaryCallSettings.Builder
         setMetadataInstanceSettings() {
       return setMetadataInstanceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to setMetadataInstance. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        setMetadataInstanceOperationSettings() {
+      return setMetadataInstanceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to setMinCpuPlatformInstance. */
     public UnaryCallSettings.Builder
         setMinCpuPlatformInstanceSettings() {
       return setMinCpuPlatformInstanceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to setMinCpuPlatformInstance. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetMinCpuPlatformInstanceHttpRequest, EmptyMessage, Operation>
+        setMinCpuPlatformInstanceOperationSettings() {
+      return setMinCpuPlatformInstanceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to setSchedulingInstance. */
     public UnaryCallSettings.Builder
         setSchedulingInstanceSettings() {
       return setSchedulingInstanceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to setSchedulingInstance. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        setSchedulingInstanceOperationSettings() {
+      return setSchedulingInstanceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to setServiceAccountInstance. */
     public UnaryCallSettings.Builder
         setServiceAccountInstanceSettings() {
       return setServiceAccountInstanceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to setServiceAccountInstance. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetServiceAccountInstanceHttpRequest, EmptyMessage, Operation>
+        setServiceAccountInstanceOperationSettings() {
+      return setServiceAccountInstanceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to setTagsInstance. */
     public UnaryCallSettings.Builder
         setTagsInstanceSettings() {
       return setTagsInstanceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to setTagsInstance. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        setTagsInstanceOperationSettings() {
+      return setTagsInstanceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to simulateMaintenanceEventInstance. */
     public UnaryCallSettings.Builder
         simulateMaintenanceEventInstanceSettings() {
       return simulateMaintenanceEventInstanceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to simulateMaintenanceEventInstance. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SimulateMaintenanceEventInstanceHttpRequest, EmptyMessage, Operation>
+        simulateMaintenanceEventInstanceOperationSettings() {
+      return simulateMaintenanceEventInstanceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to startInstance. */
     public UnaryCallSettings.Builder startInstanceSettings() {
       return startInstanceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to startInstance. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        startInstanceOperationSettings() {
+      return startInstanceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to startWithEncryptionKeyInstance. */
     public UnaryCallSettings.Builder
         startWithEncryptionKeyInstanceSettings() {
       return startWithEncryptionKeyInstanceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to startWithEncryptionKeyInstance. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            StartWithEncryptionKeyInstanceHttpRequest, EmptyMessage, Operation>
+        startWithEncryptionKeyInstanceOperationSettings() {
+      return startWithEncryptionKeyInstanceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to stopInstance. */
     public UnaryCallSettings.Builder stopInstanceSettings() {
       return stopInstanceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to stopInstance. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        stopInstanceOperationSettings() {
+      return stopInstanceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to testIamPermissionsInstance. */
     public UnaryCallSettings.Builder
         testIamPermissionsInstanceSettings() {
@@ -1344,12 +2424,30 @@ public UnaryCallSettings.Builder stopInstanc
       return updateAccessConfigInstanceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to updateAccessConfigInstance. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            UpdateAccessConfigInstanceHttpRequest, EmptyMessage, Operation>
+        updateAccessConfigInstanceOperationSettings() {
+      return updateAccessConfigInstanceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to updateNetworkInterfaceInstance. */
     public UnaryCallSettings.Builder
         updateNetworkInterfaceInstanceSettings() {
       return updateNetworkInterfaceInstanceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to updateNetworkInterfaceInstance. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            UpdateNetworkInterfaceInstanceHttpRequest, EmptyMessage, Operation>
+        updateNetworkInterfaceInstanceOperationSettings() {
+      return updateNetworkInterfaceInstanceOperationSettings;
+    }
+
     @Override
     public InstanceStubSettings build() throws IOException {
       return new InstanceStubSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceTemplateStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceTemplateStub.java
index c92f7c018a8f..7549c0f6f2a9 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceTemplateStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceTemplateStub.java
@@ -19,6 +19,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.DeleteInstanceTemplateHttpRequest;
 import com.google.cloud.compute.v1.GetIamPolicyInstanceTemplateHttpRequest;
@@ -44,6 +46,18 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class InstanceTemplateStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public GlobalOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteInstanceTemplateOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteInstanceTemplateOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       deleteInstanceTemplateCallable() {
@@ -63,6 +77,13 @@ public abstract class InstanceTemplateStub implements BackgroundResource {
         "Not implemented: getIamPolicyInstanceTemplateCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertInstanceTemplateOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: insertInstanceTemplateOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       insertInstanceTemplateCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceTemplateStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceTemplateStubSettings.java
index 929ef444f52f..50faab2039b1 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceTemplateStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InstanceTemplateStubSettings.java
@@ -23,13 +23,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -75,13 +80,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteInstanceTemplate to 30 seconds: + * example, to set the total timeout of getInstanceTemplate to 30 seconds: * *

  * 
  * InstanceTemplateStubSettings.Builder instanceTemplateSettingsBuilder =
  *     InstanceTemplateStubSettings.newBuilder();
- * instanceTemplateSettingsBuilder.deleteInstanceTemplateSettings().getRetrySettings().toBuilder()
+ * instanceTemplateSettingsBuilder.getInstanceTemplateSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * InstanceTemplateStubSettings instanceTemplateSettings = instanceTemplateSettingsBuilder.build();
  * 
@@ -103,12 +108,16 @@ public class InstanceTemplateStubSettings extends StubSettings
       deleteInstanceTemplateSettings;
+  private final OperationCallSettings
+      deleteInstanceTemplateOperationSettings;
   private final UnaryCallSettings
       getInstanceTemplateSettings;
   private final UnaryCallSettings
       getIamPolicyInstanceTemplateSettings;
   private final UnaryCallSettings
       insertInstanceTemplateSettings;
+  private final OperationCallSettings
+      insertInstanceTemplateOperationSettings;
   private final PagedCallSettings<
           ListInstanceTemplatesHttpRequest,
           InstanceTemplateList,
@@ -126,6 +135,13 @@ public class InstanceTemplateStubSettings extends StubSettings
+      deleteInstanceTemplateOperationSettings() {
+    return deleteInstanceTemplateOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getInstanceTemplate. */
   public UnaryCallSettings
       getInstanceTemplateSettings() {
@@ -144,6 +160,13 @@ public class InstanceTemplateStubSettings extends StubSettings
+      insertInstanceTemplateOperationSettings() {
+    return insertInstanceTemplateOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listInstanceTemplates. */
   public PagedCallSettings<
           ListInstanceTemplatesHttpRequest,
@@ -241,10 +264,14 @@ protected InstanceTemplateStubSettings(Builder settingsBuilder) throws IOExcepti
     super(settingsBuilder);
 
     deleteInstanceTemplateSettings = settingsBuilder.deleteInstanceTemplateSettings().build();
+    deleteInstanceTemplateOperationSettings =
+        settingsBuilder.deleteInstanceTemplateOperationSettings().build();
     getInstanceTemplateSettings = settingsBuilder.getInstanceTemplateSettings().build();
     getIamPolicyInstanceTemplateSettings =
         settingsBuilder.getIamPolicyInstanceTemplateSettings().build();
     insertInstanceTemplateSettings = settingsBuilder.insertInstanceTemplateSettings().build();
+    insertInstanceTemplateOperationSettings =
+        settingsBuilder.insertInstanceTemplateOperationSettings().build();
     listInstanceTemplatesSettings = settingsBuilder.listInstanceTemplatesSettings().build();
     setIamPolicyInstanceTemplateSettings =
         settingsBuilder.setIamPolicyInstanceTemplateSettings().build();
@@ -325,12 +352,18 @@ public static class Builder extends StubSettings.Builder
         deleteInstanceTemplateSettings;
+    private final OperationCallSettings.Builder<
+            DeleteInstanceTemplateHttpRequest, EmptyMessage, Operation>
+        deleteInstanceTemplateOperationSettings;
     private final UnaryCallSettings.Builder
         getInstanceTemplateSettings;
     private final UnaryCallSettings.Builder
         getIamPolicyInstanceTemplateSettings;
     private final UnaryCallSettings.Builder
         insertInstanceTemplateSettings;
+    private final OperationCallSettings.Builder<
+            InsertInstanceTemplateHttpRequest, EmptyMessage, Operation>
+        insertInstanceTemplateOperationSettings;
     private final PagedCallSettings.Builder<
             ListInstanceTemplatesHttpRequest,
             InstanceTemplateList,
@@ -385,12 +418,16 @@ protected Builder(ClientContext clientContext) {
 
       deleteInstanceTemplateSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteInstanceTemplateOperationSettings = OperationCallSettings.newBuilder();
+
       getInstanceTemplateSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       getIamPolicyInstanceTemplateSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertInstanceTemplateSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertInstanceTemplateOperationSettings = OperationCallSettings.newBuilder();
+
       listInstanceTemplatesSettings =
           PagedCallSettings.newBuilder(LIST_INSTANCE_TEMPLATES_PAGE_STR_FACT);
 
@@ -456,6 +493,50 @@ private static Builder initDefaults(Builder builder) {
           .testIamPermissionsInstanceTemplateSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteInstanceTemplateOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertInstanceTemplateOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -464,10 +545,14 @@ protected Builder(InstanceTemplateStubSettings settings) {
       super(settings);
 
       deleteInstanceTemplateSettings = settings.deleteInstanceTemplateSettings.toBuilder();
+      deleteInstanceTemplateOperationSettings =
+          settings.deleteInstanceTemplateOperationSettings.toBuilder();
       getInstanceTemplateSettings = settings.getInstanceTemplateSettings.toBuilder();
       getIamPolicyInstanceTemplateSettings =
           settings.getIamPolicyInstanceTemplateSettings.toBuilder();
       insertInstanceTemplateSettings = settings.insertInstanceTemplateSettings.toBuilder();
+      insertInstanceTemplateOperationSettings =
+          settings.insertInstanceTemplateOperationSettings.toBuilder();
       listInstanceTemplatesSettings = settings.listInstanceTemplatesSettings.toBuilder();
       setIamPolicyInstanceTemplateSettings =
           settings.setIamPolicyInstanceTemplateSettings.toBuilder();
@@ -507,6 +592,14 @@ public Builder applyToAllUnaryMethods(
       return deleteInstanceTemplateSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteInstanceTemplate. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteInstanceTemplateOperationSettings() {
+      return deleteInstanceTemplateOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getInstanceTemplate. */
     public UnaryCallSettings.Builder
         getInstanceTemplateSettings() {
@@ -525,6 +618,14 @@ public Builder applyToAllUnaryMethods(
       return insertInstanceTemplateSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertInstanceTemplate. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertInstanceTemplateOperationSettings() {
+      return insertInstanceTemplateOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listInstanceTemplates. */
     public PagedCallSettings.Builder<
             ListInstanceTemplatesHttpRequest,
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InterconnectAttachmentStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InterconnectAttachmentStub.java
index 1b0da50e79bc..a39a60feec73 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InterconnectAttachmentStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InterconnectAttachmentStub.java
@@ -20,6 +20,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.AggregatedListInterconnectAttachmentsHttpRequest;
 import com.google.cloud.compute.v1.DeleteInterconnectAttachmentHttpRequest;
@@ -43,6 +45,11 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class InterconnectAttachmentStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public RegionOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
   @BetaApi
   public UnaryCallable<
           AggregatedListInterconnectAttachmentsHttpRequest,
@@ -60,6 +67,13 @@ public abstract class InterconnectAttachmentStub implements BackgroundResource {
         "Not implemented: aggregatedListInterconnectAttachmentsCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteInterconnectAttachmentOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteInterconnectAttachmentOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       deleteInterconnectAttachmentCallable() {
@@ -73,6 +87,13 @@ public abstract class InterconnectAttachmentStub implements BackgroundResource {
     throw new UnsupportedOperationException("Not implemented: getInterconnectAttachmentCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertInterconnectAttachmentOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: insertInterconnectAttachmentOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       insertInterconnectAttachmentCallable() {
@@ -95,6 +116,13 @@ public abstract class InterconnectAttachmentStub implements BackgroundResource {
         "Not implemented: listInterconnectAttachmentsCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchInterconnectAttachmentOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: patchInterconnectAttachmentOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       patchInterconnectAttachmentCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InterconnectAttachmentStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InterconnectAttachmentStubSettings.java
index 314631ec2407..ebc71b9b6ecd 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InterconnectAttachmentStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InterconnectAttachmentStubSettings.java
@@ -24,13 +24,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -75,13 +80,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteInterconnectAttachment to 30 seconds: + * example, to set the total timeout of getInterconnectAttachment to 30 seconds: * *

  * 
  * InterconnectAttachmentStubSettings.Builder interconnectAttachmentSettingsBuilder =
  *     InterconnectAttachmentStubSettings.newBuilder();
- * interconnectAttachmentSettingsBuilder.deleteInterconnectAttachmentSettings().getRetrySettings().toBuilder()
+ * interconnectAttachmentSettingsBuilder.getInterconnectAttachmentSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * InterconnectAttachmentStubSettings interconnectAttachmentSettings = interconnectAttachmentSettingsBuilder.build();
  * 
@@ -109,10 +114,16 @@ public class InterconnectAttachmentStubSettings
       aggregatedListInterconnectAttachmentsSettings;
   private final UnaryCallSettings
       deleteInterconnectAttachmentSettings;
+  private final OperationCallSettings<
+          DeleteInterconnectAttachmentHttpRequest, EmptyMessage, Operation>
+      deleteInterconnectAttachmentOperationSettings;
   private final UnaryCallSettings
       getInterconnectAttachmentSettings;
   private final UnaryCallSettings
       insertInterconnectAttachmentSettings;
+  private final OperationCallSettings<
+          InsertInterconnectAttachmentHttpRequest, EmptyMessage, Operation>
+      insertInterconnectAttachmentOperationSettings;
   private final PagedCallSettings<
           ListInterconnectAttachmentsHttpRequest,
           InterconnectAttachmentList,
@@ -120,6 +131,9 @@ public class InterconnectAttachmentStubSettings
       listInterconnectAttachmentsSettings;
   private final UnaryCallSettings
       patchInterconnectAttachmentSettings;
+  private final OperationCallSettings<
+          PatchInterconnectAttachmentHttpRequest, EmptyMessage, Operation>
+      patchInterconnectAttachmentOperationSettings;
 
   /**
    * Returns the object with the settings used for calls to aggregatedListInterconnectAttachments.
@@ -138,6 +152,13 @@ public class InterconnectAttachmentStubSettings
     return deleteInterconnectAttachmentSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteInterconnectAttachment. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteInterconnectAttachmentOperationSettings() {
+    return deleteInterconnectAttachmentOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getInterconnectAttachment. */
   public UnaryCallSettings
       getInterconnectAttachmentSettings() {
@@ -150,6 +171,13 @@ public class InterconnectAttachmentStubSettings
     return insertInterconnectAttachmentSettings;
   }
 
+  /** Returns the object with the settings used for calls to insertInterconnectAttachment. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertInterconnectAttachmentOperationSettings() {
+    return insertInterconnectAttachmentOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listInterconnectAttachments. */
   public PagedCallSettings<
           ListInterconnectAttachmentsHttpRequest,
@@ -165,6 +193,13 @@ public class InterconnectAttachmentStubSettings
     return patchInterconnectAttachmentSettings;
   }
 
+  /** Returns the object with the settings used for calls to patchInterconnectAttachment. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      patchInterconnectAttachmentOperationSettings() {
+    return patchInterconnectAttachmentOperationSettings;
+  }
+
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   public InterconnectAttachmentStub createStub() throws IOException {
     if (getTransportChannelProvider()
@@ -244,13 +279,19 @@ protected InterconnectAttachmentStubSettings(Builder settingsBuilder) throws IOE
         settingsBuilder.aggregatedListInterconnectAttachmentsSettings().build();
     deleteInterconnectAttachmentSettings =
         settingsBuilder.deleteInterconnectAttachmentSettings().build();
+    deleteInterconnectAttachmentOperationSettings =
+        settingsBuilder.deleteInterconnectAttachmentOperationSettings().build();
     getInterconnectAttachmentSettings = settingsBuilder.getInterconnectAttachmentSettings().build();
     insertInterconnectAttachmentSettings =
         settingsBuilder.insertInterconnectAttachmentSettings().build();
+    insertInterconnectAttachmentOperationSettings =
+        settingsBuilder.insertInterconnectAttachmentOperationSettings().build();
     listInterconnectAttachmentsSettings =
         settingsBuilder.listInterconnectAttachmentsSettings().build();
     patchInterconnectAttachmentSettings =
         settingsBuilder.patchInterconnectAttachmentSettings().build();
+    patchInterconnectAttachmentOperationSettings =
+        settingsBuilder.patchInterconnectAttachmentOperationSettings().build();
   }
 
   private static final PagedListDescriptor<
@@ -426,11 +467,17 @@ public static class Builder
         aggregatedListInterconnectAttachmentsSettings;
     private final UnaryCallSettings.Builder
         deleteInterconnectAttachmentSettings;
+    private final OperationCallSettings.Builder<
+            DeleteInterconnectAttachmentHttpRequest, EmptyMessage, Operation>
+        deleteInterconnectAttachmentOperationSettings;
     private final UnaryCallSettings.Builder<
             GetInterconnectAttachmentHttpRequest, InterconnectAttachment>
         getInterconnectAttachmentSettings;
     private final UnaryCallSettings.Builder
         insertInterconnectAttachmentSettings;
+    private final OperationCallSettings.Builder<
+            InsertInterconnectAttachmentHttpRequest, EmptyMessage, Operation>
+        insertInterconnectAttachmentOperationSettings;
     private final PagedCallSettings.Builder<
             ListInterconnectAttachmentsHttpRequest,
             InterconnectAttachmentList,
@@ -438,6 +485,9 @@ public static class Builder
         listInterconnectAttachmentsSettings;
     private final UnaryCallSettings.Builder
         patchInterconnectAttachmentSettings;
+    private final OperationCallSettings.Builder<
+            PatchInterconnectAttachmentHttpRequest, EmptyMessage, Operation>
+        patchInterconnectAttachmentOperationSettings;
 
     private static final ImmutableMap>
         RETRYABLE_CODE_DEFINITIONS;
@@ -485,15 +535,21 @@ protected Builder(ClientContext clientContext) {
 
       deleteInterconnectAttachmentSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteInterconnectAttachmentOperationSettings = OperationCallSettings.newBuilder();
+
       getInterconnectAttachmentSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertInterconnectAttachmentSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertInterconnectAttachmentOperationSettings = OperationCallSettings.newBuilder();
+
       listInterconnectAttachmentsSettings =
           PagedCallSettings.newBuilder(LIST_INTERCONNECT_ATTACHMENTS_PAGE_STR_FACT);
 
       patchInterconnectAttachmentSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      patchInterconnectAttachmentOperationSettings = OperationCallSettings.newBuilder();
+
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
               aggregatedListInterconnectAttachmentsSettings,
@@ -546,6 +602,72 @@ private static Builder initDefaults(Builder builder) {
           .patchInterconnectAttachmentSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteInterconnectAttachmentOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertInterconnectAttachmentOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .patchInterconnectAttachmentOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -557,13 +679,19 @@ protected Builder(InterconnectAttachmentStubSettings settings) {
           settings.aggregatedListInterconnectAttachmentsSettings.toBuilder();
       deleteInterconnectAttachmentSettings =
           settings.deleteInterconnectAttachmentSettings.toBuilder();
+      deleteInterconnectAttachmentOperationSettings =
+          settings.deleteInterconnectAttachmentOperationSettings.toBuilder();
       getInterconnectAttachmentSettings = settings.getInterconnectAttachmentSettings.toBuilder();
       insertInterconnectAttachmentSettings =
           settings.insertInterconnectAttachmentSettings.toBuilder();
+      insertInterconnectAttachmentOperationSettings =
+          settings.insertInterconnectAttachmentOperationSettings.toBuilder();
       listInterconnectAttachmentsSettings =
           settings.listInterconnectAttachmentsSettings.toBuilder();
       patchInterconnectAttachmentSettings =
           settings.patchInterconnectAttachmentSettings.toBuilder();
+      patchInterconnectAttachmentOperationSettings =
+          settings.patchInterconnectAttachmentOperationSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
@@ -608,6 +736,15 @@ public Builder applyToAllUnaryMethods(
       return deleteInterconnectAttachmentSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteInterconnectAttachment. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            DeleteInterconnectAttachmentHttpRequest, EmptyMessage, Operation>
+        deleteInterconnectAttachmentOperationSettings() {
+      return deleteInterconnectAttachmentOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getInterconnectAttachment. */
     public UnaryCallSettings.Builder
         getInterconnectAttachmentSettings() {
@@ -620,6 +757,15 @@ public Builder applyToAllUnaryMethods(
       return insertInterconnectAttachmentSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertInterconnectAttachment. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            InsertInterconnectAttachmentHttpRequest, EmptyMessage, Operation>
+        insertInterconnectAttachmentOperationSettings() {
+      return insertInterconnectAttachmentOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listInterconnectAttachments. */
     public PagedCallSettings.Builder<
             ListInterconnectAttachmentsHttpRequest,
@@ -635,6 +781,15 @@ public Builder applyToAllUnaryMethods(
       return patchInterconnectAttachmentSettings;
     }
 
+    /** Returns the builder for the settings used for calls to patchInterconnectAttachment. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            PatchInterconnectAttachmentHttpRequest, EmptyMessage, Operation>
+        patchInterconnectAttachmentOperationSettings() {
+      return patchInterconnectAttachmentOperationSettings;
+    }
+
     @Override
     public InterconnectAttachmentStubSettings build() throws IOException {
       return new InterconnectAttachmentStubSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InterconnectStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InterconnectStub.java
index c2f7c771b9a6..0b954e1b6c06 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InterconnectStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InterconnectStub.java
@@ -19,6 +19,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.DeleteInterconnectHttpRequest;
 import com.google.cloud.compute.v1.GetDiagnosticsInterconnectHttpRequest;
@@ -42,6 +44,18 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class InterconnectStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public GlobalOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteInterconnectOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteInterconnectOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteInterconnectCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteInterconnectCallable()");
@@ -59,6 +73,13 @@ public UnaryCallable getInterconnectCa
         "Not implemented: getDiagnosticsInterconnectCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertInterconnectOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: insertInterconnectOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertInterconnectCallable() {
     throw new UnsupportedOperationException("Not implemented: insertInterconnectCallable()");
@@ -75,6 +96,13 @@ public UnaryCallable listInterco
     throw new UnsupportedOperationException("Not implemented: listInterconnectsCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchInterconnectOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: patchInterconnectOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable patchInterconnectCallable() {
     throw new UnsupportedOperationException("Not implemented: patchInterconnectCallable()");
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InterconnectStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InterconnectStubSettings.java
index d1654a486734..c26ab73db218 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InterconnectStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/InterconnectStubSettings.java
@@ -23,13 +23,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -73,13 +78,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteInterconnect to 30 seconds: + * example, to set the total timeout of getInterconnect to 30 seconds: * *

  * 
  * InterconnectStubSettings.Builder interconnectSettingsBuilder =
  *     InterconnectStubSettings.newBuilder();
- * interconnectSettingsBuilder.deleteInterconnectSettings().getRetrySettings().toBuilder()
+ * interconnectSettingsBuilder.getInterconnectSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * InterconnectStubSettings interconnectSettings = interconnectSettingsBuilder.build();
  * 
@@ -101,23 +106,36 @@ public class InterconnectStubSettings extends StubSettings
       deleteInterconnectSettings;
+  private final OperationCallSettings
+      deleteInterconnectOperationSettings;
   private final UnaryCallSettings getInterconnectSettings;
   private final UnaryCallSettings<
           GetDiagnosticsInterconnectHttpRequest, InterconnectsGetDiagnosticsResponse>
       getDiagnosticsInterconnectSettings;
   private final UnaryCallSettings
       insertInterconnectSettings;
+  private final OperationCallSettings
+      insertInterconnectOperationSettings;
   private final PagedCallSettings<
           ListInterconnectsHttpRequest, InterconnectList, ListInterconnectsPagedResponse>
       listInterconnectsSettings;
   private final UnaryCallSettings
       patchInterconnectSettings;
+  private final OperationCallSettings
+      patchInterconnectOperationSettings;
 
   /** Returns the object with the settings used for calls to deleteInterconnect. */
   public UnaryCallSettings deleteInterconnectSettings() {
     return deleteInterconnectSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteInterconnect. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteInterconnectOperationSettings() {
+    return deleteInterconnectOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getInterconnect. */
   public UnaryCallSettings getInterconnectSettings() {
     return getInterconnectSettings;
@@ -135,6 +153,13 @@ public UnaryCallSettings insertInterco
     return insertInterconnectSettings;
   }
 
+  /** Returns the object with the settings used for calls to insertInterconnect. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertInterconnectOperationSettings() {
+    return insertInterconnectOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listInterconnects. */
   public PagedCallSettings<
           ListInterconnectsHttpRequest, InterconnectList, ListInterconnectsPagedResponse>
@@ -147,6 +172,13 @@ public UnaryCallSettings patchInterconn
     return patchInterconnectSettings;
   }
 
+  /** Returns the object with the settings used for calls to patchInterconnect. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      patchInterconnectOperationSettings() {
+    return patchInterconnectOperationSettings;
+  }
+
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   public InterconnectStub createStub() throws IOException {
     if (getTransportChannelProvider()
@@ -223,12 +255,18 @@ protected InterconnectStubSettings(Builder settingsBuilder) throws IOException {
     super(settingsBuilder);
 
     deleteInterconnectSettings = settingsBuilder.deleteInterconnectSettings().build();
+    deleteInterconnectOperationSettings =
+        settingsBuilder.deleteInterconnectOperationSettings().build();
     getInterconnectSettings = settingsBuilder.getInterconnectSettings().build();
     getDiagnosticsInterconnectSettings =
         settingsBuilder.getDiagnosticsInterconnectSettings().build();
     insertInterconnectSettings = settingsBuilder.insertInterconnectSettings().build();
+    insertInterconnectOperationSettings =
+        settingsBuilder.insertInterconnectOperationSettings().build();
     listInterconnectsSettings = settingsBuilder.listInterconnectsSettings().build();
     patchInterconnectSettings = settingsBuilder.patchInterconnectSettings().build();
+    patchInterconnectOperationSettings =
+        settingsBuilder.patchInterconnectOperationSettings().build();
   }
 
   private static final PagedListDescriptor<
@@ -297,6 +335,9 @@ public static class Builder extends StubSettings.Builder
         deleteInterconnectSettings;
+    private final OperationCallSettings.Builder<
+            DeleteInterconnectHttpRequest, EmptyMessage, Operation>
+        deleteInterconnectOperationSettings;
     private final UnaryCallSettings.Builder
         getInterconnectSettings;
     private final UnaryCallSettings.Builder<
@@ -304,11 +345,17 @@ public static class Builder extends StubSettings.Builder
         insertInterconnectSettings;
+    private final OperationCallSettings.Builder<
+            InsertInterconnectHttpRequest, EmptyMessage, Operation>
+        insertInterconnectOperationSettings;
     private final PagedCallSettings.Builder<
             ListInterconnectsHttpRequest, InterconnectList, ListInterconnectsPagedResponse>
         listInterconnectsSettings;
     private final UnaryCallSettings.Builder
         patchInterconnectSettings;
+    private final OperationCallSettings.Builder<
+            PatchInterconnectHttpRequest, EmptyMessage, Operation>
+        patchInterconnectOperationSettings;
 
     private static final ImmutableMap>
         RETRYABLE_CODE_DEFINITIONS;
@@ -353,16 +400,22 @@ protected Builder(ClientContext clientContext) {
 
       deleteInterconnectSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteInterconnectOperationSettings = OperationCallSettings.newBuilder();
+
       getInterconnectSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       getDiagnosticsInterconnectSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertInterconnectSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertInterconnectOperationSettings = OperationCallSettings.newBuilder();
+
       listInterconnectsSettings = PagedCallSettings.newBuilder(LIST_INTERCONNECTS_PAGE_STR_FACT);
 
       patchInterconnectSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      patchInterconnectOperationSettings = OperationCallSettings.newBuilder();
+
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
               deleteInterconnectSettings,
@@ -415,6 +468,69 @@ private static Builder initDefaults(Builder builder) {
           .patchInterconnectSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteInterconnectOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertInterconnectOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .patchInterconnectOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -423,11 +539,16 @@ protected Builder(InterconnectStubSettings settings) {
       super(settings);
 
       deleteInterconnectSettings = settings.deleteInterconnectSettings.toBuilder();
+      deleteInterconnectOperationSettings =
+          settings.deleteInterconnectOperationSettings.toBuilder();
       getInterconnectSettings = settings.getInterconnectSettings.toBuilder();
       getDiagnosticsInterconnectSettings = settings.getDiagnosticsInterconnectSettings.toBuilder();
       insertInterconnectSettings = settings.insertInterconnectSettings.toBuilder();
+      insertInterconnectOperationSettings =
+          settings.insertInterconnectOperationSettings.toBuilder();
       listInterconnectsSettings = settings.listInterconnectsSettings.toBuilder();
       patchInterconnectSettings = settings.patchInterconnectSettings.toBuilder();
+      patchInterconnectOperationSettings = settings.patchInterconnectOperationSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
@@ -461,6 +582,14 @@ public Builder applyToAllUnaryMethods(
       return deleteInterconnectSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteInterconnect. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteInterconnectOperationSettings() {
+      return deleteInterconnectOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getInterconnect. */
     public UnaryCallSettings.Builder
         getInterconnectSettings() {
@@ -480,6 +609,14 @@ public Builder applyToAllUnaryMethods(
       return insertInterconnectSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertInterconnect. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertInterconnectOperationSettings() {
+      return insertInterconnectOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listInterconnects. */
     public PagedCallSettings.Builder<
             ListInterconnectsHttpRequest, InterconnectList, ListInterconnectsPagedResponse>
@@ -493,6 +630,14 @@ public Builder applyToAllUnaryMethods(
       return patchInterconnectSettings;
     }
 
+    /** Returns the builder for the settings used for calls to patchInterconnect. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchInterconnectOperationSettings() {
+      return patchInterconnectOperationSettings;
+    }
+
     @Override
     public InterconnectStubSettings build() throws IOException {
       return new InterconnectStubSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/LicenseStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/LicenseStub.java
index 72a9eb167991..c4c21d8a2951 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/LicenseStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/LicenseStub.java
@@ -19,6 +19,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.DeleteLicenseHttpRequest;
 import com.google.cloud.compute.v1.GetIamPolicyLicenseHttpRequest;
@@ -44,6 +46,17 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class LicenseStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public GlobalOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteLicenseOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: deleteLicenseOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteLicenseCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteLicenseCallable()");
@@ -59,6 +72,12 @@ public UnaryCallable getIamPolicyLicense
     throw new UnsupportedOperationException("Not implemented: getIamPolicyLicenseCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertLicenseOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: insertLicenseOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertLicenseCallable() {
     throw new UnsupportedOperationException("Not implemented: insertLicenseCallable()");
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/LicenseStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/LicenseStubSettings.java
index dcae267c4ab3..2228505e6979 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/LicenseStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/LicenseStubSettings.java
@@ -23,13 +23,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -75,13 +80,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteLicense to 30 seconds: + * example, to set the total timeout of getLicense to 30 seconds: * *

  * 
  * LicenseStubSettings.Builder licenseSettingsBuilder =
  *     LicenseStubSettings.newBuilder();
- * licenseSettingsBuilder.deleteLicenseSettings().getRetrySettings().toBuilder()
+ * licenseSettingsBuilder.getLicenseSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * LicenseStubSettings licenseSettings = licenseSettingsBuilder.build();
  * 
@@ -102,10 +107,14 @@ public class LicenseStubSettings extends StubSettings {
           .build();
 
   private final UnaryCallSettings deleteLicenseSettings;
+  private final OperationCallSettings
+      deleteLicenseOperationSettings;
   private final UnaryCallSettings getLicenseSettings;
   private final UnaryCallSettings
       getIamPolicyLicenseSettings;
   private final UnaryCallSettings insertLicenseSettings;
+  private final OperationCallSettings
+      insertLicenseOperationSettings;
   private final PagedCallSettings<
           ListLicensesHttpRequest, LicensesListResponse, ListLicensesPagedResponse>
       listLicensesSettings;
@@ -119,6 +128,13 @@ public UnaryCallSettings deleteLicenseSetti
     return deleteLicenseSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteLicense. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteLicenseOperationSettings() {
+    return deleteLicenseOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getLicense. */
   public UnaryCallSettings getLicenseSettings() {
     return getLicenseSettings;
@@ -134,6 +150,13 @@ public UnaryCallSettings insertLicenseSetti
     return insertLicenseSettings;
   }
 
+  /** Returns the object with the settings used for calls to insertLicense. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertLicenseOperationSettings() {
+    return insertLicenseOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listLicenses. */
   public PagedCallSettings
       listLicensesSettings() {
@@ -226,9 +249,11 @@ protected LicenseStubSettings(Builder settingsBuilder) throws IOException {
     super(settingsBuilder);
 
     deleteLicenseSettings = settingsBuilder.deleteLicenseSettings().build();
+    deleteLicenseOperationSettings = settingsBuilder.deleteLicenseOperationSettings().build();
     getLicenseSettings = settingsBuilder.getLicenseSettings().build();
     getIamPolicyLicenseSettings = settingsBuilder.getIamPolicyLicenseSettings().build();
     insertLicenseSettings = settingsBuilder.insertLicenseSettings().build();
+    insertLicenseOperationSettings = settingsBuilder.insertLicenseOperationSettings().build();
     listLicensesSettings = settingsBuilder.listLicensesSettings().build();
     setIamPolicyLicenseSettings = settingsBuilder.setIamPolicyLicenseSettings().build();
     testIamPermissionsLicenseSettings = settingsBuilder.testIamPermissionsLicenseSettings().build();
@@ -295,11 +320,15 @@ public static class Builder extends StubSettings.Builder
         deleteLicenseSettings;
+    private final OperationCallSettings.Builder
+        deleteLicenseOperationSettings;
     private final UnaryCallSettings.Builder getLicenseSettings;
     private final UnaryCallSettings.Builder
         getIamPolicyLicenseSettings;
     private final UnaryCallSettings.Builder
         insertLicenseSettings;
+    private final OperationCallSettings.Builder
+        insertLicenseOperationSettings;
     private final PagedCallSettings.Builder<
             ListLicensesHttpRequest, LicensesListResponse, ListLicensesPagedResponse>
         listLicensesSettings;
@@ -352,12 +381,16 @@ protected Builder(ClientContext clientContext) {
 
       deleteLicenseSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteLicenseOperationSettings = OperationCallSettings.newBuilder();
+
       getLicenseSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       getIamPolicyLicenseSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertLicenseSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertLicenseOperationSettings = OperationCallSettings.newBuilder();
+
       listLicensesSettings = PagedCallSettings.newBuilder(LIST_LICENSES_PAGE_STR_FACT);
 
       setIamPolicyLicenseSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
@@ -422,6 +455,48 @@ private static Builder initDefaults(Builder builder) {
           .testIamPermissionsLicenseSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteLicenseOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertLicenseOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -430,9 +505,11 @@ protected Builder(LicenseStubSettings settings) {
       super(settings);
 
       deleteLicenseSettings = settings.deleteLicenseSettings.toBuilder();
+      deleteLicenseOperationSettings = settings.deleteLicenseOperationSettings.toBuilder();
       getLicenseSettings = settings.getLicenseSettings.toBuilder();
       getIamPolicyLicenseSettings = settings.getIamPolicyLicenseSettings.toBuilder();
       insertLicenseSettings = settings.insertLicenseSettings.toBuilder();
+      insertLicenseOperationSettings = settings.insertLicenseOperationSettings.toBuilder();
       listLicensesSettings = settings.listLicensesSettings.toBuilder();
       setIamPolicyLicenseSettings = settings.setIamPolicyLicenseSettings.toBuilder();
       testIamPermissionsLicenseSettings = settings.testIamPermissionsLicenseSettings.toBuilder();
@@ -469,6 +546,14 @@ public UnaryCallSettings.Builder deleteLice
       return deleteLicenseSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteLicense. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteLicenseOperationSettings() {
+      return deleteLicenseOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getLicense. */
     public UnaryCallSettings.Builder getLicenseSettings() {
       return getLicenseSettings;
@@ -485,6 +570,14 @@ public UnaryCallSettings.Builder insertLice
       return insertLicenseSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertLicense. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertLicenseOperationSettings() {
+      return insertLicenseOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listLicenses. */
     public PagedCallSettings.Builder<
             ListLicensesHttpRequest, LicensesListResponse, ListLicensesPagedResponse>
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/NetworkStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/NetworkStub.java
index 0209b2a07de1..da01e15a837a 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/NetworkStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/NetworkStub.java
@@ -19,6 +19,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.AddPeeringNetworkHttpRequest;
 import com.google.cloud.compute.v1.DeleteNetworkHttpRequest;
@@ -43,11 +45,29 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class NetworkStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public GlobalOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      addPeeringNetworkOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: addPeeringNetworkOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable addPeeringNetworkCallable() {
     throw new UnsupportedOperationException("Not implemented: addPeeringNetworkCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteNetworkOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: deleteNetworkOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteNetworkCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteNetworkCallable()");
@@ -58,6 +78,12 @@ public UnaryCallable getNetworkCallable() {
     throw new UnsupportedOperationException("Not implemented: getNetworkCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertNetworkOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: insertNetworkOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertNetworkCallable() {
     throw new UnsupportedOperationException("Not implemented: insertNetworkCallable()");
@@ -74,16 +100,36 @@ public UnaryCallable listNetworksCallable(
     throw new UnsupportedOperationException("Not implemented: listNetworksCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchNetworkOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: patchNetworkOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable patchNetworkCallable() {
     throw new UnsupportedOperationException("Not implemented: patchNetworkCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      removePeeringNetworkOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: removePeeringNetworkOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable removePeeringNetworkCallable() {
     throw new UnsupportedOperationException("Not implemented: removePeeringNetworkCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      switchToCustomModeNetworkOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: switchToCustomModeNetworkOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       switchToCustomModeNetworkCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/NetworkStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/NetworkStubSettings.java
index bf57d324473c..85e62e0986a7 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/NetworkStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/NetworkStubSettings.java
@@ -23,13 +23,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -74,13 +79,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of addPeeringNetwork to 30 seconds: + * example, to set the total timeout of getNetwork to 30 seconds: * *

  * 
  * NetworkStubSettings.Builder networkSettingsBuilder =
  *     NetworkStubSettings.newBuilder();
- * networkSettingsBuilder.addPeeringNetworkSettings().getRetrySettings().toBuilder()
+ * networkSettingsBuilder.getNetworkSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * NetworkStubSettings networkSettings = networkSettingsBuilder.build();
  * 
@@ -102,27 +107,53 @@ public class NetworkStubSettings extends StubSettings {
 
   private final UnaryCallSettings
       addPeeringNetworkSettings;
+  private final OperationCallSettings
+      addPeeringNetworkOperationSettings;
   private final UnaryCallSettings deleteNetworkSettings;
+  private final OperationCallSettings
+      deleteNetworkOperationSettings;
   private final UnaryCallSettings getNetworkSettings;
   private final UnaryCallSettings insertNetworkSettings;
+  private final OperationCallSettings
+      insertNetworkOperationSettings;
   private final PagedCallSettings
       listNetworksSettings;
   private final UnaryCallSettings patchNetworkSettings;
+  private final OperationCallSettings
+      patchNetworkOperationSettings;
   private final UnaryCallSettings
       removePeeringNetworkSettings;
+  private final OperationCallSettings
+      removePeeringNetworkOperationSettings;
   private final UnaryCallSettings
       switchToCustomModeNetworkSettings;
+  private final OperationCallSettings
+      switchToCustomModeNetworkOperationSettings;
 
   /** Returns the object with the settings used for calls to addPeeringNetwork. */
   public UnaryCallSettings addPeeringNetworkSettings() {
     return addPeeringNetworkSettings;
   }
 
+  /** Returns the object with the settings used for calls to addPeeringNetwork. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      addPeeringNetworkOperationSettings() {
+    return addPeeringNetworkOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to deleteNetwork. */
   public UnaryCallSettings deleteNetworkSettings() {
     return deleteNetworkSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteNetwork. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteNetworkOperationSettings() {
+    return deleteNetworkOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getNetwork. */
   public UnaryCallSettings getNetworkSettings() {
     return getNetworkSettings;
@@ -133,6 +164,13 @@ public UnaryCallSettings insertNetworkSetti
     return insertNetworkSettings;
   }
 
+  /** Returns the object with the settings used for calls to insertNetwork. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertNetworkOperationSettings() {
+    return insertNetworkOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listNetworks. */
   public PagedCallSettings
       listNetworksSettings() {
@@ -144,18 +182,39 @@ public UnaryCallSettings patchNetworkSetting
     return patchNetworkSettings;
   }
 
+  /** Returns the object with the settings used for calls to patchNetwork. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      patchNetworkOperationSettings() {
+    return patchNetworkOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to removePeeringNetwork. */
   public UnaryCallSettings
       removePeeringNetworkSettings() {
     return removePeeringNetworkSettings;
   }
 
+  /** Returns the object with the settings used for calls to removePeeringNetwork. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      removePeeringNetworkOperationSettings() {
+    return removePeeringNetworkOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to switchToCustomModeNetwork. */
   public UnaryCallSettings
       switchToCustomModeNetworkSettings() {
     return switchToCustomModeNetworkSettings;
   }
 
+  /** Returns the object with the settings used for calls to switchToCustomModeNetwork. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      switchToCustomModeNetworkOperationSettings() {
+    return switchToCustomModeNetworkOperationSettings;
+  }
+
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   public NetworkStub createStub() throws IOException {
     if (getTransportChannelProvider()
@@ -231,13 +290,22 @@ protected NetworkStubSettings(Builder settingsBuilder) throws IOException {
     super(settingsBuilder);
 
     addPeeringNetworkSettings = settingsBuilder.addPeeringNetworkSettings().build();
+    addPeeringNetworkOperationSettings =
+        settingsBuilder.addPeeringNetworkOperationSettings().build();
     deleteNetworkSettings = settingsBuilder.deleteNetworkSettings().build();
+    deleteNetworkOperationSettings = settingsBuilder.deleteNetworkOperationSettings().build();
     getNetworkSettings = settingsBuilder.getNetworkSettings().build();
     insertNetworkSettings = settingsBuilder.insertNetworkSettings().build();
+    insertNetworkOperationSettings = settingsBuilder.insertNetworkOperationSettings().build();
     listNetworksSettings = settingsBuilder.listNetworksSettings().build();
     patchNetworkSettings = settingsBuilder.patchNetworkSettings().build();
+    patchNetworkOperationSettings = settingsBuilder.patchNetworkOperationSettings().build();
     removePeeringNetworkSettings = settingsBuilder.removePeeringNetworkSettings().build();
+    removePeeringNetworkOperationSettings =
+        settingsBuilder.removePeeringNetworkOperationSettings().build();
     switchToCustomModeNetworkSettings = settingsBuilder.switchToCustomModeNetworkSettings().build();
+    switchToCustomModeNetworkOperationSettings =
+        settingsBuilder.switchToCustomModeNetworkOperationSettings().build();
   }
 
   private static final PagedListDescriptor
@@ -301,20 +369,35 @@ public static class Builder extends StubSettings.Builder
         addPeeringNetworkSettings;
+    private final OperationCallSettings.Builder<
+            AddPeeringNetworkHttpRequest, EmptyMessage, Operation>
+        addPeeringNetworkOperationSettings;
     private final UnaryCallSettings.Builder
         deleteNetworkSettings;
+    private final OperationCallSettings.Builder
+        deleteNetworkOperationSettings;
     private final UnaryCallSettings.Builder getNetworkSettings;
     private final UnaryCallSettings.Builder
         insertNetworkSettings;
+    private final OperationCallSettings.Builder
+        insertNetworkOperationSettings;
     private final PagedCallSettings.Builder<
             ListNetworksHttpRequest, NetworkList, ListNetworksPagedResponse>
         listNetworksSettings;
     private final UnaryCallSettings.Builder
         patchNetworkSettings;
+    private final OperationCallSettings.Builder
+        patchNetworkOperationSettings;
     private final UnaryCallSettings.Builder
         removePeeringNetworkSettings;
+    private final OperationCallSettings.Builder<
+            RemovePeeringNetworkHttpRequest, EmptyMessage, Operation>
+        removePeeringNetworkOperationSettings;
     private final UnaryCallSettings.Builder
         switchToCustomModeNetworkSettings;
+    private final OperationCallSettings.Builder<
+            SwitchToCustomModeNetworkHttpRequest, EmptyMessage, Operation>
+        switchToCustomModeNetworkOperationSettings;
 
     private static final ImmutableMap>
         RETRYABLE_CODE_DEFINITIONS;
@@ -359,20 +442,32 @@ protected Builder(ClientContext clientContext) {
 
       addPeeringNetworkSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      addPeeringNetworkOperationSettings = OperationCallSettings.newBuilder();
+
       deleteNetworkSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteNetworkOperationSettings = OperationCallSettings.newBuilder();
+
       getNetworkSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertNetworkSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertNetworkOperationSettings = OperationCallSettings.newBuilder();
+
       listNetworksSettings = PagedCallSettings.newBuilder(LIST_NETWORKS_PAGE_STR_FACT);
 
       patchNetworkSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      patchNetworkOperationSettings = OperationCallSettings.newBuilder();
+
       removePeeringNetworkSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      removePeeringNetworkOperationSettings = OperationCallSettings.newBuilder();
+
       switchToCustomModeNetworkSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      switchToCustomModeNetworkOperationSettings = OperationCallSettings.newBuilder();
+
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
               addPeeringNetworkSettings,
@@ -437,6 +532,133 @@ private static Builder initDefaults(Builder builder) {
           .switchToCustomModeNetworkSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .addPeeringNetworkOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .deleteNetworkOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertNetworkOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .patchNetworkOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .removePeeringNetworkOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .switchToCustomModeNetworkOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -445,13 +667,21 @@ protected Builder(NetworkStubSettings settings) {
       super(settings);
 
       addPeeringNetworkSettings = settings.addPeeringNetworkSettings.toBuilder();
+      addPeeringNetworkOperationSettings = settings.addPeeringNetworkOperationSettings.toBuilder();
       deleteNetworkSettings = settings.deleteNetworkSettings.toBuilder();
+      deleteNetworkOperationSettings = settings.deleteNetworkOperationSettings.toBuilder();
       getNetworkSettings = settings.getNetworkSettings.toBuilder();
       insertNetworkSettings = settings.insertNetworkSettings.toBuilder();
+      insertNetworkOperationSettings = settings.insertNetworkOperationSettings.toBuilder();
       listNetworksSettings = settings.listNetworksSettings.toBuilder();
       patchNetworkSettings = settings.patchNetworkSettings.toBuilder();
+      patchNetworkOperationSettings = settings.patchNetworkOperationSettings.toBuilder();
       removePeeringNetworkSettings = settings.removePeeringNetworkSettings.toBuilder();
+      removePeeringNetworkOperationSettings =
+          settings.removePeeringNetworkOperationSettings.toBuilder();
       switchToCustomModeNetworkSettings = settings.switchToCustomModeNetworkSettings.toBuilder();
+      switchToCustomModeNetworkOperationSettings =
+          settings.switchToCustomModeNetworkOperationSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
@@ -487,11 +717,27 @@ public Builder applyToAllUnaryMethods(
       return addPeeringNetworkSettings;
     }
 
+    /** Returns the builder for the settings used for calls to addPeeringNetwork. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        addPeeringNetworkOperationSettings() {
+      return addPeeringNetworkOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to deleteNetwork. */
     public UnaryCallSettings.Builder deleteNetworkSettings() {
       return deleteNetworkSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteNetwork. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteNetworkOperationSettings() {
+      return deleteNetworkOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getNetwork. */
     public UnaryCallSettings.Builder getNetworkSettings() {
       return getNetworkSettings;
@@ -502,6 +748,14 @@ public UnaryCallSettings.Builder insertNetw
       return insertNetworkSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertNetwork. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertNetworkOperationSettings() {
+      return insertNetworkOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listNetworks. */
     public PagedCallSettings.Builder<
             ListNetworksHttpRequest, NetworkList, ListNetworksPagedResponse>
@@ -514,18 +768,43 @@ public UnaryCallSettings.Builder patchNetwor
       return patchNetworkSettings;
     }
 
+    /** Returns the builder for the settings used for calls to patchNetwork. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchNetworkOperationSettings() {
+      return patchNetworkOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to removePeeringNetwork. */
     public UnaryCallSettings.Builder
         removePeeringNetworkSettings() {
       return removePeeringNetworkSettings;
     }
 
+    /** Returns the builder for the settings used for calls to removePeeringNetwork. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        removePeeringNetworkOperationSettings() {
+      return removePeeringNetworkOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to switchToCustomModeNetwork. */
     public UnaryCallSettings.Builder
         switchToCustomModeNetworkSettings() {
       return switchToCustomModeNetworkSettings;
     }
 
+    /** Returns the builder for the settings used for calls to switchToCustomModeNetwork. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SwitchToCustomModeNetworkHttpRequest, EmptyMessage, Operation>
+        switchToCustomModeNetworkOperationSettings() {
+      return switchToCustomModeNetworkOperationSettings;
+    }
+
     @Override
     public NetworkStubSettings build() throws IOException {
       return new NetworkStubSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/NodeGroupStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/NodeGroupStub.java
index 8960e25088d4..52e133b7116f 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/NodeGroupStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/NodeGroupStub.java
@@ -21,6 +21,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.AddNodesNodeGroupHttpRequest;
 import com.google.cloud.compute.v1.AggregatedListNodeGroupsHttpRequest;
@@ -53,6 +55,18 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class NodeGroupStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public ZoneOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      addNodesNodeGroupOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: addNodesNodeGroupOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable addNodesNodeGroupCallable() {
     throw new UnsupportedOperationException("Not implemented: addNodesNodeGroupCallable()");
@@ -71,11 +85,24 @@ public UnaryCallable addNodesNodeGroupC
     throw new UnsupportedOperationException("Not implemented: aggregatedListNodeGroupsCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteNodeGroupOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: deleteNodeGroupOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteNodeGroupCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteNodeGroupCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteNodesNodeGroupOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteNodesNodeGroupOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteNodesNodeGroupCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteNodesNodeGroupCallable()");
@@ -91,6 +118,12 @@ public UnaryCallable getIamPolicyNodeG
     throw new UnsupportedOperationException("Not implemented: getIamPolicyNodeGroupCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertNodeGroupOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: insertNodeGroupOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertNodeGroupCallable() {
     throw new UnsupportedOperationException("Not implemented: insertNodeGroupCallable()");
@@ -124,6 +157,13 @@ public UnaryCallable setIamPolicyNodeG
     throw new UnsupportedOperationException("Not implemented: setIamPolicyNodeGroupCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setNodeTemplateNodeGroupOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setNodeTemplateNodeGroupOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setNodeTemplateNodeGroupCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/NodeGroupStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/NodeGroupStubSettings.java
index d3efef6d7dc1..81df4addcda9 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/NodeGroupStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/NodeGroupStubSettings.java
@@ -25,13 +25,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -86,13 +91,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of addNodesNodeGroup to 30 seconds: + * example, to set the total timeout of getNodeGroup to 30 seconds: * *

  * 
  * NodeGroupStubSettings.Builder nodeGroupSettingsBuilder =
  *     NodeGroupStubSettings.newBuilder();
- * nodeGroupSettingsBuilder.addNodesNodeGroupSettings().getRetrySettings().toBuilder()
+ * nodeGroupSettingsBuilder.getNodeGroupSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * NodeGroupStubSettings nodeGroupSettings = nodeGroupSettingsBuilder.build();
  * 
@@ -114,18 +119,26 @@ public class NodeGroupStubSettings extends StubSettings {
 
   private final UnaryCallSettings
       addNodesNodeGroupSettings;
+  private final OperationCallSettings
+      addNodesNodeGroupOperationSettings;
   private final PagedCallSettings<
           AggregatedListNodeGroupsHttpRequest,
           NodeGroupAggregatedList,
           AggregatedListNodeGroupsPagedResponse>
       aggregatedListNodeGroupsSettings;
   private final UnaryCallSettings deleteNodeGroupSettings;
+  private final OperationCallSettings
+      deleteNodeGroupOperationSettings;
   private final UnaryCallSettings
       deleteNodesNodeGroupSettings;
+  private final OperationCallSettings
+      deleteNodesNodeGroupOperationSettings;
   private final UnaryCallSettings getNodeGroupSettings;
   private final UnaryCallSettings
       getIamPolicyNodeGroupSettings;
   private final UnaryCallSettings insertNodeGroupSettings;
+  private final OperationCallSettings
+      insertNodeGroupOperationSettings;
   private final PagedCallSettings<
           ListNodeGroupsHttpRequest, NodeGroupList, ListNodeGroupsPagedResponse>
       listNodeGroupsSettings;
@@ -136,6 +149,8 @@ public class NodeGroupStubSettings extends StubSettings {
       setIamPolicyNodeGroupSettings;
   private final UnaryCallSettings
       setNodeTemplateNodeGroupSettings;
+  private final OperationCallSettings
+      setNodeTemplateNodeGroupOperationSettings;
   private final UnaryCallSettings
       testIamPermissionsNodeGroupSettings;
 
@@ -144,6 +159,13 @@ public UnaryCallSettings addNodesNodeGr
     return addNodesNodeGroupSettings;
   }
 
+  /** Returns the object with the settings used for calls to addNodesNodeGroup. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      addNodesNodeGroupOperationSettings() {
+    return addNodesNodeGroupOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to aggregatedListNodeGroups. */
   public PagedCallSettings<
           AggregatedListNodeGroupsHttpRequest,
@@ -158,12 +180,26 @@ public UnaryCallSettings deleteNodeGroupS
     return deleteNodeGroupSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteNodeGroup. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteNodeGroupOperationSettings() {
+    return deleteNodeGroupOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to deleteNodesNodeGroup. */
   public UnaryCallSettings
       deleteNodesNodeGroupSettings() {
     return deleteNodesNodeGroupSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteNodesNodeGroup. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteNodesNodeGroupOperationSettings() {
+    return deleteNodesNodeGroupOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getNodeGroup. */
   public UnaryCallSettings getNodeGroupSettings() {
     return getNodeGroupSettings;
@@ -180,6 +216,13 @@ public UnaryCallSettings insertNodeGroupS
     return insertNodeGroupSettings;
   }
 
+  /** Returns the object with the settings used for calls to insertNodeGroup. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertNodeGroupOperationSettings() {
+    return insertNodeGroupOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listNodeGroups. */
   public PagedCallSettings
       listNodeGroupsSettings() {
@@ -205,6 +248,13 @@ public UnaryCallSettings insertNodeGroupS
     return setNodeTemplateNodeGroupSettings;
   }
 
+  /** Returns the object with the settings used for calls to setNodeTemplateNodeGroup. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setNodeTemplateNodeGroupOperationSettings() {
+    return setNodeTemplateNodeGroupOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to testIamPermissionsNodeGroup. */
   public UnaryCallSettings
       testIamPermissionsNodeGroupSettings() {
@@ -286,16 +336,24 @@ protected NodeGroupStubSettings(Builder settingsBuilder) throws IOException {
     super(settingsBuilder);
 
     addNodesNodeGroupSettings = settingsBuilder.addNodesNodeGroupSettings().build();
+    addNodesNodeGroupOperationSettings =
+        settingsBuilder.addNodesNodeGroupOperationSettings().build();
     aggregatedListNodeGroupsSettings = settingsBuilder.aggregatedListNodeGroupsSettings().build();
     deleteNodeGroupSettings = settingsBuilder.deleteNodeGroupSettings().build();
+    deleteNodeGroupOperationSettings = settingsBuilder.deleteNodeGroupOperationSettings().build();
     deleteNodesNodeGroupSettings = settingsBuilder.deleteNodesNodeGroupSettings().build();
+    deleteNodesNodeGroupOperationSettings =
+        settingsBuilder.deleteNodesNodeGroupOperationSettings().build();
     getNodeGroupSettings = settingsBuilder.getNodeGroupSettings().build();
     getIamPolicyNodeGroupSettings = settingsBuilder.getIamPolicyNodeGroupSettings().build();
     insertNodeGroupSettings = settingsBuilder.insertNodeGroupSettings().build();
+    insertNodeGroupOperationSettings = settingsBuilder.insertNodeGroupOperationSettings().build();
     listNodeGroupsSettings = settingsBuilder.listNodeGroupsSettings().build();
     listNodesNodeGroupsSettings = settingsBuilder.listNodesNodeGroupsSettings().build();
     setIamPolicyNodeGroupSettings = settingsBuilder.setIamPolicyNodeGroupSettings().build();
     setNodeTemplateNodeGroupSettings = settingsBuilder.setNodeTemplateNodeGroupSettings().build();
+    setNodeTemplateNodeGroupOperationSettings =
+        settingsBuilder.setNodeTemplateNodeGroupOperationSettings().build();
     testIamPermissionsNodeGroupSettings =
         settingsBuilder.testIamPermissionsNodeGroupSettings().build();
   }
@@ -498,6 +556,9 @@ public static class Builder extends StubSettings.Builder
         addNodesNodeGroupSettings;
+    private final OperationCallSettings.Builder<
+            AddNodesNodeGroupHttpRequest, EmptyMessage, Operation>
+        addNodesNodeGroupOperationSettings;
     private final PagedCallSettings.Builder<
             AggregatedListNodeGroupsHttpRequest,
             NodeGroupAggregatedList,
@@ -505,14 +566,21 @@ public static class Builder extends StubSettings.Builder
         deleteNodeGroupSettings;
+    private final OperationCallSettings.Builder
+        deleteNodeGroupOperationSettings;
     private final UnaryCallSettings.Builder
         deleteNodesNodeGroupSettings;
+    private final OperationCallSettings.Builder<
+            DeleteNodesNodeGroupHttpRequest, EmptyMessage, Operation>
+        deleteNodesNodeGroupOperationSettings;
     private final UnaryCallSettings.Builder
         getNodeGroupSettings;
     private final UnaryCallSettings.Builder
         getIamPolicyNodeGroupSettings;
     private final UnaryCallSettings.Builder
         insertNodeGroupSettings;
+    private final OperationCallSettings.Builder
+        insertNodeGroupOperationSettings;
     private final PagedCallSettings.Builder<
             ListNodeGroupsHttpRequest, NodeGroupList, ListNodeGroupsPagedResponse>
         listNodeGroupsSettings;
@@ -523,6 +591,9 @@ public static class Builder extends StubSettings.Builder
         setNodeTemplateNodeGroupSettings;
+    private final OperationCallSettings.Builder<
+            SetNodeTemplateNodeGroupHttpRequest, EmptyMessage, Operation>
+        setNodeTemplateNodeGroupOperationSettings;
     private final UnaryCallSettings.Builder<
             TestIamPermissionsNodeGroupHttpRequest, TestPermissionsResponse>
         testIamPermissionsNodeGroupSettings;
@@ -570,19 +641,27 @@ protected Builder(ClientContext clientContext) {
 
       addNodesNodeGroupSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      addNodesNodeGroupOperationSettings = OperationCallSettings.newBuilder();
+
       aggregatedListNodeGroupsSettings =
           PagedCallSettings.newBuilder(AGGREGATED_LIST_NODE_GROUPS_PAGE_STR_FACT);
 
       deleteNodeGroupSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteNodeGroupOperationSettings = OperationCallSettings.newBuilder();
+
       deleteNodesNodeGroupSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteNodesNodeGroupOperationSettings = OperationCallSettings.newBuilder();
+
       getNodeGroupSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       getIamPolicyNodeGroupSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertNodeGroupSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertNodeGroupOperationSettings = OperationCallSettings.newBuilder();
+
       listNodeGroupsSettings = PagedCallSettings.newBuilder(LIST_NODE_GROUPS_PAGE_STR_FACT);
 
       listNodesNodeGroupsSettings =
@@ -592,6 +671,8 @@ protected Builder(ClientContext clientContext) {
 
       setNodeTemplateNodeGroupSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setNodeTemplateNodeGroupOperationSettings = OperationCallSettings.newBuilder();
+
       testIamPermissionsNodeGroupSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       unaryMethodSettingsBuilders =
@@ -682,6 +763,112 @@ private static Builder initDefaults(Builder builder) {
           .testIamPermissionsNodeGroupSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .addNodesNodeGroupOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .deleteNodeGroupOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .deleteNodesNodeGroupOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertNodeGroupOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setNodeTemplateNodeGroupOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -690,16 +877,23 @@ protected Builder(NodeGroupStubSettings settings) {
       super(settings);
 
       addNodesNodeGroupSettings = settings.addNodesNodeGroupSettings.toBuilder();
+      addNodesNodeGroupOperationSettings = settings.addNodesNodeGroupOperationSettings.toBuilder();
       aggregatedListNodeGroupsSettings = settings.aggregatedListNodeGroupsSettings.toBuilder();
       deleteNodeGroupSettings = settings.deleteNodeGroupSettings.toBuilder();
+      deleteNodeGroupOperationSettings = settings.deleteNodeGroupOperationSettings.toBuilder();
       deleteNodesNodeGroupSettings = settings.deleteNodesNodeGroupSettings.toBuilder();
+      deleteNodesNodeGroupOperationSettings =
+          settings.deleteNodesNodeGroupOperationSettings.toBuilder();
       getNodeGroupSettings = settings.getNodeGroupSettings.toBuilder();
       getIamPolicyNodeGroupSettings = settings.getIamPolicyNodeGroupSettings.toBuilder();
       insertNodeGroupSettings = settings.insertNodeGroupSettings.toBuilder();
+      insertNodeGroupOperationSettings = settings.insertNodeGroupOperationSettings.toBuilder();
       listNodeGroupsSettings = settings.listNodeGroupsSettings.toBuilder();
       listNodesNodeGroupsSettings = settings.listNodesNodeGroupsSettings.toBuilder();
       setIamPolicyNodeGroupSettings = settings.setIamPolicyNodeGroupSettings.toBuilder();
       setNodeTemplateNodeGroupSettings = settings.setNodeTemplateNodeGroupSettings.toBuilder();
+      setNodeTemplateNodeGroupOperationSettings =
+          settings.setNodeTemplateNodeGroupOperationSettings.toBuilder();
       testIamPermissionsNodeGroupSettings =
           settings.testIamPermissionsNodeGroupSettings.toBuilder();
 
@@ -741,6 +935,14 @@ public Builder applyToAllUnaryMethods(
       return addNodesNodeGroupSettings;
     }
 
+    /** Returns the builder for the settings used for calls to addNodesNodeGroup. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        addNodesNodeGroupOperationSettings() {
+      return addNodesNodeGroupOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to aggregatedListNodeGroups. */
     public PagedCallSettings.Builder<
             AggregatedListNodeGroupsHttpRequest,
@@ -756,12 +958,28 @@ public Builder applyToAllUnaryMethods(
       return deleteNodeGroupSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteNodeGroup. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteNodeGroupOperationSettings() {
+      return deleteNodeGroupOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to deleteNodesNodeGroup. */
     public UnaryCallSettings.Builder
         deleteNodesNodeGroupSettings() {
       return deleteNodesNodeGroupSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteNodesNodeGroup. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteNodesNodeGroupOperationSettings() {
+      return deleteNodesNodeGroupOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getNodeGroup. */
     public UnaryCallSettings.Builder getNodeGroupSettings() {
       return getNodeGroupSettings;
@@ -779,6 +997,14 @@ public UnaryCallSettings.Builder getNodeGrou
       return insertNodeGroupSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertNodeGroup. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertNodeGroupOperationSettings() {
+      return insertNodeGroupOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listNodeGroups. */
     public PagedCallSettings.Builder<
             ListNodeGroupsHttpRequest, NodeGroupList, ListNodeGroupsPagedResponse>
@@ -805,6 +1031,15 @@ public UnaryCallSettings.Builder getNodeGrou
       return setNodeTemplateNodeGroupSettings;
     }
 
+    /** Returns the builder for the settings used for calls to setNodeTemplateNodeGroup. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetNodeTemplateNodeGroupHttpRequest, EmptyMessage, Operation>
+        setNodeTemplateNodeGroupOperationSettings() {
+      return setNodeTemplateNodeGroupOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to testIamPermissionsNodeGroup. */
     public UnaryCallSettings.Builder<
             TestIamPermissionsNodeGroupHttpRequest, TestPermissionsResponse>
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/NodeTemplateStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/NodeTemplateStub.java
index b85f5710d2d7..294dc52cd902 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/NodeTemplateStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/NodeTemplateStub.java
@@ -20,6 +20,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.AggregatedListNodeTemplatesHttpRequest;
 import com.google.cloud.compute.v1.DeleteNodeTemplateHttpRequest;
@@ -47,6 +49,11 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class NodeTemplateStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public RegionOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
   @BetaApi
   public UnaryCallable<
           AggregatedListNodeTemplatesHttpRequest, AggregatedListNodeTemplatesPagedResponse>
@@ -62,6 +69,13 @@ public abstract class NodeTemplateStub implements BackgroundResource {
         "Not implemented: aggregatedListNodeTemplatesCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteNodeTemplateOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteNodeTemplateOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteNodeTemplateCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteNodeTemplateCallable()");
@@ -78,6 +92,13 @@ public UnaryCallable getNodeTemplateCa
     throw new UnsupportedOperationException("Not implemented: getIamPolicyNodeTemplateCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertNodeTemplateOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: insertNodeTemplateOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertNodeTemplateCallable() {
     throw new UnsupportedOperationException("Not implemented: insertNodeTemplateCallable()");
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/NodeTemplateStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/NodeTemplateStubSettings.java
index 63f18b45a8c2..e021eeb5f5f7 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/NodeTemplateStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/NodeTemplateStubSettings.java
@@ -24,13 +24,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -79,13 +84,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteNodeTemplate to 30 seconds: + * example, to set the total timeout of getNodeTemplate to 30 seconds: * *

  * 
  * NodeTemplateStubSettings.Builder nodeTemplateSettingsBuilder =
  *     NodeTemplateStubSettings.newBuilder();
- * nodeTemplateSettingsBuilder.deleteNodeTemplateSettings().getRetrySettings().toBuilder()
+ * nodeTemplateSettingsBuilder.getNodeTemplateSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * NodeTemplateStubSettings nodeTemplateSettings = nodeTemplateSettingsBuilder.build();
  * 
@@ -112,11 +117,15 @@ public class NodeTemplateStubSettings extends StubSettings
       deleteNodeTemplateSettings;
+  private final OperationCallSettings
+      deleteNodeTemplateOperationSettings;
   private final UnaryCallSettings getNodeTemplateSettings;
   private final UnaryCallSettings
       getIamPolicyNodeTemplateSettings;
   private final UnaryCallSettings
       insertNodeTemplateSettings;
+  private final OperationCallSettings
+      insertNodeTemplateOperationSettings;
   private final PagedCallSettings<
           ListNodeTemplatesHttpRequest, NodeTemplateList, ListNodeTemplatesPagedResponse>
       listNodeTemplatesSettings;
@@ -140,6 +149,13 @@ public UnaryCallSettings deleteNodeTem
     return deleteNodeTemplateSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteNodeTemplate. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteNodeTemplateOperationSettings() {
+    return deleteNodeTemplateOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getNodeTemplate. */
   public UnaryCallSettings getNodeTemplateSettings() {
     return getNodeTemplateSettings;
@@ -156,6 +172,13 @@ public UnaryCallSettings insertNodeTem
     return insertNodeTemplateSettings;
   }
 
+  /** Returns the object with the settings used for calls to insertNodeTemplate. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertNodeTemplateOperationSettings() {
+    return insertNodeTemplateOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listNodeTemplates. */
   public PagedCallSettings<
           ListNodeTemplatesHttpRequest, NodeTemplateList, ListNodeTemplatesPagedResponse>
@@ -253,9 +276,13 @@ protected NodeTemplateStubSettings(Builder settingsBuilder) throws IOException {
     aggregatedListNodeTemplatesSettings =
         settingsBuilder.aggregatedListNodeTemplatesSettings().build();
     deleteNodeTemplateSettings = settingsBuilder.deleteNodeTemplateSettings().build();
+    deleteNodeTemplateOperationSettings =
+        settingsBuilder.deleteNodeTemplateOperationSettings().build();
     getNodeTemplateSettings = settingsBuilder.getNodeTemplateSettings().build();
     getIamPolicyNodeTemplateSettings = settingsBuilder.getIamPolicyNodeTemplateSettings().build();
     insertNodeTemplateSettings = settingsBuilder.insertNodeTemplateSettings().build();
+    insertNodeTemplateOperationSettings =
+        settingsBuilder.insertNodeTemplateOperationSettings().build();
     listNodeTemplatesSettings = settingsBuilder.listNodeTemplatesSettings().build();
     setIamPolicyNodeTemplateSettings = settingsBuilder.setIamPolicyNodeTemplateSettings().build();
     testIamPermissionsNodeTemplateSettings =
@@ -410,12 +437,18 @@ public static class Builder extends StubSettings.Builder
         deleteNodeTemplateSettings;
+    private final OperationCallSettings.Builder<
+            DeleteNodeTemplateHttpRequest, EmptyMessage, Operation>
+        deleteNodeTemplateOperationSettings;
     private final UnaryCallSettings.Builder
         getNodeTemplateSettings;
     private final UnaryCallSettings.Builder
         getIamPolicyNodeTemplateSettings;
     private final UnaryCallSettings.Builder
         insertNodeTemplateSettings;
+    private final OperationCallSettings.Builder<
+            InsertNodeTemplateHttpRequest, EmptyMessage, Operation>
+        insertNodeTemplateOperationSettings;
     private final PagedCallSettings.Builder<
             ListNodeTemplatesHttpRequest, NodeTemplateList, ListNodeTemplatesPagedResponse>
         listNodeTemplatesSettings;
@@ -471,12 +504,16 @@ protected Builder(ClientContext clientContext) {
 
       deleteNodeTemplateSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteNodeTemplateOperationSettings = OperationCallSettings.newBuilder();
+
       getNodeTemplateSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       getIamPolicyNodeTemplateSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertNodeTemplateSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertNodeTemplateOperationSettings = OperationCallSettings.newBuilder();
+
       listNodeTemplatesSettings = PagedCallSettings.newBuilder(LIST_NODE_TEMPLATES_PAGE_STR_FACT);
 
       setIamPolicyNodeTemplateSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
@@ -547,6 +584,48 @@ private static Builder initDefaults(Builder builder) {
           .testIamPermissionsNodeTemplateSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteNodeTemplateOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertNodeTemplateOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -557,9 +636,13 @@ protected Builder(NodeTemplateStubSettings settings) {
       aggregatedListNodeTemplatesSettings =
           settings.aggregatedListNodeTemplatesSettings.toBuilder();
       deleteNodeTemplateSettings = settings.deleteNodeTemplateSettings.toBuilder();
+      deleteNodeTemplateOperationSettings =
+          settings.deleteNodeTemplateOperationSettings.toBuilder();
       getNodeTemplateSettings = settings.getNodeTemplateSettings.toBuilder();
       getIamPolicyNodeTemplateSettings = settings.getIamPolicyNodeTemplateSettings.toBuilder();
       insertNodeTemplateSettings = settings.insertNodeTemplateSettings.toBuilder();
+      insertNodeTemplateOperationSettings =
+          settings.insertNodeTemplateOperationSettings.toBuilder();
       listNodeTemplatesSettings = settings.listNodeTemplatesSettings.toBuilder();
       setIamPolicyNodeTemplateSettings = settings.setIamPolicyNodeTemplateSettings.toBuilder();
       testIamPermissionsNodeTemplateSettings =
@@ -608,6 +691,14 @@ public Builder applyToAllUnaryMethods(
       return deleteNodeTemplateSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteNodeTemplate. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteNodeTemplateOperationSettings() {
+      return deleteNodeTemplateOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getNodeTemplate. */
     public UnaryCallSettings.Builder
         getNodeTemplateSettings() {
@@ -626,6 +717,14 @@ public Builder applyToAllUnaryMethods(
       return insertNodeTemplateSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertNodeTemplate. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertNodeTemplateOperationSettings() {
+      return insertNodeTemplateOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listNodeTemplates. */
     public PagedCallSettings.Builder<
             ListNodeTemplatesHttpRequest, NodeTemplateList, ListNodeTemplatesPagedResponse>
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ProjectStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ProjectStub.java
index a5afbd05c9ee..2bf9920e7454 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ProjectStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ProjectStub.java
@@ -20,6 +20,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.DisableXpnHostProjectHttpRequest;
 import com.google.cloud.compute.v1.DisableXpnResourceProjectHttpRequest;
@@ -50,23 +52,56 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class ProjectStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public GlobalOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      disableXpnHostProjectOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: disableXpnHostProjectOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       disableXpnHostProjectCallable() {
     throw new UnsupportedOperationException("Not implemented: disableXpnHostProjectCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      disableXpnResourceProjectOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: disableXpnResourceProjectOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       disableXpnResourceProjectCallable() {
     throw new UnsupportedOperationException("Not implemented: disableXpnResourceProjectCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      enableXpnHostProjectOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: enableXpnHostProjectOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable enableXpnHostProjectCallable() {
     throw new UnsupportedOperationException("Not implemented: enableXpnHostProjectCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      enableXpnResourceProjectOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: enableXpnResourceProjectOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       enableXpnResourceProjectCallable() {
@@ -108,16 +143,36 @@ public UnaryCallable getXpnHostProjectCal
     throw new UnsupportedOperationException("Not implemented: listXpnHostsProjectsCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      moveDiskProjectOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: moveDiskProjectOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable moveDiskProjectCallable() {
     throw new UnsupportedOperationException("Not implemented: moveDiskProjectCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      moveInstanceProjectOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: moveInstanceProjectOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable moveInstanceProjectCallable() {
     throw new UnsupportedOperationException("Not implemented: moveInstanceProjectCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setCommonInstanceMetadataProjectOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setCommonInstanceMetadataProjectOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setCommonInstanceMetadataProjectCallable() {
@@ -125,6 +180,13 @@ public UnaryCallable moveInstanceProj
         "Not implemented: setCommonInstanceMetadataProjectCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setDefaultNetworkTierProjectOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setDefaultNetworkTierProjectOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setDefaultNetworkTierProjectCallable() {
@@ -132,6 +194,13 @@ public UnaryCallable moveInstanceProj
         "Not implemented: setDefaultNetworkTierProjectCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setUsageExportBucketProjectOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setUsageExportBucketProjectOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setUsageExportBucketProjectCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ProjectStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ProjectStubSettings.java
index 2bac85100c40..7d66db4a3158 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ProjectStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ProjectStubSettings.java
@@ -24,13 +24,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -82,13 +87,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of disableXpnHostProject to 30 seconds: + * example, to set the total timeout of getProject to 30 seconds: * *

  * 
  * ProjectStubSettings.Builder projectSettingsBuilder =
  *     ProjectStubSettings.newBuilder();
- * projectSettingsBuilder.disableXpnHostProjectSettings().getRetrySettings().toBuilder()
+ * projectSettingsBuilder.getProjectSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * ProjectStubSettings projectSettings = projectSettingsBuilder.build();
  * 
@@ -110,12 +115,20 @@ public class ProjectStubSettings extends StubSettings {
 
   private final UnaryCallSettings
       disableXpnHostProjectSettings;
+  private final OperationCallSettings
+      disableXpnHostProjectOperationSettings;
   private final UnaryCallSettings
       disableXpnResourceProjectSettings;
+  private final OperationCallSettings
+      disableXpnResourceProjectOperationSettings;
   private final UnaryCallSettings
       enableXpnHostProjectSettings;
+  private final OperationCallSettings
+      enableXpnHostProjectOperationSettings;
   private final UnaryCallSettings
       enableXpnResourceProjectSettings;
+  private final OperationCallSettings
+      enableXpnResourceProjectOperationSettings;
   private final UnaryCallSettings getProjectSettings;
   private final UnaryCallSettings getXpnHostProjectSettings;
   private final PagedCallSettings<
@@ -127,14 +140,27 @@ public class ProjectStubSettings extends StubSettings {
           ListXpnHostsProjectsHttpRequest, XpnHostList, ListXpnHostsProjectsPagedResponse>
       listXpnHostsProjectsSettings;
   private final UnaryCallSettings moveDiskProjectSettings;
+  private final OperationCallSettings
+      moveDiskProjectOperationSettings;
   private final UnaryCallSettings
       moveInstanceProjectSettings;
+  private final OperationCallSettings
+      moveInstanceProjectOperationSettings;
   private final UnaryCallSettings
       setCommonInstanceMetadataProjectSettings;
+  private final OperationCallSettings<
+          SetCommonInstanceMetadataProjectHttpRequest, EmptyMessage, Operation>
+      setCommonInstanceMetadataProjectOperationSettings;
   private final UnaryCallSettings
       setDefaultNetworkTierProjectSettings;
+  private final OperationCallSettings<
+          SetDefaultNetworkTierProjectHttpRequest, EmptyMessage, Operation>
+      setDefaultNetworkTierProjectOperationSettings;
   private final UnaryCallSettings
       setUsageExportBucketProjectSettings;
+  private final OperationCallSettings<
+          SetUsageExportBucketProjectHttpRequest, EmptyMessage, Operation>
+      setUsageExportBucketProjectOperationSettings;
 
   /** Returns the object with the settings used for calls to disableXpnHostProject. */
   public UnaryCallSettings
@@ -142,24 +168,52 @@ public class ProjectStubSettings extends StubSettings {
     return disableXpnHostProjectSettings;
   }
 
+  /** Returns the object with the settings used for calls to disableXpnHostProject. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      disableXpnHostProjectOperationSettings() {
+    return disableXpnHostProjectOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to disableXpnResourceProject. */
   public UnaryCallSettings
       disableXpnResourceProjectSettings() {
     return disableXpnResourceProjectSettings;
   }
 
+  /** Returns the object with the settings used for calls to disableXpnResourceProject. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      disableXpnResourceProjectOperationSettings() {
+    return disableXpnResourceProjectOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to enableXpnHostProject. */
   public UnaryCallSettings
       enableXpnHostProjectSettings() {
     return enableXpnHostProjectSettings;
   }
 
+  /** Returns the object with the settings used for calls to enableXpnHostProject. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      enableXpnHostProjectOperationSettings() {
+    return enableXpnHostProjectOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to enableXpnResourceProject. */
   public UnaryCallSettings
       enableXpnResourceProjectSettings() {
     return enableXpnResourceProjectSettings;
   }
 
+  /** Returns the object with the settings used for calls to enableXpnResourceProject. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      enableXpnResourceProjectOperationSettings() {
+    return enableXpnResourceProjectOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getProject. */
   public UnaryCallSettings getProjectSettings() {
     return getProjectSettings;
@@ -191,30 +245,65 @@ public UnaryCallSettings moveDiskProjectS
     return moveDiskProjectSettings;
   }
 
+  /** Returns the object with the settings used for calls to moveDiskProject. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      moveDiskProjectOperationSettings() {
+    return moveDiskProjectOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to moveInstanceProject. */
   public UnaryCallSettings
       moveInstanceProjectSettings() {
     return moveInstanceProjectSettings;
   }
 
+  /** Returns the object with the settings used for calls to moveInstanceProject. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      moveInstanceProjectOperationSettings() {
+    return moveInstanceProjectOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to setCommonInstanceMetadataProject. */
   public UnaryCallSettings
       setCommonInstanceMetadataProjectSettings() {
     return setCommonInstanceMetadataProjectSettings;
   }
 
+  /** Returns the object with the settings used for calls to setCommonInstanceMetadataProject. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setCommonInstanceMetadataProjectOperationSettings() {
+    return setCommonInstanceMetadataProjectOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to setDefaultNetworkTierProject. */
   public UnaryCallSettings
       setDefaultNetworkTierProjectSettings() {
     return setDefaultNetworkTierProjectSettings;
   }
 
+  /** Returns the object with the settings used for calls to setDefaultNetworkTierProject. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setDefaultNetworkTierProjectOperationSettings() {
+    return setDefaultNetworkTierProjectOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to setUsageExportBucketProject. */
   public UnaryCallSettings
       setUsageExportBucketProjectSettings() {
     return setUsageExportBucketProjectSettings;
   }
 
+  /** Returns the object with the settings used for calls to setUsageExportBucketProject. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setUsageExportBucketProjectOperationSettings() {
+    return setUsageExportBucketProjectOperationSettings;
+  }
+
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   public ProjectStub createStub() throws IOException {
     if (getTransportChannelProvider()
@@ -290,21 +379,38 @@ protected ProjectStubSettings(Builder settingsBuilder) throws IOException {
     super(settingsBuilder);
 
     disableXpnHostProjectSettings = settingsBuilder.disableXpnHostProjectSettings().build();
+    disableXpnHostProjectOperationSettings =
+        settingsBuilder.disableXpnHostProjectOperationSettings().build();
     disableXpnResourceProjectSettings = settingsBuilder.disableXpnResourceProjectSettings().build();
+    disableXpnResourceProjectOperationSettings =
+        settingsBuilder.disableXpnResourceProjectOperationSettings().build();
     enableXpnHostProjectSettings = settingsBuilder.enableXpnHostProjectSettings().build();
+    enableXpnHostProjectOperationSettings =
+        settingsBuilder.enableXpnHostProjectOperationSettings().build();
     enableXpnResourceProjectSettings = settingsBuilder.enableXpnResourceProjectSettings().build();
+    enableXpnResourceProjectOperationSettings =
+        settingsBuilder.enableXpnResourceProjectOperationSettings().build();
     getProjectSettings = settingsBuilder.getProjectSettings().build();
     getXpnHostProjectSettings = settingsBuilder.getXpnHostProjectSettings().build();
     getXpnResourcesProjectsSettings = settingsBuilder.getXpnResourcesProjectsSettings().build();
     listXpnHostsProjectsSettings = settingsBuilder.listXpnHostsProjectsSettings().build();
     moveDiskProjectSettings = settingsBuilder.moveDiskProjectSettings().build();
+    moveDiskProjectOperationSettings = settingsBuilder.moveDiskProjectOperationSettings().build();
     moveInstanceProjectSettings = settingsBuilder.moveInstanceProjectSettings().build();
+    moveInstanceProjectOperationSettings =
+        settingsBuilder.moveInstanceProjectOperationSettings().build();
     setCommonInstanceMetadataProjectSettings =
         settingsBuilder.setCommonInstanceMetadataProjectSettings().build();
+    setCommonInstanceMetadataProjectOperationSettings =
+        settingsBuilder.setCommonInstanceMetadataProjectOperationSettings().build();
     setDefaultNetworkTierProjectSettings =
         settingsBuilder.setDefaultNetworkTierProjectSettings().build();
+    setDefaultNetworkTierProjectOperationSettings =
+        settingsBuilder.setDefaultNetworkTierProjectOperationSettings().build();
     setUsageExportBucketProjectSettings =
         settingsBuilder.setUsageExportBucketProjectSettings().build();
+    setUsageExportBucketProjectOperationSettings =
+        settingsBuilder.setUsageExportBucketProjectOperationSettings().build();
   }
 
   private static final PagedListDescriptor<
@@ -441,12 +547,24 @@ public static class Builder extends StubSettings.Builder
         disableXpnHostProjectSettings;
+    private final OperationCallSettings.Builder<
+            DisableXpnHostProjectHttpRequest, EmptyMessage, Operation>
+        disableXpnHostProjectOperationSettings;
     private final UnaryCallSettings.Builder
         disableXpnResourceProjectSettings;
+    private final OperationCallSettings.Builder<
+            DisableXpnResourceProjectHttpRequest, EmptyMessage, Operation>
+        disableXpnResourceProjectOperationSettings;
     private final UnaryCallSettings.Builder
         enableXpnHostProjectSettings;
+    private final OperationCallSettings.Builder<
+            EnableXpnHostProjectHttpRequest, EmptyMessage, Operation>
+        enableXpnHostProjectOperationSettings;
     private final UnaryCallSettings.Builder
         enableXpnResourceProjectSettings;
+    private final OperationCallSettings.Builder<
+            EnableXpnResourceProjectHttpRequest, EmptyMessage, Operation>
+        enableXpnResourceProjectOperationSettings;
     private final UnaryCallSettings.Builder getProjectSettings;
     private final UnaryCallSettings.Builder
         getXpnHostProjectSettings;
@@ -460,14 +578,28 @@ public static class Builder extends StubSettings.Builder
         moveDiskProjectSettings;
+    private final OperationCallSettings.Builder
+        moveDiskProjectOperationSettings;
     private final UnaryCallSettings.Builder
         moveInstanceProjectSettings;
+    private final OperationCallSettings.Builder<
+            MoveInstanceProjectHttpRequest, EmptyMessage, Operation>
+        moveInstanceProjectOperationSettings;
     private final UnaryCallSettings.Builder
         setCommonInstanceMetadataProjectSettings;
+    private final OperationCallSettings.Builder<
+            SetCommonInstanceMetadataProjectHttpRequest, EmptyMessage, Operation>
+        setCommonInstanceMetadataProjectOperationSettings;
     private final UnaryCallSettings.Builder
         setDefaultNetworkTierProjectSettings;
+    private final OperationCallSettings.Builder<
+            SetDefaultNetworkTierProjectHttpRequest, EmptyMessage, Operation>
+        setDefaultNetworkTierProjectOperationSettings;
     private final UnaryCallSettings.Builder
         setUsageExportBucketProjectSettings;
+    private final OperationCallSettings.Builder<
+            SetUsageExportBucketProjectHttpRequest, EmptyMessage, Operation>
+        setUsageExportBucketProjectOperationSettings;
 
     private static final ImmutableMap>
         RETRYABLE_CODE_DEFINITIONS;
@@ -512,12 +644,20 @@ protected Builder(ClientContext clientContext) {
 
       disableXpnHostProjectSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      disableXpnHostProjectOperationSettings = OperationCallSettings.newBuilder();
+
       disableXpnResourceProjectSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      disableXpnResourceProjectOperationSettings = OperationCallSettings.newBuilder();
+
       enableXpnHostProjectSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      enableXpnHostProjectOperationSettings = OperationCallSettings.newBuilder();
+
       enableXpnResourceProjectSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      enableXpnResourceProjectOperationSettings = OperationCallSettings.newBuilder();
+
       getProjectSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       getXpnHostProjectSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
@@ -530,14 +670,24 @@ protected Builder(ClientContext clientContext) {
 
       moveDiskProjectSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      moveDiskProjectOperationSettings = OperationCallSettings.newBuilder();
+
       moveInstanceProjectSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      moveInstanceProjectOperationSettings = OperationCallSettings.newBuilder();
+
       setCommonInstanceMetadataProjectSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setCommonInstanceMetadataProjectOperationSettings = OperationCallSettings.newBuilder();
+
       setDefaultNetworkTierProjectSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setDefaultNetworkTierProjectOperationSettings = OperationCallSettings.newBuilder();
+
       setUsageExportBucketProjectSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setUsageExportBucketProjectOperationSettings = OperationCallSettings.newBuilder();
+
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
               disableXpnHostProjectSettings,
@@ -632,6 +782,201 @@ private static Builder initDefaults(Builder builder) {
           .setUsageExportBucketProjectSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .disableXpnHostProjectOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .disableXpnResourceProjectOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .enableXpnHostProjectOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .enableXpnResourceProjectOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .moveDiskProjectOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .moveInstanceProjectOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setCommonInstanceMetadataProjectOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setDefaultNetworkTierProjectOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setUsageExportBucketProjectOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -640,21 +985,38 @@ protected Builder(ProjectStubSettings settings) {
       super(settings);
 
       disableXpnHostProjectSettings = settings.disableXpnHostProjectSettings.toBuilder();
+      disableXpnHostProjectOperationSettings =
+          settings.disableXpnHostProjectOperationSettings.toBuilder();
       disableXpnResourceProjectSettings = settings.disableXpnResourceProjectSettings.toBuilder();
+      disableXpnResourceProjectOperationSettings =
+          settings.disableXpnResourceProjectOperationSettings.toBuilder();
       enableXpnHostProjectSettings = settings.enableXpnHostProjectSettings.toBuilder();
+      enableXpnHostProjectOperationSettings =
+          settings.enableXpnHostProjectOperationSettings.toBuilder();
       enableXpnResourceProjectSettings = settings.enableXpnResourceProjectSettings.toBuilder();
+      enableXpnResourceProjectOperationSettings =
+          settings.enableXpnResourceProjectOperationSettings.toBuilder();
       getProjectSettings = settings.getProjectSettings.toBuilder();
       getXpnHostProjectSettings = settings.getXpnHostProjectSettings.toBuilder();
       getXpnResourcesProjectsSettings = settings.getXpnResourcesProjectsSettings.toBuilder();
       listXpnHostsProjectsSettings = settings.listXpnHostsProjectsSettings.toBuilder();
       moveDiskProjectSettings = settings.moveDiskProjectSettings.toBuilder();
+      moveDiskProjectOperationSettings = settings.moveDiskProjectOperationSettings.toBuilder();
       moveInstanceProjectSettings = settings.moveInstanceProjectSettings.toBuilder();
+      moveInstanceProjectOperationSettings =
+          settings.moveInstanceProjectOperationSettings.toBuilder();
       setCommonInstanceMetadataProjectSettings =
           settings.setCommonInstanceMetadataProjectSettings.toBuilder();
+      setCommonInstanceMetadataProjectOperationSettings =
+          settings.setCommonInstanceMetadataProjectOperationSettings.toBuilder();
       setDefaultNetworkTierProjectSettings =
           settings.setDefaultNetworkTierProjectSettings.toBuilder();
+      setDefaultNetworkTierProjectOperationSettings =
+          settings.setDefaultNetworkTierProjectOperationSettings.toBuilder();
       setUsageExportBucketProjectSettings =
           settings.setUsageExportBucketProjectSettings.toBuilder();
+      setUsageExportBucketProjectOperationSettings =
+          settings.setUsageExportBucketProjectOperationSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
@@ -695,24 +1057,58 @@ public Builder applyToAllUnaryMethods(
       return disableXpnHostProjectSettings;
     }
 
+    /** Returns the builder for the settings used for calls to disableXpnHostProject. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        disableXpnHostProjectOperationSettings() {
+      return disableXpnHostProjectOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to disableXpnResourceProject. */
     public UnaryCallSettings.Builder
         disableXpnResourceProjectSettings() {
       return disableXpnResourceProjectSettings;
     }
 
+    /** Returns the builder for the settings used for calls to disableXpnResourceProject. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            DisableXpnResourceProjectHttpRequest, EmptyMessage, Operation>
+        disableXpnResourceProjectOperationSettings() {
+      return disableXpnResourceProjectOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to enableXpnHostProject. */
     public UnaryCallSettings.Builder
         enableXpnHostProjectSettings() {
       return enableXpnHostProjectSettings;
     }
 
+    /** Returns the builder for the settings used for calls to enableXpnHostProject. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        enableXpnHostProjectOperationSettings() {
+      return enableXpnHostProjectOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to enableXpnResourceProject. */
     public UnaryCallSettings.Builder
         enableXpnResourceProjectSettings() {
       return enableXpnResourceProjectSettings;
     }
 
+    /** Returns the builder for the settings used for calls to enableXpnResourceProject. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            EnableXpnResourceProjectHttpRequest, EmptyMessage, Operation>
+        enableXpnResourceProjectOperationSettings() {
+      return enableXpnResourceProjectOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getProject. */
     public UnaryCallSettings.Builder getProjectSettings() {
       return getProjectSettings;
@@ -746,30 +1142,73 @@ public UnaryCallSettings.Builder getProjectSetti
       return moveDiskProjectSettings;
     }
 
+    /** Returns the builder for the settings used for calls to moveDiskProject. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        moveDiskProjectOperationSettings() {
+      return moveDiskProjectOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to moveInstanceProject. */
     public UnaryCallSettings.Builder
         moveInstanceProjectSettings() {
       return moveInstanceProjectSettings;
     }
 
+    /** Returns the builder for the settings used for calls to moveInstanceProject. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        moveInstanceProjectOperationSettings() {
+      return moveInstanceProjectOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to setCommonInstanceMetadataProject. */
     public UnaryCallSettings.Builder
         setCommonInstanceMetadataProjectSettings() {
       return setCommonInstanceMetadataProjectSettings;
     }
 
+    /** Returns the builder for the settings used for calls to setCommonInstanceMetadataProject. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetCommonInstanceMetadataProjectHttpRequest, EmptyMessage, Operation>
+        setCommonInstanceMetadataProjectOperationSettings() {
+      return setCommonInstanceMetadataProjectOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to setDefaultNetworkTierProject. */
     public UnaryCallSettings.Builder
         setDefaultNetworkTierProjectSettings() {
       return setDefaultNetworkTierProjectSettings;
     }
 
+    /** Returns the builder for the settings used for calls to setDefaultNetworkTierProject. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetDefaultNetworkTierProjectHttpRequest, EmptyMessage, Operation>
+        setDefaultNetworkTierProjectOperationSettings() {
+      return setDefaultNetworkTierProjectOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to setUsageExportBucketProject. */
     public UnaryCallSettings.Builder
         setUsageExportBucketProjectSettings() {
       return setUsageExportBucketProjectSettings;
     }
 
+    /** Returns the builder for the settings used for calls to setUsageExportBucketProject. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetUsageExportBucketProjectHttpRequest, EmptyMessage, Operation>
+        setUsageExportBucketProjectOperationSettings() {
+      return setUsageExportBucketProjectOperationSettings;
+    }
+
     @Override
     public ProjectStubSettings build() throws IOException {
       return new ProjectStubSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionAutoscalerStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionAutoscalerStub.java
index 8db346166822..2c756fc78c14 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionAutoscalerStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionAutoscalerStub.java
@@ -19,6 +19,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.Autoscaler;
 import com.google.cloud.compute.v1.DeleteRegionAutoscalerHttpRequest;
@@ -41,6 +43,18 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class RegionAutoscalerStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public RegionOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteRegionAutoscalerOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteRegionAutoscalerOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       deleteRegionAutoscalerCallable() {
@@ -52,6 +66,13 @@ public UnaryCallable getRegionAutosc
     throw new UnsupportedOperationException("Not implemented: getRegionAutoscalerCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertRegionAutoscalerOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: insertRegionAutoscalerOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       insertRegionAutoscalerCallable() {
@@ -71,12 +92,26 @@ public UnaryCallable getRegionAutosc
     throw new UnsupportedOperationException("Not implemented: listRegionAutoscalersCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchRegionAutoscalerOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: patchRegionAutoscalerOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       patchRegionAutoscalerCallable() {
     throw new UnsupportedOperationException("Not implemented: patchRegionAutoscalerCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      updateRegionAutoscalerOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: updateRegionAutoscalerOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       updateRegionAutoscalerCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionAutoscalerStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionAutoscalerStubSettings.java
index bbcd2eb3d03a..a04ae830b49b 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionAutoscalerStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionAutoscalerStubSettings.java
@@ -23,13 +23,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -72,13 +77,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteRegionAutoscaler to 30 seconds: + * example, to set the total timeout of getRegionAutoscaler to 30 seconds: * *

  * 
  * RegionAutoscalerStubSettings.Builder regionAutoscalerSettingsBuilder =
  *     RegionAutoscalerStubSettings.newBuilder();
- * regionAutoscalerSettingsBuilder.deleteRegionAutoscalerSettings().getRetrySettings().toBuilder()
+ * regionAutoscalerSettingsBuilder.getRegionAutoscalerSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * RegionAutoscalerStubSettings regionAutoscalerSettings = regionAutoscalerSettingsBuilder.build();
  * 
@@ -100,10 +105,14 @@ public class RegionAutoscalerStubSettings extends StubSettings
       deleteRegionAutoscalerSettings;
+  private final OperationCallSettings
+      deleteRegionAutoscalerOperationSettings;
   private final UnaryCallSettings
       getRegionAutoscalerSettings;
   private final UnaryCallSettings
       insertRegionAutoscalerSettings;
+  private final OperationCallSettings
+      insertRegionAutoscalerOperationSettings;
   private final PagedCallSettings<
           ListRegionAutoscalersHttpRequest,
           RegionAutoscalerList,
@@ -111,8 +120,12 @@ public class RegionAutoscalerStubSettings extends StubSettings
       patchRegionAutoscalerSettings;
+  private final OperationCallSettings
+      patchRegionAutoscalerOperationSettings;
   private final UnaryCallSettings
       updateRegionAutoscalerSettings;
+  private final OperationCallSettings
+      updateRegionAutoscalerOperationSettings;
 
   /** Returns the object with the settings used for calls to deleteRegionAutoscaler. */
   public UnaryCallSettings
@@ -120,6 +133,13 @@ public class RegionAutoscalerStubSettings extends StubSettings
+      deleteRegionAutoscalerOperationSettings() {
+    return deleteRegionAutoscalerOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getRegionAutoscaler. */
   public UnaryCallSettings
       getRegionAutoscalerSettings() {
@@ -132,6 +152,13 @@ public class RegionAutoscalerStubSettings extends StubSettings
+      insertRegionAutoscalerOperationSettings() {
+    return insertRegionAutoscalerOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listRegionAutoscalers. */
   public PagedCallSettings<
           ListRegionAutoscalersHttpRequest,
@@ -147,12 +174,26 @@ public class RegionAutoscalerStubSettings extends StubSettings
+      patchRegionAutoscalerOperationSettings() {
+    return patchRegionAutoscalerOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to updateRegionAutoscaler. */
   public UnaryCallSettings
       updateRegionAutoscalerSettings() {
     return updateRegionAutoscalerSettings;
   }
 
+  /** Returns the object with the settings used for calls to updateRegionAutoscaler. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      updateRegionAutoscalerOperationSettings() {
+    return updateRegionAutoscalerOperationSettings;
+  }
+
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   public RegionAutoscalerStub createStub() throws IOException {
     if (getTransportChannelProvider()
@@ -229,11 +270,19 @@ protected RegionAutoscalerStubSettings(Builder settingsBuilder) throws IOExcepti
     super(settingsBuilder);
 
     deleteRegionAutoscalerSettings = settingsBuilder.deleteRegionAutoscalerSettings().build();
+    deleteRegionAutoscalerOperationSettings =
+        settingsBuilder.deleteRegionAutoscalerOperationSettings().build();
     getRegionAutoscalerSettings = settingsBuilder.getRegionAutoscalerSettings().build();
     insertRegionAutoscalerSettings = settingsBuilder.insertRegionAutoscalerSettings().build();
+    insertRegionAutoscalerOperationSettings =
+        settingsBuilder.insertRegionAutoscalerOperationSettings().build();
     listRegionAutoscalersSettings = settingsBuilder.listRegionAutoscalersSettings().build();
     patchRegionAutoscalerSettings = settingsBuilder.patchRegionAutoscalerSettings().build();
+    patchRegionAutoscalerOperationSettings =
+        settingsBuilder.patchRegionAutoscalerOperationSettings().build();
     updateRegionAutoscalerSettings = settingsBuilder.updateRegionAutoscalerSettings().build();
+    updateRegionAutoscalerOperationSettings =
+        settingsBuilder.updateRegionAutoscalerOperationSettings().build();
   }
 
   private static final PagedListDescriptor<
@@ -309,10 +358,16 @@ public static class Builder extends StubSettings.Builder
         deleteRegionAutoscalerSettings;
+    private final OperationCallSettings.Builder<
+            DeleteRegionAutoscalerHttpRequest, EmptyMessage, Operation>
+        deleteRegionAutoscalerOperationSettings;
     private final UnaryCallSettings.Builder
         getRegionAutoscalerSettings;
     private final UnaryCallSettings.Builder
         insertRegionAutoscalerSettings;
+    private final OperationCallSettings.Builder<
+            InsertRegionAutoscalerHttpRequest, EmptyMessage, Operation>
+        insertRegionAutoscalerOperationSettings;
     private final PagedCallSettings.Builder<
             ListRegionAutoscalersHttpRequest,
             RegionAutoscalerList,
@@ -320,8 +375,14 @@ public static class Builder extends StubSettings.Builder
         patchRegionAutoscalerSettings;
+    private final OperationCallSettings.Builder<
+            PatchRegionAutoscalerHttpRequest, EmptyMessage, Operation>
+        patchRegionAutoscalerOperationSettings;
     private final UnaryCallSettings.Builder
         updateRegionAutoscalerSettings;
+    private final OperationCallSettings.Builder<
+            UpdateRegionAutoscalerHttpRequest, EmptyMessage, Operation>
+        updateRegionAutoscalerOperationSettings;
 
     private static final ImmutableMap>
         RETRYABLE_CODE_DEFINITIONS;
@@ -366,17 +427,25 @@ protected Builder(ClientContext clientContext) {
 
       deleteRegionAutoscalerSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteRegionAutoscalerOperationSettings = OperationCallSettings.newBuilder();
+
       getRegionAutoscalerSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertRegionAutoscalerSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertRegionAutoscalerOperationSettings = OperationCallSettings.newBuilder();
+
       listRegionAutoscalersSettings =
           PagedCallSettings.newBuilder(LIST_REGION_AUTOSCALERS_PAGE_STR_FACT);
 
       patchRegionAutoscalerSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      patchRegionAutoscalerOperationSettings = OperationCallSettings.newBuilder();
+
       updateRegionAutoscalerSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      updateRegionAutoscalerOperationSettings = OperationCallSettings.newBuilder();
+
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
               deleteRegionAutoscalerSettings,
@@ -429,6 +498,94 @@ private static Builder initDefaults(Builder builder) {
           .updateRegionAutoscalerSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteRegionAutoscalerOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertRegionAutoscalerOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .patchRegionAutoscalerOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .updateRegionAutoscalerOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -437,11 +594,19 @@ protected Builder(RegionAutoscalerStubSettings settings) {
       super(settings);
 
       deleteRegionAutoscalerSettings = settings.deleteRegionAutoscalerSettings.toBuilder();
+      deleteRegionAutoscalerOperationSettings =
+          settings.deleteRegionAutoscalerOperationSettings.toBuilder();
       getRegionAutoscalerSettings = settings.getRegionAutoscalerSettings.toBuilder();
       insertRegionAutoscalerSettings = settings.insertRegionAutoscalerSettings.toBuilder();
+      insertRegionAutoscalerOperationSettings =
+          settings.insertRegionAutoscalerOperationSettings.toBuilder();
       listRegionAutoscalersSettings = settings.listRegionAutoscalersSettings.toBuilder();
       patchRegionAutoscalerSettings = settings.patchRegionAutoscalerSettings.toBuilder();
+      patchRegionAutoscalerOperationSettings =
+          settings.patchRegionAutoscalerOperationSettings.toBuilder();
       updateRegionAutoscalerSettings = settings.updateRegionAutoscalerSettings.toBuilder();
+      updateRegionAutoscalerOperationSettings =
+          settings.updateRegionAutoscalerOperationSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
@@ -475,6 +640,14 @@ public Builder applyToAllUnaryMethods(
       return deleteRegionAutoscalerSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteRegionAutoscaler. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteRegionAutoscalerOperationSettings() {
+      return deleteRegionAutoscalerOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getRegionAutoscaler. */
     public UnaryCallSettings.Builder
         getRegionAutoscalerSettings() {
@@ -487,6 +660,14 @@ public Builder applyToAllUnaryMethods(
       return insertRegionAutoscalerSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertRegionAutoscaler. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertRegionAutoscalerOperationSettings() {
+      return insertRegionAutoscalerOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listRegionAutoscalers. */
     public PagedCallSettings.Builder<
             ListRegionAutoscalersHttpRequest,
@@ -502,12 +683,28 @@ public Builder applyToAllUnaryMethods(
       return patchRegionAutoscalerSettings;
     }
 
+    /** Returns the builder for the settings used for calls to patchRegionAutoscaler. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchRegionAutoscalerOperationSettings() {
+      return patchRegionAutoscalerOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to updateRegionAutoscaler. */
     public UnaryCallSettings.Builder
         updateRegionAutoscalerSettings() {
       return updateRegionAutoscalerSettings;
     }
 
+    /** Returns the builder for the settings used for calls to updateRegionAutoscaler. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        updateRegionAutoscalerOperationSettings() {
+      return updateRegionAutoscalerOperationSettings;
+    }
+
     @Override
     public RegionAutoscalerStubSettings build() throws IOException {
       return new RegionAutoscalerStubSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionBackendServiceStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionBackendServiceStub.java
index 4b725dfe9527..f58d4abbfd84 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionBackendServiceStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionBackendServiceStub.java
@@ -19,6 +19,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.BackendService;
 import com.google.cloud.compute.v1.BackendServiceGroupHealth;
@@ -43,6 +45,18 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class RegionBackendServiceStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public RegionOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteRegionBackendServiceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteRegionBackendServiceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       deleteRegionBackendServiceCallable() {
@@ -63,6 +77,13 @@ public abstract class RegionBackendServiceStub implements BackgroundResource {
         "Not implemented: getHealthRegionBackendServiceCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertRegionBackendServiceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: insertRegionBackendServiceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       insertRegionBackendServiceCallable() {
@@ -83,12 +104,26 @@ public abstract class RegionBackendServiceStub implements BackgroundResource {
     throw new UnsupportedOperationException("Not implemented: listRegionBackendServicesCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchRegionBackendServiceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: patchRegionBackendServiceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       patchRegionBackendServiceCallable() {
     throw new UnsupportedOperationException("Not implemented: patchRegionBackendServiceCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      updateRegionBackendServiceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: updateRegionBackendServiceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       updateRegionBackendServiceCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionBackendServiceStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionBackendServiceStubSettings.java
index 8c6f3090b032..5f49defc4b12 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionBackendServiceStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionBackendServiceStubSettings.java
@@ -23,13 +23,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -74,13 +79,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteRegionBackendService to 30 seconds: + * example, to set the total timeout of getRegionBackendService to 30 seconds: * *

  * 
  * RegionBackendServiceStubSettings.Builder regionBackendServiceSettingsBuilder =
  *     RegionBackendServiceStubSettings.newBuilder();
- * regionBackendServiceSettingsBuilder.deleteRegionBackendServiceSettings().getRetrySettings().toBuilder()
+ * regionBackendServiceSettingsBuilder.getRegionBackendServiceSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * RegionBackendServiceStubSettings regionBackendServiceSettings = regionBackendServiceSettingsBuilder.build();
  * 
@@ -103,6 +108,9 @@ public class RegionBackendServiceStubSettings
 
   private final UnaryCallSettings
       deleteRegionBackendServiceSettings;
+  private final OperationCallSettings<
+          DeleteRegionBackendServiceHttpRequest, EmptyMessage, Operation>
+      deleteRegionBackendServiceOperationSettings;
   private final UnaryCallSettings
       getRegionBackendServiceSettings;
   private final UnaryCallSettings<
@@ -110,6 +118,9 @@ public class RegionBackendServiceStubSettings
       getHealthRegionBackendServiceSettings;
   private final UnaryCallSettings
       insertRegionBackendServiceSettings;
+  private final OperationCallSettings<
+          InsertRegionBackendServiceHttpRequest, EmptyMessage, Operation>
+      insertRegionBackendServiceOperationSettings;
   private final PagedCallSettings<
           ListRegionBackendServicesHttpRequest,
           BackendServiceList,
@@ -117,8 +128,13 @@ public class RegionBackendServiceStubSettings
       listRegionBackendServicesSettings;
   private final UnaryCallSettings
       patchRegionBackendServiceSettings;
+  private final OperationCallSettings
+      patchRegionBackendServiceOperationSettings;
   private final UnaryCallSettings
       updateRegionBackendServiceSettings;
+  private final OperationCallSettings<
+          UpdateRegionBackendServiceHttpRequest, EmptyMessage, Operation>
+      updateRegionBackendServiceOperationSettings;
 
   /** Returns the object with the settings used for calls to deleteRegionBackendService. */
   public UnaryCallSettings
@@ -126,6 +142,13 @@ public class RegionBackendServiceStubSettings
     return deleteRegionBackendServiceSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteRegionBackendService. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteRegionBackendServiceOperationSettings() {
+    return deleteRegionBackendServiceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getRegionBackendService. */
   public UnaryCallSettings
       getRegionBackendServiceSettings() {
@@ -144,6 +167,13 @@ public class RegionBackendServiceStubSettings
     return insertRegionBackendServiceSettings;
   }
 
+  /** Returns the object with the settings used for calls to insertRegionBackendService. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertRegionBackendServiceOperationSettings() {
+    return insertRegionBackendServiceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listRegionBackendServices. */
   public PagedCallSettings<
           ListRegionBackendServicesHttpRequest,
@@ -159,12 +189,26 @@ public class RegionBackendServiceStubSettings
     return patchRegionBackendServiceSettings;
   }
 
+  /** Returns the object with the settings used for calls to patchRegionBackendService. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      patchRegionBackendServiceOperationSettings() {
+    return patchRegionBackendServiceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to updateRegionBackendService. */
   public UnaryCallSettings
       updateRegionBackendServiceSettings() {
     return updateRegionBackendServiceSettings;
   }
 
+  /** Returns the object with the settings used for calls to updateRegionBackendService. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      updateRegionBackendServiceOperationSettings() {
+    return updateRegionBackendServiceOperationSettings;
+  }
+
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   public RegionBackendServiceStub createStub() throws IOException {
     if (getTransportChannelProvider()
@@ -242,15 +286,23 @@ protected RegionBackendServiceStubSettings(Builder settingsBuilder) throws IOExc
 
     deleteRegionBackendServiceSettings =
         settingsBuilder.deleteRegionBackendServiceSettings().build();
+    deleteRegionBackendServiceOperationSettings =
+        settingsBuilder.deleteRegionBackendServiceOperationSettings().build();
     getRegionBackendServiceSettings = settingsBuilder.getRegionBackendServiceSettings().build();
     getHealthRegionBackendServiceSettings =
         settingsBuilder.getHealthRegionBackendServiceSettings().build();
     insertRegionBackendServiceSettings =
         settingsBuilder.insertRegionBackendServiceSettings().build();
+    insertRegionBackendServiceOperationSettings =
+        settingsBuilder.insertRegionBackendServiceOperationSettings().build();
     listRegionBackendServicesSettings = settingsBuilder.listRegionBackendServicesSettings().build();
     patchRegionBackendServiceSettings = settingsBuilder.patchRegionBackendServiceSettings().build();
+    patchRegionBackendServiceOperationSettings =
+        settingsBuilder.patchRegionBackendServiceOperationSettings().build();
     updateRegionBackendServiceSettings =
         settingsBuilder.updateRegionBackendServiceSettings().build();
+    updateRegionBackendServiceOperationSettings =
+        settingsBuilder.updateRegionBackendServiceOperationSettings().build();
   }
 
   private static final PagedListDescriptor<
@@ -328,6 +380,9 @@ public static class Builder
 
     private final UnaryCallSettings.Builder
         deleteRegionBackendServiceSettings;
+    private final OperationCallSettings.Builder<
+            DeleteRegionBackendServiceHttpRequest, EmptyMessage, Operation>
+        deleteRegionBackendServiceOperationSettings;
     private final UnaryCallSettings.Builder
         getRegionBackendServiceSettings;
     private final UnaryCallSettings.Builder<
@@ -335,6 +390,9 @@ public static class Builder
         getHealthRegionBackendServiceSettings;
     private final UnaryCallSettings.Builder
         insertRegionBackendServiceSettings;
+    private final OperationCallSettings.Builder<
+            InsertRegionBackendServiceHttpRequest, EmptyMessage, Operation>
+        insertRegionBackendServiceOperationSettings;
     private final PagedCallSettings.Builder<
             ListRegionBackendServicesHttpRequest,
             BackendServiceList,
@@ -342,8 +400,14 @@ public static class Builder
         listRegionBackendServicesSettings;
     private final UnaryCallSettings.Builder
         patchRegionBackendServiceSettings;
+    private final OperationCallSettings.Builder<
+            PatchRegionBackendServiceHttpRequest, EmptyMessage, Operation>
+        patchRegionBackendServiceOperationSettings;
     private final UnaryCallSettings.Builder
         updateRegionBackendServiceSettings;
+    private final OperationCallSettings.Builder<
+            UpdateRegionBackendServiceHttpRequest, EmptyMessage, Operation>
+        updateRegionBackendServiceOperationSettings;
 
     private static final ImmutableMap>
         RETRYABLE_CODE_DEFINITIONS;
@@ -388,19 +452,27 @@ protected Builder(ClientContext clientContext) {
 
       deleteRegionBackendServiceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteRegionBackendServiceOperationSettings = OperationCallSettings.newBuilder();
+
       getRegionBackendServiceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       getHealthRegionBackendServiceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertRegionBackendServiceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertRegionBackendServiceOperationSettings = OperationCallSettings.newBuilder();
+
       listRegionBackendServicesSettings =
           PagedCallSettings.newBuilder(LIST_REGION_BACKEND_SERVICES_PAGE_STR_FACT);
 
       patchRegionBackendServiceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      patchRegionBackendServiceOperationSettings = OperationCallSettings.newBuilder();
+
       updateRegionBackendServiceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      updateRegionBackendServiceOperationSettings = OperationCallSettings.newBuilder();
+
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
               deleteRegionBackendServiceSettings,
@@ -459,6 +531,94 @@ private static Builder initDefaults(Builder builder) {
           .updateRegionBackendServiceSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteRegionBackendServiceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertRegionBackendServiceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .patchRegionBackendServiceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .updateRegionBackendServiceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -467,13 +627,21 @@ protected Builder(RegionBackendServiceStubSettings settings) {
       super(settings);
 
       deleteRegionBackendServiceSettings = settings.deleteRegionBackendServiceSettings.toBuilder();
+      deleteRegionBackendServiceOperationSettings =
+          settings.deleteRegionBackendServiceOperationSettings.toBuilder();
       getRegionBackendServiceSettings = settings.getRegionBackendServiceSettings.toBuilder();
       getHealthRegionBackendServiceSettings =
           settings.getHealthRegionBackendServiceSettings.toBuilder();
       insertRegionBackendServiceSettings = settings.insertRegionBackendServiceSettings.toBuilder();
+      insertRegionBackendServiceOperationSettings =
+          settings.insertRegionBackendServiceOperationSettings.toBuilder();
       listRegionBackendServicesSettings = settings.listRegionBackendServicesSettings.toBuilder();
       patchRegionBackendServiceSettings = settings.patchRegionBackendServiceSettings.toBuilder();
+      patchRegionBackendServiceOperationSettings =
+          settings.patchRegionBackendServiceOperationSettings.toBuilder();
       updateRegionBackendServiceSettings = settings.updateRegionBackendServiceSettings.toBuilder();
+      updateRegionBackendServiceOperationSettings =
+          settings.updateRegionBackendServiceOperationSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
@@ -508,6 +676,15 @@ public Builder applyToAllUnaryMethods(
       return deleteRegionBackendServiceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteRegionBackendService. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            DeleteRegionBackendServiceHttpRequest, EmptyMessage, Operation>
+        deleteRegionBackendServiceOperationSettings() {
+      return deleteRegionBackendServiceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getRegionBackendService. */
     public UnaryCallSettings.Builder
         getRegionBackendServiceSettings() {
@@ -527,6 +704,15 @@ public Builder applyToAllUnaryMethods(
       return insertRegionBackendServiceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertRegionBackendService. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            InsertRegionBackendServiceHttpRequest, EmptyMessage, Operation>
+        insertRegionBackendServiceOperationSettings() {
+      return insertRegionBackendServiceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listRegionBackendServices. */
     public PagedCallSettings.Builder<
             ListRegionBackendServicesHttpRequest,
@@ -542,12 +728,30 @@ public Builder applyToAllUnaryMethods(
       return patchRegionBackendServiceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to patchRegionBackendService. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            PatchRegionBackendServiceHttpRequest, EmptyMessage, Operation>
+        patchRegionBackendServiceOperationSettings() {
+      return patchRegionBackendServiceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to updateRegionBackendService. */
     public UnaryCallSettings.Builder
         updateRegionBackendServiceSettings() {
       return updateRegionBackendServiceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to updateRegionBackendService. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            UpdateRegionBackendServiceHttpRequest, EmptyMessage, Operation>
+        updateRegionBackendServiceOperationSettings() {
+      return updateRegionBackendServiceOperationSettings;
+    }
+
     @Override
     public RegionBackendServiceStubSettings build() throws IOException {
       return new RegionBackendServiceStubSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionCommitmentStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionCommitmentStub.java
index 2d2c7f95963e..6c72be22a902 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionCommitmentStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionCommitmentStub.java
@@ -20,6 +20,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.AggregatedListRegionCommitmentsHttpRequest;
 import com.google.cloud.compute.v1.Commitment;
@@ -41,6 +43,11 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class RegionCommitmentStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public RegionOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
   @BetaApi
   public UnaryCallable<
           AggregatedListRegionCommitmentsHttpRequest, AggregatedListRegionCommitmentsPagedResponse>
@@ -61,6 +68,13 @@ public UnaryCallable getRegionCommit
     throw new UnsupportedOperationException("Not implemented: getRegionCommitmentCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertRegionCommitmentOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: insertRegionCommitmentOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       insertRegionCommitmentCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionCommitmentStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionCommitmentStubSettings.java
index 0086e52824a1..bcc1e77c4b04 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionCommitmentStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionCommitmentStubSettings.java
@@ -24,13 +24,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -108,6 +113,8 @@ public class RegionCommitmentStubSettings extends StubSettings
       insertRegionCommitmentSettings;
+  private final OperationCallSettings
+      insertRegionCommitmentOperationSettings;
   private final PagedCallSettings<
           ListRegionCommitmentsHttpRequest, CommitmentList, ListRegionCommitmentsPagedResponse>
       listRegionCommitmentsSettings;
@@ -133,6 +140,13 @@ public class RegionCommitmentStubSettings extends StubSettings
+      insertRegionCommitmentOperationSettings() {
+    return insertRegionCommitmentOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listRegionCommitments. */
   public PagedCallSettings<
           ListRegionCommitmentsHttpRequest, CommitmentList, ListRegionCommitmentsPagedResponse>
@@ -219,6 +233,8 @@ protected RegionCommitmentStubSettings(Builder settingsBuilder) throws IOExcepti
         settingsBuilder.aggregatedListRegionCommitmentsSettings().build();
     getRegionCommitmentSettings = settingsBuilder.getRegionCommitmentSettings().build();
     insertRegionCommitmentSettings = settingsBuilder.insertRegionCommitmentSettings().build();
+    insertRegionCommitmentOperationSettings =
+        settingsBuilder.insertRegionCommitmentOperationSettings().build();
     listRegionCommitmentsSettings = settingsBuilder.listRegionCommitmentsSettings().build();
   }
 
@@ -379,6 +395,9 @@ public static class Builder extends StubSettings.Builder
         insertRegionCommitmentSettings;
+    private final OperationCallSettings.Builder<
+            InsertRegionCommitmentHttpRequest, EmptyMessage, Operation>
+        insertRegionCommitmentOperationSettings;
     private final PagedCallSettings.Builder<
             ListRegionCommitmentsHttpRequest, CommitmentList, ListRegionCommitmentsPagedResponse>
         listRegionCommitmentsSettings;
@@ -431,6 +450,8 @@ protected Builder(ClientContext clientContext) {
 
       insertRegionCommitmentSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertRegionCommitmentOperationSettings = OperationCallSettings.newBuilder();
+
       listRegionCommitmentsSettings =
           PagedCallSettings.newBuilder(LIST_REGION_COMMITMENTS_PAGE_STR_FACT);
 
@@ -474,6 +495,28 @@ private static Builder initDefaults(Builder builder) {
           .listRegionCommitmentsSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .insertRegionCommitmentOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -485,6 +528,8 @@ protected Builder(RegionCommitmentStubSettings settings) {
           settings.aggregatedListRegionCommitmentsSettings.toBuilder();
       getRegionCommitmentSettings = settings.getRegionCommitmentSettings.toBuilder();
       insertRegionCommitmentSettings = settings.insertRegionCommitmentSettings.toBuilder();
+      insertRegionCommitmentOperationSettings =
+          settings.insertRegionCommitmentOperationSettings.toBuilder();
       listRegionCommitmentsSettings = settings.listRegionCommitmentsSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
@@ -532,6 +577,14 @@ public Builder applyToAllUnaryMethods(
       return insertRegionCommitmentSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertRegionCommitment. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertRegionCommitmentOperationSettings() {
+      return insertRegionCommitmentOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listRegionCommitments. */
     public PagedCallSettings.Builder<
             ListRegionCommitmentsHttpRequest, CommitmentList, ListRegionCommitmentsPagedResponse>
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionDiskStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionDiskStub.java
index 5d84d47fc357..243884dcc051 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionDiskStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionDiskStub.java
@@ -19,6 +19,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.CreateSnapshotRegionDiskHttpRequest;
 import com.google.cloud.compute.v1.DeleteRegionDiskHttpRequest;
@@ -44,12 +46,30 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class RegionDiskStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public RegionOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      createSnapshotRegionDiskOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: createSnapshotRegionDiskOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       createSnapshotRegionDiskCallable() {
     throw new UnsupportedOperationException("Not implemented: createSnapshotRegionDiskCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteRegionDiskOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: deleteRegionDiskOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteRegionDiskCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteRegionDiskCallable()");
@@ -60,6 +80,12 @@ public UnaryCallable getRegionDiskCallable() {
     throw new UnsupportedOperationException("Not implemented: getRegionDiskCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertRegionDiskOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: insertRegionDiskOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertRegionDiskCallable() {
     throw new UnsupportedOperationException("Not implemented: insertRegionDiskCallable()");
@@ -76,11 +102,24 @@ public UnaryCallable listRegionDisksCallab
     throw new UnsupportedOperationException("Not implemented: listRegionDisksCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      resizeRegionDiskOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: resizeRegionDiskOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable resizeRegionDiskCallable() {
     throw new UnsupportedOperationException("Not implemented: resizeRegionDiskCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setLabelsRegionDiskOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setLabelsRegionDiskOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable setLabelsRegionDiskCallable() {
     throw new UnsupportedOperationException("Not implemented: setLabelsRegionDiskCallable()");
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionDiskStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionDiskStubSettings.java
index 4351304b56f8..6d30206cfccc 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionDiskStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionDiskStubSettings.java
@@ -23,13 +23,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -75,13 +80,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of createSnapshotRegionDisk to 30 seconds: + * example, to set the total timeout of getRegionDisk to 30 seconds: * *

  * 
  * RegionDiskStubSettings.Builder regionDiskSettingsBuilder =
  *     RegionDiskStubSettings.newBuilder();
- * regionDiskSettingsBuilder.createSnapshotRegionDiskSettings().getRetrySettings().toBuilder()
+ * regionDiskSettingsBuilder.getRegionDiskSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * RegionDiskStubSettings regionDiskSettings = regionDiskSettingsBuilder.build();
  * 
@@ -103,15 +108,25 @@ public class RegionDiskStubSettings extends StubSettings
 
   private final UnaryCallSettings
       createSnapshotRegionDiskSettings;
+  private final OperationCallSettings
+      createSnapshotRegionDiskOperationSettings;
   private final UnaryCallSettings deleteRegionDiskSettings;
+  private final OperationCallSettings
+      deleteRegionDiskOperationSettings;
   private final UnaryCallSettings getRegionDiskSettings;
   private final UnaryCallSettings insertRegionDiskSettings;
+  private final OperationCallSettings
+      insertRegionDiskOperationSettings;
   private final PagedCallSettings<
           ListRegionDisksHttpRequest, DiskList, ListRegionDisksPagedResponse>
       listRegionDisksSettings;
   private final UnaryCallSettings resizeRegionDiskSettings;
+  private final OperationCallSettings
+      resizeRegionDiskOperationSettings;
   private final UnaryCallSettings
       setLabelsRegionDiskSettings;
+  private final OperationCallSettings
+      setLabelsRegionDiskOperationSettings;
   private final UnaryCallSettings
       testIamPermissionsRegionDiskSettings;
 
@@ -121,11 +136,25 @@ public class RegionDiskStubSettings extends StubSettings
     return createSnapshotRegionDiskSettings;
   }
 
+  /** Returns the object with the settings used for calls to createSnapshotRegionDisk. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      createSnapshotRegionDiskOperationSettings() {
+    return createSnapshotRegionDiskOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to deleteRegionDisk. */
   public UnaryCallSettings deleteRegionDiskSettings() {
     return deleteRegionDiskSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteRegionDisk. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteRegionDiskOperationSettings() {
+    return deleteRegionDiskOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getRegionDisk. */
   public UnaryCallSettings getRegionDiskSettings() {
     return getRegionDiskSettings;
@@ -136,6 +165,13 @@ public UnaryCallSettings insertRegionDis
     return insertRegionDiskSettings;
   }
 
+  /** Returns the object with the settings used for calls to insertRegionDisk. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertRegionDiskOperationSettings() {
+    return insertRegionDiskOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listRegionDisks. */
   public PagedCallSettings
       listRegionDisksSettings() {
@@ -147,12 +183,26 @@ public UnaryCallSettings resizeRegionDis
     return resizeRegionDiskSettings;
   }
 
+  /** Returns the object with the settings used for calls to resizeRegionDisk. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      resizeRegionDiskOperationSettings() {
+    return resizeRegionDiskOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to setLabelsRegionDisk. */
   public UnaryCallSettings
       setLabelsRegionDiskSettings() {
     return setLabelsRegionDiskSettings;
   }
 
+  /** Returns the object with the settings used for calls to setLabelsRegionDisk. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setLabelsRegionDiskOperationSettings() {
+    return setLabelsRegionDiskOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to testIamPermissionsRegionDisk. */
   public UnaryCallSettings
       testIamPermissionsRegionDiskSettings() {
@@ -235,12 +285,19 @@ protected RegionDiskStubSettings(Builder settingsBuilder) throws IOException {
     super(settingsBuilder);
 
     createSnapshotRegionDiskSettings = settingsBuilder.createSnapshotRegionDiskSettings().build();
+    createSnapshotRegionDiskOperationSettings =
+        settingsBuilder.createSnapshotRegionDiskOperationSettings().build();
     deleteRegionDiskSettings = settingsBuilder.deleteRegionDiskSettings().build();
+    deleteRegionDiskOperationSettings = settingsBuilder.deleteRegionDiskOperationSettings().build();
     getRegionDiskSettings = settingsBuilder.getRegionDiskSettings().build();
     insertRegionDiskSettings = settingsBuilder.insertRegionDiskSettings().build();
+    insertRegionDiskOperationSettings = settingsBuilder.insertRegionDiskOperationSettings().build();
     listRegionDisksSettings = settingsBuilder.listRegionDisksSettings().build();
     resizeRegionDiskSettings = settingsBuilder.resizeRegionDiskSettings().build();
+    resizeRegionDiskOperationSettings = settingsBuilder.resizeRegionDiskOperationSettings().build();
     setLabelsRegionDiskSettings = settingsBuilder.setLabelsRegionDiskSettings().build();
+    setLabelsRegionDiskOperationSettings =
+        settingsBuilder.setLabelsRegionDiskOperationSettings().build();
     testIamPermissionsRegionDiskSettings =
         settingsBuilder.testIamPermissionsRegionDiskSettings().build();
   }
@@ -306,18 +363,33 @@ public static class Builder extends StubSettings.Builder
         createSnapshotRegionDiskSettings;
+    private final OperationCallSettings.Builder<
+            CreateSnapshotRegionDiskHttpRequest, EmptyMessage, Operation>
+        createSnapshotRegionDiskOperationSettings;
     private final UnaryCallSettings.Builder
         deleteRegionDiskSettings;
+    private final OperationCallSettings.Builder<
+            DeleteRegionDiskHttpRequest, EmptyMessage, Operation>
+        deleteRegionDiskOperationSettings;
     private final UnaryCallSettings.Builder getRegionDiskSettings;
     private final UnaryCallSettings.Builder
         insertRegionDiskSettings;
+    private final OperationCallSettings.Builder<
+            InsertRegionDiskHttpRequest, EmptyMessage, Operation>
+        insertRegionDiskOperationSettings;
     private final PagedCallSettings.Builder<
             ListRegionDisksHttpRequest, DiskList, ListRegionDisksPagedResponse>
         listRegionDisksSettings;
     private final UnaryCallSettings.Builder
         resizeRegionDiskSettings;
+    private final OperationCallSettings.Builder<
+            ResizeRegionDiskHttpRequest, EmptyMessage, Operation>
+        resizeRegionDiskOperationSettings;
     private final UnaryCallSettings.Builder
         setLabelsRegionDiskSettings;
+    private final OperationCallSettings.Builder<
+            SetLabelsRegionDiskHttpRequest, EmptyMessage, Operation>
+        setLabelsRegionDiskOperationSettings;
     private final UnaryCallSettings.Builder<
             TestIamPermissionsRegionDiskHttpRequest, TestPermissionsResponse>
         testIamPermissionsRegionDiskSettings;
@@ -365,18 +437,28 @@ protected Builder(ClientContext clientContext) {
 
       createSnapshotRegionDiskSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      createSnapshotRegionDiskOperationSettings = OperationCallSettings.newBuilder();
+
       deleteRegionDiskSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteRegionDiskOperationSettings = OperationCallSettings.newBuilder();
+
       getRegionDiskSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertRegionDiskSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertRegionDiskOperationSettings = OperationCallSettings.newBuilder();
+
       listRegionDisksSettings = PagedCallSettings.newBuilder(LIST_REGION_DISKS_PAGE_STR_FACT);
 
       resizeRegionDiskSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      resizeRegionDiskOperationSettings = OperationCallSettings.newBuilder();
+
       setLabelsRegionDiskSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setLabelsRegionDiskOperationSettings = OperationCallSettings.newBuilder();
+
       testIamPermissionsRegionDiskSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       unaryMethodSettingsBuilders =
@@ -443,6 +525,112 @@ private static Builder initDefaults(Builder builder) {
           .testIamPermissionsRegionDiskSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .createSnapshotRegionDiskOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .deleteRegionDiskOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertRegionDiskOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .resizeRegionDiskOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setLabelsRegionDiskOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -451,12 +639,19 @@ protected Builder(RegionDiskStubSettings settings) {
       super(settings);
 
       createSnapshotRegionDiskSettings = settings.createSnapshotRegionDiskSettings.toBuilder();
+      createSnapshotRegionDiskOperationSettings =
+          settings.createSnapshotRegionDiskOperationSettings.toBuilder();
       deleteRegionDiskSettings = settings.deleteRegionDiskSettings.toBuilder();
+      deleteRegionDiskOperationSettings = settings.deleteRegionDiskOperationSettings.toBuilder();
       getRegionDiskSettings = settings.getRegionDiskSettings.toBuilder();
       insertRegionDiskSettings = settings.insertRegionDiskSettings.toBuilder();
+      insertRegionDiskOperationSettings = settings.insertRegionDiskOperationSettings.toBuilder();
       listRegionDisksSettings = settings.listRegionDisksSettings.toBuilder();
       resizeRegionDiskSettings = settings.resizeRegionDiskSettings.toBuilder();
+      resizeRegionDiskOperationSettings = settings.resizeRegionDiskOperationSettings.toBuilder();
       setLabelsRegionDiskSettings = settings.setLabelsRegionDiskSettings.toBuilder();
+      setLabelsRegionDiskOperationSettings =
+          settings.setLabelsRegionDiskOperationSettings.toBuilder();
       testIamPermissionsRegionDiskSettings =
           settings.testIamPermissionsRegionDiskSettings.toBuilder();
 
@@ -494,12 +689,29 @@ public Builder applyToAllUnaryMethods(
       return createSnapshotRegionDiskSettings;
     }
 
+    /** Returns the builder for the settings used for calls to createSnapshotRegionDisk. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            CreateSnapshotRegionDiskHttpRequest, EmptyMessage, Operation>
+        createSnapshotRegionDiskOperationSettings() {
+      return createSnapshotRegionDiskOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to deleteRegionDisk. */
     public UnaryCallSettings.Builder
         deleteRegionDiskSettings() {
       return deleteRegionDiskSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteRegionDisk. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteRegionDiskOperationSettings() {
+      return deleteRegionDiskOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getRegionDisk. */
     public UnaryCallSettings.Builder getRegionDiskSettings() {
       return getRegionDiskSettings;
@@ -511,6 +723,14 @@ public UnaryCallSettings.Builder getRegionDiskSe
       return insertRegionDiskSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertRegionDisk. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertRegionDiskOperationSettings() {
+      return insertRegionDiskOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listRegionDisks. */
     public PagedCallSettings.Builder<
             ListRegionDisksHttpRequest, DiskList, ListRegionDisksPagedResponse>
@@ -524,12 +744,28 @@ public UnaryCallSettings.Builder getRegionDiskSe
       return resizeRegionDiskSettings;
     }
 
+    /** Returns the builder for the settings used for calls to resizeRegionDisk. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        resizeRegionDiskOperationSettings() {
+      return resizeRegionDiskOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to setLabelsRegionDisk. */
     public UnaryCallSettings.Builder
         setLabelsRegionDiskSettings() {
       return setLabelsRegionDiskSettings;
     }
 
+    /** Returns the builder for the settings used for calls to setLabelsRegionDisk. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        setLabelsRegionDiskOperationSettings() {
+      return setLabelsRegionDiskOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to testIamPermissionsRegionDisk. */
     public UnaryCallSettings.Builder<
             TestIamPermissionsRegionDiskHttpRequest, TestPermissionsResponse>
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionInstanceGroupManagerStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionInstanceGroupManagerStub.java
index 1e4f2e54eb49..45d87586ea46 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionInstanceGroupManagerStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionInstanceGroupManagerStub.java
@@ -19,6 +19,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.AbandonInstancesRegionInstanceGroupManagerHttpRequest;
 import com.google.cloud.compute.v1.DeleteInstancesRegionInstanceGroupManagerHttpRequest;
@@ -48,6 +50,19 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class RegionInstanceGroupManagerStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public RegionOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable<
+          AbandonInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      abandonInstancesRegionInstanceGroupManagerOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: abandonInstancesRegionInstanceGroupManagerOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       abandonInstancesRegionInstanceGroupManagerCallable() {
@@ -55,6 +70,13 @@ public abstract class RegionInstanceGroupManagerStub implements BackgroundResour
         "Not implemented: abandonInstancesRegionInstanceGroupManagerCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteRegionInstanceGroupManagerOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteRegionInstanceGroupManagerOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       deleteRegionInstanceGroupManagerCallable() {
@@ -62,6 +84,14 @@ public abstract class RegionInstanceGroupManagerStub implements BackgroundResour
         "Not implemented: deleteRegionInstanceGroupManagerCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable<
+          DeleteInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      deleteInstancesRegionInstanceGroupManagerOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteInstancesRegionInstanceGroupManagerOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       deleteInstancesRegionInstanceGroupManagerCallable() {
@@ -76,6 +106,13 @@ public abstract class RegionInstanceGroupManagerStub implements BackgroundResour
         "Not implemented: getRegionInstanceGroupManagerCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertRegionInstanceGroupManagerOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: insertRegionInstanceGroupManagerOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       insertRegionInstanceGroupManagerCallable() {
@@ -107,6 +144,13 @@ public abstract class RegionInstanceGroupManagerStub implements BackgroundResour
         "Not implemented: listManagedInstancesRegionInstanceGroupManagersCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchRegionInstanceGroupManagerOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: patchRegionInstanceGroupManagerOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       patchRegionInstanceGroupManagerCallable() {
@@ -114,6 +158,14 @@ public abstract class RegionInstanceGroupManagerStub implements BackgroundResour
         "Not implemented: patchRegionInstanceGroupManagerCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable<
+          RecreateInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      recreateInstancesRegionInstanceGroupManagerOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: recreateInstancesRegionInstanceGroupManagerOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       recreateInstancesRegionInstanceGroupManagerCallable() {
@@ -121,6 +173,13 @@ public abstract class RegionInstanceGroupManagerStub implements BackgroundResour
         "Not implemented: recreateInstancesRegionInstanceGroupManagerCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      resizeRegionInstanceGroupManagerOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: resizeRegionInstanceGroupManagerOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       resizeRegionInstanceGroupManagerCallable() {
@@ -128,6 +187,14 @@ public abstract class RegionInstanceGroupManagerStub implements BackgroundResour
         "Not implemented: resizeRegionInstanceGroupManagerCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable<
+          SetInstanceTemplateRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      setInstanceTemplateRegionInstanceGroupManagerOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setInstanceTemplateRegionInstanceGroupManagerOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setInstanceTemplateRegionInstanceGroupManagerCallable() {
@@ -135,6 +202,14 @@ public abstract class RegionInstanceGroupManagerStub implements BackgroundResour
         "Not implemented: setInstanceTemplateRegionInstanceGroupManagerCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable<
+          SetTargetPoolsRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      setTargetPoolsRegionInstanceGroupManagerOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setTargetPoolsRegionInstanceGroupManagerOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setTargetPoolsRegionInstanceGroupManagerCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionInstanceGroupManagerStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionInstanceGroupManagerStubSettings.java
index 224d88b85f24..6201ef606924 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionInstanceGroupManagerStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionInstanceGroupManagerStubSettings.java
@@ -23,13 +23,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -79,13 +84,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of abandonInstancesRegionInstanceGroupManager to 30 seconds: + * example, to set the total timeout of getRegionInstanceGroupManager to 30 seconds: * *

  * 
  * RegionInstanceGroupManagerStubSettings.Builder regionInstanceGroupManagerSettingsBuilder =
  *     RegionInstanceGroupManagerStubSettings.newBuilder();
- * regionInstanceGroupManagerSettingsBuilder.abandonInstancesRegionInstanceGroupManagerSettings().getRetrySettings().toBuilder()
+ * regionInstanceGroupManagerSettingsBuilder.getRegionInstanceGroupManagerSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * RegionInstanceGroupManagerStubSettings regionInstanceGroupManagerSettings = regionInstanceGroupManagerSettingsBuilder.build();
  * 
@@ -108,14 +113,26 @@ public class RegionInstanceGroupManagerStubSettings
 
   private final UnaryCallSettings
       abandonInstancesRegionInstanceGroupManagerSettings;
+  private final OperationCallSettings<
+          AbandonInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      abandonInstancesRegionInstanceGroupManagerOperationSettings;
   private final UnaryCallSettings
       deleteRegionInstanceGroupManagerSettings;
+  private final OperationCallSettings<
+          DeleteRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      deleteRegionInstanceGroupManagerOperationSettings;
   private final UnaryCallSettings
       deleteInstancesRegionInstanceGroupManagerSettings;
+  private final OperationCallSettings<
+          DeleteInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      deleteInstancesRegionInstanceGroupManagerOperationSettings;
   private final UnaryCallSettings
       getRegionInstanceGroupManagerSettings;
   private final UnaryCallSettings
       insertRegionInstanceGroupManagerSettings;
+  private final OperationCallSettings<
+          InsertRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      insertRegionInstanceGroupManagerOperationSettings;
   private final PagedCallSettings<
           ListRegionInstanceGroupManagersHttpRequest,
           RegionInstanceGroupManagerList,
@@ -127,15 +144,30 @@ public class RegionInstanceGroupManagerStubSettings
       listManagedInstancesRegionInstanceGroupManagersSettings;
   private final UnaryCallSettings
       patchRegionInstanceGroupManagerSettings;
+  private final OperationCallSettings<
+          PatchRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      patchRegionInstanceGroupManagerOperationSettings;
   private final UnaryCallSettings
       recreateInstancesRegionInstanceGroupManagerSettings;
+  private final OperationCallSettings<
+          RecreateInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      recreateInstancesRegionInstanceGroupManagerOperationSettings;
   private final UnaryCallSettings
       resizeRegionInstanceGroupManagerSettings;
+  private final OperationCallSettings<
+          ResizeRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      resizeRegionInstanceGroupManagerOperationSettings;
   private final UnaryCallSettings<
           SetInstanceTemplateRegionInstanceGroupManagerHttpRequest, Operation>
       setInstanceTemplateRegionInstanceGroupManagerSettings;
+  private final OperationCallSettings<
+          SetInstanceTemplateRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      setInstanceTemplateRegionInstanceGroupManagerOperationSettings;
   private final UnaryCallSettings
       setTargetPoolsRegionInstanceGroupManagerSettings;
+  private final OperationCallSettings<
+          SetTargetPoolsRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      setTargetPoolsRegionInstanceGroupManagerOperationSettings;
 
   /**
    * Returns the object with the settings used for calls to
@@ -146,12 +178,30 @@ public class RegionInstanceGroupManagerStubSettings
     return abandonInstancesRegionInstanceGroupManagerSettings;
   }
 
+  /**
+   * Returns the object with the settings used for calls to
+   * abandonInstancesRegionInstanceGroupManager.
+   */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings<
+          AbandonInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      abandonInstancesRegionInstanceGroupManagerOperationSettings() {
+    return abandonInstancesRegionInstanceGroupManagerOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to deleteRegionInstanceGroupManager. */
   public UnaryCallSettings
       deleteRegionInstanceGroupManagerSettings() {
     return deleteRegionInstanceGroupManagerSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteRegionInstanceGroupManager. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteRegionInstanceGroupManagerOperationSettings() {
+    return deleteRegionInstanceGroupManagerOperationSettings;
+  }
+
   /**
    * Returns the object with the settings used for calls to
    * deleteInstancesRegionInstanceGroupManager.
@@ -161,6 +211,17 @@ public class RegionInstanceGroupManagerStubSettings
     return deleteInstancesRegionInstanceGroupManagerSettings;
   }
 
+  /**
+   * Returns the object with the settings used for calls to
+   * deleteInstancesRegionInstanceGroupManager.
+   */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings<
+          DeleteInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      deleteInstancesRegionInstanceGroupManagerOperationSettings() {
+    return deleteInstancesRegionInstanceGroupManagerOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getRegionInstanceGroupManager. */
   public UnaryCallSettings
       getRegionInstanceGroupManagerSettings() {
@@ -173,6 +234,13 @@ public class RegionInstanceGroupManagerStubSettings
     return insertRegionInstanceGroupManagerSettings;
   }
 
+  /** Returns the object with the settings used for calls to insertRegionInstanceGroupManager. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertRegionInstanceGroupManagerOperationSettings() {
+    return insertRegionInstanceGroupManagerOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listRegionInstanceGroupManagers. */
   public PagedCallSettings<
           ListRegionInstanceGroupManagersHttpRequest,
@@ -199,6 +267,13 @@ public class RegionInstanceGroupManagerStubSettings
     return patchRegionInstanceGroupManagerSettings;
   }
 
+  /** Returns the object with the settings used for calls to patchRegionInstanceGroupManager. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      patchRegionInstanceGroupManagerOperationSettings() {
+    return patchRegionInstanceGroupManagerOperationSettings;
+  }
+
   /**
    * Returns the object with the settings used for calls to
    * recreateInstancesRegionInstanceGroupManager.
@@ -208,12 +283,30 @@ public class RegionInstanceGroupManagerStubSettings
     return recreateInstancesRegionInstanceGroupManagerSettings;
   }
 
+  /**
+   * Returns the object with the settings used for calls to
+   * recreateInstancesRegionInstanceGroupManager.
+   */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings<
+          RecreateInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      recreateInstancesRegionInstanceGroupManagerOperationSettings() {
+    return recreateInstancesRegionInstanceGroupManagerOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to resizeRegionInstanceGroupManager. */
   public UnaryCallSettings
       resizeRegionInstanceGroupManagerSettings() {
     return resizeRegionInstanceGroupManagerSettings;
   }
 
+  /** Returns the object with the settings used for calls to resizeRegionInstanceGroupManager. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      resizeRegionInstanceGroupManagerOperationSettings() {
+    return resizeRegionInstanceGroupManagerOperationSettings;
+  }
+
   /**
    * Returns the object with the settings used for calls to
    * setInstanceTemplateRegionInstanceGroupManager.
@@ -223,6 +316,17 @@ public class RegionInstanceGroupManagerStubSettings
     return setInstanceTemplateRegionInstanceGroupManagerSettings;
   }
 
+  /**
+   * Returns the object with the settings used for calls to
+   * setInstanceTemplateRegionInstanceGroupManager.
+   */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings<
+          SetInstanceTemplateRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      setInstanceTemplateRegionInstanceGroupManagerOperationSettings() {
+    return setInstanceTemplateRegionInstanceGroupManagerOperationSettings;
+  }
+
   /**
    * Returns the object with the settings used for calls to
    * setTargetPoolsRegionInstanceGroupManager.
@@ -232,6 +336,17 @@ public class RegionInstanceGroupManagerStubSettings
     return setTargetPoolsRegionInstanceGroupManagerSettings;
   }
 
+  /**
+   * Returns the object with the settings used for calls to
+   * setTargetPoolsRegionInstanceGroupManager.
+   */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings<
+          SetTargetPoolsRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+      setTargetPoolsRegionInstanceGroupManagerOperationSettings() {
+    return setTargetPoolsRegionInstanceGroupManagerOperationSettings;
+  }
+
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   public RegionInstanceGroupManagerStub createStub() throws IOException {
     if (getTransportChannelProvider()
@@ -309,28 +424,46 @@ protected RegionInstanceGroupManagerStubSettings(Builder settingsBuilder) throws
 
     abandonInstancesRegionInstanceGroupManagerSettings =
         settingsBuilder.abandonInstancesRegionInstanceGroupManagerSettings().build();
+    abandonInstancesRegionInstanceGroupManagerOperationSettings =
+        settingsBuilder.abandonInstancesRegionInstanceGroupManagerOperationSettings().build();
     deleteRegionInstanceGroupManagerSettings =
         settingsBuilder.deleteRegionInstanceGroupManagerSettings().build();
+    deleteRegionInstanceGroupManagerOperationSettings =
+        settingsBuilder.deleteRegionInstanceGroupManagerOperationSettings().build();
     deleteInstancesRegionInstanceGroupManagerSettings =
         settingsBuilder.deleteInstancesRegionInstanceGroupManagerSettings().build();
+    deleteInstancesRegionInstanceGroupManagerOperationSettings =
+        settingsBuilder.deleteInstancesRegionInstanceGroupManagerOperationSettings().build();
     getRegionInstanceGroupManagerSettings =
         settingsBuilder.getRegionInstanceGroupManagerSettings().build();
     insertRegionInstanceGroupManagerSettings =
         settingsBuilder.insertRegionInstanceGroupManagerSettings().build();
+    insertRegionInstanceGroupManagerOperationSettings =
+        settingsBuilder.insertRegionInstanceGroupManagerOperationSettings().build();
     listRegionInstanceGroupManagersSettings =
         settingsBuilder.listRegionInstanceGroupManagersSettings().build();
     listManagedInstancesRegionInstanceGroupManagersSettings =
         settingsBuilder.listManagedInstancesRegionInstanceGroupManagersSettings().build();
     patchRegionInstanceGroupManagerSettings =
         settingsBuilder.patchRegionInstanceGroupManagerSettings().build();
+    patchRegionInstanceGroupManagerOperationSettings =
+        settingsBuilder.patchRegionInstanceGroupManagerOperationSettings().build();
     recreateInstancesRegionInstanceGroupManagerSettings =
         settingsBuilder.recreateInstancesRegionInstanceGroupManagerSettings().build();
+    recreateInstancesRegionInstanceGroupManagerOperationSettings =
+        settingsBuilder.recreateInstancesRegionInstanceGroupManagerOperationSettings().build();
     resizeRegionInstanceGroupManagerSettings =
         settingsBuilder.resizeRegionInstanceGroupManagerSettings().build();
+    resizeRegionInstanceGroupManagerOperationSettings =
+        settingsBuilder.resizeRegionInstanceGroupManagerOperationSettings().build();
     setInstanceTemplateRegionInstanceGroupManagerSettings =
         settingsBuilder.setInstanceTemplateRegionInstanceGroupManagerSettings().build();
+    setInstanceTemplateRegionInstanceGroupManagerOperationSettings =
+        settingsBuilder.setInstanceTemplateRegionInstanceGroupManagerOperationSettings().build();
     setTargetPoolsRegionInstanceGroupManagerSettings =
         settingsBuilder.setTargetPoolsRegionInstanceGroupManagerSettings().build();
+    setTargetPoolsRegionInstanceGroupManagerOperationSettings =
+        settingsBuilder.setTargetPoolsRegionInstanceGroupManagerOperationSettings().build();
   }
 
   private static final PagedListDescriptor<
@@ -422,16 +555,28 @@ public static class Builder
     private final UnaryCallSettings.Builder<
             AbandonInstancesRegionInstanceGroupManagerHttpRequest, Operation>
         abandonInstancesRegionInstanceGroupManagerSettings;
+    private final OperationCallSettings.Builder<
+            AbandonInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        abandonInstancesRegionInstanceGroupManagerOperationSettings;
     private final UnaryCallSettings.Builder
         deleteRegionInstanceGroupManagerSettings;
+    private final OperationCallSettings.Builder<
+            DeleteRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        deleteRegionInstanceGroupManagerOperationSettings;
     private final UnaryCallSettings.Builder<
             DeleteInstancesRegionInstanceGroupManagerHttpRequest, Operation>
         deleteInstancesRegionInstanceGroupManagerSettings;
+    private final OperationCallSettings.Builder<
+            DeleteInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        deleteInstancesRegionInstanceGroupManagerOperationSettings;
     private final UnaryCallSettings.Builder<
             GetRegionInstanceGroupManagerHttpRequest, InstanceGroupManager>
         getRegionInstanceGroupManagerSettings;
     private final UnaryCallSettings.Builder
         insertRegionInstanceGroupManagerSettings;
+    private final OperationCallSettings.Builder<
+            InsertRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        insertRegionInstanceGroupManagerOperationSettings;
     private final PagedCallSettings.Builder<
             ListRegionInstanceGroupManagersHttpRequest,
             RegionInstanceGroupManagerList,
@@ -443,17 +588,32 @@ public static class Builder
         listManagedInstancesRegionInstanceGroupManagersSettings;
     private final UnaryCallSettings.Builder
         patchRegionInstanceGroupManagerSettings;
+    private final OperationCallSettings.Builder<
+            PatchRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        patchRegionInstanceGroupManagerOperationSettings;
     private final UnaryCallSettings.Builder<
             RecreateInstancesRegionInstanceGroupManagerHttpRequest, Operation>
         recreateInstancesRegionInstanceGroupManagerSettings;
+    private final OperationCallSettings.Builder<
+            RecreateInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        recreateInstancesRegionInstanceGroupManagerOperationSettings;
     private final UnaryCallSettings.Builder
         resizeRegionInstanceGroupManagerSettings;
+    private final OperationCallSettings.Builder<
+            ResizeRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        resizeRegionInstanceGroupManagerOperationSettings;
     private final UnaryCallSettings.Builder<
             SetInstanceTemplateRegionInstanceGroupManagerHttpRequest, Operation>
         setInstanceTemplateRegionInstanceGroupManagerSettings;
+    private final OperationCallSettings.Builder<
+            SetInstanceTemplateRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        setInstanceTemplateRegionInstanceGroupManagerOperationSettings;
     private final UnaryCallSettings.Builder<
             SetTargetPoolsRegionInstanceGroupManagerHttpRequest, Operation>
         setTargetPoolsRegionInstanceGroupManagerSettings;
+    private final OperationCallSettings.Builder<
+            SetTargetPoolsRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        setTargetPoolsRegionInstanceGroupManagerOperationSettings;
 
     private static final ImmutableMap>
         RETRYABLE_CODE_DEFINITIONS;
@@ -499,15 +659,25 @@ protected Builder(ClientContext clientContext) {
       abandonInstancesRegionInstanceGroupManagerSettings =
           UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      abandonInstancesRegionInstanceGroupManagerOperationSettings =
+          OperationCallSettings.newBuilder();
+
       deleteRegionInstanceGroupManagerSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteRegionInstanceGroupManagerOperationSettings = OperationCallSettings.newBuilder();
+
       deleteInstancesRegionInstanceGroupManagerSettings =
           UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteInstancesRegionInstanceGroupManagerOperationSettings =
+          OperationCallSettings.newBuilder();
+
       getRegionInstanceGroupManagerSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertRegionInstanceGroupManagerSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertRegionInstanceGroupManagerOperationSettings = OperationCallSettings.newBuilder();
+
       listRegionInstanceGroupManagersSettings =
           PagedCallSettings.newBuilder(LIST_REGION_INSTANCE_GROUP_MANAGERS_PAGE_STR_FACT);
 
@@ -516,17 +686,30 @@ protected Builder(ClientContext clientContext) {
 
       patchRegionInstanceGroupManagerSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      patchRegionInstanceGroupManagerOperationSettings = OperationCallSettings.newBuilder();
+
       recreateInstancesRegionInstanceGroupManagerSettings =
           UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      recreateInstancesRegionInstanceGroupManagerOperationSettings =
+          OperationCallSettings.newBuilder();
+
       resizeRegionInstanceGroupManagerSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      resizeRegionInstanceGroupManagerOperationSettings = OperationCallSettings.newBuilder();
+
       setInstanceTemplateRegionInstanceGroupManagerSettings =
           UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setInstanceTemplateRegionInstanceGroupManagerOperationSettings =
+          OperationCallSettings.newBuilder();
+
       setTargetPoolsRegionInstanceGroupManagerSettings =
           UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setTargetPoolsRegionInstanceGroupManagerOperationSettings =
+          OperationCallSettings.newBuilder();
+
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
               abandonInstancesRegionInstanceGroupManagerSettings,
@@ -615,6 +798,204 @@ private static Builder initDefaults(Builder builder) {
           .setTargetPoolsRegionInstanceGroupManagerSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .abandonInstancesRegionInstanceGroupManagerOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .deleteRegionInstanceGroupManagerOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .deleteInstancesRegionInstanceGroupManagerOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertRegionInstanceGroupManagerOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .patchRegionInstanceGroupManagerOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .recreateInstancesRegionInstanceGroupManagerOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .resizeRegionInstanceGroupManagerOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setInstanceTemplateRegionInstanceGroupManagerOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setTargetPoolsRegionInstanceGroupManagerOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -624,28 +1005,46 @@ protected Builder(RegionInstanceGroupManagerStubSettings settings) {
 
       abandonInstancesRegionInstanceGroupManagerSettings =
           settings.abandonInstancesRegionInstanceGroupManagerSettings.toBuilder();
+      abandonInstancesRegionInstanceGroupManagerOperationSettings =
+          settings.abandonInstancesRegionInstanceGroupManagerOperationSettings.toBuilder();
       deleteRegionInstanceGroupManagerSettings =
           settings.deleteRegionInstanceGroupManagerSettings.toBuilder();
+      deleteRegionInstanceGroupManagerOperationSettings =
+          settings.deleteRegionInstanceGroupManagerOperationSettings.toBuilder();
       deleteInstancesRegionInstanceGroupManagerSettings =
           settings.deleteInstancesRegionInstanceGroupManagerSettings.toBuilder();
+      deleteInstancesRegionInstanceGroupManagerOperationSettings =
+          settings.deleteInstancesRegionInstanceGroupManagerOperationSettings.toBuilder();
       getRegionInstanceGroupManagerSettings =
           settings.getRegionInstanceGroupManagerSettings.toBuilder();
       insertRegionInstanceGroupManagerSettings =
           settings.insertRegionInstanceGroupManagerSettings.toBuilder();
+      insertRegionInstanceGroupManagerOperationSettings =
+          settings.insertRegionInstanceGroupManagerOperationSettings.toBuilder();
       listRegionInstanceGroupManagersSettings =
           settings.listRegionInstanceGroupManagersSettings.toBuilder();
       listManagedInstancesRegionInstanceGroupManagersSettings =
           settings.listManagedInstancesRegionInstanceGroupManagersSettings.toBuilder();
       patchRegionInstanceGroupManagerSettings =
           settings.patchRegionInstanceGroupManagerSettings.toBuilder();
+      patchRegionInstanceGroupManagerOperationSettings =
+          settings.patchRegionInstanceGroupManagerOperationSettings.toBuilder();
       recreateInstancesRegionInstanceGroupManagerSettings =
           settings.recreateInstancesRegionInstanceGroupManagerSettings.toBuilder();
+      recreateInstancesRegionInstanceGroupManagerOperationSettings =
+          settings.recreateInstancesRegionInstanceGroupManagerOperationSettings.toBuilder();
       resizeRegionInstanceGroupManagerSettings =
           settings.resizeRegionInstanceGroupManagerSettings.toBuilder();
+      resizeRegionInstanceGroupManagerOperationSettings =
+          settings.resizeRegionInstanceGroupManagerOperationSettings.toBuilder();
       setInstanceTemplateRegionInstanceGroupManagerSettings =
           settings.setInstanceTemplateRegionInstanceGroupManagerSettings.toBuilder();
+      setInstanceTemplateRegionInstanceGroupManagerOperationSettings =
+          settings.setInstanceTemplateRegionInstanceGroupManagerOperationSettings.toBuilder();
       setTargetPoolsRegionInstanceGroupManagerSettings =
           settings.setTargetPoolsRegionInstanceGroupManagerSettings.toBuilder();
+      setTargetPoolsRegionInstanceGroupManagerOperationSettings =
+          settings.setTargetPoolsRegionInstanceGroupManagerOperationSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
@@ -689,12 +1088,33 @@ public Builder applyToAllUnaryMethods(
       return abandonInstancesRegionInstanceGroupManagerSettings;
     }
 
+    /**
+     * Returns the builder for the settings used for calls to
+     * abandonInstancesRegionInstanceGroupManager.
+     */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            AbandonInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        abandonInstancesRegionInstanceGroupManagerOperationSettings() {
+      return abandonInstancesRegionInstanceGroupManagerOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to deleteRegionInstanceGroupManager. */
     public UnaryCallSettings.Builder
         deleteRegionInstanceGroupManagerSettings() {
       return deleteRegionInstanceGroupManagerSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteRegionInstanceGroupManager. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            DeleteRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        deleteRegionInstanceGroupManagerOperationSettings() {
+      return deleteRegionInstanceGroupManagerOperationSettings;
+    }
+
     /**
      * Returns the builder for the settings used for calls to
      * deleteInstancesRegionInstanceGroupManager.
@@ -705,6 +1125,18 @@ public Builder applyToAllUnaryMethods(
       return deleteInstancesRegionInstanceGroupManagerSettings;
     }
 
+    /**
+     * Returns the builder for the settings used for calls to
+     * deleteInstancesRegionInstanceGroupManager.
+     */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            DeleteInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        deleteInstancesRegionInstanceGroupManagerOperationSettings() {
+      return deleteInstancesRegionInstanceGroupManagerOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getRegionInstanceGroupManager. */
     public UnaryCallSettings.Builder
         getRegionInstanceGroupManagerSettings() {
@@ -717,6 +1149,15 @@ public Builder applyToAllUnaryMethods(
       return insertRegionInstanceGroupManagerSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertRegionInstanceGroupManager. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            InsertRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        insertRegionInstanceGroupManagerOperationSettings() {
+      return insertRegionInstanceGroupManagerOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listRegionInstanceGroupManagers. */
     public PagedCallSettings.Builder<
             ListRegionInstanceGroupManagersHttpRequest,
@@ -743,6 +1184,15 @@ public Builder applyToAllUnaryMethods(
       return patchRegionInstanceGroupManagerSettings;
     }
 
+    /** Returns the builder for the settings used for calls to patchRegionInstanceGroupManager. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            PatchRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        patchRegionInstanceGroupManagerOperationSettings() {
+      return patchRegionInstanceGroupManagerOperationSettings;
+    }
+
     /**
      * Returns the builder for the settings used for calls to
      * recreateInstancesRegionInstanceGroupManager.
@@ -753,12 +1203,33 @@ public Builder applyToAllUnaryMethods(
       return recreateInstancesRegionInstanceGroupManagerSettings;
     }
 
+    /**
+     * Returns the builder for the settings used for calls to
+     * recreateInstancesRegionInstanceGroupManager.
+     */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            RecreateInstancesRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        recreateInstancesRegionInstanceGroupManagerOperationSettings() {
+      return recreateInstancesRegionInstanceGroupManagerOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to resizeRegionInstanceGroupManager. */
     public UnaryCallSettings.Builder
         resizeRegionInstanceGroupManagerSettings() {
       return resizeRegionInstanceGroupManagerSettings;
     }
 
+    /** Returns the builder for the settings used for calls to resizeRegionInstanceGroupManager. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            ResizeRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        resizeRegionInstanceGroupManagerOperationSettings() {
+      return resizeRegionInstanceGroupManagerOperationSettings;
+    }
+
     /**
      * Returns the builder for the settings used for calls to
      * setInstanceTemplateRegionInstanceGroupManager.
@@ -769,6 +1240,18 @@ public Builder applyToAllUnaryMethods(
       return setInstanceTemplateRegionInstanceGroupManagerSettings;
     }
 
+    /**
+     * Returns the builder for the settings used for calls to
+     * setInstanceTemplateRegionInstanceGroupManager.
+     */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetInstanceTemplateRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        setInstanceTemplateRegionInstanceGroupManagerOperationSettings() {
+      return setInstanceTemplateRegionInstanceGroupManagerOperationSettings;
+    }
+
     /**
      * Returns the builder for the settings used for calls to
      * setTargetPoolsRegionInstanceGroupManager.
@@ -778,6 +1261,18 @@ public Builder applyToAllUnaryMethods(
       return setTargetPoolsRegionInstanceGroupManagerSettings;
     }
 
+    /**
+     * Returns the builder for the settings used for calls to
+     * setTargetPoolsRegionInstanceGroupManager.
+     */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetTargetPoolsRegionInstanceGroupManagerHttpRequest, EmptyMessage, Operation>
+        setTargetPoolsRegionInstanceGroupManagerOperationSettings() {
+      return setTargetPoolsRegionInstanceGroupManagerOperationSettings;
+    }
+
     @Override
     public RegionInstanceGroupManagerStubSettings build() throws IOException {
       return new RegionInstanceGroupManagerStubSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionInstanceGroupStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionInstanceGroupStub.java
index ff7a5de24ec3..98e2b70e64db 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionInstanceGroupStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionInstanceGroupStub.java
@@ -20,6 +20,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.GetRegionInstanceGroupHttpRequest;
 import com.google.cloud.compute.v1.InstanceGroup;
@@ -41,6 +43,11 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class RegionInstanceGroupStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public RegionOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
   @BetaApi
   public UnaryCallable
       getRegionInstanceGroupCallable() {
@@ -77,6 +84,13 @@ public abstract class RegionInstanceGroupStub implements BackgroundResource {
         "Not implemented: listInstancesRegionInstanceGroupsCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setNamedPortsRegionInstanceGroupOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setNamedPortsRegionInstanceGroupOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setNamedPortsRegionInstanceGroupCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionInstanceGroupStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionInstanceGroupStubSettings.java
index 43f3dfc8ac75..405319a73d7f 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionInstanceGroupStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionInstanceGroupStubSettings.java
@@ -24,13 +24,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -113,6 +118,9 @@ public class RegionInstanceGroupStubSettings extends StubSettings
       setNamedPortsRegionInstanceGroupSettings;
+  private final OperationCallSettings<
+          SetNamedPortsRegionInstanceGroupHttpRequest, EmptyMessage, Operation>
+      setNamedPortsRegionInstanceGroupOperationSettings;
 
   /** Returns the object with the settings used for calls to getRegionInstanceGroup. */
   public UnaryCallSettings
@@ -144,6 +152,13 @@ public class RegionInstanceGroupStubSettings extends StubSettings
+      setNamedPortsRegionInstanceGroupOperationSettings() {
+    return setNamedPortsRegionInstanceGroupOperationSettings;
+  }
+
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   public RegionInstanceGroupStub createStub() throws IOException {
     if (getTransportChannelProvider()
@@ -225,6 +240,8 @@ protected RegionInstanceGroupStubSettings(Builder settingsBuilder) throws IOExce
         settingsBuilder.listInstancesRegionInstanceGroupsSettings().build();
     setNamedPortsRegionInstanceGroupSettings =
         settingsBuilder.setNamedPortsRegionInstanceGroupSettings().build();
+    setNamedPortsRegionInstanceGroupOperationSettings =
+        settingsBuilder.setNamedPortsRegionInstanceGroupOperationSettings().build();
   }
 
   private static final PagedListDescriptor<
@@ -397,6 +414,9 @@ public static class Builder
         listInstancesRegionInstanceGroupsSettings;
     private final UnaryCallSettings.Builder
         setNamedPortsRegionInstanceGroupSettings;
+    private final OperationCallSettings.Builder<
+            SetNamedPortsRegionInstanceGroupHttpRequest, EmptyMessage, Operation>
+        setNamedPortsRegionInstanceGroupOperationSettings;
 
     private static final ImmutableMap>
         RETRYABLE_CODE_DEFINITIONS;
@@ -449,6 +469,8 @@ protected Builder(ClientContext clientContext) {
 
       setNamedPortsRegionInstanceGroupSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setNamedPortsRegionInstanceGroupOperationSettings = OperationCallSettings.newBuilder();
+
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
               getRegionInstanceGroupSettings,
@@ -489,6 +511,28 @@ private static Builder initDefaults(Builder builder) {
           .setNamedPortsRegionInstanceGroupSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .setNamedPortsRegionInstanceGroupOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -502,6 +546,8 @@ protected Builder(RegionInstanceGroupStubSettings settings) {
           settings.listInstancesRegionInstanceGroupsSettings.toBuilder();
       setNamedPortsRegionInstanceGroupSettings =
           settings.setNamedPortsRegionInstanceGroupSettings.toBuilder();
+      setNamedPortsRegionInstanceGroupOperationSettings =
+          settings.setNamedPortsRegionInstanceGroupOperationSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
@@ -557,6 +603,15 @@ public Builder applyToAllUnaryMethods(
       return setNamedPortsRegionInstanceGroupSettings;
     }
 
+    /** Returns the builder for the settings used for calls to setNamedPortsRegionInstanceGroup. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetNamedPortsRegionInstanceGroupHttpRequest, EmptyMessage, Operation>
+        setNamedPortsRegionInstanceGroupOperationSettings() {
+      return setNamedPortsRegionInstanceGroupOperationSettings;
+    }
+
     @Override
     public RegionInstanceGroupStubSettings build() throws IOException {
       return new RegionInstanceGroupStubSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionOperationStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionOperationStub.java
index 825ab26e68e7..937e46ff1c11 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionOperationStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionOperationStub.java
@@ -19,6 +19,7 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.DeleteRegionOperationHttpRequest;
 import com.google.cloud.compute.v1.GetRegionOperationHttpRequest;
@@ -38,7 +39,8 @@
 public abstract class RegionOperationStub implements BackgroundResource {
 
   @BetaApi
-  public UnaryCallable deleteRegionOperationCallable() {
+  public UnaryCallable
+      deleteRegionOperationCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteRegionOperationCallable()");
   }
 
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionOperationStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionOperationStubSettings.java
index f1c24a5e7ebf..e4fbc26e0685 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionOperationStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RegionOperationStubSettings.java
@@ -23,6 +23,7 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
@@ -94,7 +95,7 @@ public class RegionOperationStubSettings extends StubSettings
+  private final UnaryCallSettings
       deleteRegionOperationSettings;
   private final UnaryCallSettings
       getRegionOperationSettings;
@@ -103,7 +104,8 @@ public class RegionOperationStubSettings extends StubSettings deleteRegionOperationSettings() {
+  public UnaryCallSettings
+      deleteRegionOperationSettings() {
     return deleteRegionOperationSettings;
   }
 
@@ -264,7 +266,7 @@ public ApiFuture getFuturePagedResponse(
   public static class Builder extends StubSettings.Builder {
     private final ImmutableList> unaryMethodSettingsBuilders;
 
-    private final UnaryCallSettings.Builder
+    private final UnaryCallSettings.Builder
         deleteRegionOperationSettings;
     private final UnaryCallSettings.Builder
         getRegionOperationSettings;
@@ -389,7 +391,7 @@ public Builder applyToAllUnaryMethods(
     }
 
     /** Returns the builder for the settings used for calls to deleteRegionOperation. */
-    public UnaryCallSettings.Builder
+    public UnaryCallSettings.Builder
         deleteRegionOperationSettings() {
       return deleteRegionOperationSettings;
     }
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RouteStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RouteStub.java
index 956aae024656..2cd3ab2b9f21 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RouteStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RouteStub.java
@@ -19,6 +19,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.DeleteRouteHttpRequest;
 import com.google.cloud.compute.v1.GetRouteHttpRequest;
@@ -39,6 +41,17 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class RouteStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public GlobalOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteRouteOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: deleteRouteOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteRouteCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteRouteCallable()");
@@ -49,6 +62,12 @@ public UnaryCallable getRouteCallable() {
     throw new UnsupportedOperationException("Not implemented: getRouteCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertRouteOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: insertRouteOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertRouteCallable() {
     throw new UnsupportedOperationException("Not implemented: insertRouteCallable()");
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RouteStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RouteStubSettings.java
index f37eaeee99a4..cf9990924566 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RouteStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RouteStubSettings.java
@@ -23,13 +23,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -70,13 +75,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteRoute to 30 seconds: + * example, to set the total timeout of getRoute to 30 seconds: * *

  * 
  * RouteStubSettings.Builder routeSettingsBuilder =
  *     RouteStubSettings.newBuilder();
- * routeSettingsBuilder.deleteRouteSettings().getRetrySettings().toBuilder()
+ * routeSettingsBuilder.getRouteSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * RouteStubSettings routeSettings = routeSettingsBuilder.build();
  * 
@@ -97,8 +102,12 @@ public class RouteStubSettings extends StubSettings {
           .build();
 
   private final UnaryCallSettings deleteRouteSettings;
+  private final OperationCallSettings
+      deleteRouteOperationSettings;
   private final UnaryCallSettings getRouteSettings;
   private final UnaryCallSettings insertRouteSettings;
+  private final OperationCallSettings
+      insertRouteOperationSettings;
   private final PagedCallSettings
       listRoutesSettings;
 
@@ -107,6 +116,13 @@ public UnaryCallSettings deleteRouteSettings(
     return deleteRouteSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteRoute. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteRouteOperationSettings() {
+    return deleteRouteOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getRoute. */
   public UnaryCallSettings getRouteSettings() {
     return getRouteSettings;
@@ -117,6 +133,13 @@ public UnaryCallSettings insertRouteSettings(
     return insertRouteSettings;
   }
 
+  /** Returns the object with the settings used for calls to insertRoute. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertRouteOperationSettings() {
+    return insertRouteOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listRoutes. */
   public PagedCallSettings
       listRoutesSettings() {
@@ -198,8 +221,10 @@ protected RouteStubSettings(Builder settingsBuilder) throws IOException {
     super(settingsBuilder);
 
     deleteRouteSettings = settingsBuilder.deleteRouteSettings().build();
+    deleteRouteOperationSettings = settingsBuilder.deleteRouteOperationSettings().build();
     getRouteSettings = settingsBuilder.getRouteSettings().build();
     insertRouteSettings = settingsBuilder.insertRouteSettings().build();
+    insertRouteOperationSettings = settingsBuilder.insertRouteOperationSettings().build();
     listRoutesSettings = settingsBuilder.listRoutesSettings().build();
   }
 
@@ -262,8 +287,12 @@ public static class Builder extends StubSettings.Builder> unaryMethodSettingsBuilders;
 
     private final UnaryCallSettings.Builder deleteRouteSettings;
+    private final OperationCallSettings.Builder
+        deleteRouteOperationSettings;
     private final UnaryCallSettings.Builder getRouteSettings;
     private final UnaryCallSettings.Builder insertRouteSettings;
+    private final OperationCallSettings.Builder
+        insertRouteOperationSettings;
     private final PagedCallSettings.Builder<
             ListRoutesHttpRequest, RouteList, ListRoutesPagedResponse>
         listRoutesSettings;
@@ -311,10 +340,14 @@ protected Builder(ClientContext clientContext) {
 
       deleteRouteSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteRouteOperationSettings = OperationCallSettings.newBuilder();
+
       getRouteSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertRouteSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertRouteOperationSettings = OperationCallSettings.newBuilder();
+
       listRoutesSettings = PagedCallSettings.newBuilder(LIST_ROUTES_PAGE_STR_FACT);
 
       unaryMethodSettingsBuilders =
@@ -354,6 +387,48 @@ private static Builder initDefaults(Builder builder) {
           .listRoutesSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteRouteOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertRouteOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -362,8 +437,10 @@ protected Builder(RouteStubSettings settings) {
       super(settings);
 
       deleteRouteSettings = settings.deleteRouteSettings.toBuilder();
+      deleteRouteOperationSettings = settings.deleteRouteOperationSettings.toBuilder();
       getRouteSettings = settings.getRouteSettings.toBuilder();
       insertRouteSettings = settings.insertRouteSettings.toBuilder();
+      insertRouteOperationSettings = settings.insertRouteOperationSettings.toBuilder();
       listRoutesSettings = settings.listRoutesSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
@@ -392,6 +469,14 @@ public UnaryCallSettings.Builder deleteRouteS
       return deleteRouteSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteRoute. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteRouteOperationSettings() {
+      return deleteRouteOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getRoute. */
     public UnaryCallSettings.Builder getRouteSettings() {
       return getRouteSettings;
@@ -402,6 +487,14 @@ public UnaryCallSettings.Builder insertRouteS
       return insertRouteSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertRoute. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertRouteOperationSettings() {
+      return insertRouteOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listRoutes. */
     public PagedCallSettings.Builder
         listRoutesSettings() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RouterStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RouterStub.java
index 0bbfb0d71dce..390fa98514d3 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RouterStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RouterStub.java
@@ -21,6 +21,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.AggregatedListRoutersHttpRequest;
 import com.google.cloud.compute.v1.DeleteRouterHttpRequest;
@@ -51,6 +53,11 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class RouterStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public RegionOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
   @BetaApi
   public UnaryCallable
       aggregatedListRoutersPagedCallable() {
@@ -64,6 +71,12 @@ public abstract class RouterStub implements BackgroundResource {
     throw new UnsupportedOperationException("Not implemented: aggregatedListRoutersCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteRouterOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: deleteRouterOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteRouterCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteRouterCallable()");
@@ -93,6 +106,12 @@ public UnaryCallable getRouterCallable() {
     throw new UnsupportedOperationException("Not implemented: getRouterStatusRouterCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertRouterOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: insertRouterOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertRouterCallable() {
     throw new UnsupportedOperationException("Not implemented: insertRouterCallable()");
@@ -109,6 +128,12 @@ public UnaryCallable listRoutersCallable() {
     throw new UnsupportedOperationException("Not implemented: listRoutersCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchRouterOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: patchRouterOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable patchRouterCallable() {
     throw new UnsupportedOperationException("Not implemented: patchRouterCallable()");
@@ -119,6 +144,12 @@ public UnaryCallable previewRo
     throw new UnsupportedOperationException("Not implemented: previewRouterCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      updateRouterOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: updateRouterOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable updateRouterCallable() {
     throw new UnsupportedOperationException("Not implemented: updateRouterCallable()");
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RouterStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RouterStubSettings.java
index 02b70357c5f9..c9cd4aa00e06 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RouterStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/RouterStubSettings.java
@@ -25,13 +25,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -84,13 +89,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteRouter to 30 seconds: + * example, to set the total timeout of getRouter to 30 seconds: * *

  * 
  * RouterStubSettings.Builder routerSettingsBuilder =
  *     RouterStubSettings.newBuilder();
- * routerSettingsBuilder.deleteRouterSettings().getRetrySettings().toBuilder()
+ * routerSettingsBuilder.getRouterSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * RouterStubSettings routerSettings = routerSettingsBuilder.build();
  * 
@@ -116,6 +121,8 @@ public class RouterStubSettings extends StubSettings {
           AggregatedListRoutersPagedResponse>
       aggregatedListRoutersSettings;
   private final UnaryCallSettings deleteRouterSettings;
+  private final OperationCallSettings
+      deleteRouterOperationSettings;
   private final UnaryCallSettings getRouterSettings;
   private final PagedCallSettings<
           GetNatMappingInfoRoutersHttpRequest,
@@ -125,12 +132,18 @@ public class RouterStubSettings extends StubSettings {
   private final UnaryCallSettings
       getRouterStatusRouterSettings;
   private final UnaryCallSettings insertRouterSettings;
+  private final OperationCallSettings
+      insertRouterOperationSettings;
   private final PagedCallSettings
       listRoutersSettings;
   private final UnaryCallSettings patchRouterSettings;
+  private final OperationCallSettings
+      patchRouterOperationSettings;
   private final UnaryCallSettings
       previewRouterSettings;
   private final UnaryCallSettings updateRouterSettings;
+  private final OperationCallSettings
+      updateRouterOperationSettings;
 
   /** Returns the object with the settings used for calls to aggregatedListRouters. */
   public PagedCallSettings<
@@ -146,6 +159,13 @@ public UnaryCallSettings deleteRouterSetting
     return deleteRouterSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteRouter. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteRouterOperationSettings() {
+    return deleteRouterOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getRouter. */
   public UnaryCallSettings getRouterSettings() {
     return getRouterSettings;
@@ -171,6 +191,13 @@ public UnaryCallSettings insertRouterSetting
     return insertRouterSettings;
   }
 
+  /** Returns the object with the settings used for calls to insertRouter. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertRouterOperationSettings() {
+    return insertRouterOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listRouters. */
   public PagedCallSettings
       listRoutersSettings() {
@@ -182,6 +209,13 @@ public UnaryCallSettings patchRouterSettings(
     return patchRouterSettings;
   }
 
+  /** Returns the object with the settings used for calls to patchRouter. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      patchRouterOperationSettings() {
+    return patchRouterOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to previewRouter. */
   public UnaryCallSettings
       previewRouterSettings() {
@@ -193,6 +227,13 @@ public UnaryCallSettings updateRouterSetting
     return updateRouterSettings;
   }
 
+  /** Returns the object with the settings used for calls to updateRouter. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      updateRouterOperationSettings() {
+    return updateRouterOperationSettings;
+  }
+
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   public RouterStub createStub() throws IOException {
     if (getTransportChannelProvider()
@@ -269,14 +310,18 @@ protected RouterStubSettings(Builder settingsBuilder) throws IOException {
 
     aggregatedListRoutersSettings = settingsBuilder.aggregatedListRoutersSettings().build();
     deleteRouterSettings = settingsBuilder.deleteRouterSettings().build();
+    deleteRouterOperationSettings = settingsBuilder.deleteRouterOperationSettings().build();
     getRouterSettings = settingsBuilder.getRouterSettings().build();
     getNatMappingInfoRoutersSettings = settingsBuilder.getNatMappingInfoRoutersSettings().build();
     getRouterStatusRouterSettings = settingsBuilder.getRouterStatusRouterSettings().build();
     insertRouterSettings = settingsBuilder.insertRouterSettings().build();
+    insertRouterOperationSettings = settingsBuilder.insertRouterOperationSettings().build();
     listRoutersSettings = settingsBuilder.listRoutersSettings().build();
     patchRouterSettings = settingsBuilder.patchRouterSettings().build();
+    patchRouterOperationSettings = settingsBuilder.patchRouterOperationSettings().build();
     previewRouterSettings = settingsBuilder.previewRouterSettings().build();
     updateRouterSettings = settingsBuilder.updateRouterSettings().build();
+    updateRouterOperationSettings = settingsBuilder.updateRouterOperationSettings().build();
   }
 
   private static final PagedListDescriptor<
@@ -486,6 +531,8 @@ public static class Builder extends StubSettings.Builder
         deleteRouterSettings;
+    private final OperationCallSettings.Builder
+        deleteRouterOperationSettings;
     private final UnaryCallSettings.Builder getRouterSettings;
     private final PagedCallSettings.Builder<
             GetNatMappingInfoRoutersHttpRequest,
@@ -496,14 +543,20 @@ public static class Builder extends StubSettings.Builder
         insertRouterSettings;
+    private final OperationCallSettings.Builder
+        insertRouterOperationSettings;
     private final PagedCallSettings.Builder<
             ListRoutersHttpRequest, RouterList, ListRoutersPagedResponse>
         listRoutersSettings;
     private final UnaryCallSettings.Builder patchRouterSettings;
+    private final OperationCallSettings.Builder
+        patchRouterOperationSettings;
     private final UnaryCallSettings.Builder
         previewRouterSettings;
     private final UnaryCallSettings.Builder
         updateRouterSettings;
+    private final OperationCallSettings.Builder
+        updateRouterOperationSettings;
 
     private static final ImmutableMap>
         RETRYABLE_CODE_DEFINITIONS;
@@ -551,6 +604,8 @@ protected Builder(ClientContext clientContext) {
 
       deleteRouterSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteRouterOperationSettings = OperationCallSettings.newBuilder();
+
       getRouterSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       getNatMappingInfoRoutersSettings =
@@ -560,14 +615,20 @@ protected Builder(ClientContext clientContext) {
 
       insertRouterSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertRouterOperationSettings = OperationCallSettings.newBuilder();
+
       listRoutersSettings = PagedCallSettings.newBuilder(LIST_ROUTERS_PAGE_STR_FACT);
 
       patchRouterSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      patchRouterOperationSettings = OperationCallSettings.newBuilder();
+
       previewRouterSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       updateRouterSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      updateRouterOperationSettings = OperationCallSettings.newBuilder();
+
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
               aggregatedListRoutersSettings,
@@ -644,6 +705,90 @@ private static Builder initDefaults(Builder builder) {
           .updateRouterSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteRouterOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertRouterOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .patchRouterOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .updateRouterOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -653,14 +798,18 @@ protected Builder(RouterStubSettings settings) {
 
       aggregatedListRoutersSettings = settings.aggregatedListRoutersSettings.toBuilder();
       deleteRouterSettings = settings.deleteRouterSettings.toBuilder();
+      deleteRouterOperationSettings = settings.deleteRouterOperationSettings.toBuilder();
       getRouterSettings = settings.getRouterSettings.toBuilder();
       getNatMappingInfoRoutersSettings = settings.getNatMappingInfoRoutersSettings.toBuilder();
       getRouterStatusRouterSettings = settings.getRouterStatusRouterSettings.toBuilder();
       insertRouterSettings = settings.insertRouterSettings.toBuilder();
+      insertRouterOperationSettings = settings.insertRouterOperationSettings.toBuilder();
       listRoutersSettings = settings.listRoutersSettings.toBuilder();
       patchRouterSettings = settings.patchRouterSettings.toBuilder();
+      patchRouterOperationSettings = settings.patchRouterOperationSettings.toBuilder();
       previewRouterSettings = settings.previewRouterSettings.toBuilder();
       updateRouterSettings = settings.updateRouterSettings.toBuilder();
+      updateRouterOperationSettings = settings.updateRouterOperationSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
@@ -706,6 +855,14 @@ public UnaryCallSettings.Builder deleteRoute
       return deleteRouterSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteRouter. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteRouterOperationSettings() {
+      return deleteRouterOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getRouter. */
     public UnaryCallSettings.Builder getRouterSettings() {
       return getRouterSettings;
@@ -731,6 +888,14 @@ public UnaryCallSettings.Builder insertRoute
       return insertRouterSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertRouter. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertRouterOperationSettings() {
+      return insertRouterOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listRouters. */
     public PagedCallSettings.Builder
         listRoutersSettings() {
@@ -742,6 +907,14 @@ public UnaryCallSettings.Builder patchRouterS
       return patchRouterSettings;
     }
 
+    /** Returns the builder for the settings used for calls to patchRouter. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchRouterOperationSettings() {
+      return patchRouterOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to previewRouter. */
     public UnaryCallSettings.Builder
         previewRouterSettings() {
@@ -753,6 +926,14 @@ public UnaryCallSettings.Builder updateRoute
       return updateRouterSettings;
     }
 
+    /** Returns the builder for the settings used for calls to updateRouter. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        updateRouterOperationSettings() {
+      return updateRouterOperationSettings;
+    }
+
     @Override
     public RouterStubSettings build() throws IOException {
       return new RouterStubSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SecurityPolicyStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SecurityPolicyStub.java
index 807fd5060952..839957c63319 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SecurityPolicyStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SecurityPolicyStub.java
@@ -19,6 +19,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.AddRuleSecurityPolicyHttpRequest;
 import com.google.cloud.compute.v1.DeleteSecurityPolicyHttpRequest;
@@ -45,12 +47,31 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class SecurityPolicyStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public GlobalOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      addRuleSecurityPolicyOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: addRuleSecurityPolicyOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       addRuleSecurityPolicyCallable() {
     throw new UnsupportedOperationException("Not implemented: addRuleSecurityPolicyCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteSecurityPolicyOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteSecurityPolicyOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteSecurityPolicyCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteSecurityPolicyCallable()");
@@ -67,6 +88,13 @@ public UnaryCallable getSecurityPo
     throw new UnsupportedOperationException("Not implemented: getRuleSecurityPolicyCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertSecurityPolicyOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: insertSecurityPolicyOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertSecurityPolicyCallable() {
     throw new UnsupportedOperationException("Not implemented: insertSecurityPolicyCallable()");
@@ -84,17 +112,38 @@ public UnaryCallable insertSecurityP
     throw new UnsupportedOperationException("Not implemented: listSecurityPoliciesCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchSecurityPolicyOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: patchSecurityPolicyOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable patchSecurityPolicyCallable() {
     throw new UnsupportedOperationException("Not implemented: patchSecurityPolicyCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchRuleSecurityPolicyOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: patchRuleSecurityPolicyOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       patchRuleSecurityPolicyCallable() {
     throw new UnsupportedOperationException("Not implemented: patchRuleSecurityPolicyCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      removeRuleSecurityPolicyOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: removeRuleSecurityPolicyOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       removeRuleSecurityPolicyCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SecurityPolicyStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SecurityPolicyStubSettings.java
index 49db0551ec34..d9fea108023a 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SecurityPolicyStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SecurityPolicyStubSettings.java
@@ -23,13 +23,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -76,13 +81,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of addRuleSecurityPolicy to 30 seconds: + * example, to set the total timeout of getSecurityPolicy to 30 seconds: * *

  * 
  * SecurityPolicyStubSettings.Builder securityPolicySettingsBuilder =
  *     SecurityPolicyStubSettings.newBuilder();
- * securityPolicySettingsBuilder.addRuleSecurityPolicySettings().getRetrySettings().toBuilder()
+ * securityPolicySettingsBuilder.getSecurityPolicySettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * SecurityPolicyStubSettings securityPolicySettings = securityPolicySettingsBuilder.build();
  * 
@@ -104,23 +109,35 @@ public class SecurityPolicyStubSettings extends StubSettings
       addRuleSecurityPolicySettings;
+  private final OperationCallSettings
+      addRuleSecurityPolicyOperationSettings;
   private final UnaryCallSettings
       deleteSecurityPolicySettings;
+  private final OperationCallSettings
+      deleteSecurityPolicyOperationSettings;
   private final UnaryCallSettings
       getSecurityPolicySettings;
   private final UnaryCallSettings
       getRuleSecurityPolicySettings;
   private final UnaryCallSettings
       insertSecurityPolicySettings;
+  private final OperationCallSettings
+      insertSecurityPolicyOperationSettings;
   private final PagedCallSettings<
           ListSecurityPoliciesHttpRequest, SecurityPolicyList, ListSecurityPoliciesPagedResponse>
       listSecurityPoliciesSettings;
   private final UnaryCallSettings
       patchSecurityPolicySettings;
+  private final OperationCallSettings
+      patchSecurityPolicyOperationSettings;
   private final UnaryCallSettings
       patchRuleSecurityPolicySettings;
+  private final OperationCallSettings
+      patchRuleSecurityPolicyOperationSettings;
   private final UnaryCallSettings
       removeRuleSecurityPolicySettings;
+  private final OperationCallSettings
+      removeRuleSecurityPolicyOperationSettings;
 
   /** Returns the object with the settings used for calls to addRuleSecurityPolicy. */
   public UnaryCallSettings
@@ -128,12 +145,26 @@ public class SecurityPolicyStubSettings extends StubSettings
+      addRuleSecurityPolicyOperationSettings() {
+    return addRuleSecurityPolicyOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to deleteSecurityPolicy. */
   public UnaryCallSettings
       deleteSecurityPolicySettings() {
     return deleteSecurityPolicySettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteSecurityPolicy. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteSecurityPolicyOperationSettings() {
+    return deleteSecurityPolicyOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getSecurityPolicy. */
   public UnaryCallSettings
       getSecurityPolicySettings() {
@@ -152,6 +183,13 @@ public class SecurityPolicyStubSettings extends StubSettings
+      insertSecurityPolicyOperationSettings() {
+    return insertSecurityPolicyOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listSecurityPolicies. */
   public PagedCallSettings<
           ListSecurityPoliciesHttpRequest, SecurityPolicyList, ListSecurityPoliciesPagedResponse>
@@ -165,18 +203,39 @@ public class SecurityPolicyStubSettings extends StubSettings
+      patchSecurityPolicyOperationSettings() {
+    return patchSecurityPolicyOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to patchRuleSecurityPolicy. */
   public UnaryCallSettings
       patchRuleSecurityPolicySettings() {
     return patchRuleSecurityPolicySettings;
   }
 
+  /** Returns the object with the settings used for calls to patchRuleSecurityPolicy. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      patchRuleSecurityPolicyOperationSettings() {
+    return patchRuleSecurityPolicyOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to removeRuleSecurityPolicy. */
   public UnaryCallSettings
       removeRuleSecurityPolicySettings() {
     return removeRuleSecurityPolicySettings;
   }
 
+  /** Returns the object with the settings used for calls to removeRuleSecurityPolicy. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      removeRuleSecurityPolicyOperationSettings() {
+    return removeRuleSecurityPolicyOperationSettings;
+  }
+
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   public SecurityPolicyStub createStub() throws IOException {
     if (getTransportChannelProvider()
@@ -253,14 +312,26 @@ protected SecurityPolicyStubSettings(Builder settingsBuilder) throws IOException
     super(settingsBuilder);
 
     addRuleSecurityPolicySettings = settingsBuilder.addRuleSecurityPolicySettings().build();
+    addRuleSecurityPolicyOperationSettings =
+        settingsBuilder.addRuleSecurityPolicyOperationSettings().build();
     deleteSecurityPolicySettings = settingsBuilder.deleteSecurityPolicySettings().build();
+    deleteSecurityPolicyOperationSettings =
+        settingsBuilder.deleteSecurityPolicyOperationSettings().build();
     getSecurityPolicySettings = settingsBuilder.getSecurityPolicySettings().build();
     getRuleSecurityPolicySettings = settingsBuilder.getRuleSecurityPolicySettings().build();
     insertSecurityPolicySettings = settingsBuilder.insertSecurityPolicySettings().build();
+    insertSecurityPolicyOperationSettings =
+        settingsBuilder.insertSecurityPolicyOperationSettings().build();
     listSecurityPoliciesSettings = settingsBuilder.listSecurityPoliciesSettings().build();
     patchSecurityPolicySettings = settingsBuilder.patchSecurityPolicySettings().build();
+    patchSecurityPolicyOperationSettings =
+        settingsBuilder.patchSecurityPolicyOperationSettings().build();
     patchRuleSecurityPolicySettings = settingsBuilder.patchRuleSecurityPolicySettings().build();
+    patchRuleSecurityPolicyOperationSettings =
+        settingsBuilder.patchRuleSecurityPolicyOperationSettings().build();
     removeRuleSecurityPolicySettings = settingsBuilder.removeRuleSecurityPolicySettings().build();
+    removeRuleSecurityPolicyOperationSettings =
+        settingsBuilder.removeRuleSecurityPolicyOperationSettings().build();
   }
 
   private static final PagedListDescriptor<
@@ -334,23 +405,41 @@ public static class Builder extends StubSettings.Builder
         addRuleSecurityPolicySettings;
+    private final OperationCallSettings.Builder<
+            AddRuleSecurityPolicyHttpRequest, EmptyMessage, Operation>
+        addRuleSecurityPolicyOperationSettings;
     private final UnaryCallSettings.Builder
         deleteSecurityPolicySettings;
+    private final OperationCallSettings.Builder<
+            DeleteSecurityPolicyHttpRequest, EmptyMessage, Operation>
+        deleteSecurityPolicyOperationSettings;
     private final UnaryCallSettings.Builder
         getSecurityPolicySettings;
     private final UnaryCallSettings.Builder
         getRuleSecurityPolicySettings;
     private final UnaryCallSettings.Builder
         insertSecurityPolicySettings;
+    private final OperationCallSettings.Builder<
+            InsertSecurityPolicyHttpRequest, EmptyMessage, Operation>
+        insertSecurityPolicyOperationSettings;
     private final PagedCallSettings.Builder<
             ListSecurityPoliciesHttpRequest, SecurityPolicyList, ListSecurityPoliciesPagedResponse>
         listSecurityPoliciesSettings;
     private final UnaryCallSettings.Builder
         patchSecurityPolicySettings;
+    private final OperationCallSettings.Builder<
+            PatchSecurityPolicyHttpRequest, EmptyMessage, Operation>
+        patchSecurityPolicyOperationSettings;
     private final UnaryCallSettings.Builder
         patchRuleSecurityPolicySettings;
+    private final OperationCallSettings.Builder<
+            PatchRuleSecurityPolicyHttpRequest, EmptyMessage, Operation>
+        patchRuleSecurityPolicyOperationSettings;
     private final UnaryCallSettings.Builder
         removeRuleSecurityPolicySettings;
+    private final OperationCallSettings.Builder<
+            RemoveRuleSecurityPolicyHttpRequest, EmptyMessage, Operation>
+        removeRuleSecurityPolicyOperationSettings;
 
     private static final ImmutableMap>
         RETRYABLE_CODE_DEFINITIONS;
@@ -395,23 +484,35 @@ protected Builder(ClientContext clientContext) {
 
       addRuleSecurityPolicySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      addRuleSecurityPolicyOperationSettings = OperationCallSettings.newBuilder();
+
       deleteSecurityPolicySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteSecurityPolicyOperationSettings = OperationCallSettings.newBuilder();
+
       getSecurityPolicySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       getRuleSecurityPolicySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertSecurityPolicySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertSecurityPolicyOperationSettings = OperationCallSettings.newBuilder();
+
       listSecurityPoliciesSettings =
           PagedCallSettings.newBuilder(LIST_SECURITY_POLICIES_PAGE_STR_FACT);
 
       patchSecurityPolicySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      patchSecurityPolicyOperationSettings = OperationCallSettings.newBuilder();
+
       patchRuleSecurityPolicySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      patchRuleSecurityPolicyOperationSettings = OperationCallSettings.newBuilder();
+
       removeRuleSecurityPolicySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      removeRuleSecurityPolicyOperationSettings = OperationCallSettings.newBuilder();
+
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
               addRuleSecurityPolicySettings,
@@ -482,6 +583,135 @@ private static Builder initDefaults(Builder builder) {
           .removeRuleSecurityPolicySettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .addRuleSecurityPolicyOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .deleteSecurityPolicyOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertSecurityPolicyOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .patchSecurityPolicyOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .patchRuleSecurityPolicyOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .removeRuleSecurityPolicyOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -490,14 +720,26 @@ protected Builder(SecurityPolicyStubSettings settings) {
       super(settings);
 
       addRuleSecurityPolicySettings = settings.addRuleSecurityPolicySettings.toBuilder();
+      addRuleSecurityPolicyOperationSettings =
+          settings.addRuleSecurityPolicyOperationSettings.toBuilder();
       deleteSecurityPolicySettings = settings.deleteSecurityPolicySettings.toBuilder();
+      deleteSecurityPolicyOperationSettings =
+          settings.deleteSecurityPolicyOperationSettings.toBuilder();
       getSecurityPolicySettings = settings.getSecurityPolicySettings.toBuilder();
       getRuleSecurityPolicySettings = settings.getRuleSecurityPolicySettings.toBuilder();
       insertSecurityPolicySettings = settings.insertSecurityPolicySettings.toBuilder();
+      insertSecurityPolicyOperationSettings =
+          settings.insertSecurityPolicyOperationSettings.toBuilder();
       listSecurityPoliciesSettings = settings.listSecurityPoliciesSettings.toBuilder();
       patchSecurityPolicySettings = settings.patchSecurityPolicySettings.toBuilder();
+      patchSecurityPolicyOperationSettings =
+          settings.patchSecurityPolicyOperationSettings.toBuilder();
       patchRuleSecurityPolicySettings = settings.patchRuleSecurityPolicySettings.toBuilder();
+      patchRuleSecurityPolicyOperationSettings =
+          settings.patchRuleSecurityPolicyOperationSettings.toBuilder();
       removeRuleSecurityPolicySettings = settings.removeRuleSecurityPolicySettings.toBuilder();
+      removeRuleSecurityPolicyOperationSettings =
+          settings.removeRuleSecurityPolicyOperationSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
@@ -534,12 +776,28 @@ public Builder applyToAllUnaryMethods(
       return addRuleSecurityPolicySettings;
     }
 
+    /** Returns the builder for the settings used for calls to addRuleSecurityPolicy. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        addRuleSecurityPolicyOperationSettings() {
+      return addRuleSecurityPolicyOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to deleteSecurityPolicy. */
     public UnaryCallSettings.Builder
         deleteSecurityPolicySettings() {
       return deleteSecurityPolicySettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteSecurityPolicy. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteSecurityPolicyOperationSettings() {
+      return deleteSecurityPolicyOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getSecurityPolicy. */
     public UnaryCallSettings.Builder
         getSecurityPolicySettings() {
@@ -558,6 +816,14 @@ public Builder applyToAllUnaryMethods(
       return insertSecurityPolicySettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertSecurityPolicy. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertSecurityPolicyOperationSettings() {
+      return insertSecurityPolicyOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listSecurityPolicies. */
     public PagedCallSettings.Builder<
             ListSecurityPoliciesHttpRequest, SecurityPolicyList, ListSecurityPoliciesPagedResponse>
@@ -571,18 +837,44 @@ public Builder applyToAllUnaryMethods(
       return patchSecurityPolicySettings;
     }
 
+    /** Returns the builder for the settings used for calls to patchSecurityPolicy. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchSecurityPolicyOperationSettings() {
+      return patchSecurityPolicyOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to patchRuleSecurityPolicy. */
     public UnaryCallSettings.Builder
         patchRuleSecurityPolicySettings() {
       return patchRuleSecurityPolicySettings;
     }
 
+    /** Returns the builder for the settings used for calls to patchRuleSecurityPolicy. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            PatchRuleSecurityPolicyHttpRequest, EmptyMessage, Operation>
+        patchRuleSecurityPolicyOperationSettings() {
+      return patchRuleSecurityPolicyOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to removeRuleSecurityPolicy. */
     public UnaryCallSettings.Builder
         removeRuleSecurityPolicySettings() {
       return removeRuleSecurityPolicySettings;
     }
 
+    /** Returns the builder for the settings used for calls to removeRuleSecurityPolicy. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            RemoveRuleSecurityPolicyHttpRequest, EmptyMessage, Operation>
+        removeRuleSecurityPolicyOperationSettings() {
+      return removeRuleSecurityPolicyOperationSettings;
+    }
+
     @Override
     public SecurityPolicyStubSettings build() throws IOException {
       return new SecurityPolicyStubSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SnapshotStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SnapshotStub.java
index 824164e3a28e..a124c2e3e752 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SnapshotStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SnapshotStub.java
@@ -19,6 +19,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.DeleteSnapshotHttpRequest;
 import com.google.cloud.compute.v1.GetIamPolicySnapshotHttpRequest;
@@ -44,6 +46,17 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class SnapshotStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public GlobalOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteSnapshotOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: deleteSnapshotOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteSnapshotCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteSnapshotCallable()");
@@ -75,6 +88,13 @@ public UnaryCallable setIamPolicySnapsh
     throw new UnsupportedOperationException("Not implemented: setIamPolicySnapshotCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setLabelsSnapshotOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setLabelsSnapshotOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable setLabelsSnapshotCallable() {
     throw new UnsupportedOperationException("Not implemented: setLabelsSnapshotCallable()");
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SnapshotStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SnapshotStubSettings.java
index 7ad014ccf692..8ae6ccca58c4 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SnapshotStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SnapshotStubSettings.java
@@ -23,13 +23,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -75,13 +80,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteSnapshot to 30 seconds: + * example, to set the total timeout of getSnapshot to 30 seconds: * *

  * 
  * SnapshotStubSettings.Builder snapshotSettingsBuilder =
  *     SnapshotStubSettings.newBuilder();
- * snapshotSettingsBuilder.deleteSnapshotSettings().getRetrySettings().toBuilder()
+ * snapshotSettingsBuilder.getSnapshotSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * SnapshotStubSettings snapshotSettings = snapshotSettingsBuilder.build();
  * 
@@ -102,6 +107,8 @@ public class SnapshotStubSettings extends StubSettings {
           .build();
 
   private final UnaryCallSettings deleteSnapshotSettings;
+  private final OperationCallSettings
+      deleteSnapshotOperationSettings;
   private final UnaryCallSettings getSnapshotSettings;
   private final UnaryCallSettings
       getIamPolicySnapshotSettings;
@@ -112,6 +119,8 @@ public class SnapshotStubSettings extends StubSettings {
       setIamPolicySnapshotSettings;
   private final UnaryCallSettings
       setLabelsSnapshotSettings;
+  private final OperationCallSettings
+      setLabelsSnapshotOperationSettings;
   private final UnaryCallSettings
       testIamPermissionsSnapshotSettings;
 
@@ -120,6 +129,13 @@ public UnaryCallSettings deleteSnapshotSet
     return deleteSnapshotSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteSnapshot. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteSnapshotOperationSettings() {
+    return deleteSnapshotOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getSnapshot. */
   public UnaryCallSettings getSnapshotSettings() {
     return getSnapshotSettings;
@@ -146,6 +162,13 @@ public UnaryCallSettings setLabelsSnaps
     return setLabelsSnapshotSettings;
   }
 
+  /** Returns the object with the settings used for calls to setLabelsSnapshot. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setLabelsSnapshotOperationSettings() {
+    return setLabelsSnapshotOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to testIamPermissionsSnapshot. */
   public UnaryCallSettings
       testIamPermissionsSnapshotSettings() {
@@ -227,11 +250,14 @@ protected SnapshotStubSettings(Builder settingsBuilder) throws IOException {
     super(settingsBuilder);
 
     deleteSnapshotSettings = settingsBuilder.deleteSnapshotSettings().build();
+    deleteSnapshotOperationSettings = settingsBuilder.deleteSnapshotOperationSettings().build();
     getSnapshotSettings = settingsBuilder.getSnapshotSettings().build();
     getIamPolicySnapshotSettings = settingsBuilder.getIamPolicySnapshotSettings().build();
     listSnapshotsSettings = settingsBuilder.listSnapshotsSettings().build();
     setIamPolicySnapshotSettings = settingsBuilder.setIamPolicySnapshotSettings().build();
     setLabelsSnapshotSettings = settingsBuilder.setLabelsSnapshotSettings().build();
+    setLabelsSnapshotOperationSettings =
+        settingsBuilder.setLabelsSnapshotOperationSettings().build();
     testIamPermissionsSnapshotSettings =
         settingsBuilder.testIamPermissionsSnapshotSettings().build();
   }
@@ -297,6 +323,8 @@ public static class Builder extends StubSettings.Builder
         deleteSnapshotSettings;
+    private final OperationCallSettings.Builder
+        deleteSnapshotOperationSettings;
     private final UnaryCallSettings.Builder getSnapshotSettings;
     private final UnaryCallSettings.Builder
         getIamPolicySnapshotSettings;
@@ -307,6 +335,9 @@ public static class Builder extends StubSettings.Builder
         setLabelsSnapshotSettings;
+    private final OperationCallSettings.Builder<
+            SetLabelsSnapshotHttpRequest, EmptyMessage, Operation>
+        setLabelsSnapshotOperationSettings;
     private final UnaryCallSettings.Builder<
             TestIamPermissionsSnapshotHttpRequest, TestPermissionsResponse>
         testIamPermissionsSnapshotSettings;
@@ -354,6 +385,8 @@ protected Builder(ClientContext clientContext) {
 
       deleteSnapshotSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteSnapshotOperationSettings = OperationCallSettings.newBuilder();
+
       getSnapshotSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       getIamPolicySnapshotSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
@@ -364,6 +397,8 @@ protected Builder(ClientContext clientContext) {
 
       setLabelsSnapshotSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setLabelsSnapshotOperationSettings = OperationCallSettings.newBuilder();
+
       testIamPermissionsSnapshotSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       unaryMethodSettingsBuilders =
@@ -424,6 +459,48 @@ private static Builder initDefaults(Builder builder) {
           .testIamPermissionsSnapshotSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteSnapshotOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setLabelsSnapshotOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -432,11 +509,13 @@ protected Builder(SnapshotStubSettings settings) {
       super(settings);
 
       deleteSnapshotSettings = settings.deleteSnapshotSettings.toBuilder();
+      deleteSnapshotOperationSettings = settings.deleteSnapshotOperationSettings.toBuilder();
       getSnapshotSettings = settings.getSnapshotSettings.toBuilder();
       getIamPolicySnapshotSettings = settings.getIamPolicySnapshotSettings.toBuilder();
       listSnapshotsSettings = settings.listSnapshotsSettings.toBuilder();
       setIamPolicySnapshotSettings = settings.setIamPolicySnapshotSettings.toBuilder();
       setLabelsSnapshotSettings = settings.setLabelsSnapshotSettings.toBuilder();
+      setLabelsSnapshotOperationSettings = settings.setLabelsSnapshotOperationSettings.toBuilder();
       testIamPermissionsSnapshotSettings = settings.testIamPermissionsSnapshotSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
@@ -472,6 +551,14 @@ public Builder applyToAllUnaryMethods(
       return deleteSnapshotSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteSnapshot. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteSnapshotOperationSettings() {
+      return deleteSnapshotOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getSnapshot. */
     public UnaryCallSettings.Builder getSnapshotSettings() {
       return getSnapshotSettings;
@@ -502,6 +589,14 @@ public UnaryCallSettings.Builder getSnapshotSe
       return setLabelsSnapshotSettings;
     }
 
+    /** Returns the builder for the settings used for calls to setLabelsSnapshot. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        setLabelsSnapshotOperationSettings() {
+      return setLabelsSnapshotOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to testIamPermissionsSnapshot. */
     public UnaryCallSettings.Builder
         testIamPermissionsSnapshotSettings() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SslCertificateStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SslCertificateStub.java
index 3e820287742d..1043759171ed 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SslCertificateStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SslCertificateStub.java
@@ -19,6 +19,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.DeleteSslCertificateHttpRequest;
 import com.google.cloud.compute.v1.GetSslCertificateHttpRequest;
@@ -39,6 +41,18 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class SslCertificateStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public GlobalOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteSslCertificateOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteSslCertificateOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteSslCertificateCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteSslCertificateCallable()");
@@ -49,6 +63,13 @@ public UnaryCallable getSslCertifi
     throw new UnsupportedOperationException("Not implemented: getSslCertificateCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertSslCertificateOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: insertSslCertificateOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertSslCertificateCallable() {
     throw new UnsupportedOperationException("Not implemented: insertSslCertificateCallable()");
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SslCertificateStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SslCertificateStubSettings.java
index fb736590ccfc..f4819e978cb6 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SslCertificateStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SslCertificateStubSettings.java
@@ -23,13 +23,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -70,13 +75,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteSslCertificate to 30 seconds: + * example, to set the total timeout of getSslCertificate to 30 seconds: * *

  * 
  * SslCertificateStubSettings.Builder sslCertificateSettingsBuilder =
  *     SslCertificateStubSettings.newBuilder();
- * sslCertificateSettingsBuilder.deleteSslCertificateSettings().getRetrySettings().toBuilder()
+ * sslCertificateSettingsBuilder.getSslCertificateSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * SslCertificateStubSettings sslCertificateSettings = sslCertificateSettingsBuilder.build();
  * 
@@ -98,10 +103,14 @@ public class SslCertificateStubSettings extends StubSettings
       deleteSslCertificateSettings;
+  private final OperationCallSettings
+      deleteSslCertificateOperationSettings;
   private final UnaryCallSettings
       getSslCertificateSettings;
   private final UnaryCallSettings
       insertSslCertificateSettings;
+  private final OperationCallSettings
+      insertSslCertificateOperationSettings;
   private final PagedCallSettings<
           ListSslCertificatesHttpRequest, SslCertificateList, ListSslCertificatesPagedResponse>
       listSslCertificatesSettings;
@@ -112,6 +121,13 @@ public class SslCertificateStubSettings extends StubSettings
+      deleteSslCertificateOperationSettings() {
+    return deleteSslCertificateOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getSslCertificate. */
   public UnaryCallSettings
       getSslCertificateSettings() {
@@ -124,6 +140,13 @@ public class SslCertificateStubSettings extends StubSettings
+      insertSslCertificateOperationSettings() {
+    return insertSslCertificateOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listSslCertificates. */
   public PagedCallSettings<
           ListSslCertificatesHttpRequest, SslCertificateList, ListSslCertificatesPagedResponse>
@@ -207,8 +230,12 @@ protected SslCertificateStubSettings(Builder settingsBuilder) throws IOException
     super(settingsBuilder);
 
     deleteSslCertificateSettings = settingsBuilder.deleteSslCertificateSettings().build();
+    deleteSslCertificateOperationSettings =
+        settingsBuilder.deleteSslCertificateOperationSettings().build();
     getSslCertificateSettings = settingsBuilder.getSslCertificateSettings().build();
     insertSslCertificateSettings = settingsBuilder.insertSslCertificateSettings().build();
+    insertSslCertificateOperationSettings =
+        settingsBuilder.insertSslCertificateOperationSettings().build();
     listSslCertificatesSettings = settingsBuilder.listSslCertificatesSettings().build();
   }
 
@@ -281,10 +308,16 @@ public static class Builder extends StubSettings.Builder
         deleteSslCertificateSettings;
+    private final OperationCallSettings.Builder<
+            DeleteSslCertificateHttpRequest, EmptyMessage, Operation>
+        deleteSslCertificateOperationSettings;
     private final UnaryCallSettings.Builder
         getSslCertificateSettings;
     private final UnaryCallSettings.Builder
         insertSslCertificateSettings;
+    private final OperationCallSettings.Builder<
+            InsertSslCertificateHttpRequest, EmptyMessage, Operation>
+        insertSslCertificateOperationSettings;
     private final PagedCallSettings.Builder<
             ListSslCertificatesHttpRequest, SslCertificateList, ListSslCertificatesPagedResponse>
         listSslCertificatesSettings;
@@ -332,10 +365,14 @@ protected Builder(ClientContext clientContext) {
 
       deleteSslCertificateSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteSslCertificateOperationSettings = OperationCallSettings.newBuilder();
+
       getSslCertificateSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertSslCertificateSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertSslCertificateOperationSettings = OperationCallSettings.newBuilder();
+
       listSslCertificatesSettings =
           PagedCallSettings.newBuilder(LIST_SSL_CERTIFICATES_PAGE_STR_FACT);
 
@@ -379,6 +416,48 @@ private static Builder initDefaults(Builder builder) {
           .listSslCertificatesSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteSslCertificateOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertSslCertificateOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -387,8 +466,12 @@ protected Builder(SslCertificateStubSettings settings) {
       super(settings);
 
       deleteSslCertificateSettings = settings.deleteSslCertificateSettings.toBuilder();
+      deleteSslCertificateOperationSettings =
+          settings.deleteSslCertificateOperationSettings.toBuilder();
       getSslCertificateSettings = settings.getSslCertificateSettings.toBuilder();
       insertSslCertificateSettings = settings.insertSslCertificateSettings.toBuilder();
+      insertSslCertificateOperationSettings =
+          settings.insertSslCertificateOperationSettings.toBuilder();
       listSslCertificatesSettings = settings.listSslCertificatesSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
@@ -421,6 +504,14 @@ public Builder applyToAllUnaryMethods(
       return deleteSslCertificateSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteSslCertificate. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteSslCertificateOperationSettings() {
+      return deleteSslCertificateOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getSslCertificate. */
     public UnaryCallSettings.Builder
         getSslCertificateSettings() {
@@ -433,6 +524,14 @@ public Builder applyToAllUnaryMethods(
       return insertSslCertificateSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertSslCertificate. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertSslCertificateOperationSettings() {
+      return insertSslCertificateOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listSslCertificates. */
     public PagedCallSettings.Builder<
             ListSslCertificatesHttpRequest, SslCertificateList, ListSslCertificatesPagedResponse>
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SslPolicyStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SslPolicyStub.java
index 162443fd6418..49432ca420b3 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SslPolicyStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SslPolicyStub.java
@@ -19,6 +19,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.DeleteSslPolicyHttpRequest;
 import com.google.cloud.compute.v1.GetSslPolicyHttpRequest;
@@ -42,6 +44,17 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class SslPolicyStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public GlobalOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteSslPolicyOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: deleteSslPolicyOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteSslPolicyCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteSslPolicyCallable()");
@@ -52,6 +65,12 @@ public UnaryCallable getSslPolicyCallable()
     throw new UnsupportedOperationException("Not implemented: getSslPolicyCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertSslPolicyOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: insertSslPolicyOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertSslPolicyCallable() {
     throw new UnsupportedOperationException("Not implemented: insertSslPolicyCallable()");
@@ -76,6 +95,12 @@ public UnaryCallable listSslPolicie
         "Not implemented: listAvailableFeaturesSslPoliciesCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchSslPolicyOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: patchSslPolicyOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable patchSslPolicyCallable() {
     throw new UnsupportedOperationException("Not implemented: patchSslPolicyCallable()");
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SslPolicyStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SslPolicyStubSettings.java
index b9a67d66870c..d4236b2dd565 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SslPolicyStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SslPolicyStubSettings.java
@@ -23,13 +23,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -73,13 +78,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteSslPolicy to 30 seconds: + * example, to set the total timeout of getSslPolicy to 30 seconds: * *

  * 
  * SslPolicyStubSettings.Builder sslPolicySettingsBuilder =
  *     SslPolicyStubSettings.newBuilder();
- * sslPolicySettingsBuilder.deleteSslPolicySettings().getRetrySettings().toBuilder()
+ * sslPolicySettingsBuilder.getSslPolicySettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * SslPolicyStubSettings sslPolicySettings = sslPolicySettingsBuilder.build();
  * 
@@ -100,8 +105,12 @@ public class SslPolicyStubSettings extends StubSettings {
           .build();
 
   private final UnaryCallSettings deleteSslPolicySettings;
+  private final OperationCallSettings
+      deleteSslPolicyOperationSettings;
   private final UnaryCallSettings getSslPolicySettings;
   private final UnaryCallSettings insertSslPolicySettings;
+  private final OperationCallSettings
+      insertSslPolicyOperationSettings;
   private final PagedCallSettings<
           ListSslPoliciesHttpRequest, SslPoliciesList, ListSslPoliciesPagedResponse>
       listSslPoliciesSettings;
@@ -109,12 +118,21 @@ public class SslPolicyStubSettings extends StubSettings {
           ListAvailableFeaturesSslPoliciesHttpRequest, SslPoliciesListAvailableFeaturesResponse>
       listAvailableFeaturesSslPoliciesSettings;
   private final UnaryCallSettings patchSslPolicySettings;
+  private final OperationCallSettings
+      patchSslPolicyOperationSettings;
 
   /** Returns the object with the settings used for calls to deleteSslPolicy. */
   public UnaryCallSettings deleteSslPolicySettings() {
     return deleteSslPolicySettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteSslPolicy. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteSslPolicyOperationSettings() {
+    return deleteSslPolicyOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getSslPolicy. */
   public UnaryCallSettings getSslPolicySettings() {
     return getSslPolicySettings;
@@ -125,6 +143,13 @@ public UnaryCallSettings insertSslPolicyS
     return insertSslPolicySettings;
   }
 
+  /** Returns the object with the settings used for calls to insertSslPolicy. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertSslPolicyOperationSettings() {
+    return insertSslPolicyOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listSslPolicies. */
   public PagedCallSettings<
           ListSslPoliciesHttpRequest, SslPoliciesList, ListSslPoliciesPagedResponse>
@@ -144,6 +169,13 @@ public UnaryCallSettings patchSslPolicySet
     return patchSslPolicySettings;
   }
 
+  /** Returns the object with the settings used for calls to patchSslPolicy. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      patchSslPolicyOperationSettings() {
+    return patchSslPolicyOperationSettings;
+  }
+
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   public SslPolicyStub createStub() throws IOException {
     if (getTransportChannelProvider()
@@ -219,12 +251,15 @@ protected SslPolicyStubSettings(Builder settingsBuilder) throws IOException {
     super(settingsBuilder);
 
     deleteSslPolicySettings = settingsBuilder.deleteSslPolicySettings().build();
+    deleteSslPolicyOperationSettings = settingsBuilder.deleteSslPolicyOperationSettings().build();
     getSslPolicySettings = settingsBuilder.getSslPolicySettings().build();
     insertSslPolicySettings = settingsBuilder.insertSslPolicySettings().build();
+    insertSslPolicyOperationSettings = settingsBuilder.insertSslPolicyOperationSettings().build();
     listSslPoliciesSettings = settingsBuilder.listSslPoliciesSettings().build();
     listAvailableFeaturesSslPoliciesSettings =
         settingsBuilder.listAvailableFeaturesSslPoliciesSettings().build();
     patchSslPolicySettings = settingsBuilder.patchSslPolicySettings().build();
+    patchSslPolicyOperationSettings = settingsBuilder.patchSslPolicyOperationSettings().build();
   }
 
   private static final PagedListDescriptor
@@ -288,10 +323,14 @@ public static class Builder extends StubSettings.Builder
         deleteSslPolicySettings;
+    private final OperationCallSettings.Builder
+        deleteSslPolicyOperationSettings;
     private final UnaryCallSettings.Builder
         getSslPolicySettings;
     private final UnaryCallSettings.Builder
         insertSslPolicySettings;
+    private final OperationCallSettings.Builder
+        insertSslPolicyOperationSettings;
     private final PagedCallSettings.Builder<
             ListSslPoliciesHttpRequest, SslPoliciesList, ListSslPoliciesPagedResponse>
         listSslPoliciesSettings;
@@ -300,6 +339,8 @@ public static class Builder extends StubSettings.Builder
         patchSslPolicySettings;
+    private final OperationCallSettings.Builder
+        patchSslPolicyOperationSettings;
 
     private static final ImmutableMap>
         RETRYABLE_CODE_DEFINITIONS;
@@ -344,16 +385,22 @@ protected Builder(ClientContext clientContext) {
 
       deleteSslPolicySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteSslPolicyOperationSettings = OperationCallSettings.newBuilder();
+
       getSslPolicySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertSslPolicySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertSslPolicyOperationSettings = OperationCallSettings.newBuilder();
+
       listSslPoliciesSettings = PagedCallSettings.newBuilder(LIST_SSL_POLICIES_PAGE_STR_FACT);
 
       listAvailableFeaturesSslPoliciesSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       patchSslPolicySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      patchSslPolicyOperationSettings = OperationCallSettings.newBuilder();
+
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
               deleteSslPolicySettings,
@@ -406,6 +453,69 @@ private static Builder initDefaults(Builder builder) {
           .patchSslPolicySettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteSslPolicyOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertSslPolicyOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .patchSslPolicyOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -414,12 +524,15 @@ protected Builder(SslPolicyStubSettings settings) {
       super(settings);
 
       deleteSslPolicySettings = settings.deleteSslPolicySettings.toBuilder();
+      deleteSslPolicyOperationSettings = settings.deleteSslPolicyOperationSettings.toBuilder();
       getSslPolicySettings = settings.getSslPolicySettings.toBuilder();
       insertSslPolicySettings = settings.insertSslPolicySettings.toBuilder();
+      insertSslPolicyOperationSettings = settings.insertSslPolicyOperationSettings.toBuilder();
       listSslPoliciesSettings = settings.listSslPoliciesSettings.toBuilder();
       listAvailableFeaturesSslPoliciesSettings =
           settings.listAvailableFeaturesSslPoliciesSettings.toBuilder();
       patchSslPolicySettings = settings.patchSslPolicySettings.toBuilder();
+      patchSslPolicyOperationSettings = settings.patchSslPolicyOperationSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
@@ -453,6 +566,14 @@ public Builder applyToAllUnaryMethods(
       return deleteSslPolicySettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteSslPolicy. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteSslPolicyOperationSettings() {
+      return deleteSslPolicyOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getSslPolicy. */
     public UnaryCallSettings.Builder getSslPolicySettings() {
       return getSslPolicySettings;
@@ -464,6 +585,14 @@ public UnaryCallSettings.Builder getSslPolic
       return insertSslPolicySettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertSslPolicy. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertSslPolicyOperationSettings() {
+      return insertSslPolicyOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listSslPolicies. */
     public PagedCallSettings.Builder<
             ListSslPoliciesHttpRequest, SslPoliciesList, ListSslPoliciesPagedResponse>
@@ -484,6 +613,14 @@ public UnaryCallSettings.Builder getSslPolic
       return patchSslPolicySettings;
     }
 
+    /** Returns the builder for the settings used for calls to patchSslPolicy. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchSslPolicyOperationSettings() {
+      return patchSslPolicyOperationSettings;
+    }
+
     @Override
     public SslPolicyStubSettings build() throws IOException {
       return new SslPolicyStubSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SubnetworkStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SubnetworkStub.java
index 1980048c428a..3d9352988d03 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SubnetworkStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SubnetworkStub.java
@@ -21,6 +21,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.AggregatedListSubnetworksHttpRequest;
 import com.google.cloud.compute.v1.DeleteSubnetworkHttpRequest;
@@ -53,6 +55,11 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class SubnetworkStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public RegionOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
   @BetaApi
   public UnaryCallable
       aggregatedListSubnetworksPagedCallable() {
@@ -66,11 +73,24 @@ public abstract class SubnetworkStub implements BackgroundResource {
     throw new UnsupportedOperationException("Not implemented: aggregatedListSubnetworksCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteSubnetworkOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: deleteSubnetworkOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteSubnetworkCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteSubnetworkCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      expandIpCidrRangeSubnetworkOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: expandIpCidrRangeSubnetworkOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       expandIpCidrRangeSubnetworkCallable() {
@@ -88,6 +108,12 @@ public UnaryCallable getIamPolicySubn
     throw new UnsupportedOperationException("Not implemented: getIamPolicySubnetworkCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertSubnetworkOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: insertSubnetworkOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertSubnetworkCallable() {
     throw new UnsupportedOperationException("Not implemented: insertSubnetworkCallable()");
@@ -117,6 +143,12 @@ public UnaryCallable listSubnetworks
     throw new UnsupportedOperationException("Not implemented: listUsableSubnetworksCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchSubnetworkOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: patchSubnetworkOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable patchSubnetworkCallable() {
     throw new UnsupportedOperationException("Not implemented: patchSubnetworkCallable()");
@@ -127,6 +159,13 @@ public UnaryCallable setIamPolicySubn
     throw new UnsupportedOperationException("Not implemented: setIamPolicySubnetworkCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setPrivateIpGoogleAccessSubnetworkOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setPrivateIpGoogleAccessSubnetworkOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setPrivateIpGoogleAccessSubnetworkCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SubnetworkStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SubnetworkStubSettings.java
index 6d892da84215..91a8addc5915 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SubnetworkStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/SubnetworkStubSettings.java
@@ -25,13 +25,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -86,13 +91,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteSubnetwork to 30 seconds: + * example, to set the total timeout of getSubnetwork to 30 seconds: * *

  * 
  * SubnetworkStubSettings.Builder subnetworkSettingsBuilder =
  *     SubnetworkStubSettings.newBuilder();
- * subnetworkSettingsBuilder.deleteSubnetworkSettings().getRetrySettings().toBuilder()
+ * subnetworkSettingsBuilder.getSubnetworkSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * SubnetworkStubSettings subnetworkSettings = subnetworkSettingsBuilder.build();
  * 
@@ -118,12 +123,19 @@ public class SubnetworkStubSettings extends StubSettings
           AggregatedListSubnetworksPagedResponse>
       aggregatedListSubnetworksSettings;
   private final UnaryCallSettings deleteSubnetworkSettings;
+  private final OperationCallSettings
+      deleteSubnetworkOperationSettings;
   private final UnaryCallSettings
       expandIpCidrRangeSubnetworkSettings;
+  private final OperationCallSettings<
+          ExpandIpCidrRangeSubnetworkHttpRequest, EmptyMessage, Operation>
+      expandIpCidrRangeSubnetworkOperationSettings;
   private final UnaryCallSettings getSubnetworkSettings;
   private final UnaryCallSettings
       getIamPolicySubnetworkSettings;
   private final UnaryCallSettings insertSubnetworkSettings;
+  private final OperationCallSettings
+      insertSubnetworkOperationSettings;
   private final PagedCallSettings<
           ListSubnetworksHttpRequest, SubnetworkList, ListSubnetworksPagedResponse>
       listSubnetworksSettings;
@@ -133,10 +145,15 @@ public class SubnetworkStubSettings extends StubSettings
           ListUsableSubnetworksPagedResponse>
       listUsableSubnetworksSettings;
   private final UnaryCallSettings patchSubnetworkSettings;
+  private final OperationCallSettings
+      patchSubnetworkOperationSettings;
   private final UnaryCallSettings
       setIamPolicySubnetworkSettings;
   private final UnaryCallSettings
       setPrivateIpGoogleAccessSubnetworkSettings;
+  private final OperationCallSettings<
+          SetPrivateIpGoogleAccessSubnetworkHttpRequest, EmptyMessage, Operation>
+      setPrivateIpGoogleAccessSubnetworkOperationSettings;
   private final UnaryCallSettings
       testIamPermissionsSubnetworkSettings;
 
@@ -154,12 +171,26 @@ public UnaryCallSettings deleteSubnetwor
     return deleteSubnetworkSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteSubnetwork. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteSubnetworkOperationSettings() {
+    return deleteSubnetworkOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to expandIpCidrRangeSubnetwork. */
   public UnaryCallSettings
       expandIpCidrRangeSubnetworkSettings() {
     return expandIpCidrRangeSubnetworkSettings;
   }
 
+  /** Returns the object with the settings used for calls to expandIpCidrRangeSubnetwork. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      expandIpCidrRangeSubnetworkOperationSettings() {
+    return expandIpCidrRangeSubnetworkOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getSubnetwork. */
   public UnaryCallSettings getSubnetworkSettings() {
     return getSubnetworkSettings;
@@ -176,6 +207,13 @@ public UnaryCallSettings insertSubnetwor
     return insertSubnetworkSettings;
   }
 
+  /** Returns the object with the settings used for calls to insertSubnetwork. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertSubnetworkOperationSettings() {
+    return insertSubnetworkOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listSubnetworks. */
   public PagedCallSettings
       listSubnetworksSettings() {
@@ -196,6 +234,13 @@ public UnaryCallSettings patchSubnetworkS
     return patchSubnetworkSettings;
   }
 
+  /** Returns the object with the settings used for calls to patchSubnetwork. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      patchSubnetworkOperationSettings() {
+    return patchSubnetworkOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to setIamPolicySubnetwork. */
   public UnaryCallSettings
       setIamPolicySubnetworkSettings() {
@@ -208,6 +253,14 @@ public UnaryCallSettings patchSubnetworkS
     return setPrivateIpGoogleAccessSubnetworkSettings;
   }
 
+  /** Returns the object with the settings used for calls to setPrivateIpGoogleAccessSubnetwork. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings<
+          SetPrivateIpGoogleAccessSubnetworkHttpRequest, EmptyMessage, Operation>
+      setPrivateIpGoogleAccessSubnetworkOperationSettings() {
+    return setPrivateIpGoogleAccessSubnetworkOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to testIamPermissionsSubnetwork. */
   public UnaryCallSettings
       testIamPermissionsSubnetworkSettings() {
@@ -291,17 +344,24 @@ protected SubnetworkStubSettings(Builder settingsBuilder) throws IOException {
 
     aggregatedListSubnetworksSettings = settingsBuilder.aggregatedListSubnetworksSettings().build();
     deleteSubnetworkSettings = settingsBuilder.deleteSubnetworkSettings().build();
+    deleteSubnetworkOperationSettings = settingsBuilder.deleteSubnetworkOperationSettings().build();
     expandIpCidrRangeSubnetworkSettings =
         settingsBuilder.expandIpCidrRangeSubnetworkSettings().build();
+    expandIpCidrRangeSubnetworkOperationSettings =
+        settingsBuilder.expandIpCidrRangeSubnetworkOperationSettings().build();
     getSubnetworkSettings = settingsBuilder.getSubnetworkSettings().build();
     getIamPolicySubnetworkSettings = settingsBuilder.getIamPolicySubnetworkSettings().build();
     insertSubnetworkSettings = settingsBuilder.insertSubnetworkSettings().build();
+    insertSubnetworkOperationSettings = settingsBuilder.insertSubnetworkOperationSettings().build();
     listSubnetworksSettings = settingsBuilder.listSubnetworksSettings().build();
     listUsableSubnetworksSettings = settingsBuilder.listUsableSubnetworksSettings().build();
     patchSubnetworkSettings = settingsBuilder.patchSubnetworkSettings().build();
+    patchSubnetworkOperationSettings = settingsBuilder.patchSubnetworkOperationSettings().build();
     setIamPolicySubnetworkSettings = settingsBuilder.setIamPolicySubnetworkSettings().build();
     setPrivateIpGoogleAccessSubnetworkSettings =
         settingsBuilder.setPrivateIpGoogleAccessSubnetworkSettings().build();
+    setPrivateIpGoogleAccessSubnetworkOperationSettings =
+        settingsBuilder.setPrivateIpGoogleAccessSubnetworkOperationSettings().build();
     testIamPermissionsSubnetworkSettings =
         settingsBuilder.testIamPermissionsSubnetworkSettings().build();
   }
@@ -521,14 +581,23 @@ public static class Builder extends StubSettings.Builder
         deleteSubnetworkSettings;
+    private final OperationCallSettings.Builder<
+            DeleteSubnetworkHttpRequest, EmptyMessage, Operation>
+        deleteSubnetworkOperationSettings;
     private final UnaryCallSettings.Builder
         expandIpCidrRangeSubnetworkSettings;
+    private final OperationCallSettings.Builder<
+            ExpandIpCidrRangeSubnetworkHttpRequest, EmptyMessage, Operation>
+        expandIpCidrRangeSubnetworkOperationSettings;
     private final UnaryCallSettings.Builder
         getSubnetworkSettings;
     private final UnaryCallSettings.Builder
         getIamPolicySubnetworkSettings;
     private final UnaryCallSettings.Builder
         insertSubnetworkSettings;
+    private final OperationCallSettings.Builder<
+            InsertSubnetworkHttpRequest, EmptyMessage, Operation>
+        insertSubnetworkOperationSettings;
     private final PagedCallSettings.Builder<
             ListSubnetworksHttpRequest, SubnetworkList, ListSubnetworksPagedResponse>
         listSubnetworksSettings;
@@ -539,11 +608,16 @@ public static class Builder extends StubSettings.Builder
         patchSubnetworkSettings;
+    private final OperationCallSettings.Builder
+        patchSubnetworkOperationSettings;
     private final UnaryCallSettings.Builder
         setIamPolicySubnetworkSettings;
     private final UnaryCallSettings.Builder<
             SetPrivateIpGoogleAccessSubnetworkHttpRequest, Operation>
         setPrivateIpGoogleAccessSubnetworkSettings;
+    private final OperationCallSettings.Builder<
+            SetPrivateIpGoogleAccessSubnetworkHttpRequest, EmptyMessage, Operation>
+        setPrivateIpGoogleAccessSubnetworkOperationSettings;
     private final UnaryCallSettings.Builder<
             TestIamPermissionsSubnetworkHttpRequest, TestPermissionsResponse>
         testIamPermissionsSubnetworkSettings;
@@ -594,14 +668,20 @@ protected Builder(ClientContext clientContext) {
 
       deleteSubnetworkSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteSubnetworkOperationSettings = OperationCallSettings.newBuilder();
+
       expandIpCidrRangeSubnetworkSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      expandIpCidrRangeSubnetworkOperationSettings = OperationCallSettings.newBuilder();
+
       getSubnetworkSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       getIamPolicySubnetworkSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertSubnetworkSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertSubnetworkOperationSettings = OperationCallSettings.newBuilder();
+
       listSubnetworksSettings = PagedCallSettings.newBuilder(LIST_SUBNETWORKS_PAGE_STR_FACT);
 
       listUsableSubnetworksSettings =
@@ -609,10 +689,14 @@ protected Builder(ClientContext clientContext) {
 
       patchSubnetworkSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      patchSubnetworkOperationSettings = OperationCallSettings.newBuilder();
+
       setIamPolicySubnetworkSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       setPrivateIpGoogleAccessSubnetworkSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setPrivateIpGoogleAccessSubnetworkOperationSettings = OperationCallSettings.newBuilder();
+
       testIamPermissionsSubnetworkSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       unaryMethodSettingsBuilders =
@@ -703,6 +787,113 @@ private static Builder initDefaults(Builder builder) {
           .testIamPermissionsSubnetworkSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteSubnetworkOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .expandIpCidrRangeSubnetworkOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertSubnetworkOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .patchSubnetworkOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setPrivateIpGoogleAccessSubnetworkOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -712,17 +903,24 @@ protected Builder(SubnetworkStubSettings settings) {
 
       aggregatedListSubnetworksSettings = settings.aggregatedListSubnetworksSettings.toBuilder();
       deleteSubnetworkSettings = settings.deleteSubnetworkSettings.toBuilder();
+      deleteSubnetworkOperationSettings = settings.deleteSubnetworkOperationSettings.toBuilder();
       expandIpCidrRangeSubnetworkSettings =
           settings.expandIpCidrRangeSubnetworkSettings.toBuilder();
+      expandIpCidrRangeSubnetworkOperationSettings =
+          settings.expandIpCidrRangeSubnetworkOperationSettings.toBuilder();
       getSubnetworkSettings = settings.getSubnetworkSettings.toBuilder();
       getIamPolicySubnetworkSettings = settings.getIamPolicySubnetworkSettings.toBuilder();
       insertSubnetworkSettings = settings.insertSubnetworkSettings.toBuilder();
+      insertSubnetworkOperationSettings = settings.insertSubnetworkOperationSettings.toBuilder();
       listSubnetworksSettings = settings.listSubnetworksSettings.toBuilder();
       listUsableSubnetworksSettings = settings.listUsableSubnetworksSettings.toBuilder();
       patchSubnetworkSettings = settings.patchSubnetworkSettings.toBuilder();
+      patchSubnetworkOperationSettings = settings.patchSubnetworkOperationSettings.toBuilder();
       setIamPolicySubnetworkSettings = settings.setIamPolicySubnetworkSettings.toBuilder();
       setPrivateIpGoogleAccessSubnetworkSettings =
           settings.setPrivateIpGoogleAccessSubnetworkSettings.toBuilder();
+      setPrivateIpGoogleAccessSubnetworkOperationSettings =
+          settings.setPrivateIpGoogleAccessSubnetworkOperationSettings.toBuilder();
       testIamPermissionsSubnetworkSettings =
           settings.testIamPermissionsSubnetworkSettings.toBuilder();
 
@@ -773,12 +971,29 @@ public Builder applyToAllUnaryMethods(
       return deleteSubnetworkSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteSubnetwork. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteSubnetworkOperationSettings() {
+      return deleteSubnetworkOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to expandIpCidrRangeSubnetwork. */
     public UnaryCallSettings.Builder
         expandIpCidrRangeSubnetworkSettings() {
       return expandIpCidrRangeSubnetworkSettings;
     }
 
+    /** Returns the builder for the settings used for calls to expandIpCidrRangeSubnetwork. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            ExpandIpCidrRangeSubnetworkHttpRequest, EmptyMessage, Operation>
+        expandIpCidrRangeSubnetworkOperationSettings() {
+      return expandIpCidrRangeSubnetworkOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getSubnetwork. */
     public UnaryCallSettings.Builder getSubnetworkSettings() {
       return getSubnetworkSettings;
@@ -796,6 +1011,14 @@ public UnaryCallSettings.Builder getSubnet
       return insertSubnetworkSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertSubnetwork. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertSubnetworkOperationSettings() {
+      return insertSubnetworkOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listSubnetworks. */
     public PagedCallSettings.Builder<
             ListSubnetworksHttpRequest, SubnetworkList, ListSubnetworksPagedResponse>
@@ -818,6 +1041,14 @@ public UnaryCallSettings.Builder getSubnet
       return patchSubnetworkSettings;
     }
 
+    /** Returns the builder for the settings used for calls to patchSubnetwork. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchSubnetworkOperationSettings() {
+      return patchSubnetworkOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to setIamPolicySubnetwork. */
     public UnaryCallSettings.Builder
         setIamPolicySubnetworkSettings() {
@@ -832,6 +1063,17 @@ public UnaryCallSettings.Builder getSubnet
       return setPrivateIpGoogleAccessSubnetworkSettings;
     }
 
+    /**
+     * Returns the builder for the settings used for calls to setPrivateIpGoogleAccessSubnetwork.
+     */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetPrivateIpGoogleAccessSubnetworkHttpRequest, EmptyMessage, Operation>
+        setPrivateIpGoogleAccessSubnetworkOperationSettings() {
+      return setPrivateIpGoogleAccessSubnetworkOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to testIamPermissionsSubnetwork. */
     public UnaryCallSettings.Builder<
             TestIamPermissionsSubnetworkHttpRequest, TestPermissionsResponse>
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetHttpProxyStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetHttpProxyStub.java
index 275dc5133f18..3ceb4dd101a2 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetHttpProxyStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetHttpProxyStub.java
@@ -19,6 +19,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.DeleteTargetHttpProxyHttpRequest;
 import com.google.cloud.compute.v1.GetTargetHttpProxyHttpRequest;
@@ -40,6 +42,18 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class TargetHttpProxyStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public GlobalOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteTargetHttpProxyOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteTargetHttpProxyOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       deleteTargetHttpProxyCallable() {
@@ -52,6 +66,13 @@ public abstract class TargetHttpProxyStub implements BackgroundResource {
     throw new UnsupportedOperationException("Not implemented: getTargetHttpProxyCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertTargetHttpProxyOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: insertTargetHttpProxyOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       insertTargetHttpProxyCallable() {
@@ -71,6 +92,13 @@ public abstract class TargetHttpProxyStub implements BackgroundResource {
     throw new UnsupportedOperationException("Not implemented: listTargetHttpProxiesCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setUrlMapTargetHttpProxyOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setUrlMapTargetHttpProxyOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setUrlMapTargetHttpProxyCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetHttpProxyStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetHttpProxyStubSettings.java
index fcf84df01b87..3da83a1f3d4b 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetHttpProxyStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetHttpProxyStubSettings.java
@@ -23,13 +23,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -71,13 +76,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteTargetHttpProxy to 30 seconds: + * example, to set the total timeout of getTargetHttpProxy to 30 seconds: * *

  * 
  * TargetHttpProxyStubSettings.Builder targetHttpProxySettingsBuilder =
  *     TargetHttpProxyStubSettings.newBuilder();
- * targetHttpProxySettingsBuilder.deleteTargetHttpProxySettings().getRetrySettings().toBuilder()
+ * targetHttpProxySettingsBuilder.getTargetHttpProxySettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * TargetHttpProxyStubSettings targetHttpProxySettings = targetHttpProxySettingsBuilder.build();
  * 
@@ -99,15 +104,21 @@ public class TargetHttpProxyStubSettings extends StubSettings
       deleteTargetHttpProxySettings;
+  private final OperationCallSettings
+      deleteTargetHttpProxyOperationSettings;
   private final UnaryCallSettings
       getTargetHttpProxySettings;
   private final UnaryCallSettings
       insertTargetHttpProxySettings;
+  private final OperationCallSettings
+      insertTargetHttpProxyOperationSettings;
   private final PagedCallSettings<
           ListTargetHttpProxiesHttpRequest, TargetHttpProxyList, ListTargetHttpProxiesPagedResponse>
       listTargetHttpProxiesSettings;
   private final UnaryCallSettings
       setUrlMapTargetHttpProxySettings;
+  private final OperationCallSettings
+      setUrlMapTargetHttpProxyOperationSettings;
 
   /** Returns the object with the settings used for calls to deleteTargetHttpProxy. */
   public UnaryCallSettings
@@ -115,6 +126,13 @@ public class TargetHttpProxyStubSettings extends StubSettings
+      deleteTargetHttpProxyOperationSettings() {
+    return deleteTargetHttpProxyOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getTargetHttpProxy. */
   public UnaryCallSettings
       getTargetHttpProxySettings() {
@@ -127,6 +145,13 @@ public class TargetHttpProxyStubSettings extends StubSettings
+      insertTargetHttpProxyOperationSettings() {
+    return insertTargetHttpProxyOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listTargetHttpProxies. */
   public PagedCallSettings<
           ListTargetHttpProxiesHttpRequest, TargetHttpProxyList, ListTargetHttpProxiesPagedResponse>
@@ -140,6 +165,13 @@ public class TargetHttpProxyStubSettings extends StubSettings
+      setUrlMapTargetHttpProxyOperationSettings() {
+    return setUrlMapTargetHttpProxyOperationSettings;
+  }
+
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   public TargetHttpProxyStub createStub() throws IOException {
     if (getTransportChannelProvider()
@@ -216,10 +248,16 @@ protected TargetHttpProxyStubSettings(Builder settingsBuilder) throws IOExceptio
     super(settingsBuilder);
 
     deleteTargetHttpProxySettings = settingsBuilder.deleteTargetHttpProxySettings().build();
+    deleteTargetHttpProxyOperationSettings =
+        settingsBuilder.deleteTargetHttpProxyOperationSettings().build();
     getTargetHttpProxySettings = settingsBuilder.getTargetHttpProxySettings().build();
     insertTargetHttpProxySettings = settingsBuilder.insertTargetHttpProxySettings().build();
+    insertTargetHttpProxyOperationSettings =
+        settingsBuilder.insertTargetHttpProxyOperationSettings().build();
     listTargetHttpProxiesSettings = settingsBuilder.listTargetHttpProxiesSettings().build();
     setUrlMapTargetHttpProxySettings = settingsBuilder.setUrlMapTargetHttpProxySettings().build();
+    setUrlMapTargetHttpProxyOperationSettings =
+        settingsBuilder.setUrlMapTargetHttpProxyOperationSettings().build();
   }
 
   private static final PagedListDescriptor<
@@ -293,10 +331,16 @@ public static class Builder extends StubSettings.Builder
         deleteTargetHttpProxySettings;
+    private final OperationCallSettings.Builder<
+            DeleteTargetHttpProxyHttpRequest, EmptyMessage, Operation>
+        deleteTargetHttpProxyOperationSettings;
     private final UnaryCallSettings.Builder
         getTargetHttpProxySettings;
     private final UnaryCallSettings.Builder
         insertTargetHttpProxySettings;
+    private final OperationCallSettings.Builder<
+            InsertTargetHttpProxyHttpRequest, EmptyMessage, Operation>
+        insertTargetHttpProxyOperationSettings;
     private final PagedCallSettings.Builder<
             ListTargetHttpProxiesHttpRequest,
             TargetHttpProxyList,
@@ -304,6 +348,9 @@ public static class Builder extends StubSettings.Builder
         setUrlMapTargetHttpProxySettings;
+    private final OperationCallSettings.Builder<
+            SetUrlMapTargetHttpProxyHttpRequest, EmptyMessage, Operation>
+        setUrlMapTargetHttpProxyOperationSettings;
 
     private static final ImmutableMap>
         RETRYABLE_CODE_DEFINITIONS;
@@ -348,15 +395,21 @@ protected Builder(ClientContext clientContext) {
 
       deleteTargetHttpProxySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteTargetHttpProxyOperationSettings = OperationCallSettings.newBuilder();
+
       getTargetHttpProxySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertTargetHttpProxySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertTargetHttpProxyOperationSettings = OperationCallSettings.newBuilder();
+
       listTargetHttpProxiesSettings =
           PagedCallSettings.newBuilder(LIST_TARGET_HTTP_PROXIES_PAGE_STR_FACT);
 
       setUrlMapTargetHttpProxySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setUrlMapTargetHttpProxyOperationSettings = OperationCallSettings.newBuilder();
+
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
               deleteTargetHttpProxySettings,
@@ -403,6 +456,72 @@ private static Builder initDefaults(Builder builder) {
           .setUrlMapTargetHttpProxySettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteTargetHttpProxyOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertTargetHttpProxyOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setUrlMapTargetHttpProxyOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -411,10 +530,16 @@ protected Builder(TargetHttpProxyStubSettings settings) {
       super(settings);
 
       deleteTargetHttpProxySettings = settings.deleteTargetHttpProxySettings.toBuilder();
+      deleteTargetHttpProxyOperationSettings =
+          settings.deleteTargetHttpProxyOperationSettings.toBuilder();
       getTargetHttpProxySettings = settings.getTargetHttpProxySettings.toBuilder();
       insertTargetHttpProxySettings = settings.insertTargetHttpProxySettings.toBuilder();
+      insertTargetHttpProxyOperationSettings =
+          settings.insertTargetHttpProxyOperationSettings.toBuilder();
       listTargetHttpProxiesSettings = settings.listTargetHttpProxiesSettings.toBuilder();
       setUrlMapTargetHttpProxySettings = settings.setUrlMapTargetHttpProxySettings.toBuilder();
+      setUrlMapTargetHttpProxyOperationSettings =
+          settings.setUrlMapTargetHttpProxyOperationSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
@@ -447,6 +572,14 @@ public Builder applyToAllUnaryMethods(
       return deleteTargetHttpProxySettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteTargetHttpProxy. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteTargetHttpProxyOperationSettings() {
+      return deleteTargetHttpProxyOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getTargetHttpProxy. */
     public UnaryCallSettings.Builder
         getTargetHttpProxySettings() {
@@ -459,6 +592,14 @@ public Builder applyToAllUnaryMethods(
       return insertTargetHttpProxySettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertTargetHttpProxy. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertTargetHttpProxyOperationSettings() {
+      return insertTargetHttpProxyOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listTargetHttpProxies. */
     public PagedCallSettings.Builder<
             ListTargetHttpProxiesHttpRequest,
@@ -474,6 +615,15 @@ public Builder applyToAllUnaryMethods(
       return setUrlMapTargetHttpProxySettings;
     }
 
+    /** Returns the builder for the settings used for calls to setUrlMapTargetHttpProxy. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetUrlMapTargetHttpProxyHttpRequest, EmptyMessage, Operation>
+        setUrlMapTargetHttpProxyOperationSettings() {
+      return setUrlMapTargetHttpProxyOperationSettings;
+    }
+
     @Override
     public TargetHttpProxyStubSettings build() throws IOException {
       return new TargetHttpProxyStubSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetHttpsProxyStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetHttpsProxyStub.java
index 6e41b579ebe2..dc137015c2be 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetHttpsProxyStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetHttpsProxyStub.java
@@ -19,6 +19,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.DeleteTargetHttpsProxyHttpRequest;
 import com.google.cloud.compute.v1.GetTargetHttpsProxyHttpRequest;
@@ -43,6 +45,18 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class TargetHttpsProxyStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public GlobalOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteTargetHttpsProxyOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteTargetHttpsProxyOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       deleteTargetHttpsProxyCallable() {
@@ -55,6 +69,13 @@ public abstract class TargetHttpsProxyStub implements BackgroundResource {
     throw new UnsupportedOperationException("Not implemented: getTargetHttpsProxyCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertTargetHttpsProxyOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: insertTargetHttpsProxyOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       insertTargetHttpsProxyCallable() {
@@ -74,6 +95,13 @@ public abstract class TargetHttpsProxyStub implements BackgroundResource {
     throw new UnsupportedOperationException("Not implemented: listTargetHttpsProxiesCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setQuicOverrideTargetHttpsProxyOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setQuicOverrideTargetHttpsProxyOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setQuicOverrideTargetHttpsProxyCallable() {
@@ -81,6 +109,13 @@ public abstract class TargetHttpsProxyStub implements BackgroundResource {
         "Not implemented: setQuicOverrideTargetHttpsProxyCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setSslCertificatesTargetHttpsProxyOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setSslCertificatesTargetHttpsProxyOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setSslCertificatesTargetHttpsProxyCallable() {
@@ -88,6 +123,13 @@ public abstract class TargetHttpsProxyStub implements BackgroundResource {
         "Not implemented: setSslCertificatesTargetHttpsProxyCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setSslPolicyTargetHttpsProxyOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setSslPolicyTargetHttpsProxyOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setSslPolicyTargetHttpsProxyCallable() {
@@ -95,6 +137,13 @@ public abstract class TargetHttpsProxyStub implements BackgroundResource {
         "Not implemented: setSslPolicyTargetHttpsProxyCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setUrlMapTargetHttpsProxyOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setUrlMapTargetHttpsProxyOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setUrlMapTargetHttpsProxyCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetHttpsProxyStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetHttpsProxyStubSettings.java
index e5afe66bfbcf..e82e1db0a1cf 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetHttpsProxyStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetHttpsProxyStubSettings.java
@@ -23,13 +23,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -74,13 +79,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteTargetHttpsProxy to 30 seconds: + * example, to set the total timeout of getTargetHttpsProxy to 30 seconds: * *

  * 
  * TargetHttpsProxyStubSettings.Builder targetHttpsProxySettingsBuilder =
  *     TargetHttpsProxyStubSettings.newBuilder();
- * targetHttpsProxySettingsBuilder.deleteTargetHttpsProxySettings().getRetrySettings().toBuilder()
+ * targetHttpsProxySettingsBuilder.getTargetHttpsProxySettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * TargetHttpsProxyStubSettings targetHttpsProxySettings = targetHttpsProxySettingsBuilder.build();
  * 
@@ -102,10 +107,14 @@ public class TargetHttpsProxyStubSettings extends StubSettings
       deleteTargetHttpsProxySettings;
+  private final OperationCallSettings
+      deleteTargetHttpsProxyOperationSettings;
   private final UnaryCallSettings
       getTargetHttpsProxySettings;
   private final UnaryCallSettings
       insertTargetHttpsProxySettings;
+  private final OperationCallSettings
+      insertTargetHttpsProxyOperationSettings;
   private final PagedCallSettings<
           ListTargetHttpsProxiesHttpRequest,
           TargetHttpsProxyList,
@@ -113,12 +122,23 @@ public class TargetHttpsProxyStubSettings extends StubSettings
       setQuicOverrideTargetHttpsProxySettings;
+  private final OperationCallSettings<
+          SetQuicOverrideTargetHttpsProxyHttpRequest, EmptyMessage, Operation>
+      setQuicOverrideTargetHttpsProxyOperationSettings;
   private final UnaryCallSettings
       setSslCertificatesTargetHttpsProxySettings;
+  private final OperationCallSettings<
+          SetSslCertificatesTargetHttpsProxyHttpRequest, EmptyMessage, Operation>
+      setSslCertificatesTargetHttpsProxyOperationSettings;
   private final UnaryCallSettings
       setSslPolicyTargetHttpsProxySettings;
+  private final OperationCallSettings<
+          SetSslPolicyTargetHttpsProxyHttpRequest, EmptyMessage, Operation>
+      setSslPolicyTargetHttpsProxyOperationSettings;
   private final UnaryCallSettings
       setUrlMapTargetHttpsProxySettings;
+  private final OperationCallSettings
+      setUrlMapTargetHttpsProxyOperationSettings;
 
   /** Returns the object with the settings used for calls to deleteTargetHttpsProxy. */
   public UnaryCallSettings
@@ -126,6 +146,13 @@ public class TargetHttpsProxyStubSettings extends StubSettings
+      deleteTargetHttpsProxyOperationSettings() {
+    return deleteTargetHttpsProxyOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getTargetHttpsProxy. */
   public UnaryCallSettings
       getTargetHttpsProxySettings() {
@@ -138,6 +165,13 @@ public class TargetHttpsProxyStubSettings extends StubSettings
+      insertTargetHttpsProxyOperationSettings() {
+    return insertTargetHttpsProxyOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listTargetHttpsProxies. */
   public PagedCallSettings<
           ListTargetHttpsProxiesHttpRequest,
@@ -153,24 +187,53 @@ public class TargetHttpsProxyStubSettings extends StubSettings
+      setQuicOverrideTargetHttpsProxyOperationSettings() {
+    return setQuicOverrideTargetHttpsProxyOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to setSslCertificatesTargetHttpsProxy. */
   public UnaryCallSettings
       setSslCertificatesTargetHttpsProxySettings() {
     return setSslCertificatesTargetHttpsProxySettings;
   }
 
+  /** Returns the object with the settings used for calls to setSslCertificatesTargetHttpsProxy. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings<
+          SetSslCertificatesTargetHttpsProxyHttpRequest, EmptyMessage, Operation>
+      setSslCertificatesTargetHttpsProxyOperationSettings() {
+    return setSslCertificatesTargetHttpsProxyOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to setSslPolicyTargetHttpsProxy. */
   public UnaryCallSettings
       setSslPolicyTargetHttpsProxySettings() {
     return setSslPolicyTargetHttpsProxySettings;
   }
 
+  /** Returns the object with the settings used for calls to setSslPolicyTargetHttpsProxy. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setSslPolicyTargetHttpsProxyOperationSettings() {
+    return setSslPolicyTargetHttpsProxyOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to setUrlMapTargetHttpsProxy. */
   public UnaryCallSettings
       setUrlMapTargetHttpsProxySettings() {
     return setUrlMapTargetHttpsProxySettings;
   }
 
+  /** Returns the object with the settings used for calls to setUrlMapTargetHttpsProxy. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setUrlMapTargetHttpsProxyOperationSettings() {
+    return setUrlMapTargetHttpsProxyOperationSettings;
+  }
+
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   public TargetHttpsProxyStub createStub() throws IOException {
     if (getTransportChannelProvider()
@@ -247,16 +310,28 @@ protected TargetHttpsProxyStubSettings(Builder settingsBuilder) throws IOExcepti
     super(settingsBuilder);
 
     deleteTargetHttpsProxySettings = settingsBuilder.deleteTargetHttpsProxySettings().build();
+    deleteTargetHttpsProxyOperationSettings =
+        settingsBuilder.deleteTargetHttpsProxyOperationSettings().build();
     getTargetHttpsProxySettings = settingsBuilder.getTargetHttpsProxySettings().build();
     insertTargetHttpsProxySettings = settingsBuilder.insertTargetHttpsProxySettings().build();
+    insertTargetHttpsProxyOperationSettings =
+        settingsBuilder.insertTargetHttpsProxyOperationSettings().build();
     listTargetHttpsProxiesSettings = settingsBuilder.listTargetHttpsProxiesSettings().build();
     setQuicOverrideTargetHttpsProxySettings =
         settingsBuilder.setQuicOverrideTargetHttpsProxySettings().build();
+    setQuicOverrideTargetHttpsProxyOperationSettings =
+        settingsBuilder.setQuicOverrideTargetHttpsProxyOperationSettings().build();
     setSslCertificatesTargetHttpsProxySettings =
         settingsBuilder.setSslCertificatesTargetHttpsProxySettings().build();
+    setSslCertificatesTargetHttpsProxyOperationSettings =
+        settingsBuilder.setSslCertificatesTargetHttpsProxyOperationSettings().build();
     setSslPolicyTargetHttpsProxySettings =
         settingsBuilder.setSslPolicyTargetHttpsProxySettings().build();
+    setSslPolicyTargetHttpsProxyOperationSettings =
+        settingsBuilder.setSslPolicyTargetHttpsProxyOperationSettings().build();
     setUrlMapTargetHttpsProxySettings = settingsBuilder.setUrlMapTargetHttpsProxySettings().build();
+    setUrlMapTargetHttpsProxyOperationSettings =
+        settingsBuilder.setUrlMapTargetHttpsProxyOperationSettings().build();
   }
 
   private static final PagedListDescriptor<
@@ -332,10 +407,16 @@ public static class Builder extends StubSettings.Builder
         deleteTargetHttpsProxySettings;
+    private final OperationCallSettings.Builder<
+            DeleteTargetHttpsProxyHttpRequest, EmptyMessage, Operation>
+        deleteTargetHttpsProxyOperationSettings;
     private final UnaryCallSettings.Builder
         getTargetHttpsProxySettings;
     private final UnaryCallSettings.Builder
         insertTargetHttpsProxySettings;
+    private final OperationCallSettings.Builder<
+            InsertTargetHttpsProxyHttpRequest, EmptyMessage, Operation>
+        insertTargetHttpsProxyOperationSettings;
     private final PagedCallSettings.Builder<
             ListTargetHttpsProxiesHttpRequest,
             TargetHttpsProxyList,
@@ -343,13 +424,25 @@ public static class Builder extends StubSettings.Builder
         setQuicOverrideTargetHttpsProxySettings;
+    private final OperationCallSettings.Builder<
+            SetQuicOverrideTargetHttpsProxyHttpRequest, EmptyMessage, Operation>
+        setQuicOverrideTargetHttpsProxyOperationSettings;
     private final UnaryCallSettings.Builder<
             SetSslCertificatesTargetHttpsProxyHttpRequest, Operation>
         setSslCertificatesTargetHttpsProxySettings;
+    private final OperationCallSettings.Builder<
+            SetSslCertificatesTargetHttpsProxyHttpRequest, EmptyMessage, Operation>
+        setSslCertificatesTargetHttpsProxyOperationSettings;
     private final UnaryCallSettings.Builder
         setSslPolicyTargetHttpsProxySettings;
+    private final OperationCallSettings.Builder<
+            SetSslPolicyTargetHttpsProxyHttpRequest, EmptyMessage, Operation>
+        setSslPolicyTargetHttpsProxyOperationSettings;
     private final UnaryCallSettings.Builder
         setUrlMapTargetHttpsProxySettings;
+    private final OperationCallSettings.Builder<
+            SetUrlMapTargetHttpsProxyHttpRequest, EmptyMessage, Operation>
+        setUrlMapTargetHttpsProxyOperationSettings;
 
     private static final ImmutableMap>
         RETRYABLE_CODE_DEFINITIONS;
@@ -394,21 +487,33 @@ protected Builder(ClientContext clientContext) {
 
       deleteTargetHttpsProxySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteTargetHttpsProxyOperationSettings = OperationCallSettings.newBuilder();
+
       getTargetHttpsProxySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertTargetHttpsProxySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertTargetHttpsProxyOperationSettings = OperationCallSettings.newBuilder();
+
       listTargetHttpsProxiesSettings =
           PagedCallSettings.newBuilder(LIST_TARGET_HTTPS_PROXIES_PAGE_STR_FACT);
 
       setQuicOverrideTargetHttpsProxySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setQuicOverrideTargetHttpsProxyOperationSettings = OperationCallSettings.newBuilder();
+
       setSslCertificatesTargetHttpsProxySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setSslCertificatesTargetHttpsProxyOperationSettings = OperationCallSettings.newBuilder();
+
       setSslPolicyTargetHttpsProxySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setSslPolicyTargetHttpsProxyOperationSettings = OperationCallSettings.newBuilder();
+
       setUrlMapTargetHttpsProxySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setUrlMapTargetHttpsProxyOperationSettings = OperationCallSettings.newBuilder();
+
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
               deleteTargetHttpsProxySettings,
@@ -473,6 +578,138 @@ private static Builder initDefaults(Builder builder) {
           .setUrlMapTargetHttpsProxySettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteTargetHttpsProxyOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertTargetHttpsProxyOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setQuicOverrideTargetHttpsProxyOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setSslCertificatesTargetHttpsProxyOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setSslPolicyTargetHttpsProxyOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setUrlMapTargetHttpsProxyOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -481,16 +718,28 @@ protected Builder(TargetHttpsProxyStubSettings settings) {
       super(settings);
 
       deleteTargetHttpsProxySettings = settings.deleteTargetHttpsProxySettings.toBuilder();
+      deleteTargetHttpsProxyOperationSettings =
+          settings.deleteTargetHttpsProxyOperationSettings.toBuilder();
       getTargetHttpsProxySettings = settings.getTargetHttpsProxySettings.toBuilder();
       insertTargetHttpsProxySettings = settings.insertTargetHttpsProxySettings.toBuilder();
+      insertTargetHttpsProxyOperationSettings =
+          settings.insertTargetHttpsProxyOperationSettings.toBuilder();
       listTargetHttpsProxiesSettings = settings.listTargetHttpsProxiesSettings.toBuilder();
       setQuicOverrideTargetHttpsProxySettings =
           settings.setQuicOverrideTargetHttpsProxySettings.toBuilder();
+      setQuicOverrideTargetHttpsProxyOperationSettings =
+          settings.setQuicOverrideTargetHttpsProxyOperationSettings.toBuilder();
       setSslCertificatesTargetHttpsProxySettings =
           settings.setSslCertificatesTargetHttpsProxySettings.toBuilder();
+      setSslCertificatesTargetHttpsProxyOperationSettings =
+          settings.setSslCertificatesTargetHttpsProxyOperationSettings.toBuilder();
       setSslPolicyTargetHttpsProxySettings =
           settings.setSslPolicyTargetHttpsProxySettings.toBuilder();
+      setSslPolicyTargetHttpsProxyOperationSettings =
+          settings.setSslPolicyTargetHttpsProxyOperationSettings.toBuilder();
       setUrlMapTargetHttpsProxySettings = settings.setUrlMapTargetHttpsProxySettings.toBuilder();
+      setUrlMapTargetHttpsProxyOperationSettings =
+          settings.setUrlMapTargetHttpsProxyOperationSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
@@ -526,6 +775,14 @@ public Builder applyToAllUnaryMethods(
       return deleteTargetHttpsProxySettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteTargetHttpsProxy. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteTargetHttpsProxyOperationSettings() {
+      return deleteTargetHttpsProxyOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getTargetHttpsProxy. */
     public UnaryCallSettings.Builder
         getTargetHttpsProxySettings() {
@@ -538,6 +795,14 @@ public Builder applyToAllUnaryMethods(
       return insertTargetHttpsProxySettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertTargetHttpsProxy. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertTargetHttpsProxyOperationSettings() {
+      return insertTargetHttpsProxyOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listTargetHttpsProxies. */
     public PagedCallSettings.Builder<
             ListTargetHttpsProxiesHttpRequest,
@@ -553,6 +818,15 @@ public Builder applyToAllUnaryMethods(
       return setQuicOverrideTargetHttpsProxySettings;
     }
 
+    /** Returns the builder for the settings used for calls to setQuicOverrideTargetHttpsProxy. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetQuicOverrideTargetHttpsProxyHttpRequest, EmptyMessage, Operation>
+        setQuicOverrideTargetHttpsProxyOperationSettings() {
+      return setQuicOverrideTargetHttpsProxyOperationSettings;
+    }
+
     /**
      * Returns the builder for the settings used for calls to setSslCertificatesTargetHttpsProxy.
      */
@@ -561,18 +835,47 @@ public Builder applyToAllUnaryMethods(
       return setSslCertificatesTargetHttpsProxySettings;
     }
 
+    /**
+     * Returns the builder for the settings used for calls to setSslCertificatesTargetHttpsProxy.
+     */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetSslCertificatesTargetHttpsProxyHttpRequest, EmptyMessage, Operation>
+        setSslCertificatesTargetHttpsProxyOperationSettings() {
+      return setSslCertificatesTargetHttpsProxyOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to setSslPolicyTargetHttpsProxy. */
     public UnaryCallSettings.Builder
         setSslPolicyTargetHttpsProxySettings() {
       return setSslPolicyTargetHttpsProxySettings;
     }
 
+    /** Returns the builder for the settings used for calls to setSslPolicyTargetHttpsProxy. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetSslPolicyTargetHttpsProxyHttpRequest, EmptyMessage, Operation>
+        setSslPolicyTargetHttpsProxyOperationSettings() {
+      return setSslPolicyTargetHttpsProxyOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to setUrlMapTargetHttpsProxy. */
     public UnaryCallSettings.Builder
         setUrlMapTargetHttpsProxySettings() {
       return setUrlMapTargetHttpsProxySettings;
     }
 
+    /** Returns the builder for the settings used for calls to setUrlMapTargetHttpsProxy. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetUrlMapTargetHttpsProxyHttpRequest, EmptyMessage, Operation>
+        setUrlMapTargetHttpsProxyOperationSettings() {
+      return setUrlMapTargetHttpsProxyOperationSettings;
+    }
+
     @Override
     public TargetHttpsProxyStubSettings build() throws IOException {
       return new TargetHttpsProxyStubSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetInstanceStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetInstanceStub.java
index d57a48cfcc29..3e8183bb6fe7 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetInstanceStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetInstanceStub.java
@@ -20,6 +20,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.AggregatedListTargetInstancesHttpRequest;
 import com.google.cloud.compute.v1.DeleteTargetInstanceHttpRequest;
@@ -42,6 +44,11 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class TargetInstanceStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public ZoneOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
   @BetaApi
   public UnaryCallable<
           AggregatedListTargetInstancesHttpRequest, AggregatedListTargetInstancesPagedResponse>
@@ -57,6 +64,13 @@ public abstract class TargetInstanceStub implements BackgroundResource {
         "Not implemented: aggregatedListTargetInstancesCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteTargetInstanceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteTargetInstanceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteTargetInstanceCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteTargetInstanceCallable()");
@@ -67,6 +81,13 @@ public UnaryCallable getTargetInst
     throw new UnsupportedOperationException("Not implemented: getTargetInstanceCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertTargetInstanceOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: insertTargetInstanceOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertTargetInstanceCallable() {
     throw new UnsupportedOperationException("Not implemented: insertTargetInstanceCallable()");
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetInstanceStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetInstanceStubSettings.java
index ba1e2feb85bf..6d219294aeba 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetInstanceStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetInstanceStubSettings.java
@@ -24,13 +24,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -74,13 +79,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteTargetInstance to 30 seconds: + * example, to set the total timeout of getTargetInstance to 30 seconds: * *

  * 
  * TargetInstanceStubSettings.Builder targetInstanceSettingsBuilder =
  *     TargetInstanceStubSettings.newBuilder();
- * targetInstanceSettingsBuilder.deleteTargetInstanceSettings().getRetrySettings().toBuilder()
+ * targetInstanceSettingsBuilder.getTargetInstanceSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * TargetInstanceStubSettings targetInstanceSettings = targetInstanceSettingsBuilder.build();
  * 
@@ -107,10 +112,14 @@ public class TargetInstanceStubSettings extends StubSettings
       deleteTargetInstanceSettings;
+  private final OperationCallSettings
+      deleteTargetInstanceOperationSettings;
   private final UnaryCallSettings
       getTargetInstanceSettings;
   private final UnaryCallSettings
       insertTargetInstanceSettings;
+  private final OperationCallSettings
+      insertTargetInstanceOperationSettings;
   private final PagedCallSettings<
           ListTargetInstancesHttpRequest, TargetInstanceList, ListTargetInstancesPagedResponse>
       listTargetInstancesSettings;
@@ -130,6 +139,13 @@ public class TargetInstanceStubSettings extends StubSettings
+      deleteTargetInstanceOperationSettings() {
+    return deleteTargetInstanceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getTargetInstance. */
   public UnaryCallSettings
       getTargetInstanceSettings() {
@@ -142,6 +158,13 @@ public class TargetInstanceStubSettings extends StubSettings
+      insertTargetInstanceOperationSettings() {
+    return insertTargetInstanceOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listTargetInstances. */
   public PagedCallSettings<
           ListTargetInstancesHttpRequest, TargetInstanceList, ListTargetInstancesPagedResponse>
@@ -227,8 +250,12 @@ protected TargetInstanceStubSettings(Builder settingsBuilder) throws IOException
     aggregatedListTargetInstancesSettings =
         settingsBuilder.aggregatedListTargetInstancesSettings().build();
     deleteTargetInstanceSettings = settingsBuilder.deleteTargetInstanceSettings().build();
+    deleteTargetInstanceOperationSettings =
+        settingsBuilder.deleteTargetInstanceOperationSettings().build();
     getTargetInstanceSettings = settingsBuilder.getTargetInstanceSettings().build();
     insertTargetInstanceSettings = settingsBuilder.insertTargetInstanceSettings().build();
+    insertTargetInstanceOperationSettings =
+        settingsBuilder.insertTargetInstanceOperationSettings().build();
     listTargetInstancesSettings = settingsBuilder.listTargetInstancesSettings().build();
   }
 
@@ -387,10 +414,16 @@ public static class Builder extends StubSettings.Builder
         deleteTargetInstanceSettings;
+    private final OperationCallSettings.Builder<
+            DeleteTargetInstanceHttpRequest, EmptyMessage, Operation>
+        deleteTargetInstanceOperationSettings;
     private final UnaryCallSettings.Builder
         getTargetInstanceSettings;
     private final UnaryCallSettings.Builder
         insertTargetInstanceSettings;
+    private final OperationCallSettings.Builder<
+            InsertTargetInstanceHttpRequest, EmptyMessage, Operation>
+        insertTargetInstanceOperationSettings;
     private final PagedCallSettings.Builder<
             ListTargetInstancesHttpRequest, TargetInstanceList, ListTargetInstancesPagedResponse>
         listTargetInstancesSettings;
@@ -441,10 +474,14 @@ protected Builder(ClientContext clientContext) {
 
       deleteTargetInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteTargetInstanceOperationSettings = OperationCallSettings.newBuilder();
+
       getTargetInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertTargetInstanceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertTargetInstanceOperationSettings = OperationCallSettings.newBuilder();
+
       listTargetInstancesSettings =
           PagedCallSettings.newBuilder(LIST_TARGET_INSTANCES_PAGE_STR_FACT);
 
@@ -494,6 +531,48 @@ private static Builder initDefaults(Builder builder) {
           .listTargetInstancesSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteTargetInstanceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertTargetInstanceOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -504,8 +583,12 @@ protected Builder(TargetInstanceStubSettings settings) {
       aggregatedListTargetInstancesSettings =
           settings.aggregatedListTargetInstancesSettings.toBuilder();
       deleteTargetInstanceSettings = settings.deleteTargetInstanceSettings.toBuilder();
+      deleteTargetInstanceOperationSettings =
+          settings.deleteTargetInstanceOperationSettings.toBuilder();
       getTargetInstanceSettings = settings.getTargetInstanceSettings.toBuilder();
       insertTargetInstanceSettings = settings.insertTargetInstanceSettings.toBuilder();
+      insertTargetInstanceOperationSettings =
+          settings.insertTargetInstanceOperationSettings.toBuilder();
       listTargetInstancesSettings = settings.listTargetInstancesSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
@@ -548,6 +631,14 @@ public Builder applyToAllUnaryMethods(
       return deleteTargetInstanceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteTargetInstance. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteTargetInstanceOperationSettings() {
+      return deleteTargetInstanceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getTargetInstance. */
     public UnaryCallSettings.Builder
         getTargetInstanceSettings() {
@@ -560,6 +651,14 @@ public Builder applyToAllUnaryMethods(
       return insertTargetInstanceSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertTargetInstance. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertTargetInstanceOperationSettings() {
+      return insertTargetInstanceOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listTargetInstances. */
     public PagedCallSettings.Builder<
             ListTargetInstancesHttpRequest, TargetInstanceList, ListTargetInstancesPagedResponse>
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetPoolStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetPoolStub.java
index cc0b3a9fe79e..c59d5f466476 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetPoolStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetPoolStub.java
@@ -20,6 +20,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.AddHealthCheckTargetPoolHttpRequest;
 import com.google.cloud.compute.v1.AddInstanceTargetPoolHttpRequest;
@@ -49,12 +51,31 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class TargetPoolStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public RegionOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      addHealthCheckTargetPoolOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: addHealthCheckTargetPoolOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       addHealthCheckTargetPoolCallable() {
     throw new UnsupportedOperationException("Not implemented: addHealthCheckTargetPoolCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      addInstanceTargetPoolOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: addInstanceTargetPoolOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       addInstanceTargetPoolCallable() {
@@ -74,6 +95,12 @@ public abstract class TargetPoolStub implements BackgroundResource {
     throw new UnsupportedOperationException("Not implemented: aggregatedListTargetPoolsCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteTargetPoolOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: deleteTargetPoolOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteTargetPoolCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteTargetPoolCallable()");
@@ -90,6 +117,12 @@ public UnaryCallable getTargetPoolCallable
     throw new UnsupportedOperationException("Not implemented: getHealthTargetPoolCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertTargetPoolOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: insertTargetPoolOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertTargetPoolCallable() {
     throw new UnsupportedOperationException("Not implemented: insertTargetPoolCallable()");
@@ -106,6 +139,13 @@ public UnaryCallable listTargetPools
     throw new UnsupportedOperationException("Not implemented: listTargetPoolsCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      removeHealthCheckTargetPoolOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: removeHealthCheckTargetPoolOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       removeHealthCheckTargetPoolCallable() {
@@ -113,12 +153,26 @@ public UnaryCallable listTargetPools
         "Not implemented: removeHealthCheckTargetPoolCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      removeInstanceTargetPoolOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: removeInstanceTargetPoolOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       removeInstanceTargetPoolCallable() {
     throw new UnsupportedOperationException("Not implemented: removeInstanceTargetPoolCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setBackupTargetPoolOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setBackupTargetPoolOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable setBackupTargetPoolCallable() {
     throw new UnsupportedOperationException("Not implemented: setBackupTargetPoolCallable()");
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetPoolStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetPoolStubSettings.java
index 604bea73078c..76df540c22b6 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetPoolStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetPoolStubSettings.java
@@ -24,13 +24,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -81,13 +86,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of addHealthCheckTargetPool to 30 seconds: + * example, to set the total timeout of getTargetPool to 30 seconds: * *

  * 
  * TargetPoolStubSettings.Builder targetPoolSettingsBuilder =
  *     TargetPoolStubSettings.newBuilder();
- * targetPoolSettingsBuilder.addHealthCheckTargetPoolSettings().getRetrySettings().toBuilder()
+ * targetPoolSettingsBuilder.getTargetPoolSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * TargetPoolStubSettings targetPoolSettings = targetPoolSettingsBuilder.build();
  * 
@@ -109,27 +114,42 @@ public class TargetPoolStubSettings extends StubSettings
 
   private final UnaryCallSettings
       addHealthCheckTargetPoolSettings;
+  private final OperationCallSettings
+      addHealthCheckTargetPoolOperationSettings;
   private final UnaryCallSettings
       addInstanceTargetPoolSettings;
+  private final OperationCallSettings
+      addInstanceTargetPoolOperationSettings;
   private final PagedCallSettings<
           AggregatedListTargetPoolsHttpRequest,
           TargetPoolAggregatedList,
           AggregatedListTargetPoolsPagedResponse>
       aggregatedListTargetPoolsSettings;
   private final UnaryCallSettings deleteTargetPoolSettings;
+  private final OperationCallSettings
+      deleteTargetPoolOperationSettings;
   private final UnaryCallSettings getTargetPoolSettings;
   private final UnaryCallSettings
       getHealthTargetPoolSettings;
   private final UnaryCallSettings insertTargetPoolSettings;
+  private final OperationCallSettings
+      insertTargetPoolOperationSettings;
   private final PagedCallSettings<
           ListTargetPoolsHttpRequest, TargetPoolList, ListTargetPoolsPagedResponse>
       listTargetPoolsSettings;
   private final UnaryCallSettings
       removeHealthCheckTargetPoolSettings;
+  private final OperationCallSettings<
+          RemoveHealthCheckTargetPoolHttpRequest, EmptyMessage, Operation>
+      removeHealthCheckTargetPoolOperationSettings;
   private final UnaryCallSettings
       removeInstanceTargetPoolSettings;
+  private final OperationCallSettings
+      removeInstanceTargetPoolOperationSettings;
   private final UnaryCallSettings
       setBackupTargetPoolSettings;
+  private final OperationCallSettings
+      setBackupTargetPoolOperationSettings;
 
   /** Returns the object with the settings used for calls to addHealthCheckTargetPool. */
   public UnaryCallSettings
@@ -137,12 +157,26 @@ public class TargetPoolStubSettings extends StubSettings
     return addHealthCheckTargetPoolSettings;
   }
 
+  /** Returns the object with the settings used for calls to addHealthCheckTargetPool. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      addHealthCheckTargetPoolOperationSettings() {
+    return addHealthCheckTargetPoolOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to addInstanceTargetPool. */
   public UnaryCallSettings
       addInstanceTargetPoolSettings() {
     return addInstanceTargetPoolSettings;
   }
 
+  /** Returns the object with the settings used for calls to addInstanceTargetPool. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      addInstanceTargetPoolOperationSettings() {
+    return addInstanceTargetPoolOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to aggregatedListTargetPools. */
   public PagedCallSettings<
           AggregatedListTargetPoolsHttpRequest,
@@ -157,6 +191,13 @@ public UnaryCallSettings deleteTargetPoo
     return deleteTargetPoolSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteTargetPool. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteTargetPoolOperationSettings() {
+    return deleteTargetPoolOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getTargetPool. */
   public UnaryCallSettings getTargetPoolSettings() {
     return getTargetPoolSettings;
@@ -173,6 +214,13 @@ public UnaryCallSettings insertTargetPoo
     return insertTargetPoolSettings;
   }
 
+  /** Returns the object with the settings used for calls to insertTargetPool. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertTargetPoolOperationSettings() {
+    return insertTargetPoolOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listTargetPools. */
   public PagedCallSettings
       listTargetPoolsSettings() {
@@ -185,18 +233,39 @@ public UnaryCallSettings insertTargetPoo
     return removeHealthCheckTargetPoolSettings;
   }
 
+  /** Returns the object with the settings used for calls to removeHealthCheckTargetPool. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      removeHealthCheckTargetPoolOperationSettings() {
+    return removeHealthCheckTargetPoolOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to removeInstanceTargetPool. */
   public UnaryCallSettings
       removeInstanceTargetPoolSettings() {
     return removeInstanceTargetPoolSettings;
   }
 
+  /** Returns the object with the settings used for calls to removeInstanceTargetPool. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      removeInstanceTargetPoolOperationSettings() {
+    return removeInstanceTargetPoolOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to setBackupTargetPool. */
   public UnaryCallSettings
       setBackupTargetPoolSettings() {
     return setBackupTargetPoolSettings;
   }
 
+  /** Returns the object with the settings used for calls to setBackupTargetPool. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setBackupTargetPoolOperationSettings() {
+    return setBackupTargetPoolOperationSettings;
+  }
+
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   public TargetPoolStub createStub() throws IOException {
     if (getTransportChannelProvider()
@@ -273,17 +342,29 @@ protected TargetPoolStubSettings(Builder settingsBuilder) throws IOException {
     super(settingsBuilder);
 
     addHealthCheckTargetPoolSettings = settingsBuilder.addHealthCheckTargetPoolSettings().build();
+    addHealthCheckTargetPoolOperationSettings =
+        settingsBuilder.addHealthCheckTargetPoolOperationSettings().build();
     addInstanceTargetPoolSettings = settingsBuilder.addInstanceTargetPoolSettings().build();
+    addInstanceTargetPoolOperationSettings =
+        settingsBuilder.addInstanceTargetPoolOperationSettings().build();
     aggregatedListTargetPoolsSettings = settingsBuilder.aggregatedListTargetPoolsSettings().build();
     deleteTargetPoolSettings = settingsBuilder.deleteTargetPoolSettings().build();
+    deleteTargetPoolOperationSettings = settingsBuilder.deleteTargetPoolOperationSettings().build();
     getTargetPoolSettings = settingsBuilder.getTargetPoolSettings().build();
     getHealthTargetPoolSettings = settingsBuilder.getHealthTargetPoolSettings().build();
     insertTargetPoolSettings = settingsBuilder.insertTargetPoolSettings().build();
+    insertTargetPoolOperationSettings = settingsBuilder.insertTargetPoolOperationSettings().build();
     listTargetPoolsSettings = settingsBuilder.listTargetPoolsSettings().build();
     removeHealthCheckTargetPoolSettings =
         settingsBuilder.removeHealthCheckTargetPoolSettings().build();
+    removeHealthCheckTargetPoolOperationSettings =
+        settingsBuilder.removeHealthCheckTargetPoolOperationSettings().build();
     removeInstanceTargetPoolSettings = settingsBuilder.removeInstanceTargetPoolSettings().build();
+    removeInstanceTargetPoolOperationSettings =
+        settingsBuilder.removeInstanceTargetPoolOperationSettings().build();
     setBackupTargetPoolSettings = settingsBuilder.setBackupTargetPoolSettings().build();
+    setBackupTargetPoolOperationSettings =
+        settingsBuilder.setBackupTargetPoolOperationSettings().build();
   }
 
   private static final PagedListDescriptor<
@@ -422,8 +503,14 @@ public static class Builder extends StubSettings.Builder
         addHealthCheckTargetPoolSettings;
+    private final OperationCallSettings.Builder<
+            AddHealthCheckTargetPoolHttpRequest, EmptyMessage, Operation>
+        addHealthCheckTargetPoolOperationSettings;
     private final UnaryCallSettings.Builder
         addInstanceTargetPoolSettings;
+    private final OperationCallSettings.Builder<
+            AddInstanceTargetPoolHttpRequest, EmptyMessage, Operation>
+        addInstanceTargetPoolOperationSettings;
     private final PagedCallSettings.Builder<
             AggregatedListTargetPoolsHttpRequest,
             TargetPoolAggregatedList,
@@ -431,6 +518,9 @@ public static class Builder extends StubSettings.Builder
         deleteTargetPoolSettings;
+    private final OperationCallSettings.Builder<
+            DeleteTargetPoolHttpRequest, EmptyMessage, Operation>
+        deleteTargetPoolOperationSettings;
     private final UnaryCallSettings.Builder
         getTargetPoolSettings;
     private final UnaryCallSettings.Builder<
@@ -438,15 +528,27 @@ public static class Builder extends StubSettings.Builder
         insertTargetPoolSettings;
+    private final OperationCallSettings.Builder<
+            InsertTargetPoolHttpRequest, EmptyMessage, Operation>
+        insertTargetPoolOperationSettings;
     private final PagedCallSettings.Builder<
             ListTargetPoolsHttpRequest, TargetPoolList, ListTargetPoolsPagedResponse>
         listTargetPoolsSettings;
     private final UnaryCallSettings.Builder
         removeHealthCheckTargetPoolSettings;
+    private final OperationCallSettings.Builder<
+            RemoveHealthCheckTargetPoolHttpRequest, EmptyMessage, Operation>
+        removeHealthCheckTargetPoolOperationSettings;
     private final UnaryCallSettings.Builder
         removeInstanceTargetPoolSettings;
+    private final OperationCallSettings.Builder<
+            RemoveInstanceTargetPoolHttpRequest, EmptyMessage, Operation>
+        removeInstanceTargetPoolOperationSettings;
     private final UnaryCallSettings.Builder
         setBackupTargetPoolSettings;
+    private final OperationCallSettings.Builder<
+            SetBackupTargetPoolHttpRequest, EmptyMessage, Operation>
+        setBackupTargetPoolOperationSettings;
 
     private static final ImmutableMap>
         RETRYABLE_CODE_DEFINITIONS;
@@ -491,27 +593,41 @@ protected Builder(ClientContext clientContext) {
 
       addHealthCheckTargetPoolSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      addHealthCheckTargetPoolOperationSettings = OperationCallSettings.newBuilder();
+
       addInstanceTargetPoolSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      addInstanceTargetPoolOperationSettings = OperationCallSettings.newBuilder();
+
       aggregatedListTargetPoolsSettings =
           PagedCallSettings.newBuilder(AGGREGATED_LIST_TARGET_POOLS_PAGE_STR_FACT);
 
       deleteTargetPoolSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteTargetPoolOperationSettings = OperationCallSettings.newBuilder();
+
       getTargetPoolSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       getHealthTargetPoolSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertTargetPoolSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertTargetPoolOperationSettings = OperationCallSettings.newBuilder();
+
       listTargetPoolsSettings = PagedCallSettings.newBuilder(LIST_TARGET_POOLS_PAGE_STR_FACT);
 
       removeHealthCheckTargetPoolSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      removeHealthCheckTargetPoolOperationSettings = OperationCallSettings.newBuilder();
+
       removeInstanceTargetPoolSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      removeInstanceTargetPoolOperationSettings = OperationCallSettings.newBuilder();
+
       setBackupTargetPoolSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setBackupTargetPoolOperationSettings = OperationCallSettings.newBuilder();
+
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
               addHealthCheckTargetPoolSettings,
@@ -594,6 +710,157 @@ private static Builder initDefaults(Builder builder) {
           .setBackupTargetPoolSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .addHealthCheckTargetPoolOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .addInstanceTargetPoolOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .deleteTargetPoolOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertTargetPoolOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .removeHealthCheckTargetPoolOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .removeInstanceTargetPoolOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setBackupTargetPoolOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -602,17 +869,29 @@ protected Builder(TargetPoolStubSettings settings) {
       super(settings);
 
       addHealthCheckTargetPoolSettings = settings.addHealthCheckTargetPoolSettings.toBuilder();
+      addHealthCheckTargetPoolOperationSettings =
+          settings.addHealthCheckTargetPoolOperationSettings.toBuilder();
       addInstanceTargetPoolSettings = settings.addInstanceTargetPoolSettings.toBuilder();
+      addInstanceTargetPoolOperationSettings =
+          settings.addInstanceTargetPoolOperationSettings.toBuilder();
       aggregatedListTargetPoolsSettings = settings.aggregatedListTargetPoolsSettings.toBuilder();
       deleteTargetPoolSettings = settings.deleteTargetPoolSettings.toBuilder();
+      deleteTargetPoolOperationSettings = settings.deleteTargetPoolOperationSettings.toBuilder();
       getTargetPoolSettings = settings.getTargetPoolSettings.toBuilder();
       getHealthTargetPoolSettings = settings.getHealthTargetPoolSettings.toBuilder();
       insertTargetPoolSettings = settings.insertTargetPoolSettings.toBuilder();
+      insertTargetPoolOperationSettings = settings.insertTargetPoolOperationSettings.toBuilder();
       listTargetPoolsSettings = settings.listTargetPoolsSettings.toBuilder();
       removeHealthCheckTargetPoolSettings =
           settings.removeHealthCheckTargetPoolSettings.toBuilder();
+      removeHealthCheckTargetPoolOperationSettings =
+          settings.removeHealthCheckTargetPoolOperationSettings.toBuilder();
       removeInstanceTargetPoolSettings = settings.removeInstanceTargetPoolSettings.toBuilder();
+      removeInstanceTargetPoolOperationSettings =
+          settings.removeInstanceTargetPoolOperationSettings.toBuilder();
       setBackupTargetPoolSettings = settings.setBackupTargetPoolSettings.toBuilder();
+      setBackupTargetPoolOperationSettings =
+          settings.setBackupTargetPoolOperationSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
@@ -651,12 +930,29 @@ public Builder applyToAllUnaryMethods(
       return addHealthCheckTargetPoolSettings;
     }
 
+    /** Returns the builder for the settings used for calls to addHealthCheckTargetPool. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            AddHealthCheckTargetPoolHttpRequest, EmptyMessage, Operation>
+        addHealthCheckTargetPoolOperationSettings() {
+      return addHealthCheckTargetPoolOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to addInstanceTargetPool. */
     public UnaryCallSettings.Builder
         addInstanceTargetPoolSettings() {
       return addInstanceTargetPoolSettings;
     }
 
+    /** Returns the builder for the settings used for calls to addInstanceTargetPool. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        addInstanceTargetPoolOperationSettings() {
+      return addInstanceTargetPoolOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to aggregatedListTargetPools. */
     public PagedCallSettings.Builder<
             AggregatedListTargetPoolsHttpRequest,
@@ -672,6 +968,14 @@ public Builder applyToAllUnaryMethods(
       return deleteTargetPoolSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteTargetPool. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteTargetPoolOperationSettings() {
+      return deleteTargetPoolOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getTargetPool. */
     public UnaryCallSettings.Builder getTargetPoolSettings() {
       return getTargetPoolSettings;
@@ -689,6 +993,14 @@ public UnaryCallSettings.Builder getTarget
       return insertTargetPoolSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertTargetPool. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertTargetPoolOperationSettings() {
+      return insertTargetPoolOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listTargetPools. */
     public PagedCallSettings.Builder<
             ListTargetPoolsHttpRequest, TargetPoolList, ListTargetPoolsPagedResponse>
@@ -702,18 +1014,44 @@ public UnaryCallSettings.Builder getTarget
       return removeHealthCheckTargetPoolSettings;
     }
 
+    /** Returns the builder for the settings used for calls to removeHealthCheckTargetPool. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            RemoveHealthCheckTargetPoolHttpRequest, EmptyMessage, Operation>
+        removeHealthCheckTargetPoolOperationSettings() {
+      return removeHealthCheckTargetPoolOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to removeInstanceTargetPool. */
     public UnaryCallSettings.Builder
         removeInstanceTargetPoolSettings() {
       return removeInstanceTargetPoolSettings;
     }
 
+    /** Returns the builder for the settings used for calls to removeInstanceTargetPool. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            RemoveInstanceTargetPoolHttpRequest, EmptyMessage, Operation>
+        removeInstanceTargetPoolOperationSettings() {
+      return removeInstanceTargetPoolOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to setBackupTargetPool. */
     public UnaryCallSettings.Builder
         setBackupTargetPoolSettings() {
       return setBackupTargetPoolSettings;
     }
 
+    /** Returns the builder for the settings used for calls to setBackupTargetPool. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        setBackupTargetPoolOperationSettings() {
+      return setBackupTargetPoolOperationSettings;
+    }
+
     @Override
     public TargetPoolStubSettings build() throws IOException {
       return new TargetPoolStubSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetSslProxyStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetSslProxyStub.java
index e08d1a566eac..8a179ee11ef3 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetSslProxyStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetSslProxyStub.java
@@ -19,6 +19,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.DeleteTargetSslProxyHttpRequest;
 import com.google.cloud.compute.v1.GetTargetSslProxyHttpRequest;
@@ -43,6 +45,18 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class TargetSslProxyStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public GlobalOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteTargetSslProxyOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteTargetSslProxyOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteTargetSslProxyCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteTargetSslProxyCallable()");
@@ -53,6 +67,13 @@ public UnaryCallable getTargetSslP
     throw new UnsupportedOperationException("Not implemented: getTargetSslProxyCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertTargetSslProxyOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: insertTargetSslProxyOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertTargetSslProxyCallable() {
     throw new UnsupportedOperationException("Not implemented: insertTargetSslProxyCallable()");
@@ -70,6 +91,13 @@ public UnaryCallable insertTargetSsl
     throw new UnsupportedOperationException("Not implemented: listTargetSslProxiesCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setBackendServiceTargetSslProxyOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setBackendServiceTargetSslProxyOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setBackendServiceTargetSslProxyCallable() {
@@ -77,6 +105,13 @@ public UnaryCallable insertTargetSsl
         "Not implemented: setBackendServiceTargetSslProxyCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setProxyHeaderTargetSslProxyOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setProxyHeaderTargetSslProxyOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setProxyHeaderTargetSslProxyCallable() {
@@ -84,6 +119,13 @@ public UnaryCallable insertTargetSsl
         "Not implemented: setProxyHeaderTargetSslProxyCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setSslCertificatesTargetSslProxyOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setSslCertificatesTargetSslProxyOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setSslCertificatesTargetSslProxyCallable() {
@@ -91,6 +133,13 @@ public UnaryCallable insertTargetSsl
         "Not implemented: setSslCertificatesTargetSslProxyCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setSslPolicyTargetSslProxyOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setSslPolicyTargetSslProxyOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setSslPolicyTargetSslProxyCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetSslProxyStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetSslProxyStubSettings.java
index 8bd70734100d..dc374f451c60 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetSslProxyStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetSslProxyStubSettings.java
@@ -23,13 +23,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -74,13 +79,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteTargetSslProxy to 30 seconds: + * example, to set the total timeout of getTargetSslProxy to 30 seconds: * *

  * 
  * TargetSslProxyStubSettings.Builder targetSslProxySettingsBuilder =
  *     TargetSslProxyStubSettings.newBuilder();
- * targetSslProxySettingsBuilder.deleteTargetSslProxySettings().getRetrySettings().toBuilder()
+ * targetSslProxySettingsBuilder.getTargetSslProxySettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * TargetSslProxyStubSettings targetSslProxySettings = targetSslProxySettingsBuilder.build();
  * 
@@ -102,21 +107,37 @@ public class TargetSslProxyStubSettings extends StubSettings
       deleteTargetSslProxySettings;
+  private final OperationCallSettings
+      deleteTargetSslProxyOperationSettings;
   private final UnaryCallSettings
       getTargetSslProxySettings;
   private final UnaryCallSettings
       insertTargetSslProxySettings;
+  private final OperationCallSettings
+      insertTargetSslProxyOperationSettings;
   private final PagedCallSettings<
           ListTargetSslProxiesHttpRequest, TargetSslProxyList, ListTargetSslProxiesPagedResponse>
       listTargetSslProxiesSettings;
   private final UnaryCallSettings
       setBackendServiceTargetSslProxySettings;
+  private final OperationCallSettings<
+          SetBackendServiceTargetSslProxyHttpRequest, EmptyMessage, Operation>
+      setBackendServiceTargetSslProxyOperationSettings;
   private final UnaryCallSettings
       setProxyHeaderTargetSslProxySettings;
+  private final OperationCallSettings<
+          SetProxyHeaderTargetSslProxyHttpRequest, EmptyMessage, Operation>
+      setProxyHeaderTargetSslProxyOperationSettings;
   private final UnaryCallSettings
       setSslCertificatesTargetSslProxySettings;
+  private final OperationCallSettings<
+          SetSslCertificatesTargetSslProxyHttpRequest, EmptyMessage, Operation>
+      setSslCertificatesTargetSslProxyOperationSettings;
   private final UnaryCallSettings
       setSslPolicyTargetSslProxySettings;
+  private final OperationCallSettings<
+          SetSslPolicyTargetSslProxyHttpRequest, EmptyMessage, Operation>
+      setSslPolicyTargetSslProxyOperationSettings;
 
   /** Returns the object with the settings used for calls to deleteTargetSslProxy. */
   public UnaryCallSettings
@@ -124,6 +145,13 @@ public class TargetSslProxyStubSettings extends StubSettings
+      deleteTargetSslProxyOperationSettings() {
+    return deleteTargetSslProxyOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getTargetSslProxy. */
   public UnaryCallSettings
       getTargetSslProxySettings() {
@@ -136,6 +164,13 @@ public class TargetSslProxyStubSettings extends StubSettings
+      insertTargetSslProxyOperationSettings() {
+    return insertTargetSslProxyOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listTargetSslProxies. */
   public PagedCallSettings<
           ListTargetSslProxiesHttpRequest, TargetSslProxyList, ListTargetSslProxiesPagedResponse>
@@ -149,24 +184,52 @@ public class TargetSslProxyStubSettings extends StubSettings
+      setBackendServiceTargetSslProxyOperationSettings() {
+    return setBackendServiceTargetSslProxyOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to setProxyHeaderTargetSslProxy. */
   public UnaryCallSettings
       setProxyHeaderTargetSslProxySettings() {
     return setProxyHeaderTargetSslProxySettings;
   }
 
+  /** Returns the object with the settings used for calls to setProxyHeaderTargetSslProxy. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setProxyHeaderTargetSslProxyOperationSettings() {
+    return setProxyHeaderTargetSslProxyOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to setSslCertificatesTargetSslProxy. */
   public UnaryCallSettings
       setSslCertificatesTargetSslProxySettings() {
     return setSslCertificatesTargetSslProxySettings;
   }
 
+  /** Returns the object with the settings used for calls to setSslCertificatesTargetSslProxy. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setSslCertificatesTargetSslProxyOperationSettings() {
+    return setSslCertificatesTargetSslProxyOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to setSslPolicyTargetSslProxy. */
   public UnaryCallSettings
       setSslPolicyTargetSslProxySettings() {
     return setSslPolicyTargetSslProxySettings;
   }
 
+  /** Returns the object with the settings used for calls to setSslPolicyTargetSslProxy. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setSslPolicyTargetSslProxyOperationSettings() {
+    return setSslPolicyTargetSslProxyOperationSettings;
+  }
+
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   public TargetSslProxyStub createStub() throws IOException {
     if (getTransportChannelProvider()
@@ -243,17 +306,29 @@ protected TargetSslProxyStubSettings(Builder settingsBuilder) throws IOException
     super(settingsBuilder);
 
     deleteTargetSslProxySettings = settingsBuilder.deleteTargetSslProxySettings().build();
+    deleteTargetSslProxyOperationSettings =
+        settingsBuilder.deleteTargetSslProxyOperationSettings().build();
     getTargetSslProxySettings = settingsBuilder.getTargetSslProxySettings().build();
     insertTargetSslProxySettings = settingsBuilder.insertTargetSslProxySettings().build();
+    insertTargetSslProxyOperationSettings =
+        settingsBuilder.insertTargetSslProxyOperationSettings().build();
     listTargetSslProxiesSettings = settingsBuilder.listTargetSslProxiesSettings().build();
     setBackendServiceTargetSslProxySettings =
         settingsBuilder.setBackendServiceTargetSslProxySettings().build();
+    setBackendServiceTargetSslProxyOperationSettings =
+        settingsBuilder.setBackendServiceTargetSslProxyOperationSettings().build();
     setProxyHeaderTargetSslProxySettings =
         settingsBuilder.setProxyHeaderTargetSslProxySettings().build();
+    setProxyHeaderTargetSslProxyOperationSettings =
+        settingsBuilder.setProxyHeaderTargetSslProxyOperationSettings().build();
     setSslCertificatesTargetSslProxySettings =
         settingsBuilder.setSslCertificatesTargetSslProxySettings().build();
+    setSslCertificatesTargetSslProxyOperationSettings =
+        settingsBuilder.setSslCertificatesTargetSslProxyOperationSettings().build();
     setSslPolicyTargetSslProxySettings =
         settingsBuilder.setSslPolicyTargetSslProxySettings().build();
+    setSslPolicyTargetSslProxyOperationSettings =
+        settingsBuilder.setSslPolicyTargetSslProxyOperationSettings().build();
   }
 
   private static final PagedListDescriptor<
@@ -327,21 +402,39 @@ public static class Builder extends StubSettings.Builder
         deleteTargetSslProxySettings;
+    private final OperationCallSettings.Builder<
+            DeleteTargetSslProxyHttpRequest, EmptyMessage, Operation>
+        deleteTargetSslProxyOperationSettings;
     private final UnaryCallSettings.Builder
         getTargetSslProxySettings;
     private final UnaryCallSettings.Builder
         insertTargetSslProxySettings;
+    private final OperationCallSettings.Builder<
+            InsertTargetSslProxyHttpRequest, EmptyMessage, Operation>
+        insertTargetSslProxyOperationSettings;
     private final PagedCallSettings.Builder<
             ListTargetSslProxiesHttpRequest, TargetSslProxyList, ListTargetSslProxiesPagedResponse>
         listTargetSslProxiesSettings;
     private final UnaryCallSettings.Builder
         setBackendServiceTargetSslProxySettings;
+    private final OperationCallSettings.Builder<
+            SetBackendServiceTargetSslProxyHttpRequest, EmptyMessage, Operation>
+        setBackendServiceTargetSslProxyOperationSettings;
     private final UnaryCallSettings.Builder
         setProxyHeaderTargetSslProxySettings;
+    private final OperationCallSettings.Builder<
+            SetProxyHeaderTargetSslProxyHttpRequest, EmptyMessage, Operation>
+        setProxyHeaderTargetSslProxyOperationSettings;
     private final UnaryCallSettings.Builder
         setSslCertificatesTargetSslProxySettings;
+    private final OperationCallSettings.Builder<
+            SetSslCertificatesTargetSslProxyHttpRequest, EmptyMessage, Operation>
+        setSslCertificatesTargetSslProxyOperationSettings;
     private final UnaryCallSettings.Builder
         setSslPolicyTargetSslProxySettings;
+    private final OperationCallSettings.Builder<
+            SetSslPolicyTargetSslProxyHttpRequest, EmptyMessage, Operation>
+        setSslPolicyTargetSslProxyOperationSettings;
 
     private static final ImmutableMap>
         RETRYABLE_CODE_DEFINITIONS;
@@ -386,21 +479,33 @@ protected Builder(ClientContext clientContext) {
 
       deleteTargetSslProxySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteTargetSslProxyOperationSettings = OperationCallSettings.newBuilder();
+
       getTargetSslProxySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertTargetSslProxySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertTargetSslProxyOperationSettings = OperationCallSettings.newBuilder();
+
       listTargetSslProxiesSettings =
           PagedCallSettings.newBuilder(LIST_TARGET_SSL_PROXIES_PAGE_STR_FACT);
 
       setBackendServiceTargetSslProxySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setBackendServiceTargetSslProxyOperationSettings = OperationCallSettings.newBuilder();
+
       setProxyHeaderTargetSslProxySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setProxyHeaderTargetSslProxyOperationSettings = OperationCallSettings.newBuilder();
+
       setSslCertificatesTargetSslProxySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setSslCertificatesTargetSslProxyOperationSettings = OperationCallSettings.newBuilder();
+
       setSslPolicyTargetSslProxySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setSslPolicyTargetSslProxyOperationSettings = OperationCallSettings.newBuilder();
+
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
               deleteTargetSslProxySettings,
@@ -465,6 +570,136 @@ private static Builder initDefaults(Builder builder) {
           .setSslPolicyTargetSslProxySettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteTargetSslProxyOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertTargetSslProxyOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setBackendServiceTargetSslProxyOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setProxyHeaderTargetSslProxyOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setSslCertificatesTargetSslProxyOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setSslPolicyTargetSslProxyOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -473,16 +708,28 @@ protected Builder(TargetSslProxyStubSettings settings) {
       super(settings);
 
       deleteTargetSslProxySettings = settings.deleteTargetSslProxySettings.toBuilder();
+      deleteTargetSslProxyOperationSettings =
+          settings.deleteTargetSslProxyOperationSettings.toBuilder();
       getTargetSslProxySettings = settings.getTargetSslProxySettings.toBuilder();
       insertTargetSslProxySettings = settings.insertTargetSslProxySettings.toBuilder();
+      insertTargetSslProxyOperationSettings =
+          settings.insertTargetSslProxyOperationSettings.toBuilder();
       listTargetSslProxiesSettings = settings.listTargetSslProxiesSettings.toBuilder();
       setBackendServiceTargetSslProxySettings =
           settings.setBackendServiceTargetSslProxySettings.toBuilder();
+      setBackendServiceTargetSslProxyOperationSettings =
+          settings.setBackendServiceTargetSslProxyOperationSettings.toBuilder();
       setProxyHeaderTargetSslProxySettings =
           settings.setProxyHeaderTargetSslProxySettings.toBuilder();
+      setProxyHeaderTargetSslProxyOperationSettings =
+          settings.setProxyHeaderTargetSslProxyOperationSettings.toBuilder();
       setSslCertificatesTargetSslProxySettings =
           settings.setSslCertificatesTargetSslProxySettings.toBuilder();
+      setSslCertificatesTargetSslProxyOperationSettings =
+          settings.setSslCertificatesTargetSslProxyOperationSettings.toBuilder();
       setSslPolicyTargetSslProxySettings = settings.setSslPolicyTargetSslProxySettings.toBuilder();
+      setSslPolicyTargetSslProxyOperationSettings =
+          settings.setSslPolicyTargetSslProxyOperationSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
@@ -518,6 +765,14 @@ public Builder applyToAllUnaryMethods(
       return deleteTargetSslProxySettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteTargetSslProxy. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteTargetSslProxyOperationSettings() {
+      return deleteTargetSslProxyOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getTargetSslProxy. */
     public UnaryCallSettings.Builder
         getTargetSslProxySettings() {
@@ -530,6 +785,14 @@ public Builder applyToAllUnaryMethods(
       return insertTargetSslProxySettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertTargetSslProxy. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertTargetSslProxyOperationSettings() {
+      return insertTargetSslProxyOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listTargetSslProxies. */
     public PagedCallSettings.Builder<
             ListTargetSslProxiesHttpRequest, TargetSslProxyList, ListTargetSslProxiesPagedResponse>
@@ -543,24 +806,60 @@ public Builder applyToAllUnaryMethods(
       return setBackendServiceTargetSslProxySettings;
     }
 
+    /** Returns the builder for the settings used for calls to setBackendServiceTargetSslProxy. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetBackendServiceTargetSslProxyHttpRequest, EmptyMessage, Operation>
+        setBackendServiceTargetSslProxyOperationSettings() {
+      return setBackendServiceTargetSslProxyOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to setProxyHeaderTargetSslProxy. */
     public UnaryCallSettings.Builder
         setProxyHeaderTargetSslProxySettings() {
       return setProxyHeaderTargetSslProxySettings;
     }
 
+    /** Returns the builder for the settings used for calls to setProxyHeaderTargetSslProxy. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetProxyHeaderTargetSslProxyHttpRequest, EmptyMessage, Operation>
+        setProxyHeaderTargetSslProxyOperationSettings() {
+      return setProxyHeaderTargetSslProxyOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to setSslCertificatesTargetSslProxy. */
     public UnaryCallSettings.Builder
         setSslCertificatesTargetSslProxySettings() {
       return setSslCertificatesTargetSslProxySettings;
     }
 
+    /** Returns the builder for the settings used for calls to setSslCertificatesTargetSslProxy. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetSslCertificatesTargetSslProxyHttpRequest, EmptyMessage, Operation>
+        setSslCertificatesTargetSslProxyOperationSettings() {
+      return setSslCertificatesTargetSslProxyOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to setSslPolicyTargetSslProxy. */
     public UnaryCallSettings.Builder
         setSslPolicyTargetSslProxySettings() {
       return setSslPolicyTargetSslProxySettings;
     }
 
+    /** Returns the builder for the settings used for calls to setSslPolicyTargetSslProxy. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetSslPolicyTargetSslProxyHttpRequest, EmptyMessage, Operation>
+        setSslPolicyTargetSslProxyOperationSettings() {
+      return setSslPolicyTargetSslProxyOperationSettings;
+    }
+
     @Override
     public TargetSslProxyStubSettings build() throws IOException {
       return new TargetSslProxyStubSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetTcpProxyStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetTcpProxyStub.java
index c30a2026807d..47e67dff5a75 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetTcpProxyStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetTcpProxyStub.java
@@ -19,6 +19,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.DeleteTargetTcpProxyHttpRequest;
 import com.google.cloud.compute.v1.GetTargetTcpProxyHttpRequest;
@@ -41,6 +43,18 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class TargetTcpProxyStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public GlobalOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteTargetTcpProxyOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteTargetTcpProxyOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteTargetTcpProxyCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteTargetTcpProxyCallable()");
@@ -51,6 +65,13 @@ public UnaryCallable getTargetTcpP
     throw new UnsupportedOperationException("Not implemented: getTargetTcpProxyCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertTargetTcpProxyOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: insertTargetTcpProxyOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertTargetTcpProxyCallable() {
     throw new UnsupportedOperationException("Not implemented: insertTargetTcpProxyCallable()");
@@ -68,6 +89,13 @@ public UnaryCallable insertTargetTcp
     throw new UnsupportedOperationException("Not implemented: listTargetTcpProxiesCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setBackendServiceTargetTcpProxyOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setBackendServiceTargetTcpProxyOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setBackendServiceTargetTcpProxyCallable() {
@@ -75,6 +103,13 @@ public UnaryCallable insertTargetTcp
         "Not implemented: setBackendServiceTargetTcpProxyCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      setProxyHeaderTargetTcpProxyOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: setProxyHeaderTargetTcpProxyOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       setProxyHeaderTargetTcpProxyCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetTcpProxyStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetTcpProxyStubSettings.java
index 81e42575a183..e6abf0f61e60 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetTcpProxyStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetTcpProxyStubSettings.java
@@ -23,13 +23,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -72,13 +77,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteTargetTcpProxy to 30 seconds: + * example, to set the total timeout of getTargetTcpProxy to 30 seconds: * *

  * 
  * TargetTcpProxyStubSettings.Builder targetTcpProxySettingsBuilder =
  *     TargetTcpProxyStubSettings.newBuilder();
- * targetTcpProxySettingsBuilder.deleteTargetTcpProxySettings().getRetrySettings().toBuilder()
+ * targetTcpProxySettingsBuilder.getTargetTcpProxySettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * TargetTcpProxyStubSettings targetTcpProxySettings = targetTcpProxySettingsBuilder.build();
  * 
@@ -100,17 +105,27 @@ public class TargetTcpProxyStubSettings extends StubSettings
       deleteTargetTcpProxySettings;
+  private final OperationCallSettings
+      deleteTargetTcpProxyOperationSettings;
   private final UnaryCallSettings
       getTargetTcpProxySettings;
   private final UnaryCallSettings
       insertTargetTcpProxySettings;
+  private final OperationCallSettings
+      insertTargetTcpProxyOperationSettings;
   private final PagedCallSettings<
           ListTargetTcpProxiesHttpRequest, TargetTcpProxyList, ListTargetTcpProxiesPagedResponse>
       listTargetTcpProxiesSettings;
   private final UnaryCallSettings
       setBackendServiceTargetTcpProxySettings;
+  private final OperationCallSettings<
+          SetBackendServiceTargetTcpProxyHttpRequest, EmptyMessage, Operation>
+      setBackendServiceTargetTcpProxyOperationSettings;
   private final UnaryCallSettings
       setProxyHeaderTargetTcpProxySettings;
+  private final OperationCallSettings<
+          SetProxyHeaderTargetTcpProxyHttpRequest, EmptyMessage, Operation>
+      setProxyHeaderTargetTcpProxyOperationSettings;
 
   /** Returns the object with the settings used for calls to deleteTargetTcpProxy. */
   public UnaryCallSettings
@@ -118,6 +133,13 @@ public class TargetTcpProxyStubSettings extends StubSettings
+      deleteTargetTcpProxyOperationSettings() {
+    return deleteTargetTcpProxyOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getTargetTcpProxy. */
   public UnaryCallSettings
       getTargetTcpProxySettings() {
@@ -130,6 +152,13 @@ public class TargetTcpProxyStubSettings extends StubSettings
+      insertTargetTcpProxyOperationSettings() {
+    return insertTargetTcpProxyOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listTargetTcpProxies. */
   public PagedCallSettings<
           ListTargetTcpProxiesHttpRequest, TargetTcpProxyList, ListTargetTcpProxiesPagedResponse>
@@ -143,12 +172,26 @@ public class TargetTcpProxyStubSettings extends StubSettings
+      setBackendServiceTargetTcpProxyOperationSettings() {
+    return setBackendServiceTargetTcpProxyOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to setProxyHeaderTargetTcpProxy. */
   public UnaryCallSettings
       setProxyHeaderTargetTcpProxySettings() {
     return setProxyHeaderTargetTcpProxySettings;
   }
 
+  /** Returns the object with the settings used for calls to setProxyHeaderTargetTcpProxy. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      setProxyHeaderTargetTcpProxyOperationSettings() {
+    return setProxyHeaderTargetTcpProxyOperationSettings;
+  }
+
   @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
   public TargetTcpProxyStub createStub() throws IOException {
     if (getTransportChannelProvider()
@@ -225,13 +268,21 @@ protected TargetTcpProxyStubSettings(Builder settingsBuilder) throws IOException
     super(settingsBuilder);
 
     deleteTargetTcpProxySettings = settingsBuilder.deleteTargetTcpProxySettings().build();
+    deleteTargetTcpProxyOperationSettings =
+        settingsBuilder.deleteTargetTcpProxyOperationSettings().build();
     getTargetTcpProxySettings = settingsBuilder.getTargetTcpProxySettings().build();
     insertTargetTcpProxySettings = settingsBuilder.insertTargetTcpProxySettings().build();
+    insertTargetTcpProxyOperationSettings =
+        settingsBuilder.insertTargetTcpProxyOperationSettings().build();
     listTargetTcpProxiesSettings = settingsBuilder.listTargetTcpProxiesSettings().build();
     setBackendServiceTargetTcpProxySettings =
         settingsBuilder.setBackendServiceTargetTcpProxySettings().build();
+    setBackendServiceTargetTcpProxyOperationSettings =
+        settingsBuilder.setBackendServiceTargetTcpProxyOperationSettings().build();
     setProxyHeaderTargetTcpProxySettings =
         settingsBuilder.setProxyHeaderTargetTcpProxySettings().build();
+    setProxyHeaderTargetTcpProxyOperationSettings =
+        settingsBuilder.setProxyHeaderTargetTcpProxyOperationSettings().build();
   }
 
   private static final PagedListDescriptor<
@@ -305,17 +356,29 @@ public static class Builder extends StubSettings.Builder
         deleteTargetTcpProxySettings;
+    private final OperationCallSettings.Builder<
+            DeleteTargetTcpProxyHttpRequest, EmptyMessage, Operation>
+        deleteTargetTcpProxyOperationSettings;
     private final UnaryCallSettings.Builder
         getTargetTcpProxySettings;
     private final UnaryCallSettings.Builder
         insertTargetTcpProxySettings;
+    private final OperationCallSettings.Builder<
+            InsertTargetTcpProxyHttpRequest, EmptyMessage, Operation>
+        insertTargetTcpProxyOperationSettings;
     private final PagedCallSettings.Builder<
             ListTargetTcpProxiesHttpRequest, TargetTcpProxyList, ListTargetTcpProxiesPagedResponse>
         listTargetTcpProxiesSettings;
     private final UnaryCallSettings.Builder
         setBackendServiceTargetTcpProxySettings;
+    private final OperationCallSettings.Builder<
+            SetBackendServiceTargetTcpProxyHttpRequest, EmptyMessage, Operation>
+        setBackendServiceTargetTcpProxyOperationSettings;
     private final UnaryCallSettings.Builder
         setProxyHeaderTargetTcpProxySettings;
+    private final OperationCallSettings.Builder<
+            SetProxyHeaderTargetTcpProxyHttpRequest, EmptyMessage, Operation>
+        setProxyHeaderTargetTcpProxyOperationSettings;
 
     private static final ImmutableMap>
         RETRYABLE_CODE_DEFINITIONS;
@@ -360,17 +423,25 @@ protected Builder(ClientContext clientContext) {
 
       deleteTargetTcpProxySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteTargetTcpProxyOperationSettings = OperationCallSettings.newBuilder();
+
       getTargetTcpProxySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertTargetTcpProxySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertTargetTcpProxyOperationSettings = OperationCallSettings.newBuilder();
+
       listTargetTcpProxiesSettings =
           PagedCallSettings.newBuilder(LIST_TARGET_TCP_PROXIES_PAGE_STR_FACT);
 
       setBackendServiceTargetTcpProxySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setBackendServiceTargetTcpProxyOperationSettings = OperationCallSettings.newBuilder();
+
       setProxyHeaderTargetTcpProxySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      setProxyHeaderTargetTcpProxyOperationSettings = OperationCallSettings.newBuilder();
+
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
               deleteTargetTcpProxySettings,
@@ -423,6 +494,92 @@ private static Builder initDefaults(Builder builder) {
           .setProxyHeaderTargetTcpProxySettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteTargetTcpProxyOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertTargetTcpProxyOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setBackendServiceTargetTcpProxyOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .setProxyHeaderTargetTcpProxyOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -431,13 +588,21 @@ protected Builder(TargetTcpProxyStubSettings settings) {
       super(settings);
 
       deleteTargetTcpProxySettings = settings.deleteTargetTcpProxySettings.toBuilder();
+      deleteTargetTcpProxyOperationSettings =
+          settings.deleteTargetTcpProxyOperationSettings.toBuilder();
       getTargetTcpProxySettings = settings.getTargetTcpProxySettings.toBuilder();
       insertTargetTcpProxySettings = settings.insertTargetTcpProxySettings.toBuilder();
+      insertTargetTcpProxyOperationSettings =
+          settings.insertTargetTcpProxyOperationSettings.toBuilder();
       listTargetTcpProxiesSettings = settings.listTargetTcpProxiesSettings.toBuilder();
       setBackendServiceTargetTcpProxySettings =
           settings.setBackendServiceTargetTcpProxySettings.toBuilder();
+      setBackendServiceTargetTcpProxyOperationSettings =
+          settings.setBackendServiceTargetTcpProxyOperationSettings.toBuilder();
       setProxyHeaderTargetTcpProxySettings =
           settings.setProxyHeaderTargetTcpProxySettings.toBuilder();
+      setProxyHeaderTargetTcpProxyOperationSettings =
+          settings.setProxyHeaderTargetTcpProxyOperationSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
           ImmutableList.>of(
@@ -471,6 +636,14 @@ public Builder applyToAllUnaryMethods(
       return deleteTargetTcpProxySettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteTargetTcpProxy. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteTargetTcpProxyOperationSettings() {
+      return deleteTargetTcpProxyOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getTargetTcpProxy. */
     public UnaryCallSettings.Builder
         getTargetTcpProxySettings() {
@@ -483,6 +656,14 @@ public Builder applyToAllUnaryMethods(
       return insertTargetTcpProxySettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertTargetTcpProxy. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertTargetTcpProxyOperationSettings() {
+      return insertTargetTcpProxyOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listTargetTcpProxies. */
     public PagedCallSettings.Builder<
             ListTargetTcpProxiesHttpRequest, TargetTcpProxyList, ListTargetTcpProxiesPagedResponse>
@@ -496,12 +677,30 @@ public Builder applyToAllUnaryMethods(
       return setBackendServiceTargetTcpProxySettings;
     }
 
+    /** Returns the builder for the settings used for calls to setBackendServiceTargetTcpProxy. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetBackendServiceTargetTcpProxyHttpRequest, EmptyMessage, Operation>
+        setBackendServiceTargetTcpProxyOperationSettings() {
+      return setBackendServiceTargetTcpProxyOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to setProxyHeaderTargetTcpProxy. */
     public UnaryCallSettings.Builder
         setProxyHeaderTargetTcpProxySettings() {
       return setProxyHeaderTargetTcpProxySettings;
     }
 
+    /** Returns the builder for the settings used for calls to setProxyHeaderTargetTcpProxy. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder<
+            SetProxyHeaderTargetTcpProxyHttpRequest, EmptyMessage, Operation>
+        setProxyHeaderTargetTcpProxyOperationSettings() {
+      return setProxyHeaderTargetTcpProxyOperationSettings;
+    }
+
     @Override
     public TargetTcpProxyStubSettings build() throws IOException {
       return new TargetTcpProxyStubSettings(this);
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetVpnGatewayStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetVpnGatewayStub.java
index 93ab073a4505..a13f9078fdfa 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetVpnGatewayStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetVpnGatewayStub.java
@@ -20,6 +20,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.AggregatedListTargetVpnGatewaysHttpRequest;
 import com.google.cloud.compute.v1.DeleteTargetVpnGatewayHttpRequest;
@@ -42,6 +44,11 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class TargetVpnGatewayStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public RegionOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
   @BetaApi
   public UnaryCallable<
           AggregatedListTargetVpnGatewaysHttpRequest, AggregatedListTargetVpnGatewaysPagedResponse>
@@ -57,6 +64,13 @@ public abstract class TargetVpnGatewayStub implements BackgroundResource {
         "Not implemented: aggregatedListTargetVpnGatewaysCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteTargetVpnGatewayOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: deleteTargetVpnGatewayOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       deleteTargetVpnGatewayCallable() {
@@ -69,6 +83,13 @@ public abstract class TargetVpnGatewayStub implements BackgroundResource {
     throw new UnsupportedOperationException("Not implemented: getTargetVpnGatewayCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertTargetVpnGatewayOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: insertTargetVpnGatewayOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       insertTargetVpnGatewayCallable() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetVpnGatewayStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetVpnGatewayStubSettings.java
index 51ed7223273a..ef2ae085eb35 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetVpnGatewayStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/TargetVpnGatewayStubSettings.java
@@ -24,13 +24,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -74,13 +79,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteTargetVpnGateway to 30 seconds: + * example, to set the total timeout of getTargetVpnGateway to 30 seconds: * *

  * 
  * TargetVpnGatewayStubSettings.Builder targetVpnGatewaySettingsBuilder =
  *     TargetVpnGatewayStubSettings.newBuilder();
- * targetVpnGatewaySettingsBuilder.deleteTargetVpnGatewaySettings().getRetrySettings().toBuilder()
+ * targetVpnGatewaySettingsBuilder.getTargetVpnGatewaySettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * TargetVpnGatewayStubSettings targetVpnGatewaySettings = targetVpnGatewaySettingsBuilder.build();
  * 
@@ -107,10 +112,14 @@ public class TargetVpnGatewayStubSettings extends StubSettings
       deleteTargetVpnGatewaySettings;
+  private final OperationCallSettings
+      deleteTargetVpnGatewayOperationSettings;
   private final UnaryCallSettings
       getTargetVpnGatewaySettings;
   private final UnaryCallSettings
       insertTargetVpnGatewaySettings;
+  private final OperationCallSettings
+      insertTargetVpnGatewayOperationSettings;
   private final PagedCallSettings<
           ListTargetVpnGatewaysHttpRequest,
           TargetVpnGatewayList,
@@ -132,6 +141,13 @@ public class TargetVpnGatewayStubSettings extends StubSettings
+      deleteTargetVpnGatewayOperationSettings() {
+    return deleteTargetVpnGatewayOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getTargetVpnGateway. */
   public UnaryCallSettings
       getTargetVpnGatewaySettings() {
@@ -144,6 +160,13 @@ public class TargetVpnGatewayStubSettings extends StubSettings
+      insertTargetVpnGatewayOperationSettings() {
+    return insertTargetVpnGatewayOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listTargetVpnGateways. */
   public PagedCallSettings<
           ListTargetVpnGatewaysHttpRequest,
@@ -231,8 +254,12 @@ protected TargetVpnGatewayStubSettings(Builder settingsBuilder) throws IOExcepti
     aggregatedListTargetVpnGatewaysSettings =
         settingsBuilder.aggregatedListTargetVpnGatewaysSettings().build();
     deleteTargetVpnGatewaySettings = settingsBuilder.deleteTargetVpnGatewaySettings().build();
+    deleteTargetVpnGatewayOperationSettings =
+        settingsBuilder.deleteTargetVpnGatewayOperationSettings().build();
     getTargetVpnGatewaySettings = settingsBuilder.getTargetVpnGatewaySettings().build();
     insertTargetVpnGatewaySettings = settingsBuilder.insertTargetVpnGatewaySettings().build();
+    insertTargetVpnGatewayOperationSettings =
+        settingsBuilder.insertTargetVpnGatewayOperationSettings().build();
     listTargetVpnGatewaysSettings = settingsBuilder.listTargetVpnGatewaysSettings().build();
   }
 
@@ -395,10 +422,16 @@ public static class Builder extends StubSettings.Builder
         deleteTargetVpnGatewaySettings;
+    private final OperationCallSettings.Builder<
+            DeleteTargetVpnGatewayHttpRequest, EmptyMessage, Operation>
+        deleteTargetVpnGatewayOperationSettings;
     private final UnaryCallSettings.Builder
         getTargetVpnGatewaySettings;
     private final UnaryCallSettings.Builder
         insertTargetVpnGatewaySettings;
+    private final OperationCallSettings.Builder<
+            InsertTargetVpnGatewayHttpRequest, EmptyMessage, Operation>
+        insertTargetVpnGatewayOperationSettings;
     private final PagedCallSettings.Builder<
             ListTargetVpnGatewaysHttpRequest,
             TargetVpnGatewayList,
@@ -451,10 +484,14 @@ protected Builder(ClientContext clientContext) {
 
       deleteTargetVpnGatewaySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteTargetVpnGatewayOperationSettings = OperationCallSettings.newBuilder();
+
       getTargetVpnGatewaySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertTargetVpnGatewaySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertTargetVpnGatewayOperationSettings = OperationCallSettings.newBuilder();
+
       listTargetVpnGatewaysSettings =
           PagedCallSettings.newBuilder(LIST_TARGET_VPN_GATEWAYS_PAGE_STR_FACT);
 
@@ -504,6 +541,50 @@ private static Builder initDefaults(Builder builder) {
           .listTargetVpnGatewaysSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteTargetVpnGatewayOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertTargetVpnGatewayOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -514,8 +595,12 @@ protected Builder(TargetVpnGatewayStubSettings settings) {
       aggregatedListTargetVpnGatewaysSettings =
           settings.aggregatedListTargetVpnGatewaysSettings.toBuilder();
       deleteTargetVpnGatewaySettings = settings.deleteTargetVpnGatewaySettings.toBuilder();
+      deleteTargetVpnGatewayOperationSettings =
+          settings.deleteTargetVpnGatewayOperationSettings.toBuilder();
       getTargetVpnGatewaySettings = settings.getTargetVpnGatewaySettings.toBuilder();
       insertTargetVpnGatewaySettings = settings.insertTargetVpnGatewaySettings.toBuilder();
+      insertTargetVpnGatewayOperationSettings =
+          settings.insertTargetVpnGatewayOperationSettings.toBuilder();
       listTargetVpnGatewaysSettings = settings.listTargetVpnGatewaysSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
@@ -558,6 +643,14 @@ public Builder applyToAllUnaryMethods(
       return deleteTargetVpnGatewaySettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteTargetVpnGateway. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteTargetVpnGatewayOperationSettings() {
+      return deleteTargetVpnGatewayOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getTargetVpnGateway. */
     public UnaryCallSettings.Builder
         getTargetVpnGatewaySettings() {
@@ -570,6 +663,14 @@ public Builder applyToAllUnaryMethods(
       return insertTargetVpnGatewaySettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertTargetVpnGateway. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertTargetVpnGatewayOperationSettings() {
+      return insertTargetVpnGatewayOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listTargetVpnGateways. */
     public PagedCallSettings.Builder<
             ListTargetVpnGatewaysHttpRequest,
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/UrlMapStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/UrlMapStub.java
index fa86b6d1cd0e..9e3c1b195926 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/UrlMapStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/UrlMapStub.java
@@ -19,6 +19,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.DeleteUrlMapHttpRequest;
 import com.google.cloud.compute.v1.GetUrlMapHttpRequest;
@@ -44,6 +46,17 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class UrlMapStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public GlobalOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteUrlMapOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: deleteUrlMapOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteUrlMapCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteUrlMapCallable()");
@@ -54,11 +67,24 @@ public UnaryCallable getUrlMapCallable() {
     throw new UnsupportedOperationException("Not implemented: getUrlMapCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertUrlMapOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: insertUrlMapOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertUrlMapCallable() {
     throw new UnsupportedOperationException("Not implemented: insertUrlMapCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      invalidateCacheUrlMapOperationCallable() {
+    throw new UnsupportedOperationException(
+        "Not implemented: invalidateCacheUrlMapOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable
       invalidateCacheUrlMapCallable() {
@@ -76,11 +102,23 @@ public UnaryCallable listUrlMapsCallable() {
     throw new UnsupportedOperationException("Not implemented: listUrlMapsCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      patchUrlMapOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: patchUrlMapOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable patchUrlMapCallable() {
     throw new UnsupportedOperationException("Not implemented: patchUrlMapCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      updateUrlMapOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: updateUrlMapOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable updateUrlMapCallable() {
     throw new UnsupportedOperationException("Not implemented: updateUrlMapCallable()");
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/UrlMapStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/UrlMapStubSettings.java
index 0042d4c4c708..2fa2e0d2fd20 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/UrlMapStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/UrlMapStubSettings.java
@@ -23,13 +23,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -75,13 +80,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteUrlMap to 30 seconds: + * example, to set the total timeout of getUrlMap to 30 seconds: * *

  * 
  * UrlMapStubSettings.Builder urlMapSettingsBuilder =
  *     UrlMapStubSettings.newBuilder();
- * urlMapSettingsBuilder.deleteUrlMapSettings().getRetrySettings().toBuilder()
+ * urlMapSettingsBuilder.getUrlMapSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * UrlMapStubSettings urlMapSettings = urlMapSettingsBuilder.build();
  * 
@@ -102,14 +107,24 @@ public class UrlMapStubSettings extends StubSettings {
           .build();
 
   private final UnaryCallSettings deleteUrlMapSettings;
+  private final OperationCallSettings
+      deleteUrlMapOperationSettings;
   private final UnaryCallSettings getUrlMapSettings;
   private final UnaryCallSettings insertUrlMapSettings;
+  private final OperationCallSettings
+      insertUrlMapOperationSettings;
   private final UnaryCallSettings
       invalidateCacheUrlMapSettings;
+  private final OperationCallSettings
+      invalidateCacheUrlMapOperationSettings;
   private final PagedCallSettings
       listUrlMapsSettings;
   private final UnaryCallSettings patchUrlMapSettings;
+  private final OperationCallSettings
+      patchUrlMapOperationSettings;
   private final UnaryCallSettings updateUrlMapSettings;
+  private final OperationCallSettings
+      updateUrlMapOperationSettings;
   private final UnaryCallSettings
       validateUrlMapSettings;
 
@@ -118,6 +133,13 @@ public UnaryCallSettings deleteUrlMapSetting
     return deleteUrlMapSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteUrlMap. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteUrlMapOperationSettings() {
+    return deleteUrlMapOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getUrlMap. */
   public UnaryCallSettings getUrlMapSettings() {
     return getUrlMapSettings;
@@ -128,12 +150,26 @@ public UnaryCallSettings insertUrlMapSetting
     return insertUrlMapSettings;
   }
 
+  /** Returns the object with the settings used for calls to insertUrlMap. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertUrlMapOperationSettings() {
+    return insertUrlMapOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to invalidateCacheUrlMap. */
   public UnaryCallSettings
       invalidateCacheUrlMapSettings() {
     return invalidateCacheUrlMapSettings;
   }
 
+  /** Returns the object with the settings used for calls to invalidateCacheUrlMap. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      invalidateCacheUrlMapOperationSettings() {
+    return invalidateCacheUrlMapOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listUrlMaps. */
   public PagedCallSettings
       listUrlMapsSettings() {
@@ -145,11 +181,25 @@ public UnaryCallSettings patchUrlMapSettings(
     return patchUrlMapSettings;
   }
 
+  /** Returns the object with the settings used for calls to patchUrlMap. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      patchUrlMapOperationSettings() {
+    return patchUrlMapOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to updateUrlMap. */
   public UnaryCallSettings updateUrlMapSettings() {
     return updateUrlMapSettings;
   }
 
+  /** Returns the object with the settings used for calls to updateUrlMap. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      updateUrlMapOperationSettings() {
+    return updateUrlMapOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to validateUrlMap. */
   public UnaryCallSettings
       validateUrlMapSettings() {
@@ -231,12 +281,18 @@ protected UrlMapStubSettings(Builder settingsBuilder) throws IOException {
     super(settingsBuilder);
 
     deleteUrlMapSettings = settingsBuilder.deleteUrlMapSettings().build();
+    deleteUrlMapOperationSettings = settingsBuilder.deleteUrlMapOperationSettings().build();
     getUrlMapSettings = settingsBuilder.getUrlMapSettings().build();
     insertUrlMapSettings = settingsBuilder.insertUrlMapSettings().build();
+    insertUrlMapOperationSettings = settingsBuilder.insertUrlMapOperationSettings().build();
     invalidateCacheUrlMapSettings = settingsBuilder.invalidateCacheUrlMapSettings().build();
+    invalidateCacheUrlMapOperationSettings =
+        settingsBuilder.invalidateCacheUrlMapOperationSettings().build();
     listUrlMapsSettings = settingsBuilder.listUrlMapsSettings().build();
     patchUrlMapSettings = settingsBuilder.patchUrlMapSettings().build();
+    patchUrlMapOperationSettings = settingsBuilder.patchUrlMapOperationSettings().build();
     updateUrlMapSettings = settingsBuilder.updateUrlMapSettings().build();
+    updateUrlMapOperationSettings = settingsBuilder.updateUrlMapOperationSettings().build();
     validateUrlMapSettings = settingsBuilder.validateUrlMapSettings().build();
   }
 
@@ -301,17 +357,28 @@ public static class Builder extends StubSettings.Builder
         deleteUrlMapSettings;
+    private final OperationCallSettings.Builder
+        deleteUrlMapOperationSettings;
     private final UnaryCallSettings.Builder getUrlMapSettings;
     private final UnaryCallSettings.Builder
         insertUrlMapSettings;
+    private final OperationCallSettings.Builder
+        insertUrlMapOperationSettings;
     private final UnaryCallSettings.Builder
         invalidateCacheUrlMapSettings;
+    private final OperationCallSettings.Builder<
+            InvalidateCacheUrlMapHttpRequest, EmptyMessage, Operation>
+        invalidateCacheUrlMapOperationSettings;
     private final PagedCallSettings.Builder<
             ListUrlMapsHttpRequest, UrlMapList, ListUrlMapsPagedResponse>
         listUrlMapsSettings;
     private final UnaryCallSettings.Builder patchUrlMapSettings;
+    private final OperationCallSettings.Builder
+        patchUrlMapOperationSettings;
     private final UnaryCallSettings.Builder
         updateUrlMapSettings;
+    private final OperationCallSettings.Builder
+        updateUrlMapOperationSettings;
     private final UnaryCallSettings.Builder
         validateUrlMapSettings;
 
@@ -358,18 +425,28 @@ protected Builder(ClientContext clientContext) {
 
       deleteUrlMapSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteUrlMapOperationSettings = OperationCallSettings.newBuilder();
+
       getUrlMapSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertUrlMapSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertUrlMapOperationSettings = OperationCallSettings.newBuilder();
+
       invalidateCacheUrlMapSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      invalidateCacheUrlMapOperationSettings = OperationCallSettings.newBuilder();
+
       listUrlMapsSettings = PagedCallSettings.newBuilder(LIST_URL_MAPS_PAGE_STR_FACT);
 
       patchUrlMapSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      patchUrlMapOperationSettings = OperationCallSettings.newBuilder();
+
       updateUrlMapSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      updateUrlMapOperationSettings = OperationCallSettings.newBuilder();
+
       validateUrlMapSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       unaryMethodSettingsBuilders =
@@ -436,6 +513,112 @@ private static Builder initDefaults(Builder builder) {
           .validateUrlMapSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteUrlMapOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertUrlMapOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .invalidateCacheUrlMapOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .
+                      newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .patchUrlMapOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .updateUrlMapOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -444,12 +627,18 @@ protected Builder(UrlMapStubSettings settings) {
       super(settings);
 
       deleteUrlMapSettings = settings.deleteUrlMapSettings.toBuilder();
+      deleteUrlMapOperationSettings = settings.deleteUrlMapOperationSettings.toBuilder();
       getUrlMapSettings = settings.getUrlMapSettings.toBuilder();
       insertUrlMapSettings = settings.insertUrlMapSettings.toBuilder();
+      insertUrlMapOperationSettings = settings.insertUrlMapOperationSettings.toBuilder();
       invalidateCacheUrlMapSettings = settings.invalidateCacheUrlMapSettings.toBuilder();
+      invalidateCacheUrlMapOperationSettings =
+          settings.invalidateCacheUrlMapOperationSettings.toBuilder();
       listUrlMapsSettings = settings.listUrlMapsSettings.toBuilder();
       patchUrlMapSettings = settings.patchUrlMapSettings.toBuilder();
+      patchUrlMapOperationSettings = settings.patchUrlMapOperationSettings.toBuilder();
       updateUrlMapSettings = settings.updateUrlMapSettings.toBuilder();
+      updateUrlMapOperationSettings = settings.updateUrlMapOperationSettings.toBuilder();
       validateUrlMapSettings = settings.validateUrlMapSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
@@ -485,6 +674,14 @@ public UnaryCallSettings.Builder deleteUrlMa
       return deleteUrlMapSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteUrlMap. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteUrlMapOperationSettings() {
+      return deleteUrlMapOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getUrlMap. */
     public UnaryCallSettings.Builder getUrlMapSettings() {
       return getUrlMapSettings;
@@ -495,12 +692,28 @@ public UnaryCallSettings.Builder insertUrlMa
       return insertUrlMapSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertUrlMap. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertUrlMapOperationSettings() {
+      return insertUrlMapOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to invalidateCacheUrlMap. */
     public UnaryCallSettings.Builder
         invalidateCacheUrlMapSettings() {
       return invalidateCacheUrlMapSettings;
     }
 
+    /** Returns the builder for the settings used for calls to invalidateCacheUrlMap. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        invalidateCacheUrlMapOperationSettings() {
+      return invalidateCacheUrlMapOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listUrlMaps. */
     public PagedCallSettings.Builder
         listUrlMapsSettings() {
@@ -512,11 +725,27 @@ public UnaryCallSettings.Builder patchUrlMapS
       return patchUrlMapSettings;
     }
 
+    /** Returns the builder for the settings used for calls to patchUrlMap. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        patchUrlMapOperationSettings() {
+      return patchUrlMapOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to updateUrlMap. */
     public UnaryCallSettings.Builder updateUrlMapSettings() {
       return updateUrlMapSettings;
     }
 
+    /** Returns the builder for the settings used for calls to updateUrlMap. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        updateUrlMapOperationSettings() {
+      return updateUrlMapOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to validateUrlMap. */
     public UnaryCallSettings.Builder
         validateUrlMapSettings() {
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/VpnTunnelStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/VpnTunnelStub.java
index 88dd0fbbe80b..3c2251ecf15e 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/VpnTunnelStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/VpnTunnelStub.java
@@ -20,6 +20,8 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.rpc.OperationCallable;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.AggregatedListVpnTunnelsHttpRequest;
 import com.google.cloud.compute.v1.DeleteVpnTunnelHttpRequest;
@@ -42,6 +44,11 @@
 @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
 public abstract class VpnTunnelStub implements BackgroundResource {
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public RegionOperationStub getOperationsStub() {
+    throw new UnsupportedOperationException("Not implemented: getOperationsStub()");
+  }
+
   @BetaApi
   public UnaryCallable
       aggregatedListVpnTunnelsPagedCallable() {
@@ -55,6 +62,12 @@ public abstract class VpnTunnelStub implements BackgroundResource {
     throw new UnsupportedOperationException("Not implemented: aggregatedListVpnTunnelsCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      deleteVpnTunnelOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: deleteVpnTunnelOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable deleteVpnTunnelCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteVpnTunnelCallable()");
@@ -65,6 +78,12 @@ public UnaryCallable getVpnTunnelCallable()
     throw new UnsupportedOperationException("Not implemented: getVpnTunnelCallable()");
   }
 
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallable
+      insertVpnTunnelOperationCallable() {
+    throw new UnsupportedOperationException("Not implemented: insertVpnTunnelOperationCallable()");
+  }
+
   @BetaApi
   public UnaryCallable insertVpnTunnelCallable() {
     throw new UnsupportedOperationException("Not implemented: insertVpnTunnelCallable()");
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/VpnTunnelStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/VpnTunnelStubSettings.java
index be2a5c4d3de3..5d4dfcefa5df 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/VpnTunnelStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/VpnTunnelStubSettings.java
@@ -24,13 +24,18 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.ApiMessageOperationTransformers;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
+import com.google.api.gax.longrunning.OperationSnapshot;
+import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
 import com.google.api.gax.retrying.RetrySettings;
 import com.google.api.gax.rpc.ApiCallContext;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
 import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.OperationCallSettings;
 import com.google.api.gax.rpc.PageContext;
 import com.google.api.gax.rpc.PagedCallSettings;
 import com.google.api.gax.rpc.PagedListDescriptor;
@@ -74,13 +79,13 @@
  *
  * 

The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. For - * example, to set the total timeout of deleteVpnTunnel to 30 seconds: + * example, to set the total timeout of getVpnTunnel to 30 seconds: * *

  * 
  * VpnTunnelStubSettings.Builder vpnTunnelSettingsBuilder =
  *     VpnTunnelStubSettings.newBuilder();
- * vpnTunnelSettingsBuilder.deleteVpnTunnelSettings().getRetrySettings().toBuilder()
+ * vpnTunnelSettingsBuilder.getVpnTunnelSettings().getRetrySettings().toBuilder()
  *     .setTotalTimeout(Duration.ofSeconds(30));
  * VpnTunnelStubSettings vpnTunnelSettings = vpnTunnelSettingsBuilder.build();
  * 
@@ -106,8 +111,12 @@ public class VpnTunnelStubSettings extends StubSettings {
           AggregatedListVpnTunnelsPagedResponse>
       aggregatedListVpnTunnelsSettings;
   private final UnaryCallSettings deleteVpnTunnelSettings;
+  private final OperationCallSettings
+      deleteVpnTunnelOperationSettings;
   private final UnaryCallSettings getVpnTunnelSettings;
   private final UnaryCallSettings insertVpnTunnelSettings;
+  private final OperationCallSettings
+      insertVpnTunnelOperationSettings;
   private final PagedCallSettings<
           ListVpnTunnelsHttpRequest, VpnTunnelList, ListVpnTunnelsPagedResponse>
       listVpnTunnelsSettings;
@@ -126,6 +135,13 @@ public UnaryCallSettings deleteVpnTunnelS
     return deleteVpnTunnelSettings;
   }
 
+  /** Returns the object with the settings used for calls to deleteVpnTunnel. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      deleteVpnTunnelOperationSettings() {
+    return deleteVpnTunnelOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to getVpnTunnel. */
   public UnaryCallSettings getVpnTunnelSettings() {
     return getVpnTunnelSettings;
@@ -136,6 +152,13 @@ public UnaryCallSettings insertVpnTunnelS
     return insertVpnTunnelSettings;
   }
 
+  /** Returns the object with the settings used for calls to insertVpnTunnel. */
+  @BetaApi("The surface for use by generated code is not stable yet and may change in the future.")
+  public OperationCallSettings
+      insertVpnTunnelOperationSettings() {
+    return insertVpnTunnelOperationSettings;
+  }
+
   /** Returns the object with the settings used for calls to listVpnTunnels. */
   public PagedCallSettings
       listVpnTunnelsSettings() {
@@ -218,8 +241,10 @@ protected VpnTunnelStubSettings(Builder settingsBuilder) throws IOException {
 
     aggregatedListVpnTunnelsSettings = settingsBuilder.aggregatedListVpnTunnelsSettings().build();
     deleteVpnTunnelSettings = settingsBuilder.deleteVpnTunnelSettings().build();
+    deleteVpnTunnelOperationSettings = settingsBuilder.deleteVpnTunnelOperationSettings().build();
     getVpnTunnelSettings = settingsBuilder.getVpnTunnelSettings().build();
     insertVpnTunnelSettings = settingsBuilder.insertVpnTunnelSettings().build();
+    insertVpnTunnelOperationSettings = settingsBuilder.insertVpnTunnelOperationSettings().build();
     listVpnTunnelsSettings = settingsBuilder.listVpnTunnelsSettings().build();
   }
 
@@ -363,10 +388,14 @@ public static class Builder extends StubSettings.Builder
         deleteVpnTunnelSettings;
+    private final OperationCallSettings.Builder
+        deleteVpnTunnelOperationSettings;
     private final UnaryCallSettings.Builder
         getVpnTunnelSettings;
     private final UnaryCallSettings.Builder
         insertVpnTunnelSettings;
+    private final OperationCallSettings.Builder
+        insertVpnTunnelOperationSettings;
     private final PagedCallSettings.Builder<
             ListVpnTunnelsHttpRequest, VpnTunnelList, ListVpnTunnelsPagedResponse>
         listVpnTunnelsSettings;
@@ -417,10 +446,14 @@ protected Builder(ClientContext clientContext) {
 
       deleteVpnTunnelSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      deleteVpnTunnelOperationSettings = OperationCallSettings.newBuilder();
+
       getVpnTunnelSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
       insertVpnTunnelSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
 
+      insertVpnTunnelOperationSettings = OperationCallSettings.newBuilder();
+
       listVpnTunnelsSettings = PagedCallSettings.newBuilder(LIST_VPN_TUNNELS_PAGE_STR_FACT);
 
       unaryMethodSettingsBuilders =
@@ -469,6 +502,48 @@ private static Builder initDefaults(Builder builder) {
           .listVpnTunnelsSettings()
           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"));
+      builder
+          .deleteVpnTunnelOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
+      builder
+          .insertVpnTunnelOperationSettings()
+          .setInitialCallSettings(
+              UnaryCallSettings
+                  .newUnaryCallSettingsBuilder()
+                  .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent"))
+                  .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default"))
+                  .build())
+          .setResponseTransformer(ApiMessageOperationTransformers.ResponseTransformer.create(EmptyMessage.class))
+          .setMetadataTransformer(ApiMessageOperationTransformers.MetadataTransformer.create(Operation.class))
+          .setPollingAlgorithm(
+              OperationTimedPollAlgorithm.create(
+                  RetrySettings.newBuilder()
+                      .setInitialRetryDelay(Duration.ofMillis(500L))
+                      .setRetryDelayMultiplier(1.5)
+                      .setMaxRetryDelay(Duration.ofMillis(5000L))
+                      .setInitialRpcTimeout(Duration.ZERO) // ignored
+                      .setRpcTimeoutMultiplier(1.0) // ignored
+                      .setMaxRpcTimeout(Duration.ZERO) // ignored
+                      .setTotalTimeout(Duration.ofMillis(300000L))
+                      .build()));
 
       return builder;
     }
@@ -478,8 +553,10 @@ protected Builder(VpnTunnelStubSettings settings) {
 
       aggregatedListVpnTunnelsSettings = settings.aggregatedListVpnTunnelsSettings.toBuilder();
       deleteVpnTunnelSettings = settings.deleteVpnTunnelSettings.toBuilder();
+      deleteVpnTunnelOperationSettings = settings.deleteVpnTunnelOperationSettings.toBuilder();
       getVpnTunnelSettings = settings.getVpnTunnelSettings.toBuilder();
       insertVpnTunnelSettings = settings.insertVpnTunnelSettings.toBuilder();
+      insertVpnTunnelOperationSettings = settings.insertVpnTunnelOperationSettings.toBuilder();
       listVpnTunnelsSettings = settings.listVpnTunnelsSettings.toBuilder();
 
       unaryMethodSettingsBuilders =
@@ -522,6 +599,14 @@ public Builder applyToAllUnaryMethods(
       return deleteVpnTunnelSettings;
     }
 
+    /** Returns the builder for the settings used for calls to deleteVpnTunnel. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        deleteVpnTunnelOperationSettings() {
+      return deleteVpnTunnelOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to getVpnTunnel. */
     public UnaryCallSettings.Builder getVpnTunnelSettings() {
       return getVpnTunnelSettings;
@@ -533,6 +618,14 @@ public UnaryCallSettings.Builder getVpnTunne
       return insertVpnTunnelSettings;
     }
 
+    /** Returns the builder for the settings used for calls to insertVpnTunnel. */
+    @BetaApi(
+        "The surface for use by generated code is not stable yet and may change in the future.")
+    public OperationCallSettings.Builder
+        insertVpnTunnelOperationSettings() {
+      return insertVpnTunnelOperationSettings;
+    }
+
     /** Returns the builder for the settings used for calls to listVpnTunnels. */
     public PagedCallSettings.Builder<
             ListVpnTunnelsHttpRequest, VpnTunnelList, ListVpnTunnelsPagedResponse>
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ZoneOperationStub.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ZoneOperationStub.java
index 64caca8766f5..518712521287 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ZoneOperationStub.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ZoneOperationStub.java
@@ -19,6 +19,7 @@
 
 import com.google.api.core.BetaApi;
 import com.google.api.gax.core.BackgroundResource;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.rpc.UnaryCallable;
 import com.google.cloud.compute.v1.DeleteZoneOperationHttpRequest;
 import com.google.cloud.compute.v1.GetZoneOperationHttpRequest;
@@ -38,7 +39,7 @@
 public abstract class ZoneOperationStub implements BackgroundResource {
 
   @BetaApi
-  public UnaryCallable deleteZoneOperationCallable() {
+  public UnaryCallable deleteZoneOperationCallable() {
     throw new UnsupportedOperationException("Not implemented: deleteZoneOperationCallable()");
   }
 
diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ZoneOperationStubSettings.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ZoneOperationStubSettings.java
index 6c99dad00922..8591efe05f86 100644
--- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ZoneOperationStubSettings.java
+++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/stub/ZoneOperationStubSettings.java
@@ -23,6 +23,7 @@
 import com.google.api.gax.core.GaxProperties;
 import com.google.api.gax.core.GoogleCredentialsProvider;
 import com.google.api.gax.core.InstantiatingExecutorProvider;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
@@ -94,14 +95,16 @@ public class ZoneOperationStubSettings extends StubSettings deleteZoneOperationSettings;
+  private final UnaryCallSettings
+      deleteZoneOperationSettings;
   private final UnaryCallSettings getZoneOperationSettings;
   private final PagedCallSettings<
           ListZoneOperationsHttpRequest, OperationList, ListZoneOperationsPagedResponse>
       listZoneOperationsSettings;
 
   /** Returns the object with the settings used for calls to deleteZoneOperation. */
-  public UnaryCallSettings deleteZoneOperationSettings() {
+  public UnaryCallSettings
+      deleteZoneOperationSettings() {
     return deleteZoneOperationSettings;
   }
 
@@ -259,7 +262,7 @@ public ApiFuture getFuturePagedResponse(
   public static class Builder extends StubSettings.Builder {
     private final ImmutableList> unaryMethodSettingsBuilders;
 
-    private final UnaryCallSettings.Builder
+    private final UnaryCallSettings.Builder
         deleteZoneOperationSettings;
     private final UnaryCallSettings.Builder
         getZoneOperationSettings;
@@ -379,7 +382,7 @@ public Builder applyToAllUnaryMethods(
     }
 
     /** Returns the builder for the settings used for calls to deleteZoneOperation. */
-    public UnaryCallSettings.Builder
+    public UnaryCallSettings.Builder
         deleteZoneOperationSettings() {
       return deleteZoneOperationSettings;
     }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/AddressClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/AddressClientTest.java
index c36a81a4ff3e..6b8f5060fcca 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/AddressClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/AddressClientTest.java
@@ -25,6 +25,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -41,6 +42,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -152,58 +154,16 @@ public void aggregatedListAddressesExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteAddressTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteAddressTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteAddressTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionAddressName address =
         ProjectRegionAddressName.of("[PROJECT]", "[REGION]", "[ADDRESS]");
 
-    Operation actualResponse = client.deleteAddress(address);
+    EmptyMessage actualResponse = client.deleteAddressAsync(address).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -233,10 +193,12 @@ public void deleteAddressExceptionTest() throws Exception {
       ProjectRegionAddressName address =
           ProjectRegionAddressName.of("[PROJECT]", "[REGION]", "[ADDRESS]");
 
-      client.deleteAddress(address);
+      client.deleteAddressAsync(address).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -323,58 +285,16 @@ public void getAddressExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertAddressTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region2 = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region2.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertAddressTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertAddressTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
     Address addressResource = Address.newBuilder().build();
 
-    Operation actualResponse = client.insertAddress(region, addressResource);
+    EmptyMessage actualResponse = client.insertAddressAsync(region, addressResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -404,10 +324,12 @@ public void insertAddressExceptionTest() throws Exception {
       ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
       Address addressResource = Address.newBuilder().build();
 
-      client.insertAddress(region, addressResource);
+      client.insertAddressAsync(region, addressResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/AutoscalerClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/AutoscalerClientTest.java
index 094588d075dc..bfb6d5f1ba9a 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/AutoscalerClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/AutoscalerClientTest.java
@@ -27,6 +27,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -44,6 +45,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -157,58 +159,16 @@ public void aggregatedListAutoscalersExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteAutoscalerTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteAutoscalerTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteAutoscalerTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneAutoscalerName autoscaler =
         ProjectZoneAutoscalerName.of("[PROJECT]", "[ZONE]", "[AUTOSCALER]");
 
-    Operation actualResponse = client.deleteAutoscaler(autoscaler);
+    EmptyMessage actualResponse = client.deleteAutoscalerAsync(autoscaler).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -238,10 +198,12 @@ public void deleteAutoscalerExceptionTest() throws Exception {
       ProjectZoneAutoscalerName autoscaler =
           ProjectZoneAutoscalerName.of("[PROJECT]", "[ZONE]", "[AUTOSCALER]");
 
-      client.deleteAutoscaler(autoscaler);
+      client.deleteAutoscalerAsync(autoscaler).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -315,58 +277,16 @@ public void getAutoscalerExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertAutoscalerTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone2 = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone2.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertAutoscalerTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertAutoscalerTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
     Autoscaler autoscalerResource = Autoscaler.newBuilder().build();
 
-    Operation actualResponse = client.insertAutoscaler(zone, autoscalerResource);
+    EmptyMessage actualResponse = client.insertAutoscalerAsync(zone, autoscalerResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -396,10 +316,12 @@ public void insertAutoscalerExceptionTest() throws Exception {
       ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
       Autoscaler autoscalerResource = Autoscaler.newBuilder().build();
 
-      client.insertAutoscaler(zone, autoscalerResource);
+      client.insertAutoscalerAsync(zone, autoscalerResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -465,61 +387,19 @@ public void listAutoscalersExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void patchAutoscalerTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone2 = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone2.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void patchAutoscalerTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("patchAutoscalerTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     String autoscaler = "autoscaler517258967";
     ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
     Autoscaler autoscalerResource = Autoscaler.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse =
-        client.patchAutoscaler(autoscaler, zone, autoscalerResource, fieldMask);
+    EmptyMessage actualResponse =
+        client.patchAutoscalerAsync(autoscaler, zone, autoscalerResource, fieldMask).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -551,70 +431,30 @@ public void patchAutoscalerExceptionTest() throws Exception {
       Autoscaler autoscalerResource = Autoscaler.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.patchAutoscaler(autoscaler, zone, autoscalerResource, fieldMask);
+      client.patchAutoscalerAsync(autoscaler, zone, autoscalerResource, fieldMask).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void updateAutoscalerTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone2 = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone2.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void updateAutoscalerTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("updateAutoscalerTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     String autoscaler = "autoscaler517258967";
     ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
     Autoscaler autoscalerResource = Autoscaler.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse =
-        client.updateAutoscaler(autoscaler, zone, autoscalerResource, fieldMask);
+    EmptyMessage actualResponse =
+        client.updateAutoscalerAsync(autoscaler, zone, autoscalerResource, fieldMask).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -646,10 +486,12 @@ public void updateAutoscalerExceptionTest() throws Exception {
       Autoscaler autoscalerResource = Autoscaler.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.updateAutoscaler(autoscaler, zone, autoscalerResource, fieldMask);
+      client.updateAutoscalerAsync(autoscaler, zone, autoscalerResource, fieldMask).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/BackendBucketClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/BackendBucketClientTest.java
index e0175e0fe094..95f0df408905 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/BackendBucketClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/BackendBucketClientTest.java
@@ -27,6 +27,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -42,6 +43,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -93,60 +95,21 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void addSignedUrlKeyBackendBucketTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void addSignedUrlKeyBackendBucketTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("addSignedUrlKeyBackendBucketTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalBackendBucketName backendBucket =
         ProjectGlobalBackendBucketName.of("[PROJECT]", "[BACKEND_BUCKET]");
     SignedUrlKey signedUrlKeyResource = SignedUrlKey.newBuilder().build();
 
-    Operation actualResponse =
-        client.addSignedUrlKeyBackendBucket(backendBucket, signedUrlKeyResource);
+    EmptyMessage actualResponse =
+        client.addSignedUrlKeyBackendBucketAsync(backendBucket, signedUrlKeyResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -177,67 +140,27 @@ public void addSignedUrlKeyBackendBucketExceptionTest() throws Exception {
           ProjectGlobalBackendBucketName.of("[PROJECT]", "[BACKEND_BUCKET]");
       SignedUrlKey signedUrlKeyResource = SignedUrlKey.newBuilder().build();
 
-      client.addSignedUrlKeyBackendBucket(backendBucket, signedUrlKeyResource);
+      client.addSignedUrlKeyBackendBucketAsync(backendBucket, signedUrlKeyResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void deleteBackendBucketTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteBackendBucketTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteBackendBucketTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalBackendBucketName backendBucket =
         ProjectGlobalBackendBucketName.of("[PROJECT]", "[BACKEND_BUCKET]");
 
-    Operation actualResponse = client.deleteBackendBucket(backendBucket);
+    EmptyMessage actualResponse = client.deleteBackendBucketAsync(backendBucket).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -267,68 +190,32 @@ public void deleteBackendBucketExceptionTest() throws Exception {
       ProjectGlobalBackendBucketName backendBucket =
           ProjectGlobalBackendBucketName.of("[PROJECT]", "[BACKEND_BUCKET]");
 
-      client.deleteBackendBucket(backendBucket);
+      client.deleteBackendBucketAsync(backendBucket).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void deleteSignedUrlKeyBackendBucketTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void deleteSignedUrlKeyBackendBucketTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("deleteSignedUrlKeyBackendBucketTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalBackendBucketName backendBucket =
         ProjectGlobalBackendBucketName.of("[PROJECT]", "[BACKEND_BUCKET]");
     String keyName = "keyName500938859";
 
-    Operation actualResponse = client.deleteSignedUrlKeyBackendBucket(backendBucket, keyName);
+    EmptyMessage actualResponse =
+        client.deleteSignedUrlKeyBackendBucketAsync(backendBucket, keyName).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -359,10 +246,12 @@ public void deleteSignedUrlKeyBackendBucketExceptionTest() throws Exception {
           ProjectGlobalBackendBucketName.of("[PROJECT]", "[BACKEND_BUCKET]");
       String keyName = "keyName500938859";
 
-      client.deleteSignedUrlKeyBackendBucket(backendBucket, keyName);
+      client.deleteSignedUrlKeyBackendBucketAsync(backendBucket, keyName).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -432,58 +321,17 @@ public void getBackendBucketExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertBackendBucketTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertBackendBucketTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertBackendBucketTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
     BackendBucket backendBucketResource = BackendBucket.newBuilder().build();
 
-    Operation actualResponse = client.insertBackendBucket(project, backendBucketResource);
+    EmptyMessage actualResponse =
+        client.insertBackendBucketAsync(project, backendBucketResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -513,10 +361,12 @@ public void insertBackendBucketExceptionTest() throws Exception {
       ProjectName project = ProjectName.of("[PROJECT]");
       BackendBucket backendBucketResource = BackendBucket.newBuilder().build();
 
-      client.insertBackendBucket(project, backendBucketResource);
+      client.insertBackendBucketAsync(project, backendBucketResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -582,61 +432,19 @@ public void listBackendBucketsExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void patchBackendBucketTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void patchBackendBucketTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("patchBackendBucketTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalBackendBucketName backendBucket =
         ProjectGlobalBackendBucketName.of("[PROJECT]", "[BACKEND_BUCKET]");
     BackendBucket backendBucketResource = BackendBucket.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse =
-        client.patchBackendBucket(backendBucket, backendBucketResource, fieldMask);
+    EmptyMessage actualResponse =
+        client.patchBackendBucketAsync(backendBucket, backendBucketResource, fieldMask).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -668,70 +476,30 @@ public void patchBackendBucketExceptionTest() throws Exception {
       BackendBucket backendBucketResource = BackendBucket.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.patchBackendBucket(backendBucket, backendBucketResource, fieldMask);
+      client.patchBackendBucketAsync(backendBucket, backendBucketResource, fieldMask).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void updateBackendBucketTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void updateBackendBucketTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("updateBackendBucketTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalBackendBucketName backendBucket =
         ProjectGlobalBackendBucketName.of("[PROJECT]", "[BACKEND_BUCKET]");
     BackendBucket backendBucketResource = BackendBucket.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse =
-        client.updateBackendBucket(backendBucket, backendBucketResource, fieldMask);
+    EmptyMessage actualResponse =
+        client.updateBackendBucketAsync(backendBucket, backendBucketResource, fieldMask).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -763,10 +531,12 @@ public void updateBackendBucketExceptionTest() throws Exception {
       BackendBucket backendBucketResource = BackendBucket.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.updateBackendBucket(backendBucket, backendBucketResource, fieldMask);
+      client.updateBackendBucketAsync(backendBucket, backendBucketResource, fieldMask).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/BackendServiceClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/BackendServiceClientTest.java
index caef050619f6..bab6ef3b4276 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/BackendServiceClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/BackendServiceClientTest.java
@@ -31,6 +31,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -48,6 +49,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -102,60 +104,21 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void addSignedUrlKeyBackendServiceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void addSignedUrlKeyBackendServiceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("addSignedUrlKeyBackendServiceTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalBackendServiceName backendService =
         ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]");
     SignedUrlKey signedUrlKeyResource = SignedUrlKey.newBuilder().build();
 
-    Operation actualResponse =
-        client.addSignedUrlKeyBackendService(backendService, signedUrlKeyResource);
+    EmptyMessage actualResponse =
+        client.addSignedUrlKeyBackendServiceAsync(backendService, signedUrlKeyResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -186,10 +149,12 @@ public void addSignedUrlKeyBackendServiceExceptionTest() throws Exception {
           ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]");
       SignedUrlKey signedUrlKeyResource = SignedUrlKey.newBuilder().build();
 
-      client.addSignedUrlKeyBackendService(backendService, signedUrlKeyResource);
+      client.addSignedUrlKeyBackendServiceAsync(backendService, signedUrlKeyResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -258,58 +223,16 @@ public void aggregatedListBackendServicesExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteBackendServiceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteBackendServiceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteBackendServiceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalBackendServiceName backendService =
         ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]");
 
-    Operation actualResponse = client.deleteBackendService(backendService);
+    EmptyMessage actualResponse = client.deleteBackendServiceAsync(backendService).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -339,68 +262,32 @@ public void deleteBackendServiceExceptionTest() throws Exception {
       ProjectGlobalBackendServiceName backendService =
           ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]");
 
-      client.deleteBackendService(backendService);
+      client.deleteBackendServiceAsync(backendService).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void deleteSignedUrlKeyBackendServiceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void deleteSignedUrlKeyBackendServiceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("deleteSignedUrlKeyBackendServiceTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalBackendServiceName backendService =
         ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]");
     String keyName = "keyName500938859";
 
-    Operation actualResponse = client.deleteSignedUrlKeyBackendService(backendService, keyName);
+    EmptyMessage actualResponse =
+        client.deleteSignedUrlKeyBackendServiceAsync(backendService, keyName).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -431,10 +318,12 @@ public void deleteSignedUrlKeyBackendServiceExceptionTest() throws Exception {
           ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]");
       String keyName = "keyName500938859";
 
-      client.deleteSignedUrlKeyBackendService(backendService, keyName);
+      client.deleteSignedUrlKeyBackendServiceAsync(backendService, keyName).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -576,58 +465,17 @@ public void getHealthBackendServiceExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertBackendServiceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertBackendServiceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertBackendServiceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
     BackendService backendServiceResource = BackendService.newBuilder().build();
 
-    Operation actualResponse = client.insertBackendService(project, backendServiceResource);
+    EmptyMessage actualResponse =
+        client.insertBackendServiceAsync(project, backendServiceResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -657,10 +505,12 @@ public void insertBackendServiceExceptionTest() throws Exception {
       ProjectName project = ProjectName.of("[PROJECT]");
       BackendService backendServiceResource = BackendService.newBuilder().build();
 
-      client.insertBackendService(project, backendServiceResource);
+      client.insertBackendServiceAsync(project, backendServiceResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -726,61 +576,19 @@ public void listBackendServicesExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void patchBackendServiceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void patchBackendServiceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("patchBackendServiceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalBackendServiceName backendService =
         ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]");
     BackendService backendServiceResource = BackendService.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse =
-        client.patchBackendService(backendService, backendServiceResource, fieldMask);
+    EmptyMessage actualResponse =
+        client.patchBackendServiceAsync(backendService, backendServiceResource, fieldMask).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -812,70 +620,35 @@ public void patchBackendServiceExceptionTest() throws Exception {
       BackendService backendServiceResource = BackendService.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.patchBackendService(backendService, backendServiceResource, fieldMask);
+      client.patchBackendServiceAsync(backendService, backendServiceResource, fieldMask).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void setSecurityPolicyBackendServiceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void setSecurityPolicyBackendServiceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("setSecurityPolicyBackendServiceTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalBackendServiceName backendService =
         ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]");
     SecurityPolicyReference securityPolicyReferenceResource =
         SecurityPolicyReference.newBuilder().build();
 
-    Operation actualResponse =
-        client.setSecurityPolicyBackendService(backendService, securityPolicyReferenceResource);
+    EmptyMessage actualResponse =
+        client
+            .setSecurityPolicyBackendServiceAsync(backendService, securityPolicyReferenceResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -907,70 +680,32 @@ public void setSecurityPolicyBackendServiceExceptionTest() throws Exception {
       SecurityPolicyReference securityPolicyReferenceResource =
           SecurityPolicyReference.newBuilder().build();
 
-      client.setSecurityPolicyBackendService(backendService, securityPolicyReferenceResource);
+      client
+          .setSecurityPolicyBackendServiceAsync(backendService, securityPolicyReferenceResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void updateBackendServiceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void updateBackendServiceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("updateBackendServiceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalBackendServiceName backendService =
         ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]");
     BackendService backendServiceResource = BackendService.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse =
-        client.updateBackendService(backendService, backendServiceResource, fieldMask);
+    EmptyMessage actualResponse =
+        client.updateBackendServiceAsync(backendService, backendServiceResource, fieldMask).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -1002,10 +737,12 @@ public void updateBackendServiceExceptionTest() throws Exception {
       BackendService backendServiceResource = BackendService.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.updateBackendService(backendService, backendServiceResource, fieldMask);
+      client.updateBackendServiceAsync(backendService, backendServiceResource, fieldMask).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/DiskClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/DiskClientTest.java
index 1a19c5c59a4a..1d433ccaae62 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/DiskClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/DiskClientTest.java
@@ -31,6 +31,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -47,6 +48,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -163,59 +165,18 @@ public void aggregatedListDisksExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void createSnapshotDiskTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void createSnapshotDiskTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("createSnapshotDiskTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneDiskName disk = ProjectZoneDiskName.of("[PROJECT]", "[ZONE]", "[DISK]");
     Boolean guestFlush = false;
     Snapshot snapshotResource = Snapshot.newBuilder().build();
 
-    Operation actualResponse = client.createSnapshotDisk(disk, guestFlush, snapshotResource);
+    EmptyMessage actualResponse =
+        client.createSnapshotDiskAsync(disk, guestFlush, snapshotResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -246,66 +207,26 @@ public void createSnapshotDiskExceptionTest() throws Exception {
       Boolean guestFlush = false;
       Snapshot snapshotResource = Snapshot.newBuilder().build();
 
-      client.createSnapshotDisk(disk, guestFlush, snapshotResource);
+      client.createSnapshotDiskAsync(disk, guestFlush, snapshotResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void deleteDiskTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteDiskTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteDiskTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneDiskName disk = ProjectZoneDiskName.of("[PROJECT]", "[ZONE]", "[DISK]");
 
-    Operation actualResponse = client.deleteDisk(disk);
+    EmptyMessage actualResponse = client.deleteDiskAsync(disk).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -334,10 +255,12 @@ public void deleteDiskExceptionTest() throws Exception {
     try {
       ProjectZoneDiskName disk = ProjectZoneDiskName.of("[PROJECT]", "[ZONE]", "[DISK]");
 
-      client.deleteDisk(disk);
+      client.deleteDiskAsync(disk).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -479,58 +402,16 @@ public void getIamPolicyDiskExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertDiskTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone2 = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone2.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertDiskTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertDiskTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
     Disk diskResource = Disk.newBuilder().build();
 
-    Operation actualResponse = client.insertDisk(zone, diskResource);
+    EmptyMessage actualResponse = client.insertDiskAsync(zone, diskResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -560,10 +441,12 @@ public void insertDiskExceptionTest() throws Exception {
       ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
       Disk diskResource = Disk.newBuilder().build();
 
-      client.insertDisk(zone, diskResource);
+      client.insertDiskAsync(zone, diskResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -629,58 +512,16 @@ public void listDisksExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void resizeDiskTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void resizeDiskTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("resizeDiskTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneDiskName disk = ProjectZoneDiskName.of("[PROJECT]", "[ZONE]", "[DISK]");
     DisksResizeRequest disksResizeRequestResource = DisksResizeRequest.newBuilder().build();
 
-    Operation actualResponse = client.resizeDisk(disk, disksResizeRequestResource);
+    EmptyMessage actualResponse = client.resizeDiskAsync(disk, disksResizeRequestResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -710,10 +551,12 @@ public void resizeDiskExceptionTest() throws Exception {
       ProjectZoneDiskName disk = ProjectZoneDiskName.of("[PROJECT]", "[ZONE]", "[DISK]");
       DisksResizeRequest disksResizeRequestResource = DisksResizeRequest.newBuilder().build();
 
-      client.resizeDisk(disk, disksResizeRequestResource);
+      client.resizeDiskAsync(disk, disksResizeRequestResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -771,59 +614,18 @@ public void setIamPolicyDiskExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void setLabelsDiskTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void setLabelsDiskTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("setLabelsDiskTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneDiskResourceName resource =
         ProjectZoneDiskResourceName.of("[PROJECT]", "[ZONE]", "[RESOURCE]");
     ZoneSetLabelsRequest zoneSetLabelsRequestResource = ZoneSetLabelsRequest.newBuilder().build();
 
-    Operation actualResponse = client.setLabelsDisk(resource, zoneSetLabelsRequestResource);
+    EmptyMessage actualResponse =
+        client.setLabelsDiskAsync(resource, zoneSetLabelsRequestResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -854,10 +656,12 @@ public void setLabelsDiskExceptionTest() throws Exception {
           ProjectZoneDiskResourceName.of("[PROJECT]", "[ZONE]", "[RESOURCE]");
       ZoneSetLabelsRequest zoneSetLabelsRequestResource = ZoneSetLabelsRequest.newBuilder().build();
 
-      client.setLabelsDisk(resource, zoneSetLabelsRequestResource);
+      client.setLabelsDiskAsync(resource, zoneSetLabelsRequestResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/FirewallClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/FirewallClientTest.java
index b000a48f3f0f..b6662d82a228 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/FirewallClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/FirewallClientTest.java
@@ -25,6 +25,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -40,6 +41,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -89,57 +91,15 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteFirewallTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteFirewallTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteFirewallTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalFirewallName firewall = ProjectGlobalFirewallName.of("[PROJECT]", "[FIREWALL]");
 
-    Operation actualResponse = client.deleteFirewall(firewall);
+    EmptyMessage actualResponse = client.deleteFirewallAsync(firewall).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -168,10 +128,12 @@ public void deleteFirewallExceptionTest() throws Exception {
     try {
       ProjectGlobalFirewallName firewall = ProjectGlobalFirewallName.of("[PROJECT]", "[FIREWALL]");
 
-      client.deleteFirewall(firewall);
+      client.deleteFirewallAsync(firewall).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -243,58 +205,16 @@ public void getFirewallExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertFirewallTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertFirewallTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertFirewallTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
     Firewall firewallResource = Firewall.newBuilder().build();
 
-    Operation actualResponse = client.insertFirewall(project, firewallResource);
+    EmptyMessage actualResponse = client.insertFirewallAsync(project, firewallResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -324,10 +244,12 @@ public void insertFirewallExceptionTest() throws Exception {
       ProjectName project = ProjectName.of("[PROJECT]");
       Firewall firewallResource = Firewall.newBuilder().build();
 
-      client.insertFirewall(project, firewallResource);
+      client.insertFirewallAsync(project, firewallResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -393,59 +315,18 @@ public void listFirewallsExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void patchFirewallTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void patchFirewallTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("patchFirewallTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalFirewallName firewall = ProjectGlobalFirewallName.of("[PROJECT]", "[FIREWALL]");
     Firewall firewallResource = Firewall.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse = client.patchFirewall(firewall, firewallResource, fieldMask);
+    EmptyMessage actualResponse =
+        client.patchFirewallAsync(firewall, firewallResource, fieldMask).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -476,68 +357,29 @@ public void patchFirewallExceptionTest() throws Exception {
       Firewall firewallResource = Firewall.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.patchFirewall(firewall, firewallResource, fieldMask);
+      client.patchFirewallAsync(firewall, firewallResource, fieldMask).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void updateFirewallTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void updateFirewallTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("updateFirewallTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalFirewallName firewall = ProjectGlobalFirewallName.of("[PROJECT]", "[FIREWALL]");
     Firewall firewallResource = Firewall.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse = client.updateFirewall(firewall, firewallResource, fieldMask);
+    EmptyMessage actualResponse =
+        client.updateFirewallAsync(firewall, firewallResource, fieldMask).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -568,10 +410,12 @@ public void updateFirewallExceptionTest() throws Exception {
       Firewall firewallResource = Firewall.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.updateFirewall(firewall, firewallResource, fieldMask);
+      client.updateFirewallAsync(firewall, firewallResource, fieldMask).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/ForwardingRuleClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/ForwardingRuleClientTest.java
index 88f0b6f50da5..099e297e8dcd 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/ForwardingRuleClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/ForwardingRuleClientTest.java
@@ -26,6 +26,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -42,6 +43,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -154,58 +156,16 @@ public void aggregatedListForwardingRulesExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteForwardingRuleTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteForwardingRuleTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteForwardingRuleTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionForwardingRuleName forwardingRule =
         ProjectRegionForwardingRuleName.of("[PROJECT]", "[REGION]", "[FORWARDING_RULE]");
 
-    Operation actualResponse = client.deleteForwardingRule(forwardingRule);
+    EmptyMessage actualResponse = client.deleteForwardingRuleAsync(forwardingRule).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -235,10 +195,12 @@ public void deleteForwardingRuleExceptionTest() throws Exception {
       ProjectRegionForwardingRuleName forwardingRule =
           ProjectRegionForwardingRuleName.of("[PROJECT]", "[REGION]", "[FORWARDING_RULE]");
 
-      client.deleteForwardingRule(forwardingRule);
+      client.deleteForwardingRuleAsync(forwardingRule).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -332,58 +294,17 @@ public void getForwardingRuleExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertForwardingRuleTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region2 = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region2.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertForwardingRuleTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertForwardingRuleTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
     ForwardingRule forwardingRuleResource = ForwardingRule.newBuilder().build();
 
-    Operation actualResponse = client.insertForwardingRule(region, forwardingRuleResource);
+    EmptyMessage actualResponse =
+        client.insertForwardingRuleAsync(region, forwardingRuleResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -413,10 +334,12 @@ public void insertForwardingRuleExceptionTest() throws Exception {
       ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
       ForwardingRule forwardingRuleResource = ForwardingRule.newBuilder().build();
 
-      client.insertForwardingRule(region, forwardingRuleResource);
+      client.insertForwardingRuleAsync(region, forwardingRuleResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -482,60 +405,18 @@ public void listForwardingRulesExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void setTargetForwardingRuleTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void setTargetForwardingRuleTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("setTargetForwardingRuleTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionForwardingRuleName forwardingRule =
         ProjectRegionForwardingRuleName.of("[PROJECT]", "[REGION]", "[FORWARDING_RULE]");
     TargetReference targetReferenceResource = TargetReference.newBuilder().build();
 
-    Operation actualResponse =
-        client.setTargetForwardingRule(forwardingRule, targetReferenceResource);
+    EmptyMessage actualResponse =
+        client.setTargetForwardingRuleAsync(forwardingRule, targetReferenceResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -566,10 +447,12 @@ public void setTargetForwardingRuleExceptionTest() throws Exception {
           ProjectRegionForwardingRuleName.of("[PROJECT]", "[REGION]", "[FORWARDING_RULE]");
       TargetReference targetReferenceResource = TargetReference.newBuilder().build();
 
-      client.setTargetForwardingRule(forwardingRule, targetReferenceResource);
+      client.setTargetForwardingRuleAsync(forwardingRule, targetReferenceResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/GlobalAddressClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/GlobalAddressClientTest.java
index 3e1471aaf21c..34db076fc424 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/GlobalAddressClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/GlobalAddressClientTest.java
@@ -23,6 +23,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -37,6 +38,7 @@
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -84,57 +86,15 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteGlobalAddressTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteGlobalAddressTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteGlobalAddressTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalAddressName address = ProjectGlobalAddressName.of("[PROJECT]", "[ADDRESS]");
 
-    Operation actualResponse = client.deleteGlobalAddress(address);
+    EmptyMessage actualResponse = client.deleteGlobalAddressAsync(address).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -163,10 +123,12 @@ public void deleteGlobalAddressExceptionTest() throws Exception {
     try {
       ProjectGlobalAddressName address = ProjectGlobalAddressName.of("[PROJECT]", "[ADDRESS]");
 
-      client.deleteGlobalAddress(address);
+      client.deleteGlobalAddressAsync(address).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -251,58 +213,16 @@ public void getGlobalAddressExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertGlobalAddressTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertGlobalAddressTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertGlobalAddressTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
     Address addressResource = Address.newBuilder().build();
 
-    Operation actualResponse = client.insertGlobalAddress(project, addressResource);
+    EmptyMessage actualResponse = client.insertGlobalAddressAsync(project, addressResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -332,10 +252,12 @@ public void insertGlobalAddressExceptionTest() throws Exception {
       ProjectName project = ProjectName.of("[PROJECT]");
       Address addressResource = Address.newBuilder().build();
 
-      client.insertGlobalAddress(project, addressResource);
+      client.insertGlobalAddressAsync(project, addressResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/GlobalForwardingRuleClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/GlobalForwardingRuleClientTest.java
index 88896124384b..cf3468b245cb 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/GlobalForwardingRuleClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/GlobalForwardingRuleClientTest.java
@@ -24,6 +24,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -38,6 +39,7 @@
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -87,58 +89,16 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteGlobalForwardingRuleTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteGlobalForwardingRuleTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteGlobalForwardingRuleTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalForwardingRuleName forwardingRule =
         ProjectGlobalForwardingRuleName.of("[PROJECT]", "[FORWARDING_RULE]");
 
-    Operation actualResponse = client.deleteGlobalForwardingRule(forwardingRule);
+    EmptyMessage actualResponse = client.deleteGlobalForwardingRuleAsync(forwardingRule).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -168,10 +128,12 @@ public void deleteGlobalForwardingRuleExceptionTest() throws Exception {
       ProjectGlobalForwardingRuleName forwardingRule =
           ProjectGlobalForwardingRuleName.of("[PROJECT]", "[FORWARDING_RULE]");
 
-      client.deleteGlobalForwardingRule(forwardingRule);
+      client.deleteGlobalForwardingRuleAsync(forwardingRule).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -265,58 +227,17 @@ public void getGlobalForwardingRuleExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertGlobalForwardingRuleTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertGlobalForwardingRuleTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertGlobalForwardingRuleTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
     ForwardingRule forwardingRuleResource = ForwardingRule.newBuilder().build();
 
-    Operation actualResponse = client.insertGlobalForwardingRule(project, forwardingRuleResource);
+    EmptyMessage actualResponse =
+        client.insertGlobalForwardingRuleAsync(project, forwardingRuleResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -346,10 +267,12 @@ public void insertGlobalForwardingRuleExceptionTest() throws Exception {
       ProjectName project = ProjectName.of("[PROJECT]");
       ForwardingRule forwardingRuleResource = ForwardingRule.newBuilder().build();
 
-      client.insertGlobalForwardingRule(project, forwardingRuleResource);
+      client.insertGlobalForwardingRuleAsync(project, forwardingRuleResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -416,60 +339,21 @@ public void listGlobalForwardingRulesExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void setTargetGlobalForwardingRuleTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void setTargetGlobalForwardingRuleTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("setTargetGlobalForwardingRuleTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalForwardingRuleName forwardingRule =
         ProjectGlobalForwardingRuleName.of("[PROJECT]", "[FORWARDING_RULE]");
     TargetReference targetReferenceResource = TargetReference.newBuilder().build();
 
-    Operation actualResponse =
-        client.setTargetGlobalForwardingRule(forwardingRule, targetReferenceResource);
+    EmptyMessage actualResponse =
+        client.setTargetGlobalForwardingRuleAsync(forwardingRule, targetReferenceResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -500,10 +384,12 @@ public void setTargetGlobalForwardingRuleExceptionTest() throws Exception {
           ProjectGlobalForwardingRuleName.of("[PROJECT]", "[FORWARDING_RULE]");
       TargetReference targetReferenceResource = TargetReference.newBuilder().build();
 
-      client.setTargetGlobalForwardingRule(forwardingRule, targetReferenceResource);
+      client.setTargetGlobalForwardingRuleAsync(forwardingRule, targetReferenceResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/HealthCheckClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/HealthCheckClientTest.java
index 83b79f867534..7b01fc5d52ad 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/HealthCheckClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/HealthCheckClientTest.java
@@ -25,6 +25,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -40,6 +41,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -89,58 +91,16 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteHealthCheckTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteHealthCheckTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteHealthCheckTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalHealthCheckName healthCheck =
         ProjectGlobalHealthCheckName.of("[PROJECT]", "[HEALTH_CHECK]");
 
-    Operation actualResponse = client.deleteHealthCheck(healthCheck);
+    EmptyMessage actualResponse = client.deleteHealthCheckAsync(healthCheck).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -170,10 +130,12 @@ public void deleteHealthCheckExceptionTest() throws Exception {
       ProjectGlobalHealthCheckName healthCheck =
           ProjectGlobalHealthCheckName.of("[PROJECT]", "[HEALTH_CHECK]");
 
-      client.deleteHealthCheck(healthCheck);
+      client.deleteHealthCheckAsync(healthCheck).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -249,58 +211,16 @@ public void getHealthCheckExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertHealthCheckTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertHealthCheckTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertHealthCheckTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
     HealthCheck healthCheckResource = HealthCheck.newBuilder().build();
 
-    Operation actualResponse = client.insertHealthCheck(project, healthCheckResource);
+    EmptyMessage actualResponse = client.insertHealthCheckAsync(project, healthCheckResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -330,10 +250,12 @@ public void insertHealthCheckExceptionTest() throws Exception {
       ProjectName project = ProjectName.of("[PROJECT]");
       HealthCheck healthCheckResource = HealthCheck.newBuilder().build();
 
-      client.insertHealthCheck(project, healthCheckResource);
+      client.insertHealthCheckAsync(project, healthCheckResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -399,60 +321,19 @@ public void listHealthChecksExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void patchHealthCheckTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void patchHealthCheckTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("patchHealthCheckTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalHealthCheckName healthCheck =
         ProjectGlobalHealthCheckName.of("[PROJECT]", "[HEALTH_CHECK]");
     HealthCheck healthCheckResource = HealthCheck.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse = client.patchHealthCheck(healthCheck, healthCheckResource, fieldMask);
+    EmptyMessage actualResponse =
+        client.patchHealthCheckAsync(healthCheck, healthCheckResource, fieldMask).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -484,70 +365,30 @@ public void patchHealthCheckExceptionTest() throws Exception {
       HealthCheck healthCheckResource = HealthCheck.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.patchHealthCheck(healthCheck, healthCheckResource, fieldMask);
+      client.patchHealthCheckAsync(healthCheck, healthCheckResource, fieldMask).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void updateHealthCheckTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void updateHealthCheckTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("updateHealthCheckTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalHealthCheckName healthCheck =
         ProjectGlobalHealthCheckName.of("[PROJECT]", "[HEALTH_CHECK]");
     HealthCheck healthCheckResource = HealthCheck.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse =
-        client.updateHealthCheck(healthCheck, healthCheckResource, fieldMask);
+    EmptyMessage actualResponse =
+        client.updateHealthCheckAsync(healthCheck, healthCheckResource, fieldMask).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -579,10 +420,12 @@ public void updateHealthCheckExceptionTest() throws Exception {
       HealthCheck healthCheckResource = HealthCheck.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.updateHealthCheck(healthCheck, healthCheckResource, fieldMask);
+      client.updateHealthCheckAsync(healthCheck, healthCheckResource, fieldMask).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/HttpHealthCheckClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/HttpHealthCheckClientTest.java
index 744668a725a4..7f59fd2f5595 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/HttpHealthCheckClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/HttpHealthCheckClientTest.java
@@ -25,6 +25,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -40,6 +41,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -89,58 +91,16 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteHttpHealthCheckTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteHttpHealthCheckTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteHttpHealthCheckTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalHttpHealthCheckName httpHealthCheck =
         ProjectGlobalHttpHealthCheckName.of("[PROJECT]", "[HTTP_HEALTH_CHECK]");
 
-    Operation actualResponse = client.deleteHttpHealthCheck(httpHealthCheck);
+    EmptyMessage actualResponse = client.deleteHttpHealthCheckAsync(httpHealthCheck).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -170,10 +130,12 @@ public void deleteHttpHealthCheckExceptionTest() throws Exception {
       ProjectGlobalHttpHealthCheckName httpHealthCheck =
           ProjectGlobalHttpHealthCheckName.of("[PROJECT]", "[HTTP_HEALTH_CHECK]");
 
-      client.deleteHttpHealthCheck(httpHealthCheck);
+      client.deleteHttpHealthCheckAsync(httpHealthCheck).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -253,58 +215,17 @@ public void getHttpHealthCheckExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertHttpHealthCheckTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertHttpHealthCheckTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertHttpHealthCheckTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
     HttpHealthCheck2 httpHealthCheckResource = HttpHealthCheck2.newBuilder().build();
 
-    Operation actualResponse = client.insertHttpHealthCheck(project, httpHealthCheckResource);
+    EmptyMessage actualResponse =
+        client.insertHttpHealthCheckAsync(project, httpHealthCheckResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -334,10 +255,12 @@ public void insertHttpHealthCheckExceptionTest() throws Exception {
       ProjectName project = ProjectName.of("[PROJECT]");
       HttpHealthCheck2 httpHealthCheckResource = HttpHealthCheck2.newBuilder().build();
 
-      client.insertHttpHealthCheck(project, httpHealthCheckResource);
+      client.insertHttpHealthCheckAsync(project, httpHealthCheckResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -403,61 +326,19 @@ public void listHttpHealthChecksExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void patchHttpHealthCheckTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void patchHttpHealthCheckTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("patchHttpHealthCheckTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalHttpHealthCheckName httpHealthCheck =
         ProjectGlobalHttpHealthCheckName.of("[PROJECT]", "[HTTP_HEALTH_CHECK]");
     HttpHealthCheck2 httpHealthCheckResource = HttpHealthCheck2.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse =
-        client.patchHttpHealthCheck(httpHealthCheck, httpHealthCheckResource, fieldMask);
+    EmptyMessage actualResponse =
+        client.patchHttpHealthCheckAsync(httpHealthCheck, httpHealthCheckResource, fieldMask).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -489,70 +370,32 @@ public void patchHttpHealthCheckExceptionTest() throws Exception {
       HttpHealthCheck2 httpHealthCheckResource = HttpHealthCheck2.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.patchHttpHealthCheck(httpHealthCheck, httpHealthCheckResource, fieldMask);
+      client.patchHttpHealthCheckAsync(httpHealthCheck, httpHealthCheckResource, fieldMask).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void updateHttpHealthCheckTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void updateHttpHealthCheckTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("updateHttpHealthCheckTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalHttpHealthCheckName httpHealthCheck =
         ProjectGlobalHttpHealthCheckName.of("[PROJECT]", "[HTTP_HEALTH_CHECK]");
     HttpHealthCheck2 httpHealthCheckResource = HttpHealthCheck2.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse =
-        client.updateHttpHealthCheck(httpHealthCheck, httpHealthCheckResource, fieldMask);
+    EmptyMessage actualResponse =
+        client
+            .updateHttpHealthCheckAsync(httpHealthCheck, httpHealthCheckResource, fieldMask)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -584,10 +427,12 @@ public void updateHttpHealthCheckExceptionTest() throws Exception {
       HttpHealthCheck2 httpHealthCheckResource = HttpHealthCheck2.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.updateHttpHealthCheck(httpHealthCheck, httpHealthCheckResource, fieldMask);
+      client.updateHttpHealthCheckAsync(httpHealthCheck, httpHealthCheckResource, fieldMask).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/HttpsHealthCheckClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/HttpsHealthCheckClientTest.java
index 597b5a9f5c1e..ae2a18d3a6d2 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/HttpsHealthCheckClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/HttpsHealthCheckClientTest.java
@@ -25,6 +25,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -40,6 +41,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -89,58 +91,16 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteHttpsHealthCheckTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteHttpsHealthCheckTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteHttpsHealthCheckTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalHttpsHealthCheckName httpsHealthCheck =
         ProjectGlobalHttpsHealthCheckName.of("[PROJECT]", "[HTTPS_HEALTH_CHECK]");
 
-    Operation actualResponse = client.deleteHttpsHealthCheck(httpsHealthCheck);
+    EmptyMessage actualResponse = client.deleteHttpsHealthCheckAsync(httpsHealthCheck).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -170,10 +130,12 @@ public void deleteHttpsHealthCheckExceptionTest() throws Exception {
       ProjectGlobalHttpsHealthCheckName httpsHealthCheck =
           ProjectGlobalHttpsHealthCheckName.of("[PROJECT]", "[HTTPS_HEALTH_CHECK]");
 
-      client.deleteHttpsHealthCheck(httpsHealthCheck);
+      client.deleteHttpsHealthCheckAsync(httpsHealthCheck).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -253,58 +215,17 @@ public void getHttpsHealthCheckExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertHttpsHealthCheckTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertHttpsHealthCheckTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertHttpsHealthCheckTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
     HttpsHealthCheck2 httpsHealthCheckResource = HttpsHealthCheck2.newBuilder().build();
 
-    Operation actualResponse = client.insertHttpsHealthCheck(project, httpsHealthCheckResource);
+    EmptyMessage actualResponse =
+        client.insertHttpsHealthCheckAsync(project, httpsHealthCheckResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -334,10 +255,12 @@ public void insertHttpsHealthCheckExceptionTest() throws Exception {
       ProjectName project = ProjectName.of("[PROJECT]");
       HttpsHealthCheck2 httpsHealthCheckResource = HttpsHealthCheck2.newBuilder().build();
 
-      client.insertHttpsHealthCheck(project, httpsHealthCheckResource);
+      client.insertHttpsHealthCheckAsync(project, httpsHealthCheckResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -403,61 +326,21 @@ public void listHttpsHealthChecksExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void patchHttpsHealthCheckTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void patchHttpsHealthCheckTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("patchHttpsHealthCheckTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalHttpsHealthCheckName httpsHealthCheck =
         ProjectGlobalHttpsHealthCheckName.of("[PROJECT]", "[HTTPS_HEALTH_CHECK]");
     HttpsHealthCheck2 httpsHealthCheckResource = HttpsHealthCheck2.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse =
-        client.patchHttpsHealthCheck(httpsHealthCheck, httpsHealthCheckResource, fieldMask);
+    EmptyMessage actualResponse =
+        client
+            .patchHttpsHealthCheckAsync(httpsHealthCheck, httpsHealthCheckResource, fieldMask)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -489,70 +372,34 @@ public void patchHttpsHealthCheckExceptionTest() throws Exception {
       HttpsHealthCheck2 httpsHealthCheckResource = HttpsHealthCheck2.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.patchHttpsHealthCheck(httpsHealthCheck, httpsHealthCheckResource, fieldMask);
+      client
+          .patchHttpsHealthCheckAsync(httpsHealthCheck, httpsHealthCheckResource, fieldMask)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void updateHttpsHealthCheckTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void updateHttpsHealthCheckTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("updateHttpsHealthCheckTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalHttpsHealthCheckName httpsHealthCheck =
         ProjectGlobalHttpsHealthCheckName.of("[PROJECT]", "[HTTPS_HEALTH_CHECK]");
     HttpsHealthCheck2 httpsHealthCheckResource = HttpsHealthCheck2.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse =
-        client.updateHttpsHealthCheck(httpsHealthCheck, httpsHealthCheckResource, fieldMask);
+    EmptyMessage actualResponse =
+        client
+            .updateHttpsHealthCheckAsync(httpsHealthCheck, httpsHealthCheckResource, fieldMask)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -584,10 +431,14 @@ public void updateHttpsHealthCheckExceptionTest() throws Exception {
       HttpsHealthCheck2 httpsHealthCheckResource = HttpsHealthCheck2.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.updateHttpsHealthCheck(httpsHealthCheck, httpsHealthCheckResource, fieldMask);
+      client
+          .updateHttpsHealthCheckAsync(httpsHealthCheck, httpsHealthCheckResource, fieldMask)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/ImageClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/ImageClientTest.java
index db3b6e1a3a2e..866597a6cfa0 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/ImageClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/ImageClientTest.java
@@ -29,6 +29,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -43,6 +44,7 @@
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -96,57 +98,15 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteImageTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteImageTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteImageTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalImageName image = ProjectGlobalImageName.of("[PROJECT]", "[IMAGE]");
 
-    Operation actualResponse = client.deleteImage(image);
+    EmptyMessage actualResponse = client.deleteImageAsync(image).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -175,67 +135,28 @@ public void deleteImageExceptionTest() throws Exception {
     try {
       ProjectGlobalImageName image = ProjectGlobalImageName.of("[PROJECT]", "[IMAGE]");
 
-      client.deleteImage(image);
+      client.deleteImageAsync(image).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void deprecateImageTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deprecateImageTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deprecateImageTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalImageName image = ProjectGlobalImageName.of("[PROJECT]", "[IMAGE]");
     DeprecationStatus deprecationStatusResource = DeprecationStatus.newBuilder().build();
 
-    Operation actualResponse = client.deprecateImage(image, deprecationStatusResource);
+    EmptyMessage actualResponse =
+        client.deprecateImageAsync(image, deprecationStatusResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -265,10 +186,12 @@ public void deprecateImageExceptionTest() throws Exception {
       ProjectGlobalImageName image = ProjectGlobalImageName.of("[PROJECT]", "[IMAGE]");
       DeprecationStatus deprecationStatusResource = DeprecationStatus.newBuilder().build();
 
-      client.deprecateImage(image, deprecationStatusResource);
+      client.deprecateImageAsync(image, deprecationStatusResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -489,59 +412,18 @@ public void getIamPolicyImageExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertImageTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertImageTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertImageTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     Boolean forceCreate = true;
     ProjectName project = ProjectName.of("[PROJECT]");
     Image imageResource = Image.newBuilder().build();
 
-    Operation actualResponse = client.insertImage(forceCreate, project, imageResource);
+    EmptyMessage actualResponse =
+        client.insertImageAsync(forceCreate, project, imageResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -572,10 +454,12 @@ public void insertImageExceptionTest() throws Exception {
       ProjectName project = ProjectName.of("[PROJECT]");
       Image imageResource = Image.newBuilder().build();
 
-      client.insertImage(forceCreate, project, imageResource);
+      client.insertImageAsync(forceCreate, project, imageResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -695,60 +579,19 @@ public void setIamPolicyImageExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void setLabelsImageTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void setLabelsImageTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("setLabelsImageTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalImageResourceName resource =
         ProjectGlobalImageResourceName.of("[PROJECT]", "[RESOURCE]");
     GlobalSetLabelsRequest globalSetLabelsRequestResource =
         GlobalSetLabelsRequest.newBuilder().build();
 
-    Operation actualResponse = client.setLabelsImage(resource, globalSetLabelsRequestResource);
+    EmptyMessage actualResponse =
+        client.setLabelsImageAsync(resource, globalSetLabelsRequestResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -780,10 +623,12 @@ public void setLabelsImageExceptionTest() throws Exception {
       GlobalSetLabelsRequest globalSetLabelsRequestResource =
           GlobalSetLabelsRequest.newBuilder().build();
 
-      client.setLabelsImage(resource, globalSetLabelsRequestResource);
+      client.setLabelsImageAsync(resource, globalSetLabelsRequestResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/InstanceClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/InstanceClientTest.java
index 55611efc3005..7a04c6766204 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/InstanceClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/InstanceClientTest.java
@@ -52,6 +52,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -69,6 +70,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -143,61 +145,19 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void addAccessConfigInstanceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void addAccessConfigInstanceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("addAccessConfigInstanceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceName instance =
         ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
     String networkInterface = "networkInterface902258792";
     AccessConfig accessConfigResource = AccessConfig.newBuilder().build();
 
-    Operation actualResponse =
-        client.addAccessConfigInstance(instance, networkInterface, accessConfigResource);
+    EmptyMessage actualResponse =
+        client.addAccessConfigInstanceAsync(instance, networkInterface, accessConfigResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -229,10 +189,12 @@ public void addAccessConfigInstanceExceptionTest() throws Exception {
       String networkInterface = "networkInterface902258792";
       AccessConfig accessConfigResource = AccessConfig.newBuilder().build();
 
-      client.addAccessConfigInstance(instance, networkInterface, accessConfigResource);
+      client.addAccessConfigInstanceAsync(instance, networkInterface, accessConfigResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -301,61 +263,19 @@ public void aggregatedListInstancesExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void attachDiskInstanceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void attachDiskInstanceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("attachDiskInstanceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceName instance =
         ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
     Boolean forceAttach = false;
     AttachedDisk attachedDiskResource = AttachedDisk.newBuilder().build();
 
-    Operation actualResponse =
-        client.attachDiskInstance(instance, forceAttach, attachedDiskResource);
+    EmptyMessage actualResponse =
+        client.attachDiskInstanceAsync(instance, forceAttach, attachedDiskResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -387,67 +307,27 @@ public void attachDiskInstanceExceptionTest() throws Exception {
       Boolean forceAttach = false;
       AttachedDisk attachedDiskResource = AttachedDisk.newBuilder().build();
 
-      client.attachDiskInstance(instance, forceAttach, attachedDiskResource);
+      client.attachDiskInstanceAsync(instance, forceAttach, attachedDiskResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void deleteInstanceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteInstanceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteInstanceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceName instance =
         ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
 
-    Operation actualResponse = client.deleteInstance(instance);
+    EmptyMessage actualResponse = client.deleteInstanceAsync(instance).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -477,70 +357,30 @@ public void deleteInstanceExceptionTest() throws Exception {
       ProjectZoneInstanceName instance =
           ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
 
-      client.deleteInstance(instance);
+      client.deleteInstanceAsync(instance).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void deleteAccessConfigInstanceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteAccessConfigInstanceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteAccessConfigInstanceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceName instance =
         ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
     String networkInterface = "networkInterface902258792";
     String accessConfig = "accessConfig-464014723";
 
-    Operation actualResponse =
-        client.deleteAccessConfigInstance(instance, networkInterface, accessConfig);
+    EmptyMessage actualResponse =
+        client.deleteAccessConfigInstanceAsync(instance, networkInterface, accessConfig).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -572,68 +412,28 @@ public void deleteAccessConfigInstanceExceptionTest() throws Exception {
       String networkInterface = "networkInterface902258792";
       String accessConfig = "accessConfig-464014723";
 
-      client.deleteAccessConfigInstance(instance, networkInterface, accessConfig);
+      client.deleteAccessConfigInstanceAsync(instance, networkInterface, accessConfig).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void detachDiskInstanceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void detachDiskInstanceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("detachDiskInstanceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceName instance =
         ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
     String deviceName = "deviceName-1543071020";
 
-    Operation actualResponse = client.detachDiskInstance(instance, deviceName);
+    EmptyMessage actualResponse = client.detachDiskInstanceAsync(instance, deviceName).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -664,10 +464,12 @@ public void detachDiskInstanceExceptionTest() throws Exception {
           ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
       String deviceName = "deviceName-1543071020";
 
-      client.detachDiskInstance(instance, deviceName);
+      client.detachDiskInstanceAsync(instance, deviceName).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -868,58 +670,16 @@ public void getSerialPortOutputInstanceExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertInstanceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone2 = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone2.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertInstanceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertInstanceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
     Instance instanceResource = Instance.newBuilder().build();
 
-    Operation actualResponse = client.insertInstance(zone, instanceResource);
+    EmptyMessage actualResponse = client.insertInstanceAsync(zone, instanceResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -949,10 +709,12 @@ public void insertInstanceExceptionTest() throws Exception {
       ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
       Instance instanceResource = Instance.newBuilder().build();
 
-      client.insertInstance(zone, instanceResource);
+      client.insertInstanceAsync(zone, instanceResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -1080,58 +842,16 @@ public void listReferrersInstancesExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void resetInstanceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void resetInstanceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("resetInstanceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceName instance =
         ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
 
-    Operation actualResponse = client.resetInstance(instance);
+    EmptyMessage actualResponse = client.resetInstanceAsync(instance).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -1161,68 +881,32 @@ public void resetInstanceExceptionTest() throws Exception {
       ProjectZoneInstanceName instance =
           ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
 
-      client.resetInstance(instance);
+      client.resetInstanceAsync(instance).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void setDeletionProtectionInstanceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void setDeletionProtectionInstanceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("setDeletionProtectionInstanceTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceResourceName resource =
         ProjectZoneInstanceResourceName.of("[PROJECT]", "[ZONE]", "[RESOURCE]");
     Boolean deletionProtection = true;
 
-    Operation actualResponse = client.setDeletionProtectionInstance(resource, deletionProtection);
+    EmptyMessage actualResponse =
+        client.setDeletionProtectionInstanceAsync(resource, deletionProtection).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -1253,69 +937,30 @@ public void setDeletionProtectionInstanceExceptionTest() throws Exception {
           ProjectZoneInstanceResourceName.of("[PROJECT]", "[ZONE]", "[RESOURCE]");
       Boolean deletionProtection = true;
 
-      client.setDeletionProtectionInstance(resource, deletionProtection);
+      client.setDeletionProtectionInstanceAsync(resource, deletionProtection).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void setDiskAutoDeleteInstanceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void setDiskAutoDeleteInstanceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("setDiskAutoDeleteInstanceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceName instance =
         ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
     Boolean autoDelete = false;
     String deviceName = "deviceName-1543071020";
 
-    Operation actualResponse = client.setDiskAutoDeleteInstance(instance, autoDelete, deviceName);
+    EmptyMessage actualResponse =
+        client.setDiskAutoDeleteInstanceAsync(instance, autoDelete, deviceName).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -1347,10 +992,12 @@ public void setDiskAutoDeleteInstanceExceptionTest() throws Exception {
       Boolean autoDelete = false;
       String deviceName = "deviceName-1543071020";
 
-      client.setDiskAutoDeleteInstance(instance, autoDelete, deviceName);
+      client.setDiskAutoDeleteInstanceAsync(instance, autoDelete, deviceName).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -1408,61 +1055,19 @@ public void setIamPolicyInstanceExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void setLabelsInstanceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void setLabelsInstanceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("setLabelsInstanceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceName instance =
         ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
     InstancesSetLabelsRequest instancesSetLabelsRequestResource =
         InstancesSetLabelsRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.setLabelsInstance(instance, instancesSetLabelsRequestResource);
+    EmptyMessage actualResponse =
+        client.setLabelsInstanceAsync(instance, instancesSetLabelsRequestResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -1494,70 +1099,32 @@ public void setLabelsInstanceExceptionTest() throws Exception {
       InstancesSetLabelsRequest instancesSetLabelsRequestResource =
           InstancesSetLabelsRequest.newBuilder().build();
 
-      client.setLabelsInstance(instance, instancesSetLabelsRequestResource);
+      client.setLabelsInstanceAsync(instance, instancesSetLabelsRequestResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void setMachineResourcesInstanceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void setMachineResourcesInstanceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("setMachineResourcesInstanceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceName instance =
         ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
     InstancesSetMachineResourcesRequest instancesSetMachineResourcesRequestResource =
         InstancesSetMachineResourcesRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.setMachineResourcesInstance(instance, instancesSetMachineResourcesRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .setMachineResourcesInstanceAsync(instance, instancesSetMachineResourcesRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -1589,70 +1156,32 @@ public void setMachineResourcesInstanceExceptionTest() throws Exception {
       InstancesSetMachineResourcesRequest instancesSetMachineResourcesRequestResource =
           InstancesSetMachineResourcesRequest.newBuilder().build();
 
-      client.setMachineResourcesInstance(instance, instancesSetMachineResourcesRequestResource);
+      client
+          .setMachineResourcesInstanceAsync(instance, instancesSetMachineResourcesRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void setMachineTypeInstanceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void setMachineTypeInstanceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("setMachineTypeInstanceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceName instance =
         ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
     InstancesSetMachineTypeRequest instancesSetMachineTypeRequestResource =
         InstancesSetMachineTypeRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.setMachineTypeInstance(instance, instancesSetMachineTypeRequestResource);
+    EmptyMessage actualResponse =
+        client.setMachineTypeInstanceAsync(instance, instancesSetMachineTypeRequestResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -1684,68 +1213,28 @@ public void setMachineTypeInstanceExceptionTest() throws Exception {
       InstancesSetMachineTypeRequest instancesSetMachineTypeRequestResource =
           InstancesSetMachineTypeRequest.newBuilder().build();
 
-      client.setMachineTypeInstance(instance, instancesSetMachineTypeRequestResource);
+      client.setMachineTypeInstanceAsync(instance, instancesSetMachineTypeRequestResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void setMetadataInstanceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void setMetadataInstanceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("setMetadataInstanceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceName instance =
         ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
     Metadata metadataResource = Metadata.newBuilder().build();
 
-    Operation actualResponse = client.setMetadataInstance(instance, metadataResource);
+    EmptyMessage actualResponse = client.setMetadataInstanceAsync(instance, metadataResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -1776,70 +1265,32 @@ public void setMetadataInstanceExceptionTest() throws Exception {
           ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
       Metadata metadataResource = Metadata.newBuilder().build();
 
-      client.setMetadataInstance(instance, metadataResource);
+      client.setMetadataInstanceAsync(instance, metadataResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void setMinCpuPlatformInstanceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void setMinCpuPlatformInstanceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("setMinCpuPlatformInstanceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceName instance =
         ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
     InstancesSetMinCpuPlatformRequest instancesSetMinCpuPlatformRequestResource =
         InstancesSetMinCpuPlatformRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.setMinCpuPlatformInstance(instance, instancesSetMinCpuPlatformRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .setMinCpuPlatformInstanceAsync(instance, instancesSetMinCpuPlatformRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -1871,68 +1322,31 @@ public void setMinCpuPlatformInstanceExceptionTest() throws Exception {
       InstancesSetMinCpuPlatformRequest instancesSetMinCpuPlatformRequestResource =
           InstancesSetMinCpuPlatformRequest.newBuilder().build();
 
-      client.setMinCpuPlatformInstance(instance, instancesSetMinCpuPlatformRequestResource);
+      client
+          .setMinCpuPlatformInstanceAsync(instance, instancesSetMinCpuPlatformRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void setSchedulingInstanceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void setSchedulingInstanceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("setSchedulingInstanceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceName instance =
         ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
     Scheduling schedulingResource = Scheduling.newBuilder().build();
 
-    Operation actualResponse = client.setSchedulingInstance(instance, schedulingResource);
+    EmptyMessage actualResponse =
+        client.setSchedulingInstanceAsync(instance, schedulingResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -1963,70 +1377,32 @@ public void setSchedulingInstanceExceptionTest() throws Exception {
           ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
       Scheduling schedulingResource = Scheduling.newBuilder().build();
 
-      client.setSchedulingInstance(instance, schedulingResource);
+      client.setSchedulingInstanceAsync(instance, schedulingResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void setServiceAccountInstanceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void setServiceAccountInstanceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("setServiceAccountInstanceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceName instance =
         ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
     InstancesSetServiceAccountRequest instancesSetServiceAccountRequestResource =
         InstancesSetServiceAccountRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.setServiceAccountInstance(instance, instancesSetServiceAccountRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .setServiceAccountInstanceAsync(instance, instancesSetServiceAccountRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -2058,68 +1434,30 @@ public void setServiceAccountInstanceExceptionTest() throws Exception {
       InstancesSetServiceAccountRequest instancesSetServiceAccountRequestResource =
           InstancesSetServiceAccountRequest.newBuilder().build();
 
-      client.setServiceAccountInstance(instance, instancesSetServiceAccountRequestResource);
+      client
+          .setServiceAccountInstanceAsync(instance, instancesSetServiceAccountRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void setTagsInstanceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void setTagsInstanceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("setTagsInstanceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceName instance =
         ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
     Tags tagsResource = Tags.newBuilder().build();
 
-    Operation actualResponse = client.setTagsInstance(instance, tagsResource);
+    EmptyMessage actualResponse = client.setTagsInstanceAsync(instance, tagsResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -2150,67 +1488,30 @@ public void setTagsInstanceExceptionTest() throws Exception {
           ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
       Tags tagsResource = Tags.newBuilder().build();
 
-      client.setTagsInstance(instance, tagsResource);
+      client.setTagsInstanceAsync(instance, tagsResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void simulateMaintenanceEventInstanceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void simulateMaintenanceEventInstanceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("simulateMaintenanceEventInstanceTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceName instance =
         ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
 
-    Operation actualResponse = client.simulateMaintenanceEventInstance(instance);
+    EmptyMessage actualResponse = client.simulateMaintenanceEventInstanceAsync(instance).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -2240,67 +1541,27 @@ public void simulateMaintenanceEventInstanceExceptionTest() throws Exception {
       ProjectZoneInstanceName instance =
           ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
 
-      client.simulateMaintenanceEventInstance(instance);
+      client.simulateMaintenanceEventInstanceAsync(instance).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void startInstanceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void startInstanceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("startInstanceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceName instance =
         ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
 
-    Operation actualResponse = client.startInstance(instance);
+    EmptyMessage actualResponse = client.startInstanceAsync(instance).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -2330,71 +1591,36 @@ public void startInstanceExceptionTest() throws Exception {
       ProjectZoneInstanceName instance =
           ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
 
-      client.startInstance(instance);
+      client.startInstanceAsync(instance).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void startWithEncryptionKeyInstanceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void startWithEncryptionKeyInstanceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("startWithEncryptionKeyInstanceTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceName instance =
         ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
     InstancesStartWithEncryptionKeyRequest instancesStartWithEncryptionKeyRequestResource =
         InstancesStartWithEncryptionKeyRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.startWithEncryptionKeyInstance(
-            instance, instancesStartWithEncryptionKeyRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .startWithEncryptionKeyInstanceAsync(
+                instance, instancesStartWithEncryptionKeyRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -2426,68 +1652,30 @@ public void startWithEncryptionKeyInstanceExceptionTest() throws Exception {
       InstancesStartWithEncryptionKeyRequest instancesStartWithEncryptionKeyRequestResource =
           InstancesStartWithEncryptionKeyRequest.newBuilder().build();
 
-      client.startWithEncryptionKeyInstance(
-          instance, instancesStartWithEncryptionKeyRequestResource);
+      client
+          .startWithEncryptionKeyInstanceAsync(
+              instance, instancesStartWithEncryptionKeyRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void stopInstanceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void stopInstanceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("stopInstanceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceName instance =
         ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
 
-    Operation actualResponse = client.stopInstance(instance);
+    EmptyMessage actualResponse = client.stopInstanceAsync(instance).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -2517,10 +1705,12 @@ public void stopInstanceExceptionTest() throws Exception {
       ProjectZoneInstanceName instance =
           ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
 
-      client.stopInstance(instance);
+      client.stopInstanceAsync(instance).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -2577,61 +1767,21 @@ public void testIamPermissionsInstanceExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void updateAccessConfigInstanceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void updateAccessConfigInstanceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("updateAccessConfigInstanceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceName instance =
         ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
     String networkInterface = "networkInterface902258792";
     AccessConfig accessConfigResource = AccessConfig.newBuilder().build();
 
-    Operation actualResponse =
-        client.updateAccessConfigInstance(instance, networkInterface, accessConfigResource);
+    EmptyMessage actualResponse =
+        client
+            .updateAccessConfigInstanceAsync(instance, networkInterface, accessConfigResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -2663,62 +1813,27 @@ public void updateAccessConfigInstanceExceptionTest() throws Exception {
       String networkInterface = "networkInterface902258792";
       AccessConfig accessConfigResource = AccessConfig.newBuilder().build();
 
-      client.updateAccessConfigInstance(instance, networkInterface, accessConfigResource);
+      client
+          .updateAccessConfigInstanceAsync(instance, networkInterface, accessConfigResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void updateNetworkInterfaceInstanceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void updateNetworkInterfaceInstanceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("updateNetworkInterfaceInstanceTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceName instance =
         ProjectZoneInstanceName.of("[PROJECT]", "[ZONE]", "[INSTANCE]");
@@ -2726,9 +1841,11 @@ public void updateNetworkInterfaceInstanceTest() {
     NetworkInterface networkInterfaceResource = NetworkInterface.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse =
-        client.updateNetworkInterfaceInstance(
-            instance, networkInterface, networkInterfaceResource, fieldMask);
+    EmptyMessage actualResponse =
+        client
+            .updateNetworkInterfaceInstanceAsync(
+                instance, networkInterface, networkInterfaceResource, fieldMask)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -2761,11 +1878,15 @@ public void updateNetworkInterfaceInstanceExceptionTest() throws Exception {
       NetworkInterface networkInterfaceResource = NetworkInterface.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.updateNetworkInterfaceInstance(
-          instance, networkInterface, networkInterfaceResource, fieldMask);
+      client
+          .updateNetworkInterfaceInstanceAsync(
+              instance, networkInterface, networkInterfaceResource, fieldMask)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/InstanceGroupClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/InstanceGroupClientTest.java
index af1ee4f7fb90..b223c6cea49d 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/InstanceGroupClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/InstanceGroupClientTest.java
@@ -30,6 +30,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -46,6 +47,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -98,61 +100,22 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void addInstancesInstanceGroupTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void addInstancesInstanceGroupTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("addInstancesInstanceGroupTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceGroupName instanceGroup =
         ProjectZoneInstanceGroupName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP]");
     InstanceGroupsAddInstancesRequest instanceGroupsAddInstancesRequestResource =
         InstanceGroupsAddInstancesRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.addInstancesInstanceGroup(instanceGroup, instanceGroupsAddInstancesRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .addInstancesInstanceGroupAsync(
+                instanceGroup, instanceGroupsAddInstancesRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -184,10 +147,14 @@ public void addInstancesInstanceGroupExceptionTest() throws Exception {
       InstanceGroupsAddInstancesRequest instanceGroupsAddInstancesRequestResource =
           InstanceGroupsAddInstancesRequest.newBuilder().build();
 
-      client.addInstancesInstanceGroup(instanceGroup, instanceGroupsAddInstancesRequestResource);
+      client
+          .addInstancesInstanceGroupAsync(instanceGroup, instanceGroupsAddInstancesRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -256,58 +223,16 @@ public void aggregatedListInstanceGroupsExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteInstanceGroupTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteInstanceGroupTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteInstanceGroupTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceGroupName instanceGroup =
         ProjectZoneInstanceGroupName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP]");
 
-    Operation actualResponse = client.deleteInstanceGroup(instanceGroup);
+    EmptyMessage actualResponse = client.deleteInstanceGroupAsync(instanceGroup).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -337,10 +262,12 @@ public void deleteInstanceGroupExceptionTest() throws Exception {
       ProjectZoneInstanceGroupName instanceGroup =
           ProjectZoneInstanceGroupName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP]");
 
-      client.deleteInstanceGroup(instanceGroup);
+      client.deleteInstanceGroupAsync(instanceGroup).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -419,58 +346,17 @@ public void getInstanceGroupExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertInstanceGroupTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone2 = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone2.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertInstanceGroupTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertInstanceGroupTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
     InstanceGroup instanceGroupResource = InstanceGroup.newBuilder().build();
 
-    Operation actualResponse = client.insertInstanceGroup(zone, instanceGroupResource);
+    EmptyMessage actualResponse =
+        client.insertInstanceGroupAsync(zone, instanceGroupResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -500,10 +386,12 @@ public void insertInstanceGroupExceptionTest() throws Exception {
       ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
       InstanceGroup instanceGroupResource = InstanceGroup.newBuilder().build();
 
-      client.insertInstanceGroup(zone, instanceGroupResource);
+      client.insertInstanceGroupAsync(zone, instanceGroupResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -637,62 +525,25 @@ public void listInstancesInstanceGroupsExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void removeInstancesInstanceGroupTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void removeInstancesInstanceGroupTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("removeInstancesInstanceGroupTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceGroupName instanceGroup =
         ProjectZoneInstanceGroupName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP]");
     InstanceGroupsRemoveInstancesRequest instanceGroupsRemoveInstancesRequestResource =
         InstanceGroupsRemoveInstancesRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.removeInstancesInstanceGroup(
-            instanceGroup, instanceGroupsRemoveInstancesRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .removeInstancesInstanceGroupAsync(
+                instanceGroup, instanceGroupsRemoveInstancesRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -724,72 +575,36 @@ public void removeInstancesInstanceGroupExceptionTest() throws Exception {
       InstanceGroupsRemoveInstancesRequest instanceGroupsRemoveInstancesRequestResource =
           InstanceGroupsRemoveInstancesRequest.newBuilder().build();
 
-      client.removeInstancesInstanceGroup(
-          instanceGroup, instanceGroupsRemoveInstancesRequestResource);
+      client
+          .removeInstancesInstanceGroupAsync(
+              instanceGroup, instanceGroupsRemoveInstancesRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void setNamedPortsInstanceGroupTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void setNamedPortsInstanceGroupTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("setNamedPortsInstanceGroupTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceGroupName instanceGroup =
         ProjectZoneInstanceGroupName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP]");
     InstanceGroupsSetNamedPortsRequest instanceGroupsSetNamedPortsRequestResource =
         InstanceGroupsSetNamedPortsRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.setNamedPortsInstanceGroup(
-            instanceGroup, instanceGroupsSetNamedPortsRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .setNamedPortsInstanceGroupAsync(
+                instanceGroup, instanceGroupsSetNamedPortsRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -821,10 +636,15 @@ public void setNamedPortsInstanceGroupExceptionTest() throws Exception {
       InstanceGroupsSetNamedPortsRequest instanceGroupsSetNamedPortsRequestResource =
           InstanceGroupsSetNamedPortsRequest.newBuilder().build();
 
-      client.setNamedPortsInstanceGroup(instanceGroup, instanceGroupsSetNamedPortsRequestResource);
+      client
+          .setNamedPortsInstanceGroupAsync(
+              instanceGroup, instanceGroupsSetNamedPortsRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/InstanceGroupManagerClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/InstanceGroupManagerClientTest.java
index 78b7e7d2950d..02e6417b7441 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/InstanceGroupManagerClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/InstanceGroupManagerClientTest.java
@@ -33,6 +33,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -50,6 +51,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -107,53 +109,14 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void abandonInstancesInstanceGroupManagerTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void abandonInstancesInstanceGroupManagerTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("abandonInstancesInstanceGroupManagerTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceGroupManagerName instanceGroupManager =
         ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]");
@@ -161,9 +124,11 @@ public void abandonInstancesInstanceGroupManagerTest() {
         instanceGroupManagersAbandonInstancesRequestResource =
             InstanceGroupManagersAbandonInstancesRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.abandonInstancesInstanceGroupManager(
-            instanceGroupManager, instanceGroupManagersAbandonInstancesRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .abandonInstancesInstanceGroupManagerAsync(
+                instanceGroupManager, instanceGroupManagersAbandonInstancesRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -196,11 +161,15 @@ public void abandonInstancesInstanceGroupManagerExceptionTest() throws Exception
           instanceGroupManagersAbandonInstancesRequestResource =
               InstanceGroupManagersAbandonInstancesRequest.newBuilder().build();
 
-      client.abandonInstancesInstanceGroupManager(
-          instanceGroupManager, instanceGroupManagersAbandonInstancesRequestResource);
+      client
+          .abandonInstancesInstanceGroupManagerAsync(
+              instanceGroupManager, instanceGroupManagersAbandonInstancesRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -271,58 +240,17 @@ public void aggregatedListInstanceGroupManagersExceptionTest() throws Exception
 
   @Test
   @SuppressWarnings("all")
-  public void deleteInstanceGroupManagerTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteInstanceGroupManagerTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteInstanceGroupManagerTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceGroupManagerName instanceGroupManager =
         ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]");
 
-    Operation actualResponse = client.deleteInstanceGroupManager(instanceGroupManager);
+    EmptyMessage actualResponse =
+        client.deleteInstanceGroupManagerAsync(instanceGroupManager).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -352,62 +280,25 @@ public void deleteInstanceGroupManagerExceptionTest() throws Exception {
       ProjectZoneInstanceGroupManagerName instanceGroupManager =
           ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]");
 
-      client.deleteInstanceGroupManager(instanceGroupManager);
+      client.deleteInstanceGroupManagerAsync(instanceGroupManager).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void deleteInstancesInstanceGroupManagerTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void deleteInstancesInstanceGroupManagerTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("deleteInstancesInstanceGroupManagerTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceGroupManagerName instanceGroupManager =
         ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]");
@@ -415,9 +306,11 @@ public void deleteInstancesInstanceGroupManagerTest() {
         instanceGroupManagersDeleteInstancesRequestResource =
             InstanceGroupManagersDeleteInstancesRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.deleteInstancesInstanceGroupManager(
-            instanceGroupManager, instanceGroupManagersDeleteInstancesRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .deleteInstancesInstanceGroupManagerAsync(
+                instanceGroupManager, instanceGroupManagersDeleteInstancesRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -450,11 +343,15 @@ public void deleteInstancesInstanceGroupManagerExceptionTest() throws Exception
           instanceGroupManagersDeleteInstancesRequestResource =
               InstanceGroupManagersDeleteInstancesRequest.newBuilder().build();
 
-      client.deleteInstancesInstanceGroupManager(
-          instanceGroupManager, instanceGroupManagersDeleteInstancesRequestResource);
+      client
+          .deleteInstancesInstanceGroupManagerAsync(
+              instanceGroupManager, instanceGroupManagersDeleteInstancesRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -536,59 +433,17 @@ public void getInstanceGroupManagerExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertInstanceGroupManagerTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone2 = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone2.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertInstanceGroupManagerTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertInstanceGroupManagerTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
     InstanceGroupManager instanceGroupManagerResource = InstanceGroupManager.newBuilder().build();
 
-    Operation actualResponse =
-        client.insertInstanceGroupManager(zone, instanceGroupManagerResource);
+    EmptyMessage actualResponse =
+        client.insertInstanceGroupManagerAsync(zone, instanceGroupManagerResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -618,10 +473,12 @@ public void insertInstanceGroupManagerExceptionTest() throws Exception {
       ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
       InstanceGroupManager instanceGroupManagerResource = InstanceGroupManager.newBuilder().build();
 
-      client.insertInstanceGroupManager(zone, instanceGroupManagerResource);
+      client.insertInstanceGroupManagerAsync(zone, instanceGroupManagerResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -736,62 +593,22 @@ public void listManagedInstancesInstanceGroupManagersExceptionTest() throws Exce
 
   @Test
   @SuppressWarnings("all")
-  public void patchInstanceGroupManagerTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void patchInstanceGroupManagerTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("patchInstanceGroupManagerTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceGroupManagerName instanceGroupManager =
         ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]");
     InstanceGroupManager instanceGroupManagerResource = InstanceGroupManager.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse =
-        client.patchInstanceGroupManager(
-            instanceGroupManager, instanceGroupManagerResource, fieldMask);
+    EmptyMessage actualResponse =
+        client
+            .patchInstanceGroupManagerAsync(
+                instanceGroupManager, instanceGroupManagerResource, fieldMask)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -823,63 +640,28 @@ public void patchInstanceGroupManagerExceptionTest() throws Exception {
       InstanceGroupManager instanceGroupManagerResource = InstanceGroupManager.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.patchInstanceGroupManager(
-          instanceGroupManager, instanceGroupManagerResource, fieldMask);
+      client
+          .patchInstanceGroupManagerAsync(
+              instanceGroupManager, instanceGroupManagerResource, fieldMask)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void recreateInstancesInstanceGroupManagerTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void recreateInstancesInstanceGroupManagerTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("recreateInstancesInstanceGroupManagerTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceGroupManagerName instanceGroupManager =
         ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]");
@@ -887,9 +669,11 @@ public void recreateInstancesInstanceGroupManagerTest() {
         instanceGroupManagersRecreateInstancesRequestResource =
             InstanceGroupManagersRecreateInstancesRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.recreateInstancesInstanceGroupManager(
-            instanceGroupManager, instanceGroupManagersRecreateInstancesRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .recreateInstancesInstanceGroupManagerAsync(
+                instanceGroupManager, instanceGroupManagersRecreateInstancesRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -922,69 +706,32 @@ public void recreateInstancesInstanceGroupManagerExceptionTest() throws Exceptio
           instanceGroupManagersRecreateInstancesRequestResource =
               InstanceGroupManagersRecreateInstancesRequest.newBuilder().build();
 
-      client.recreateInstancesInstanceGroupManager(
-          instanceGroupManager, instanceGroupManagersRecreateInstancesRequestResource);
+      client
+          .recreateInstancesInstanceGroupManagerAsync(
+              instanceGroupManager, instanceGroupManagersRecreateInstancesRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void resizeInstanceGroupManagerTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void resizeInstanceGroupManagerTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("resizeInstanceGroupManagerTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     Integer size = 3530753;
     ProjectZoneInstanceGroupManagerName instanceGroupManager =
         ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]");
 
-    Operation actualResponse = client.resizeInstanceGroupManager(size, instanceGroupManager);
+    EmptyMessage actualResponse =
+        client.resizeInstanceGroupManagerAsync(size, instanceGroupManager).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -1015,62 +762,25 @@ public void resizeInstanceGroupManagerExceptionTest() throws Exception {
       ProjectZoneInstanceGroupManagerName instanceGroupManager =
           ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]");
 
-      client.resizeInstanceGroupManager(size, instanceGroupManager);
+      client.resizeInstanceGroupManagerAsync(size, instanceGroupManager).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void setInstanceTemplateInstanceGroupManagerTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void setInstanceTemplateInstanceGroupManagerTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("setInstanceTemplateInstanceGroupManagerTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceGroupManagerName instanceGroupManager =
         ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]");
@@ -1078,9 +788,11 @@ public void setInstanceTemplateInstanceGroupManagerTest() {
         instanceGroupManagersSetInstanceTemplateRequestResource =
             InstanceGroupManagersSetInstanceTemplateRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.setInstanceTemplateInstanceGroupManager(
-            instanceGroupManager, instanceGroupManagersSetInstanceTemplateRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .setInstanceTemplateInstanceGroupManagerAsync(
+                instanceGroupManager, instanceGroupManagersSetInstanceTemplateRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -1113,72 +825,39 @@ public void setInstanceTemplateInstanceGroupManagerExceptionTest() throws Except
           instanceGroupManagersSetInstanceTemplateRequestResource =
               InstanceGroupManagersSetInstanceTemplateRequest.newBuilder().build();
 
-      client.setInstanceTemplateInstanceGroupManager(
-          instanceGroupManager, instanceGroupManagersSetInstanceTemplateRequestResource);
+      client
+          .setInstanceTemplateInstanceGroupManagerAsync(
+              instanceGroupManager, instanceGroupManagersSetInstanceTemplateRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void setTargetPoolsInstanceGroupManagerTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void setTargetPoolsInstanceGroupManagerTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("setTargetPoolsInstanceGroupManagerTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectZoneInstanceGroupManagerName instanceGroupManager =
         ProjectZoneInstanceGroupManagerName.of("[PROJECT]", "[ZONE]", "[INSTANCE_GROUP_MANAGER]");
     InstanceGroupManagersSetTargetPoolsRequest instanceGroupManagersSetTargetPoolsRequestResource =
         InstanceGroupManagersSetTargetPoolsRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.setTargetPoolsInstanceGroupManager(
-            instanceGroupManager, instanceGroupManagersSetTargetPoolsRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .setTargetPoolsInstanceGroupManagerAsync(
+                instanceGroupManager, instanceGroupManagersSetTargetPoolsRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -1211,11 +890,15 @@ public void setTargetPoolsInstanceGroupManagerExceptionTest() throws Exception {
           instanceGroupManagersSetTargetPoolsRequestResource =
               InstanceGroupManagersSetTargetPoolsRequest.newBuilder().build();
 
-      client.setTargetPoolsInstanceGroupManager(
-          instanceGroupManager, instanceGroupManagersSetTargetPoolsRequestResource);
+      client
+          .setTargetPoolsInstanceGroupManagerAsync(
+              instanceGroupManager, instanceGroupManagersSetTargetPoolsRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/InstanceTemplateClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/InstanceTemplateClientTest.java
index a064d105473b..3722628f3190 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/InstanceTemplateClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/InstanceTemplateClientTest.java
@@ -26,6 +26,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -40,6 +41,7 @@
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -90,58 +92,16 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteInstanceTemplateTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteInstanceTemplateTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteInstanceTemplateTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalInstanceTemplateName instanceTemplate =
         ProjectGlobalInstanceTemplateName.of("[PROJECT]", "[INSTANCE_TEMPLATE]");
 
-    Operation actualResponse = client.deleteInstanceTemplate(instanceTemplate);
+    EmptyMessage actualResponse = client.deleteInstanceTemplateAsync(instanceTemplate).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -171,10 +131,12 @@ public void deleteInstanceTemplateExceptionTest() throws Exception {
       ProjectGlobalInstanceTemplateName instanceTemplate =
           ProjectGlobalInstanceTemplateName.of("[PROJECT]", "[INSTANCE_TEMPLATE]");
 
-      client.deleteInstanceTemplate(instanceTemplate);
+      client.deleteInstanceTemplateAsync(instanceTemplate).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -292,58 +254,17 @@ public void getIamPolicyInstanceTemplateExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertInstanceTemplateTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertInstanceTemplateTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertInstanceTemplateTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
     InstanceTemplate instanceTemplateResource = InstanceTemplate.newBuilder().build();
 
-    Operation actualResponse = client.insertInstanceTemplate(project, instanceTemplateResource);
+    EmptyMessage actualResponse =
+        client.insertInstanceTemplateAsync(project, instanceTemplateResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -373,10 +294,12 @@ public void insertInstanceTemplateExceptionTest() throws Exception {
       ProjectName project = ProjectName.of("[PROJECT]");
       InstanceTemplate instanceTemplateResource = InstanceTemplate.newBuilder().build();
 
-      client.insertInstanceTemplate(project, instanceTemplateResource);
+      client.insertInstanceTemplateAsync(project, instanceTemplateResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/InterconnectAttachmentClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/InterconnectAttachmentClientTest.java
index d2b3a68a9b61..093d9e9d3a74 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/InterconnectAttachmentClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/InterconnectAttachmentClientTest.java
@@ -26,6 +26,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -43,6 +44,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -158,59 +160,21 @@ public void aggregatedListInterconnectAttachmentsExceptionTest() throws Exceptio
 
   @Test
   @SuppressWarnings("all")
-  public void deleteInterconnectAttachmentTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void deleteInterconnectAttachmentTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("deleteInterconnectAttachmentTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectRegionInterconnectAttachmentName interconnectAttachment =
         ProjectRegionInterconnectAttachmentName.of(
             "[PROJECT]", "[REGION]", "[INTERCONNECT_ATTACHMENT]");
 
-    Operation actualResponse = client.deleteInterconnectAttachment(interconnectAttachment);
+    EmptyMessage actualResponse =
+        client.deleteInterconnectAttachmentAsync(interconnectAttachment).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -241,10 +205,12 @@ public void deleteInterconnectAttachmentExceptionTest() throws Exception {
           ProjectRegionInterconnectAttachmentName.of(
               "[PROJECT]", "[REGION]", "[INTERCONNECT_ATTACHMENT]");
 
-      client.deleteInterconnectAttachment(interconnectAttachment);
+      client.deleteInterconnectAttachmentAsync(interconnectAttachment).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -345,60 +311,21 @@ public void getInterconnectAttachmentExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertInterconnectAttachmentTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region2 = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void insertInterconnectAttachmentTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region2.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("insertInterconnectAttachmentTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
     InterconnectAttachment interconnectAttachmentResource =
         InterconnectAttachment.newBuilder().build();
 
-    Operation actualResponse =
-        client.insertInterconnectAttachment(region, interconnectAttachmentResource);
+    EmptyMessage actualResponse =
+        client.insertInterconnectAttachmentAsync(region, interconnectAttachmentResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -429,10 +356,12 @@ public void insertInterconnectAttachmentExceptionTest() throws Exception {
       InterconnectAttachment interconnectAttachmentResource =
           InterconnectAttachment.newBuilder().build();
 
-      client.insertInterconnectAttachment(region, interconnectAttachmentResource);
+      client.insertInterconnectAttachmentAsync(region, interconnectAttachmentResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -499,53 +428,11 @@ public void listInterconnectAttachmentsExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void patchInterconnectAttachmentTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void patchInterconnectAttachmentTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("patchInterconnectAttachmentTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionInterconnectAttachmentName interconnectAttachment =
         ProjectRegionInterconnectAttachmentName.of(
@@ -554,9 +441,11 @@ public void patchInterconnectAttachmentTest() {
         InterconnectAttachment.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse =
-        client.patchInterconnectAttachment(
-            interconnectAttachment, interconnectAttachmentResource, fieldMask);
+    EmptyMessage actualResponse =
+        client
+            .patchInterconnectAttachmentAsync(
+                interconnectAttachment, interconnectAttachmentResource, fieldMask)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -590,11 +479,15 @@ public void patchInterconnectAttachmentExceptionTest() throws Exception {
           InterconnectAttachment.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.patchInterconnectAttachment(
-          interconnectAttachment, interconnectAttachmentResource, fieldMask);
+      client
+          .patchInterconnectAttachmentAsync(
+              interconnectAttachment, interconnectAttachmentResource, fieldMask)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/InterconnectClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/InterconnectClientTest.java
index 8b1fc0ef70ef..9c10446345f2 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/InterconnectClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/InterconnectClientTest.java
@@ -25,6 +25,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -40,6 +41,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -89,58 +91,16 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteInterconnectTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteInterconnectTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteInterconnectTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalInterconnectName interconnect =
         ProjectGlobalInterconnectName.of("[PROJECT]", "[INTERCONNECT]");
 
-    Operation actualResponse = client.deleteInterconnect(interconnect);
+    EmptyMessage actualResponse = client.deleteInterconnectAsync(interconnect).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -170,10 +130,12 @@ public void deleteInterconnectExceptionTest() throws Exception {
       ProjectGlobalInterconnectName interconnect =
           ProjectGlobalInterconnectName.of("[PROJECT]", "[INTERCONNECT]");
 
-      client.deleteInterconnect(interconnect);
+      client.deleteInterconnectAsync(interconnect).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -313,58 +275,17 @@ public void getDiagnosticsInterconnectExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertInterconnectTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertInterconnectTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertInterconnectTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
     Interconnect interconnectResource = Interconnect.newBuilder().build();
 
-    Operation actualResponse = client.insertInterconnect(project, interconnectResource);
+    EmptyMessage actualResponse =
+        client.insertInterconnectAsync(project, interconnectResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -394,10 +315,12 @@ public void insertInterconnectExceptionTest() throws Exception {
       ProjectName project = ProjectName.of("[PROJECT]");
       Interconnect interconnectResource = Interconnect.newBuilder().build();
 
-      client.insertInterconnect(project, interconnectResource);
+      client.insertInterconnectAsync(project, interconnectResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -463,61 +386,19 @@ public void listInterconnectsExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void patchInterconnectTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void patchInterconnectTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("patchInterconnectTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalInterconnectName interconnect =
         ProjectGlobalInterconnectName.of("[PROJECT]", "[INTERCONNECT]");
     Interconnect interconnectResource = Interconnect.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse =
-        client.patchInterconnect(interconnect, interconnectResource, fieldMask);
+    EmptyMessage actualResponse =
+        client.patchInterconnectAsync(interconnect, interconnectResource, fieldMask).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -549,10 +430,12 @@ public void patchInterconnectExceptionTest() throws Exception {
       Interconnect interconnectResource = Interconnect.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.patchInterconnect(interconnect, interconnectResource, fieldMask);
+      client.patchInterconnectAsync(interconnect, interconnectResource, fieldMask).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/LicenseClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/LicenseClientTest.java
index a8601f219967..02719a72f961 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/LicenseClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/LicenseClientTest.java
@@ -26,6 +26,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -40,6 +41,7 @@
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -90,57 +92,15 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteLicenseTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteLicenseTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteLicenseTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalLicenseName license = ProjectGlobalLicenseName.of("[PROJECT]", "[LICENSE]");
 
-    Operation actualResponse = client.deleteLicense(license);
+    EmptyMessage actualResponse = client.deleteLicenseAsync(license).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -169,10 +129,12 @@ public void deleteLicenseExceptionTest() throws Exception {
     try {
       ProjectGlobalLicenseName license = ProjectGlobalLicenseName.of("[PROJECT]", "[LICENSE]");
 
-      client.deleteLicense(license);
+      client.deleteLicenseAsync(license).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -293,58 +255,16 @@ public void getIamPolicyLicenseExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertLicenseTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertLicenseTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertLicenseTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
     License licenseResource = License.newBuilder().build();
 
-    Operation actualResponse = client.insertLicense(project, licenseResource);
+    EmptyMessage actualResponse = client.insertLicenseAsync(project, licenseResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -374,10 +294,12 @@ public void insertLicenseExceptionTest() throws Exception {
       ProjectName project = ProjectName.of("[PROJECT]");
       License licenseResource = License.newBuilder().build();
 
-      client.insertLicense(project, licenseResource);
+      client.insertLicenseAsync(project, licenseResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/NetworkClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/NetworkClientTest.java
index 544902c5ad13..1460f00e8405 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/NetworkClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/NetworkClientTest.java
@@ -27,6 +27,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -42,6 +43,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -93,59 +95,18 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void addPeeringNetworkTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void addPeeringNetworkTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("addPeeringNetworkTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalNetworkName network = ProjectGlobalNetworkName.of("[PROJECT]", "[NETWORK]");
     NetworksAddPeeringRequest networksAddPeeringRequestResource =
         NetworksAddPeeringRequest.newBuilder().build();
 
-    Operation actualResponse = client.addPeeringNetwork(network, networksAddPeeringRequestResource);
+    EmptyMessage actualResponse =
+        client.addPeeringNetworkAsync(network, networksAddPeeringRequestResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -176,66 +137,26 @@ public void addPeeringNetworkExceptionTest() throws Exception {
       NetworksAddPeeringRequest networksAddPeeringRequestResource =
           NetworksAddPeeringRequest.newBuilder().build();
 
-      client.addPeeringNetwork(network, networksAddPeeringRequestResource);
+      client.addPeeringNetworkAsync(network, networksAddPeeringRequestResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void deleteNetworkTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteNetworkTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteNetworkTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalNetworkName network = ProjectGlobalNetworkName.of("[PROJECT]", "[NETWORK]");
 
-    Operation actualResponse = client.deleteNetwork(network);
+    EmptyMessage actualResponse = client.deleteNetworkAsync(network).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -264,10 +185,12 @@ public void deleteNetworkExceptionTest() throws Exception {
     try {
       ProjectGlobalNetworkName network = ProjectGlobalNetworkName.of("[PROJECT]", "[NETWORK]");
 
-      client.deleteNetwork(network);
+      client.deleteNetworkAsync(network).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -337,58 +260,16 @@ public void getNetworkExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertNetworkTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertNetworkTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertNetworkTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
     Network networkResource = Network.newBuilder().build();
 
-    Operation actualResponse = client.insertNetwork(project, networkResource);
+    EmptyMessage actualResponse = client.insertNetworkAsync(project, networkResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -418,10 +299,12 @@ public void insertNetworkExceptionTest() throws Exception {
       ProjectName project = ProjectName.of("[PROJECT]");
       Network networkResource = Network.newBuilder().build();
 
-      client.insertNetwork(project, networkResource);
+      client.insertNetworkAsync(project, networkResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -487,59 +370,18 @@ public void listNetworksExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void patchNetworkTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void patchNetworkTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("patchNetworkTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalNetworkName network = ProjectGlobalNetworkName.of("[PROJECT]", "[NETWORK]");
     Network networkResource = Network.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse = client.patchNetwork(network, networkResource, fieldMask);
+    EmptyMessage actualResponse =
+        client.patchNetworkAsync(network, networkResource, fieldMask).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -570,69 +412,29 @@ public void patchNetworkExceptionTest() throws Exception {
       Network networkResource = Network.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.patchNetwork(network, networkResource, fieldMask);
+      client.patchNetworkAsync(network, networkResource, fieldMask).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void removePeeringNetworkTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void removePeeringNetworkTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("removePeeringNetworkTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalNetworkName network = ProjectGlobalNetworkName.of("[PROJECT]", "[NETWORK]");
     NetworksRemovePeeringRequest networksRemovePeeringRequestResource =
         NetworksRemovePeeringRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.removePeeringNetwork(network, networksRemovePeeringRequestResource);
+    EmptyMessage actualResponse =
+        client.removePeeringNetworkAsync(network, networksRemovePeeringRequestResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -663,66 +465,26 @@ public void removePeeringNetworkExceptionTest() throws Exception {
       NetworksRemovePeeringRequest networksRemovePeeringRequestResource =
           NetworksRemovePeeringRequest.newBuilder().build();
 
-      client.removePeeringNetwork(network, networksRemovePeeringRequestResource);
+      client.removePeeringNetworkAsync(network, networksRemovePeeringRequestResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void switchToCustomModeNetworkTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void switchToCustomModeNetworkTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("switchToCustomModeNetworkTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalNetworkName network = ProjectGlobalNetworkName.of("[PROJECT]", "[NETWORK]");
 
-    Operation actualResponse = client.switchToCustomModeNetwork(network);
+    EmptyMessage actualResponse = client.switchToCustomModeNetworkAsync(network).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -751,10 +513,12 @@ public void switchToCustomModeNetworkExceptionTest() throws Exception {
     try {
       ProjectGlobalNetworkName network = ProjectGlobalNetworkName.of("[PROJECT]", "[NETWORK]");
 
-      client.switchToCustomModeNetwork(network);
+      client.switchToCustomModeNetworkAsync(network).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/NodeGroupClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/NodeGroupClientTest.java
index 7830a65b8731..c159755accfd 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/NodeGroupClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/NodeGroupClientTest.java
@@ -33,6 +33,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -49,6 +50,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -104,61 +106,19 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void addNodesNodeGroupTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void addNodesNodeGroupTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("addNodesNodeGroupTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneNodeGroupName nodeGroup =
         ProjectZoneNodeGroupName.of("[PROJECT]", "[ZONE]", "[NODE_GROUP]");
     NodeGroupsAddNodesRequest nodeGroupsAddNodesRequestResource =
         NodeGroupsAddNodesRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.addNodesNodeGroup(nodeGroup, nodeGroupsAddNodesRequestResource);
+    EmptyMessage actualResponse =
+        client.addNodesNodeGroupAsync(nodeGroup, nodeGroupsAddNodesRequestResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -190,10 +150,12 @@ public void addNodesNodeGroupExceptionTest() throws Exception {
       NodeGroupsAddNodesRequest nodeGroupsAddNodesRequestResource =
           NodeGroupsAddNodesRequest.newBuilder().build();
 
-      client.addNodesNodeGroup(nodeGroup, nodeGroupsAddNodesRequestResource);
+      client.addNodesNodeGroupAsync(nodeGroup, nodeGroupsAddNodesRequestResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -262,58 +224,16 @@ public void aggregatedListNodeGroupsExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteNodeGroupTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteNodeGroupTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteNodeGroupTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneNodeGroupName nodeGroup =
         ProjectZoneNodeGroupName.of("[PROJECT]", "[ZONE]", "[NODE_GROUP]");
 
-    Operation actualResponse = client.deleteNodeGroup(nodeGroup);
+    EmptyMessage actualResponse = client.deleteNodeGroupAsync(nodeGroup).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -343,70 +263,30 @@ public void deleteNodeGroupExceptionTest() throws Exception {
       ProjectZoneNodeGroupName nodeGroup =
           ProjectZoneNodeGroupName.of("[PROJECT]", "[ZONE]", "[NODE_GROUP]");
 
-      client.deleteNodeGroup(nodeGroup);
+      client.deleteNodeGroupAsync(nodeGroup).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void deleteNodesNodeGroupTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteNodesNodeGroupTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteNodesNodeGroupTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneNodeGroupName nodeGroup =
         ProjectZoneNodeGroupName.of("[PROJECT]", "[ZONE]", "[NODE_GROUP]");
     NodeGroupsDeleteNodesRequest nodeGroupsDeleteNodesRequestResource =
         NodeGroupsDeleteNodesRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.deleteNodesNodeGroup(nodeGroup, nodeGroupsDeleteNodesRequestResource);
+    EmptyMessage actualResponse =
+        client.deleteNodesNodeGroupAsync(nodeGroup, nodeGroupsDeleteNodesRequestResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -438,10 +318,12 @@ public void deleteNodesNodeGroupExceptionTest() throws Exception {
       NodeGroupsDeleteNodesRequest nodeGroupsDeleteNodesRequestResource =
           NodeGroupsDeleteNodesRequest.newBuilder().build();
 
-      client.deleteNodesNodeGroup(nodeGroup, nodeGroupsDeleteNodesRequestResource);
+      client.deleteNodesNodeGroupAsync(nodeGroup, nodeGroupsDeleteNodesRequestResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -566,59 +448,18 @@ public void getIamPolicyNodeGroupExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertNodeGroupTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone2 = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone2.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertNodeGroupTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertNodeGroupTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     Integer initialNodeCount = 1682564205;
     ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
     NodeGroup nodeGroupResource = NodeGroup.newBuilder().build();
 
-    Operation actualResponse = client.insertNodeGroup(initialNodeCount, zone, nodeGroupResource);
+    EmptyMessage actualResponse =
+        client.insertNodeGroupAsync(initialNodeCount, zone, nodeGroupResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -649,10 +490,12 @@ public void insertNodeGroupExceptionTest() throws Exception {
       ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
       NodeGroup nodeGroupResource = NodeGroup.newBuilder().build();
 
-      client.insertNodeGroup(initialNodeCount, zone, nodeGroupResource);
+      client.insertNodeGroupAsync(initialNodeCount, zone, nodeGroupResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -832,61 +675,21 @@ public void setIamPolicyNodeGroupExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void setNodeTemplateNodeGroupTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void setNodeTemplateNodeGroupTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("setNodeTemplateNodeGroupTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneNodeGroupName nodeGroup =
         ProjectZoneNodeGroupName.of("[PROJECT]", "[ZONE]", "[NODE_GROUP]");
     NodeGroupsSetNodeTemplateRequest nodeGroupsSetNodeTemplateRequestResource =
         NodeGroupsSetNodeTemplateRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.setNodeTemplateNodeGroup(nodeGroup, nodeGroupsSetNodeTemplateRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .setNodeTemplateNodeGroupAsync(nodeGroup, nodeGroupsSetNodeTemplateRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -918,10 +721,14 @@ public void setNodeTemplateNodeGroupExceptionTest() throws Exception {
       NodeGroupsSetNodeTemplateRequest nodeGroupsSetNodeTemplateRequestResource =
           NodeGroupsSetNodeTemplateRequest.newBuilder().build();
 
-      client.setNodeTemplateNodeGroup(nodeGroup, nodeGroupsSetNodeTemplateRequestResource);
+      client
+          .setNodeTemplateNodeGroupAsync(nodeGroup, nodeGroupsSetNodeTemplateRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/NodeTemplateClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/NodeTemplateClientTest.java
index f43dd7ec6191..1b0eff4de2f2 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/NodeTemplateClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/NodeTemplateClientTest.java
@@ -28,6 +28,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -44,6 +45,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -158,58 +160,16 @@ public void aggregatedListNodeTemplatesExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteNodeTemplateTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteNodeTemplateTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteNodeTemplateTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionNodeTemplateName nodeTemplate =
         ProjectRegionNodeTemplateName.of("[PROJECT]", "[REGION]", "[NODE_TEMPLATE]");
 
-    Operation actualResponse = client.deleteNodeTemplate(nodeTemplate);
+    EmptyMessage actualResponse = client.deleteNodeTemplateAsync(nodeTemplate).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -239,10 +199,12 @@ public void deleteNodeTemplateExceptionTest() throws Exception {
       ProjectRegionNodeTemplateName nodeTemplate =
           ProjectRegionNodeTemplateName.of("[PROJECT]", "[REGION]", "[NODE_TEMPLATE]");
 
-      client.deleteNodeTemplate(nodeTemplate);
+      client.deleteNodeTemplateAsync(nodeTemplate).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -367,58 +329,17 @@ public void getIamPolicyNodeTemplateExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertNodeTemplateTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region2 = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region2.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertNodeTemplateTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertNodeTemplateTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
     NodeTemplate nodeTemplateResource = NodeTemplate.newBuilder().build();
 
-    Operation actualResponse = client.insertNodeTemplate(region, nodeTemplateResource);
+    EmptyMessage actualResponse =
+        client.insertNodeTemplateAsync(region, nodeTemplateResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -448,10 +369,12 @@ public void insertNodeTemplateExceptionTest() throws Exception {
       ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
       NodeTemplate nodeTemplateResource = NodeTemplate.newBuilder().build();
 
-      client.insertNodeTemplate(region, nodeTemplateResource);
+      client.insertNodeTemplateAsync(region, nodeTemplateResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/ProjectClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/ProjectClientTest.java
index d8e0c9de7d6d..5ba4971a68b3 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/ProjectClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/ProjectClientTest.java
@@ -33,6 +33,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -47,6 +48,7 @@
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -103,57 +105,15 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void disableXpnHostProjectTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void disableXpnHostProjectTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("disableXpnHostProjectTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
 
-    Operation actualResponse = client.disableXpnHostProject(project);
+    EmptyMessage actualResponse = client.disableXpnHostProjectAsync(project).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -182,69 +142,31 @@ public void disableXpnHostProjectExceptionTest() throws Exception {
     try {
       ProjectName project = ProjectName.of("[PROJECT]");
 
-      client.disableXpnHostProject(project);
+      client.disableXpnHostProjectAsync(project).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void disableXpnResourceProjectTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void disableXpnResourceProjectTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("disableXpnResourceProjectTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
     ProjectsDisableXpnResourceRequest projectsDisableXpnResourceRequestResource =
         ProjectsDisableXpnResourceRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.disableXpnResourceProject(project, projectsDisableXpnResourceRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .disableXpnResourceProjectAsync(project, projectsDisableXpnResourceRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -275,66 +197,28 @@ public void disableXpnResourceProjectExceptionTest() throws Exception {
       ProjectsDisableXpnResourceRequest projectsDisableXpnResourceRequestResource =
           ProjectsDisableXpnResourceRequest.newBuilder().build();
 
-      client.disableXpnResourceProject(project, projectsDisableXpnResourceRequestResource);
+      client
+          .disableXpnResourceProjectAsync(project, projectsDisableXpnResourceRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void enableXpnHostProjectTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void enableXpnHostProjectTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("enableXpnHostProjectTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
 
-    Operation actualResponse = client.enableXpnHostProject(project);
+    EmptyMessage actualResponse = client.enableXpnHostProjectAsync(project).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -363,69 +247,31 @@ public void enableXpnHostProjectExceptionTest() throws Exception {
     try {
       ProjectName project = ProjectName.of("[PROJECT]");
 
-      client.enableXpnHostProject(project);
+      client.enableXpnHostProjectAsync(project).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void enableXpnResourceProjectTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void enableXpnResourceProjectTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("enableXpnResourceProjectTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
     ProjectsEnableXpnResourceRequest projectsEnableXpnResourceRequestResource =
         ProjectsEnableXpnResourceRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.enableXpnResourceProject(project, projectsEnableXpnResourceRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .enableXpnResourceProjectAsync(project, projectsEnableXpnResourceRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -456,10 +302,12 @@ public void enableXpnResourceProjectExceptionTest() throws Exception {
       ProjectsEnableXpnResourceRequest projectsEnableXpnResourceRequestResource =
           ProjectsEnableXpnResourceRequest.newBuilder().build();
 
-      client.enableXpnResourceProject(project, projectsEnableXpnResourceRequestResource);
+      client.enableXpnResourceProjectAsync(project, projectsEnableXpnResourceRequestResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -715,58 +563,17 @@ public void listXpnHostsProjectsExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void moveDiskProjectTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void moveDiskProjectTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("moveDiskProjectTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
     DiskMoveRequest diskMoveRequestResource = DiskMoveRequest.newBuilder().build();
 
-    Operation actualResponse = client.moveDiskProject(project, diskMoveRequestResource);
+    EmptyMessage actualResponse =
+        client.moveDiskProjectAsync(project, diskMoveRequestResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -796,67 +603,28 @@ public void moveDiskProjectExceptionTest() throws Exception {
       ProjectName project = ProjectName.of("[PROJECT]");
       DiskMoveRequest diskMoveRequestResource = DiskMoveRequest.newBuilder().build();
 
-      client.moveDiskProject(project, diskMoveRequestResource);
+      client.moveDiskProjectAsync(project, diskMoveRequestResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void moveInstanceProjectTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void moveInstanceProjectTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("moveInstanceProjectTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
     InstanceMoveRequest instanceMoveRequestResource = InstanceMoveRequest.newBuilder().build();
 
-    Operation actualResponse = client.moveInstanceProject(project, instanceMoveRequestResource);
+    EmptyMessage actualResponse =
+        client.moveInstanceProjectAsync(project, instanceMoveRequestResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -886,67 +654,31 @@ public void moveInstanceProjectExceptionTest() throws Exception {
       ProjectName project = ProjectName.of("[PROJECT]");
       InstanceMoveRequest instanceMoveRequestResource = InstanceMoveRequest.newBuilder().build();
 
-      client.moveInstanceProject(project, instanceMoveRequestResource);
+      client.moveInstanceProjectAsync(project, instanceMoveRequestResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void setCommonInstanceMetadataProjectTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void setCommonInstanceMetadataProjectTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("setCommonInstanceMetadataProjectTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
     Metadata metadataResource = Metadata.newBuilder().build();
 
-    Operation actualResponse = client.setCommonInstanceMetadataProject(project, metadataResource);
+    EmptyMessage actualResponse =
+        client.setCommonInstanceMetadataProjectAsync(project, metadataResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -976,69 +708,35 @@ public void setCommonInstanceMetadataProjectExceptionTest() throws Exception {
       ProjectName project = ProjectName.of("[PROJECT]");
       Metadata metadataResource = Metadata.newBuilder().build();
 
-      client.setCommonInstanceMetadataProject(project, metadataResource);
+      client.setCommonInstanceMetadataProjectAsync(project, metadataResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void setDefaultNetworkTierProjectTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void setDefaultNetworkTierProjectTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("setDefaultNetworkTierProjectTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
     ProjectsSetDefaultNetworkTierRequest projectsSetDefaultNetworkTierRequestResource =
         ProjectsSetDefaultNetworkTierRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.setDefaultNetworkTierProject(project, projectsSetDefaultNetworkTierRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .setDefaultNetworkTierProjectAsync(
+                project, projectsSetDefaultNetworkTierRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -1069,68 +767,30 @@ public void setDefaultNetworkTierProjectExceptionTest() throws Exception {
       ProjectsSetDefaultNetworkTierRequest projectsSetDefaultNetworkTierRequestResource =
           ProjectsSetDefaultNetworkTierRequest.newBuilder().build();
 
-      client.setDefaultNetworkTierProject(project, projectsSetDefaultNetworkTierRequestResource);
+      client
+          .setDefaultNetworkTierProjectAsync(project, projectsSetDefaultNetworkTierRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void setUsageExportBucketProjectTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void setUsageExportBucketProjectTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("setUsageExportBucketProjectTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
     UsageExportLocation usageExportLocationResource = UsageExportLocation.newBuilder().build();
 
-    Operation actualResponse =
-        client.setUsageExportBucketProject(project, usageExportLocationResource);
+    EmptyMessage actualResponse =
+        client.setUsageExportBucketProjectAsync(project, usageExportLocationResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -1160,10 +820,12 @@ public void setUsageExportBucketProjectExceptionTest() throws Exception {
       ProjectName project = ProjectName.of("[PROJECT]");
       UsageExportLocation usageExportLocationResource = UsageExportLocation.newBuilder().build();
 
-      client.setUsageExportBucketProject(project, usageExportLocationResource);
+      client.setUsageExportBucketProjectAsync(project, usageExportLocationResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RegionAutoscalerClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RegionAutoscalerClientTest.java
index da291a0dacaa..14876d90bc6b 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RegionAutoscalerClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RegionAutoscalerClientTest.java
@@ -25,6 +25,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -40,6 +41,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -89,58 +91,16 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteRegionAutoscalerTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteRegionAutoscalerTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteRegionAutoscalerTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionAutoscalerName autoscaler =
         ProjectRegionAutoscalerName.of("[PROJECT]", "[REGION]", "[AUTOSCALER]");
 
-    Operation actualResponse = client.deleteRegionAutoscaler(autoscaler);
+    EmptyMessage actualResponse = client.deleteRegionAutoscalerAsync(autoscaler).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -170,10 +130,12 @@ public void deleteRegionAutoscalerExceptionTest() throws Exception {
       ProjectRegionAutoscalerName autoscaler =
           ProjectRegionAutoscalerName.of("[PROJECT]", "[REGION]", "[AUTOSCALER]");
 
-      client.deleteRegionAutoscaler(autoscaler);
+      client.deleteRegionAutoscalerAsync(autoscaler).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -247,58 +209,17 @@ public void getRegionAutoscalerExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertRegionAutoscalerTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region2 = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region2.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertRegionAutoscalerTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertRegionAutoscalerTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
     Autoscaler autoscalerResource = Autoscaler.newBuilder().build();
 
-    Operation actualResponse = client.insertRegionAutoscaler(region, autoscalerResource);
+    EmptyMessage actualResponse =
+        client.insertRegionAutoscalerAsync(region, autoscalerResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -328,10 +249,12 @@ public void insertRegionAutoscalerExceptionTest() throws Exception {
       ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
       Autoscaler autoscalerResource = Autoscaler.newBuilder().build();
 
-      client.insertRegionAutoscaler(region, autoscalerResource);
+      client.insertRegionAutoscalerAsync(region, autoscalerResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -397,61 +320,19 @@ public void listRegionAutoscalersExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void patchRegionAutoscalerTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region2 = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region2.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void patchRegionAutoscalerTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("patchRegionAutoscalerTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     String autoscaler = "autoscaler517258967";
     ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
     Autoscaler autoscalerResource = Autoscaler.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse =
-        client.patchRegionAutoscaler(autoscaler, region, autoscalerResource, fieldMask);
+    EmptyMessage actualResponse =
+        client.patchRegionAutoscalerAsync(autoscaler, region, autoscalerResource, fieldMask).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -483,70 +364,30 @@ public void patchRegionAutoscalerExceptionTest() throws Exception {
       Autoscaler autoscalerResource = Autoscaler.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.patchRegionAutoscaler(autoscaler, region, autoscalerResource, fieldMask);
+      client.patchRegionAutoscalerAsync(autoscaler, region, autoscalerResource, fieldMask).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void updateRegionAutoscalerTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region2 = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region2.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void updateRegionAutoscalerTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("updateRegionAutoscalerTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     String autoscaler = "autoscaler517258967";
     ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
     Autoscaler autoscalerResource = Autoscaler.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse =
-        client.updateRegionAutoscaler(autoscaler, region, autoscalerResource, fieldMask);
+    EmptyMessage actualResponse =
+        client.updateRegionAutoscalerAsync(autoscaler, region, autoscalerResource, fieldMask).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -578,10 +419,12 @@ public void updateRegionAutoscalerExceptionTest() throws Exception {
       Autoscaler autoscalerResource = Autoscaler.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.updateRegionAutoscaler(autoscaler, region, autoscalerResource, fieldMask);
+      client.updateRegionAutoscalerAsync(autoscaler, region, autoscalerResource, fieldMask).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RegionBackendServiceClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RegionBackendServiceClientTest.java
index 584bb8ea50bb..e75e459cba8d 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RegionBackendServiceClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RegionBackendServiceClientTest.java
@@ -26,6 +26,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -41,6 +42,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -92,58 +94,16 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteRegionBackendServiceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteRegionBackendServiceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteRegionBackendServiceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionBackendServiceName backendService =
         ProjectRegionBackendServiceName.of("[PROJECT]", "[REGION]", "[BACKEND_SERVICE]");
 
-    Operation actualResponse = client.deleteRegionBackendService(backendService);
+    EmptyMessage actualResponse = client.deleteRegionBackendServiceAsync(backendService).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -173,10 +133,12 @@ public void deleteRegionBackendServiceExceptionTest() throws Exception {
       ProjectRegionBackendServiceName backendService =
           ProjectRegionBackendServiceName.of("[PROJECT]", "[REGION]", "[BACKEND_SERVICE]");
 
-      client.deleteRegionBackendService(backendService);
+      client.deleteRegionBackendServiceAsync(backendService).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -318,58 +280,17 @@ public void getHealthRegionBackendServiceExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertRegionBackendServiceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region2 = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region2.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertRegionBackendServiceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertRegionBackendServiceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
     BackendService backendServiceResource = BackendService.newBuilder().build();
 
-    Operation actualResponse = client.insertRegionBackendService(region, backendServiceResource);
+    EmptyMessage actualResponse =
+        client.insertRegionBackendServiceAsync(region, backendServiceResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -399,10 +320,12 @@ public void insertRegionBackendServiceExceptionTest() throws Exception {
       ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
       BackendService backendServiceResource = BackendService.newBuilder().build();
 
-      client.insertRegionBackendService(region, backendServiceResource);
+      client.insertRegionBackendServiceAsync(region, backendServiceResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -469,61 +392,21 @@ public void listRegionBackendServicesExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void patchRegionBackendServiceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void patchRegionBackendServiceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("patchRegionBackendServiceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionBackendServiceName backendService =
         ProjectRegionBackendServiceName.of("[PROJECT]", "[REGION]", "[BACKEND_SERVICE]");
     BackendService backendServiceResource = BackendService.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse =
-        client.patchRegionBackendService(backendService, backendServiceResource, fieldMask);
+    EmptyMessage actualResponse =
+        client
+            .patchRegionBackendServiceAsync(backendService, backendServiceResource, fieldMask)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -555,70 +438,34 @@ public void patchRegionBackendServiceExceptionTest() throws Exception {
       BackendService backendServiceResource = BackendService.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.patchRegionBackendService(backendService, backendServiceResource, fieldMask);
+      client
+          .patchRegionBackendServiceAsync(backendService, backendServiceResource, fieldMask)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void updateRegionBackendServiceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void updateRegionBackendServiceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("updateRegionBackendServiceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionBackendServiceName backendService =
         ProjectRegionBackendServiceName.of("[PROJECT]", "[REGION]", "[BACKEND_SERVICE]");
     BackendService backendServiceResource = BackendService.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse =
-        client.updateRegionBackendService(backendService, backendServiceResource, fieldMask);
+    EmptyMessage actualResponse =
+        client
+            .updateRegionBackendServiceAsync(backendService, backendServiceResource, fieldMask)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -650,10 +497,14 @@ public void updateRegionBackendServiceExceptionTest() throws Exception {
       BackendService backendServiceResource = BackendService.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.updateRegionBackendService(backendService, backendServiceResource, fieldMask);
+      client
+          .updateRegionBackendServiceAsync(backendService, backendServiceResource, fieldMask)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RegionCommitmentClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RegionCommitmentClientTest.java
index 7141e939bb43..57c6d96f0fc8 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RegionCommitmentClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RegionCommitmentClientTest.java
@@ -24,6 +24,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -40,6 +41,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -222,58 +224,17 @@ public void getRegionCommitmentExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertRegionCommitmentTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region2 = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region2.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertRegionCommitmentTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertRegionCommitmentTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
     Commitment commitmentResource = Commitment.newBuilder().build();
 
-    Operation actualResponse = client.insertRegionCommitment(region, commitmentResource);
+    EmptyMessage actualResponse =
+        client.insertRegionCommitmentAsync(region, commitmentResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -303,10 +264,12 @@ public void insertRegionCommitmentExceptionTest() throws Exception {
       ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
       Commitment commitmentResource = Commitment.newBuilder().build();
 
-      client.insertRegionCommitment(region, commitmentResource);
+      client.insertRegionCommitmentAsync(region, commitmentResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RegionDiskClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RegionDiskClientTest.java
index eed7b29ae388..bcefa0aea320 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RegionDiskClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RegionDiskClientTest.java
@@ -27,6 +27,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -41,6 +42,7 @@
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -92,58 +94,17 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void createSnapshotRegionDiskTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void createSnapshotRegionDiskTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("createSnapshotRegionDiskTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionDiskName disk = ProjectRegionDiskName.of("[PROJECT]", "[REGION]", "[DISK]");
     Snapshot snapshotResource = Snapshot.newBuilder().build();
 
-    Operation actualResponse = client.createSnapshotRegionDisk(disk, snapshotResource);
+    EmptyMessage actualResponse =
+        client.createSnapshotRegionDiskAsync(disk, snapshotResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -173,66 +134,26 @@ public void createSnapshotRegionDiskExceptionTest() throws Exception {
       ProjectRegionDiskName disk = ProjectRegionDiskName.of("[PROJECT]", "[REGION]", "[DISK]");
       Snapshot snapshotResource = Snapshot.newBuilder().build();
 
-      client.createSnapshotRegionDisk(disk, snapshotResource);
+      client.createSnapshotRegionDiskAsync(disk, snapshotResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void deleteRegionDiskTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteRegionDiskTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteRegionDiskTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionDiskName disk = ProjectRegionDiskName.of("[PROJECT]", "[REGION]", "[DISK]");
 
-    Operation actualResponse = client.deleteRegionDisk(disk);
+    EmptyMessage actualResponse = client.deleteRegionDiskAsync(disk).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -261,10 +182,12 @@ public void deleteRegionDiskExceptionTest() throws Exception {
     try {
       ProjectRegionDiskName disk = ProjectRegionDiskName.of("[PROJECT]", "[REGION]", "[DISK]");
 
-      client.deleteRegionDisk(disk);
+      client.deleteRegionDiskAsync(disk).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -356,58 +279,16 @@ public void getRegionDiskExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertRegionDiskTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region2 = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region2.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertRegionDiskTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertRegionDiskTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
     Disk diskResource = Disk.newBuilder().build();
 
-    Operation actualResponse = client.insertRegionDisk(region, diskResource);
+    EmptyMessage actualResponse = client.insertRegionDiskAsync(region, diskResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -437,10 +318,12 @@ public void insertRegionDiskExceptionTest() throws Exception {
       ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
       Disk diskResource = Disk.newBuilder().build();
 
-      client.insertRegionDisk(region, diskResource);
+      client.insertRegionDiskAsync(region, diskResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -506,59 +389,18 @@ public void listRegionDisksExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void resizeRegionDiskTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void resizeRegionDiskTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("resizeRegionDiskTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionDiskName disk = ProjectRegionDiskName.of("[PROJECT]", "[REGION]", "[DISK]");
     RegionDisksResizeRequest regionDisksResizeRequestResource =
         RegionDisksResizeRequest.newBuilder().build();
 
-    Operation actualResponse = client.resizeRegionDisk(disk, regionDisksResizeRequestResource);
+    EmptyMessage actualResponse =
+        client.resizeRegionDiskAsync(disk, regionDisksResizeRequestResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -589,69 +431,30 @@ public void resizeRegionDiskExceptionTest() throws Exception {
       RegionDisksResizeRequest regionDisksResizeRequestResource =
           RegionDisksResizeRequest.newBuilder().build();
 
-      client.resizeRegionDisk(disk, regionDisksResizeRequestResource);
+      client.resizeRegionDiskAsync(disk, regionDisksResizeRequestResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void setLabelsRegionDiskTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void setLabelsRegionDiskTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("setLabelsRegionDiskTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionDiskResourceName resource =
         ProjectRegionDiskResourceName.of("[PROJECT]", "[REGION]", "[RESOURCE]");
     RegionSetLabelsRequest regionSetLabelsRequestResource =
         RegionSetLabelsRequest.newBuilder().build();
 
-    Operation actualResponse = client.setLabelsRegionDisk(resource, regionSetLabelsRequestResource);
+    EmptyMessage actualResponse =
+        client.setLabelsRegionDiskAsync(resource, regionSetLabelsRequestResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -683,10 +486,12 @@ public void setLabelsRegionDiskExceptionTest() throws Exception {
       RegionSetLabelsRequest regionSetLabelsRequestResource =
           RegionSetLabelsRequest.newBuilder().build();
 
-      client.setLabelsRegionDisk(resource, regionSetLabelsRequestResource);
+      client.setLabelsRegionDiskAsync(resource, regionSetLabelsRequestResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RegionInstanceGroupClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RegionInstanceGroupClientTest.java
index c28ef2257772..7a2d256e1fc1 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RegionInstanceGroupClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RegionInstanceGroupClientTest.java
@@ -24,6 +24,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -38,6 +39,7 @@
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -288,62 +290,25 @@ public void listInstancesRegionInstanceGroupsExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void setNamedPortsRegionInstanceGroupTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void setNamedPortsRegionInstanceGroupTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("setNamedPortsRegionInstanceGroupTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectRegionInstanceGroupName instanceGroup =
         ProjectRegionInstanceGroupName.of("[PROJECT]", "[REGION]", "[INSTANCE_GROUP]");
     RegionInstanceGroupsSetNamedPortsRequest regionInstanceGroupsSetNamedPortsRequestResource =
         RegionInstanceGroupsSetNamedPortsRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.setNamedPortsRegionInstanceGroup(
-            instanceGroup, regionInstanceGroupsSetNamedPortsRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .setNamedPortsRegionInstanceGroupAsync(
+                instanceGroup, regionInstanceGroupsSetNamedPortsRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -375,11 +340,15 @@ public void setNamedPortsRegionInstanceGroupExceptionTest() throws Exception {
       RegionInstanceGroupsSetNamedPortsRequest regionInstanceGroupsSetNamedPortsRequestResource =
           RegionInstanceGroupsSetNamedPortsRequest.newBuilder().build();
 
-      client.setNamedPortsRegionInstanceGroup(
-          instanceGroup, regionInstanceGroupsSetNamedPortsRequestResource);
+      client
+          .setNamedPortsRegionInstanceGroupAsync(
+              instanceGroup, regionInstanceGroupsSetNamedPortsRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RegionInstanceGroupManagerClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RegionInstanceGroupManagerClientTest.java
index d1d9a987f70e..ae06ee553f64 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RegionInstanceGroupManagerClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RegionInstanceGroupManagerClientTest.java
@@ -31,6 +31,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -46,6 +47,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -102,53 +104,14 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void abandonInstancesRegionInstanceGroupManagerTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void abandonInstancesRegionInstanceGroupManagerTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("abandonInstancesRegionInstanceGroupManagerTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectRegionInstanceGroupManagerName instanceGroupManager =
         ProjectRegionInstanceGroupManagerName.of(
@@ -157,9 +120,11 @@ public void abandonInstancesRegionInstanceGroupManagerTest() {
         regionInstanceGroupManagersAbandonInstancesRequestResource =
             RegionInstanceGroupManagersAbandonInstancesRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.abandonInstancesRegionInstanceGroupManager(
-            instanceGroupManager, regionInstanceGroupManagersAbandonInstancesRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .abandonInstancesRegionInstanceGroupManagerAsync(
+                instanceGroupManager, regionInstanceGroupManagersAbandonInstancesRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -193,69 +158,35 @@ public void abandonInstancesRegionInstanceGroupManagerExceptionTest() throws Exc
           regionInstanceGroupManagersAbandonInstancesRequestResource =
               RegionInstanceGroupManagersAbandonInstancesRequest.newBuilder().build();
 
-      client.abandonInstancesRegionInstanceGroupManager(
-          instanceGroupManager, regionInstanceGroupManagersAbandonInstancesRequestResource);
+      client
+          .abandonInstancesRegionInstanceGroupManagerAsync(
+              instanceGroupManager, regionInstanceGroupManagersAbandonInstancesRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void deleteRegionInstanceGroupManagerTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void deleteRegionInstanceGroupManagerTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("deleteRegionInstanceGroupManagerTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectRegionInstanceGroupManagerName instanceGroupManager =
         ProjectRegionInstanceGroupManagerName.of(
             "[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]");
 
-    Operation actualResponse = client.deleteRegionInstanceGroupManager(instanceGroupManager);
+    EmptyMessage actualResponse =
+        client.deleteRegionInstanceGroupManagerAsync(instanceGroupManager).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -286,62 +217,25 @@ public void deleteRegionInstanceGroupManagerExceptionTest() throws Exception {
           ProjectRegionInstanceGroupManagerName.of(
               "[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]");
 
-      client.deleteRegionInstanceGroupManager(instanceGroupManager);
+      client.deleteRegionInstanceGroupManagerAsync(instanceGroupManager).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void deleteInstancesRegionInstanceGroupManagerTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void deleteInstancesRegionInstanceGroupManagerTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("deleteInstancesRegionInstanceGroupManagerTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectRegionInstanceGroupManagerName instanceGroupManager =
         ProjectRegionInstanceGroupManagerName.of(
@@ -350,9 +244,11 @@ public void deleteInstancesRegionInstanceGroupManagerTest() {
         regionInstanceGroupManagersDeleteInstancesRequestResource =
             RegionInstanceGroupManagersDeleteInstancesRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.deleteInstancesRegionInstanceGroupManager(
-            instanceGroupManager, regionInstanceGroupManagersDeleteInstancesRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .deleteInstancesRegionInstanceGroupManagerAsync(
+                instanceGroupManager, regionInstanceGroupManagersDeleteInstancesRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -386,11 +282,15 @@ public void deleteInstancesRegionInstanceGroupManagerExceptionTest() throws Exce
           regionInstanceGroupManagersDeleteInstancesRequestResource =
               RegionInstanceGroupManagersDeleteInstancesRequest.newBuilder().build();
 
-      client.deleteInstancesRegionInstanceGroupManager(
-          instanceGroupManager, regionInstanceGroupManagersDeleteInstancesRequestResource);
+      client
+          .deleteInstancesRegionInstanceGroupManagerAsync(
+              instanceGroupManager, regionInstanceGroupManagersDeleteInstancesRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -475,59 +375,20 @@ public void getRegionInstanceGroupManagerExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertRegionInstanceGroupManagerTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region2 = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void insertRegionInstanceGroupManagerTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region2.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("insertRegionInstanceGroupManagerTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
     InstanceGroupManager instanceGroupManagerResource = InstanceGroupManager.newBuilder().build();
 
-    Operation actualResponse =
-        client.insertRegionInstanceGroupManager(region, instanceGroupManagerResource);
+    EmptyMessage actualResponse =
+        client.insertRegionInstanceGroupManagerAsync(region, instanceGroupManagerResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -557,10 +418,12 @@ public void insertRegionInstanceGroupManagerExceptionTest() throws Exception {
       ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
       InstanceGroupManager instanceGroupManagerResource = InstanceGroupManager.newBuilder().build();
 
-      client.insertRegionInstanceGroupManager(region, instanceGroupManagerResource);
+      client.insertRegionInstanceGroupManagerAsync(region, instanceGroupManagerResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -677,53 +540,14 @@ public void listManagedInstancesRegionInstanceGroupManagersExceptionTest() throw
 
   @Test
   @SuppressWarnings("all")
-  public void patchRegionInstanceGroupManagerTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void patchRegionInstanceGroupManagerTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("patchRegionInstanceGroupManagerTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectRegionInstanceGroupManagerName instanceGroupManager =
         ProjectRegionInstanceGroupManagerName.of(
@@ -731,9 +555,11 @@ public void patchRegionInstanceGroupManagerTest() {
     InstanceGroupManager instanceGroupManagerResource = InstanceGroupManager.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse =
-        client.patchRegionInstanceGroupManager(
-            instanceGroupManager, instanceGroupManagerResource, fieldMask);
+    EmptyMessage actualResponse =
+        client
+            .patchRegionInstanceGroupManagerAsync(
+                instanceGroupManager, instanceGroupManagerResource, fieldMask)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -766,63 +592,28 @@ public void patchRegionInstanceGroupManagerExceptionTest() throws Exception {
       InstanceGroupManager instanceGroupManagerResource = InstanceGroupManager.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.patchRegionInstanceGroupManager(
-          instanceGroupManager, instanceGroupManagerResource, fieldMask);
+      client
+          .patchRegionInstanceGroupManagerAsync(
+              instanceGroupManager, instanceGroupManagerResource, fieldMask)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void recreateInstancesRegionInstanceGroupManagerTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void recreateInstancesRegionInstanceGroupManagerTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("recreateInstancesRegionInstanceGroupManagerTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectRegionInstanceGroupManagerName instanceGroupManager =
         ProjectRegionInstanceGroupManagerName.of(
@@ -830,9 +621,11 @@ public void recreateInstancesRegionInstanceGroupManagerTest() {
     RegionInstanceGroupManagersRecreateRequest regionInstanceGroupManagersRecreateRequestResource =
         RegionInstanceGroupManagersRecreateRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.recreateInstancesRegionInstanceGroupManager(
-            instanceGroupManager, regionInstanceGroupManagersRecreateRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .recreateInstancesRegionInstanceGroupManagerAsync(
+                instanceGroupManager, regionInstanceGroupManagersRecreateRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -866,70 +659,36 @@ public void recreateInstancesRegionInstanceGroupManagerExceptionTest() throws Ex
           regionInstanceGroupManagersRecreateRequestResource =
               RegionInstanceGroupManagersRecreateRequest.newBuilder().build();
 
-      client.recreateInstancesRegionInstanceGroupManager(
-          instanceGroupManager, regionInstanceGroupManagersRecreateRequestResource);
+      client
+          .recreateInstancesRegionInstanceGroupManagerAsync(
+              instanceGroupManager, regionInstanceGroupManagersRecreateRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void resizeRegionInstanceGroupManagerTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void resizeRegionInstanceGroupManagerTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("resizeRegionInstanceGroupManagerTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     Integer size = 3530753;
     ProjectRegionInstanceGroupManagerName instanceGroupManager =
         ProjectRegionInstanceGroupManagerName.of(
             "[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]");
 
-    Operation actualResponse = client.resizeRegionInstanceGroupManager(size, instanceGroupManager);
+    EmptyMessage actualResponse =
+        client.resizeRegionInstanceGroupManagerAsync(size, instanceGroupManager).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -961,62 +720,25 @@ public void resizeRegionInstanceGroupManagerExceptionTest() throws Exception {
           ProjectRegionInstanceGroupManagerName.of(
               "[PROJECT]", "[REGION]", "[INSTANCE_GROUP_MANAGER]");
 
-      client.resizeRegionInstanceGroupManager(size, instanceGroupManager);
+      client.resizeRegionInstanceGroupManagerAsync(size, instanceGroupManager).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void setInstanceTemplateRegionInstanceGroupManagerTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void setInstanceTemplateRegionInstanceGroupManagerTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("setInstanceTemplateRegionInstanceGroupManagerTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectRegionInstanceGroupManagerName instanceGroupManager =
         ProjectRegionInstanceGroupManagerName.of(
@@ -1025,9 +747,11 @@ public void setInstanceTemplateRegionInstanceGroupManagerTest() {
         regionInstanceGroupManagersSetTemplateRequestResource =
             RegionInstanceGroupManagersSetTemplateRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.setInstanceTemplateRegionInstanceGroupManager(
-            instanceGroupManager, regionInstanceGroupManagersSetTemplateRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .setInstanceTemplateRegionInstanceGroupManagerAsync(
+                instanceGroupManager, regionInstanceGroupManagersSetTemplateRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -1061,63 +785,28 @@ public void setInstanceTemplateRegionInstanceGroupManagerExceptionTest() throws
           regionInstanceGroupManagersSetTemplateRequestResource =
               RegionInstanceGroupManagersSetTemplateRequest.newBuilder().build();
 
-      client.setInstanceTemplateRegionInstanceGroupManager(
-          instanceGroupManager, regionInstanceGroupManagersSetTemplateRequestResource);
+      client
+          .setInstanceTemplateRegionInstanceGroupManagerAsync(
+              instanceGroupManager, regionInstanceGroupManagersSetTemplateRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void setTargetPoolsRegionInstanceGroupManagerTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void setTargetPoolsRegionInstanceGroupManagerTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("setTargetPoolsRegionInstanceGroupManagerTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectRegionInstanceGroupManagerName instanceGroupManager =
         ProjectRegionInstanceGroupManagerName.of(
@@ -1126,9 +815,11 @@ public void setTargetPoolsRegionInstanceGroupManagerTest() {
         regionInstanceGroupManagersSetTargetPoolsRequestResource =
             RegionInstanceGroupManagersSetTargetPoolsRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.setTargetPoolsRegionInstanceGroupManager(
-            instanceGroupManager, regionInstanceGroupManagersSetTargetPoolsRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .setTargetPoolsRegionInstanceGroupManagerAsync(
+                instanceGroupManager, regionInstanceGroupManagersSetTargetPoolsRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -1162,11 +853,15 @@ public void setTargetPoolsRegionInstanceGroupManagerExceptionTest() throws Excep
           regionInstanceGroupManagersSetTargetPoolsRequestResource =
               RegionInstanceGroupManagersSetTargetPoolsRequest.newBuilder().build();
 
-      client.setTargetPoolsRegionInstanceGroupManager(
-          instanceGroupManager, regionInstanceGroupManagersSetTargetPoolsRequestResource);
+      client
+          .setTargetPoolsRegionInstanceGroupManagerAsync(
+              instanceGroupManager, regionInstanceGroupManagersSetTargetPoolsRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RouteClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RouteClientTest.java
index c35e2d34253d..2fbb59977682 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RouteClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RouteClientTest.java
@@ -23,6 +23,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -37,6 +38,7 @@
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -84,57 +86,15 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteRouteTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteRouteTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteRouteTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalRouteName route = ProjectGlobalRouteName.of("[PROJECT]", "[ROUTE]");
 
-    Operation actualResponse = client.deleteRoute(route);
+    EmptyMessage actualResponse = client.deleteRouteAsync(route).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -163,10 +123,12 @@ public void deleteRouteExceptionTest() throws Exception {
     try {
       ProjectGlobalRouteName route = ProjectGlobalRouteName.of("[PROJECT]", "[ROUTE]");
 
-      client.deleteRoute(route);
+      client.deleteRouteAsync(route).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -248,58 +210,16 @@ public void getRouteExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertRouteTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertRouteTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertRouteTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
     Route routeResource = Route.newBuilder().build();
 
-    Operation actualResponse = client.insertRoute(project, routeResource);
+    EmptyMessage actualResponse = client.insertRouteAsync(project, routeResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -329,10 +249,12 @@ public void insertRouteExceptionTest() throws Exception {
       ProjectName project = ProjectName.of("[PROJECT]");
       Route routeResource = Route.newBuilder().build();
 
-      client.insertRoute(project, routeResource);
+      client.insertRouteAsync(project, routeResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RouterClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RouterClientTest.java
index a44f43aaf040..43cccae2c737 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RouterClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/RouterClientTest.java
@@ -31,6 +31,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -48,6 +49,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -163,58 +165,16 @@ public void aggregatedListRoutersExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteRouterTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteRouterTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteRouterTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionRouterName router =
         ProjectRegionRouterName.of("[PROJECT]", "[REGION]", "[ROUTER]");
 
-    Operation actualResponse = client.deleteRouter(router);
+    EmptyMessage actualResponse = client.deleteRouterAsync(router).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -244,10 +204,12 @@ public void deleteRouterExceptionTest() throws Exception {
       ProjectRegionRouterName router =
           ProjectRegionRouterName.of("[PROJECT]", "[REGION]", "[ROUTER]");
 
-      client.deleteRouter(router);
+      client.deleteRouterAsync(router).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -427,58 +389,16 @@ public void getRouterStatusRouterExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertRouterTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region2 = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region2.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertRouterTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertRouterTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
     Router routerResource = Router.newBuilder().build();
 
-    Operation actualResponse = client.insertRouter(region, routerResource);
+    EmptyMessage actualResponse = client.insertRouterAsync(region, routerResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -508,10 +428,12 @@ public void insertRouterExceptionTest() throws Exception {
       ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
       Router routerResource = Router.newBuilder().build();
 
-      client.insertRouter(region, routerResource);
+      client.insertRouterAsync(region, routerResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -577,60 +499,18 @@ public void listRoutersExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void patchRouterTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void patchRouterTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("patchRouterTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionRouterName router =
         ProjectRegionRouterName.of("[PROJECT]", "[REGION]", "[ROUTER]");
     Router routerResource = Router.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse = client.patchRouter(router, routerResource, fieldMask);
+    EmptyMessage actualResponse = client.patchRouterAsync(router, routerResource, fieldMask).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -662,10 +542,12 @@ public void patchRouterExceptionTest() throws Exception {
       Router routerResource = Router.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.patchRouter(router, routerResource, fieldMask);
+      client.patchRouterAsync(router, routerResource, fieldMask).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -719,60 +601,18 @@ public void previewRouterExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void updateRouterTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void updateRouterTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("updateRouterTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionRouterName router =
         ProjectRegionRouterName.of("[PROJECT]", "[REGION]", "[ROUTER]");
     Router routerResource = Router.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse = client.updateRouter(router, routerResource, fieldMask);
+    EmptyMessage actualResponse = client.updateRouterAsync(router, routerResource, fieldMask).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -804,10 +644,12 @@ public void updateRouterExceptionTest() throws Exception {
       Router routerResource = Router.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.updateRouter(router, routerResource, fieldMask);
+      client.updateRouterAsync(router, routerResource, fieldMask).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/SecurityPolicyClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/SecurityPolicyClientTest.java
index 3bf4a1628b63..71104229fef0 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/SecurityPolicyClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/SecurityPolicyClientTest.java
@@ -28,6 +28,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -43,6 +44,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -95,60 +97,18 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void addRuleSecurityPolicyTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void addRuleSecurityPolicyTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("addRuleSecurityPolicyTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalSecurityPolicyName securityPolicy =
         ProjectGlobalSecurityPolicyName.of("[PROJECT]", "[SECURITY_POLICY]");
     SecurityPolicyRule securityPolicyRuleResource = SecurityPolicyRule.newBuilder().build();
 
-    Operation actualResponse =
-        client.addRuleSecurityPolicy(securityPolicy, securityPolicyRuleResource);
+    EmptyMessage actualResponse =
+        client.addRuleSecurityPolicyAsync(securityPolicy, securityPolicyRuleResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -179,67 +139,27 @@ public void addRuleSecurityPolicyExceptionTest() throws Exception {
           ProjectGlobalSecurityPolicyName.of("[PROJECT]", "[SECURITY_POLICY]");
       SecurityPolicyRule securityPolicyRuleResource = SecurityPolicyRule.newBuilder().build();
 
-      client.addRuleSecurityPolicy(securityPolicy, securityPolicyRuleResource);
+      client.addRuleSecurityPolicyAsync(securityPolicy, securityPolicyRuleResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void deleteSecurityPolicyTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteSecurityPolicyTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteSecurityPolicyTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalSecurityPolicyName securityPolicy =
         ProjectGlobalSecurityPolicyName.of("[PROJECT]", "[SECURITY_POLICY]");
 
-    Operation actualResponse = client.deleteSecurityPolicy(securityPolicy);
+    EmptyMessage actualResponse = client.deleteSecurityPolicyAsync(securityPolicy).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -269,10 +189,12 @@ public void deleteSecurityPolicyExceptionTest() throws Exception {
       ProjectGlobalSecurityPolicyName securityPolicy =
           ProjectGlobalSecurityPolicyName.of("[PROJECT]", "[SECURITY_POLICY]");
 
-      client.deleteSecurityPolicy(securityPolicy);
+      client.deleteSecurityPolicyAsync(securityPolicy).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -400,58 +322,17 @@ public void getRuleSecurityPolicyExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertSecurityPolicyTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertSecurityPolicyTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertSecurityPolicyTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
     SecurityPolicy securityPolicyResource = SecurityPolicy.newBuilder().build();
 
-    Operation actualResponse = client.insertSecurityPolicy(project, securityPolicyResource);
+    EmptyMessage actualResponse =
+        client.insertSecurityPolicyAsync(project, securityPolicyResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -481,10 +362,12 @@ public void insertSecurityPolicyExceptionTest() throws Exception {
       ProjectName project = ProjectName.of("[PROJECT]");
       SecurityPolicy securityPolicyResource = SecurityPolicy.newBuilder().build();
 
-      client.insertSecurityPolicy(project, securityPolicyResource);
+      client.insertSecurityPolicyAsync(project, securityPolicyResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -548,61 +431,19 @@ public void listSecurityPoliciesExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void patchSecurityPolicyTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void patchSecurityPolicyTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("patchSecurityPolicyTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalSecurityPolicyName securityPolicy =
         ProjectGlobalSecurityPolicyName.of("[PROJECT]", "[SECURITY_POLICY]");
     SecurityPolicy securityPolicyResource = SecurityPolicy.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse =
-        client.patchSecurityPolicy(securityPolicy, securityPolicyResource, fieldMask);
+    EmptyMessage actualResponse =
+        client.patchSecurityPolicyAsync(securityPolicy, securityPolicyResource, fieldMask).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -634,70 +475,32 @@ public void patchSecurityPolicyExceptionTest() throws Exception {
       SecurityPolicy securityPolicyResource = SecurityPolicy.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.patchSecurityPolicy(securityPolicy, securityPolicyResource, fieldMask);
+      client.patchSecurityPolicyAsync(securityPolicy, securityPolicyResource, fieldMask).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void patchRuleSecurityPolicyTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void patchRuleSecurityPolicyTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("patchRuleSecurityPolicyTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     Integer priority = 1165461084;
     ProjectGlobalSecurityPolicyName securityPolicy =
         ProjectGlobalSecurityPolicyName.of("[PROJECT]", "[SECURITY_POLICY]");
     SecurityPolicyRule securityPolicyRuleResource = SecurityPolicyRule.newBuilder().build();
 
-    Operation actualResponse =
-        client.patchRuleSecurityPolicy(priority, securityPolicy, securityPolicyRuleResource);
+    EmptyMessage actualResponse =
+        client
+            .patchRuleSecurityPolicyAsync(priority, securityPolicy, securityPolicyRuleResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -729,68 +532,31 @@ public void patchRuleSecurityPolicyExceptionTest() throws Exception {
           ProjectGlobalSecurityPolicyName.of("[PROJECT]", "[SECURITY_POLICY]");
       SecurityPolicyRule securityPolicyRuleResource = SecurityPolicyRule.newBuilder().build();
 
-      client.patchRuleSecurityPolicy(priority, securityPolicy, securityPolicyRuleResource);
+      client
+          .patchRuleSecurityPolicyAsync(priority, securityPolicy, securityPolicyRuleResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void removeRuleSecurityPolicyTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void removeRuleSecurityPolicyTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("removeRuleSecurityPolicyTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     Integer priority = 1165461084;
     ProjectGlobalSecurityPolicyName securityPolicy =
         ProjectGlobalSecurityPolicyName.of("[PROJECT]", "[SECURITY_POLICY]");
 
-    Operation actualResponse = client.removeRuleSecurityPolicy(priority, securityPolicy);
+    EmptyMessage actualResponse =
+        client.removeRuleSecurityPolicyAsync(priority, securityPolicy).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -821,10 +587,12 @@ public void removeRuleSecurityPolicyExceptionTest() throws Exception {
       ProjectGlobalSecurityPolicyName securityPolicy =
           ProjectGlobalSecurityPolicyName.of("[PROJECT]", "[SECURITY_POLICY]");
 
-      client.removeRuleSecurityPolicy(priority, securityPolicy);
+      client.removeRuleSecurityPolicyAsync(priority, securityPolicy).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/SnapshotClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/SnapshotClientTest.java
index ae2c62192d86..202fd471942a 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/SnapshotClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/SnapshotClientTest.java
@@ -26,6 +26,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -40,6 +41,7 @@
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -90,57 +92,15 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteSnapshotTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteSnapshotTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteSnapshotTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalSnapshotName snapshot = ProjectGlobalSnapshotName.of("[PROJECT]", "[SNAPSHOT]");
 
-    Operation actualResponse = client.deleteSnapshot(snapshot);
+    EmptyMessage actualResponse = client.deleteSnapshotAsync(snapshot).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -169,10 +129,12 @@ public void deleteSnapshotExceptionTest() throws Exception {
     try {
       ProjectGlobalSnapshotName snapshot = ProjectGlobalSnapshotName.of("[PROJECT]", "[SNAPSHOT]");
 
-      client.deleteSnapshot(snapshot);
+      client.deleteSnapshotAsync(snapshot).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -414,60 +376,19 @@ public void setIamPolicySnapshotExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void setLabelsSnapshotTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void setLabelsSnapshotTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("setLabelsSnapshotTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalSnapshotResourceName resource =
         ProjectGlobalSnapshotResourceName.of("[PROJECT]", "[RESOURCE]");
     GlobalSetLabelsRequest globalSetLabelsRequestResource =
         GlobalSetLabelsRequest.newBuilder().build();
 
-    Operation actualResponse = client.setLabelsSnapshot(resource, globalSetLabelsRequestResource);
+    EmptyMessage actualResponse =
+        client.setLabelsSnapshotAsync(resource, globalSetLabelsRequestResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -499,10 +420,12 @@ public void setLabelsSnapshotExceptionTest() throws Exception {
       GlobalSetLabelsRequest globalSetLabelsRequestResource =
           GlobalSetLabelsRequest.newBuilder().build();
 
-      client.setLabelsSnapshot(resource, globalSetLabelsRequestResource);
+      client.setLabelsSnapshotAsync(resource, globalSetLabelsRequestResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/SslCertificateClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/SslCertificateClientTest.java
index ce29dc061bf6..b850ee5a6b5f 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/SslCertificateClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/SslCertificateClientTest.java
@@ -23,6 +23,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -37,6 +38,7 @@
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -84,58 +86,16 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteSslCertificateTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteSslCertificateTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteSslCertificateTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalSslCertificateName sslCertificate =
         ProjectGlobalSslCertificateName.of("[PROJECT]", "[SSL_CERTIFICATE]");
 
-    Operation actualResponse = client.deleteSslCertificate(sslCertificate);
+    EmptyMessage actualResponse = client.deleteSslCertificateAsync(sslCertificate).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -165,10 +125,12 @@ public void deleteSslCertificateExceptionTest() throws Exception {
       ProjectGlobalSslCertificateName sslCertificate =
           ProjectGlobalSslCertificateName.of("[PROJECT]", "[SSL_CERTIFICATE]");
 
-      client.deleteSslCertificate(sslCertificate);
+      client.deleteSslCertificateAsync(sslCertificate).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -238,58 +200,17 @@ public void getSslCertificateExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertSslCertificateTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertSslCertificateTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertSslCertificateTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
     SslCertificate sslCertificateResource = SslCertificate.newBuilder().build();
 
-    Operation actualResponse = client.insertSslCertificate(project, sslCertificateResource);
+    EmptyMessage actualResponse =
+        client.insertSslCertificateAsync(project, sslCertificateResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -319,10 +240,12 @@ public void insertSslCertificateExceptionTest() throws Exception {
       ProjectName project = ProjectName.of("[PROJECT]");
       SslCertificate sslCertificateResource = SslCertificate.newBuilder().build();
 
-      client.insertSslCertificate(project, sslCertificateResource);
+      client.insertSslCertificateAsync(project, sslCertificateResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/SslPolicyClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/SslPolicyClientTest.java
index 6b5dce859567..e0b7da615c75 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/SslPolicyClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/SslPolicyClientTest.java
@@ -25,6 +25,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -40,6 +41,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -89,58 +91,16 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteSslPolicyTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteSslPolicyTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteSslPolicyTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalSslPolicyName sslPolicy =
         ProjectGlobalSslPolicyName.of("[PROJECT]", "[SSL_POLICY]");
 
-    Operation actualResponse = client.deleteSslPolicy(sslPolicy);
+    EmptyMessage actualResponse = client.deleteSslPolicyAsync(sslPolicy).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -170,10 +130,12 @@ public void deleteSslPolicyExceptionTest() throws Exception {
       ProjectGlobalSslPolicyName sslPolicy =
           ProjectGlobalSslPolicyName.of("[PROJECT]", "[SSL_POLICY]");
 
-      client.deleteSslPolicy(sslPolicy);
+      client.deleteSslPolicyAsync(sslPolicy).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -245,58 +207,16 @@ public void getSslPolicyExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertSslPolicyTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertSslPolicyTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertSslPolicyTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
     SslPolicy sslPolicyResource = SslPolicy.newBuilder().build();
 
-    Operation actualResponse = client.insertSslPolicy(project, sslPolicyResource);
+    EmptyMessage actualResponse = client.insertSslPolicyAsync(project, sslPolicyResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -326,10 +246,12 @@ public void insertSslPolicyExceptionTest() throws Exception {
       ProjectName project = ProjectName.of("[PROJECT]");
       SslPolicy sslPolicyResource = SslPolicy.newBuilder().build();
 
-      client.insertSslPolicy(project, sslPolicyResource);
+      client.insertSslPolicyAsync(project, sslPolicyResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -441,60 +363,19 @@ public void listAvailableFeaturesSslPoliciesExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void patchSslPolicyTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void patchSslPolicyTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("patchSslPolicyTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalSslPolicyName sslPolicy =
         ProjectGlobalSslPolicyName.of("[PROJECT]", "[SSL_POLICY]");
     SslPolicy sslPolicyResource = SslPolicy.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse = client.patchSslPolicy(sslPolicy, sslPolicyResource, fieldMask);
+    EmptyMessage actualResponse =
+        client.patchSslPolicyAsync(sslPolicy, sslPolicyResource, fieldMask).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -526,10 +407,12 @@ public void patchSslPolicyExceptionTest() throws Exception {
       SslPolicy sslPolicyResource = SslPolicy.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.patchSslPolicy(sslPolicy, sslPolicyResource, fieldMask);
+      client.patchSslPolicyAsync(sslPolicy, sslPolicyResource, fieldMask).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/SubnetworkClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/SubnetworkClientTest.java
index bcd1aea48d0a..f5cda307eeaa 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/SubnetworkClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/SubnetworkClientTest.java
@@ -33,6 +33,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -50,6 +51,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -168,58 +170,16 @@ public void aggregatedListSubnetworksExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteSubnetworkTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteSubnetworkTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteSubnetworkTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionSubnetworkName subnetwork =
         ProjectRegionSubnetworkName.of("[PROJECT]", "[REGION]", "[SUBNETWORK]");
 
-    Operation actualResponse = client.deleteSubnetwork(subnetwork);
+    EmptyMessage actualResponse = client.deleteSubnetworkAsync(subnetwork).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -249,70 +209,33 @@ public void deleteSubnetworkExceptionTest() throws Exception {
       ProjectRegionSubnetworkName subnetwork =
           ProjectRegionSubnetworkName.of("[PROJECT]", "[REGION]", "[SUBNETWORK]");
 
-      client.deleteSubnetwork(subnetwork);
+      client.deleteSubnetworkAsync(subnetwork).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void expandIpCidrRangeSubnetworkTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void expandIpCidrRangeSubnetworkTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("expandIpCidrRangeSubnetworkTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionSubnetworkName subnetwork =
         ProjectRegionSubnetworkName.of("[PROJECT]", "[REGION]", "[SUBNETWORK]");
     SubnetworksExpandIpCidrRangeRequest subnetworksExpandIpCidrRangeRequestResource =
         SubnetworksExpandIpCidrRangeRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.expandIpCidrRangeSubnetwork(subnetwork, subnetworksExpandIpCidrRangeRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .expandIpCidrRangeSubnetworkAsync(
+                subnetwork, subnetworksExpandIpCidrRangeRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -344,10 +267,14 @@ public void expandIpCidrRangeSubnetworkExceptionTest() throws Exception {
       SubnetworksExpandIpCidrRangeRequest subnetworksExpandIpCidrRangeRequestResource =
           SubnetworksExpandIpCidrRangeRequest.newBuilder().build();
 
-      client.expandIpCidrRangeSubnetwork(subnetwork, subnetworksExpandIpCidrRangeRequestResource);
+      client
+          .expandIpCidrRangeSubnetworkAsync(subnetwork, subnetworksExpandIpCidrRangeRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -477,58 +404,16 @@ public void getIamPolicySubnetworkExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertSubnetworkTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region2 = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region2.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertSubnetworkTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertSubnetworkTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
     Subnetwork subnetworkResource = Subnetwork.newBuilder().build();
 
-    Operation actualResponse = client.insertSubnetwork(region, subnetworkResource);
+    EmptyMessage actualResponse = client.insertSubnetworkAsync(region, subnetworkResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -558,10 +443,12 @@ public void insertSubnetworkExceptionTest() throws Exception {
       ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
       Subnetwork subnetworkResource = Subnetwork.newBuilder().build();
 
-      client.insertSubnetwork(region, subnetworkResource);
+      client.insertSubnetworkAsync(region, subnetworkResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -687,60 +574,19 @@ public void listUsableSubnetworksExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void patchSubnetworkTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void patchSubnetworkTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("patchSubnetworkTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionSubnetworkName subnetwork =
         ProjectRegionSubnetworkName.of("[PROJECT]", "[REGION]", "[SUBNETWORK]");
     Subnetwork subnetworkResource = Subnetwork.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse = client.patchSubnetwork(subnetwork, subnetworkResource, fieldMask);
+    EmptyMessage actualResponse =
+        client.patchSubnetworkAsync(subnetwork, subnetworkResource, fieldMask).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -772,10 +618,12 @@ public void patchSubnetworkExceptionTest() throws Exception {
       Subnetwork subnetworkResource = Subnetwork.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.patchSubnetwork(subnetwork, subnetworkResource, fieldMask);
+      client.patchSubnetworkAsync(subnetwork, subnetworkResource, fieldMask).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -835,62 +683,25 @@ public void setIamPolicySubnetworkExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void setPrivateIpGoogleAccessSubnetworkTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void setPrivateIpGoogleAccessSubnetworkTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("setPrivateIpGoogleAccessSubnetworkTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectRegionSubnetworkName subnetwork =
         ProjectRegionSubnetworkName.of("[PROJECT]", "[REGION]", "[SUBNETWORK]");
     SubnetworksSetPrivateIpGoogleAccessRequest subnetworksSetPrivateIpGoogleAccessRequestResource =
         SubnetworksSetPrivateIpGoogleAccessRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.setPrivateIpGoogleAccessSubnetwork(
-            subnetwork, subnetworksSetPrivateIpGoogleAccessRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .setPrivateIpGoogleAccessSubnetworkAsync(
+                subnetwork, subnetworksSetPrivateIpGoogleAccessRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -923,11 +734,15 @@ public void setPrivateIpGoogleAccessSubnetworkExceptionTest() throws Exception {
           subnetworksSetPrivateIpGoogleAccessRequestResource =
               SubnetworksSetPrivateIpGoogleAccessRequest.newBuilder().build();
 
-      client.setPrivateIpGoogleAccessSubnetwork(
-          subnetwork, subnetworksSetPrivateIpGoogleAccessRequestResource);
+      client
+          .setPrivateIpGoogleAccessSubnetworkAsync(
+              subnetwork, subnetworksSetPrivateIpGoogleAccessRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/TargetHttpProxyClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/TargetHttpProxyClientTest.java
index c89383fdecf1..ac1feb55f961 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/TargetHttpProxyClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/TargetHttpProxyClientTest.java
@@ -24,6 +24,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -38,6 +39,7 @@
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -86,58 +88,16 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteTargetHttpProxyTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteTargetHttpProxyTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteTargetHttpProxyTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalTargetHttpProxyName targetHttpProxy =
         ProjectGlobalTargetHttpProxyName.of("[PROJECT]", "[TARGET_HTTP_PROXY]");
 
-    Operation actualResponse = client.deleteTargetHttpProxy(targetHttpProxy);
+    EmptyMessage actualResponse = client.deleteTargetHttpProxyAsync(targetHttpProxy).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -167,10 +127,12 @@ public void deleteTargetHttpProxyExceptionTest() throws Exception {
       ProjectGlobalTargetHttpProxyName targetHttpProxy =
           ProjectGlobalTargetHttpProxyName.of("[PROJECT]", "[TARGET_HTTP_PROXY]");
 
-      client.deleteTargetHttpProxy(targetHttpProxy);
+      client.deleteTargetHttpProxyAsync(targetHttpProxy).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -238,58 +200,17 @@ public void getTargetHttpProxyExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertTargetHttpProxyTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertTargetHttpProxyTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertTargetHttpProxyTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
     TargetHttpProxy targetHttpProxyResource = TargetHttpProxy.newBuilder().build();
 
-    Operation actualResponse = client.insertTargetHttpProxy(project, targetHttpProxyResource);
+    EmptyMessage actualResponse =
+        client.insertTargetHttpProxyAsync(project, targetHttpProxyResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -319,10 +240,12 @@ public void insertTargetHttpProxyExceptionTest() throws Exception {
       ProjectName project = ProjectName.of("[PROJECT]");
       TargetHttpProxy targetHttpProxyResource = TargetHttpProxy.newBuilder().build();
 
-      client.insertTargetHttpProxy(project, targetHttpProxyResource);
+      client.insertTargetHttpProxyAsync(project, targetHttpProxyResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -388,60 +311,18 @@ public void listTargetHttpProxiesExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void setUrlMapTargetHttpProxyTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void setUrlMapTargetHttpProxyTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("setUrlMapTargetHttpProxyTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectTargetHttpProxyName targetHttpProxy =
         ProjectTargetHttpProxyName.of("[PROJECT]", "[TARGET_HTTP_PROXY]");
     UrlMapReference urlMapReferenceResource = UrlMapReference.newBuilder().build();
 
-    Operation actualResponse =
-        client.setUrlMapTargetHttpProxy(targetHttpProxy, urlMapReferenceResource);
+    EmptyMessage actualResponse =
+        client.setUrlMapTargetHttpProxyAsync(targetHttpProxy, urlMapReferenceResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -472,10 +353,12 @@ public void setUrlMapTargetHttpProxyExceptionTest() throws Exception {
           ProjectTargetHttpProxyName.of("[PROJECT]", "[TARGET_HTTP_PROXY]");
       UrlMapReference urlMapReferenceResource = UrlMapReference.newBuilder().build();
 
-      client.setUrlMapTargetHttpProxy(targetHttpProxy, urlMapReferenceResource);
+      client.setUrlMapTargetHttpProxyAsync(targetHttpProxy, urlMapReferenceResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/TargetHttpsProxyClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/TargetHttpsProxyClientTest.java
index 1aa81a8fab64..760023abfef2 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/TargetHttpsProxyClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/TargetHttpsProxyClientTest.java
@@ -27,6 +27,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -41,6 +42,7 @@
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -92,58 +94,16 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteTargetHttpsProxyTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteTargetHttpsProxyTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteTargetHttpsProxyTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalTargetHttpsProxyName targetHttpsProxy =
         ProjectGlobalTargetHttpsProxyName.of("[PROJECT]", "[TARGET_HTTPS_PROXY]");
 
-    Operation actualResponse = client.deleteTargetHttpsProxy(targetHttpsProxy);
+    EmptyMessage actualResponse = client.deleteTargetHttpsProxyAsync(targetHttpsProxy).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -173,10 +133,12 @@ public void deleteTargetHttpsProxyExceptionTest() throws Exception {
       ProjectGlobalTargetHttpsProxyName targetHttpsProxy =
           ProjectGlobalTargetHttpsProxyName.of("[PROJECT]", "[TARGET_HTTPS_PROXY]");
 
-      client.deleteTargetHttpsProxy(targetHttpsProxy);
+      client.deleteTargetHttpsProxyAsync(targetHttpsProxy).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -249,58 +211,17 @@ public void getTargetHttpsProxyExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertTargetHttpsProxyTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertTargetHttpsProxyTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertTargetHttpsProxyTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
     TargetHttpsProxy targetHttpsProxyResource = TargetHttpsProxy.newBuilder().build();
 
-    Operation actualResponse = client.insertTargetHttpsProxy(project, targetHttpsProxyResource);
+    EmptyMessage actualResponse =
+        client.insertTargetHttpsProxyAsync(project, targetHttpsProxyResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -330,10 +251,12 @@ public void insertTargetHttpsProxyExceptionTest() throws Exception {
       ProjectName project = ProjectName.of("[PROJECT]");
       TargetHttpsProxy targetHttpsProxyResource = TargetHttpsProxy.newBuilder().build();
 
-      client.insertTargetHttpsProxy(project, targetHttpsProxyResource);
+      client.insertTargetHttpsProxyAsync(project, targetHttpsProxyResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -399,62 +322,25 @@ public void listTargetHttpsProxiesExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void setQuicOverrideTargetHttpsProxyTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void setQuicOverrideTargetHttpsProxyTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("setQuicOverrideTargetHttpsProxyTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalTargetHttpsProxyName targetHttpsProxy =
         ProjectGlobalTargetHttpsProxyName.of("[PROJECT]", "[TARGET_HTTPS_PROXY]");
     TargetHttpsProxiesSetQuicOverrideRequest targetHttpsProxiesSetQuicOverrideRequestResource =
         TargetHttpsProxiesSetQuicOverrideRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.setQuicOverrideTargetHttpsProxy(
-            targetHttpsProxy, targetHttpsProxiesSetQuicOverrideRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .setQuicOverrideTargetHttpsProxyAsync(
+                targetHttpsProxy, targetHttpsProxiesSetQuicOverrideRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -486,63 +372,28 @@ public void setQuicOverrideTargetHttpsProxyExceptionTest() throws Exception {
       TargetHttpsProxiesSetQuicOverrideRequest targetHttpsProxiesSetQuicOverrideRequestResource =
           TargetHttpsProxiesSetQuicOverrideRequest.newBuilder().build();
 
-      client.setQuicOverrideTargetHttpsProxy(
-          targetHttpsProxy, targetHttpsProxiesSetQuicOverrideRequestResource);
+      client
+          .setQuicOverrideTargetHttpsProxyAsync(
+              targetHttpsProxy, targetHttpsProxiesSetQuicOverrideRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void setSslCertificatesTargetHttpsProxyTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void setSslCertificatesTargetHttpsProxyTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("setSslCertificatesTargetHttpsProxyTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectTargetHttpsProxyName targetHttpsProxy =
         ProjectTargetHttpsProxyName.of("[PROJECT]", "[TARGET_HTTPS_PROXY]");
@@ -550,9 +401,11 @@ public void setSslCertificatesTargetHttpsProxyTest() {
         targetHttpsProxiesSetSslCertificatesRequestResource =
             TargetHttpsProxiesSetSslCertificatesRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.setSslCertificatesTargetHttpsProxy(
-            targetHttpsProxy, targetHttpsProxiesSetSslCertificatesRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .setSslCertificatesTargetHttpsProxyAsync(
+                targetHttpsProxy, targetHttpsProxiesSetSslCertificatesRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -585,70 +438,37 @@ public void setSslCertificatesTargetHttpsProxyExceptionTest() throws Exception {
           targetHttpsProxiesSetSslCertificatesRequestResource =
               TargetHttpsProxiesSetSslCertificatesRequest.newBuilder().build();
 
-      client.setSslCertificatesTargetHttpsProxy(
-          targetHttpsProxy, targetHttpsProxiesSetSslCertificatesRequestResource);
+      client
+          .setSslCertificatesTargetHttpsProxyAsync(
+              targetHttpsProxy, targetHttpsProxiesSetSslCertificatesRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void setSslPolicyTargetHttpsProxyTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void setSslPolicyTargetHttpsProxyTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("setSslPolicyTargetHttpsProxyTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalTargetHttpsProxyName targetHttpsProxy =
         ProjectGlobalTargetHttpsProxyName.of("[PROJECT]", "[TARGET_HTTPS_PROXY]");
     SslPolicyReference sslPolicyReferenceResource = SslPolicyReference.newBuilder().build();
 
-    Operation actualResponse =
-        client.setSslPolicyTargetHttpsProxy(targetHttpsProxy, sslPolicyReferenceResource);
+    EmptyMessage actualResponse =
+        client
+            .setSslPolicyTargetHttpsProxyAsync(targetHttpsProxy, sslPolicyReferenceResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -679,69 +499,29 @@ public void setSslPolicyTargetHttpsProxyExceptionTest() throws Exception {
           ProjectGlobalTargetHttpsProxyName.of("[PROJECT]", "[TARGET_HTTPS_PROXY]");
       SslPolicyReference sslPolicyReferenceResource = SslPolicyReference.newBuilder().build();
 
-      client.setSslPolicyTargetHttpsProxy(targetHttpsProxy, sslPolicyReferenceResource);
+      client.setSslPolicyTargetHttpsProxyAsync(targetHttpsProxy, sslPolicyReferenceResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void setUrlMapTargetHttpsProxyTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void setUrlMapTargetHttpsProxyTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("setUrlMapTargetHttpsProxyTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectTargetHttpsProxyName targetHttpsProxy =
         ProjectTargetHttpsProxyName.of("[PROJECT]", "[TARGET_HTTPS_PROXY]");
     UrlMapReference urlMapReferenceResource = UrlMapReference.newBuilder().build();
 
-    Operation actualResponse =
-        client.setUrlMapTargetHttpsProxy(targetHttpsProxy, urlMapReferenceResource);
+    EmptyMessage actualResponse =
+        client.setUrlMapTargetHttpsProxyAsync(targetHttpsProxy, urlMapReferenceResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -772,10 +552,12 @@ public void setUrlMapTargetHttpsProxyExceptionTest() throws Exception {
           ProjectTargetHttpsProxyName.of("[PROJECT]", "[TARGET_HTTPS_PROXY]");
       UrlMapReference urlMapReferenceResource = UrlMapReference.newBuilder().build();
 
-      client.setUrlMapTargetHttpsProxy(targetHttpsProxy, urlMapReferenceResource);
+      client.setUrlMapTargetHttpsProxyAsync(targetHttpsProxy, urlMapReferenceResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/TargetInstanceClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/TargetInstanceClientTest.java
index 5b3c13b8841b..4ff3f2b0041e 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/TargetInstanceClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/TargetInstanceClientTest.java
@@ -25,6 +25,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -41,6 +42,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -152,58 +154,16 @@ public void aggregatedListTargetInstancesExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteTargetInstanceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteTargetInstanceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteTargetInstanceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneTargetInstanceName targetInstance =
         ProjectZoneTargetInstanceName.of("[PROJECT]", "[ZONE]", "[TARGET_INSTANCE]");
 
-    Operation actualResponse = client.deleteTargetInstance(targetInstance);
+    EmptyMessage actualResponse = client.deleteTargetInstanceAsync(targetInstance).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -233,10 +193,12 @@ public void deleteTargetInstanceExceptionTest() throws Exception {
       ProjectZoneTargetInstanceName targetInstance =
           ProjectZoneTargetInstanceName.of("[PROJECT]", "[ZONE]", "[TARGET_INSTANCE]");
 
-      client.deleteTargetInstance(targetInstance);
+      client.deleteTargetInstanceAsync(targetInstance).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -309,58 +271,17 @@ public void getTargetInstanceExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertTargetInstanceTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone2 = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone2.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertTargetInstanceTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertTargetInstanceTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
     TargetInstance targetInstanceResource = TargetInstance.newBuilder().build();
 
-    Operation actualResponse = client.insertTargetInstance(zone, targetInstanceResource);
+    EmptyMessage actualResponse =
+        client.insertTargetInstanceAsync(zone, targetInstanceResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -390,10 +311,12 @@ public void insertTargetInstanceExceptionTest() throws Exception {
       ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
       TargetInstance targetInstanceResource = TargetInstance.newBuilder().build();
 
-      client.insertTargetInstance(zone, targetInstanceResource);
+      client.insertTargetInstanceAsync(zone, targetInstanceResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/TargetPoolClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/TargetPoolClientTest.java
index b1c9e7e4e39d..3c35427c9f20 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/TargetPoolClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/TargetPoolClientTest.java
@@ -31,6 +31,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -47,6 +48,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -101,61 +103,21 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void addHealthCheckTargetPoolTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void addHealthCheckTargetPoolTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("addHealthCheckTargetPoolTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionTargetPoolName targetPool =
         ProjectRegionTargetPoolName.of("[PROJECT]", "[REGION]", "[TARGET_POOL]");
     TargetPoolsAddHealthCheckRequest targetPoolsAddHealthCheckRequestResource =
         TargetPoolsAddHealthCheckRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.addHealthCheckTargetPool(targetPool, targetPoolsAddHealthCheckRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .addHealthCheckTargetPoolAsync(targetPool, targetPoolsAddHealthCheckRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -187,70 +149,32 @@ public void addHealthCheckTargetPoolExceptionTest() throws Exception {
       TargetPoolsAddHealthCheckRequest targetPoolsAddHealthCheckRequestResource =
           TargetPoolsAddHealthCheckRequest.newBuilder().build();
 
-      client.addHealthCheckTargetPool(targetPool, targetPoolsAddHealthCheckRequestResource);
+      client
+          .addHealthCheckTargetPoolAsync(targetPool, targetPoolsAddHealthCheckRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void addInstanceTargetPoolTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void addInstanceTargetPoolTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("addInstanceTargetPoolTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionTargetPoolName targetPool =
         ProjectRegionTargetPoolName.of("[PROJECT]", "[REGION]", "[TARGET_POOL]");
     TargetPoolsAddInstanceRequest targetPoolsAddInstanceRequestResource =
         TargetPoolsAddInstanceRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.addInstanceTargetPool(targetPool, targetPoolsAddInstanceRequestResource);
+    EmptyMessage actualResponse =
+        client.addInstanceTargetPoolAsync(targetPool, targetPoolsAddInstanceRequestResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -282,10 +206,12 @@ public void addInstanceTargetPoolExceptionTest() throws Exception {
       TargetPoolsAddInstanceRequest targetPoolsAddInstanceRequestResource =
           TargetPoolsAddInstanceRequest.newBuilder().build();
 
-      client.addInstanceTargetPool(targetPool, targetPoolsAddInstanceRequestResource);
+      client.addInstanceTargetPoolAsync(targetPool, targetPoolsAddInstanceRequestResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -354,58 +280,16 @@ public void aggregatedListTargetPoolsExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteTargetPoolTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteTargetPoolTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteTargetPoolTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionTargetPoolName targetPool =
         ProjectRegionTargetPoolName.of("[PROJECT]", "[REGION]", "[TARGET_POOL]");
 
-    Operation actualResponse = client.deleteTargetPool(targetPool);
+    EmptyMessage actualResponse = client.deleteTargetPoolAsync(targetPool).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -435,10 +319,12 @@ public void deleteTargetPoolExceptionTest() throws Exception {
       ProjectRegionTargetPoolName targetPool =
           ProjectRegionTargetPoolName.of("[PROJECT]", "[REGION]", "[TARGET_POOL]");
 
-      client.deleteTargetPool(targetPool);
+      client.deleteTargetPoolAsync(targetPool).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -563,58 +449,16 @@ public void getHealthTargetPoolExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertTargetPoolTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region2 = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region2.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertTargetPoolTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertTargetPoolTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
     TargetPool targetPoolResource = TargetPool.newBuilder().build();
 
-    Operation actualResponse = client.insertTargetPool(region, targetPoolResource);
+    EmptyMessage actualResponse = client.insertTargetPoolAsync(region, targetPoolResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -644,10 +488,12 @@ public void insertTargetPoolExceptionTest() throws Exception {
       ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
       TargetPool targetPoolResource = TargetPool.newBuilder().build();
 
-      client.insertTargetPool(region, targetPoolResource);
+      client.insertTargetPoolAsync(region, targetPoolResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -713,61 +559,22 @@ public void listTargetPoolsExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void removeHealthCheckTargetPoolTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void removeHealthCheckTargetPoolTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("removeHealthCheckTargetPoolTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionTargetPoolName targetPool =
         ProjectRegionTargetPoolName.of("[PROJECT]", "[REGION]", "[TARGET_POOL]");
     TargetPoolsRemoveHealthCheckRequest targetPoolsRemoveHealthCheckRequestResource =
         TargetPoolsRemoveHealthCheckRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.removeHealthCheckTargetPool(targetPool, targetPoolsRemoveHealthCheckRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .removeHealthCheckTargetPoolAsync(
+                targetPool, targetPoolsRemoveHealthCheckRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -799,70 +606,34 @@ public void removeHealthCheckTargetPoolExceptionTest() throws Exception {
       TargetPoolsRemoveHealthCheckRequest targetPoolsRemoveHealthCheckRequestResource =
           TargetPoolsRemoveHealthCheckRequest.newBuilder().build();
 
-      client.removeHealthCheckTargetPool(targetPool, targetPoolsRemoveHealthCheckRequestResource);
+      client
+          .removeHealthCheckTargetPoolAsync(targetPool, targetPoolsRemoveHealthCheckRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void removeInstanceTargetPoolTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void removeInstanceTargetPoolTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("removeInstanceTargetPoolTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionTargetPoolName targetPool =
         ProjectRegionTargetPoolName.of("[PROJECT]", "[REGION]", "[TARGET_POOL]");
     TargetPoolsRemoveInstanceRequest targetPoolsRemoveInstanceRequestResource =
         TargetPoolsRemoveInstanceRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.removeInstanceTargetPool(targetPool, targetPoolsRemoveInstanceRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .removeInstanceTargetPoolAsync(targetPool, targetPoolsRemoveInstanceRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -894,70 +665,32 @@ public void removeInstanceTargetPoolExceptionTest() throws Exception {
       TargetPoolsRemoveInstanceRequest targetPoolsRemoveInstanceRequestResource =
           TargetPoolsRemoveInstanceRequest.newBuilder().build();
 
-      client.removeInstanceTargetPool(targetPool, targetPoolsRemoveInstanceRequestResource);
+      client
+          .removeInstanceTargetPoolAsync(targetPool, targetPoolsRemoveInstanceRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void setBackupTargetPoolTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void setBackupTargetPoolTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("setBackupTargetPoolTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionTargetPoolName targetPool =
         ProjectRegionTargetPoolName.of("[PROJECT]", "[REGION]", "[TARGET_POOL]");
     Float failoverRatio = -8.6107481E7F;
     TargetReference targetReferenceResource = TargetReference.newBuilder().build();
 
-    Operation actualResponse =
-        client.setBackupTargetPool(targetPool, failoverRatio, targetReferenceResource);
+    EmptyMessage actualResponse =
+        client.setBackupTargetPoolAsync(targetPool, failoverRatio, targetReferenceResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -989,10 +722,12 @@ public void setBackupTargetPoolExceptionTest() throws Exception {
       Float failoverRatio = -8.6107481E7F;
       TargetReference targetReferenceResource = TargetReference.newBuilder().build();
 
-      client.setBackupTargetPool(targetPool, failoverRatio, targetReferenceResource);
+      client.setBackupTargetPoolAsync(targetPool, failoverRatio, targetReferenceResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/TargetSslProxyClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/TargetSslProxyClientTest.java
index 4283c4c670b0..c0c1ca767592 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/TargetSslProxyClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/TargetSslProxyClientTest.java
@@ -27,6 +27,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -41,6 +42,7 @@
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -92,58 +94,16 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteTargetSslProxyTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteTargetSslProxyTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteTargetSslProxyTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalTargetSslProxyName targetSslProxy =
         ProjectGlobalTargetSslProxyName.of("[PROJECT]", "[TARGET_SSL_PROXY]");
 
-    Operation actualResponse = client.deleteTargetSslProxy(targetSslProxy);
+    EmptyMessage actualResponse = client.deleteTargetSslProxyAsync(targetSslProxy).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -173,10 +133,12 @@ public void deleteTargetSslProxyExceptionTest() throws Exception {
       ProjectGlobalTargetSslProxyName targetSslProxy =
           ProjectGlobalTargetSslProxyName.of("[PROJECT]", "[TARGET_SSL_PROXY]");
 
-      client.deleteTargetSslProxy(targetSslProxy);
+      client.deleteTargetSslProxyAsync(targetSslProxy).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -249,58 +211,17 @@ public void getTargetSslProxyExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertTargetSslProxyTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertTargetSslProxyTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertTargetSslProxyTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
     TargetSslProxy targetSslProxyResource = TargetSslProxy.newBuilder().build();
 
-    Operation actualResponse = client.insertTargetSslProxy(project, targetSslProxyResource);
+    EmptyMessage actualResponse =
+        client.insertTargetSslProxyAsync(project, targetSslProxyResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -330,10 +251,12 @@ public void insertTargetSslProxyExceptionTest() throws Exception {
       ProjectName project = ProjectName.of("[PROJECT]");
       TargetSslProxy targetSslProxyResource = TargetSslProxy.newBuilder().build();
 
-      client.insertTargetSslProxy(project, targetSslProxyResource);
+      client.insertTargetSslProxyAsync(project, targetSslProxyResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -399,62 +322,25 @@ public void listTargetSslProxiesExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void setBackendServiceTargetSslProxyTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void setBackendServiceTargetSslProxyTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("setBackendServiceTargetSslProxyTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalTargetSslProxyName targetSslProxy =
         ProjectGlobalTargetSslProxyName.of("[PROJECT]", "[TARGET_SSL_PROXY]");
     TargetSslProxiesSetBackendServiceRequest targetSslProxiesSetBackendServiceRequestResource =
         TargetSslProxiesSetBackendServiceRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.setBackendServiceTargetSslProxy(
-            targetSslProxy, targetSslProxiesSetBackendServiceRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .setBackendServiceTargetSslProxyAsync(
+                targetSslProxy, targetSslProxiesSetBackendServiceRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -486,72 +372,39 @@ public void setBackendServiceTargetSslProxyExceptionTest() throws Exception {
       TargetSslProxiesSetBackendServiceRequest targetSslProxiesSetBackendServiceRequestResource =
           TargetSslProxiesSetBackendServiceRequest.newBuilder().build();
 
-      client.setBackendServiceTargetSslProxy(
-          targetSslProxy, targetSslProxiesSetBackendServiceRequestResource);
+      client
+          .setBackendServiceTargetSslProxyAsync(
+              targetSslProxy, targetSslProxiesSetBackendServiceRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void setProxyHeaderTargetSslProxyTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void setProxyHeaderTargetSslProxyTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("setProxyHeaderTargetSslProxyTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalTargetSslProxyName targetSslProxy =
         ProjectGlobalTargetSslProxyName.of("[PROJECT]", "[TARGET_SSL_PROXY]");
     TargetSslProxiesSetProxyHeaderRequest targetSslProxiesSetProxyHeaderRequestResource =
         TargetSslProxiesSetProxyHeaderRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.setProxyHeaderTargetSslProxy(
-            targetSslProxy, targetSslProxiesSetProxyHeaderRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .setProxyHeaderTargetSslProxyAsync(
+                targetSslProxy, targetSslProxiesSetProxyHeaderRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -583,72 +436,39 @@ public void setProxyHeaderTargetSslProxyExceptionTest() throws Exception {
       TargetSslProxiesSetProxyHeaderRequest targetSslProxiesSetProxyHeaderRequestResource =
           TargetSslProxiesSetProxyHeaderRequest.newBuilder().build();
 
-      client.setProxyHeaderTargetSslProxy(
-          targetSslProxy, targetSslProxiesSetProxyHeaderRequestResource);
+      client
+          .setProxyHeaderTargetSslProxyAsync(
+              targetSslProxy, targetSslProxiesSetProxyHeaderRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void setSslCertificatesTargetSslProxyTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void setSslCertificatesTargetSslProxyTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("setSslCertificatesTargetSslProxyTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalTargetSslProxyName targetSslProxy =
         ProjectGlobalTargetSslProxyName.of("[PROJECT]", "[TARGET_SSL_PROXY]");
     TargetSslProxiesSetSslCertificatesRequest targetSslProxiesSetSslCertificatesRequestResource =
         TargetSslProxiesSetSslCertificatesRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.setSslCertificatesTargetSslProxy(
-            targetSslProxy, targetSslProxiesSetSslCertificatesRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .setSslCertificatesTargetSslProxyAsync(
+                targetSslProxy, targetSslProxiesSetSslCertificatesRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -680,70 +500,32 @@ public void setSslCertificatesTargetSslProxyExceptionTest() throws Exception {
       TargetSslProxiesSetSslCertificatesRequest targetSslProxiesSetSslCertificatesRequestResource =
           TargetSslProxiesSetSslCertificatesRequest.newBuilder().build();
 
-      client.setSslCertificatesTargetSslProxy(
-          targetSslProxy, targetSslProxiesSetSslCertificatesRequestResource);
+      client
+          .setSslCertificatesTargetSslProxyAsync(
+              targetSslProxy, targetSslProxiesSetSslCertificatesRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void setSslPolicyTargetSslProxyTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void setSslPolicyTargetSslProxyTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("setSslPolicyTargetSslProxyTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalTargetSslProxyName targetSslProxy =
         ProjectGlobalTargetSslProxyName.of("[PROJECT]", "[TARGET_SSL_PROXY]");
     SslPolicyReference sslPolicyReferenceResource = SslPolicyReference.newBuilder().build();
 
-    Operation actualResponse =
-        client.setSslPolicyTargetSslProxy(targetSslProxy, sslPolicyReferenceResource);
+    EmptyMessage actualResponse =
+        client.setSslPolicyTargetSslProxyAsync(targetSslProxy, sslPolicyReferenceResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -774,10 +556,12 @@ public void setSslPolicyTargetSslProxyExceptionTest() throws Exception {
           ProjectGlobalTargetSslProxyName.of("[PROJECT]", "[TARGET_SSL_PROXY]");
       SslPolicyReference sslPolicyReferenceResource = SslPolicyReference.newBuilder().build();
 
-      client.setSslPolicyTargetSslProxy(targetSslProxy, sslPolicyReferenceResource);
+      client.setSslPolicyTargetSslProxyAsync(targetSslProxy, sslPolicyReferenceResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/TargetTcpProxyClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/TargetTcpProxyClientTest.java
index c422fa0df499..6eb2687ed04d 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/TargetTcpProxyClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/TargetTcpProxyClientTest.java
@@ -25,6 +25,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -39,6 +40,7 @@
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -88,58 +90,16 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteTargetTcpProxyTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteTargetTcpProxyTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteTargetTcpProxyTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalTargetTcpProxyName targetTcpProxy =
         ProjectGlobalTargetTcpProxyName.of("[PROJECT]", "[TARGET_TCP_PROXY]");
 
-    Operation actualResponse = client.deleteTargetTcpProxy(targetTcpProxy);
+    EmptyMessage actualResponse = client.deleteTargetTcpProxyAsync(targetTcpProxy).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -169,10 +129,12 @@ public void deleteTargetTcpProxyExceptionTest() throws Exception {
       ProjectGlobalTargetTcpProxyName targetTcpProxy =
           ProjectGlobalTargetTcpProxyName.of("[PROJECT]", "[TARGET_TCP_PROXY]");
 
-      client.deleteTargetTcpProxy(targetTcpProxy);
+      client.deleteTargetTcpProxyAsync(targetTcpProxy).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -242,58 +204,17 @@ public void getTargetTcpProxyExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertTargetTcpProxyTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertTargetTcpProxyTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertTargetTcpProxyTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
     TargetTcpProxy targetTcpProxyResource = TargetTcpProxy.newBuilder().build();
 
-    Operation actualResponse = client.insertTargetTcpProxy(project, targetTcpProxyResource);
+    EmptyMessage actualResponse =
+        client.insertTargetTcpProxyAsync(project, targetTcpProxyResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -323,10 +244,12 @@ public void insertTargetTcpProxyExceptionTest() throws Exception {
       ProjectName project = ProjectName.of("[PROJECT]");
       TargetTcpProxy targetTcpProxyResource = TargetTcpProxy.newBuilder().build();
 
-      client.insertTargetTcpProxy(project, targetTcpProxyResource);
+      client.insertTargetTcpProxyAsync(project, targetTcpProxyResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -392,62 +315,25 @@ public void listTargetTcpProxiesExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void setBackendServiceTargetTcpProxyTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void setBackendServiceTargetTcpProxyTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("setBackendServiceTargetTcpProxyTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalTargetTcpProxyName targetTcpProxy =
         ProjectGlobalTargetTcpProxyName.of("[PROJECT]", "[TARGET_TCP_PROXY]");
     TargetTcpProxiesSetBackendServiceRequest targetTcpProxiesSetBackendServiceRequestResource =
         TargetTcpProxiesSetBackendServiceRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.setBackendServiceTargetTcpProxy(
-            targetTcpProxy, targetTcpProxiesSetBackendServiceRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .setBackendServiceTargetTcpProxyAsync(
+                targetTcpProxy, targetTcpProxiesSetBackendServiceRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -479,72 +365,39 @@ public void setBackendServiceTargetTcpProxyExceptionTest() throws Exception {
       TargetTcpProxiesSetBackendServiceRequest targetTcpProxiesSetBackendServiceRequestResource =
           TargetTcpProxiesSetBackendServiceRequest.newBuilder().build();
 
-      client.setBackendServiceTargetTcpProxy(
-          targetTcpProxy, targetTcpProxiesSetBackendServiceRequestResource);
+      client
+          .setBackendServiceTargetTcpProxyAsync(
+              targetTcpProxy, targetTcpProxiesSetBackendServiceRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void setProxyHeaderTargetTcpProxyTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
+  public void setProxyHeaderTargetTcpProxyTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
         Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
+            .setName("setProxyHeaderTargetTcpProxyTest")
+            .setStatus("DONE")
             .build();
-    mockService.addResponse(expectedResponse);
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalTargetTcpProxyName targetTcpProxy =
         ProjectGlobalTargetTcpProxyName.of("[PROJECT]", "[TARGET_TCP_PROXY]");
     TargetTcpProxiesSetProxyHeaderRequest targetTcpProxiesSetProxyHeaderRequestResource =
         TargetTcpProxiesSetProxyHeaderRequest.newBuilder().build();
 
-    Operation actualResponse =
-        client.setProxyHeaderTargetTcpProxy(
-            targetTcpProxy, targetTcpProxiesSetProxyHeaderRequestResource);
+    EmptyMessage actualResponse =
+        client
+            .setProxyHeaderTargetTcpProxyAsync(
+                targetTcpProxy, targetTcpProxiesSetProxyHeaderRequestResource)
+            .get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -576,11 +429,15 @@ public void setProxyHeaderTargetTcpProxyExceptionTest() throws Exception {
       TargetTcpProxiesSetProxyHeaderRequest targetTcpProxiesSetProxyHeaderRequestResource =
           TargetTcpProxiesSetProxyHeaderRequest.newBuilder().build();
 
-      client.setProxyHeaderTargetTcpProxy(
-          targetTcpProxy, targetTcpProxiesSetProxyHeaderRequestResource);
+      client
+          .setProxyHeaderTargetTcpProxyAsync(
+              targetTcpProxy, targetTcpProxiesSetProxyHeaderRequestResource)
+          .get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 }
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/TargetVpnGatewayClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/TargetVpnGatewayClientTest.java
index a37e859c36e5..5f61d068154c 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/TargetVpnGatewayClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/TargetVpnGatewayClientTest.java
@@ -25,6 +25,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -41,6 +42,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -153,58 +155,16 @@ public void aggregatedListTargetVpnGatewaysExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteTargetVpnGatewayTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteTargetVpnGatewayTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteTargetVpnGatewayTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionTargetVpnGatewayName targetVpnGateway =
         ProjectRegionTargetVpnGatewayName.of("[PROJECT]", "[REGION]", "[TARGET_VPN_GATEWAY]");
 
-    Operation actualResponse = client.deleteTargetVpnGateway(targetVpnGateway);
+    EmptyMessage actualResponse = client.deleteTargetVpnGatewayAsync(targetVpnGateway).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -234,10 +194,12 @@ public void deleteTargetVpnGatewayExceptionTest() throws Exception {
       ProjectRegionTargetVpnGatewayName targetVpnGateway =
           ProjectRegionTargetVpnGatewayName.of("[PROJECT]", "[REGION]", "[TARGET_VPN_GATEWAY]");
 
-      client.deleteTargetVpnGateway(targetVpnGateway);
+      client.deleteTargetVpnGatewayAsync(targetVpnGateway).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -309,58 +271,17 @@ public void getTargetVpnGatewayExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertTargetVpnGatewayTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region2 = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region2.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertTargetVpnGatewayTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertTargetVpnGatewayTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
     TargetVpnGateway targetVpnGatewayResource = TargetVpnGateway.newBuilder().build();
 
-    Operation actualResponse = client.insertTargetVpnGateway(region, targetVpnGatewayResource);
+    EmptyMessage actualResponse =
+        client.insertTargetVpnGatewayAsync(region, targetVpnGatewayResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -390,10 +311,12 @@ public void insertTargetVpnGatewayExceptionTest() throws Exception {
       ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
       TargetVpnGateway targetVpnGatewayResource = TargetVpnGateway.newBuilder().build();
 
-      client.insertTargetVpnGateway(region, targetVpnGatewayResource);
+      client.insertTargetVpnGatewayAsync(region, targetVpnGatewayResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/UrlMapClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/UrlMapClientTest.java
index f7a3e92d9d34..98ea73829862 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/UrlMapClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/UrlMapClientTest.java
@@ -27,6 +27,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -42,6 +43,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -93,57 +95,15 @@ public static void tearDown() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteUrlMapTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteUrlMapTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteUrlMapTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalUrlMapName urlMap = ProjectGlobalUrlMapName.of("[PROJECT]", "[URL_MAP]");
 
-    Operation actualResponse = client.deleteUrlMap(urlMap);
+    EmptyMessage actualResponse = client.deleteUrlMapAsync(urlMap).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -172,10 +132,12 @@ public void deleteUrlMapExceptionTest() throws Exception {
     try {
       ProjectGlobalUrlMapName urlMap = ProjectGlobalUrlMapName.of("[PROJECT]", "[URL_MAP]");
 
-      client.deleteUrlMap(urlMap);
+      client.deleteUrlMapAsync(urlMap).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -243,58 +205,16 @@ public void getUrlMapExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertUrlMapTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertUrlMapTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertUrlMapTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectName project = ProjectName.of("[PROJECT]");
     UrlMap urlMapResource = UrlMap.newBuilder().build();
 
-    Operation actualResponse = client.insertUrlMap(project, urlMapResource);
+    EmptyMessage actualResponse = client.insertUrlMapAsync(project, urlMapResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -324,68 +244,29 @@ public void insertUrlMapExceptionTest() throws Exception {
       ProjectName project = ProjectName.of("[PROJECT]");
       UrlMap urlMapResource = UrlMap.newBuilder().build();
 
-      client.insertUrlMap(project, urlMapResource);
+      client.insertUrlMapAsync(project, urlMapResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void invalidateCacheUrlMapTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void invalidateCacheUrlMapTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("invalidateCacheUrlMapTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalUrlMapName urlMap = ProjectGlobalUrlMapName.of("[PROJECT]", "[URL_MAP]");
     CacheInvalidationRule cacheInvalidationRuleResource =
         CacheInvalidationRule.newBuilder().build();
 
-    Operation actualResponse = client.invalidateCacheUrlMap(urlMap, cacheInvalidationRuleResource);
+    EmptyMessage actualResponse =
+        client.invalidateCacheUrlMapAsync(urlMap, cacheInvalidationRuleResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -416,10 +297,12 @@ public void invalidateCacheUrlMapExceptionTest() throws Exception {
       CacheInvalidationRule cacheInvalidationRuleResource =
           CacheInvalidationRule.newBuilder().build();
 
-      client.invalidateCacheUrlMap(urlMap, cacheInvalidationRuleResource);
+      client.invalidateCacheUrlMapAsync(urlMap, cacheInvalidationRuleResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -485,59 +368,17 @@ public void listUrlMapsExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void patchUrlMapTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void patchUrlMapTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("patchUrlMapTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalUrlMapName urlMap = ProjectGlobalUrlMapName.of("[PROJECT]", "[URL_MAP]");
     UrlMap urlMapResource = UrlMap.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse = client.patchUrlMap(urlMap, urlMapResource, fieldMask);
+    EmptyMessage actualResponse = client.patchUrlMapAsync(urlMap, urlMapResource, fieldMask).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -568,68 +409,28 @@ public void patchUrlMapExceptionTest() throws Exception {
       UrlMap urlMapResource = UrlMap.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.patchUrlMap(urlMap, urlMapResource, fieldMask);
+      client.patchUrlMapAsync(urlMap, urlMapResource, fieldMask).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
   @Test
   @SuppressWarnings("all")
-  public void updateUrlMapTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void updateUrlMapTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("updateUrlMapTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectGlobalUrlMapName urlMap = ProjectGlobalUrlMapName.of("[PROJECT]", "[URL_MAP]");
     UrlMap urlMapResource = UrlMap.newBuilder().build();
     List fieldMask = new ArrayList<>();
 
-    Operation actualResponse = client.updateUrlMap(urlMap, urlMapResource, fieldMask);
+    EmptyMessage actualResponse = client.updateUrlMapAsync(urlMap, urlMapResource, fieldMask).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -660,10 +461,12 @@ public void updateUrlMapExceptionTest() throws Exception {
       UrlMap urlMapResource = UrlMap.newBuilder().build();
       List fieldMask = new ArrayList<>();
 
-      client.updateUrlMap(urlMap, urlMapResource, fieldMask);
+      client.updateUrlMapAsync(urlMap, urlMapResource, fieldMask).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/VpnTunnelClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/VpnTunnelClientTest.java
index 277c15f8343f..e128bbe69732 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/VpnTunnelClientTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/VpnTunnelClientTest.java
@@ -25,6 +25,7 @@
 
 import com.google.api.gax.core.NoCredentialsProvider;
 import com.google.api.gax.httpjson.ApiMethodDescriptor;
+import com.google.api.gax.httpjson.EmptyMessage;
 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
 import com.google.api.gax.httpjson.testing.MockHttpService;
 import com.google.api.gax.rpc.ApiClientHeaderProvider;
@@ -41,6 +42,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -152,58 +154,16 @@ public void aggregatedListVpnTunnelsExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void deleteVpnTunnelTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void deleteVpnTunnelTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("deleteVpnTunnelTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionVpnTunnelName vpnTunnel =
         ProjectRegionVpnTunnelName.of("[PROJECT]", "[REGION]", "[VPN_TUNNEL]");
 
-    Operation actualResponse = client.deleteVpnTunnel(vpnTunnel);
+    EmptyMessage actualResponse = client.deleteVpnTunnelAsync(vpnTunnel).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -233,10 +193,12 @@ public void deleteVpnTunnelExceptionTest() throws Exception {
       ProjectRegionVpnTunnelName vpnTunnel =
           ProjectRegionVpnTunnelName.of("[PROJECT]", "[REGION]", "[VPN_TUNNEL]");
 
-      client.deleteVpnTunnel(vpnTunnel);
+      client.deleteVpnTunnelAsync(vpnTunnel).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
@@ -322,58 +284,16 @@ public void getVpnTunnelExceptionTest() throws Exception {
 
   @Test
   @SuppressWarnings("all")
-  public void insertVpnTunnelTest() {
-    String clientOperationId = "clientOperationId-239630617";
-    String creationTimestamp = "creationTimestamp567396278";
-    String description = "description-1724546052";
-    String endTime = "endTime1725551537";
-    String httpErrorMessage = "httpErrorMessage1276263769";
-    Integer httpErrorStatusCode = 1386087020;
-    String id = "id3355";
-    String insertTime = "insertTime-103148397";
-    String kind = "kind3292052";
-    String name = "name3373707";
-    String operationType = "operationType-1432962286";
-    Integer progress = 1001078227;
-    ProjectRegionName region2 = ProjectRegionName.of("[PROJECT]", "[REGION]");
-    String selfLink = "selfLink-1691268851";
-    String startTime = "startTime-1573145462";
-    String status = "status-892481550";
-    String statusMessage = "statusMessage-239442758";
-    String targetId = "targetId-815576439";
-    String targetLink = "targetLink-2084812312";
-    String user = "user3599307";
-    ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
-    Operation expectedResponse =
-        Operation.newBuilder()
-            .setClientOperationId(clientOperationId)
-            .setCreationTimestamp(creationTimestamp)
-            .setDescription(description)
-            .setEndTime(endTime)
-            .setHttpErrorMessage(httpErrorMessage)
-            .setHttpErrorStatusCode(httpErrorStatusCode)
-            .setId(id)
-            .setInsertTime(insertTime)
-            .setKind(kind)
-            .setName(name)
-            .setOperationType(operationType)
-            .setProgress(progress)
-            .setRegion(region2.toString())
-            .setSelfLink(selfLink)
-            .setStartTime(startTime)
-            .setStatus(status)
-            .setStatusMessage(statusMessage)
-            .setTargetId(targetId)
-            .setTargetLink(targetLink)
-            .setUser(user)
-            .setZone(zone.toString())
-            .build();
-    mockService.addResponse(expectedResponse);
+  public void insertVpnTunnelTest() throws Exception {
+    EmptyMessage expectedResponse = null;
+    Operation resultOperation =
+        Operation.newBuilder().setName("insertVpnTunnelTest").setStatus("DONE").build();
+    mockService.addResponse(resultOperation);
 
     ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
     VpnTunnel vpnTunnelResource = VpnTunnel.newBuilder().build();
 
-    Operation actualResponse = client.insertVpnTunnel(region, vpnTunnelResource);
+    EmptyMessage actualResponse = client.insertVpnTunnelAsync(region, vpnTunnelResource).get();
     Assert.assertEquals(expectedResponse, actualResponse);
 
     List actualRequests = mockService.getRequestPaths();
@@ -403,10 +323,12 @@ public void insertVpnTunnelExceptionTest() throws Exception {
       ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
       VpnTunnel vpnTunnelResource = VpnTunnel.newBuilder().build();
 
-      client.insertVpnTunnel(region, vpnTunnelResource);
+      client.insertVpnTunnelAsync(region, vpnTunnelResource).get();
       Assert.fail("No exception raised");
-    } catch (InvalidArgumentException e) {
-      // Expected exception
+    } catch (ExecutionException e) {
+      Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
+      InvalidArgumentException apiException = (InvalidArgumentException) e.getCause();
+      Assert.assertEquals(Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
     }
   }
 
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/it/ITComputeTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/it/ITComputeTest.java
index f2834c5dd18a..b44032fd10f4 100644
--- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/it/ITComputeTest.java
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/it/ITComputeTest.java
@@ -18,25 +18,55 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import com.google.api.gax.core.FixedCredentialsProvider;
+import com.google.api.gax.httpjson.EmptyMessage;
+import com.google.api.gax.longrunning.OperationFuture;
 import com.google.api.gax.paging.Page;
+import com.google.api.gax.rpc.ApiException;
+import com.google.api.gax.rpc.NotFoundException;
+import com.google.api.gax.rpc.PermissionDeniedException;
 import com.google.auth.Credentials;
 import com.google.auth.oauth2.GoogleCredentials;
 import com.google.cloud.ServiceOptions;
+import com.google.cloud.compute.v1.AttachedDisk;
+import com.google.cloud.compute.v1.AttachedDiskInitializeParams;
+import com.google.cloud.compute.v1.Disk;
+import com.google.cloud.compute.v1.DiskClient;
+import com.google.cloud.compute.v1.DiskSettings;
 import com.google.cloud.compute.v1.DiskType;
 import com.google.cloud.compute.v1.DiskTypeClient;
 import com.google.cloud.compute.v1.DiskTypeClient.AggregatedListDiskTypesPagedResponse;
 import com.google.cloud.compute.v1.DiskTypeSettings;
 import com.google.cloud.compute.v1.DiskTypesScopedList;
+import com.google.cloud.compute.v1.ImageClient;
+import com.google.cloud.compute.v1.ImageSettings;
+import com.google.cloud.compute.v1.Instance;
+import com.google.cloud.compute.v1.InstanceClient;
+import com.google.cloud.compute.v1.InstanceSettings;
 import com.google.cloud.compute.v1.ListDiskTypesHttpRequest;
+import com.google.cloud.compute.v1.NetworkInterface;
+import com.google.cloud.compute.v1.Operation;
+import com.google.cloud.compute.v1.ProjectGlobalImageName;
 import com.google.cloud.compute.v1.ProjectName;
 import com.google.cloud.compute.v1.ProjectRegionDiskTypeName;
+import com.google.cloud.compute.v1.ProjectRegionSubnetworkName;
+import com.google.cloud.compute.v1.ProjectZoneDiskName;
 import com.google.cloud.compute.v1.ProjectZoneDiskTypeName;
+import com.google.cloud.compute.v1.ProjectZoneInstanceName;
+import com.google.cloud.compute.v1.ProjectZoneMachineTypeName;
 import com.google.cloud.compute.v1.ProjectZoneName;
+import com.google.cloud.compute.v1.Subnetwork;
+import com.google.cloud.compute.v1.SubnetworkClient;
+import com.google.cloud.compute.v1.SubnetworkSettings;
+import com.google.cloud.compute.v1.SubnetworksScopedList;
 import com.google.common.collect.Lists;
-import java.io.IOException;
+import java.util.Arrays;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.UUID;
+import java.util.concurrent.TimeUnit;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Rule;
@@ -45,31 +75,235 @@
 
 public class ITComputeTest {
 
-  private static final String ZONE = "us-central1-a";
+  private static final Logger log = Logger.getLogger(ITComputeTest.class.getName());
+
+  private static final String ZONE = "us-west1-a";
   private static final String DISK_TYPE = "local-ssd";
   private static final String DEFAULT_PROJECT = ServiceOptions.getDefaultProjectId();
+  private static final String UUID_INSTANCE = UUID.randomUUID().toString().replaceAll("-", "");
+
+  private static final String INSTANCE_NAME_FORMAT =
+      String.format("test-api-instance-%s", UUID_INSTANCE);
+  private static final String REGION = "us-west1";
+
+  private static final ProjectZoneName PROJECT_ZONE_NAME =
+      ProjectZoneName.of(DEFAULT_PROJECT, ZONE);
+  private static final ProjectZoneMachineTypeName MACHINE_TYPE_NAME =
+      ProjectZoneMachineTypeName.of(
+          String.format("custom-%s-%s", 4, 4 * 1024), DEFAULT_PROJECT, ZONE);
+
+  // Google-managed image. See https://cloud.google.com/compute/docs/images.
+  private static final ProjectGlobalImageName IMAGE_NAME =
+      ProjectGlobalImageName.of("cos-69-10895-138-0", "cos-cloud");
+  private static final ProjectZoneInstanceName INSTANCE_NAME =
+      ProjectZoneInstanceName.of(
+          String.format(INSTANCE_NAME_FORMAT, UUID_INSTANCE), DEFAULT_PROJECT, ZONE);
+
+  private static final ProjectZoneDiskTypeName diskTypeName =
+      ProjectZoneDiskTypeName.of("pd-standard", DEFAULT_PROJECT, ZONE);
+  private static final ProjectZoneDiskName DISK_NAME =
+      ProjectZoneDiskName.of(
+          String.format("test-api-device-name-%s", UUID_INSTANCE), DEFAULT_PROJECT, ZONE);
 
   private static DiskTypeClient diskTypeClient;
-  private static DiskTypeSettings diskTypeSettings;
+  private static InstanceClient instanceClient;
+  private static DiskClient diskClient;
+  private static SubnetworkClient subNetworkClient;
+  private static ImageClient imageClient;
 
   @Rule public Timeout globalTimeout = Timeout.seconds(300);
 
   @BeforeClass
-  public static void beforeClass() throws IOException {
+  public static void beforeClass() throws Exception {
+    Logger.getLogger("").setLevel(Level.ALL);
+
     Credentials credentials =
         GoogleCredentials.getApplicationDefault()
             .createScoped(DiskTypeSettings.getDefaultServiceScopes());
 
-    diskTypeSettings =
+    DiskTypeSettings diskTypeSettings =
         DiskTypeSettings.newBuilder()
             .setCredentialsProvider(FixedCredentialsProvider.create(credentials))
             .build();
     diskTypeClient = DiskTypeClient.create(diskTypeSettings);
+
+    InstanceSettings instanceSettings =
+        InstanceSettings.newBuilder()
+            .setCredentialsProvider(FixedCredentialsProvider.create(credentials))
+            .build();
+    instanceClient = InstanceClient.create(instanceSettings);
+
+    DiskSettings diskSettings =
+        DiskSettings.newBuilder()
+            .setCredentialsProvider(FixedCredentialsProvider.create(credentials))
+            .build();
+    diskClient = DiskClient.create(diskSettings);
+
+    SubnetworkSettings subNetworkSettings =
+        SubnetworkSettings.newBuilder()
+            .setCredentialsProvider(FixedCredentialsProvider.create(credentials))
+            .build();
+    subNetworkClient = SubnetworkClient.create(subNetworkSettings);
+
+    ImageSettings imageSettings =
+        ImageSettings.newBuilder()
+            .setCredentialsProvider(FixedCredentialsProvider.create(credentials))
+            .build();
+    imageClient = ImageClient.create(imageSettings);
+
+    // Remove resources that will be created later to avoid quota problems or resource overriding
+    // errors.
+    removeResources(Arrays.asList(PermissionDeniedException.class, NotFoundException.class));
+  }
+
+  // Remove resources that are created in this test class to avoid overbilling and 403s.
+  // This may take up to a minute.
+  private static void removeResources(List> exceptionTypes)
+      throws Exception {
+    Operation currentOperation;
+    long startAt = System.currentTimeMillis();
+    log.log(
+        Level.INFO,
+        String.format("Attempting to remove the created Instance %sms.", INSTANCE_NAME));
+    try {
+      OperationFuture future =
+          instanceClient.deleteInstanceAsync(INSTANCE_NAME);
+      currentOperation = future.getMetadata().get(); // Get operation status.
+      future.get(50, TimeUnit.SECONDS); // Block until operation completes.
+    } catch (Exception e) {
+      if (isNotExceptionType(exceptionTypes, e)) throw e;
+    }
+    log.log(
+        Level.INFO,
+        String.format(
+            "Removed the created Instance %s in %dms",
+            INSTANCE_NAME, System.currentTimeMillis() - startAt));
+    startAt = System.currentTimeMillis();
+    try {
+      OperationFuture future = diskClient.deleteDiskAsync(DISK_NAME);
+      future.get(20, TimeUnit.SECONDS); // Block until operation completes.
+    } catch (Exception e) {
+      if (isNotExceptionType(exceptionTypes, e)) throw e;
+    }
+    log.log(
+        Level.INFO,
+        String.format(
+            "Removed the created Disk %s in %dms",
+            INSTANCE_NAME, System.currentTimeMillis() - startAt));
+    startAt = System.currentTimeMillis();
+    try {
+      OperationFuture future = imageClient.deleteImageAsync(IMAGE_NAME);
+      future.get(20, TimeUnit.SECONDS); // Block until operation completes.
+    } catch (Exception e) {
+      if (isNotExceptionType(exceptionTypes, e)) throw e;
+    }
+    log.log(
+        Level.INFO,
+        String.format(
+            "Removed the created Image %s in %dms.",
+            IMAGE_NAME, System.currentTimeMillis() - startAt));
+  }
+
+  private static boolean isNotExceptionType(
+      List> exceptionTypes, Exception e) {
+    for (Class type : exceptionTypes) {
+      if (type.isInstance(e)) {
+        return false;
+      }
+      if (e.getCause() != null && type.isInstance(e.getCause())) {
+        return false;
+      }
+    }
+    return true;
   }
 
   @AfterClass
   public static void tearDown() throws Exception {
-    diskTypeClient.close();
+    try {
+      removeResources(Arrays.asList(NotFoundException.class, PermissionDeniedException.class));
+    } finally {
+      diskTypeClient.close();
+      instanceClient.close();
+      subNetworkClient.close();
+      diskClient.close();
+      imageClient.close();
+    }
+  }
+
+  @Test
+  public void testDetachDisk() throws Exception {
+    long startAt = System.currentTimeMillis();
+    System.out.println("Clients created in " + (System.currentTimeMillis() - startAt) + "ms.");
+
+    // Fetch a subnetwork, assuming there is one. Projects start with a default network.
+    Iterable subnetworks =
+        subNetworkClient.aggregatedListSubnetworks(DEFAULT_PROJECT).iterateAll();
+    Subnetwork subnetwork = subnetworks.iterator().next().getSubnetworksList().get(0);
+
+    NetworkInterface networkInterface =
+        NetworkInterface.newBuilder()
+            .setNetwork(subnetwork.getNetwork())
+            .setSubnetwork(
+                ProjectRegionSubnetworkName.of(DEFAULT_PROJECT, REGION, subnetwork.getName())
+                    .toString())
+            .build();
+    AttachedDisk bootDisk =
+        AttachedDisk.newBuilder()
+            .setAutoDelete(true)
+            .setBoot(true)
+            .setInitializeParams(
+                AttachedDiskInitializeParams.newBuilder()
+                    .setSourceImage(IMAGE_NAME.toString())
+                    .setDiskSizeGb(String.valueOf(100))
+                    .build())
+            .build();
+
+    // Insert an instance using the found subnetwork and its corresponding network (may not be the
+    // inserted network).
+    Instance instanceResource =
+        Instance.newBuilder()
+            .setName(INSTANCE_NAME.getInstance())
+            .addNetworkInterfaces(networkInterface)
+            .setMachineType(MACHINE_TYPE_NAME.toString())
+            .addDisks(bootDisk)
+            .build();
+    OperationFuture op1 =
+        instanceClient.insertInstanceAsync(PROJECT_ZONE_NAME, instanceResource);
+    Operation operationSnapshot = op1.getMetadata().get(); // Get operation status.
+    log.log(Level.INFO, (String.format("Operation %s started to create instance: %s", operationSnapshot.getName(), INSTANCE_NAME)));
+    op1.get(); // Blocking until operation completes or times out
+    log.log(Level.INFO, (String.format("Instance created: %s", INSTANCE_NAME)));
+
+    // Insert a disk.
+    Disk disk =
+        Disk.newBuilder()
+            .setName(DISK_NAME.getDisk())
+            .setSizeGb(String.valueOf(7))
+            .setType(diskTypeName.toString())
+            .build();
+    OperationFuture op2 =
+        diskClient.insertDiskAsync(PROJECT_ZONE_NAME, disk);
+    operationSnapshot = op2.getMetadata().get();
+    log.log(Level.INFO, (String.format("Operation %s started to create instance: %s", operationSnapshot.getName(), DISK_NAME)));
+    op1.get(10, TimeUnit.SECONDS); // Blocking until operation completes or times out.
+    log.log(Level.INFO, String.format("Disk created: %s", DISK_NAME));
+
+    // Attach the disk to the instance.
+    AttachedDisk attachedDisk =
+        AttachedDisk.newBuilder()
+            .setDeviceName(DISK_NAME.getDisk())
+            .setAutoDelete(false)
+            .setMode("READ_WRITE")
+            .setSource(DISK_NAME.toString())
+            .build();
+    OperationFuture op3 =
+        instanceClient.attachDiskInstanceAsync(INSTANCE_NAME, false, attachedDisk);
+    log.log(Level.INFO, String.format("Disk attached: %s", op3.toString()));
+    op1.get(10, TimeUnit.SECONDS); // Blocking until operation completes or times out.
+
+    OperationFuture op4 =
+        instanceClient.detachDiskInstanceAsync(INSTANCE_NAME, DISK_NAME.getDisk());
+    log.log(Level.INFO, String.format("Disk detached: %s", DISK_NAME.toString()));
   }
 
   @Test
diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/longrunning/OperationClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/longrunning/OperationClientTest.java
new file mode 100644
index 000000000000..4c343a6d9135
--- /dev/null
+++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/longrunning/OperationClientTest.java
@@ -0,0 +1,356 @@
+// /*
+//  * Copyright 2019 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.
+//  */
+// package com.google.cloud.compute.v1.longrunning;
+//
+// import static com.google.cloud.compute.v1.GlobalOperationClient.AggregatedListGlobalOperationsPagedResponse;
+// import static com.google.cloud.compute.v1.GlobalOperationClient.ListGlobalOperationsPagedResponse;
+// import static com.google.cloud.compute.v1.stub.HttpJsonGlobalOperationStub.aggregatedListGlobalOperationsMethodDescriptor;
+// import static com.google.cloud.compute.v1.stub.HttpJsonGlobalOperationStub.deleteGlobalOperationMethodDescriptor;
+// import static com.google.cloud.compute.v1.stub.HttpJsonGlobalOperationStub.getGlobalOperationMethodDescriptor;
+// import static com.google.cloud.compute.v1.stub.HttpJsonGlobalOperationStub.listGlobalOperationsMethodDescriptor;
+//
+// import com.google.api.core.ApiFuture;
+// import com.google.api.gax.core.NoCredentialsProvider;
+// import com.google.api.gax.httpjson.ApiMethodDescriptor;
+// import com.google.api.gax.httpjson.EmptyMessage;
+// import com.google.api.gax.httpjson.GaxHttpJsonProperties;
+// import com.google.api.gax.httpjson.testing.MockHttpService;
+// import com.google.api.gax.rpc.ApiClientHeaderProvider;
+// import com.google.api.gax.rpc.ApiException;
+// import com.google.api.gax.rpc.ApiExceptionFactory;
+// import com.google.api.gax.rpc.InvalidArgumentException;
+// import com.google.api.gax.rpc.StatusCode.Code;
+// import com.google.api.gax.rpc.testing.FakeStatusCode;
+// import com.google.cloud.compute.v1.GlobalOperationSettings;
+// import com.google.cloud.compute.v1.Operation;
+// import com.google.cloud.compute.v1.OperationAggregatedList;
+// import com.google.cloud.compute.v1.OperationList;
+// import com.google.cloud.compute.v1.OperationsScopedList;
+// import com.google.cloud.compute.v1.ProjectGlobalOperationName;
+// import com.google.cloud.compute.v1.ProjectName;
+// import com.google.cloud.compute.v1.ProjectRegionName;
+// import com.google.cloud.compute.v1.ProjectZoneName;
+// import com.google.cloud.compute.v1.stub.GlobalOperationStub;
+// import com.google.cloud.compute.v1.stub.GlobalOperationStubSettings;
+// import com.google.cloud.compute.v1.stub.HttpJsonGlobalOperationStub;
+// import com.google.common.collect.ImmutableList;
+// import com.google.common.collect.Lists;
+// import java.io.IOException;
+// import java.util.Arrays;
+// import java.util.HashMap;
+// import java.util.List;
+// import java.util.Map;
+// import org.junit.After;
+// import org.junit.AfterClass;
+// import org.junit.Assert;
+// import org.junit.BeforeClass;
+// import org.junit.Test;
+//
+// public class OperationClientTest {
+//
+//   private static final List METHOD_DESCRIPTORS =
+//       ImmutableList.copyOf(
+//           Lists.newArrayList(
+//               aggregatedListGlobalOperationsMethodDescriptor,
+//               deleteGlobalOperationMethodDescriptor,
+//               getGlobalOperationMethodDescriptor,
+//               listGlobalOperationsMethodDescriptor));
+//   private static final MockHttpService mockService =
+//       new MockHttpService(METHOD_DESCRIPTORS, GlobalOperationStubSettings.getDefaultEndpoint());
+//
+//   private static ComputeLongRunningClient client;
+//
+//   @BeforeClass
+//   public static void setUp() throws IOException {
+//     GlobalOperationStubSettings clientSettings =
+//         GlobalOperationStubSettings.newBuilder()
+//             .setTransportChannelProvider(
+//                 GlobalOperationSettings.defaultHttpJsonTransportProviderBuilder()
+//                     .setHttpTransport(mockService)
+//                     .build())
+//             .setCredentialsProvider(NoCredentialsProvider.create())
+//             .build();
+//     client = ComputeLongRunningClientFactory.create(HttpJsonGlobalOperationStub.create(clientSettings));
+//   }
+//
+//   @After
+//   public void cleanUp() {
+//     mockService.reset();
+//   }
+//
+//   @AfterClass
+//   public static void tearDown() throws Exception {
+//     client.close();
+//   }
+//
+//   @Test
+//   @SuppressWarnings("all")
+//   public void aggregatedListGlobalOperationsTest() {
+//     String id = "id3355";
+//     String kind = "kind3292052";
+//     String nextPageToken = "";
+//     String selfLink = "selfLink-1691268851";
+//     OperationsScopedList itemsItem = OperationsScopedList.newBuilder().build();
+//     Map items = new HashMap<>();
+//     items.put("items", itemsItem);
+//     OperationAggregatedList expectedResponse =
+//         OperationAggregatedList.newBuilder()
+//             .setId(id)
+//             .setKind(kind)
+//             .setNextPageToken(nextPageToken)
+//             .setSelfLink(selfLink)
+//             .putAllItems(items)
+//             .build();
+//     mockService.addResponse(expectedResponse);
+//
+//     ProjectName project = ProjectName.of("[PROJECT]");
+//
+//     AggregatedListGlobalOperationsPagedResponse pagedListResponse =
+//         client.aggregatedListGlobalOperations(project);
+//
+//     List resources = Lists.newArrayList(pagedListResponse.iterateAll());
+//     Assert.assertEquals(1, resources.size());
+//     Assert.assertEquals(
+//         expectedResponse.getItemsMap().values().iterator().next(), resources.get(0));
+//
+//     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
+//   @SuppressWarnings("all")
+//   public void aggregatedListGlobalOperationsExceptionTest() throws Exception {
+//     ApiException exception =
+//         ApiExceptionFactory.createException(
+//             new Exception(), FakeStatusCode.of(Code.INVALID_ARGUMENT), false);
+//     mockService.addException(exception);
+//
+//     try {
+//       ProjectName project = ProjectName.of("[PROJECT]");
+//
+//       client.aggregatedListGlobalOperations(project);
+//       Assert.fail("No exception raised");
+//     } catch (InvalidArgumentException e) {
+//       // Expected exception
+//     }
+//   }
+//
+//   @Test
+//   @SuppressWarnings("all")
+//   public void deleteGlobalOperationTest() {
+//     mockService.addNullResponse();
+//
+//     ProjectGlobalOperationName operation =
+//         ProjectGlobalOperationName.of("[PROJECT]", "[OPERATION]");
+//
+//     client.deleteGlobalOperation(operation);
+//
+//     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
+//   @SuppressWarnings("all")
+//   public void deleteGlobalOperationExceptionTest() throws Exception {
+//     ApiException exception =
+//         ApiExceptionFactory.createException(
+//             new Exception(), FakeStatusCode.of(Code.INVALID_ARGUMENT), false);
+//     mockService.addException(exception);
+//
+//     try {
+//       ProjectGlobalOperationName operation =
+//           ProjectGlobalOperationName.of("[PROJECT]", "[OPERATION]");
+//
+//       client.deleteGlobalOperation(operation);
+//       Assert.fail("No exception raised");
+//     } catch (InvalidArgumentException e) {
+//       // Expected exception
+//     }
+//   }
+//
+//   @Test
+//   @SuppressWarnings("all")
+//   public void getGlobalOperationTest() {
+//     String clientOperationId = "clientOperationId-239630617";
+//     String creationTimestamp = "creationTimestamp567396278";
+//     String description = "description-1724546052";
+//     String endTime = "endTime1725551537";
+//     String httpErrorMessage = "httpErrorMessage1276263769";
+//     Integer httpErrorStatusCode = 1386087020;
+//     String id = "id3355";
+//     String insertTime = "insertTime-103148397";
+//     String kind = "kind3292052";
+//     String name = "name3373707";
+//     String operationType = "operationType-1432962286";
+//     Integer progress = 1001078227;
+//     ProjectRegionName region = ProjectRegionName.of("[PROJECT]", "[REGION]");
+//     String selfLink = "selfLink-1691268851";
+//     String startTime = "startTime-1573145462";
+//     String status = "status-892481550";
+//     String statusMessage = "statusMessage-239442758";
+//     String targetId = "targetId-815576439";
+//     String targetLink = "targetLink-2084812312";
+//     String user = "user3599307";
+//     ProjectZoneName zone = ProjectZoneName.of("[PROJECT]", "[ZONE]");
+//     Operation expectedResponse =
+//         Operation.newBuilder()
+//             .setClientOperationId(clientOperationId)
+//             .setCreationTimestamp(creationTimestamp)
+//             .setDescription(description)
+//             .setEndTime(endTime)
+//             .setHttpErrorMessage(httpErrorMessage)
+//             .setHttpErrorStatusCode(httpErrorStatusCode)
+//             .setId(id)
+//             .setInsertTime(insertTime)
+//             .setKind(kind)
+//             .setName(name)
+//             .setOperationType(operationType)
+//             .setProgress(progress)
+//             .setRegion(region.toString())
+//             .setSelfLink(selfLink)
+//             .setStartTime(startTime)
+//             .setStatus(status)
+//             .setStatusMessage(statusMessage)
+//             .setTargetId(targetId)
+//             .setTargetLink(targetLink)
+//             .setUser(user)
+//             .setZone(zone.toString())
+//             .build();
+//     mockService.addResponse(expectedResponse);
+//
+//     ProjectGlobalOperationName operation =
+//         ProjectGlobalOperationName.of("[PROJECT]", "[OPERATION]");
+//
+//     ApiFuture emptyMessage = client.getGetOperationCallable().futureCall(operation);
+//     emptyMessage.
+//     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
+//   @SuppressWarnings("all")
+//   public void getGlobalOperationExceptionTest() throws Exception {
+//     ApiException exception =
+//         ApiExceptionFactory.createException(
+//             new Exception(), FakeStatusCode.of(Code.INVALID_ARGUMENT), false);
+//     mockService.addException(exception);
+//
+//     try {
+//       ProjectGlobalOperationName operation =
+//           ProjectGlobalOperationName.of("[PROJECT]", "[OPERATION]");
+//
+//       client.getGlobalOperation(operation);
+//       Assert.fail("No exception raised");
+//     } catch (InvalidArgumentException e) {
+//       // Expected exception
+//     }
+//   }
+//
+//   @Test
+//   @SuppressWarnings("all")
+//   public void listGlobalOperationsTest() {
+//     String id = "id3355";
+//     String kind = "kind3292052";
+//     String nextPageToken = "";
+//     String selfLink = "selfLink-1691268851";
+//     Operation itemsElement = Operation.newBuilder().build();
+//     List items = Arrays.asList(itemsElement);
+//     OperationList expectedResponse =
+//         OperationList.newBuilder()
+//             .setId(id)
+//             .setKind(kind)
+//             .setNextPageToken(nextPageToken)
+//             .setSelfLink(selfLink)
+//             .addAllItems(items)
+//             .build();
+//     mockService.addResponse(expectedResponse);
+//
+//     ProjectName project = ProjectName.of("[PROJECT]");
+//
+//     ListGlobalOperationsPagedResponse pagedListResponse = client.listGlobalOperations(project);
+//
+//     List resources = Lists.newArrayList(pagedListResponse.iterateAll());
+//     Assert.assertEquals(1, resources.size());
+//     Assert.assertEquals(expectedResponse.getItemsList().get(0), resources.get(0));
+//
+//     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
+//   @SuppressWarnings("all")
+//   public void listGlobalOperationsExceptionTest() throws Exception {
+//     ApiException exception =
+//         ApiExceptionFactory.createException(
+//             new Exception(), FakeStatusCode.of(Code.INVALID_ARGUMENT), false);
+//     mockService.addException(exception);
+//
+//     try {
+//       ProjectName project = ProjectName.of("[PROJECT]");
+//
+//       client.listGlobalOperations(project);
+//       Assert.fail("No exception raised");
+//     } catch (InvalidArgumentException e) {
+//       // Expected exception
+//     }
+//   }
+// }
diff --git a/google-cloud-clients/google-cloud-compute/synth.py b/google-cloud-clients/google-cloud-compute/synth.py
index a8c0faaaf767..b446fee176b3 100644
--- a/google-cloud-clients/google-cloud-compute/synth.py
+++ b/google-cloud-clients/google-cloud-compute/synth.py
@@ -25,12 +25,12 @@
 config_pattern = '/gapic/google/compute/artman_compute.yaml'
 
 for version in versions:
-  library = gapic.java_library(
-      service=service,
-      version=version,
-      config_path=config_pattern.format(version=version),
-      artman_output_name='')
-
-  s.copy(library / f'gapic-google-cloud-{service}-{version}/src', 'src')
+  # library = gapic.java_library(
+  #     service=service,
+  #     version=version,
+  #     config_path=config_pattern.format(version=version),
+  #     artman_output_name='')
+  #
+  # s.copy(library / f'gapic-google-cloud-{service}-{version}/src', 'src')
 
   java.format_code('./src')
diff --git a/google-cloud-clients/pom.xml b/google-cloud-clients/pom.xml
index d4add2216d34..679250436c9e 100644
--- a/google-cloud-clients/pom.xml
+++ b/google-cloud-clients/pom.xml
@@ -155,7 +155,7 @@
     0.80.1-alpha-SNAPSHOT
     1.27.0
     
-    1.39.0
+    1.40.1-SNAPSHOT
     1.7.0
     0.12.0
     1.18.0