• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2022 Google LLC
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      https://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.google.cloud.compute.v1;
18 
19 import com.google.api.core.ApiFuture;
20 import com.google.api.core.ApiFutures;
21 import com.google.api.core.BetaApi;
22 import com.google.api.gax.core.BackgroundResource;
23 import com.google.api.gax.longrunning.OperationFuture;
24 import com.google.api.gax.paging.AbstractFixedSizeCollection;
25 import com.google.api.gax.paging.AbstractPage;
26 import com.google.api.gax.paging.AbstractPagedListResponse;
27 import com.google.api.gax.rpc.OperationCallable;
28 import com.google.api.gax.rpc.PageContext;
29 import com.google.api.gax.rpc.UnaryCallable;
30 import com.google.cloud.compute.v1.stub.RegionInstanceGroupsStub;
31 import com.google.cloud.compute.v1.stub.RegionInstanceGroupsStubSettings;
32 import com.google.common.util.concurrent.MoreExecutors;
33 import java.io.IOException;
34 import java.util.List;
35 import java.util.concurrent.TimeUnit;
36 import javax.annotation.Generated;
37 
38 // AUTO-GENERATED DOCUMENTATION AND CLASS.
39 /**
40  * Service Description: The RegionInstanceGroups API.
41  *
42  * <p>This class provides the ability to make remote calls to the backing service through method
43  * calls that map to API methods. Sample code to get started:
44  *
45  * <pre>{@code
46  * // This snippet has been automatically generated and should be regarded as a code template only.
47  * // It will require modifications to work:
48  * // - It may require correct/in-range values for request initialization.
49  * // - It may require specifying regional endpoints when creating the service client as shown in
50  * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
51  * try (RegionInstanceGroupsClient regionInstanceGroupsClient =
52  *     RegionInstanceGroupsClient.create()) {
53  *   String project = "project-309310695";
54  *   String region = "region-934795532";
55  *   String instanceGroup = "instanceGroup-1404696854";
56  *   InstanceGroup response = regionInstanceGroupsClient.get(project, region, instanceGroup);
57  * }
58  * }</pre>
59  *
60  * <p>Note: close() needs to be called on the RegionInstanceGroupsClient object to clean up
61  * resources such as threads. In the example above, try-with-resources is used, which automatically
62  * calls close().
63  *
64  * <p>The surface of this class includes several types of Java methods for each of the API's
65  * methods:
66  *
67  * <ol>
68  *   <li>A "flattened" method. With this type of method, the fields of the request type have been
69  *       converted into function parameters. It may be the case that not all fields are available as
70  *       parameters, and not every API method will have a flattened method entry point.
71  *   <li>A "request object" method. This type of method only takes one parameter, a request object,
72  *       which must be constructed before the call. Not every API method will have a request object
73  *       method.
74  *   <li>A "callable" method. This type of method takes no parameters and returns an immutable API
75  *       callable object, which can be used to initiate calls to the service.
76  * </ol>
77  *
78  * <p>See the individual methods for example code.
79  *
80  * <p>Many parameters require resource names to be formatted in a particular way. To assist with
81  * these names, this class includes a format method for each type of name, and additionally a parse
82  * method to extract the individual identifiers contained within names that are returned.
83  *
84  * <p>This class can be customized by passing in a custom instance of RegionInstanceGroupsSettings
85  * to create(). For example:
86  *
87  * <p>To customize credentials:
88  *
89  * <pre>{@code
90  * // This snippet has been automatically generated and should be regarded as a code template only.
91  * // It will require modifications to work:
92  * // - It may require correct/in-range values for request initialization.
93  * // - It may require specifying regional endpoints when creating the service client as shown in
94  * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
95  * RegionInstanceGroupsSettings regionInstanceGroupsSettings =
96  *     RegionInstanceGroupsSettings.newBuilder()
97  *         .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
98  *         .build();
99  * RegionInstanceGroupsClient regionInstanceGroupsClient =
100  *     RegionInstanceGroupsClient.create(regionInstanceGroupsSettings);
101  * }</pre>
102  *
103  * <p>To customize the endpoint:
104  *
105  * <pre>{@code
106  * // This snippet has been automatically generated and should be regarded as a code template only.
107  * // It will require modifications to work:
108  * // - It may require correct/in-range values for request initialization.
109  * // - It may require specifying regional endpoints when creating the service client as shown in
110  * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
111  * RegionInstanceGroupsSettings regionInstanceGroupsSettings =
112  *     RegionInstanceGroupsSettings.newBuilder().setEndpoint(myEndpoint).build();
113  * RegionInstanceGroupsClient regionInstanceGroupsClient =
114  *     RegionInstanceGroupsClient.create(regionInstanceGroupsSettings);
115  * }</pre>
116  *
117  * <p>Please refer to the GitHub repository's samples for more quickstart code snippets.
118  */
119 @Generated("by gapic-generator-java")
120 public class RegionInstanceGroupsClient implements BackgroundResource {
121   private final RegionInstanceGroupsSettings settings;
122   private final RegionInstanceGroupsStub stub;
123 
124   /** Constructs an instance of RegionInstanceGroupsClient with default settings. */
create()125   public static final RegionInstanceGroupsClient create() throws IOException {
126     return create(RegionInstanceGroupsSettings.newBuilder().build());
127   }
128 
129   /**
130    * Constructs an instance of RegionInstanceGroupsClient, using the given settings. The channels
131    * are created based on the settings passed in, or defaults for any settings that are not set.
132    */
create(RegionInstanceGroupsSettings settings)133   public static final RegionInstanceGroupsClient create(RegionInstanceGroupsSettings settings)
134       throws IOException {
135     return new RegionInstanceGroupsClient(settings);
136   }
137 
138   /**
139    * Constructs an instance of RegionInstanceGroupsClient, using the given stub for making calls.
140    * This is for advanced usage - prefer using create(RegionInstanceGroupsSettings).
141    */
create(RegionInstanceGroupsStub stub)142   public static final RegionInstanceGroupsClient create(RegionInstanceGroupsStub stub) {
143     return new RegionInstanceGroupsClient(stub);
144   }
145 
146   /**
147    * Constructs an instance of RegionInstanceGroupsClient, using the given settings. This is
148    * protected so that it is easy to make a subclass, but otherwise, the static factory methods
149    * should be preferred.
150    */
RegionInstanceGroupsClient(RegionInstanceGroupsSettings settings)151   protected RegionInstanceGroupsClient(RegionInstanceGroupsSettings settings) throws IOException {
152     this.settings = settings;
153     this.stub = ((RegionInstanceGroupsStubSettings) settings.getStubSettings()).createStub();
154   }
155 
RegionInstanceGroupsClient(RegionInstanceGroupsStub stub)156   protected RegionInstanceGroupsClient(RegionInstanceGroupsStub stub) {
157     this.settings = null;
158     this.stub = stub;
159   }
160 
getSettings()161   public final RegionInstanceGroupsSettings getSettings() {
162     return settings;
163   }
164 
getStub()165   public RegionInstanceGroupsStub getStub() {
166     return stub;
167   }
168 
169   // AUTO-GENERATED DOCUMENTATION AND METHOD.
170   /**
171    * Returns the specified instance group resource.
172    *
173    * <p>Sample code:
174    *
175    * <pre>{@code
176    * // This snippet has been automatically generated and should be regarded as a code template only.
177    * // It will require modifications to work:
178    * // - It may require correct/in-range values for request initialization.
179    * // - It may require specifying regional endpoints when creating the service client as shown in
180    * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
181    * try (RegionInstanceGroupsClient regionInstanceGroupsClient =
182    *     RegionInstanceGroupsClient.create()) {
183    *   String project = "project-309310695";
184    *   String region = "region-934795532";
185    *   String instanceGroup = "instanceGroup-1404696854";
186    *   InstanceGroup response = regionInstanceGroupsClient.get(project, region, instanceGroup);
187    * }
188    * }</pre>
189    *
190    * @param project Project ID for this request.
191    * @param region Name of the region scoping this request.
192    * @param instanceGroup Name of the instance group resource to return.
193    * @throws com.google.api.gax.rpc.ApiException if the remote call fails
194    */
get(String project, String region, String instanceGroup)195   public final InstanceGroup get(String project, String region, String instanceGroup) {
196     GetRegionInstanceGroupRequest request =
197         GetRegionInstanceGroupRequest.newBuilder()
198             .setProject(project)
199             .setRegion(region)
200             .setInstanceGroup(instanceGroup)
201             .build();
202     return get(request);
203   }
204 
205   // AUTO-GENERATED DOCUMENTATION AND METHOD.
206   /**
207    * Returns the specified instance group resource.
208    *
209    * <p>Sample code:
210    *
211    * <pre>{@code
212    * // This snippet has been automatically generated and should be regarded as a code template only.
213    * // It will require modifications to work:
214    * // - It may require correct/in-range values for request initialization.
215    * // - It may require specifying regional endpoints when creating the service client as shown in
216    * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
217    * try (RegionInstanceGroupsClient regionInstanceGroupsClient =
218    *     RegionInstanceGroupsClient.create()) {
219    *   GetRegionInstanceGroupRequest request =
220    *       GetRegionInstanceGroupRequest.newBuilder()
221    *           .setInstanceGroup("instanceGroup-1404696854")
222    *           .setProject("project-309310695")
223    *           .setRegion("region-934795532")
224    *           .build();
225    *   InstanceGroup response = regionInstanceGroupsClient.get(request);
226    * }
227    * }</pre>
228    *
229    * @param request The request object containing all of the parameters for the API call.
230    * @throws com.google.api.gax.rpc.ApiException if the remote call fails
231    */
get(GetRegionInstanceGroupRequest request)232   public final InstanceGroup get(GetRegionInstanceGroupRequest request) {
233     return getCallable().call(request);
234   }
235 
236   // AUTO-GENERATED DOCUMENTATION AND METHOD.
237   /**
238    * Returns the specified instance group resource.
239    *
240    * <p>Sample code:
241    *
242    * <pre>{@code
243    * // This snippet has been automatically generated and should be regarded as a code template only.
244    * // It will require modifications to work:
245    * // - It may require correct/in-range values for request initialization.
246    * // - It may require specifying regional endpoints when creating the service client as shown in
247    * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
248    * try (RegionInstanceGroupsClient regionInstanceGroupsClient =
249    *     RegionInstanceGroupsClient.create()) {
250    *   GetRegionInstanceGroupRequest request =
251    *       GetRegionInstanceGroupRequest.newBuilder()
252    *           .setInstanceGroup("instanceGroup-1404696854")
253    *           .setProject("project-309310695")
254    *           .setRegion("region-934795532")
255    *           .build();
256    *   ApiFuture<InstanceGroup> future =
257    *       regionInstanceGroupsClient.getCallable().futureCall(request);
258    *   // Do something.
259    *   InstanceGroup response = future.get();
260    * }
261    * }</pre>
262    */
getCallable()263   public final UnaryCallable<GetRegionInstanceGroupRequest, InstanceGroup> getCallable() {
264     return stub.getCallable();
265   }
266 
267   // AUTO-GENERATED DOCUMENTATION AND METHOD.
268   /**
269    * Retrieves the list of instance group resources contained within the specified region.
270    *
271    * <p>Sample code:
272    *
273    * <pre>{@code
274    * // This snippet has been automatically generated and should be regarded as a code template only.
275    * // It will require modifications to work:
276    * // - It may require correct/in-range values for request initialization.
277    * // - It may require specifying regional endpoints when creating the service client as shown in
278    * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
279    * try (RegionInstanceGroupsClient regionInstanceGroupsClient =
280    *     RegionInstanceGroupsClient.create()) {
281    *   String project = "project-309310695";
282    *   String region = "region-934795532";
283    *   for (InstanceGroup element : regionInstanceGroupsClient.list(project, region).iterateAll()) {
284    *     // doThingsWith(element);
285    *   }
286    * }
287    * }</pre>
288    *
289    * @param project Project ID for this request.
290    * @param region Name of the region scoping this request.
291    * @throws com.google.api.gax.rpc.ApiException if the remote call fails
292    */
list(String project, String region)293   public final ListPagedResponse list(String project, String region) {
294     ListRegionInstanceGroupsRequest request =
295         ListRegionInstanceGroupsRequest.newBuilder().setProject(project).setRegion(region).build();
296     return list(request);
297   }
298 
299   // AUTO-GENERATED DOCUMENTATION AND METHOD.
300   /**
301    * Retrieves the list of instance group resources contained within the specified region.
302    *
303    * <p>Sample code:
304    *
305    * <pre>{@code
306    * // This snippet has been automatically generated and should be regarded as a code template only.
307    * // It will require modifications to work:
308    * // - It may require correct/in-range values for request initialization.
309    * // - It may require specifying regional endpoints when creating the service client as shown in
310    * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
311    * try (RegionInstanceGroupsClient regionInstanceGroupsClient =
312    *     RegionInstanceGroupsClient.create()) {
313    *   ListRegionInstanceGroupsRequest request =
314    *       ListRegionInstanceGroupsRequest.newBuilder()
315    *           .setFilter("filter-1274492040")
316    *           .setMaxResults(1128457243)
317    *           .setOrderBy("orderBy-1207110587")
318    *           .setPageToken("pageToken873572522")
319    *           .setProject("project-309310695")
320    *           .setRegion("region-934795532")
321    *           .setReturnPartialSuccess(true)
322    *           .build();
323    *   for (InstanceGroup element : regionInstanceGroupsClient.list(request).iterateAll()) {
324    *     // doThingsWith(element);
325    *   }
326    * }
327    * }</pre>
328    *
329    * @param request The request object containing all of the parameters for the API call.
330    * @throws com.google.api.gax.rpc.ApiException if the remote call fails
331    */
list(ListRegionInstanceGroupsRequest request)332   public final ListPagedResponse list(ListRegionInstanceGroupsRequest request) {
333     return listPagedCallable().call(request);
334   }
335 
336   // AUTO-GENERATED DOCUMENTATION AND METHOD.
337   /**
338    * Retrieves the list of instance group resources contained within the specified region.
339    *
340    * <p>Sample code:
341    *
342    * <pre>{@code
343    * // This snippet has been automatically generated and should be regarded as a code template only.
344    * // It will require modifications to work:
345    * // - It may require correct/in-range values for request initialization.
346    * // - It may require specifying regional endpoints when creating the service client as shown in
347    * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
348    * try (RegionInstanceGroupsClient regionInstanceGroupsClient =
349    *     RegionInstanceGroupsClient.create()) {
350    *   ListRegionInstanceGroupsRequest request =
351    *       ListRegionInstanceGroupsRequest.newBuilder()
352    *           .setFilter("filter-1274492040")
353    *           .setMaxResults(1128457243)
354    *           .setOrderBy("orderBy-1207110587")
355    *           .setPageToken("pageToken873572522")
356    *           .setProject("project-309310695")
357    *           .setRegion("region-934795532")
358    *           .setReturnPartialSuccess(true)
359    *           .build();
360    *   ApiFuture<InstanceGroup> future =
361    *       regionInstanceGroupsClient.listPagedCallable().futureCall(request);
362    *   // Do something.
363    *   for (InstanceGroup element : future.get().iterateAll()) {
364    *     // doThingsWith(element);
365    *   }
366    * }
367    * }</pre>
368    */
369   public final UnaryCallable<ListRegionInstanceGroupsRequest, ListPagedResponse>
listPagedCallable()370       listPagedCallable() {
371     return stub.listPagedCallable();
372   }
373 
374   // AUTO-GENERATED DOCUMENTATION AND METHOD.
375   /**
376    * Retrieves the list of instance group resources contained within the specified region.
377    *
378    * <p>Sample code:
379    *
380    * <pre>{@code
381    * // This snippet has been automatically generated and should be regarded as a code template only.
382    * // It will require modifications to work:
383    * // - It may require correct/in-range values for request initialization.
384    * // - It may require specifying regional endpoints when creating the service client as shown in
385    * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
386    * try (RegionInstanceGroupsClient regionInstanceGroupsClient =
387    *     RegionInstanceGroupsClient.create()) {
388    *   ListRegionInstanceGroupsRequest request =
389    *       ListRegionInstanceGroupsRequest.newBuilder()
390    *           .setFilter("filter-1274492040")
391    *           .setMaxResults(1128457243)
392    *           .setOrderBy("orderBy-1207110587")
393    *           .setPageToken("pageToken873572522")
394    *           .setProject("project-309310695")
395    *           .setRegion("region-934795532")
396    *           .setReturnPartialSuccess(true)
397    *           .build();
398    *   while (true) {
399    *     RegionInstanceGroupList response = regionInstanceGroupsClient.listCallable().call(request);
400    *     for (InstanceGroup element : response.getItemsList()) {
401    *       // doThingsWith(element);
402    *     }
403    *     String nextPageToken = response.getNextPageToken();
404    *     if (!Strings.isNullOrEmpty(nextPageToken)) {
405    *       request = request.toBuilder().setPageToken(nextPageToken).build();
406    *     } else {
407    *       break;
408    *     }
409    *   }
410    * }
411    * }</pre>
412    */
413   public final UnaryCallable<ListRegionInstanceGroupsRequest, RegionInstanceGroupList>
listCallable()414       listCallable() {
415     return stub.listCallable();
416   }
417 
418   // AUTO-GENERATED DOCUMENTATION AND METHOD.
419   /**
420    * Lists the instances in the specified instance group and displays information about the named
421    * ports. Depending on the specified options, this method can list all instances or only the
422    * instances that are running. The orderBy query parameter is not supported.
423    *
424    * <p>Sample code:
425    *
426    * <pre>{@code
427    * // This snippet has been automatically generated and should be regarded as a code template only.
428    * // It will require modifications to work:
429    * // - It may require correct/in-range values for request initialization.
430    * // - It may require specifying regional endpoints when creating the service client as shown in
431    * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
432    * try (RegionInstanceGroupsClient regionInstanceGroupsClient =
433    *     RegionInstanceGroupsClient.create()) {
434    *   String project = "project-309310695";
435    *   String region = "region-934795532";
436    *   String instanceGroup = "instanceGroup-1404696854";
437    *   RegionInstanceGroupsListInstancesRequest regionInstanceGroupsListInstancesRequestResource =
438    *       RegionInstanceGroupsListInstancesRequest.newBuilder().build();
439    *   for (InstanceWithNamedPorts element :
440    *       regionInstanceGroupsClient
441    *           .listInstances(
442    *               project, region, instanceGroup, regionInstanceGroupsListInstancesRequestResource)
443    *           .iterateAll()) {
444    *     // doThingsWith(element);
445    *   }
446    * }
447    * }</pre>
448    *
449    * @param project Project ID for this request.
450    * @param region Name of the region scoping this request.
451    * @param instanceGroup Name of the regional instance group for which we want to list the
452    *     instances.
453    * @param regionInstanceGroupsListInstancesRequestResource The body resource for this request
454    * @throws com.google.api.gax.rpc.ApiException if the remote call fails
455    */
listInstances( String project, String region, String instanceGroup, RegionInstanceGroupsListInstancesRequest regionInstanceGroupsListInstancesRequestResource)456   public final ListInstancesPagedResponse listInstances(
457       String project,
458       String region,
459       String instanceGroup,
460       RegionInstanceGroupsListInstancesRequest regionInstanceGroupsListInstancesRequestResource) {
461     ListInstancesRegionInstanceGroupsRequest request =
462         ListInstancesRegionInstanceGroupsRequest.newBuilder()
463             .setProject(project)
464             .setRegion(region)
465             .setInstanceGroup(instanceGroup)
466             .setRegionInstanceGroupsListInstancesRequestResource(
467                 regionInstanceGroupsListInstancesRequestResource)
468             .build();
469     return listInstances(request);
470   }
471 
472   // AUTO-GENERATED DOCUMENTATION AND METHOD.
473   /**
474    * Lists the instances in the specified instance group and displays information about the named
475    * ports. Depending on the specified options, this method can list all instances or only the
476    * instances that are running. The orderBy query parameter is not supported.
477    *
478    * <p>Sample code:
479    *
480    * <pre>{@code
481    * // This snippet has been automatically generated and should be regarded as a code template only.
482    * // It will require modifications to work:
483    * // - It may require correct/in-range values for request initialization.
484    * // - It may require specifying regional endpoints when creating the service client as shown in
485    * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
486    * try (RegionInstanceGroupsClient regionInstanceGroupsClient =
487    *     RegionInstanceGroupsClient.create()) {
488    *   ListInstancesRegionInstanceGroupsRequest request =
489    *       ListInstancesRegionInstanceGroupsRequest.newBuilder()
490    *           .setFilter("filter-1274492040")
491    *           .setInstanceGroup("instanceGroup-1404696854")
492    *           .setMaxResults(1128457243)
493    *           .setOrderBy("orderBy-1207110587")
494    *           .setPageToken("pageToken873572522")
495    *           .setProject("project-309310695")
496    *           .setRegion("region-934795532")
497    *           .setRegionInstanceGroupsListInstancesRequestResource(
498    *               RegionInstanceGroupsListInstancesRequest.newBuilder().build())
499    *           .setReturnPartialSuccess(true)
500    *           .build();
501    *   for (InstanceWithNamedPorts element :
502    *       regionInstanceGroupsClient.listInstances(request).iterateAll()) {
503    *     // doThingsWith(element);
504    *   }
505    * }
506    * }</pre>
507    *
508    * @param request The request object containing all of the parameters for the API call.
509    * @throws com.google.api.gax.rpc.ApiException if the remote call fails
510    */
listInstances( ListInstancesRegionInstanceGroupsRequest request)511   public final ListInstancesPagedResponse listInstances(
512       ListInstancesRegionInstanceGroupsRequest request) {
513     return listInstancesPagedCallable().call(request);
514   }
515 
516   // AUTO-GENERATED DOCUMENTATION AND METHOD.
517   /**
518    * Lists the instances in the specified instance group and displays information about the named
519    * ports. Depending on the specified options, this method can list all instances or only the
520    * instances that are running. The orderBy query parameter is not supported.
521    *
522    * <p>Sample code:
523    *
524    * <pre>{@code
525    * // This snippet has been automatically generated and should be regarded as a code template only.
526    * // It will require modifications to work:
527    * // - It may require correct/in-range values for request initialization.
528    * // - It may require specifying regional endpoints when creating the service client as shown in
529    * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
530    * try (RegionInstanceGroupsClient regionInstanceGroupsClient =
531    *     RegionInstanceGroupsClient.create()) {
532    *   ListInstancesRegionInstanceGroupsRequest request =
533    *       ListInstancesRegionInstanceGroupsRequest.newBuilder()
534    *           .setFilter("filter-1274492040")
535    *           .setInstanceGroup("instanceGroup-1404696854")
536    *           .setMaxResults(1128457243)
537    *           .setOrderBy("orderBy-1207110587")
538    *           .setPageToken("pageToken873572522")
539    *           .setProject("project-309310695")
540    *           .setRegion("region-934795532")
541    *           .setRegionInstanceGroupsListInstancesRequestResource(
542    *               RegionInstanceGroupsListInstancesRequest.newBuilder().build())
543    *           .setReturnPartialSuccess(true)
544    *           .build();
545    *   ApiFuture<InstanceWithNamedPorts> future =
546    *       regionInstanceGroupsClient.listInstancesPagedCallable().futureCall(request);
547    *   // Do something.
548    *   for (InstanceWithNamedPorts element : future.get().iterateAll()) {
549    *     // doThingsWith(element);
550    *   }
551    * }
552    * }</pre>
553    */
554   public final UnaryCallable<ListInstancesRegionInstanceGroupsRequest, ListInstancesPagedResponse>
listInstancesPagedCallable()555       listInstancesPagedCallable() {
556     return stub.listInstancesPagedCallable();
557   }
558 
559   // AUTO-GENERATED DOCUMENTATION AND METHOD.
560   /**
561    * Lists the instances in the specified instance group and displays information about the named
562    * ports. Depending on the specified options, this method can list all instances or only the
563    * instances that are running. The orderBy query parameter is not supported.
564    *
565    * <p>Sample code:
566    *
567    * <pre>{@code
568    * // This snippet has been automatically generated and should be regarded as a code template only.
569    * // It will require modifications to work:
570    * // - It may require correct/in-range values for request initialization.
571    * // - It may require specifying regional endpoints when creating the service client as shown in
572    * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
573    * try (RegionInstanceGroupsClient regionInstanceGroupsClient =
574    *     RegionInstanceGroupsClient.create()) {
575    *   ListInstancesRegionInstanceGroupsRequest request =
576    *       ListInstancesRegionInstanceGroupsRequest.newBuilder()
577    *           .setFilter("filter-1274492040")
578    *           .setInstanceGroup("instanceGroup-1404696854")
579    *           .setMaxResults(1128457243)
580    *           .setOrderBy("orderBy-1207110587")
581    *           .setPageToken("pageToken873572522")
582    *           .setProject("project-309310695")
583    *           .setRegion("region-934795532")
584    *           .setRegionInstanceGroupsListInstancesRequestResource(
585    *               RegionInstanceGroupsListInstancesRequest.newBuilder().build())
586    *           .setReturnPartialSuccess(true)
587    *           .build();
588    *   while (true) {
589    *     RegionInstanceGroupsListInstances response =
590    *         regionInstanceGroupsClient.listInstancesCallable().call(request);
591    *     for (InstanceWithNamedPorts element : response.getItemsList()) {
592    *       // doThingsWith(element);
593    *     }
594    *     String nextPageToken = response.getNextPageToken();
595    *     if (!Strings.isNullOrEmpty(nextPageToken)) {
596    *       request = request.toBuilder().setPageToken(nextPageToken).build();
597    *     } else {
598    *       break;
599    *     }
600    *   }
601    * }
602    * }</pre>
603    */
604   public final UnaryCallable<
605           ListInstancesRegionInstanceGroupsRequest, RegionInstanceGroupsListInstances>
listInstancesCallable()606       listInstancesCallable() {
607     return stub.listInstancesCallable();
608   }
609 
610   // AUTO-GENERATED DOCUMENTATION AND METHOD.
611   /**
612    * Sets the named ports for the specified regional instance group.
613    *
614    * <p>Sample code:
615    *
616    * <pre>{@code
617    * // This snippet has been automatically generated and should be regarded as a code template only.
618    * // It will require modifications to work:
619    * // - It may require correct/in-range values for request initialization.
620    * // - It may require specifying regional endpoints when creating the service client as shown in
621    * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
622    * try (RegionInstanceGroupsClient regionInstanceGroupsClient =
623    *     RegionInstanceGroupsClient.create()) {
624    *   String project = "project-309310695";
625    *   String region = "region-934795532";
626    *   String instanceGroup = "instanceGroup-1404696854";
627    *   RegionInstanceGroupsSetNamedPortsRequest regionInstanceGroupsSetNamedPortsRequestResource =
628    *       RegionInstanceGroupsSetNamedPortsRequest.newBuilder().build();
629    *   Operation response =
630    *       regionInstanceGroupsClient
631    *           .setNamedPortsAsync(
632    *               project, region, instanceGroup, regionInstanceGroupsSetNamedPortsRequestResource)
633    *           .get();
634    * }
635    * }</pre>
636    *
637    * @param project Project ID for this request.
638    * @param region Name of the region scoping this request.
639    * @param instanceGroup The name of the regional instance group where the named ports are updated.
640    * @param regionInstanceGroupsSetNamedPortsRequestResource The body resource for this request
641    * @throws com.google.api.gax.rpc.ApiException if the remote call fails
642    */
setNamedPortsAsync( String project, String region, String instanceGroup, RegionInstanceGroupsSetNamedPortsRequest regionInstanceGroupsSetNamedPortsRequestResource)643   public final OperationFuture<Operation, Operation> setNamedPortsAsync(
644       String project,
645       String region,
646       String instanceGroup,
647       RegionInstanceGroupsSetNamedPortsRequest regionInstanceGroupsSetNamedPortsRequestResource) {
648     SetNamedPortsRegionInstanceGroupRequest request =
649         SetNamedPortsRegionInstanceGroupRequest.newBuilder()
650             .setProject(project)
651             .setRegion(region)
652             .setInstanceGroup(instanceGroup)
653             .setRegionInstanceGroupsSetNamedPortsRequestResource(
654                 regionInstanceGroupsSetNamedPortsRequestResource)
655             .build();
656     return setNamedPortsAsync(request);
657   }
658 
659   // AUTO-GENERATED DOCUMENTATION AND METHOD.
660   /**
661    * Sets the named ports for the specified regional instance group.
662    *
663    * <p>Sample code:
664    *
665    * <pre>{@code
666    * // This snippet has been automatically generated and should be regarded as a code template only.
667    * // It will require modifications to work:
668    * // - It may require correct/in-range values for request initialization.
669    * // - It may require specifying regional endpoints when creating the service client as shown in
670    * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
671    * try (RegionInstanceGroupsClient regionInstanceGroupsClient =
672    *     RegionInstanceGroupsClient.create()) {
673    *   SetNamedPortsRegionInstanceGroupRequest request =
674    *       SetNamedPortsRegionInstanceGroupRequest.newBuilder()
675    *           .setInstanceGroup("instanceGroup-1404696854")
676    *           .setProject("project-309310695")
677    *           .setRegion("region-934795532")
678    *           .setRegionInstanceGroupsSetNamedPortsRequestResource(
679    *               RegionInstanceGroupsSetNamedPortsRequest.newBuilder().build())
680    *           .setRequestId("requestId693933066")
681    *           .build();
682    *   Operation response = regionInstanceGroupsClient.setNamedPortsAsync(request).get();
683    * }
684    * }</pre>
685    *
686    * @param request The request object containing all of the parameters for the API call.
687    * @throws com.google.api.gax.rpc.ApiException if the remote call fails
688    */
689   @BetaApi(
690       "The surface for long-running operations is not stable yet and may change in the future.")
setNamedPortsAsync( SetNamedPortsRegionInstanceGroupRequest request)691   public final OperationFuture<Operation, Operation> setNamedPortsAsync(
692       SetNamedPortsRegionInstanceGroupRequest request) {
693     return setNamedPortsOperationCallable().futureCall(request);
694   }
695 
696   // AUTO-GENERATED DOCUMENTATION AND METHOD.
697   /**
698    * Sets the named ports for the specified regional instance group.
699    *
700    * <p>Sample code:
701    *
702    * <pre>{@code
703    * // This snippet has been automatically generated and should be regarded as a code template only.
704    * // It will require modifications to work:
705    * // - It may require correct/in-range values for request initialization.
706    * // - It may require specifying regional endpoints when creating the service client as shown in
707    * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
708    * try (RegionInstanceGroupsClient regionInstanceGroupsClient =
709    *     RegionInstanceGroupsClient.create()) {
710    *   SetNamedPortsRegionInstanceGroupRequest request =
711    *       SetNamedPortsRegionInstanceGroupRequest.newBuilder()
712    *           .setInstanceGroup("instanceGroup-1404696854")
713    *           .setProject("project-309310695")
714    *           .setRegion("region-934795532")
715    *           .setRegionInstanceGroupsSetNamedPortsRequestResource(
716    *               RegionInstanceGroupsSetNamedPortsRequest.newBuilder().build())
717    *           .setRequestId("requestId693933066")
718    *           .build();
719    *   OperationFuture<Operation, Operation> future =
720    *       regionInstanceGroupsClient.setNamedPortsOperationCallable().futureCall(request);
721    *   // Do something.
722    *   Operation response = future.get();
723    * }
724    * }</pre>
725    */
726   public final OperationCallable<SetNamedPortsRegionInstanceGroupRequest, Operation, Operation>
setNamedPortsOperationCallable()727       setNamedPortsOperationCallable() {
728     return stub.setNamedPortsOperationCallable();
729   }
730 
731   // AUTO-GENERATED DOCUMENTATION AND METHOD.
732   /**
733    * Sets the named ports for the specified regional instance group.
734    *
735    * <p>Sample code:
736    *
737    * <pre>{@code
738    * // This snippet has been automatically generated and should be regarded as a code template only.
739    * // It will require modifications to work:
740    * // - It may require correct/in-range values for request initialization.
741    * // - It may require specifying regional endpoints when creating the service client as shown in
742    * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
743    * try (RegionInstanceGroupsClient regionInstanceGroupsClient =
744    *     RegionInstanceGroupsClient.create()) {
745    *   SetNamedPortsRegionInstanceGroupRequest request =
746    *       SetNamedPortsRegionInstanceGroupRequest.newBuilder()
747    *           .setInstanceGroup("instanceGroup-1404696854")
748    *           .setProject("project-309310695")
749    *           .setRegion("region-934795532")
750    *           .setRegionInstanceGroupsSetNamedPortsRequestResource(
751    *               RegionInstanceGroupsSetNamedPortsRequest.newBuilder().build())
752    *           .setRequestId("requestId693933066")
753    *           .build();
754    *   ApiFuture<Operation> future =
755    *       regionInstanceGroupsClient.setNamedPortsCallable().futureCall(request);
756    *   // Do something.
757    *   Operation response = future.get();
758    * }
759    * }</pre>
760    */
761   public final UnaryCallable<SetNamedPortsRegionInstanceGroupRequest, Operation>
setNamedPortsCallable()762       setNamedPortsCallable() {
763     return stub.setNamedPortsCallable();
764   }
765 
766   @Override
close()767   public final void close() {
768     stub.close();
769   }
770 
771   @Override
shutdown()772   public void shutdown() {
773     stub.shutdown();
774   }
775 
776   @Override
isShutdown()777   public boolean isShutdown() {
778     return stub.isShutdown();
779   }
780 
781   @Override
isTerminated()782   public boolean isTerminated() {
783     return stub.isTerminated();
784   }
785 
786   @Override
shutdownNow()787   public void shutdownNow() {
788     stub.shutdownNow();
789   }
790 
791   @Override
awaitTermination(long duration, TimeUnit unit)792   public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException {
793     return stub.awaitTermination(duration, unit);
794   }
795 
796   public static class ListPagedResponse
797       extends AbstractPagedListResponse<
798           ListRegionInstanceGroupsRequest,
799           RegionInstanceGroupList,
800           InstanceGroup,
801           ListPage,
802           ListFixedSizeCollection> {
803 
createAsync( PageContext<ListRegionInstanceGroupsRequest, RegionInstanceGroupList, InstanceGroup> context, ApiFuture<RegionInstanceGroupList> futureResponse)804     public static ApiFuture<ListPagedResponse> createAsync(
805         PageContext<ListRegionInstanceGroupsRequest, RegionInstanceGroupList, InstanceGroup>
806             context,
807         ApiFuture<RegionInstanceGroupList> futureResponse) {
808       ApiFuture<ListPage> futurePage =
809           ListPage.createEmptyPage().createPageAsync(context, futureResponse);
810       return ApiFutures.transform(
811           futurePage, input -> new ListPagedResponse(input), MoreExecutors.directExecutor());
812     }
813 
ListPagedResponse(ListPage page)814     private ListPagedResponse(ListPage page) {
815       super(page, ListFixedSizeCollection.createEmptyCollection());
816     }
817   }
818 
819   public static class ListPage
820       extends AbstractPage<
821           ListRegionInstanceGroupsRequest, RegionInstanceGroupList, InstanceGroup, ListPage> {
822 
ListPage( PageContext<ListRegionInstanceGroupsRequest, RegionInstanceGroupList, InstanceGroup> context, RegionInstanceGroupList response)823     private ListPage(
824         PageContext<ListRegionInstanceGroupsRequest, RegionInstanceGroupList, InstanceGroup>
825             context,
826         RegionInstanceGroupList response) {
827       super(context, response);
828     }
829 
createEmptyPage()830     private static ListPage createEmptyPage() {
831       return new ListPage(null, null);
832     }
833 
834     @Override
createPage( PageContext<ListRegionInstanceGroupsRequest, RegionInstanceGroupList, InstanceGroup> context, RegionInstanceGroupList response)835     protected ListPage createPage(
836         PageContext<ListRegionInstanceGroupsRequest, RegionInstanceGroupList, InstanceGroup>
837             context,
838         RegionInstanceGroupList response) {
839       return new ListPage(context, response);
840     }
841 
842     @Override
createPageAsync( PageContext<ListRegionInstanceGroupsRequest, RegionInstanceGroupList, InstanceGroup> context, ApiFuture<RegionInstanceGroupList> futureResponse)843     public ApiFuture<ListPage> createPageAsync(
844         PageContext<ListRegionInstanceGroupsRequest, RegionInstanceGroupList, InstanceGroup>
845             context,
846         ApiFuture<RegionInstanceGroupList> futureResponse) {
847       return super.createPageAsync(context, futureResponse);
848     }
849   }
850 
851   public static class ListFixedSizeCollection
852       extends AbstractFixedSizeCollection<
853           ListRegionInstanceGroupsRequest,
854           RegionInstanceGroupList,
855           InstanceGroup,
856           ListPage,
857           ListFixedSizeCollection> {
858 
ListFixedSizeCollection(List<ListPage> pages, int collectionSize)859     private ListFixedSizeCollection(List<ListPage> pages, int collectionSize) {
860       super(pages, collectionSize);
861     }
862 
createEmptyCollection()863     private static ListFixedSizeCollection createEmptyCollection() {
864       return new ListFixedSizeCollection(null, 0);
865     }
866 
867     @Override
createCollection(List<ListPage> pages, int collectionSize)868     protected ListFixedSizeCollection createCollection(List<ListPage> pages, int collectionSize) {
869       return new ListFixedSizeCollection(pages, collectionSize);
870     }
871   }
872 
873   public static class ListInstancesPagedResponse
874       extends AbstractPagedListResponse<
875           ListInstancesRegionInstanceGroupsRequest,
876           RegionInstanceGroupsListInstances,
877           InstanceWithNamedPorts,
878           ListInstancesPage,
879           ListInstancesFixedSizeCollection> {
880 
createAsync( PageContext< ListInstancesRegionInstanceGroupsRequest, RegionInstanceGroupsListInstances, InstanceWithNamedPorts> context, ApiFuture<RegionInstanceGroupsListInstances> futureResponse)881     public static ApiFuture<ListInstancesPagedResponse> createAsync(
882         PageContext<
883                 ListInstancesRegionInstanceGroupsRequest,
884                 RegionInstanceGroupsListInstances,
885                 InstanceWithNamedPorts>
886             context,
887         ApiFuture<RegionInstanceGroupsListInstances> futureResponse) {
888       ApiFuture<ListInstancesPage> futurePage =
889           ListInstancesPage.createEmptyPage().createPageAsync(context, futureResponse);
890       return ApiFutures.transform(
891           futurePage,
892           input -> new ListInstancesPagedResponse(input),
893           MoreExecutors.directExecutor());
894     }
895 
ListInstancesPagedResponse(ListInstancesPage page)896     private ListInstancesPagedResponse(ListInstancesPage page) {
897       super(page, ListInstancesFixedSizeCollection.createEmptyCollection());
898     }
899   }
900 
901   public static class ListInstancesPage
902       extends AbstractPage<
903           ListInstancesRegionInstanceGroupsRequest,
904           RegionInstanceGroupsListInstances,
905           InstanceWithNamedPorts,
906           ListInstancesPage> {
907 
ListInstancesPage( PageContext< ListInstancesRegionInstanceGroupsRequest, RegionInstanceGroupsListInstances, InstanceWithNamedPorts> context, RegionInstanceGroupsListInstances response)908     private ListInstancesPage(
909         PageContext<
910                 ListInstancesRegionInstanceGroupsRequest,
911                 RegionInstanceGroupsListInstances,
912                 InstanceWithNamedPorts>
913             context,
914         RegionInstanceGroupsListInstances response) {
915       super(context, response);
916     }
917 
createEmptyPage()918     private static ListInstancesPage createEmptyPage() {
919       return new ListInstancesPage(null, null);
920     }
921 
922     @Override
createPage( PageContext< ListInstancesRegionInstanceGroupsRequest, RegionInstanceGroupsListInstances, InstanceWithNamedPorts> context, RegionInstanceGroupsListInstances response)923     protected ListInstancesPage createPage(
924         PageContext<
925                 ListInstancesRegionInstanceGroupsRequest,
926                 RegionInstanceGroupsListInstances,
927                 InstanceWithNamedPorts>
928             context,
929         RegionInstanceGroupsListInstances response) {
930       return new ListInstancesPage(context, response);
931     }
932 
933     @Override
createPageAsync( PageContext< ListInstancesRegionInstanceGroupsRequest, RegionInstanceGroupsListInstances, InstanceWithNamedPorts> context, ApiFuture<RegionInstanceGroupsListInstances> futureResponse)934     public ApiFuture<ListInstancesPage> createPageAsync(
935         PageContext<
936                 ListInstancesRegionInstanceGroupsRequest,
937                 RegionInstanceGroupsListInstances,
938                 InstanceWithNamedPorts>
939             context,
940         ApiFuture<RegionInstanceGroupsListInstances> futureResponse) {
941       return super.createPageAsync(context, futureResponse);
942     }
943   }
944 
945   public static class ListInstancesFixedSizeCollection
946       extends AbstractFixedSizeCollection<
947           ListInstancesRegionInstanceGroupsRequest,
948           RegionInstanceGroupsListInstances,
949           InstanceWithNamedPorts,
950           ListInstancesPage,
951           ListInstancesFixedSizeCollection> {
952 
ListInstancesFixedSizeCollection(List<ListInstancesPage> pages, int collectionSize)953     private ListInstancesFixedSizeCollection(List<ListInstancesPage> pages, int collectionSize) {
954       super(pages, collectionSize);
955     }
956 
createEmptyCollection()957     private static ListInstancesFixedSizeCollection createEmptyCollection() {
958       return new ListInstancesFixedSizeCollection(null, 0);
959     }
960 
961     @Override
createCollection( List<ListInstancesPage> pages, int collectionSize)962     protected ListInstancesFixedSizeCollection createCollection(
963         List<ListInstancesPage> pages, int collectionSize) {
964       return new ListInstancesFixedSizeCollection(pages, collectionSize);
965     }
966   }
967 }
968