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