• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2022 Google LLC
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      https://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.google.cloud.compute.v1.stub;
18 
19 import static com.google.cloud.compute.v1.TargetPoolsClient.AggregatedListPagedResponse;
20 import static com.google.cloud.compute.v1.TargetPoolsClient.ListPagedResponse;
21 
22 import com.google.api.core.BetaApi;
23 import com.google.api.core.InternalApi;
24 import com.google.api.gax.core.BackgroundResource;
25 import com.google.api.gax.core.BackgroundResourceAggregation;
26 import com.google.api.gax.httpjson.ApiMethodDescriptor;
27 import com.google.api.gax.httpjson.HttpJsonCallSettings;
28 import com.google.api.gax.httpjson.HttpJsonOperationSnapshot;
29 import com.google.api.gax.httpjson.HttpJsonStubCallableFactory;
30 import com.google.api.gax.httpjson.ProtoMessageRequestFormatter;
31 import com.google.api.gax.httpjson.ProtoMessageResponseParser;
32 import com.google.api.gax.httpjson.ProtoRestSerializer;
33 import com.google.api.gax.rpc.ClientContext;
34 import com.google.api.gax.rpc.OperationCallable;
35 import com.google.api.gax.rpc.UnaryCallable;
36 import com.google.cloud.compute.v1.AddHealthCheckTargetPoolRequest;
37 import com.google.cloud.compute.v1.AddInstanceTargetPoolRequest;
38 import com.google.cloud.compute.v1.AggregatedListTargetPoolsRequest;
39 import com.google.cloud.compute.v1.DeleteTargetPoolRequest;
40 import com.google.cloud.compute.v1.GetHealthTargetPoolRequest;
41 import com.google.cloud.compute.v1.GetTargetPoolRequest;
42 import com.google.cloud.compute.v1.InsertTargetPoolRequest;
43 import com.google.cloud.compute.v1.ListTargetPoolsRequest;
44 import com.google.cloud.compute.v1.Operation;
45 import com.google.cloud.compute.v1.Operation.Status;
46 import com.google.cloud.compute.v1.RemoveHealthCheckTargetPoolRequest;
47 import com.google.cloud.compute.v1.RemoveInstanceTargetPoolRequest;
48 import com.google.cloud.compute.v1.SetBackupTargetPoolRequest;
49 import com.google.cloud.compute.v1.TargetPool;
50 import com.google.cloud.compute.v1.TargetPoolAggregatedList;
51 import com.google.cloud.compute.v1.TargetPoolInstanceHealth;
52 import com.google.cloud.compute.v1.TargetPoolList;
53 import com.google.protobuf.TypeRegistry;
54 import java.io.IOException;
55 import java.util.ArrayList;
56 import java.util.HashMap;
57 import java.util.List;
58 import java.util.Map;
59 import java.util.concurrent.TimeUnit;
60 import javax.annotation.Generated;
61 
62 // AUTO-GENERATED DOCUMENTATION AND CLASS.
63 /**
64  * REST stub implementation for the TargetPools service API.
65  *
66  * <p>This class is for advanced usage and reflects the underlying API directly.
67  */
68 @Generated("by gapic-generator-java")
69 @BetaApi
70 public class HttpJsonTargetPoolsStub extends TargetPoolsStub {
71   private static final TypeRegistry typeRegistry =
72       TypeRegistry.newBuilder().add(Operation.getDescriptor()).build();
73 
74   private static final ApiMethodDescriptor<AddHealthCheckTargetPoolRequest, Operation>
75       addHealthCheckMethodDescriptor =
76           ApiMethodDescriptor.<AddHealthCheckTargetPoolRequest, Operation>newBuilder()
77               .setFullMethodName("google.cloud.compute.v1.TargetPools/AddHealthCheck")
78               .setHttpMethod("POST")
79               .setType(ApiMethodDescriptor.MethodType.UNARY)
80               .setRequestFormatter(
81                   ProtoMessageRequestFormatter.<AddHealthCheckTargetPoolRequest>newBuilder()
82                       .setPath(
83                           "/compute/v1/projects/{project}/regions/{region}/targetPools/{targetPool}/addHealthCheck",
84                           request -> {
85                             Map<String, String> fields = new HashMap<>();
86                             ProtoRestSerializer<AddHealthCheckTargetPoolRequest> serializer =
87                                 ProtoRestSerializer.create();
88                             serializer.putPathParam(fields, "project", request.getProject());
89                             serializer.putPathParam(fields, "region", request.getRegion());
90                             serializer.putPathParam(fields, "targetPool", request.getTargetPool());
91                             return fields;
92                           })
93                       .setQueryParamsExtractor(
94                           request -> {
95                             Map<String, List<String>> fields = new HashMap<>();
96                             ProtoRestSerializer<AddHealthCheckTargetPoolRequest> 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                                       "targetPoolsAddHealthCheckRequestResource",
108                                       request.getTargetPoolsAddHealthCheckRequestResource(),
109                                       false))
110                       .build())
111               .setResponseParser(
112                   ProtoMessageResponseParser.<Operation>newBuilder()
113                       .setDefaultInstance(Operation.getDefaultInstance())
114                       .setDefaultTypeRegistry(typeRegistry)
115                       .build())
116               .setOperationSnapshotFactory(
117                   (AddHealthCheckTargetPoolRequest request, Operation response) -> {
118                     StringBuilder opName = new StringBuilder(response.getName());
119                     opName.append(":").append(request.getProject());
120                     opName.append(":").append(request.getRegion());
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<AddInstanceTargetPoolRequest, Operation>
132       addInstanceMethodDescriptor =
133           ApiMethodDescriptor.<AddInstanceTargetPoolRequest, Operation>newBuilder()
134               .setFullMethodName("google.cloud.compute.v1.TargetPools/AddInstance")
135               .setHttpMethod("POST")
136               .setType(ApiMethodDescriptor.MethodType.UNARY)
137               .setRequestFormatter(
138                   ProtoMessageRequestFormatter.<AddInstanceTargetPoolRequest>newBuilder()
139                       .setPath(
140                           "/compute/v1/projects/{project}/regions/{region}/targetPools/{targetPool}/addInstance",
141                           request -> {
142                             Map<String, String> fields = new HashMap<>();
143                             ProtoRestSerializer<AddInstanceTargetPoolRequest> serializer =
144                                 ProtoRestSerializer.create();
145                             serializer.putPathParam(fields, "project", request.getProject());
146                             serializer.putPathParam(fields, "region", request.getRegion());
147                             serializer.putPathParam(fields, "targetPool", request.getTargetPool());
148                             return fields;
149                           })
150                       .setQueryParamsExtractor(
151                           request -> {
152                             Map<String, List<String>> fields = new HashMap<>();
153                             ProtoRestSerializer<AddInstanceTargetPoolRequest> serializer =
154                                 ProtoRestSerializer.create();
155                             if (request.hasRequestId()) {
156                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
157                             }
158                             return fields;
159                           })
160                       .setRequestBodyExtractor(
161                           request ->
162                               ProtoRestSerializer.create()
163                                   .toBody(
164                                       "targetPoolsAddInstanceRequestResource",
165                                       request.getTargetPoolsAddInstanceRequestResource(),
166                                       false))
167                       .build())
168               .setResponseParser(
169                   ProtoMessageResponseParser.<Operation>newBuilder()
170                       .setDefaultInstance(Operation.getDefaultInstance())
171                       .setDefaultTypeRegistry(typeRegistry)
172                       .build())
173               .setOperationSnapshotFactory(
174                   (AddInstanceTargetPoolRequest request, Operation response) -> {
175                     StringBuilder opName = new StringBuilder(response.getName());
176                     opName.append(":").append(request.getProject());
177                     opName.append(":").append(request.getRegion());
178                     return HttpJsonOperationSnapshot.newBuilder()
179                         .setName(opName.toString())
180                         .setMetadata(response)
181                         .setDone(Status.DONE.equals(response.getStatus()))
182                         .setResponse(response)
183                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
184                         .build();
185                   })
186               .build();
187 
188   private static final ApiMethodDescriptor<
189           AggregatedListTargetPoolsRequest, TargetPoolAggregatedList>
190       aggregatedListMethodDescriptor =
191           ApiMethodDescriptor
192               .<AggregatedListTargetPoolsRequest, TargetPoolAggregatedList>newBuilder()
193               .setFullMethodName("google.cloud.compute.v1.TargetPools/AggregatedList")
194               .setHttpMethod("GET")
195               .setType(ApiMethodDescriptor.MethodType.UNARY)
196               .setRequestFormatter(
197                   ProtoMessageRequestFormatter.<AggregatedListTargetPoolsRequest>newBuilder()
198                       .setPath(
199                           "/compute/v1/projects/{project}/aggregated/targetPools",
200                           request -> {
201                             Map<String, String> fields = new HashMap<>();
202                             ProtoRestSerializer<AggregatedListTargetPoolsRequest> serializer =
203                                 ProtoRestSerializer.create();
204                             serializer.putPathParam(fields, "project", request.getProject());
205                             return fields;
206                           })
207                       .setQueryParamsExtractor(
208                           request -> {
209                             Map<String, List<String>> fields = new HashMap<>();
210                             ProtoRestSerializer<AggregatedListTargetPoolsRequest> serializer =
211                                 ProtoRestSerializer.create();
212                             if (request.hasFilter()) {
213                               serializer.putQueryParam(fields, "filter", request.getFilter());
214                             }
215                             if (request.hasIncludeAllScopes()) {
216                               serializer.putQueryParam(
217                                   fields, "includeAllScopes", request.getIncludeAllScopes());
218                             }
219                             if (request.hasMaxResults()) {
220                               serializer.putQueryParam(
221                                   fields, "maxResults", request.getMaxResults());
222                             }
223                             if (request.hasOrderBy()) {
224                               serializer.putQueryParam(fields, "orderBy", request.getOrderBy());
225                             }
226                             if (request.hasPageToken()) {
227                               serializer.putQueryParam(fields, "pageToken", request.getPageToken());
228                             }
229                             if (request.hasReturnPartialSuccess()) {
230                               serializer.putQueryParam(
231                                   fields,
232                                   "returnPartialSuccess",
233                                   request.getReturnPartialSuccess());
234                             }
235                             return fields;
236                           })
237                       .setRequestBodyExtractor(request -> null)
238                       .build())
239               .setResponseParser(
240                   ProtoMessageResponseParser.<TargetPoolAggregatedList>newBuilder()
241                       .setDefaultInstance(TargetPoolAggregatedList.getDefaultInstance())
242                       .setDefaultTypeRegistry(typeRegistry)
243                       .build())
244               .build();
245 
246   private static final ApiMethodDescriptor<DeleteTargetPoolRequest, Operation>
247       deleteMethodDescriptor =
248           ApiMethodDescriptor.<DeleteTargetPoolRequest, Operation>newBuilder()
249               .setFullMethodName("google.cloud.compute.v1.TargetPools/Delete")
250               .setHttpMethod("DELETE")
251               .setType(ApiMethodDescriptor.MethodType.UNARY)
252               .setRequestFormatter(
253                   ProtoMessageRequestFormatter.<DeleteTargetPoolRequest>newBuilder()
254                       .setPath(
255                           "/compute/v1/projects/{project}/regions/{region}/targetPools/{targetPool}",
256                           request -> {
257                             Map<String, String> fields = new HashMap<>();
258                             ProtoRestSerializer<DeleteTargetPoolRequest> serializer =
259                                 ProtoRestSerializer.create();
260                             serializer.putPathParam(fields, "project", request.getProject());
261                             serializer.putPathParam(fields, "region", request.getRegion());
262                             serializer.putPathParam(fields, "targetPool", request.getTargetPool());
263                             return fields;
264                           })
265                       .setQueryParamsExtractor(
266                           request -> {
267                             Map<String, List<String>> fields = new HashMap<>();
268                             ProtoRestSerializer<DeleteTargetPoolRequest> serializer =
269                                 ProtoRestSerializer.create();
270                             if (request.hasRequestId()) {
271                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
272                             }
273                             return fields;
274                           })
275                       .setRequestBodyExtractor(request -> null)
276                       .build())
277               .setResponseParser(
278                   ProtoMessageResponseParser.<Operation>newBuilder()
279                       .setDefaultInstance(Operation.getDefaultInstance())
280                       .setDefaultTypeRegistry(typeRegistry)
281                       .build())
282               .setOperationSnapshotFactory(
283                   (DeleteTargetPoolRequest request, Operation response) -> {
284                     StringBuilder opName = new StringBuilder(response.getName());
285                     opName.append(":").append(request.getProject());
286                     opName.append(":").append(request.getRegion());
287                     return HttpJsonOperationSnapshot.newBuilder()
288                         .setName(opName.toString())
289                         .setMetadata(response)
290                         .setDone(Status.DONE.equals(response.getStatus()))
291                         .setResponse(response)
292                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
293                         .build();
294                   })
295               .build();
296 
297   private static final ApiMethodDescriptor<GetTargetPoolRequest, TargetPool> getMethodDescriptor =
298       ApiMethodDescriptor.<GetTargetPoolRequest, TargetPool>newBuilder()
299           .setFullMethodName("google.cloud.compute.v1.TargetPools/Get")
300           .setHttpMethod("GET")
301           .setType(ApiMethodDescriptor.MethodType.UNARY)
302           .setRequestFormatter(
303               ProtoMessageRequestFormatter.<GetTargetPoolRequest>newBuilder()
304                   .setPath(
305                       "/compute/v1/projects/{project}/regions/{region}/targetPools/{targetPool}",
306                       request -> {
307                         Map<String, String> fields = new HashMap<>();
308                         ProtoRestSerializer<GetTargetPoolRequest> serializer =
309                             ProtoRestSerializer.create();
310                         serializer.putPathParam(fields, "project", request.getProject());
311                         serializer.putPathParam(fields, "region", request.getRegion());
312                         serializer.putPathParam(fields, "targetPool", request.getTargetPool());
313                         return fields;
314                       })
315                   .setQueryParamsExtractor(
316                       request -> {
317                         Map<String, List<String>> fields = new HashMap<>();
318                         ProtoRestSerializer<GetTargetPoolRequest> serializer =
319                             ProtoRestSerializer.create();
320                         return fields;
321                       })
322                   .setRequestBodyExtractor(request -> null)
323                   .build())
324           .setResponseParser(
325               ProtoMessageResponseParser.<TargetPool>newBuilder()
326                   .setDefaultInstance(TargetPool.getDefaultInstance())
327                   .setDefaultTypeRegistry(typeRegistry)
328                   .build())
329           .build();
330 
331   private static final ApiMethodDescriptor<GetHealthTargetPoolRequest, TargetPoolInstanceHealth>
332       getHealthMethodDescriptor =
333           ApiMethodDescriptor.<GetHealthTargetPoolRequest, TargetPoolInstanceHealth>newBuilder()
334               .setFullMethodName("google.cloud.compute.v1.TargetPools/GetHealth")
335               .setHttpMethod("POST")
336               .setType(ApiMethodDescriptor.MethodType.UNARY)
337               .setRequestFormatter(
338                   ProtoMessageRequestFormatter.<GetHealthTargetPoolRequest>newBuilder()
339                       .setPath(
340                           "/compute/v1/projects/{project}/regions/{region}/targetPools/{targetPool}/getHealth",
341                           request -> {
342                             Map<String, String> fields = new HashMap<>();
343                             ProtoRestSerializer<GetHealthTargetPoolRequest> serializer =
344                                 ProtoRestSerializer.create();
345                             serializer.putPathParam(fields, "project", request.getProject());
346                             serializer.putPathParam(fields, "region", request.getRegion());
347                             serializer.putPathParam(fields, "targetPool", request.getTargetPool());
348                             return fields;
349                           })
350                       .setQueryParamsExtractor(
351                           request -> {
352                             Map<String, List<String>> fields = new HashMap<>();
353                             ProtoRestSerializer<GetHealthTargetPoolRequest> serializer =
354                                 ProtoRestSerializer.create();
355                             return fields;
356                           })
357                       .setRequestBodyExtractor(
358                           request ->
359                               ProtoRestSerializer.create()
360                                   .toBody(
361                                       "instanceReferenceResource",
362                                       request.getInstanceReferenceResource(),
363                                       false))
364                       .build())
365               .setResponseParser(
366                   ProtoMessageResponseParser.<TargetPoolInstanceHealth>newBuilder()
367                       .setDefaultInstance(TargetPoolInstanceHealth.getDefaultInstance())
368                       .setDefaultTypeRegistry(typeRegistry)
369                       .build())
370               .build();
371 
372   private static final ApiMethodDescriptor<InsertTargetPoolRequest, Operation>
373       insertMethodDescriptor =
374           ApiMethodDescriptor.<InsertTargetPoolRequest, Operation>newBuilder()
375               .setFullMethodName("google.cloud.compute.v1.TargetPools/Insert")
376               .setHttpMethod("POST")
377               .setType(ApiMethodDescriptor.MethodType.UNARY)
378               .setRequestFormatter(
379                   ProtoMessageRequestFormatter.<InsertTargetPoolRequest>newBuilder()
380                       .setPath(
381                           "/compute/v1/projects/{project}/regions/{region}/targetPools",
382                           request -> {
383                             Map<String, String> fields = new HashMap<>();
384                             ProtoRestSerializer<InsertTargetPoolRequest> serializer =
385                                 ProtoRestSerializer.create();
386                             serializer.putPathParam(fields, "project", request.getProject());
387                             serializer.putPathParam(fields, "region", request.getRegion());
388                             return fields;
389                           })
390                       .setQueryParamsExtractor(
391                           request -> {
392                             Map<String, List<String>> fields = new HashMap<>();
393                             ProtoRestSerializer<InsertTargetPoolRequest> serializer =
394                                 ProtoRestSerializer.create();
395                             if (request.hasRequestId()) {
396                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
397                             }
398                             return fields;
399                           })
400                       .setRequestBodyExtractor(
401                           request ->
402                               ProtoRestSerializer.create()
403                                   .toBody(
404                                       "targetPoolResource", request.getTargetPoolResource(), false))
405                       .build())
406               .setResponseParser(
407                   ProtoMessageResponseParser.<Operation>newBuilder()
408                       .setDefaultInstance(Operation.getDefaultInstance())
409                       .setDefaultTypeRegistry(typeRegistry)
410                       .build())
411               .setOperationSnapshotFactory(
412                   (InsertTargetPoolRequest request, Operation response) -> {
413                     StringBuilder opName = new StringBuilder(response.getName());
414                     opName.append(":").append(request.getProject());
415                     opName.append(":").append(request.getRegion());
416                     return HttpJsonOperationSnapshot.newBuilder()
417                         .setName(opName.toString())
418                         .setMetadata(response)
419                         .setDone(Status.DONE.equals(response.getStatus()))
420                         .setResponse(response)
421                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
422                         .build();
423                   })
424               .build();
425 
426   private static final ApiMethodDescriptor<ListTargetPoolsRequest, TargetPoolList>
427       listMethodDescriptor =
428           ApiMethodDescriptor.<ListTargetPoolsRequest, TargetPoolList>newBuilder()
429               .setFullMethodName("google.cloud.compute.v1.TargetPools/List")
430               .setHttpMethod("GET")
431               .setType(ApiMethodDescriptor.MethodType.UNARY)
432               .setRequestFormatter(
433                   ProtoMessageRequestFormatter.<ListTargetPoolsRequest>newBuilder()
434                       .setPath(
435                           "/compute/v1/projects/{project}/regions/{region}/targetPools",
436                           request -> {
437                             Map<String, String> fields = new HashMap<>();
438                             ProtoRestSerializer<ListTargetPoolsRequest> serializer =
439                                 ProtoRestSerializer.create();
440                             serializer.putPathParam(fields, "project", request.getProject());
441                             serializer.putPathParam(fields, "region", request.getRegion());
442                             return fields;
443                           })
444                       .setQueryParamsExtractor(
445                           request -> {
446                             Map<String, List<String>> fields = new HashMap<>();
447                             ProtoRestSerializer<ListTargetPoolsRequest> serializer =
448                                 ProtoRestSerializer.create();
449                             if (request.hasFilter()) {
450                               serializer.putQueryParam(fields, "filter", request.getFilter());
451                             }
452                             if (request.hasMaxResults()) {
453                               serializer.putQueryParam(
454                                   fields, "maxResults", request.getMaxResults());
455                             }
456                             if (request.hasOrderBy()) {
457                               serializer.putQueryParam(fields, "orderBy", request.getOrderBy());
458                             }
459                             if (request.hasPageToken()) {
460                               serializer.putQueryParam(fields, "pageToken", request.getPageToken());
461                             }
462                             if (request.hasReturnPartialSuccess()) {
463                               serializer.putQueryParam(
464                                   fields,
465                                   "returnPartialSuccess",
466                                   request.getReturnPartialSuccess());
467                             }
468                             return fields;
469                           })
470                       .setRequestBodyExtractor(request -> null)
471                       .build())
472               .setResponseParser(
473                   ProtoMessageResponseParser.<TargetPoolList>newBuilder()
474                       .setDefaultInstance(TargetPoolList.getDefaultInstance())
475                       .setDefaultTypeRegistry(typeRegistry)
476                       .build())
477               .build();
478 
479   private static final ApiMethodDescriptor<RemoveHealthCheckTargetPoolRequest, Operation>
480       removeHealthCheckMethodDescriptor =
481           ApiMethodDescriptor.<RemoveHealthCheckTargetPoolRequest, Operation>newBuilder()
482               .setFullMethodName("google.cloud.compute.v1.TargetPools/RemoveHealthCheck")
483               .setHttpMethod("POST")
484               .setType(ApiMethodDescriptor.MethodType.UNARY)
485               .setRequestFormatter(
486                   ProtoMessageRequestFormatter.<RemoveHealthCheckTargetPoolRequest>newBuilder()
487                       .setPath(
488                           "/compute/v1/projects/{project}/regions/{region}/targetPools/{targetPool}/removeHealthCheck",
489                           request -> {
490                             Map<String, String> fields = new HashMap<>();
491                             ProtoRestSerializer<RemoveHealthCheckTargetPoolRequest> serializer =
492                                 ProtoRestSerializer.create();
493                             serializer.putPathParam(fields, "project", request.getProject());
494                             serializer.putPathParam(fields, "region", request.getRegion());
495                             serializer.putPathParam(fields, "targetPool", request.getTargetPool());
496                             return fields;
497                           })
498                       .setQueryParamsExtractor(
499                           request -> {
500                             Map<String, List<String>> fields = new HashMap<>();
501                             ProtoRestSerializer<RemoveHealthCheckTargetPoolRequest> serializer =
502                                 ProtoRestSerializer.create();
503                             if (request.hasRequestId()) {
504                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
505                             }
506                             return fields;
507                           })
508                       .setRequestBodyExtractor(
509                           request ->
510                               ProtoRestSerializer.create()
511                                   .toBody(
512                                       "targetPoolsRemoveHealthCheckRequestResource",
513                                       request.getTargetPoolsRemoveHealthCheckRequestResource(),
514                                       false))
515                       .build())
516               .setResponseParser(
517                   ProtoMessageResponseParser.<Operation>newBuilder()
518                       .setDefaultInstance(Operation.getDefaultInstance())
519                       .setDefaultTypeRegistry(typeRegistry)
520                       .build())
521               .setOperationSnapshotFactory(
522                   (RemoveHealthCheckTargetPoolRequest request, Operation response) -> {
523                     StringBuilder opName = new StringBuilder(response.getName());
524                     opName.append(":").append(request.getProject());
525                     opName.append(":").append(request.getRegion());
526                     return HttpJsonOperationSnapshot.newBuilder()
527                         .setName(opName.toString())
528                         .setMetadata(response)
529                         .setDone(Status.DONE.equals(response.getStatus()))
530                         .setResponse(response)
531                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
532                         .build();
533                   })
534               .build();
535 
536   private static final ApiMethodDescriptor<RemoveInstanceTargetPoolRequest, Operation>
537       removeInstanceMethodDescriptor =
538           ApiMethodDescriptor.<RemoveInstanceTargetPoolRequest, Operation>newBuilder()
539               .setFullMethodName("google.cloud.compute.v1.TargetPools/RemoveInstance")
540               .setHttpMethod("POST")
541               .setType(ApiMethodDescriptor.MethodType.UNARY)
542               .setRequestFormatter(
543                   ProtoMessageRequestFormatter.<RemoveInstanceTargetPoolRequest>newBuilder()
544                       .setPath(
545                           "/compute/v1/projects/{project}/regions/{region}/targetPools/{targetPool}/removeInstance",
546                           request -> {
547                             Map<String, String> fields = new HashMap<>();
548                             ProtoRestSerializer<RemoveInstanceTargetPoolRequest> serializer =
549                                 ProtoRestSerializer.create();
550                             serializer.putPathParam(fields, "project", request.getProject());
551                             serializer.putPathParam(fields, "region", request.getRegion());
552                             serializer.putPathParam(fields, "targetPool", request.getTargetPool());
553                             return fields;
554                           })
555                       .setQueryParamsExtractor(
556                           request -> {
557                             Map<String, List<String>> fields = new HashMap<>();
558                             ProtoRestSerializer<RemoveInstanceTargetPoolRequest> serializer =
559                                 ProtoRestSerializer.create();
560                             if (request.hasRequestId()) {
561                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
562                             }
563                             return fields;
564                           })
565                       .setRequestBodyExtractor(
566                           request ->
567                               ProtoRestSerializer.create()
568                                   .toBody(
569                                       "targetPoolsRemoveInstanceRequestResource",
570                                       request.getTargetPoolsRemoveInstanceRequestResource(),
571                                       false))
572                       .build())
573               .setResponseParser(
574                   ProtoMessageResponseParser.<Operation>newBuilder()
575                       .setDefaultInstance(Operation.getDefaultInstance())
576                       .setDefaultTypeRegistry(typeRegistry)
577                       .build())
578               .setOperationSnapshotFactory(
579                   (RemoveInstanceTargetPoolRequest request, Operation response) -> {
580                     StringBuilder opName = new StringBuilder(response.getName());
581                     opName.append(":").append(request.getProject());
582                     opName.append(":").append(request.getRegion());
583                     return HttpJsonOperationSnapshot.newBuilder()
584                         .setName(opName.toString())
585                         .setMetadata(response)
586                         .setDone(Status.DONE.equals(response.getStatus()))
587                         .setResponse(response)
588                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
589                         .build();
590                   })
591               .build();
592 
593   private static final ApiMethodDescriptor<SetBackupTargetPoolRequest, Operation>
594       setBackupMethodDescriptor =
595           ApiMethodDescriptor.<SetBackupTargetPoolRequest, Operation>newBuilder()
596               .setFullMethodName("google.cloud.compute.v1.TargetPools/SetBackup")
597               .setHttpMethod("POST")
598               .setType(ApiMethodDescriptor.MethodType.UNARY)
599               .setRequestFormatter(
600                   ProtoMessageRequestFormatter.<SetBackupTargetPoolRequest>newBuilder()
601                       .setPath(
602                           "/compute/v1/projects/{project}/regions/{region}/targetPools/{targetPool}/setBackup",
603                           request -> {
604                             Map<String, String> fields = new HashMap<>();
605                             ProtoRestSerializer<SetBackupTargetPoolRequest> serializer =
606                                 ProtoRestSerializer.create();
607                             serializer.putPathParam(fields, "project", request.getProject());
608                             serializer.putPathParam(fields, "region", request.getRegion());
609                             serializer.putPathParam(fields, "targetPool", request.getTargetPool());
610                             return fields;
611                           })
612                       .setQueryParamsExtractor(
613                           request -> {
614                             Map<String, List<String>> fields = new HashMap<>();
615                             ProtoRestSerializer<SetBackupTargetPoolRequest> serializer =
616                                 ProtoRestSerializer.create();
617                             if (request.hasFailoverRatio()) {
618                               serializer.putQueryParam(
619                                   fields, "failoverRatio", request.getFailoverRatio());
620                             }
621                             if (request.hasRequestId()) {
622                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
623                             }
624                             return fields;
625                           })
626                       .setRequestBodyExtractor(
627                           request ->
628                               ProtoRestSerializer.create()
629                                   .toBody(
630                                       "targetReferenceResource",
631                                       request.getTargetReferenceResource(),
632                                       false))
633                       .build())
634               .setResponseParser(
635                   ProtoMessageResponseParser.<Operation>newBuilder()
636                       .setDefaultInstance(Operation.getDefaultInstance())
637                       .setDefaultTypeRegistry(typeRegistry)
638                       .build())
639               .setOperationSnapshotFactory(
640                   (SetBackupTargetPoolRequest request, Operation response) -> {
641                     StringBuilder opName = new StringBuilder(response.getName());
642                     opName.append(":").append(request.getProject());
643                     opName.append(":").append(request.getRegion());
644                     return HttpJsonOperationSnapshot.newBuilder()
645                         .setName(opName.toString())
646                         .setMetadata(response)
647                         .setDone(Status.DONE.equals(response.getStatus()))
648                         .setResponse(response)
649                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
650                         .build();
651                   })
652               .build();
653 
654   private final UnaryCallable<AddHealthCheckTargetPoolRequest, Operation> addHealthCheckCallable;
655   private final OperationCallable<AddHealthCheckTargetPoolRequest, Operation, Operation>
656       addHealthCheckOperationCallable;
657   private final UnaryCallable<AddInstanceTargetPoolRequest, Operation> addInstanceCallable;
658   private final OperationCallable<AddInstanceTargetPoolRequest, Operation, Operation>
659       addInstanceOperationCallable;
660   private final UnaryCallable<AggregatedListTargetPoolsRequest, TargetPoolAggregatedList>
661       aggregatedListCallable;
662   private final UnaryCallable<AggregatedListTargetPoolsRequest, AggregatedListPagedResponse>
663       aggregatedListPagedCallable;
664   private final UnaryCallable<DeleteTargetPoolRequest, Operation> deleteCallable;
665   private final OperationCallable<DeleteTargetPoolRequest, Operation, Operation>
666       deleteOperationCallable;
667   private final UnaryCallable<GetTargetPoolRequest, TargetPool> getCallable;
668   private final UnaryCallable<GetHealthTargetPoolRequest, TargetPoolInstanceHealth>
669       getHealthCallable;
670   private final UnaryCallable<InsertTargetPoolRequest, Operation> insertCallable;
671   private final OperationCallable<InsertTargetPoolRequest, Operation, Operation>
672       insertOperationCallable;
673   private final UnaryCallable<ListTargetPoolsRequest, TargetPoolList> listCallable;
674   private final UnaryCallable<ListTargetPoolsRequest, ListPagedResponse> listPagedCallable;
675   private final UnaryCallable<RemoveHealthCheckTargetPoolRequest, Operation>
676       removeHealthCheckCallable;
677   private final OperationCallable<RemoveHealthCheckTargetPoolRequest, Operation, Operation>
678       removeHealthCheckOperationCallable;
679   private final UnaryCallable<RemoveInstanceTargetPoolRequest, Operation> removeInstanceCallable;
680   private final OperationCallable<RemoveInstanceTargetPoolRequest, Operation, Operation>
681       removeInstanceOperationCallable;
682   private final UnaryCallable<SetBackupTargetPoolRequest, Operation> setBackupCallable;
683   private final OperationCallable<SetBackupTargetPoolRequest, Operation, Operation>
684       setBackupOperationCallable;
685 
686   private final BackgroundResource backgroundResources;
687   private final HttpJsonRegionOperationsStub httpJsonOperationsStub;
688   private final HttpJsonStubCallableFactory callableFactory;
689 
create(TargetPoolsStubSettings settings)690   public static final HttpJsonTargetPoolsStub create(TargetPoolsStubSettings settings)
691       throws IOException {
692     return new HttpJsonTargetPoolsStub(settings, ClientContext.create(settings));
693   }
694 
create(ClientContext clientContext)695   public static final HttpJsonTargetPoolsStub create(ClientContext clientContext)
696       throws IOException {
697     return new HttpJsonTargetPoolsStub(TargetPoolsStubSettings.newBuilder().build(), clientContext);
698   }
699 
create( ClientContext clientContext, HttpJsonStubCallableFactory callableFactory)700   public static final HttpJsonTargetPoolsStub create(
701       ClientContext clientContext, HttpJsonStubCallableFactory callableFactory) throws IOException {
702     return new HttpJsonTargetPoolsStub(
703         TargetPoolsStubSettings.newBuilder().build(), clientContext, callableFactory);
704   }
705 
706   /**
707    * Constructs an instance of HttpJsonTargetPoolsStub, using the given settings. This is protected
708    * so that it is easy to make a subclass, but otherwise, the static factory methods should be
709    * preferred.
710    */
HttpJsonTargetPoolsStub(TargetPoolsStubSettings settings, ClientContext clientContext)711   protected HttpJsonTargetPoolsStub(TargetPoolsStubSettings settings, ClientContext clientContext)
712       throws IOException {
713     this(settings, clientContext, new HttpJsonTargetPoolsCallableFactory());
714   }
715 
716   /**
717    * Constructs an instance of HttpJsonTargetPoolsStub, using the given settings. This is protected
718    * so that it is easy to make a subclass, but otherwise, the static factory methods should be
719    * preferred.
720    */
HttpJsonTargetPoolsStub( TargetPoolsStubSettings settings, ClientContext clientContext, HttpJsonStubCallableFactory callableFactory)721   protected HttpJsonTargetPoolsStub(
722       TargetPoolsStubSettings settings,
723       ClientContext clientContext,
724       HttpJsonStubCallableFactory callableFactory)
725       throws IOException {
726     this.callableFactory = callableFactory;
727     this.httpJsonOperationsStub =
728         HttpJsonRegionOperationsStub.create(clientContext, callableFactory);
729 
730     HttpJsonCallSettings<AddHealthCheckTargetPoolRequest, Operation>
731         addHealthCheckTransportSettings =
732             HttpJsonCallSettings.<AddHealthCheckTargetPoolRequest, Operation>newBuilder()
733                 .setMethodDescriptor(addHealthCheckMethodDescriptor)
734                 .setTypeRegistry(typeRegistry)
735                 .build();
736     HttpJsonCallSettings<AddInstanceTargetPoolRequest, Operation> addInstanceTransportSettings =
737         HttpJsonCallSettings.<AddInstanceTargetPoolRequest, Operation>newBuilder()
738             .setMethodDescriptor(addInstanceMethodDescriptor)
739             .setTypeRegistry(typeRegistry)
740             .build();
741     HttpJsonCallSettings<AggregatedListTargetPoolsRequest, TargetPoolAggregatedList>
742         aggregatedListTransportSettings =
743             HttpJsonCallSettings
744                 .<AggregatedListTargetPoolsRequest, TargetPoolAggregatedList>newBuilder()
745                 .setMethodDescriptor(aggregatedListMethodDescriptor)
746                 .setTypeRegistry(typeRegistry)
747                 .build();
748     HttpJsonCallSettings<DeleteTargetPoolRequest, Operation> deleteTransportSettings =
749         HttpJsonCallSettings.<DeleteTargetPoolRequest, Operation>newBuilder()
750             .setMethodDescriptor(deleteMethodDescriptor)
751             .setTypeRegistry(typeRegistry)
752             .build();
753     HttpJsonCallSettings<GetTargetPoolRequest, TargetPool> getTransportSettings =
754         HttpJsonCallSettings.<GetTargetPoolRequest, TargetPool>newBuilder()
755             .setMethodDescriptor(getMethodDescriptor)
756             .setTypeRegistry(typeRegistry)
757             .build();
758     HttpJsonCallSettings<GetHealthTargetPoolRequest, TargetPoolInstanceHealth>
759         getHealthTransportSettings =
760             HttpJsonCallSettings.<GetHealthTargetPoolRequest, TargetPoolInstanceHealth>newBuilder()
761                 .setMethodDescriptor(getHealthMethodDescriptor)
762                 .setTypeRegistry(typeRegistry)
763                 .build();
764     HttpJsonCallSettings<InsertTargetPoolRequest, Operation> insertTransportSettings =
765         HttpJsonCallSettings.<InsertTargetPoolRequest, Operation>newBuilder()
766             .setMethodDescriptor(insertMethodDescriptor)
767             .setTypeRegistry(typeRegistry)
768             .build();
769     HttpJsonCallSettings<ListTargetPoolsRequest, TargetPoolList> listTransportSettings =
770         HttpJsonCallSettings.<ListTargetPoolsRequest, TargetPoolList>newBuilder()
771             .setMethodDescriptor(listMethodDescriptor)
772             .setTypeRegistry(typeRegistry)
773             .build();
774     HttpJsonCallSettings<RemoveHealthCheckTargetPoolRequest, Operation>
775         removeHealthCheckTransportSettings =
776             HttpJsonCallSettings.<RemoveHealthCheckTargetPoolRequest, Operation>newBuilder()
777                 .setMethodDescriptor(removeHealthCheckMethodDescriptor)
778                 .setTypeRegistry(typeRegistry)
779                 .build();
780     HttpJsonCallSettings<RemoveInstanceTargetPoolRequest, Operation>
781         removeInstanceTransportSettings =
782             HttpJsonCallSettings.<RemoveInstanceTargetPoolRequest, Operation>newBuilder()
783                 .setMethodDescriptor(removeInstanceMethodDescriptor)
784                 .setTypeRegistry(typeRegistry)
785                 .build();
786     HttpJsonCallSettings<SetBackupTargetPoolRequest, Operation> setBackupTransportSettings =
787         HttpJsonCallSettings.<SetBackupTargetPoolRequest, Operation>newBuilder()
788             .setMethodDescriptor(setBackupMethodDescriptor)
789             .setTypeRegistry(typeRegistry)
790             .build();
791 
792     this.addHealthCheckCallable =
793         callableFactory.createUnaryCallable(
794             addHealthCheckTransportSettings, settings.addHealthCheckSettings(), clientContext);
795     this.addHealthCheckOperationCallable =
796         callableFactory.createOperationCallable(
797             addHealthCheckTransportSettings,
798             settings.addHealthCheckOperationSettings(),
799             clientContext,
800             httpJsonOperationsStub);
801     this.addInstanceCallable =
802         callableFactory.createUnaryCallable(
803             addInstanceTransportSettings, settings.addInstanceSettings(), clientContext);
804     this.addInstanceOperationCallable =
805         callableFactory.createOperationCallable(
806             addInstanceTransportSettings,
807             settings.addInstanceOperationSettings(),
808             clientContext,
809             httpJsonOperationsStub);
810     this.aggregatedListCallable =
811         callableFactory.createUnaryCallable(
812             aggregatedListTransportSettings, settings.aggregatedListSettings(), clientContext);
813     this.aggregatedListPagedCallable =
814         callableFactory.createPagedCallable(
815             aggregatedListTransportSettings, settings.aggregatedListSettings(), clientContext);
816     this.deleteCallable =
817         callableFactory.createUnaryCallable(
818             deleteTransportSettings, settings.deleteSettings(), clientContext);
819     this.deleteOperationCallable =
820         callableFactory.createOperationCallable(
821             deleteTransportSettings,
822             settings.deleteOperationSettings(),
823             clientContext,
824             httpJsonOperationsStub);
825     this.getCallable =
826         callableFactory.createUnaryCallable(
827             getTransportSettings, settings.getSettings(), clientContext);
828     this.getHealthCallable =
829         callableFactory.createUnaryCallable(
830             getHealthTransportSettings, settings.getHealthSettings(), clientContext);
831     this.insertCallable =
832         callableFactory.createUnaryCallable(
833             insertTransportSettings, settings.insertSettings(), clientContext);
834     this.insertOperationCallable =
835         callableFactory.createOperationCallable(
836             insertTransportSettings,
837             settings.insertOperationSettings(),
838             clientContext,
839             httpJsonOperationsStub);
840     this.listCallable =
841         callableFactory.createUnaryCallable(
842             listTransportSettings, settings.listSettings(), clientContext);
843     this.listPagedCallable =
844         callableFactory.createPagedCallable(
845             listTransportSettings, settings.listSettings(), clientContext);
846     this.removeHealthCheckCallable =
847         callableFactory.createUnaryCallable(
848             removeHealthCheckTransportSettings,
849             settings.removeHealthCheckSettings(),
850             clientContext);
851     this.removeHealthCheckOperationCallable =
852         callableFactory.createOperationCallable(
853             removeHealthCheckTransportSettings,
854             settings.removeHealthCheckOperationSettings(),
855             clientContext,
856             httpJsonOperationsStub);
857     this.removeInstanceCallable =
858         callableFactory.createUnaryCallable(
859             removeInstanceTransportSettings, settings.removeInstanceSettings(), clientContext);
860     this.removeInstanceOperationCallable =
861         callableFactory.createOperationCallable(
862             removeInstanceTransportSettings,
863             settings.removeInstanceOperationSettings(),
864             clientContext,
865             httpJsonOperationsStub);
866     this.setBackupCallable =
867         callableFactory.createUnaryCallable(
868             setBackupTransportSettings, settings.setBackupSettings(), clientContext);
869     this.setBackupOperationCallable =
870         callableFactory.createOperationCallable(
871             setBackupTransportSettings,
872             settings.setBackupOperationSettings(),
873             clientContext,
874             httpJsonOperationsStub);
875 
876     this.backgroundResources =
877         new BackgroundResourceAggregation(clientContext.getBackgroundResources());
878   }
879 
880   @InternalApi
getMethodDescriptors()881   public static List<ApiMethodDescriptor> getMethodDescriptors() {
882     List<ApiMethodDescriptor> methodDescriptors = new ArrayList<>();
883     methodDescriptors.add(addHealthCheckMethodDescriptor);
884     methodDescriptors.add(addInstanceMethodDescriptor);
885     methodDescriptors.add(aggregatedListMethodDescriptor);
886     methodDescriptors.add(deleteMethodDescriptor);
887     methodDescriptors.add(getMethodDescriptor);
888     methodDescriptors.add(getHealthMethodDescriptor);
889     methodDescriptors.add(insertMethodDescriptor);
890     methodDescriptors.add(listMethodDescriptor);
891     methodDescriptors.add(removeHealthCheckMethodDescriptor);
892     methodDescriptors.add(removeInstanceMethodDescriptor);
893     methodDescriptors.add(setBackupMethodDescriptor);
894     return methodDescriptors;
895   }
896 
897   @Override
addHealthCheckCallable()898   public UnaryCallable<AddHealthCheckTargetPoolRequest, Operation> addHealthCheckCallable() {
899     return addHealthCheckCallable;
900   }
901 
902   @Override
903   public OperationCallable<AddHealthCheckTargetPoolRequest, Operation, Operation>
addHealthCheckOperationCallable()904       addHealthCheckOperationCallable() {
905     return addHealthCheckOperationCallable;
906   }
907 
908   @Override
addInstanceCallable()909   public UnaryCallable<AddInstanceTargetPoolRequest, Operation> addInstanceCallable() {
910     return addInstanceCallable;
911   }
912 
913   @Override
914   public OperationCallable<AddInstanceTargetPoolRequest, Operation, Operation>
addInstanceOperationCallable()915       addInstanceOperationCallable() {
916     return addInstanceOperationCallable;
917   }
918 
919   @Override
920   public UnaryCallable<AggregatedListTargetPoolsRequest, TargetPoolAggregatedList>
aggregatedListCallable()921       aggregatedListCallable() {
922     return aggregatedListCallable;
923   }
924 
925   @Override
926   public UnaryCallable<AggregatedListTargetPoolsRequest, AggregatedListPagedResponse>
aggregatedListPagedCallable()927       aggregatedListPagedCallable() {
928     return aggregatedListPagedCallable;
929   }
930 
931   @Override
deleteCallable()932   public UnaryCallable<DeleteTargetPoolRequest, Operation> deleteCallable() {
933     return deleteCallable;
934   }
935 
936   @Override
937   public OperationCallable<DeleteTargetPoolRequest, Operation, Operation>
deleteOperationCallable()938       deleteOperationCallable() {
939     return deleteOperationCallable;
940   }
941 
942   @Override
getCallable()943   public UnaryCallable<GetTargetPoolRequest, TargetPool> getCallable() {
944     return getCallable;
945   }
946 
947   @Override
getHealthCallable()948   public UnaryCallable<GetHealthTargetPoolRequest, TargetPoolInstanceHealth> getHealthCallable() {
949     return getHealthCallable;
950   }
951 
952   @Override
insertCallable()953   public UnaryCallable<InsertTargetPoolRequest, Operation> insertCallable() {
954     return insertCallable;
955   }
956 
957   @Override
958   public OperationCallable<InsertTargetPoolRequest, Operation, Operation>
insertOperationCallable()959       insertOperationCallable() {
960     return insertOperationCallable;
961   }
962 
963   @Override
listCallable()964   public UnaryCallable<ListTargetPoolsRequest, TargetPoolList> listCallable() {
965     return listCallable;
966   }
967 
968   @Override
listPagedCallable()969   public UnaryCallable<ListTargetPoolsRequest, ListPagedResponse> listPagedCallable() {
970     return listPagedCallable;
971   }
972 
973   @Override
removeHealthCheckCallable()974   public UnaryCallable<RemoveHealthCheckTargetPoolRequest, Operation> removeHealthCheckCallable() {
975     return removeHealthCheckCallable;
976   }
977 
978   @Override
979   public OperationCallable<RemoveHealthCheckTargetPoolRequest, Operation, Operation>
removeHealthCheckOperationCallable()980       removeHealthCheckOperationCallable() {
981     return removeHealthCheckOperationCallable;
982   }
983 
984   @Override
removeInstanceCallable()985   public UnaryCallable<RemoveInstanceTargetPoolRequest, Operation> removeInstanceCallable() {
986     return removeInstanceCallable;
987   }
988 
989   @Override
990   public OperationCallable<RemoveInstanceTargetPoolRequest, Operation, Operation>
removeInstanceOperationCallable()991       removeInstanceOperationCallable() {
992     return removeInstanceOperationCallable;
993   }
994 
995   @Override
setBackupCallable()996   public UnaryCallable<SetBackupTargetPoolRequest, Operation> setBackupCallable() {
997     return setBackupCallable;
998   }
999 
1000   @Override
1001   public OperationCallable<SetBackupTargetPoolRequest, Operation, Operation>
setBackupOperationCallable()1002       setBackupOperationCallable() {
1003     return setBackupOperationCallable;
1004   }
1005 
1006   @Override
close()1007   public final void close() {
1008     try {
1009       backgroundResources.close();
1010     } catch (RuntimeException e) {
1011       throw e;
1012     } catch (Exception e) {
1013       throw new IllegalStateException("Failed to close resource", e);
1014     }
1015   }
1016 
1017   @Override
shutdown()1018   public void shutdown() {
1019     backgroundResources.shutdown();
1020   }
1021 
1022   @Override
isShutdown()1023   public boolean isShutdown() {
1024     return backgroundResources.isShutdown();
1025   }
1026 
1027   @Override
isTerminated()1028   public boolean isTerminated() {
1029     return backgroundResources.isTerminated();
1030   }
1031 
1032   @Override
shutdownNow()1033   public void shutdownNow() {
1034     backgroundResources.shutdownNow();
1035   }
1036 
1037   @Override
awaitTermination(long duration, TimeUnit unit)1038   public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException {
1039     return backgroundResources.awaitTermination(duration, unit);
1040   }
1041 }
1042