• 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.stub;
18 
19 import static com.google.cloud.compute.v1.InstanceGroupsClient.AggregatedListPagedResponse;
20 import static com.google.cloud.compute.v1.InstanceGroupsClient.ListInstancesPagedResponse;
21 import static com.google.cloud.compute.v1.InstanceGroupsClient.ListPagedResponse;
22 
23 import com.google.api.core.ApiFunction;
24 import com.google.api.core.ApiFuture;
25 import com.google.api.core.BetaApi;
26 import com.google.api.gax.core.GaxProperties;
27 import com.google.api.gax.core.GoogleCredentialsProvider;
28 import com.google.api.gax.core.InstantiatingExecutorProvider;
29 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
30 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
31 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
32 import com.google.api.gax.httpjson.ProtoOperationTransformers;
33 import com.google.api.gax.longrunning.OperationSnapshot;
34 import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
35 import com.google.api.gax.retrying.RetrySettings;
36 import com.google.api.gax.rpc.ApiCallContext;
37 import com.google.api.gax.rpc.ApiClientHeaderProvider;
38 import com.google.api.gax.rpc.ClientContext;
39 import com.google.api.gax.rpc.OperationCallSettings;
40 import com.google.api.gax.rpc.PageContext;
41 import com.google.api.gax.rpc.PagedCallSettings;
42 import com.google.api.gax.rpc.PagedListDescriptor;
43 import com.google.api.gax.rpc.PagedListResponseFactory;
44 import com.google.api.gax.rpc.StatusCode;
45 import com.google.api.gax.rpc.StubSettings;
46 import com.google.api.gax.rpc.TransportChannelProvider;
47 import com.google.api.gax.rpc.UnaryCallSettings;
48 import com.google.api.gax.rpc.UnaryCallable;
49 import com.google.cloud.compute.v1.AddInstancesInstanceGroupRequest;
50 import com.google.cloud.compute.v1.AggregatedListInstanceGroupsRequest;
51 import com.google.cloud.compute.v1.DeleteInstanceGroupRequest;
52 import com.google.cloud.compute.v1.GetInstanceGroupRequest;
53 import com.google.cloud.compute.v1.InsertInstanceGroupRequest;
54 import com.google.cloud.compute.v1.InstanceGroup;
55 import com.google.cloud.compute.v1.InstanceGroupAggregatedList;
56 import com.google.cloud.compute.v1.InstanceGroupList;
57 import com.google.cloud.compute.v1.InstanceGroupsListInstances;
58 import com.google.cloud.compute.v1.InstanceGroupsScopedList;
59 import com.google.cloud.compute.v1.InstanceWithNamedPorts;
60 import com.google.cloud.compute.v1.ListInstanceGroupsRequest;
61 import com.google.cloud.compute.v1.ListInstancesInstanceGroupsRequest;
62 import com.google.cloud.compute.v1.Operation;
63 import com.google.cloud.compute.v1.RemoveInstancesInstanceGroupRequest;
64 import com.google.cloud.compute.v1.SetNamedPortsInstanceGroupRequest;
65 import com.google.common.collect.ImmutableList;
66 import com.google.common.collect.ImmutableMap;
67 import com.google.common.collect.ImmutableSet;
68 import com.google.common.collect.Lists;
69 import java.io.IOException;
70 import java.util.Collections;
71 import java.util.List;
72 import java.util.Map;
73 import javax.annotation.Generated;
74 import org.threeten.bp.Duration;
75 
76 // AUTO-GENERATED DOCUMENTATION AND CLASS.
77 /**
78  * Settings class to configure an instance of {@link InstanceGroupsStub}.
79  *
80  * <p>The default instance has everything set to sensible defaults:
81  *
82  * <ul>
83  *   <li>The default service address (compute.googleapis.com) and default port (443) are used.
84  *   <li>Credentials are acquired automatically through Application Default Credentials.
85  *   <li>Retries are configured for idempotent methods but not for non-idempotent methods.
86  * </ul>
87  *
88  * <p>The builder of this class is recursive, so contained classes are themselves builders. When
89  * build() is called, the tree of builders is called to create the complete settings object.
90  *
91  * <p>For example, to set the total timeout of get to 30 seconds:
92  *
93  * <pre>{@code
94  * // This snippet has been automatically generated and should be regarded as a code template only.
95  * // It will require modifications to work:
96  * // - It may require correct/in-range values for request initialization.
97  * // - It may require specifying regional endpoints when creating the service client as shown in
98  * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
99  * InstanceGroupsStubSettings.Builder instanceGroupsSettingsBuilder =
100  *     InstanceGroupsStubSettings.newBuilder();
101  * instanceGroupsSettingsBuilder
102  *     .getSettings()
103  *     .setRetrySettings(
104  *         instanceGroupsSettingsBuilder
105  *             .getSettings()
106  *             .getRetrySettings()
107  *             .toBuilder()
108  *             .setTotalTimeout(Duration.ofSeconds(30))
109  *             .build());
110  * InstanceGroupsStubSettings instanceGroupsSettings = instanceGroupsSettingsBuilder.build();
111  * }</pre>
112  */
113 @Generated("by gapic-generator-java")
114 public class InstanceGroupsStubSettings extends StubSettings<InstanceGroupsStubSettings> {
115   /** The default scopes of the service. */
116   private static final ImmutableList<String> DEFAULT_SERVICE_SCOPES =
117       ImmutableList.<String>builder()
118           .add("https://www.googleapis.com/auth/compute")
119           .add("https://www.googleapis.com/auth/cloud-platform")
120           .build();
121 
122   private final UnaryCallSettings<AddInstancesInstanceGroupRequest, Operation> addInstancesSettings;
123   private final OperationCallSettings<AddInstancesInstanceGroupRequest, Operation, Operation>
124       addInstancesOperationSettings;
125   private final PagedCallSettings<
126           AggregatedListInstanceGroupsRequest,
127           InstanceGroupAggregatedList,
128           AggregatedListPagedResponse>
129       aggregatedListSettings;
130   private final UnaryCallSettings<DeleteInstanceGroupRequest, Operation> deleteSettings;
131   private final OperationCallSettings<DeleteInstanceGroupRequest, Operation, Operation>
132       deleteOperationSettings;
133   private final UnaryCallSettings<GetInstanceGroupRequest, InstanceGroup> getSettings;
134   private final UnaryCallSettings<InsertInstanceGroupRequest, Operation> insertSettings;
135   private final OperationCallSettings<InsertInstanceGroupRequest, Operation, Operation>
136       insertOperationSettings;
137   private final PagedCallSettings<ListInstanceGroupsRequest, InstanceGroupList, ListPagedResponse>
138       listSettings;
139   private final PagedCallSettings<
140           ListInstancesInstanceGroupsRequest,
141           InstanceGroupsListInstances,
142           ListInstancesPagedResponse>
143       listInstancesSettings;
144   private final UnaryCallSettings<RemoveInstancesInstanceGroupRequest, Operation>
145       removeInstancesSettings;
146   private final OperationCallSettings<RemoveInstancesInstanceGroupRequest, Operation, Operation>
147       removeInstancesOperationSettings;
148   private final UnaryCallSettings<SetNamedPortsInstanceGroupRequest, Operation>
149       setNamedPortsSettings;
150   private final OperationCallSettings<SetNamedPortsInstanceGroupRequest, Operation, Operation>
151       setNamedPortsOperationSettings;
152 
153   private static final PagedListDescriptor<
154           AggregatedListInstanceGroupsRequest,
155           InstanceGroupAggregatedList,
156           Map.Entry<String, InstanceGroupsScopedList>>
157       AGGREGATED_LIST_PAGE_STR_DESC =
158           new PagedListDescriptor<
159               AggregatedListInstanceGroupsRequest,
160               InstanceGroupAggregatedList,
161               Map.Entry<String, InstanceGroupsScopedList>>() {
162             @Override
163             public String emptyToken() {
164               return "";
165             }
166 
167             @Override
168             public AggregatedListInstanceGroupsRequest injectToken(
169                 AggregatedListInstanceGroupsRequest payload, String token) {
170               return AggregatedListInstanceGroupsRequest.newBuilder(payload)
171                   .setPageToken(token)
172                   .build();
173             }
174 
175             @Override
176             public AggregatedListInstanceGroupsRequest injectPageSize(
177                 AggregatedListInstanceGroupsRequest payload, int pageSize) {
178               return AggregatedListInstanceGroupsRequest.newBuilder(payload)
179                   .setMaxResults(pageSize)
180                   .build();
181             }
182 
183             @Override
184             public Integer extractPageSize(AggregatedListInstanceGroupsRequest payload) {
185               return payload.getMaxResults();
186             }
187 
188             @Override
189             public String extractNextToken(InstanceGroupAggregatedList payload) {
190               return payload.getNextPageToken();
191             }
192 
193             @Override
194             public Iterable<Map.Entry<String, InstanceGroupsScopedList>> extractResources(
195                 InstanceGroupAggregatedList payload) {
196               return payload.getItemsMap() == null
197                   ? Collections.<Map.Entry<String, InstanceGroupsScopedList>>emptySet()
198                   : payload.getItemsMap().entrySet();
199             }
200           };
201 
202   private static final PagedListDescriptor<
203           ListInstanceGroupsRequest, InstanceGroupList, InstanceGroup>
204       LIST_PAGE_STR_DESC =
205           new PagedListDescriptor<ListInstanceGroupsRequest, InstanceGroupList, InstanceGroup>() {
206             @Override
207             public String emptyToken() {
208               return "";
209             }
210 
211             @Override
212             public ListInstanceGroupsRequest injectToken(
213                 ListInstanceGroupsRequest payload, String token) {
214               return ListInstanceGroupsRequest.newBuilder(payload).setPageToken(token).build();
215             }
216 
217             @Override
218             public ListInstanceGroupsRequest injectPageSize(
219                 ListInstanceGroupsRequest payload, int pageSize) {
220               return ListInstanceGroupsRequest.newBuilder(payload).setMaxResults(pageSize).build();
221             }
222 
223             @Override
224             public Integer extractPageSize(ListInstanceGroupsRequest payload) {
225               return payload.getMaxResults();
226             }
227 
228             @Override
229             public String extractNextToken(InstanceGroupList payload) {
230               return payload.getNextPageToken();
231             }
232 
233             @Override
234             public Iterable<InstanceGroup> extractResources(InstanceGroupList payload) {
235               return payload.getItemsList() == null
236                   ? ImmutableList.<InstanceGroup>of()
237                   : payload.getItemsList();
238             }
239           };
240 
241   private static final PagedListDescriptor<
242           ListInstancesInstanceGroupsRequest, InstanceGroupsListInstances, InstanceWithNamedPorts>
243       LIST_INSTANCES_PAGE_STR_DESC =
244           new PagedListDescriptor<
245               ListInstancesInstanceGroupsRequest,
246               InstanceGroupsListInstances,
247               InstanceWithNamedPorts>() {
248             @Override
249             public String emptyToken() {
250               return "";
251             }
252 
253             @Override
254             public ListInstancesInstanceGroupsRequest injectToken(
255                 ListInstancesInstanceGroupsRequest payload, String token) {
256               return ListInstancesInstanceGroupsRequest.newBuilder(payload)
257                   .setPageToken(token)
258                   .build();
259             }
260 
261             @Override
262             public ListInstancesInstanceGroupsRequest injectPageSize(
263                 ListInstancesInstanceGroupsRequest payload, int pageSize) {
264               return ListInstancesInstanceGroupsRequest.newBuilder(payload)
265                   .setMaxResults(pageSize)
266                   .build();
267             }
268 
269             @Override
270             public Integer extractPageSize(ListInstancesInstanceGroupsRequest payload) {
271               return payload.getMaxResults();
272             }
273 
274             @Override
275             public String extractNextToken(InstanceGroupsListInstances payload) {
276               return payload.getNextPageToken();
277             }
278 
279             @Override
280             public Iterable<InstanceWithNamedPorts> extractResources(
281                 InstanceGroupsListInstances payload) {
282               return payload.getItemsList() == null
283                   ? ImmutableList.<InstanceWithNamedPorts>of()
284                   : payload.getItemsList();
285             }
286           };
287 
288   private static final PagedListResponseFactory<
289           AggregatedListInstanceGroupsRequest,
290           InstanceGroupAggregatedList,
291           AggregatedListPagedResponse>
292       AGGREGATED_LIST_PAGE_STR_FACT =
293           new PagedListResponseFactory<
294               AggregatedListInstanceGroupsRequest,
295               InstanceGroupAggregatedList,
296               AggregatedListPagedResponse>() {
297             @Override
298             public ApiFuture<AggregatedListPagedResponse> getFuturePagedResponse(
299                 UnaryCallable<AggregatedListInstanceGroupsRequest, InstanceGroupAggregatedList>
300                     callable,
301                 AggregatedListInstanceGroupsRequest request,
302                 ApiCallContext context,
303                 ApiFuture<InstanceGroupAggregatedList> futureResponse) {
304               PageContext<
305                       AggregatedListInstanceGroupsRequest,
306                       InstanceGroupAggregatedList,
307                       Map.Entry<String, InstanceGroupsScopedList>>
308                   pageContext =
309                       PageContext.create(callable, AGGREGATED_LIST_PAGE_STR_DESC, request, context);
310               return AggregatedListPagedResponse.createAsync(pageContext, futureResponse);
311             }
312           };
313 
314   private static final PagedListResponseFactory<
315           ListInstanceGroupsRequest, InstanceGroupList, ListPagedResponse>
316       LIST_PAGE_STR_FACT =
317           new PagedListResponseFactory<
318               ListInstanceGroupsRequest, InstanceGroupList, ListPagedResponse>() {
319             @Override
320             public ApiFuture<ListPagedResponse> getFuturePagedResponse(
321                 UnaryCallable<ListInstanceGroupsRequest, InstanceGroupList> callable,
322                 ListInstanceGroupsRequest request,
323                 ApiCallContext context,
324                 ApiFuture<InstanceGroupList> futureResponse) {
325               PageContext<ListInstanceGroupsRequest, InstanceGroupList, InstanceGroup> pageContext =
326                   PageContext.create(callable, LIST_PAGE_STR_DESC, request, context);
327               return ListPagedResponse.createAsync(pageContext, futureResponse);
328             }
329           };
330 
331   private static final PagedListResponseFactory<
332           ListInstancesInstanceGroupsRequest,
333           InstanceGroupsListInstances,
334           ListInstancesPagedResponse>
335       LIST_INSTANCES_PAGE_STR_FACT =
336           new PagedListResponseFactory<
337               ListInstancesInstanceGroupsRequest,
338               InstanceGroupsListInstances,
339               ListInstancesPagedResponse>() {
340             @Override
341             public ApiFuture<ListInstancesPagedResponse> getFuturePagedResponse(
342                 UnaryCallable<ListInstancesInstanceGroupsRequest, InstanceGroupsListInstances>
343                     callable,
344                 ListInstancesInstanceGroupsRequest request,
345                 ApiCallContext context,
346                 ApiFuture<InstanceGroupsListInstances> futureResponse) {
347               PageContext<
348                       ListInstancesInstanceGroupsRequest,
349                       InstanceGroupsListInstances,
350                       InstanceWithNamedPorts>
351                   pageContext =
352                       PageContext.create(callable, LIST_INSTANCES_PAGE_STR_DESC, request, context);
353               return ListInstancesPagedResponse.createAsync(pageContext, futureResponse);
354             }
355           };
356 
357   /** Returns the object with the settings used for calls to addInstances. */
addInstancesSettings()358   public UnaryCallSettings<AddInstancesInstanceGroupRequest, Operation> addInstancesSettings() {
359     return addInstancesSettings;
360   }
361 
362   /** Returns the object with the settings used for calls to addInstances. */
363   public OperationCallSettings<AddInstancesInstanceGroupRequest, Operation, Operation>
addInstancesOperationSettings()364       addInstancesOperationSettings() {
365     return addInstancesOperationSettings;
366   }
367 
368   /** Returns the object with the settings used for calls to aggregatedList. */
369   public PagedCallSettings<
370           AggregatedListInstanceGroupsRequest,
371           InstanceGroupAggregatedList,
372           AggregatedListPagedResponse>
aggregatedListSettings()373       aggregatedListSettings() {
374     return aggregatedListSettings;
375   }
376 
377   /** Returns the object with the settings used for calls to delete. */
deleteSettings()378   public UnaryCallSettings<DeleteInstanceGroupRequest, Operation> deleteSettings() {
379     return deleteSettings;
380   }
381 
382   /** Returns the object with the settings used for calls to delete. */
383   public OperationCallSettings<DeleteInstanceGroupRequest, Operation, Operation>
deleteOperationSettings()384       deleteOperationSettings() {
385     return deleteOperationSettings;
386   }
387 
388   /** Returns the object with the settings used for calls to get. */
getSettings()389   public UnaryCallSettings<GetInstanceGroupRequest, InstanceGroup> getSettings() {
390     return getSettings;
391   }
392 
393   /** Returns the object with the settings used for calls to insert. */
insertSettings()394   public UnaryCallSettings<InsertInstanceGroupRequest, Operation> insertSettings() {
395     return insertSettings;
396   }
397 
398   /** Returns the object with the settings used for calls to insert. */
399   public OperationCallSettings<InsertInstanceGroupRequest, Operation, Operation>
insertOperationSettings()400       insertOperationSettings() {
401     return insertOperationSettings;
402   }
403 
404   /** Returns the object with the settings used for calls to list. */
405   public PagedCallSettings<ListInstanceGroupsRequest, InstanceGroupList, ListPagedResponse>
listSettings()406       listSettings() {
407     return listSettings;
408   }
409 
410   /** Returns the object with the settings used for calls to listInstances. */
411   public PagedCallSettings<
412           ListInstancesInstanceGroupsRequest,
413           InstanceGroupsListInstances,
414           ListInstancesPagedResponse>
listInstancesSettings()415       listInstancesSettings() {
416     return listInstancesSettings;
417   }
418 
419   /** Returns the object with the settings used for calls to removeInstances. */
420   public UnaryCallSettings<RemoveInstancesInstanceGroupRequest, Operation>
removeInstancesSettings()421       removeInstancesSettings() {
422     return removeInstancesSettings;
423   }
424 
425   /** Returns the object with the settings used for calls to removeInstances. */
426   public OperationCallSettings<RemoveInstancesInstanceGroupRequest, Operation, Operation>
removeInstancesOperationSettings()427       removeInstancesOperationSettings() {
428     return removeInstancesOperationSettings;
429   }
430 
431   /** Returns the object with the settings used for calls to setNamedPorts. */
setNamedPortsSettings()432   public UnaryCallSettings<SetNamedPortsInstanceGroupRequest, Operation> setNamedPortsSettings() {
433     return setNamedPortsSettings;
434   }
435 
436   /** Returns the object with the settings used for calls to setNamedPorts. */
437   public OperationCallSettings<SetNamedPortsInstanceGroupRequest, Operation, Operation>
setNamedPortsOperationSettings()438       setNamedPortsOperationSettings() {
439     return setNamedPortsOperationSettings;
440   }
441 
createStub()442   public InstanceGroupsStub createStub() throws IOException {
443     if (getTransportChannelProvider()
444         .getTransportName()
445         .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) {
446       return HttpJsonInstanceGroupsStub.create(this);
447     }
448     throw new UnsupportedOperationException(
449         String.format(
450             "Transport not supported: %s", getTransportChannelProvider().getTransportName()));
451   }
452 
453   /** Returns a builder for the default ExecutorProvider for this service. */
defaultExecutorProviderBuilder()454   public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() {
455     return InstantiatingExecutorProvider.newBuilder();
456   }
457 
458   /** Returns the default service endpoint. */
getDefaultEndpoint()459   public static String getDefaultEndpoint() {
460     return "compute.googleapis.com:443";
461   }
462 
463   /** Returns the default mTLS service endpoint. */
getDefaultMtlsEndpoint()464   public static String getDefaultMtlsEndpoint() {
465     return "compute.mtls.googleapis.com:443";
466   }
467 
468   /** Returns the default service scopes. */
getDefaultServiceScopes()469   public static List<String> getDefaultServiceScopes() {
470     return DEFAULT_SERVICE_SCOPES;
471   }
472 
473   /** Returns a builder for the default credentials for this service. */
defaultCredentialsProviderBuilder()474   public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() {
475     return GoogleCredentialsProvider.newBuilder()
476         .setScopesToApply(DEFAULT_SERVICE_SCOPES)
477         .setUseJwtAccessWithScope(true);
478   }
479 
480   /** Returns a builder for the default ChannelProvider for this service. */
481   public static InstantiatingHttpJsonChannelProvider.Builder
defaultHttpJsonTransportProviderBuilder()482       defaultHttpJsonTransportProviderBuilder() {
483     return InstantiatingHttpJsonChannelProvider.newBuilder();
484   }
485 
defaultTransportChannelProvider()486   public static TransportChannelProvider defaultTransportChannelProvider() {
487     return defaultHttpJsonTransportProviderBuilder().build();
488   }
489 
490   @BetaApi("The surface for customizing headers is not stable yet and may change in the future.")
defaultApiClientHeaderProviderBuilder()491   public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() {
492     return ApiClientHeaderProvider.newBuilder()
493         .setGeneratedLibToken(
494             "gapic", GaxProperties.getLibraryVersion(InstanceGroupsStubSettings.class))
495         .setTransportToken(
496             GaxHttpJsonProperties.getHttpJsonTokenName(),
497             GaxHttpJsonProperties.getHttpJsonVersion());
498   }
499 
500   /** Returns a new builder for this class. */
newBuilder()501   public static Builder newBuilder() {
502     return Builder.createDefault();
503   }
504 
505   /** Returns a new builder for this class. */
newBuilder(ClientContext clientContext)506   public static Builder newBuilder(ClientContext clientContext) {
507     return new Builder(clientContext);
508   }
509 
510   /** Returns a builder containing all the values of this settings class. */
toBuilder()511   public Builder toBuilder() {
512     return new Builder(this);
513   }
514 
InstanceGroupsStubSettings(Builder settingsBuilder)515   protected InstanceGroupsStubSettings(Builder settingsBuilder) throws IOException {
516     super(settingsBuilder);
517 
518     addInstancesSettings = settingsBuilder.addInstancesSettings().build();
519     addInstancesOperationSettings = settingsBuilder.addInstancesOperationSettings().build();
520     aggregatedListSettings = settingsBuilder.aggregatedListSettings().build();
521     deleteSettings = settingsBuilder.deleteSettings().build();
522     deleteOperationSettings = settingsBuilder.deleteOperationSettings().build();
523     getSettings = settingsBuilder.getSettings().build();
524     insertSettings = settingsBuilder.insertSettings().build();
525     insertOperationSettings = settingsBuilder.insertOperationSettings().build();
526     listSettings = settingsBuilder.listSettings().build();
527     listInstancesSettings = settingsBuilder.listInstancesSettings().build();
528     removeInstancesSettings = settingsBuilder.removeInstancesSettings().build();
529     removeInstancesOperationSettings = settingsBuilder.removeInstancesOperationSettings().build();
530     setNamedPortsSettings = settingsBuilder.setNamedPortsSettings().build();
531     setNamedPortsOperationSettings = settingsBuilder.setNamedPortsOperationSettings().build();
532   }
533 
534   /** Builder for InstanceGroupsStubSettings. */
535   public static class Builder extends StubSettings.Builder<InstanceGroupsStubSettings, Builder> {
536     private final ImmutableList<UnaryCallSettings.Builder<?, ?>> unaryMethodSettingsBuilders;
537     private final UnaryCallSettings.Builder<AddInstancesInstanceGroupRequest, Operation>
538         addInstancesSettings;
539     private final OperationCallSettings.Builder<
540             AddInstancesInstanceGroupRequest, Operation, Operation>
541         addInstancesOperationSettings;
542     private final PagedCallSettings.Builder<
543             AggregatedListInstanceGroupsRequest,
544             InstanceGroupAggregatedList,
545             AggregatedListPagedResponse>
546         aggregatedListSettings;
547     private final UnaryCallSettings.Builder<DeleteInstanceGroupRequest, Operation> deleteSettings;
548     private final OperationCallSettings.Builder<DeleteInstanceGroupRequest, Operation, Operation>
549         deleteOperationSettings;
550     private final UnaryCallSettings.Builder<GetInstanceGroupRequest, InstanceGroup> getSettings;
551     private final UnaryCallSettings.Builder<InsertInstanceGroupRequest, Operation> insertSettings;
552     private final OperationCallSettings.Builder<InsertInstanceGroupRequest, Operation, Operation>
553         insertOperationSettings;
554     private final PagedCallSettings.Builder<
555             ListInstanceGroupsRequest, InstanceGroupList, ListPagedResponse>
556         listSettings;
557     private final PagedCallSettings.Builder<
558             ListInstancesInstanceGroupsRequest,
559             InstanceGroupsListInstances,
560             ListInstancesPagedResponse>
561         listInstancesSettings;
562     private final UnaryCallSettings.Builder<RemoveInstancesInstanceGroupRequest, Operation>
563         removeInstancesSettings;
564     private final OperationCallSettings.Builder<
565             RemoveInstancesInstanceGroupRequest, Operation, Operation>
566         removeInstancesOperationSettings;
567     private final UnaryCallSettings.Builder<SetNamedPortsInstanceGroupRequest, Operation>
568         setNamedPortsSettings;
569     private final OperationCallSettings.Builder<
570             SetNamedPortsInstanceGroupRequest, Operation, Operation>
571         setNamedPortsOperationSettings;
572     private static final ImmutableMap<String, ImmutableSet<StatusCode.Code>>
573         RETRYABLE_CODE_DEFINITIONS;
574 
575     static {
576       ImmutableMap.Builder<String, ImmutableSet<StatusCode.Code>> definitions =
577           ImmutableMap.builder();
578       definitions.put(
579           "no_retry_1_codes", ImmutableSet.copyOf(Lists.<StatusCode.Code>newArrayList()));
580       definitions.put(
581           "retry_policy_0_codes",
582           ImmutableSet.copyOf(
583               Lists.<StatusCode.Code>newArrayList(
584                   StatusCode.Code.DEADLINE_EXCEEDED, StatusCode.Code.UNAVAILABLE)));
585       RETRYABLE_CODE_DEFINITIONS = definitions.build();
586     }
587 
588     private static final ImmutableMap<String, RetrySettings> RETRY_PARAM_DEFINITIONS;
589 
590     static {
591       ImmutableMap.Builder<String, RetrySettings> definitions = ImmutableMap.builder();
592       RetrySettings settings = null;
593       settings =
594           RetrySettings.newBuilder()
595               .setInitialRpcTimeout(Duration.ofMillis(600000L))
596               .setRpcTimeoutMultiplier(1.0)
597               .setMaxRpcTimeout(Duration.ofMillis(600000L))
598               .setTotalTimeout(Duration.ofMillis(600000L))
599               .build();
600       definitions.put("no_retry_1_params", settings);
601       settings =
602           RetrySettings.newBuilder()
603               .setInitialRetryDelay(Duration.ofMillis(100L))
604               .setRetryDelayMultiplier(1.3)
605               .setMaxRetryDelay(Duration.ofMillis(60000L))
606               .setInitialRpcTimeout(Duration.ofMillis(600000L))
607               .setRpcTimeoutMultiplier(1.0)
608               .setMaxRpcTimeout(Duration.ofMillis(600000L))
609               .setTotalTimeout(Duration.ofMillis(600000L))
610               .build();
611       definitions.put("retry_policy_0_params", settings);
612       RETRY_PARAM_DEFINITIONS = definitions.build();
613     }
614 
Builder()615     protected Builder() {
616       this(((ClientContext) null));
617     }
618 
Builder(ClientContext clientContext)619     protected Builder(ClientContext clientContext) {
620       super(clientContext);
621 
622       addInstancesSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
623       addInstancesOperationSettings = OperationCallSettings.newBuilder();
624       aggregatedListSettings = PagedCallSettings.newBuilder(AGGREGATED_LIST_PAGE_STR_FACT);
625       deleteSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
626       deleteOperationSettings = OperationCallSettings.newBuilder();
627       getSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
628       insertSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
629       insertOperationSettings = OperationCallSettings.newBuilder();
630       listSettings = PagedCallSettings.newBuilder(LIST_PAGE_STR_FACT);
631       listInstancesSettings = PagedCallSettings.newBuilder(LIST_INSTANCES_PAGE_STR_FACT);
632       removeInstancesSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
633       removeInstancesOperationSettings = OperationCallSettings.newBuilder();
634       setNamedPortsSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
635       setNamedPortsOperationSettings = OperationCallSettings.newBuilder();
636 
637       unaryMethodSettingsBuilders =
638           ImmutableList.<UnaryCallSettings.Builder<?, ?>>of(
639               addInstancesSettings,
640               aggregatedListSettings,
641               deleteSettings,
642               getSettings,
643               insertSettings,
644               listSettings,
645               listInstancesSettings,
646               removeInstancesSettings,
647               setNamedPortsSettings);
648       initDefaults(this);
649     }
650 
Builder(InstanceGroupsStubSettings settings)651     protected Builder(InstanceGroupsStubSettings settings) {
652       super(settings);
653 
654       addInstancesSettings = settings.addInstancesSettings.toBuilder();
655       addInstancesOperationSettings = settings.addInstancesOperationSettings.toBuilder();
656       aggregatedListSettings = settings.aggregatedListSettings.toBuilder();
657       deleteSettings = settings.deleteSettings.toBuilder();
658       deleteOperationSettings = settings.deleteOperationSettings.toBuilder();
659       getSettings = settings.getSettings.toBuilder();
660       insertSettings = settings.insertSettings.toBuilder();
661       insertOperationSettings = settings.insertOperationSettings.toBuilder();
662       listSettings = settings.listSettings.toBuilder();
663       listInstancesSettings = settings.listInstancesSettings.toBuilder();
664       removeInstancesSettings = settings.removeInstancesSettings.toBuilder();
665       removeInstancesOperationSettings = settings.removeInstancesOperationSettings.toBuilder();
666       setNamedPortsSettings = settings.setNamedPortsSettings.toBuilder();
667       setNamedPortsOperationSettings = settings.setNamedPortsOperationSettings.toBuilder();
668 
669       unaryMethodSettingsBuilders =
670           ImmutableList.<UnaryCallSettings.Builder<?, ?>>of(
671               addInstancesSettings,
672               aggregatedListSettings,
673               deleteSettings,
674               getSettings,
675               insertSettings,
676               listSettings,
677               listInstancesSettings,
678               removeInstancesSettings,
679               setNamedPortsSettings);
680     }
681 
createDefault()682     private static Builder createDefault() {
683       Builder builder = new Builder(((ClientContext) null));
684 
685       builder.setTransportChannelProvider(defaultTransportChannelProvider());
686       builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build());
687       builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build());
688       builder.setEndpoint(getDefaultEndpoint());
689       builder.setMtlsEndpoint(getDefaultMtlsEndpoint());
690       builder.setSwitchToMtlsEndpointAllowed(true);
691 
692       return initDefaults(builder);
693     }
694 
initDefaults(Builder builder)695     private static Builder initDefaults(Builder builder) {
696       builder
697           .addInstancesSettings()
698           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
699           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"));
700 
701       builder
702           .aggregatedListSettings()
703           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
704           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
705 
706       builder
707           .deleteSettings()
708           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
709           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"));
710 
711       builder
712           .getSettings()
713           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
714           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
715 
716       builder
717           .insertSettings()
718           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
719           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"));
720 
721       builder
722           .listSettings()
723           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
724           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
725 
726       builder
727           .listInstancesSettings()
728           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
729           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"));
730 
731       builder
732           .removeInstancesSettings()
733           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
734           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"));
735 
736       builder
737           .setNamedPortsSettings()
738           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
739           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"));
740 
741       builder
742           .addInstancesOperationSettings()
743           .setInitialCallSettings(
744               UnaryCallSettings
745                   .<AddInstancesInstanceGroupRequest, OperationSnapshot>
746                       newUnaryCallSettingsBuilder()
747                   .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
748                   .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"))
749                   .build())
750           .setResponseTransformer(
751               ProtoOperationTransformers.ResponseTransformer.create(Operation.class))
752           .setMetadataTransformer(
753               ProtoOperationTransformers.MetadataTransformer.create(Operation.class))
754           .setPollingAlgorithm(
755               OperationTimedPollAlgorithm.create(
756                   RetrySettings.newBuilder()
757                       .setInitialRetryDelay(Duration.ofMillis(500L))
758                       .setRetryDelayMultiplier(1.5)
759                       .setMaxRetryDelay(Duration.ofMillis(20000L))
760                       .setInitialRpcTimeout(Duration.ZERO)
761                       .setRpcTimeoutMultiplier(1.0)
762                       .setMaxRpcTimeout(Duration.ZERO)
763                       .setTotalTimeout(Duration.ofMillis(600000L))
764                       .build()));
765 
766       builder
767           .deleteOperationSettings()
768           .setInitialCallSettings(
769               UnaryCallSettings
770                   .<DeleteInstanceGroupRequest, OperationSnapshot>newUnaryCallSettingsBuilder()
771                   .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
772                   .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"))
773                   .build())
774           .setResponseTransformer(
775               ProtoOperationTransformers.ResponseTransformer.create(Operation.class))
776           .setMetadataTransformer(
777               ProtoOperationTransformers.MetadataTransformer.create(Operation.class))
778           .setPollingAlgorithm(
779               OperationTimedPollAlgorithm.create(
780                   RetrySettings.newBuilder()
781                       .setInitialRetryDelay(Duration.ofMillis(500L))
782                       .setRetryDelayMultiplier(1.5)
783                       .setMaxRetryDelay(Duration.ofMillis(20000L))
784                       .setInitialRpcTimeout(Duration.ZERO)
785                       .setRpcTimeoutMultiplier(1.0)
786                       .setMaxRpcTimeout(Duration.ZERO)
787                       .setTotalTimeout(Duration.ofMillis(600000L))
788                       .build()));
789 
790       builder
791           .insertOperationSettings()
792           .setInitialCallSettings(
793               UnaryCallSettings
794                   .<InsertInstanceGroupRequest, OperationSnapshot>newUnaryCallSettingsBuilder()
795                   .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
796                   .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"))
797                   .build())
798           .setResponseTransformer(
799               ProtoOperationTransformers.ResponseTransformer.create(Operation.class))
800           .setMetadataTransformer(
801               ProtoOperationTransformers.MetadataTransformer.create(Operation.class))
802           .setPollingAlgorithm(
803               OperationTimedPollAlgorithm.create(
804                   RetrySettings.newBuilder()
805                       .setInitialRetryDelay(Duration.ofMillis(500L))
806                       .setRetryDelayMultiplier(1.5)
807                       .setMaxRetryDelay(Duration.ofMillis(20000L))
808                       .setInitialRpcTimeout(Duration.ZERO)
809                       .setRpcTimeoutMultiplier(1.0)
810                       .setMaxRpcTimeout(Duration.ZERO)
811                       .setTotalTimeout(Duration.ofMillis(600000L))
812                       .build()));
813 
814       builder
815           .removeInstancesOperationSettings()
816           .setInitialCallSettings(
817               UnaryCallSettings
818                   .<RemoveInstancesInstanceGroupRequest, OperationSnapshot>
819                       newUnaryCallSettingsBuilder()
820                   .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
821                   .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"))
822                   .build())
823           .setResponseTransformer(
824               ProtoOperationTransformers.ResponseTransformer.create(Operation.class))
825           .setMetadataTransformer(
826               ProtoOperationTransformers.MetadataTransformer.create(Operation.class))
827           .setPollingAlgorithm(
828               OperationTimedPollAlgorithm.create(
829                   RetrySettings.newBuilder()
830                       .setInitialRetryDelay(Duration.ofMillis(500L))
831                       .setRetryDelayMultiplier(1.5)
832                       .setMaxRetryDelay(Duration.ofMillis(20000L))
833                       .setInitialRpcTimeout(Duration.ZERO)
834                       .setRpcTimeoutMultiplier(1.0)
835                       .setMaxRpcTimeout(Duration.ZERO)
836                       .setTotalTimeout(Duration.ofMillis(600000L))
837                       .build()));
838 
839       builder
840           .setNamedPortsOperationSettings()
841           .setInitialCallSettings(
842               UnaryCallSettings
843                   .<SetNamedPortsInstanceGroupRequest, OperationSnapshot>
844                       newUnaryCallSettingsBuilder()
845                   .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
846                   .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"))
847                   .build())
848           .setResponseTransformer(
849               ProtoOperationTransformers.ResponseTransformer.create(Operation.class))
850           .setMetadataTransformer(
851               ProtoOperationTransformers.MetadataTransformer.create(Operation.class))
852           .setPollingAlgorithm(
853               OperationTimedPollAlgorithm.create(
854                   RetrySettings.newBuilder()
855                       .setInitialRetryDelay(Duration.ofMillis(500L))
856                       .setRetryDelayMultiplier(1.5)
857                       .setMaxRetryDelay(Duration.ofMillis(20000L))
858                       .setInitialRpcTimeout(Duration.ZERO)
859                       .setRpcTimeoutMultiplier(1.0)
860                       .setMaxRpcTimeout(Duration.ZERO)
861                       .setTotalTimeout(Duration.ofMillis(600000L))
862                       .build()));
863 
864       return builder;
865     }
866 
867     /**
868      * Applies the given settings updater function to all of the unary API methods in this service.
869      *
870      * <p>Note: This method does not support applying settings to streaming methods.
871      */
applyToAllUnaryMethods( ApiFunction<UnaryCallSettings.Builder<?, ?>, Void> settingsUpdater)872     public Builder applyToAllUnaryMethods(
873         ApiFunction<UnaryCallSettings.Builder<?, ?>, Void> settingsUpdater) {
874       super.applyToAllUnaryMethods(unaryMethodSettingsBuilders, settingsUpdater);
875       return this;
876     }
877 
unaryMethodSettingsBuilders()878     public ImmutableList<UnaryCallSettings.Builder<?, ?>> unaryMethodSettingsBuilders() {
879       return unaryMethodSettingsBuilders;
880     }
881 
882     /** Returns the builder for the settings used for calls to addInstances. */
883     public UnaryCallSettings.Builder<AddInstancesInstanceGroupRequest, Operation>
addInstancesSettings()884         addInstancesSettings() {
885       return addInstancesSettings;
886     }
887 
888     /** Returns the builder for the settings used for calls to addInstances. */
889     @BetaApi(
890         "The surface for use by generated code is not stable yet and may change in the future.")
891     public OperationCallSettings.Builder<AddInstancesInstanceGroupRequest, Operation, Operation>
addInstancesOperationSettings()892         addInstancesOperationSettings() {
893       return addInstancesOperationSettings;
894     }
895 
896     /** Returns the builder for the settings used for calls to aggregatedList. */
897     public PagedCallSettings.Builder<
898             AggregatedListInstanceGroupsRequest,
899             InstanceGroupAggregatedList,
900             AggregatedListPagedResponse>
aggregatedListSettings()901         aggregatedListSettings() {
902       return aggregatedListSettings;
903     }
904 
905     /** Returns the builder for the settings used for calls to delete. */
deleteSettings()906     public UnaryCallSettings.Builder<DeleteInstanceGroupRequest, Operation> deleteSettings() {
907       return deleteSettings;
908     }
909 
910     /** Returns the builder for the settings used for calls to delete. */
911     @BetaApi(
912         "The surface for use by generated code is not stable yet and may change in the future.")
913     public OperationCallSettings.Builder<DeleteInstanceGroupRequest, Operation, Operation>
deleteOperationSettings()914         deleteOperationSettings() {
915       return deleteOperationSettings;
916     }
917 
918     /** Returns the builder for the settings used for calls to get. */
getSettings()919     public UnaryCallSettings.Builder<GetInstanceGroupRequest, InstanceGroup> getSettings() {
920       return getSettings;
921     }
922 
923     /** Returns the builder for the settings used for calls to insert. */
insertSettings()924     public UnaryCallSettings.Builder<InsertInstanceGroupRequest, Operation> insertSettings() {
925       return insertSettings;
926     }
927 
928     /** Returns the builder for the settings used for calls to insert. */
929     @BetaApi(
930         "The surface for use by generated code is not stable yet and may change in the future.")
931     public OperationCallSettings.Builder<InsertInstanceGroupRequest, Operation, Operation>
insertOperationSettings()932         insertOperationSettings() {
933       return insertOperationSettings;
934     }
935 
936     /** Returns the builder for the settings used for calls to list. */
937     public PagedCallSettings.Builder<
938             ListInstanceGroupsRequest, InstanceGroupList, ListPagedResponse>
listSettings()939         listSettings() {
940       return listSettings;
941     }
942 
943     /** Returns the builder for the settings used for calls to listInstances. */
944     public PagedCallSettings.Builder<
945             ListInstancesInstanceGroupsRequest,
946             InstanceGroupsListInstances,
947             ListInstancesPagedResponse>
listInstancesSettings()948         listInstancesSettings() {
949       return listInstancesSettings;
950     }
951 
952     /** Returns the builder for the settings used for calls to removeInstances. */
953     public UnaryCallSettings.Builder<RemoveInstancesInstanceGroupRequest, Operation>
removeInstancesSettings()954         removeInstancesSettings() {
955       return removeInstancesSettings;
956     }
957 
958     /** Returns the builder for the settings used for calls to removeInstances. */
959     @BetaApi(
960         "The surface for use by generated code is not stable yet and may change in the future.")
961     public OperationCallSettings.Builder<RemoveInstancesInstanceGroupRequest, Operation, Operation>
removeInstancesOperationSettings()962         removeInstancesOperationSettings() {
963       return removeInstancesOperationSettings;
964     }
965 
966     /** Returns the builder for the settings used for calls to setNamedPorts. */
967     public UnaryCallSettings.Builder<SetNamedPortsInstanceGroupRequest, Operation>
setNamedPortsSettings()968         setNamedPortsSettings() {
969       return setNamedPortsSettings;
970     }
971 
972     /** Returns the builder for the settings used for calls to setNamedPorts. */
973     @BetaApi(
974         "The surface for use by generated code is not stable yet and may change in the future.")
975     public OperationCallSettings.Builder<SetNamedPortsInstanceGroupRequest, Operation, Operation>
setNamedPortsOperationSettings()976         setNamedPortsOperationSettings() {
977       return setNamedPortsOperationSettings;
978     }
979 
980     @Override
build()981     public InstanceGroupsStubSettings build() throws IOException {
982       return new InstanceGroupsStubSettings(this);
983     }
984   }
985 }
986