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