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