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