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