• 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.RoutesClient.ListPagedResponse;
20 
21 import com.google.api.core.ApiFunction;
22 import com.google.api.core.ApiFuture;
23 import com.google.api.core.BetaApi;
24 import com.google.api.gax.core.GaxProperties;
25 import com.google.api.gax.core.GoogleCredentialsProvider;
26 import com.google.api.gax.core.InstantiatingExecutorProvider;
27 import com.google.api.gax.httpjson.GaxHttpJsonProperties;
28 import com.google.api.gax.httpjson.HttpJsonTransportChannel;
29 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider;
30 import com.google.api.gax.httpjson.ProtoOperationTransformers;
31 import com.google.api.gax.longrunning.OperationSnapshot;
32 import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
33 import com.google.api.gax.retrying.RetrySettings;
34 import com.google.api.gax.rpc.ApiCallContext;
35 import com.google.api.gax.rpc.ApiClientHeaderProvider;
36 import com.google.api.gax.rpc.ClientContext;
37 import com.google.api.gax.rpc.OperationCallSettings;
38 import com.google.api.gax.rpc.PageContext;
39 import com.google.api.gax.rpc.PagedCallSettings;
40 import com.google.api.gax.rpc.PagedListDescriptor;
41 import com.google.api.gax.rpc.PagedListResponseFactory;
42 import com.google.api.gax.rpc.StatusCode;
43 import com.google.api.gax.rpc.StubSettings;
44 import com.google.api.gax.rpc.TransportChannelProvider;
45 import com.google.api.gax.rpc.UnaryCallSettings;
46 import com.google.api.gax.rpc.UnaryCallable;
47 import com.google.cloud.compute.v1.DeleteRouteRequest;
48 import com.google.cloud.compute.v1.GetRouteRequest;
49 import com.google.cloud.compute.v1.InsertRouteRequest;
50 import com.google.cloud.compute.v1.ListRoutesRequest;
51 import com.google.cloud.compute.v1.Operation;
52 import com.google.cloud.compute.v1.Route;
53 import com.google.cloud.compute.v1.RouteList;
54 import com.google.common.collect.ImmutableList;
55 import com.google.common.collect.ImmutableMap;
56 import com.google.common.collect.ImmutableSet;
57 import com.google.common.collect.Lists;
58 import java.io.IOException;
59 import java.util.List;
60 import javax.annotation.Generated;
61 import org.threeten.bp.Duration;
62 
63 // AUTO-GENERATED DOCUMENTATION AND CLASS.
64 /**
65  * Settings class to configure an instance of {@link RoutesStub}.
66  *
67  * <p>The default instance has everything set to sensible defaults:
68  *
69  * <ul>
70  *   <li>The default service address (compute.googleapis.com) and default port (443) are used.
71  *   <li>Credentials are acquired automatically through Application Default Credentials.
72  *   <li>Retries are configured for idempotent methods but not for non-idempotent methods.
73  * </ul>
74  *
75  * <p>The builder of this class is recursive, so contained classes are themselves builders. When
76  * build() is called, the tree of builders is called to create the complete settings object.
77  *
78  * <p>For example, to set the total timeout of get to 30 seconds:
79  *
80  * <pre>{@code
81  * // This snippet has been automatically generated and should be regarded as a code template only.
82  * // It will require modifications to work:
83  * // - It may require correct/in-range values for request initialization.
84  * // - It may require specifying regional endpoints when creating the service client as shown in
85  * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
86  * RoutesStubSettings.Builder routesSettingsBuilder = RoutesStubSettings.newBuilder();
87  * routesSettingsBuilder
88  *     .getSettings()
89  *     .setRetrySettings(
90  *         routesSettingsBuilder
91  *             .getSettings()
92  *             .getRetrySettings()
93  *             .toBuilder()
94  *             .setTotalTimeout(Duration.ofSeconds(30))
95  *             .build());
96  * RoutesStubSettings routesSettings = routesSettingsBuilder.build();
97  * }</pre>
98  */
99 @Generated("by gapic-generator-java")
100 public class RoutesStubSettings extends StubSettings<RoutesStubSettings> {
101   /** The default scopes of the service. */
102   private static final ImmutableList<String> DEFAULT_SERVICE_SCOPES =
103       ImmutableList.<String>builder()
104           .add("https://www.googleapis.com/auth/compute")
105           .add("https://www.googleapis.com/auth/cloud-platform")
106           .build();
107 
108   private final UnaryCallSettings<DeleteRouteRequest, Operation> deleteSettings;
109   private final OperationCallSettings<DeleteRouteRequest, Operation, Operation>
110       deleteOperationSettings;
111   private final UnaryCallSettings<GetRouteRequest, Route> getSettings;
112   private final UnaryCallSettings<InsertRouteRequest, Operation> insertSettings;
113   private final OperationCallSettings<InsertRouteRequest, Operation, Operation>
114       insertOperationSettings;
115   private final PagedCallSettings<ListRoutesRequest, RouteList, ListPagedResponse> listSettings;
116 
117   private static final PagedListDescriptor<ListRoutesRequest, RouteList, Route> LIST_PAGE_STR_DESC =
118       new PagedListDescriptor<ListRoutesRequest, RouteList, Route>() {
119         @Override
120         public String emptyToken() {
121           return "";
122         }
123 
124         @Override
125         public ListRoutesRequest injectToken(ListRoutesRequest payload, String token) {
126           return ListRoutesRequest.newBuilder(payload).setPageToken(token).build();
127         }
128 
129         @Override
130         public ListRoutesRequest injectPageSize(ListRoutesRequest payload, int pageSize) {
131           return ListRoutesRequest.newBuilder(payload).setMaxResults(pageSize).build();
132         }
133 
134         @Override
135         public Integer extractPageSize(ListRoutesRequest payload) {
136           return payload.getMaxResults();
137         }
138 
139         @Override
140         public String extractNextToken(RouteList payload) {
141           return payload.getNextPageToken();
142         }
143 
144         @Override
145         public Iterable<Route> extractResources(RouteList payload) {
146           return payload.getItemsList() == null
147               ? ImmutableList.<Route>of()
148               : payload.getItemsList();
149         }
150       };
151 
152   private static final PagedListResponseFactory<ListRoutesRequest, RouteList, ListPagedResponse>
153       LIST_PAGE_STR_FACT =
154           new PagedListResponseFactory<ListRoutesRequest, RouteList, ListPagedResponse>() {
155             @Override
156             public ApiFuture<ListPagedResponse> getFuturePagedResponse(
157                 UnaryCallable<ListRoutesRequest, RouteList> callable,
158                 ListRoutesRequest request,
159                 ApiCallContext context,
160                 ApiFuture<RouteList> futureResponse) {
161               PageContext<ListRoutesRequest, RouteList, Route> pageContext =
162                   PageContext.create(callable, LIST_PAGE_STR_DESC, request, context);
163               return ListPagedResponse.createAsync(pageContext, futureResponse);
164             }
165           };
166 
167   /** Returns the object with the settings used for calls to delete. */
deleteSettings()168   public UnaryCallSettings<DeleteRouteRequest, Operation> deleteSettings() {
169     return deleteSettings;
170   }
171 
172   /** Returns the object with the settings used for calls to delete. */
deleteOperationSettings()173   public OperationCallSettings<DeleteRouteRequest, Operation, Operation> deleteOperationSettings() {
174     return deleteOperationSettings;
175   }
176 
177   /** Returns the object with the settings used for calls to get. */
getSettings()178   public UnaryCallSettings<GetRouteRequest, Route> getSettings() {
179     return getSettings;
180   }
181 
182   /** Returns the object with the settings used for calls to insert. */
insertSettings()183   public UnaryCallSettings<InsertRouteRequest, Operation> insertSettings() {
184     return insertSettings;
185   }
186 
187   /** Returns the object with the settings used for calls to insert. */
insertOperationSettings()188   public OperationCallSettings<InsertRouteRequest, Operation, Operation> insertOperationSettings() {
189     return insertOperationSettings;
190   }
191 
192   /** Returns the object with the settings used for calls to list. */
listSettings()193   public PagedCallSettings<ListRoutesRequest, RouteList, ListPagedResponse> listSettings() {
194     return listSettings;
195   }
196 
createStub()197   public RoutesStub createStub() throws IOException {
198     if (getTransportChannelProvider()
199         .getTransportName()
200         .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) {
201       return HttpJsonRoutesStub.create(this);
202     }
203     throw new UnsupportedOperationException(
204         String.format(
205             "Transport not supported: %s", getTransportChannelProvider().getTransportName()));
206   }
207 
208   /** Returns a builder for the default ExecutorProvider for this service. */
defaultExecutorProviderBuilder()209   public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() {
210     return InstantiatingExecutorProvider.newBuilder();
211   }
212 
213   /** Returns the default service endpoint. */
getDefaultEndpoint()214   public static String getDefaultEndpoint() {
215     return "compute.googleapis.com:443";
216   }
217 
218   /** Returns the default mTLS service endpoint. */
getDefaultMtlsEndpoint()219   public static String getDefaultMtlsEndpoint() {
220     return "compute.mtls.googleapis.com:443";
221   }
222 
223   /** Returns the default service scopes. */
getDefaultServiceScopes()224   public static List<String> getDefaultServiceScopes() {
225     return DEFAULT_SERVICE_SCOPES;
226   }
227 
228   /** Returns a builder for the default credentials for this service. */
defaultCredentialsProviderBuilder()229   public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() {
230     return GoogleCredentialsProvider.newBuilder()
231         .setScopesToApply(DEFAULT_SERVICE_SCOPES)
232         .setUseJwtAccessWithScope(true);
233   }
234 
235   /** Returns a builder for the default ChannelProvider for this service. */
236   public static InstantiatingHttpJsonChannelProvider.Builder
defaultHttpJsonTransportProviderBuilder()237       defaultHttpJsonTransportProviderBuilder() {
238     return InstantiatingHttpJsonChannelProvider.newBuilder();
239   }
240 
defaultTransportChannelProvider()241   public static TransportChannelProvider defaultTransportChannelProvider() {
242     return defaultHttpJsonTransportProviderBuilder().build();
243   }
244 
245   @BetaApi("The surface for customizing headers is not stable yet and may change in the future.")
defaultApiClientHeaderProviderBuilder()246   public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() {
247     return ApiClientHeaderProvider.newBuilder()
248         .setGeneratedLibToken("gapic", GaxProperties.getLibraryVersion(RoutesStubSettings.class))
249         .setTransportToken(
250             GaxHttpJsonProperties.getHttpJsonTokenName(),
251             GaxHttpJsonProperties.getHttpJsonVersion());
252   }
253 
254   /** Returns a new builder for this class. */
newBuilder()255   public static Builder newBuilder() {
256     return Builder.createDefault();
257   }
258 
259   /** Returns a new builder for this class. */
newBuilder(ClientContext clientContext)260   public static Builder newBuilder(ClientContext clientContext) {
261     return new Builder(clientContext);
262   }
263 
264   /** Returns a builder containing all the values of this settings class. */
toBuilder()265   public Builder toBuilder() {
266     return new Builder(this);
267   }
268 
RoutesStubSettings(Builder settingsBuilder)269   protected RoutesStubSettings(Builder settingsBuilder) throws IOException {
270     super(settingsBuilder);
271 
272     deleteSettings = settingsBuilder.deleteSettings().build();
273     deleteOperationSettings = settingsBuilder.deleteOperationSettings().build();
274     getSettings = settingsBuilder.getSettings().build();
275     insertSettings = settingsBuilder.insertSettings().build();
276     insertOperationSettings = settingsBuilder.insertOperationSettings().build();
277     listSettings = settingsBuilder.listSettings().build();
278   }
279 
280   /** Builder for RoutesStubSettings. */
281   public static class Builder extends StubSettings.Builder<RoutesStubSettings, Builder> {
282     private final ImmutableList<UnaryCallSettings.Builder<?, ?>> unaryMethodSettingsBuilders;
283     private final UnaryCallSettings.Builder<DeleteRouteRequest, Operation> deleteSettings;
284     private final OperationCallSettings.Builder<DeleteRouteRequest, Operation, Operation>
285         deleteOperationSettings;
286     private final UnaryCallSettings.Builder<GetRouteRequest, Route> getSettings;
287     private final UnaryCallSettings.Builder<InsertRouteRequest, Operation> insertSettings;
288     private final OperationCallSettings.Builder<InsertRouteRequest, Operation, Operation>
289         insertOperationSettings;
290     private final PagedCallSettings.Builder<ListRoutesRequest, RouteList, ListPagedResponse>
291         listSettings;
292     private static final ImmutableMap<String, ImmutableSet<StatusCode.Code>>
293         RETRYABLE_CODE_DEFINITIONS;
294 
295     static {
296       ImmutableMap.Builder<String, ImmutableSet<StatusCode.Code>> definitions =
297           ImmutableMap.builder();
298       definitions.put(
299           "no_retry_1_codes", ImmutableSet.copyOf(Lists.<StatusCode.Code>newArrayList()));
300       definitions.put(
301           "retry_policy_0_codes",
302           ImmutableSet.copyOf(
303               Lists.<StatusCode.Code>newArrayList(
304                   StatusCode.Code.DEADLINE_EXCEEDED, StatusCode.Code.UNAVAILABLE)));
305       RETRYABLE_CODE_DEFINITIONS = definitions.build();
306     }
307 
308     private static final ImmutableMap<String, RetrySettings> RETRY_PARAM_DEFINITIONS;
309 
310     static {
311       ImmutableMap.Builder<String, RetrySettings> definitions = ImmutableMap.builder();
312       RetrySettings settings = null;
313       settings =
314           RetrySettings.newBuilder()
315               .setInitialRpcTimeout(Duration.ofMillis(600000L))
316               .setRpcTimeoutMultiplier(1.0)
317               .setMaxRpcTimeout(Duration.ofMillis(600000L))
318               .setTotalTimeout(Duration.ofMillis(600000L))
319               .build();
320       definitions.put("no_retry_1_params", settings);
321       settings =
322           RetrySettings.newBuilder()
323               .setInitialRetryDelay(Duration.ofMillis(100L))
324               .setRetryDelayMultiplier(1.3)
325               .setMaxRetryDelay(Duration.ofMillis(60000L))
326               .setInitialRpcTimeout(Duration.ofMillis(600000L))
327               .setRpcTimeoutMultiplier(1.0)
328               .setMaxRpcTimeout(Duration.ofMillis(600000L))
329               .setTotalTimeout(Duration.ofMillis(600000L))
330               .build();
331       definitions.put("retry_policy_0_params", settings);
332       RETRY_PARAM_DEFINITIONS = definitions.build();
333     }
334 
Builder()335     protected Builder() {
336       this(((ClientContext) null));
337     }
338 
Builder(ClientContext clientContext)339     protected Builder(ClientContext clientContext) {
340       super(clientContext);
341 
342       deleteSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
343       deleteOperationSettings = OperationCallSettings.newBuilder();
344       getSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
345       insertSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
346       insertOperationSettings = OperationCallSettings.newBuilder();
347       listSettings = PagedCallSettings.newBuilder(LIST_PAGE_STR_FACT);
348 
349       unaryMethodSettingsBuilders =
350           ImmutableList.<UnaryCallSettings.Builder<?, ?>>of(
351               deleteSettings, getSettings, insertSettings, listSettings);
352       initDefaults(this);
353     }
354 
Builder(RoutesStubSettings settings)355     protected Builder(RoutesStubSettings settings) {
356       super(settings);
357 
358       deleteSettings = settings.deleteSettings.toBuilder();
359       deleteOperationSettings = settings.deleteOperationSettings.toBuilder();
360       getSettings = settings.getSettings.toBuilder();
361       insertSettings = settings.insertSettings.toBuilder();
362       insertOperationSettings = settings.insertOperationSettings.toBuilder();
363       listSettings = settings.listSettings.toBuilder();
364 
365       unaryMethodSettingsBuilders =
366           ImmutableList.<UnaryCallSettings.Builder<?, ?>>of(
367               deleteSettings, getSettings, insertSettings, listSettings);
368     }
369 
createDefault()370     private static Builder createDefault() {
371       Builder builder = new Builder(((ClientContext) null));
372 
373       builder.setTransportChannelProvider(defaultTransportChannelProvider());
374       builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build());
375       builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build());
376       builder.setEndpoint(getDefaultEndpoint());
377       builder.setMtlsEndpoint(getDefaultMtlsEndpoint());
378       builder.setSwitchToMtlsEndpointAllowed(true);
379 
380       return initDefaults(builder);
381     }
382 
initDefaults(Builder builder)383     private static Builder initDefaults(Builder builder) {
384       builder
385           .deleteSettings()
386           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
387           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"));
388 
389       builder
390           .getSettings()
391           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
392           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
393 
394       builder
395           .insertSettings()
396           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
397           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"));
398 
399       builder
400           .listSettings()
401           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
402           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
403 
404       builder
405           .deleteOperationSettings()
406           .setInitialCallSettings(
407               UnaryCallSettings.<DeleteRouteRequest, OperationSnapshot>newUnaryCallSettingsBuilder()
408                   .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
409                   .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"))
410                   .build())
411           .setResponseTransformer(
412               ProtoOperationTransformers.ResponseTransformer.create(Operation.class))
413           .setMetadataTransformer(
414               ProtoOperationTransformers.MetadataTransformer.create(Operation.class))
415           .setPollingAlgorithm(
416               OperationTimedPollAlgorithm.create(
417                   RetrySettings.newBuilder()
418                       .setInitialRetryDelay(Duration.ofMillis(500L))
419                       .setRetryDelayMultiplier(1.5)
420                       .setMaxRetryDelay(Duration.ofMillis(20000L))
421                       .setInitialRpcTimeout(Duration.ZERO)
422                       .setRpcTimeoutMultiplier(1.0)
423                       .setMaxRpcTimeout(Duration.ZERO)
424                       .setTotalTimeout(Duration.ofMillis(600000L))
425                       .build()));
426 
427       builder
428           .insertOperationSettings()
429           .setInitialCallSettings(
430               UnaryCallSettings.<InsertRouteRequest, OperationSnapshot>newUnaryCallSettingsBuilder()
431                   .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
432                   .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"))
433                   .build())
434           .setResponseTransformer(
435               ProtoOperationTransformers.ResponseTransformer.create(Operation.class))
436           .setMetadataTransformer(
437               ProtoOperationTransformers.MetadataTransformer.create(Operation.class))
438           .setPollingAlgorithm(
439               OperationTimedPollAlgorithm.create(
440                   RetrySettings.newBuilder()
441                       .setInitialRetryDelay(Duration.ofMillis(500L))
442                       .setRetryDelayMultiplier(1.5)
443                       .setMaxRetryDelay(Duration.ofMillis(20000L))
444                       .setInitialRpcTimeout(Duration.ZERO)
445                       .setRpcTimeoutMultiplier(1.0)
446                       .setMaxRpcTimeout(Duration.ZERO)
447                       .setTotalTimeout(Duration.ofMillis(600000L))
448                       .build()));
449 
450       return builder;
451     }
452 
453     /**
454      * Applies the given settings updater function to all of the unary API methods in this service.
455      *
456      * <p>Note: This method does not support applying settings to streaming methods.
457      */
applyToAllUnaryMethods( ApiFunction<UnaryCallSettings.Builder<?, ?>, Void> settingsUpdater)458     public Builder applyToAllUnaryMethods(
459         ApiFunction<UnaryCallSettings.Builder<?, ?>, Void> settingsUpdater) {
460       super.applyToAllUnaryMethods(unaryMethodSettingsBuilders, settingsUpdater);
461       return this;
462     }
463 
unaryMethodSettingsBuilders()464     public ImmutableList<UnaryCallSettings.Builder<?, ?>> unaryMethodSettingsBuilders() {
465       return unaryMethodSettingsBuilders;
466     }
467 
468     /** Returns the builder for the settings used for calls to delete. */
deleteSettings()469     public UnaryCallSettings.Builder<DeleteRouteRequest, Operation> deleteSettings() {
470       return deleteSettings;
471     }
472 
473     /** Returns the builder for the settings used for calls to delete. */
474     @BetaApi(
475         "The surface for use by generated code is not stable yet and may change in the future.")
476     public OperationCallSettings.Builder<DeleteRouteRequest, Operation, Operation>
deleteOperationSettings()477         deleteOperationSettings() {
478       return deleteOperationSettings;
479     }
480 
481     /** Returns the builder for the settings used for calls to get. */
getSettings()482     public UnaryCallSettings.Builder<GetRouteRequest, Route> getSettings() {
483       return getSettings;
484     }
485 
486     /** Returns the builder for the settings used for calls to insert. */
insertSettings()487     public UnaryCallSettings.Builder<InsertRouteRequest, Operation> insertSettings() {
488       return insertSettings;
489     }
490 
491     /** Returns the builder for the settings used for calls to insert. */
492     @BetaApi(
493         "The surface for use by generated code is not stable yet and may change in the future.")
494     public OperationCallSettings.Builder<InsertRouteRequest, Operation, Operation>
insertOperationSettings()495         insertOperationSettings() {
496       return insertOperationSettings;
497     }
498 
499     /** Returns the builder for the settings used for calls to list. */
500     public PagedCallSettings.Builder<ListRoutesRequest, RouteList, ListPagedResponse>
listSettings()501         listSettings() {
502       return listSettings;
503     }
504 
505     @Override
build()506     public RoutesStubSettings build() throws IOException {
507       return new RoutesStubSettings(this);
508     }
509   }
510 }
511