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