• 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.VpnTunnelsClient.AggregatedListPagedResponse;
20 import static com.google.cloud.compute.v1.VpnTunnelsClient.ListPagedResponse;
21 
22 import com.google.api.core.ApiFunction;
23 import com.google.api.core.ApiFuture;
24 import com.google.api.core.BetaApi;
25 import com.google.api.gax.core.GaxProperties;
26 import com.google.api.gax.core.GoogleCredentialsProvider;
27 import com.google.api.gax.core.InstantiatingExecutorProvider;
28 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
29 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
30 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
31 import com.google.api.gax.httpjson.ProtoOperationTransformers;
32 import com.google.api.gax.longrunning.OperationSnapshot;
33 import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
34 import com.google.api.gax.retrying.RetrySettings;
35 import com.google.api.gax.rpc.ApiCallContext;
36 import com.google.api.gax.rpc.ApiClientHeaderProvider;
37 import com.google.api.gax.rpc.ClientContext;
38 import com.google.api.gax.rpc.OperationCallSettings;
39 import com.google.api.gax.rpc.PageContext;
40 import com.google.api.gax.rpc.PagedCallSettings;
41 import com.google.api.gax.rpc.PagedListDescriptor;
42 import com.google.api.gax.rpc.PagedListResponseFactory;
43 import com.google.api.gax.rpc.StatusCode;
44 import com.google.api.gax.rpc.StubSettings;
45 import com.google.api.gax.rpc.TransportChannelProvider;
46 import com.google.api.gax.rpc.UnaryCallSettings;
47 import com.google.api.gax.rpc.UnaryCallable;
48 import com.google.cloud.compute.v1.AggregatedListVpnTunnelsRequest;
49 import com.google.cloud.compute.v1.DeleteVpnTunnelRequest;
50 import com.google.cloud.compute.v1.GetVpnTunnelRequest;
51 import com.google.cloud.compute.v1.InsertVpnTunnelRequest;
52 import com.google.cloud.compute.v1.ListVpnTunnelsRequest;
53 import com.google.cloud.compute.v1.Operation;
54 import com.google.cloud.compute.v1.SetLabelsVpnTunnelRequest;
55 import com.google.cloud.compute.v1.VpnTunnel;
56 import com.google.cloud.compute.v1.VpnTunnelAggregatedList;
57 import com.google.cloud.compute.v1.VpnTunnelList;
58 import com.google.cloud.compute.v1.VpnTunnelsScopedList;
59 import com.google.common.collect.ImmutableList;
60 import com.google.common.collect.ImmutableMap;
61 import com.google.common.collect.ImmutableSet;
62 import com.google.common.collect.Lists;
63 import java.io.IOException;
64 import java.util.Collections;
65 import java.util.List;
66 import java.util.Map;
67 import javax.annotation.Generated;
68 import org.threeten.bp.Duration;
69 
70 // AUTO-GENERATED DOCUMENTATION AND CLASS.
71 /**
72  * Settings class to configure an instance of {@link VpnTunnelsStub}.
73  *
74  * <p>The default instance has everything set to sensible defaults:
75  *
76  * <ul>
77  *   <li>The default service address (compute.googleapis.com) and default port (443) are used.
78  *   <li>Credentials are acquired automatically through Application Default Credentials.
79  *   <li>Retries are configured for idempotent methods but not for non-idempotent methods.
80  * </ul>
81  *
82  * <p>The builder of this class is recursive, so contained classes are themselves builders. When
83  * build() is called, the tree of builders is called to create the complete settings object.
84  *
85  * <p>For example, to set the total timeout of get to 30 seconds:
86  *
87  * <pre>{@code
88  * // This snippet has been automatically generated and should be regarded as a code template only.
89  * // It will require modifications to work:
90  * // - It may require correct/in-range values for request initialization.
91  * // - It may require specifying regional endpoints when creating the service client as shown in
92  * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
93  * VpnTunnelsStubSettings.Builder vpnTunnelsSettingsBuilder = VpnTunnelsStubSettings.newBuilder();
94  * vpnTunnelsSettingsBuilder
95  *     .getSettings()
96  *     .setRetrySettings(
97  *         vpnTunnelsSettingsBuilder
98  *             .getSettings()
99  *             .getRetrySettings()
100  *             .toBuilder()
101  *             .setTotalTimeout(Duration.ofSeconds(30))
102  *             .build());
103  * VpnTunnelsStubSettings vpnTunnelsSettings = vpnTunnelsSettingsBuilder.build();
104  * }</pre>
105  */
106 @Generated("by gapic-generator-java")
107 public class VpnTunnelsStubSettings extends StubSettings<VpnTunnelsStubSettings> {
108   /** The default scopes of the service. */
109   private static final ImmutableList<String> DEFAULT_SERVICE_SCOPES =
110       ImmutableList.<String>builder()
111           .add("https://www.googleapis.com/auth/compute")
112           .add("https://www.googleapis.com/auth/cloud-platform")
113           .build();
114 
115   private final PagedCallSettings<
116           AggregatedListVpnTunnelsRequest, VpnTunnelAggregatedList, AggregatedListPagedResponse>
117       aggregatedListSettings;
118   private final UnaryCallSettings<DeleteVpnTunnelRequest, Operation> deleteSettings;
119   private final OperationCallSettings<DeleteVpnTunnelRequest, Operation, Operation>
120       deleteOperationSettings;
121   private final UnaryCallSettings<GetVpnTunnelRequest, VpnTunnel> getSettings;
122   private final UnaryCallSettings<InsertVpnTunnelRequest, Operation> insertSettings;
123   private final OperationCallSettings<InsertVpnTunnelRequest, Operation, Operation>
124       insertOperationSettings;
125   private final PagedCallSettings<ListVpnTunnelsRequest, VpnTunnelList, ListPagedResponse>
126       listSettings;
127   private final UnaryCallSettings<SetLabelsVpnTunnelRequest, Operation> setLabelsSettings;
128   private final OperationCallSettings<SetLabelsVpnTunnelRequest, Operation, Operation>
129       setLabelsOperationSettings;
130 
131   private static final PagedListDescriptor<
132           AggregatedListVpnTunnelsRequest,
133           VpnTunnelAggregatedList,
134           Map.Entry<String, VpnTunnelsScopedList>>
135       AGGREGATED_LIST_PAGE_STR_DESC =
136           new PagedListDescriptor<
137               AggregatedListVpnTunnelsRequest,
138               VpnTunnelAggregatedList,
139               Map.Entry<String, VpnTunnelsScopedList>>() {
140             @Override
141             public String emptyToken() {
142               return "";
143             }
144 
145             @Override
146             public AggregatedListVpnTunnelsRequest injectToken(
147                 AggregatedListVpnTunnelsRequest payload, String token) {
148               return AggregatedListVpnTunnelsRequest.newBuilder(payload)
149                   .setPageToken(token)
150                   .build();
151             }
152 
153             @Override
154             public AggregatedListVpnTunnelsRequest injectPageSize(
155                 AggregatedListVpnTunnelsRequest payload, int pageSize) {
156               return AggregatedListVpnTunnelsRequest.newBuilder(payload)
157                   .setMaxResults(pageSize)
158                   .build();
159             }
160 
161             @Override
162             public Integer extractPageSize(AggregatedListVpnTunnelsRequest payload) {
163               return payload.getMaxResults();
164             }
165 
166             @Override
167             public String extractNextToken(VpnTunnelAggregatedList payload) {
168               return payload.getNextPageToken();
169             }
170 
171             @Override
172             public Iterable<Map.Entry<String, VpnTunnelsScopedList>> extractResources(
173                 VpnTunnelAggregatedList payload) {
174               return payload.getItemsMap() == null
175                   ? Collections.<Map.Entry<String, VpnTunnelsScopedList>>emptySet()
176                   : payload.getItemsMap().entrySet();
177             }
178           };
179 
180   private static final PagedListDescriptor<ListVpnTunnelsRequest, VpnTunnelList, VpnTunnel>
181       LIST_PAGE_STR_DESC =
182           new PagedListDescriptor<ListVpnTunnelsRequest, VpnTunnelList, VpnTunnel>() {
183             @Override
184             public String emptyToken() {
185               return "";
186             }
187 
188             @Override
189             public ListVpnTunnelsRequest injectToken(ListVpnTunnelsRequest payload, String token) {
190               return ListVpnTunnelsRequest.newBuilder(payload).setPageToken(token).build();
191             }
192 
193             @Override
194             public ListVpnTunnelsRequest injectPageSize(
195                 ListVpnTunnelsRequest payload, int pageSize) {
196               return ListVpnTunnelsRequest.newBuilder(payload).setMaxResults(pageSize).build();
197             }
198 
199             @Override
200             public Integer extractPageSize(ListVpnTunnelsRequest payload) {
201               return payload.getMaxResults();
202             }
203 
204             @Override
205             public String extractNextToken(VpnTunnelList payload) {
206               return payload.getNextPageToken();
207             }
208 
209             @Override
210             public Iterable<VpnTunnel> extractResources(VpnTunnelList payload) {
211               return payload.getItemsList() == null
212                   ? ImmutableList.<VpnTunnel>of()
213                   : payload.getItemsList();
214             }
215           };
216 
217   private static final PagedListResponseFactory<
218           AggregatedListVpnTunnelsRequest, VpnTunnelAggregatedList, AggregatedListPagedResponse>
219       AGGREGATED_LIST_PAGE_STR_FACT =
220           new PagedListResponseFactory<
221               AggregatedListVpnTunnelsRequest,
222               VpnTunnelAggregatedList,
223               AggregatedListPagedResponse>() {
224             @Override
225             public ApiFuture<AggregatedListPagedResponse> getFuturePagedResponse(
226                 UnaryCallable<AggregatedListVpnTunnelsRequest, VpnTunnelAggregatedList> callable,
227                 AggregatedListVpnTunnelsRequest request,
228                 ApiCallContext context,
229                 ApiFuture<VpnTunnelAggregatedList> futureResponse) {
230               PageContext<
231                       AggregatedListVpnTunnelsRequest,
232                       VpnTunnelAggregatedList,
233                       Map.Entry<String, VpnTunnelsScopedList>>
234                   pageContext =
235                       PageContext.create(callable, AGGREGATED_LIST_PAGE_STR_DESC, request, context);
236               return AggregatedListPagedResponse.createAsync(pageContext, futureResponse);
237             }
238           };
239 
240   private static final PagedListResponseFactory<
241           ListVpnTunnelsRequest, VpnTunnelList, ListPagedResponse>
242       LIST_PAGE_STR_FACT =
243           new PagedListResponseFactory<ListVpnTunnelsRequest, VpnTunnelList, ListPagedResponse>() {
244             @Override
245             public ApiFuture<ListPagedResponse> getFuturePagedResponse(
246                 UnaryCallable<ListVpnTunnelsRequest, VpnTunnelList> callable,
247                 ListVpnTunnelsRequest request,
248                 ApiCallContext context,
249                 ApiFuture<VpnTunnelList> futureResponse) {
250               PageContext<ListVpnTunnelsRequest, VpnTunnelList, VpnTunnel> pageContext =
251                   PageContext.create(callable, LIST_PAGE_STR_DESC, request, context);
252               return ListPagedResponse.createAsync(pageContext, futureResponse);
253             }
254           };
255 
256   /** Returns the object with the settings used for calls to aggregatedList. */
257   public PagedCallSettings<
258           AggregatedListVpnTunnelsRequest, VpnTunnelAggregatedList, AggregatedListPagedResponse>
aggregatedListSettings()259       aggregatedListSettings() {
260     return aggregatedListSettings;
261   }
262 
263   /** Returns the object with the settings used for calls to delete. */
deleteSettings()264   public UnaryCallSettings<DeleteVpnTunnelRequest, Operation> deleteSettings() {
265     return deleteSettings;
266   }
267 
268   /** Returns the object with the settings used for calls to delete. */
269   public OperationCallSettings<DeleteVpnTunnelRequest, Operation, Operation>
deleteOperationSettings()270       deleteOperationSettings() {
271     return deleteOperationSettings;
272   }
273 
274   /** Returns the object with the settings used for calls to get. */
getSettings()275   public UnaryCallSettings<GetVpnTunnelRequest, VpnTunnel> getSettings() {
276     return getSettings;
277   }
278 
279   /** Returns the object with the settings used for calls to insert. */
insertSettings()280   public UnaryCallSettings<InsertVpnTunnelRequest, Operation> insertSettings() {
281     return insertSettings;
282   }
283 
284   /** Returns the object with the settings used for calls to insert. */
285   public OperationCallSettings<InsertVpnTunnelRequest, Operation, Operation>
insertOperationSettings()286       insertOperationSettings() {
287     return insertOperationSettings;
288   }
289 
290   /** Returns the object with the settings used for calls to list. */
listSettings()291   public PagedCallSettings<ListVpnTunnelsRequest, VpnTunnelList, ListPagedResponse> listSettings() {
292     return listSettings;
293   }
294 
295   /** Returns the object with the settings used for calls to setLabels. */
setLabelsSettings()296   public UnaryCallSettings<SetLabelsVpnTunnelRequest, Operation> setLabelsSettings() {
297     return setLabelsSettings;
298   }
299 
300   /** Returns the object with the settings used for calls to setLabels. */
301   public OperationCallSettings<SetLabelsVpnTunnelRequest, Operation, Operation>
setLabelsOperationSettings()302       setLabelsOperationSettings() {
303     return setLabelsOperationSettings;
304   }
305 
createStub()306   public VpnTunnelsStub createStub() throws IOException {
307     if (getTransportChannelProvider()
308         .getTransportName()
309         .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) {
310       return HttpJsonVpnTunnelsStub.create(this);
311     }
312     throw new UnsupportedOperationException(
313         String.format(
314             "Transport not supported: %s", getTransportChannelProvider().getTransportName()));
315   }
316 
317   /** Returns a builder for the default ExecutorProvider for this service. */
defaultExecutorProviderBuilder()318   public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() {
319     return InstantiatingExecutorProvider.newBuilder();
320   }
321 
322   /** Returns the default service endpoint. */
getDefaultEndpoint()323   public static String getDefaultEndpoint() {
324     return "compute.googleapis.com:443";
325   }
326 
327   /** Returns the default mTLS service endpoint. */
getDefaultMtlsEndpoint()328   public static String getDefaultMtlsEndpoint() {
329     return "compute.mtls.googleapis.com:443";
330   }
331 
332   /** Returns the default service scopes. */
getDefaultServiceScopes()333   public static List<String> getDefaultServiceScopes() {
334     return DEFAULT_SERVICE_SCOPES;
335   }
336 
337   /** Returns a builder for the default credentials for this service. */
defaultCredentialsProviderBuilder()338   public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() {
339     return GoogleCredentialsProvider.newBuilder()
340         .setScopesToApply(DEFAULT_SERVICE_SCOPES)
341         .setUseJwtAccessWithScope(true);
342   }
343 
344   /** Returns a builder for the default ChannelProvider for this service. */
345   public static InstantiatingHttpJsonChannelProvider.Builder
defaultHttpJsonTransportProviderBuilder()346       defaultHttpJsonTransportProviderBuilder() {
347     return InstantiatingHttpJsonChannelProvider.newBuilder();
348   }
349 
defaultTransportChannelProvider()350   public static TransportChannelProvider defaultTransportChannelProvider() {
351     return defaultHttpJsonTransportProviderBuilder().build();
352   }
353 
354   @BetaApi("The surface for customizing headers is not stable yet and may change in the future.")
defaultApiClientHeaderProviderBuilder()355   public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() {
356     return ApiClientHeaderProvider.newBuilder()
357         .setGeneratedLibToken(
358             "gapic", GaxProperties.getLibraryVersion(VpnTunnelsStubSettings.class))
359         .setTransportToken(
360             GaxHttpJsonProperties.getHttpJsonTokenName(),
361             GaxHttpJsonProperties.getHttpJsonVersion());
362   }
363 
364   /** Returns a new builder for this class. */
newBuilder()365   public static Builder newBuilder() {
366     return Builder.createDefault();
367   }
368 
369   /** Returns a new builder for this class. */
newBuilder(ClientContext clientContext)370   public static Builder newBuilder(ClientContext clientContext) {
371     return new Builder(clientContext);
372   }
373 
374   /** Returns a builder containing all the values of this settings class. */
toBuilder()375   public Builder toBuilder() {
376     return new Builder(this);
377   }
378 
VpnTunnelsStubSettings(Builder settingsBuilder)379   protected VpnTunnelsStubSettings(Builder settingsBuilder) throws IOException {
380     super(settingsBuilder);
381 
382     aggregatedListSettings = settingsBuilder.aggregatedListSettings().build();
383     deleteSettings = settingsBuilder.deleteSettings().build();
384     deleteOperationSettings = settingsBuilder.deleteOperationSettings().build();
385     getSettings = settingsBuilder.getSettings().build();
386     insertSettings = settingsBuilder.insertSettings().build();
387     insertOperationSettings = settingsBuilder.insertOperationSettings().build();
388     listSettings = settingsBuilder.listSettings().build();
389     setLabelsSettings = settingsBuilder.setLabelsSettings().build();
390     setLabelsOperationSettings = settingsBuilder.setLabelsOperationSettings().build();
391   }
392 
393   /** Builder for VpnTunnelsStubSettings. */
394   public static class Builder extends StubSettings.Builder<VpnTunnelsStubSettings, Builder> {
395     private final ImmutableList<UnaryCallSettings.Builder<?, ?>> unaryMethodSettingsBuilders;
396     private final PagedCallSettings.Builder<
397             AggregatedListVpnTunnelsRequest, VpnTunnelAggregatedList, AggregatedListPagedResponse>
398         aggregatedListSettings;
399     private final UnaryCallSettings.Builder<DeleteVpnTunnelRequest, Operation> deleteSettings;
400     private final OperationCallSettings.Builder<DeleteVpnTunnelRequest, Operation, Operation>
401         deleteOperationSettings;
402     private final UnaryCallSettings.Builder<GetVpnTunnelRequest, VpnTunnel> getSettings;
403     private final UnaryCallSettings.Builder<InsertVpnTunnelRequest, Operation> insertSettings;
404     private final OperationCallSettings.Builder<InsertVpnTunnelRequest, Operation, Operation>
405         insertOperationSettings;
406     private final PagedCallSettings.Builder<ListVpnTunnelsRequest, VpnTunnelList, ListPagedResponse>
407         listSettings;
408     private final UnaryCallSettings.Builder<SetLabelsVpnTunnelRequest, Operation> setLabelsSettings;
409     private final OperationCallSettings.Builder<SetLabelsVpnTunnelRequest, Operation, Operation>
410         setLabelsOperationSettings;
411     private static final ImmutableMap<String, ImmutableSet<StatusCode.Code>>
412         RETRYABLE_CODE_DEFINITIONS;
413 
414     static {
415       ImmutableMap.Builder<String, ImmutableSet<StatusCode.Code>> definitions =
416           ImmutableMap.builder();
417       definitions.put(
418           "retry_policy_0_codes",
419           ImmutableSet.copyOf(
420               Lists.<StatusCode.Code>newArrayList(
421                   StatusCode.Code.DEADLINE_EXCEEDED, StatusCode.Code.UNAVAILABLE)));
422       definitions.put(
423           "no_retry_1_codes", ImmutableSet.copyOf(Lists.<StatusCode.Code>newArrayList()));
424       RETRYABLE_CODE_DEFINITIONS = definitions.build();
425     }
426 
427     private static final ImmutableMap<String, RetrySettings> RETRY_PARAM_DEFINITIONS;
428 
429     static {
430       ImmutableMap.Builder<String, RetrySettings> definitions = ImmutableMap.builder();
431       RetrySettings settings = null;
432       settings =
433           RetrySettings.newBuilder()
434               .setInitialRetryDelay(Duration.ofMillis(100L))
435               .setRetryDelayMultiplier(1.3)
436               .setMaxRetryDelay(Duration.ofMillis(60000L))
437               .setInitialRpcTimeout(Duration.ofMillis(600000L))
438               .setRpcTimeoutMultiplier(1.0)
439               .setMaxRpcTimeout(Duration.ofMillis(600000L))
440               .setTotalTimeout(Duration.ofMillis(600000L))
441               .build();
442       definitions.put("retry_policy_0_params", settings);
443       settings =
444           RetrySettings.newBuilder()
445               .setInitialRpcTimeout(Duration.ofMillis(600000L))
446               .setRpcTimeoutMultiplier(1.0)
447               .setMaxRpcTimeout(Duration.ofMillis(600000L))
448               .setTotalTimeout(Duration.ofMillis(600000L))
449               .build();
450       definitions.put("no_retry_1_params", settings);
451       RETRY_PARAM_DEFINITIONS = definitions.build();
452     }
453 
Builder()454     protected Builder() {
455       this(((ClientContext) null));
456     }
457 
Builder(ClientContext clientContext)458     protected Builder(ClientContext clientContext) {
459       super(clientContext);
460 
461       aggregatedListSettings = PagedCallSettings.newBuilder(AGGREGATED_LIST_PAGE_STR_FACT);
462       deleteSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
463       deleteOperationSettings = OperationCallSettings.newBuilder();
464       getSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
465       insertSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
466       insertOperationSettings = OperationCallSettings.newBuilder();
467       listSettings = PagedCallSettings.newBuilder(LIST_PAGE_STR_FACT);
468       setLabelsSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
469       setLabelsOperationSettings = OperationCallSettings.newBuilder();
470 
471       unaryMethodSettingsBuilders =
472           ImmutableList.<UnaryCallSettings.Builder<?, ?>>of(
473               aggregatedListSettings,
474               deleteSettings,
475               getSettings,
476               insertSettings,
477               listSettings,
478               setLabelsSettings);
479       initDefaults(this);
480     }
481 
Builder(VpnTunnelsStubSettings settings)482     protected Builder(VpnTunnelsStubSettings settings) {
483       super(settings);
484 
485       aggregatedListSettings = settings.aggregatedListSettings.toBuilder();
486       deleteSettings = settings.deleteSettings.toBuilder();
487       deleteOperationSettings = settings.deleteOperationSettings.toBuilder();
488       getSettings = settings.getSettings.toBuilder();
489       insertSettings = settings.insertSettings.toBuilder();
490       insertOperationSettings = settings.insertOperationSettings.toBuilder();
491       listSettings = settings.listSettings.toBuilder();
492       setLabelsSettings = settings.setLabelsSettings.toBuilder();
493       setLabelsOperationSettings = settings.setLabelsOperationSettings.toBuilder();
494 
495       unaryMethodSettingsBuilders =
496           ImmutableList.<UnaryCallSettings.Builder<?, ?>>of(
497               aggregatedListSettings,
498               deleteSettings,
499               getSettings,
500               insertSettings,
501               listSettings,
502               setLabelsSettings);
503     }
504 
createDefault()505     private static Builder createDefault() {
506       Builder builder = new Builder(((ClientContext) null));
507 
508       builder.setTransportChannelProvider(defaultTransportChannelProvider());
509       builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build());
510       builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build());
511       builder.setEndpoint(getDefaultEndpoint());
512       builder.setMtlsEndpoint(getDefaultMtlsEndpoint());
513       builder.setSwitchToMtlsEndpointAllowed(true);
514 
515       return initDefaults(builder);
516     }
517 
initDefaults(Builder builder)518     private static Builder initDefaults(Builder builder) {
519       builder
520           .aggregatedListSettings()
521           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
522           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
523 
524       builder
525           .deleteSettings()
526           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
527           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"));
528 
529       builder
530           .getSettings()
531           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
532           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
533 
534       builder
535           .insertSettings()
536           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
537           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"));
538 
539       builder
540           .listSettings()
541           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
542           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
543 
544       builder
545           .setLabelsSettings()
546           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
547           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"));
548 
549       builder
550           .deleteOperationSettings()
551           .setInitialCallSettings(
552               UnaryCallSettings
553                   .<DeleteVpnTunnelRequest, OperationSnapshot>newUnaryCallSettingsBuilder()
554                   .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
555                   .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"))
556                   .build())
557           .setResponseTransformer(
558               ProtoOperationTransformers.ResponseTransformer.create(Operation.class))
559           .setMetadataTransformer(
560               ProtoOperationTransformers.MetadataTransformer.create(Operation.class))
561           .setPollingAlgorithm(
562               OperationTimedPollAlgorithm.create(
563                   RetrySettings.newBuilder()
564                       .setInitialRetryDelay(Duration.ofMillis(500L))
565                       .setRetryDelayMultiplier(1.5)
566                       .setMaxRetryDelay(Duration.ofMillis(20000L))
567                       .setInitialRpcTimeout(Duration.ZERO)
568                       .setRpcTimeoutMultiplier(1.0)
569                       .setMaxRpcTimeout(Duration.ZERO)
570                       .setTotalTimeout(Duration.ofMillis(600000L))
571                       .build()));
572 
573       builder
574           .insertOperationSettings()
575           .setInitialCallSettings(
576               UnaryCallSettings
577                   .<InsertVpnTunnelRequest, OperationSnapshot>newUnaryCallSettingsBuilder()
578                   .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
579                   .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"))
580                   .build())
581           .setResponseTransformer(
582               ProtoOperationTransformers.ResponseTransformer.create(Operation.class))
583           .setMetadataTransformer(
584               ProtoOperationTransformers.MetadataTransformer.create(Operation.class))
585           .setPollingAlgorithm(
586               OperationTimedPollAlgorithm.create(
587                   RetrySettings.newBuilder()
588                       .setInitialRetryDelay(Duration.ofMillis(500L))
589                       .setRetryDelayMultiplier(1.5)
590                       .setMaxRetryDelay(Duration.ofMillis(20000L))
591                       .setInitialRpcTimeout(Duration.ZERO)
592                       .setRpcTimeoutMultiplier(1.0)
593                       .setMaxRpcTimeout(Duration.ZERO)
594                       .setTotalTimeout(Duration.ofMillis(600000L))
595                       .build()));
596 
597       builder
598           .setLabelsOperationSettings()
599           .setInitialCallSettings(
600               UnaryCallSettings
601                   .<SetLabelsVpnTunnelRequest, OperationSnapshot>newUnaryCallSettingsBuilder()
602                   .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
603                   .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"))
604                   .build())
605           .setResponseTransformer(
606               ProtoOperationTransformers.ResponseTransformer.create(Operation.class))
607           .setMetadataTransformer(
608               ProtoOperationTransformers.MetadataTransformer.create(Operation.class))
609           .setPollingAlgorithm(
610               OperationTimedPollAlgorithm.create(
611                   RetrySettings.newBuilder()
612                       .setInitialRetryDelay(Duration.ofMillis(500L))
613                       .setRetryDelayMultiplier(1.5)
614                       .setMaxRetryDelay(Duration.ofMillis(20000L))
615                       .setInitialRpcTimeout(Duration.ZERO)
616                       .setRpcTimeoutMultiplier(1.0)
617                       .setMaxRpcTimeout(Duration.ZERO)
618                       .setTotalTimeout(Duration.ofMillis(600000L))
619                       .build()));
620 
621       return builder;
622     }
623 
624     /**
625      * Applies the given settings updater function to all of the unary API methods in this service.
626      *
627      * <p>Note: This method does not support applying settings to streaming methods.
628      */
applyToAllUnaryMethods( ApiFunction<UnaryCallSettings.Builder<?, ?>, Void> settingsUpdater)629     public Builder applyToAllUnaryMethods(
630         ApiFunction<UnaryCallSettings.Builder<?, ?>, Void> settingsUpdater) {
631       super.applyToAllUnaryMethods(unaryMethodSettingsBuilders, settingsUpdater);
632       return this;
633     }
634 
unaryMethodSettingsBuilders()635     public ImmutableList<UnaryCallSettings.Builder<?, ?>> unaryMethodSettingsBuilders() {
636       return unaryMethodSettingsBuilders;
637     }
638 
639     /** Returns the builder for the settings used for calls to aggregatedList. */
640     public PagedCallSettings.Builder<
641             AggregatedListVpnTunnelsRequest, VpnTunnelAggregatedList, AggregatedListPagedResponse>
aggregatedListSettings()642         aggregatedListSettings() {
643       return aggregatedListSettings;
644     }
645 
646     /** Returns the builder for the settings used for calls to delete. */
deleteSettings()647     public UnaryCallSettings.Builder<DeleteVpnTunnelRequest, Operation> deleteSettings() {
648       return deleteSettings;
649     }
650 
651     /** Returns the builder for the settings used for calls to delete. */
652     @BetaApi(
653         "The surface for use by generated code is not stable yet and may change in the future.")
654     public OperationCallSettings.Builder<DeleteVpnTunnelRequest, Operation, Operation>
deleteOperationSettings()655         deleteOperationSettings() {
656       return deleteOperationSettings;
657     }
658 
659     /** Returns the builder for the settings used for calls to get. */
getSettings()660     public UnaryCallSettings.Builder<GetVpnTunnelRequest, VpnTunnel> getSettings() {
661       return getSettings;
662     }
663 
664     /** Returns the builder for the settings used for calls to insert. */
insertSettings()665     public UnaryCallSettings.Builder<InsertVpnTunnelRequest, Operation> insertSettings() {
666       return insertSettings;
667     }
668 
669     /** Returns the builder for the settings used for calls to insert. */
670     @BetaApi(
671         "The surface for use by generated code is not stable yet and may change in the future.")
672     public OperationCallSettings.Builder<InsertVpnTunnelRequest, Operation, Operation>
insertOperationSettings()673         insertOperationSettings() {
674       return insertOperationSettings;
675     }
676 
677     /** Returns the builder for the settings used for calls to list. */
678     public PagedCallSettings.Builder<ListVpnTunnelsRequest, VpnTunnelList, ListPagedResponse>
listSettings()679         listSettings() {
680       return listSettings;
681     }
682 
683     /** Returns the builder for the settings used for calls to setLabels. */
setLabelsSettings()684     public UnaryCallSettings.Builder<SetLabelsVpnTunnelRequest, Operation> setLabelsSettings() {
685       return setLabelsSettings;
686     }
687 
688     /** Returns the builder for the settings used for calls to setLabels. */
689     @BetaApi(
690         "The surface for use by generated code is not stable yet and may change in the future.")
691     public OperationCallSettings.Builder<SetLabelsVpnTunnelRequest, Operation, Operation>
setLabelsOperationSettings()692         setLabelsOperationSettings() {
693       return setLabelsOperationSettings;
694     }
695 
696     @Override
build()697     public VpnTunnelsStubSettings build() throws IOException {
698       return new VpnTunnelsStubSettings(this);
699     }
700   }
701 }
702