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.BetaApi; 24 import com.google.api.core.InternalApi; 25 import com.google.api.gax.core.BackgroundResource; 26 import com.google.api.gax.core.BackgroundResourceAggregation; 27 import com.google.api.gax.httpjson.ApiMethodDescriptor; 28 import com.google.api.gax.httpjson.HttpJsonCallSettings; 29 import com.google.api.gax.httpjson.HttpJsonOperationSnapshot; 30 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory; 31 import com.google.api.gax.httpjson.ProtoMessageRequestFormatter; 32 import com.google.api.gax.httpjson.ProtoMessageResponseParser; 33 import com.google.api.gax.httpjson.ProtoRestSerializer; 34 import com.google.api.gax.rpc.ClientContext; 35 import com.google.api.gax.rpc.OperationCallable; 36 import com.google.api.gax.rpc.UnaryCallable; 37 import com.google.cloud.compute.v1.AddInstancesInstanceGroupRequest; 38 import com.google.cloud.compute.v1.AggregatedListInstanceGroupsRequest; 39 import com.google.cloud.compute.v1.DeleteInstanceGroupRequest; 40 import com.google.cloud.compute.v1.GetInstanceGroupRequest; 41 import com.google.cloud.compute.v1.InsertInstanceGroupRequest; 42 import com.google.cloud.compute.v1.InstanceGroup; 43 import com.google.cloud.compute.v1.InstanceGroupAggregatedList; 44 import com.google.cloud.compute.v1.InstanceGroupList; 45 import com.google.cloud.compute.v1.InstanceGroupsListInstances; 46 import com.google.cloud.compute.v1.ListInstanceGroupsRequest; 47 import com.google.cloud.compute.v1.ListInstancesInstanceGroupsRequest; 48 import com.google.cloud.compute.v1.Operation; 49 import com.google.cloud.compute.v1.Operation.Status; 50 import com.google.cloud.compute.v1.RemoveInstancesInstanceGroupRequest; 51 import com.google.cloud.compute.v1.SetNamedPortsInstanceGroupRequest; 52 import com.google.protobuf.TypeRegistry; 53 import java.io.IOException; 54 import java.util.ArrayList; 55 import java.util.HashMap; 56 import java.util.List; 57 import java.util.Map; 58 import java.util.concurrent.TimeUnit; 59 import javax.annotation.Generated; 60 61 // AUTO-GENERATED DOCUMENTATION AND CLASS. 62 /** 63 * REST stub implementation for the InstanceGroups service API. 64 * 65 * <p>This class is for advanced usage and reflects the underlying API directly. 66 */ 67 @Generated("by gapic-generator-java") 68 @BetaApi 69 public class HttpJsonInstanceGroupsStub extends InstanceGroupsStub { 70 private static final TypeRegistry typeRegistry = 71 TypeRegistry.newBuilder().add(Operation.getDescriptor()).build(); 72 73 private static final ApiMethodDescriptor<AddInstancesInstanceGroupRequest, Operation> 74 addInstancesMethodDescriptor = 75 ApiMethodDescriptor.<AddInstancesInstanceGroupRequest, Operation>newBuilder() 76 .setFullMethodName("google.cloud.compute.v1.InstanceGroups/AddInstances") 77 .setHttpMethod("POST") 78 .setType(ApiMethodDescriptor.MethodType.UNARY) 79 .setRequestFormatter( 80 ProtoMessageRequestFormatter.<AddInstancesInstanceGroupRequest>newBuilder() 81 .setPath( 82 "/compute/v1/projects/{project}/zones/{zone}/instanceGroups/{instanceGroup}/addInstances", 83 request -> { 84 Map<String, String> fields = new HashMap<>(); 85 ProtoRestSerializer<AddInstancesInstanceGroupRequest> serializer = 86 ProtoRestSerializer.create(); 87 serializer.putPathParam( 88 fields, "instanceGroup", request.getInstanceGroup()); 89 serializer.putPathParam(fields, "project", request.getProject()); 90 serializer.putPathParam(fields, "zone", request.getZone()); 91 return fields; 92 }) 93 .setQueryParamsExtractor( 94 request -> { 95 Map<String, List<String>> fields = new HashMap<>(); 96 ProtoRestSerializer<AddInstancesInstanceGroupRequest> serializer = 97 ProtoRestSerializer.create(); 98 if (request.hasRequestId()) { 99 serializer.putQueryParam(fields, "requestId", request.getRequestId()); 100 } 101 return fields; 102 }) 103 .setRequestBodyExtractor( 104 request -> 105 ProtoRestSerializer.create() 106 .toBody( 107 "instanceGroupsAddInstancesRequestResource", 108 request.getInstanceGroupsAddInstancesRequestResource(), 109 false)) 110 .build()) 111 .setResponseParser( 112 ProtoMessageResponseParser.<Operation>newBuilder() 113 .setDefaultInstance(Operation.getDefaultInstance()) 114 .setDefaultTypeRegistry(typeRegistry) 115 .build()) 116 .setOperationSnapshotFactory( 117 (AddInstancesInstanceGroupRequest request, Operation response) -> { 118 StringBuilder opName = new StringBuilder(response.getName()); 119 opName.append(":").append(request.getProject()); 120 opName.append(":").append(request.getZone()); 121 return HttpJsonOperationSnapshot.newBuilder() 122 .setName(opName.toString()) 123 .setMetadata(response) 124 .setDone(Status.DONE.equals(response.getStatus())) 125 .setResponse(response) 126 .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage()) 127 .build(); 128 }) 129 .build(); 130 131 private static final ApiMethodDescriptor< 132 AggregatedListInstanceGroupsRequest, InstanceGroupAggregatedList> 133 aggregatedListMethodDescriptor = 134 ApiMethodDescriptor 135 .<AggregatedListInstanceGroupsRequest, InstanceGroupAggregatedList>newBuilder() 136 .setFullMethodName("google.cloud.compute.v1.InstanceGroups/AggregatedList") 137 .setHttpMethod("GET") 138 .setType(ApiMethodDescriptor.MethodType.UNARY) 139 .setRequestFormatter( 140 ProtoMessageRequestFormatter.<AggregatedListInstanceGroupsRequest>newBuilder() 141 .setPath( 142 "/compute/v1/projects/{project}/aggregated/instanceGroups", 143 request -> { 144 Map<String, String> fields = new HashMap<>(); 145 ProtoRestSerializer<AggregatedListInstanceGroupsRequest> serializer = 146 ProtoRestSerializer.create(); 147 serializer.putPathParam(fields, "project", request.getProject()); 148 return fields; 149 }) 150 .setQueryParamsExtractor( 151 request -> { 152 Map<String, List<String>> fields = new HashMap<>(); 153 ProtoRestSerializer<AggregatedListInstanceGroupsRequest> serializer = 154 ProtoRestSerializer.create(); 155 if (request.hasFilter()) { 156 serializer.putQueryParam(fields, "filter", request.getFilter()); 157 } 158 if (request.hasIncludeAllScopes()) { 159 serializer.putQueryParam( 160 fields, "includeAllScopes", request.getIncludeAllScopes()); 161 } 162 if (request.hasMaxResults()) { 163 serializer.putQueryParam( 164 fields, "maxResults", request.getMaxResults()); 165 } 166 if (request.hasOrderBy()) { 167 serializer.putQueryParam(fields, "orderBy", request.getOrderBy()); 168 } 169 if (request.hasPageToken()) { 170 serializer.putQueryParam(fields, "pageToken", request.getPageToken()); 171 } 172 if (request.hasReturnPartialSuccess()) { 173 serializer.putQueryParam( 174 fields, 175 "returnPartialSuccess", 176 request.getReturnPartialSuccess()); 177 } 178 return fields; 179 }) 180 .setRequestBodyExtractor(request -> null) 181 .build()) 182 .setResponseParser( 183 ProtoMessageResponseParser.<InstanceGroupAggregatedList>newBuilder() 184 .setDefaultInstance(InstanceGroupAggregatedList.getDefaultInstance()) 185 .setDefaultTypeRegistry(typeRegistry) 186 .build()) 187 .build(); 188 189 private static final ApiMethodDescriptor<DeleteInstanceGroupRequest, Operation> 190 deleteMethodDescriptor = 191 ApiMethodDescriptor.<DeleteInstanceGroupRequest, Operation>newBuilder() 192 .setFullMethodName("google.cloud.compute.v1.InstanceGroups/Delete") 193 .setHttpMethod("DELETE") 194 .setType(ApiMethodDescriptor.MethodType.UNARY) 195 .setRequestFormatter( 196 ProtoMessageRequestFormatter.<DeleteInstanceGroupRequest>newBuilder() 197 .setPath( 198 "/compute/v1/projects/{project}/zones/{zone}/instanceGroups/{instanceGroup}", 199 request -> { 200 Map<String, String> fields = new HashMap<>(); 201 ProtoRestSerializer<DeleteInstanceGroupRequest> serializer = 202 ProtoRestSerializer.create(); 203 serializer.putPathParam( 204 fields, "instanceGroup", request.getInstanceGroup()); 205 serializer.putPathParam(fields, "project", request.getProject()); 206 serializer.putPathParam(fields, "zone", request.getZone()); 207 return fields; 208 }) 209 .setQueryParamsExtractor( 210 request -> { 211 Map<String, List<String>> fields = new HashMap<>(); 212 ProtoRestSerializer<DeleteInstanceGroupRequest> serializer = 213 ProtoRestSerializer.create(); 214 if (request.hasRequestId()) { 215 serializer.putQueryParam(fields, "requestId", request.getRequestId()); 216 } 217 return fields; 218 }) 219 .setRequestBodyExtractor(request -> null) 220 .build()) 221 .setResponseParser( 222 ProtoMessageResponseParser.<Operation>newBuilder() 223 .setDefaultInstance(Operation.getDefaultInstance()) 224 .setDefaultTypeRegistry(typeRegistry) 225 .build()) 226 .setOperationSnapshotFactory( 227 (DeleteInstanceGroupRequest request, Operation response) -> { 228 StringBuilder opName = new StringBuilder(response.getName()); 229 opName.append(":").append(request.getProject()); 230 opName.append(":").append(request.getZone()); 231 return HttpJsonOperationSnapshot.newBuilder() 232 .setName(opName.toString()) 233 .setMetadata(response) 234 .setDone(Status.DONE.equals(response.getStatus())) 235 .setResponse(response) 236 .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage()) 237 .build(); 238 }) 239 .build(); 240 241 private static final ApiMethodDescriptor<GetInstanceGroupRequest, InstanceGroup> 242 getMethodDescriptor = 243 ApiMethodDescriptor.<GetInstanceGroupRequest, InstanceGroup>newBuilder() 244 .setFullMethodName("google.cloud.compute.v1.InstanceGroups/Get") 245 .setHttpMethod("GET") 246 .setType(ApiMethodDescriptor.MethodType.UNARY) 247 .setRequestFormatter( 248 ProtoMessageRequestFormatter.<GetInstanceGroupRequest>newBuilder() 249 .setPath( 250 "/compute/v1/projects/{project}/zones/{zone}/instanceGroups/{instanceGroup}", 251 request -> { 252 Map<String, String> fields = new HashMap<>(); 253 ProtoRestSerializer<GetInstanceGroupRequest> serializer = 254 ProtoRestSerializer.create(); 255 serializer.putPathParam( 256 fields, "instanceGroup", request.getInstanceGroup()); 257 serializer.putPathParam(fields, "project", request.getProject()); 258 serializer.putPathParam(fields, "zone", request.getZone()); 259 return fields; 260 }) 261 .setQueryParamsExtractor( 262 request -> { 263 Map<String, List<String>> fields = new HashMap<>(); 264 ProtoRestSerializer<GetInstanceGroupRequest> serializer = 265 ProtoRestSerializer.create(); 266 return fields; 267 }) 268 .setRequestBodyExtractor(request -> null) 269 .build()) 270 .setResponseParser( 271 ProtoMessageResponseParser.<InstanceGroup>newBuilder() 272 .setDefaultInstance(InstanceGroup.getDefaultInstance()) 273 .setDefaultTypeRegistry(typeRegistry) 274 .build()) 275 .build(); 276 277 private static final ApiMethodDescriptor<InsertInstanceGroupRequest, Operation> 278 insertMethodDescriptor = 279 ApiMethodDescriptor.<InsertInstanceGroupRequest, Operation>newBuilder() 280 .setFullMethodName("google.cloud.compute.v1.InstanceGroups/Insert") 281 .setHttpMethod("POST") 282 .setType(ApiMethodDescriptor.MethodType.UNARY) 283 .setRequestFormatter( 284 ProtoMessageRequestFormatter.<InsertInstanceGroupRequest>newBuilder() 285 .setPath( 286 "/compute/v1/projects/{project}/zones/{zone}/instanceGroups", 287 request -> { 288 Map<String, String> fields = new HashMap<>(); 289 ProtoRestSerializer<InsertInstanceGroupRequest> serializer = 290 ProtoRestSerializer.create(); 291 serializer.putPathParam(fields, "project", request.getProject()); 292 serializer.putPathParam(fields, "zone", request.getZone()); 293 return fields; 294 }) 295 .setQueryParamsExtractor( 296 request -> { 297 Map<String, List<String>> fields = new HashMap<>(); 298 ProtoRestSerializer<InsertInstanceGroupRequest> serializer = 299 ProtoRestSerializer.create(); 300 if (request.hasRequestId()) { 301 serializer.putQueryParam(fields, "requestId", request.getRequestId()); 302 } 303 return fields; 304 }) 305 .setRequestBodyExtractor( 306 request -> 307 ProtoRestSerializer.create() 308 .toBody( 309 "instanceGroupResource", 310 request.getInstanceGroupResource(), 311 false)) 312 .build()) 313 .setResponseParser( 314 ProtoMessageResponseParser.<Operation>newBuilder() 315 .setDefaultInstance(Operation.getDefaultInstance()) 316 .setDefaultTypeRegistry(typeRegistry) 317 .build()) 318 .setOperationSnapshotFactory( 319 (InsertInstanceGroupRequest request, Operation response) -> { 320 StringBuilder opName = new StringBuilder(response.getName()); 321 opName.append(":").append(request.getProject()); 322 opName.append(":").append(request.getZone()); 323 return HttpJsonOperationSnapshot.newBuilder() 324 .setName(opName.toString()) 325 .setMetadata(response) 326 .setDone(Status.DONE.equals(response.getStatus())) 327 .setResponse(response) 328 .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage()) 329 .build(); 330 }) 331 .build(); 332 333 private static final ApiMethodDescriptor<ListInstanceGroupsRequest, InstanceGroupList> 334 listMethodDescriptor = 335 ApiMethodDescriptor.<ListInstanceGroupsRequest, InstanceGroupList>newBuilder() 336 .setFullMethodName("google.cloud.compute.v1.InstanceGroups/List") 337 .setHttpMethod("GET") 338 .setType(ApiMethodDescriptor.MethodType.UNARY) 339 .setRequestFormatter( 340 ProtoMessageRequestFormatter.<ListInstanceGroupsRequest>newBuilder() 341 .setPath( 342 "/compute/v1/projects/{project}/zones/{zone}/instanceGroups", 343 request -> { 344 Map<String, String> fields = new HashMap<>(); 345 ProtoRestSerializer<ListInstanceGroupsRequest> serializer = 346 ProtoRestSerializer.create(); 347 serializer.putPathParam(fields, "project", request.getProject()); 348 serializer.putPathParam(fields, "zone", request.getZone()); 349 return fields; 350 }) 351 .setQueryParamsExtractor( 352 request -> { 353 Map<String, List<String>> fields = new HashMap<>(); 354 ProtoRestSerializer<ListInstanceGroupsRequest> serializer = 355 ProtoRestSerializer.create(); 356 if (request.hasFilter()) { 357 serializer.putQueryParam(fields, "filter", request.getFilter()); 358 } 359 if (request.hasMaxResults()) { 360 serializer.putQueryParam( 361 fields, "maxResults", request.getMaxResults()); 362 } 363 if (request.hasOrderBy()) { 364 serializer.putQueryParam(fields, "orderBy", request.getOrderBy()); 365 } 366 if (request.hasPageToken()) { 367 serializer.putQueryParam(fields, "pageToken", request.getPageToken()); 368 } 369 if (request.hasReturnPartialSuccess()) { 370 serializer.putQueryParam( 371 fields, 372 "returnPartialSuccess", 373 request.getReturnPartialSuccess()); 374 } 375 return fields; 376 }) 377 .setRequestBodyExtractor(request -> null) 378 .build()) 379 .setResponseParser( 380 ProtoMessageResponseParser.<InstanceGroupList>newBuilder() 381 .setDefaultInstance(InstanceGroupList.getDefaultInstance()) 382 .setDefaultTypeRegistry(typeRegistry) 383 .build()) 384 .build(); 385 386 private static final ApiMethodDescriptor< 387 ListInstancesInstanceGroupsRequest, InstanceGroupsListInstances> 388 listInstancesMethodDescriptor = 389 ApiMethodDescriptor 390 .<ListInstancesInstanceGroupsRequest, InstanceGroupsListInstances>newBuilder() 391 .setFullMethodName("google.cloud.compute.v1.InstanceGroups/ListInstances") 392 .setHttpMethod("POST") 393 .setType(ApiMethodDescriptor.MethodType.UNARY) 394 .setRequestFormatter( 395 ProtoMessageRequestFormatter.<ListInstancesInstanceGroupsRequest>newBuilder() 396 .setPath( 397 "/compute/v1/projects/{project}/zones/{zone}/instanceGroups/{instanceGroup}/listInstances", 398 request -> { 399 Map<String, String> fields = new HashMap<>(); 400 ProtoRestSerializer<ListInstancesInstanceGroupsRequest> serializer = 401 ProtoRestSerializer.create(); 402 serializer.putPathParam( 403 fields, "instanceGroup", request.getInstanceGroup()); 404 serializer.putPathParam(fields, "project", request.getProject()); 405 serializer.putPathParam(fields, "zone", request.getZone()); 406 return fields; 407 }) 408 .setQueryParamsExtractor( 409 request -> { 410 Map<String, List<String>> fields = new HashMap<>(); 411 ProtoRestSerializer<ListInstancesInstanceGroupsRequest> serializer = 412 ProtoRestSerializer.create(); 413 if (request.hasFilter()) { 414 serializer.putQueryParam(fields, "filter", request.getFilter()); 415 } 416 if (request.hasMaxResults()) { 417 serializer.putQueryParam( 418 fields, "maxResults", request.getMaxResults()); 419 } 420 if (request.hasOrderBy()) { 421 serializer.putQueryParam(fields, "orderBy", request.getOrderBy()); 422 } 423 if (request.hasPageToken()) { 424 serializer.putQueryParam(fields, "pageToken", request.getPageToken()); 425 } 426 if (request.hasReturnPartialSuccess()) { 427 serializer.putQueryParam( 428 fields, 429 "returnPartialSuccess", 430 request.getReturnPartialSuccess()); 431 } 432 return fields; 433 }) 434 .setRequestBodyExtractor( 435 request -> 436 ProtoRestSerializer.create() 437 .toBody( 438 "instanceGroupsListInstancesRequestResource", 439 request.getInstanceGroupsListInstancesRequestResource(), 440 false)) 441 .build()) 442 .setResponseParser( 443 ProtoMessageResponseParser.<InstanceGroupsListInstances>newBuilder() 444 .setDefaultInstance(InstanceGroupsListInstances.getDefaultInstance()) 445 .setDefaultTypeRegistry(typeRegistry) 446 .build()) 447 .build(); 448 449 private static final ApiMethodDescriptor<RemoveInstancesInstanceGroupRequest, Operation> 450 removeInstancesMethodDescriptor = 451 ApiMethodDescriptor.<RemoveInstancesInstanceGroupRequest, Operation>newBuilder() 452 .setFullMethodName("google.cloud.compute.v1.InstanceGroups/RemoveInstances") 453 .setHttpMethod("POST") 454 .setType(ApiMethodDescriptor.MethodType.UNARY) 455 .setRequestFormatter( 456 ProtoMessageRequestFormatter.<RemoveInstancesInstanceGroupRequest>newBuilder() 457 .setPath( 458 "/compute/v1/projects/{project}/zones/{zone}/instanceGroups/{instanceGroup}/removeInstances", 459 request -> { 460 Map<String, String> fields = new HashMap<>(); 461 ProtoRestSerializer<RemoveInstancesInstanceGroupRequest> serializer = 462 ProtoRestSerializer.create(); 463 serializer.putPathParam( 464 fields, "instanceGroup", request.getInstanceGroup()); 465 serializer.putPathParam(fields, "project", request.getProject()); 466 serializer.putPathParam(fields, "zone", request.getZone()); 467 return fields; 468 }) 469 .setQueryParamsExtractor( 470 request -> { 471 Map<String, List<String>> fields = new HashMap<>(); 472 ProtoRestSerializer<RemoveInstancesInstanceGroupRequest> serializer = 473 ProtoRestSerializer.create(); 474 if (request.hasRequestId()) { 475 serializer.putQueryParam(fields, "requestId", request.getRequestId()); 476 } 477 return fields; 478 }) 479 .setRequestBodyExtractor( 480 request -> 481 ProtoRestSerializer.create() 482 .toBody( 483 "instanceGroupsRemoveInstancesRequestResource", 484 request.getInstanceGroupsRemoveInstancesRequestResource(), 485 false)) 486 .build()) 487 .setResponseParser( 488 ProtoMessageResponseParser.<Operation>newBuilder() 489 .setDefaultInstance(Operation.getDefaultInstance()) 490 .setDefaultTypeRegistry(typeRegistry) 491 .build()) 492 .setOperationSnapshotFactory( 493 (RemoveInstancesInstanceGroupRequest request, Operation response) -> { 494 StringBuilder opName = new StringBuilder(response.getName()); 495 opName.append(":").append(request.getProject()); 496 opName.append(":").append(request.getZone()); 497 return HttpJsonOperationSnapshot.newBuilder() 498 .setName(opName.toString()) 499 .setMetadata(response) 500 .setDone(Status.DONE.equals(response.getStatus())) 501 .setResponse(response) 502 .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage()) 503 .build(); 504 }) 505 .build(); 506 507 private static final ApiMethodDescriptor<SetNamedPortsInstanceGroupRequest, Operation> 508 setNamedPortsMethodDescriptor = 509 ApiMethodDescriptor.<SetNamedPortsInstanceGroupRequest, Operation>newBuilder() 510 .setFullMethodName("google.cloud.compute.v1.InstanceGroups/SetNamedPorts") 511 .setHttpMethod("POST") 512 .setType(ApiMethodDescriptor.MethodType.UNARY) 513 .setRequestFormatter( 514 ProtoMessageRequestFormatter.<SetNamedPortsInstanceGroupRequest>newBuilder() 515 .setPath( 516 "/compute/v1/projects/{project}/zones/{zone}/instanceGroups/{instanceGroup}/setNamedPorts", 517 request -> { 518 Map<String, String> fields = new HashMap<>(); 519 ProtoRestSerializer<SetNamedPortsInstanceGroupRequest> serializer = 520 ProtoRestSerializer.create(); 521 serializer.putPathParam( 522 fields, "instanceGroup", request.getInstanceGroup()); 523 serializer.putPathParam(fields, "project", request.getProject()); 524 serializer.putPathParam(fields, "zone", request.getZone()); 525 return fields; 526 }) 527 .setQueryParamsExtractor( 528 request -> { 529 Map<String, List<String>> fields = new HashMap<>(); 530 ProtoRestSerializer<SetNamedPortsInstanceGroupRequest> serializer = 531 ProtoRestSerializer.create(); 532 if (request.hasRequestId()) { 533 serializer.putQueryParam(fields, "requestId", request.getRequestId()); 534 } 535 return fields; 536 }) 537 .setRequestBodyExtractor( 538 request -> 539 ProtoRestSerializer.create() 540 .toBody( 541 "instanceGroupsSetNamedPortsRequestResource", 542 request.getInstanceGroupsSetNamedPortsRequestResource(), 543 false)) 544 .build()) 545 .setResponseParser( 546 ProtoMessageResponseParser.<Operation>newBuilder() 547 .setDefaultInstance(Operation.getDefaultInstance()) 548 .setDefaultTypeRegistry(typeRegistry) 549 .build()) 550 .setOperationSnapshotFactory( 551 (SetNamedPortsInstanceGroupRequest request, Operation response) -> { 552 StringBuilder opName = new StringBuilder(response.getName()); 553 opName.append(":").append(request.getProject()); 554 opName.append(":").append(request.getZone()); 555 return HttpJsonOperationSnapshot.newBuilder() 556 .setName(opName.toString()) 557 .setMetadata(response) 558 .setDone(Status.DONE.equals(response.getStatus())) 559 .setResponse(response) 560 .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage()) 561 .build(); 562 }) 563 .build(); 564 565 private final UnaryCallable<AddInstancesInstanceGroupRequest, Operation> addInstancesCallable; 566 private final OperationCallable<AddInstancesInstanceGroupRequest, Operation, Operation> 567 addInstancesOperationCallable; 568 private final UnaryCallable<AggregatedListInstanceGroupsRequest, InstanceGroupAggregatedList> 569 aggregatedListCallable; 570 private final UnaryCallable<AggregatedListInstanceGroupsRequest, AggregatedListPagedResponse> 571 aggregatedListPagedCallable; 572 private final UnaryCallable<DeleteInstanceGroupRequest, Operation> deleteCallable; 573 private final OperationCallable<DeleteInstanceGroupRequest, Operation, Operation> 574 deleteOperationCallable; 575 private final UnaryCallable<GetInstanceGroupRequest, InstanceGroup> getCallable; 576 private final UnaryCallable<InsertInstanceGroupRequest, Operation> insertCallable; 577 private final OperationCallable<InsertInstanceGroupRequest, Operation, Operation> 578 insertOperationCallable; 579 private final UnaryCallable<ListInstanceGroupsRequest, InstanceGroupList> listCallable; 580 private final UnaryCallable<ListInstanceGroupsRequest, ListPagedResponse> listPagedCallable; 581 private final UnaryCallable<ListInstancesInstanceGroupsRequest, InstanceGroupsListInstances> 582 listInstancesCallable; 583 private final UnaryCallable<ListInstancesInstanceGroupsRequest, ListInstancesPagedResponse> 584 listInstancesPagedCallable; 585 private final UnaryCallable<RemoveInstancesInstanceGroupRequest, Operation> 586 removeInstancesCallable; 587 private final OperationCallable<RemoveInstancesInstanceGroupRequest, Operation, Operation> 588 removeInstancesOperationCallable; 589 private final UnaryCallable<SetNamedPortsInstanceGroupRequest, Operation> setNamedPortsCallable; 590 private final OperationCallable<SetNamedPortsInstanceGroupRequest, Operation, Operation> 591 setNamedPortsOperationCallable; 592 593 private final BackgroundResource backgroundResources; 594 private final HttpJsonZoneOperationsStub httpJsonOperationsStub; 595 private final HttpJsonStubCallableFactory callableFactory; 596 create(InstanceGroupsStubSettings settings)597 public static final HttpJsonInstanceGroupsStub create(InstanceGroupsStubSettings settings) 598 throws IOException { 599 return new HttpJsonInstanceGroupsStub(settings, ClientContext.create(settings)); 600 } 601 create(ClientContext clientContext)602 public static final HttpJsonInstanceGroupsStub create(ClientContext clientContext) 603 throws IOException { 604 return new HttpJsonInstanceGroupsStub( 605 InstanceGroupsStubSettings.newBuilder().build(), clientContext); 606 } 607 create( ClientContext clientContext, HttpJsonStubCallableFactory callableFactory)608 public static final HttpJsonInstanceGroupsStub create( 609 ClientContext clientContext, HttpJsonStubCallableFactory callableFactory) throws IOException { 610 return new HttpJsonInstanceGroupsStub( 611 InstanceGroupsStubSettings.newBuilder().build(), clientContext, callableFactory); 612 } 613 614 /** 615 * Constructs an instance of HttpJsonInstanceGroupsStub, using the given settings. This is 616 * protected so that it is easy to make a subclass, but otherwise, the static factory methods 617 * should be preferred. 618 */ HttpJsonInstanceGroupsStub( InstanceGroupsStubSettings settings, ClientContext clientContext)619 protected HttpJsonInstanceGroupsStub( 620 InstanceGroupsStubSettings settings, ClientContext clientContext) throws IOException { 621 this(settings, clientContext, new HttpJsonInstanceGroupsCallableFactory()); 622 } 623 624 /** 625 * Constructs an instance of HttpJsonInstanceGroupsStub, using the given settings. This is 626 * protected so that it is easy to make a subclass, but otherwise, the static factory methods 627 * should be preferred. 628 */ HttpJsonInstanceGroupsStub( InstanceGroupsStubSettings settings, ClientContext clientContext, HttpJsonStubCallableFactory callableFactory)629 protected HttpJsonInstanceGroupsStub( 630 InstanceGroupsStubSettings settings, 631 ClientContext clientContext, 632 HttpJsonStubCallableFactory callableFactory) 633 throws IOException { 634 this.callableFactory = callableFactory; 635 this.httpJsonOperationsStub = HttpJsonZoneOperationsStub.create(clientContext, callableFactory); 636 637 HttpJsonCallSettings<AddInstancesInstanceGroupRequest, Operation> 638 addInstancesTransportSettings = 639 HttpJsonCallSettings.<AddInstancesInstanceGroupRequest, Operation>newBuilder() 640 .setMethodDescriptor(addInstancesMethodDescriptor) 641 .setTypeRegistry(typeRegistry) 642 .build(); 643 HttpJsonCallSettings<AggregatedListInstanceGroupsRequest, InstanceGroupAggregatedList> 644 aggregatedListTransportSettings = 645 HttpJsonCallSettings 646 .<AggregatedListInstanceGroupsRequest, InstanceGroupAggregatedList>newBuilder() 647 .setMethodDescriptor(aggregatedListMethodDescriptor) 648 .setTypeRegistry(typeRegistry) 649 .build(); 650 HttpJsonCallSettings<DeleteInstanceGroupRequest, Operation> deleteTransportSettings = 651 HttpJsonCallSettings.<DeleteInstanceGroupRequest, Operation>newBuilder() 652 .setMethodDescriptor(deleteMethodDescriptor) 653 .setTypeRegistry(typeRegistry) 654 .build(); 655 HttpJsonCallSettings<GetInstanceGroupRequest, InstanceGroup> getTransportSettings = 656 HttpJsonCallSettings.<GetInstanceGroupRequest, InstanceGroup>newBuilder() 657 .setMethodDescriptor(getMethodDescriptor) 658 .setTypeRegistry(typeRegistry) 659 .build(); 660 HttpJsonCallSettings<InsertInstanceGroupRequest, Operation> insertTransportSettings = 661 HttpJsonCallSettings.<InsertInstanceGroupRequest, Operation>newBuilder() 662 .setMethodDescriptor(insertMethodDescriptor) 663 .setTypeRegistry(typeRegistry) 664 .build(); 665 HttpJsonCallSettings<ListInstanceGroupsRequest, InstanceGroupList> listTransportSettings = 666 HttpJsonCallSettings.<ListInstanceGroupsRequest, InstanceGroupList>newBuilder() 667 .setMethodDescriptor(listMethodDescriptor) 668 .setTypeRegistry(typeRegistry) 669 .build(); 670 HttpJsonCallSettings<ListInstancesInstanceGroupsRequest, InstanceGroupsListInstances> 671 listInstancesTransportSettings = 672 HttpJsonCallSettings 673 .<ListInstancesInstanceGroupsRequest, InstanceGroupsListInstances>newBuilder() 674 .setMethodDescriptor(listInstancesMethodDescriptor) 675 .setTypeRegistry(typeRegistry) 676 .build(); 677 HttpJsonCallSettings<RemoveInstancesInstanceGroupRequest, Operation> 678 removeInstancesTransportSettings = 679 HttpJsonCallSettings.<RemoveInstancesInstanceGroupRequest, Operation>newBuilder() 680 .setMethodDescriptor(removeInstancesMethodDescriptor) 681 .setTypeRegistry(typeRegistry) 682 .build(); 683 HttpJsonCallSettings<SetNamedPortsInstanceGroupRequest, Operation> 684 setNamedPortsTransportSettings = 685 HttpJsonCallSettings.<SetNamedPortsInstanceGroupRequest, Operation>newBuilder() 686 .setMethodDescriptor(setNamedPortsMethodDescriptor) 687 .setTypeRegistry(typeRegistry) 688 .build(); 689 690 this.addInstancesCallable = 691 callableFactory.createUnaryCallable( 692 addInstancesTransportSettings, settings.addInstancesSettings(), clientContext); 693 this.addInstancesOperationCallable = 694 callableFactory.createOperationCallable( 695 addInstancesTransportSettings, 696 settings.addInstancesOperationSettings(), 697 clientContext, 698 httpJsonOperationsStub); 699 this.aggregatedListCallable = 700 callableFactory.createUnaryCallable( 701 aggregatedListTransportSettings, settings.aggregatedListSettings(), clientContext); 702 this.aggregatedListPagedCallable = 703 callableFactory.createPagedCallable( 704 aggregatedListTransportSettings, settings.aggregatedListSettings(), clientContext); 705 this.deleteCallable = 706 callableFactory.createUnaryCallable( 707 deleteTransportSettings, settings.deleteSettings(), clientContext); 708 this.deleteOperationCallable = 709 callableFactory.createOperationCallable( 710 deleteTransportSettings, 711 settings.deleteOperationSettings(), 712 clientContext, 713 httpJsonOperationsStub); 714 this.getCallable = 715 callableFactory.createUnaryCallable( 716 getTransportSettings, settings.getSettings(), clientContext); 717 this.insertCallable = 718 callableFactory.createUnaryCallable( 719 insertTransportSettings, settings.insertSettings(), clientContext); 720 this.insertOperationCallable = 721 callableFactory.createOperationCallable( 722 insertTransportSettings, 723 settings.insertOperationSettings(), 724 clientContext, 725 httpJsonOperationsStub); 726 this.listCallable = 727 callableFactory.createUnaryCallable( 728 listTransportSettings, settings.listSettings(), clientContext); 729 this.listPagedCallable = 730 callableFactory.createPagedCallable( 731 listTransportSettings, settings.listSettings(), clientContext); 732 this.listInstancesCallable = 733 callableFactory.createUnaryCallable( 734 listInstancesTransportSettings, settings.listInstancesSettings(), clientContext); 735 this.listInstancesPagedCallable = 736 callableFactory.createPagedCallable( 737 listInstancesTransportSettings, settings.listInstancesSettings(), clientContext); 738 this.removeInstancesCallable = 739 callableFactory.createUnaryCallable( 740 removeInstancesTransportSettings, settings.removeInstancesSettings(), clientContext); 741 this.removeInstancesOperationCallable = 742 callableFactory.createOperationCallable( 743 removeInstancesTransportSettings, 744 settings.removeInstancesOperationSettings(), 745 clientContext, 746 httpJsonOperationsStub); 747 this.setNamedPortsCallable = 748 callableFactory.createUnaryCallable( 749 setNamedPortsTransportSettings, settings.setNamedPortsSettings(), clientContext); 750 this.setNamedPortsOperationCallable = 751 callableFactory.createOperationCallable( 752 setNamedPortsTransportSettings, 753 settings.setNamedPortsOperationSettings(), 754 clientContext, 755 httpJsonOperationsStub); 756 757 this.backgroundResources = 758 new BackgroundResourceAggregation(clientContext.getBackgroundResources()); 759 } 760 761 @InternalApi getMethodDescriptors()762 public static List<ApiMethodDescriptor> getMethodDescriptors() { 763 List<ApiMethodDescriptor> methodDescriptors = new ArrayList<>(); 764 methodDescriptors.add(addInstancesMethodDescriptor); 765 methodDescriptors.add(aggregatedListMethodDescriptor); 766 methodDescriptors.add(deleteMethodDescriptor); 767 methodDescriptors.add(getMethodDescriptor); 768 methodDescriptors.add(insertMethodDescriptor); 769 methodDescriptors.add(listMethodDescriptor); 770 methodDescriptors.add(listInstancesMethodDescriptor); 771 methodDescriptors.add(removeInstancesMethodDescriptor); 772 methodDescriptors.add(setNamedPortsMethodDescriptor); 773 return methodDescriptors; 774 } 775 776 @Override addInstancesCallable()777 public UnaryCallable<AddInstancesInstanceGroupRequest, Operation> addInstancesCallable() { 778 return addInstancesCallable; 779 } 780 781 @Override 782 public OperationCallable<AddInstancesInstanceGroupRequest, Operation, Operation> addInstancesOperationCallable()783 addInstancesOperationCallable() { 784 return addInstancesOperationCallable; 785 } 786 787 @Override 788 public UnaryCallable<AggregatedListInstanceGroupsRequest, InstanceGroupAggregatedList> aggregatedListCallable()789 aggregatedListCallable() { 790 return aggregatedListCallable; 791 } 792 793 @Override 794 public UnaryCallable<AggregatedListInstanceGroupsRequest, AggregatedListPagedResponse> aggregatedListPagedCallable()795 aggregatedListPagedCallable() { 796 return aggregatedListPagedCallable; 797 } 798 799 @Override deleteCallable()800 public UnaryCallable<DeleteInstanceGroupRequest, Operation> deleteCallable() { 801 return deleteCallable; 802 } 803 804 @Override 805 public OperationCallable<DeleteInstanceGroupRequest, Operation, Operation> deleteOperationCallable()806 deleteOperationCallable() { 807 return deleteOperationCallable; 808 } 809 810 @Override getCallable()811 public UnaryCallable<GetInstanceGroupRequest, InstanceGroup> getCallable() { 812 return getCallable; 813 } 814 815 @Override insertCallable()816 public UnaryCallable<InsertInstanceGroupRequest, Operation> insertCallable() { 817 return insertCallable; 818 } 819 820 @Override 821 public OperationCallable<InsertInstanceGroupRequest, Operation, Operation> insertOperationCallable()822 insertOperationCallable() { 823 return insertOperationCallable; 824 } 825 826 @Override listCallable()827 public UnaryCallable<ListInstanceGroupsRequest, InstanceGroupList> listCallable() { 828 return listCallable; 829 } 830 831 @Override listPagedCallable()832 public UnaryCallable<ListInstanceGroupsRequest, ListPagedResponse> listPagedCallable() { 833 return listPagedCallable; 834 } 835 836 @Override 837 public UnaryCallable<ListInstancesInstanceGroupsRequest, InstanceGroupsListInstances> listInstancesCallable()838 listInstancesCallable() { 839 return listInstancesCallable; 840 } 841 842 @Override 843 public UnaryCallable<ListInstancesInstanceGroupsRequest, ListInstancesPagedResponse> listInstancesPagedCallable()844 listInstancesPagedCallable() { 845 return listInstancesPagedCallable; 846 } 847 848 @Override removeInstancesCallable()849 public UnaryCallable<RemoveInstancesInstanceGroupRequest, Operation> removeInstancesCallable() { 850 return removeInstancesCallable; 851 } 852 853 @Override 854 public OperationCallable<RemoveInstancesInstanceGroupRequest, Operation, Operation> removeInstancesOperationCallable()855 removeInstancesOperationCallable() { 856 return removeInstancesOperationCallable; 857 } 858 859 @Override setNamedPortsCallable()860 public UnaryCallable<SetNamedPortsInstanceGroupRequest, Operation> setNamedPortsCallable() { 861 return setNamedPortsCallable; 862 } 863 864 @Override 865 public OperationCallable<SetNamedPortsInstanceGroupRequest, Operation, Operation> setNamedPortsOperationCallable()866 setNamedPortsOperationCallable() { 867 return setNamedPortsOperationCallable; 868 } 869 870 @Override close()871 public final void close() { 872 try { 873 backgroundResources.close(); 874 } catch (RuntimeException e) { 875 throw e; 876 } catch (Exception e) { 877 throw new IllegalStateException("Failed to close resource", e); 878 } 879 } 880 881 @Override shutdown()882 public void shutdown() { 883 backgroundResources.shutdown(); 884 } 885 886 @Override isShutdown()887 public boolean isShutdown() { 888 return backgroundResources.isShutdown(); 889 } 890 891 @Override isTerminated()892 public boolean isTerminated() { 893 return backgroundResources.isTerminated(); 894 } 895 896 @Override shutdownNow()897 public void shutdownNow() { 898 backgroundResources.shutdownNow(); 899 } 900 901 @Override awaitTermination(long duration, TimeUnit unit)902 public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException { 903 return backgroundResources.awaitTermination(duration, unit); 904 } 905 } 906