• 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.NodeGroupsClient.AggregatedListPagedResponse;
20 import static com.google.cloud.compute.v1.NodeGroupsClient.ListNodesPagedResponse;
21 import static com.google.cloud.compute.v1.NodeGroupsClient.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.AddNodesNodeGroupRequest;
38 import com.google.cloud.compute.v1.AggregatedListNodeGroupsRequest;
39 import com.google.cloud.compute.v1.DeleteNodeGroupRequest;
40 import com.google.cloud.compute.v1.DeleteNodesNodeGroupRequest;
41 import com.google.cloud.compute.v1.GetIamPolicyNodeGroupRequest;
42 import com.google.cloud.compute.v1.GetNodeGroupRequest;
43 import com.google.cloud.compute.v1.InsertNodeGroupRequest;
44 import com.google.cloud.compute.v1.ListNodeGroupsRequest;
45 import com.google.cloud.compute.v1.ListNodesNodeGroupsRequest;
46 import com.google.cloud.compute.v1.NodeGroup;
47 import com.google.cloud.compute.v1.NodeGroupAggregatedList;
48 import com.google.cloud.compute.v1.NodeGroupList;
49 import com.google.cloud.compute.v1.NodeGroupsListNodes;
50 import com.google.cloud.compute.v1.Operation;
51 import com.google.cloud.compute.v1.Operation.Status;
52 import com.google.cloud.compute.v1.PatchNodeGroupRequest;
53 import com.google.cloud.compute.v1.Policy;
54 import com.google.cloud.compute.v1.SetIamPolicyNodeGroupRequest;
55 import com.google.cloud.compute.v1.SetNodeTemplateNodeGroupRequest;
56 import com.google.cloud.compute.v1.SimulateMaintenanceEventNodeGroupRequest;
57 import com.google.cloud.compute.v1.TestIamPermissionsNodeGroupRequest;
58 import com.google.cloud.compute.v1.TestPermissionsResponse;
59 import com.google.protobuf.TypeRegistry;
60 import java.io.IOException;
61 import java.util.ArrayList;
62 import java.util.HashMap;
63 import java.util.List;
64 import java.util.Map;
65 import java.util.concurrent.TimeUnit;
66 import javax.annotation.Generated;
67 
68 // AUTO-GENERATED DOCUMENTATION AND CLASS.
69 /**
70  * REST stub implementation for the NodeGroups service API.
71  *
72  * <p>This class is for advanced usage and reflects the underlying API directly.
73  */
74 @Generated("by gapic-generator-java")
75 @BetaApi
76 public class HttpJsonNodeGroupsStub extends NodeGroupsStub {
77   private static final TypeRegistry typeRegistry =
78       TypeRegistry.newBuilder().add(Operation.getDescriptor()).build();
79 
80   private static final ApiMethodDescriptor<AddNodesNodeGroupRequest, Operation>
81       addNodesMethodDescriptor =
82           ApiMethodDescriptor.<AddNodesNodeGroupRequest, Operation>newBuilder()
83               .setFullMethodName("google.cloud.compute.v1.NodeGroups/AddNodes")
84               .setHttpMethod("POST")
85               .setType(ApiMethodDescriptor.MethodType.UNARY)
86               .setRequestFormatter(
87                   ProtoMessageRequestFormatter.<AddNodesNodeGroupRequest>newBuilder()
88                       .setPath(
89                           "/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}/addNodes",
90                           request -> {
91                             Map<String, String> fields = new HashMap<>();
92                             ProtoRestSerializer<AddNodesNodeGroupRequest> serializer =
93                                 ProtoRestSerializer.create();
94                             serializer.putPathParam(fields, "nodeGroup", request.getNodeGroup());
95                             serializer.putPathParam(fields, "project", request.getProject());
96                             serializer.putPathParam(fields, "zone", request.getZone());
97                             return fields;
98                           })
99                       .setQueryParamsExtractor(
100                           request -> {
101                             Map<String, List<String>> fields = new HashMap<>();
102                             ProtoRestSerializer<AddNodesNodeGroupRequest> serializer =
103                                 ProtoRestSerializer.create();
104                             if (request.hasRequestId()) {
105                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
106                             }
107                             return fields;
108                           })
109                       .setRequestBodyExtractor(
110                           request ->
111                               ProtoRestSerializer.create()
112                                   .toBody(
113                                       "nodeGroupsAddNodesRequestResource",
114                                       request.getNodeGroupsAddNodesRequestResource(),
115                                       false))
116                       .build())
117               .setResponseParser(
118                   ProtoMessageResponseParser.<Operation>newBuilder()
119                       .setDefaultInstance(Operation.getDefaultInstance())
120                       .setDefaultTypeRegistry(typeRegistry)
121                       .build())
122               .setOperationSnapshotFactory(
123                   (AddNodesNodeGroupRequest request, Operation response) -> {
124                     StringBuilder opName = new StringBuilder(response.getName());
125                     opName.append(":").append(request.getProject());
126                     opName.append(":").append(request.getZone());
127                     return HttpJsonOperationSnapshot.newBuilder()
128                         .setName(opName.toString())
129                         .setMetadata(response)
130                         .setDone(Status.DONE.equals(response.getStatus()))
131                         .setResponse(response)
132                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
133                         .build();
134                   })
135               .build();
136 
137   private static final ApiMethodDescriptor<AggregatedListNodeGroupsRequest, NodeGroupAggregatedList>
138       aggregatedListMethodDescriptor =
139           ApiMethodDescriptor.<AggregatedListNodeGroupsRequest, NodeGroupAggregatedList>newBuilder()
140               .setFullMethodName("google.cloud.compute.v1.NodeGroups/AggregatedList")
141               .setHttpMethod("GET")
142               .setType(ApiMethodDescriptor.MethodType.UNARY)
143               .setRequestFormatter(
144                   ProtoMessageRequestFormatter.<AggregatedListNodeGroupsRequest>newBuilder()
145                       .setPath(
146                           "/compute/v1/projects/{project}/aggregated/nodeGroups",
147                           request -> {
148                             Map<String, String> fields = new HashMap<>();
149                             ProtoRestSerializer<AggregatedListNodeGroupsRequest> serializer =
150                                 ProtoRestSerializer.create();
151                             serializer.putPathParam(fields, "project", request.getProject());
152                             return fields;
153                           })
154                       .setQueryParamsExtractor(
155                           request -> {
156                             Map<String, List<String>> fields = new HashMap<>();
157                             ProtoRestSerializer<AggregatedListNodeGroupsRequest> serializer =
158                                 ProtoRestSerializer.create();
159                             if (request.hasFilter()) {
160                               serializer.putQueryParam(fields, "filter", request.getFilter());
161                             }
162                             if (request.hasIncludeAllScopes()) {
163                               serializer.putQueryParam(
164                                   fields, "includeAllScopes", request.getIncludeAllScopes());
165                             }
166                             if (request.hasMaxResults()) {
167                               serializer.putQueryParam(
168                                   fields, "maxResults", request.getMaxResults());
169                             }
170                             if (request.hasOrderBy()) {
171                               serializer.putQueryParam(fields, "orderBy", request.getOrderBy());
172                             }
173                             if (request.hasPageToken()) {
174                               serializer.putQueryParam(fields, "pageToken", request.getPageToken());
175                             }
176                             if (request.hasReturnPartialSuccess()) {
177                               serializer.putQueryParam(
178                                   fields,
179                                   "returnPartialSuccess",
180                                   request.getReturnPartialSuccess());
181                             }
182                             return fields;
183                           })
184                       .setRequestBodyExtractor(request -> null)
185                       .build())
186               .setResponseParser(
187                   ProtoMessageResponseParser.<NodeGroupAggregatedList>newBuilder()
188                       .setDefaultInstance(NodeGroupAggregatedList.getDefaultInstance())
189                       .setDefaultTypeRegistry(typeRegistry)
190                       .build())
191               .build();
192 
193   private static final ApiMethodDescriptor<DeleteNodeGroupRequest, Operation>
194       deleteMethodDescriptor =
195           ApiMethodDescriptor.<DeleteNodeGroupRequest, Operation>newBuilder()
196               .setFullMethodName("google.cloud.compute.v1.NodeGroups/Delete")
197               .setHttpMethod("DELETE")
198               .setType(ApiMethodDescriptor.MethodType.UNARY)
199               .setRequestFormatter(
200                   ProtoMessageRequestFormatter.<DeleteNodeGroupRequest>newBuilder()
201                       .setPath(
202                           "/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}",
203                           request -> {
204                             Map<String, String> fields = new HashMap<>();
205                             ProtoRestSerializer<DeleteNodeGroupRequest> serializer =
206                                 ProtoRestSerializer.create();
207                             serializer.putPathParam(fields, "nodeGroup", request.getNodeGroup());
208                             serializer.putPathParam(fields, "project", request.getProject());
209                             serializer.putPathParam(fields, "zone", request.getZone());
210                             return fields;
211                           })
212                       .setQueryParamsExtractor(
213                           request -> {
214                             Map<String, List<String>> fields = new HashMap<>();
215                             ProtoRestSerializer<DeleteNodeGroupRequest> serializer =
216                                 ProtoRestSerializer.create();
217                             if (request.hasRequestId()) {
218                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
219                             }
220                             return fields;
221                           })
222                       .setRequestBodyExtractor(request -> null)
223                       .build())
224               .setResponseParser(
225                   ProtoMessageResponseParser.<Operation>newBuilder()
226                       .setDefaultInstance(Operation.getDefaultInstance())
227                       .setDefaultTypeRegistry(typeRegistry)
228                       .build())
229               .setOperationSnapshotFactory(
230                   (DeleteNodeGroupRequest request, Operation response) -> {
231                     StringBuilder opName = new StringBuilder(response.getName());
232                     opName.append(":").append(request.getProject());
233                     opName.append(":").append(request.getZone());
234                     return HttpJsonOperationSnapshot.newBuilder()
235                         .setName(opName.toString())
236                         .setMetadata(response)
237                         .setDone(Status.DONE.equals(response.getStatus()))
238                         .setResponse(response)
239                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
240                         .build();
241                   })
242               .build();
243 
244   private static final ApiMethodDescriptor<DeleteNodesNodeGroupRequest, Operation>
245       deleteNodesMethodDescriptor =
246           ApiMethodDescriptor.<DeleteNodesNodeGroupRequest, Operation>newBuilder()
247               .setFullMethodName("google.cloud.compute.v1.NodeGroups/DeleteNodes")
248               .setHttpMethod("POST")
249               .setType(ApiMethodDescriptor.MethodType.UNARY)
250               .setRequestFormatter(
251                   ProtoMessageRequestFormatter.<DeleteNodesNodeGroupRequest>newBuilder()
252                       .setPath(
253                           "/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}/deleteNodes",
254                           request -> {
255                             Map<String, String> fields = new HashMap<>();
256                             ProtoRestSerializer<DeleteNodesNodeGroupRequest> serializer =
257                                 ProtoRestSerializer.create();
258                             serializer.putPathParam(fields, "nodeGroup", request.getNodeGroup());
259                             serializer.putPathParam(fields, "project", request.getProject());
260                             serializer.putPathParam(fields, "zone", request.getZone());
261                             return fields;
262                           })
263                       .setQueryParamsExtractor(
264                           request -> {
265                             Map<String, List<String>> fields = new HashMap<>();
266                             ProtoRestSerializer<DeleteNodesNodeGroupRequest> serializer =
267                                 ProtoRestSerializer.create();
268                             if (request.hasRequestId()) {
269                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
270                             }
271                             return fields;
272                           })
273                       .setRequestBodyExtractor(
274                           request ->
275                               ProtoRestSerializer.create()
276                                   .toBody(
277                                       "nodeGroupsDeleteNodesRequestResource",
278                                       request.getNodeGroupsDeleteNodesRequestResource(),
279                                       false))
280                       .build())
281               .setResponseParser(
282                   ProtoMessageResponseParser.<Operation>newBuilder()
283                       .setDefaultInstance(Operation.getDefaultInstance())
284                       .setDefaultTypeRegistry(typeRegistry)
285                       .build())
286               .setOperationSnapshotFactory(
287                   (DeleteNodesNodeGroupRequest request, Operation response) -> {
288                     StringBuilder opName = new StringBuilder(response.getName());
289                     opName.append(":").append(request.getProject());
290                     opName.append(":").append(request.getZone());
291                     return HttpJsonOperationSnapshot.newBuilder()
292                         .setName(opName.toString())
293                         .setMetadata(response)
294                         .setDone(Status.DONE.equals(response.getStatus()))
295                         .setResponse(response)
296                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
297                         .build();
298                   })
299               .build();
300 
301   private static final ApiMethodDescriptor<GetNodeGroupRequest, NodeGroup> getMethodDescriptor =
302       ApiMethodDescriptor.<GetNodeGroupRequest, NodeGroup>newBuilder()
303           .setFullMethodName("google.cloud.compute.v1.NodeGroups/Get")
304           .setHttpMethod("GET")
305           .setType(ApiMethodDescriptor.MethodType.UNARY)
306           .setRequestFormatter(
307               ProtoMessageRequestFormatter.<GetNodeGroupRequest>newBuilder()
308                   .setPath(
309                       "/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}",
310                       request -> {
311                         Map<String, String> fields = new HashMap<>();
312                         ProtoRestSerializer<GetNodeGroupRequest> serializer =
313                             ProtoRestSerializer.create();
314                         serializer.putPathParam(fields, "nodeGroup", request.getNodeGroup());
315                         serializer.putPathParam(fields, "project", request.getProject());
316                         serializer.putPathParam(fields, "zone", request.getZone());
317                         return fields;
318                       })
319                   .setQueryParamsExtractor(
320                       request -> {
321                         Map<String, List<String>> fields = new HashMap<>();
322                         ProtoRestSerializer<GetNodeGroupRequest> serializer =
323                             ProtoRestSerializer.create();
324                         return fields;
325                       })
326                   .setRequestBodyExtractor(request -> null)
327                   .build())
328           .setResponseParser(
329               ProtoMessageResponseParser.<NodeGroup>newBuilder()
330                   .setDefaultInstance(NodeGroup.getDefaultInstance())
331                   .setDefaultTypeRegistry(typeRegistry)
332                   .build())
333           .build();
334 
335   private static final ApiMethodDescriptor<GetIamPolicyNodeGroupRequest, Policy>
336       getIamPolicyMethodDescriptor =
337           ApiMethodDescriptor.<GetIamPolicyNodeGroupRequest, Policy>newBuilder()
338               .setFullMethodName("google.cloud.compute.v1.NodeGroups/GetIamPolicy")
339               .setHttpMethod("GET")
340               .setType(ApiMethodDescriptor.MethodType.UNARY)
341               .setRequestFormatter(
342                   ProtoMessageRequestFormatter.<GetIamPolicyNodeGroupRequest>newBuilder()
343                       .setPath(
344                           "/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{resource}/getIamPolicy",
345                           request -> {
346                             Map<String, String> fields = new HashMap<>();
347                             ProtoRestSerializer<GetIamPolicyNodeGroupRequest> serializer =
348                                 ProtoRestSerializer.create();
349                             serializer.putPathParam(fields, "project", request.getProject());
350                             serializer.putPathParam(fields, "resource", request.getResource());
351                             serializer.putPathParam(fields, "zone", request.getZone());
352                             return fields;
353                           })
354                       .setQueryParamsExtractor(
355                           request -> {
356                             Map<String, List<String>> fields = new HashMap<>();
357                             ProtoRestSerializer<GetIamPolicyNodeGroupRequest> serializer =
358                                 ProtoRestSerializer.create();
359                             if (request.hasOptionsRequestedPolicyVersion()) {
360                               serializer.putQueryParam(
361                                   fields,
362                                   "optionsRequestedPolicyVersion",
363                                   request.getOptionsRequestedPolicyVersion());
364                             }
365                             return fields;
366                           })
367                       .setRequestBodyExtractor(request -> null)
368                       .build())
369               .setResponseParser(
370                   ProtoMessageResponseParser.<Policy>newBuilder()
371                       .setDefaultInstance(Policy.getDefaultInstance())
372                       .setDefaultTypeRegistry(typeRegistry)
373                       .build())
374               .build();
375 
376   private static final ApiMethodDescriptor<InsertNodeGroupRequest, Operation>
377       insertMethodDescriptor =
378           ApiMethodDescriptor.<InsertNodeGroupRequest, Operation>newBuilder()
379               .setFullMethodName("google.cloud.compute.v1.NodeGroups/Insert")
380               .setHttpMethod("POST")
381               .setType(ApiMethodDescriptor.MethodType.UNARY)
382               .setRequestFormatter(
383                   ProtoMessageRequestFormatter.<InsertNodeGroupRequest>newBuilder()
384                       .setPath(
385                           "/compute/v1/projects/{project}/zones/{zone}/nodeGroups",
386                           request -> {
387                             Map<String, String> fields = new HashMap<>();
388                             ProtoRestSerializer<InsertNodeGroupRequest> serializer =
389                                 ProtoRestSerializer.create();
390                             serializer.putPathParam(fields, "project", request.getProject());
391                             serializer.putPathParam(fields, "zone", request.getZone());
392                             return fields;
393                           })
394                       .setQueryParamsExtractor(
395                           request -> {
396                             Map<String, List<String>> fields = new HashMap<>();
397                             ProtoRestSerializer<InsertNodeGroupRequest> serializer =
398                                 ProtoRestSerializer.create();
399                             serializer.putQueryParam(
400                                 fields, "initialNodeCount", request.getInitialNodeCount());
401                             if (request.hasRequestId()) {
402                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
403                             }
404                             return fields;
405                           })
406                       .setRequestBodyExtractor(
407                           request ->
408                               ProtoRestSerializer.create()
409                                   .toBody(
410                                       "nodeGroupResource", request.getNodeGroupResource(), false))
411                       .build())
412               .setResponseParser(
413                   ProtoMessageResponseParser.<Operation>newBuilder()
414                       .setDefaultInstance(Operation.getDefaultInstance())
415                       .setDefaultTypeRegistry(typeRegistry)
416                       .build())
417               .setOperationSnapshotFactory(
418                   (InsertNodeGroupRequest request, Operation response) -> {
419                     StringBuilder opName = new StringBuilder(response.getName());
420                     opName.append(":").append(request.getProject());
421                     opName.append(":").append(request.getZone());
422                     return HttpJsonOperationSnapshot.newBuilder()
423                         .setName(opName.toString())
424                         .setMetadata(response)
425                         .setDone(Status.DONE.equals(response.getStatus()))
426                         .setResponse(response)
427                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
428                         .build();
429                   })
430               .build();
431 
432   private static final ApiMethodDescriptor<ListNodeGroupsRequest, NodeGroupList>
433       listMethodDescriptor =
434           ApiMethodDescriptor.<ListNodeGroupsRequest, NodeGroupList>newBuilder()
435               .setFullMethodName("google.cloud.compute.v1.NodeGroups/List")
436               .setHttpMethod("GET")
437               .setType(ApiMethodDescriptor.MethodType.UNARY)
438               .setRequestFormatter(
439                   ProtoMessageRequestFormatter.<ListNodeGroupsRequest>newBuilder()
440                       .setPath(
441                           "/compute/v1/projects/{project}/zones/{zone}/nodeGroups",
442                           request -> {
443                             Map<String, String> fields = new HashMap<>();
444                             ProtoRestSerializer<ListNodeGroupsRequest> serializer =
445                                 ProtoRestSerializer.create();
446                             serializer.putPathParam(fields, "project", request.getProject());
447                             serializer.putPathParam(fields, "zone", request.getZone());
448                             return fields;
449                           })
450                       .setQueryParamsExtractor(
451                           request -> {
452                             Map<String, List<String>> fields = new HashMap<>();
453                             ProtoRestSerializer<ListNodeGroupsRequest> serializer =
454                                 ProtoRestSerializer.create();
455                             if (request.hasFilter()) {
456                               serializer.putQueryParam(fields, "filter", request.getFilter());
457                             }
458                             if (request.hasMaxResults()) {
459                               serializer.putQueryParam(
460                                   fields, "maxResults", request.getMaxResults());
461                             }
462                             if (request.hasOrderBy()) {
463                               serializer.putQueryParam(fields, "orderBy", request.getOrderBy());
464                             }
465                             if (request.hasPageToken()) {
466                               serializer.putQueryParam(fields, "pageToken", request.getPageToken());
467                             }
468                             if (request.hasReturnPartialSuccess()) {
469                               serializer.putQueryParam(
470                                   fields,
471                                   "returnPartialSuccess",
472                                   request.getReturnPartialSuccess());
473                             }
474                             return fields;
475                           })
476                       .setRequestBodyExtractor(request -> null)
477                       .build())
478               .setResponseParser(
479                   ProtoMessageResponseParser.<NodeGroupList>newBuilder()
480                       .setDefaultInstance(NodeGroupList.getDefaultInstance())
481                       .setDefaultTypeRegistry(typeRegistry)
482                       .build())
483               .build();
484 
485   private static final ApiMethodDescriptor<ListNodesNodeGroupsRequest, NodeGroupsListNodes>
486       listNodesMethodDescriptor =
487           ApiMethodDescriptor.<ListNodesNodeGroupsRequest, NodeGroupsListNodes>newBuilder()
488               .setFullMethodName("google.cloud.compute.v1.NodeGroups/ListNodes")
489               .setHttpMethod("POST")
490               .setType(ApiMethodDescriptor.MethodType.UNARY)
491               .setRequestFormatter(
492                   ProtoMessageRequestFormatter.<ListNodesNodeGroupsRequest>newBuilder()
493                       .setPath(
494                           "/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}/listNodes",
495                           request -> {
496                             Map<String, String> fields = new HashMap<>();
497                             ProtoRestSerializer<ListNodesNodeGroupsRequest> serializer =
498                                 ProtoRestSerializer.create();
499                             serializer.putPathParam(fields, "nodeGroup", request.getNodeGroup());
500                             serializer.putPathParam(fields, "project", request.getProject());
501                             serializer.putPathParam(fields, "zone", request.getZone());
502                             return fields;
503                           })
504                       .setQueryParamsExtractor(
505                           request -> {
506                             Map<String, List<String>> fields = new HashMap<>();
507                             ProtoRestSerializer<ListNodesNodeGroupsRequest> serializer =
508                                 ProtoRestSerializer.create();
509                             if (request.hasFilter()) {
510                               serializer.putQueryParam(fields, "filter", request.getFilter());
511                             }
512                             if (request.hasMaxResults()) {
513                               serializer.putQueryParam(
514                                   fields, "maxResults", request.getMaxResults());
515                             }
516                             if (request.hasOrderBy()) {
517                               serializer.putQueryParam(fields, "orderBy", request.getOrderBy());
518                             }
519                             if (request.hasPageToken()) {
520                               serializer.putQueryParam(fields, "pageToken", request.getPageToken());
521                             }
522                             if (request.hasReturnPartialSuccess()) {
523                               serializer.putQueryParam(
524                                   fields,
525                                   "returnPartialSuccess",
526                                   request.getReturnPartialSuccess());
527                             }
528                             return fields;
529                           })
530                       .setRequestBodyExtractor(request -> null)
531                       .build())
532               .setResponseParser(
533                   ProtoMessageResponseParser.<NodeGroupsListNodes>newBuilder()
534                       .setDefaultInstance(NodeGroupsListNodes.getDefaultInstance())
535                       .setDefaultTypeRegistry(typeRegistry)
536                       .build())
537               .build();
538 
539   private static final ApiMethodDescriptor<PatchNodeGroupRequest, Operation> patchMethodDescriptor =
540       ApiMethodDescriptor.<PatchNodeGroupRequest, Operation>newBuilder()
541           .setFullMethodName("google.cloud.compute.v1.NodeGroups/Patch")
542           .setHttpMethod("PATCH")
543           .setType(ApiMethodDescriptor.MethodType.UNARY)
544           .setRequestFormatter(
545               ProtoMessageRequestFormatter.<PatchNodeGroupRequest>newBuilder()
546                   .setPath(
547                       "/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}",
548                       request -> {
549                         Map<String, String> fields = new HashMap<>();
550                         ProtoRestSerializer<PatchNodeGroupRequest> serializer =
551                             ProtoRestSerializer.create();
552                         serializer.putPathParam(fields, "nodeGroup", request.getNodeGroup());
553                         serializer.putPathParam(fields, "project", request.getProject());
554                         serializer.putPathParam(fields, "zone", request.getZone());
555                         return fields;
556                       })
557                   .setQueryParamsExtractor(
558                       request -> {
559                         Map<String, List<String>> fields = new HashMap<>();
560                         ProtoRestSerializer<PatchNodeGroupRequest> serializer =
561                             ProtoRestSerializer.create();
562                         if (request.hasRequestId()) {
563                           serializer.putQueryParam(fields, "requestId", request.getRequestId());
564                         }
565                         return fields;
566                       })
567                   .setRequestBodyExtractor(
568                       request ->
569                           ProtoRestSerializer.create()
570                               .toBody("nodeGroupResource", request.getNodeGroupResource(), false))
571                   .build())
572           .setResponseParser(
573               ProtoMessageResponseParser.<Operation>newBuilder()
574                   .setDefaultInstance(Operation.getDefaultInstance())
575                   .setDefaultTypeRegistry(typeRegistry)
576                   .build())
577           .setOperationSnapshotFactory(
578               (PatchNodeGroupRequest request, Operation response) -> {
579                 StringBuilder opName = new StringBuilder(response.getName());
580                 opName.append(":").append(request.getProject());
581                 opName.append(":").append(request.getZone());
582                 return HttpJsonOperationSnapshot.newBuilder()
583                     .setName(opName.toString())
584                     .setMetadata(response)
585                     .setDone(Status.DONE.equals(response.getStatus()))
586                     .setResponse(response)
587                     .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
588                     .build();
589               })
590           .build();
591 
592   private static final ApiMethodDescriptor<SetIamPolicyNodeGroupRequest, Policy>
593       setIamPolicyMethodDescriptor =
594           ApiMethodDescriptor.<SetIamPolicyNodeGroupRequest, Policy>newBuilder()
595               .setFullMethodName("google.cloud.compute.v1.NodeGroups/SetIamPolicy")
596               .setHttpMethod("POST")
597               .setType(ApiMethodDescriptor.MethodType.UNARY)
598               .setRequestFormatter(
599                   ProtoMessageRequestFormatter.<SetIamPolicyNodeGroupRequest>newBuilder()
600                       .setPath(
601                           "/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{resource}/setIamPolicy",
602                           request -> {
603                             Map<String, String> fields = new HashMap<>();
604                             ProtoRestSerializer<SetIamPolicyNodeGroupRequest> serializer =
605                                 ProtoRestSerializer.create();
606                             serializer.putPathParam(fields, "project", request.getProject());
607                             serializer.putPathParam(fields, "resource", request.getResource());
608                             serializer.putPathParam(fields, "zone", request.getZone());
609                             return fields;
610                           })
611                       .setQueryParamsExtractor(
612                           request -> {
613                             Map<String, List<String>> fields = new HashMap<>();
614                             ProtoRestSerializer<SetIamPolicyNodeGroupRequest> serializer =
615                                 ProtoRestSerializer.create();
616                             return fields;
617                           })
618                       .setRequestBodyExtractor(
619                           request ->
620                               ProtoRestSerializer.create()
621                                   .toBody(
622                                       "zoneSetPolicyRequestResource",
623                                       request.getZoneSetPolicyRequestResource(),
624                                       false))
625                       .build())
626               .setResponseParser(
627                   ProtoMessageResponseParser.<Policy>newBuilder()
628                       .setDefaultInstance(Policy.getDefaultInstance())
629                       .setDefaultTypeRegistry(typeRegistry)
630                       .build())
631               .build();
632 
633   private static final ApiMethodDescriptor<SetNodeTemplateNodeGroupRequest, Operation>
634       setNodeTemplateMethodDescriptor =
635           ApiMethodDescriptor.<SetNodeTemplateNodeGroupRequest, Operation>newBuilder()
636               .setFullMethodName("google.cloud.compute.v1.NodeGroups/SetNodeTemplate")
637               .setHttpMethod("POST")
638               .setType(ApiMethodDescriptor.MethodType.UNARY)
639               .setRequestFormatter(
640                   ProtoMessageRequestFormatter.<SetNodeTemplateNodeGroupRequest>newBuilder()
641                       .setPath(
642                           "/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}/setNodeTemplate",
643                           request -> {
644                             Map<String, String> fields = new HashMap<>();
645                             ProtoRestSerializer<SetNodeTemplateNodeGroupRequest> serializer =
646                                 ProtoRestSerializer.create();
647                             serializer.putPathParam(fields, "nodeGroup", request.getNodeGroup());
648                             serializer.putPathParam(fields, "project", request.getProject());
649                             serializer.putPathParam(fields, "zone", request.getZone());
650                             return fields;
651                           })
652                       .setQueryParamsExtractor(
653                           request -> {
654                             Map<String, List<String>> fields = new HashMap<>();
655                             ProtoRestSerializer<SetNodeTemplateNodeGroupRequest> serializer =
656                                 ProtoRestSerializer.create();
657                             if (request.hasRequestId()) {
658                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
659                             }
660                             return fields;
661                           })
662                       .setRequestBodyExtractor(
663                           request ->
664                               ProtoRestSerializer.create()
665                                   .toBody(
666                                       "nodeGroupsSetNodeTemplateRequestResource",
667                                       request.getNodeGroupsSetNodeTemplateRequestResource(),
668                                       false))
669                       .build())
670               .setResponseParser(
671                   ProtoMessageResponseParser.<Operation>newBuilder()
672                       .setDefaultInstance(Operation.getDefaultInstance())
673                       .setDefaultTypeRegistry(typeRegistry)
674                       .build())
675               .setOperationSnapshotFactory(
676                   (SetNodeTemplateNodeGroupRequest request, Operation response) -> {
677                     StringBuilder opName = new StringBuilder(response.getName());
678                     opName.append(":").append(request.getProject());
679                     opName.append(":").append(request.getZone());
680                     return HttpJsonOperationSnapshot.newBuilder()
681                         .setName(opName.toString())
682                         .setMetadata(response)
683                         .setDone(Status.DONE.equals(response.getStatus()))
684                         .setResponse(response)
685                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
686                         .build();
687                   })
688               .build();
689 
690   private static final ApiMethodDescriptor<SimulateMaintenanceEventNodeGroupRequest, Operation>
691       simulateMaintenanceEventMethodDescriptor =
692           ApiMethodDescriptor.<SimulateMaintenanceEventNodeGroupRequest, Operation>newBuilder()
693               .setFullMethodName("google.cloud.compute.v1.NodeGroups/SimulateMaintenanceEvent")
694               .setHttpMethod("POST")
695               .setType(ApiMethodDescriptor.MethodType.UNARY)
696               .setRequestFormatter(
697                   ProtoMessageRequestFormatter
698                       .<SimulateMaintenanceEventNodeGroupRequest>newBuilder()
699                       .setPath(
700                           "/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}/simulateMaintenanceEvent",
701                           request -> {
702                             Map<String, String> fields = new HashMap<>();
703                             ProtoRestSerializer<SimulateMaintenanceEventNodeGroupRequest>
704                                 serializer = ProtoRestSerializer.create();
705                             serializer.putPathParam(fields, "nodeGroup", request.getNodeGroup());
706                             serializer.putPathParam(fields, "project", request.getProject());
707                             serializer.putPathParam(fields, "zone", request.getZone());
708                             return fields;
709                           })
710                       .setQueryParamsExtractor(
711                           request -> {
712                             Map<String, List<String>> fields = new HashMap<>();
713                             ProtoRestSerializer<SimulateMaintenanceEventNodeGroupRequest>
714                                 serializer = ProtoRestSerializer.create();
715                             if (request.hasRequestId()) {
716                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
717                             }
718                             return fields;
719                           })
720                       .setRequestBodyExtractor(
721                           request ->
722                               ProtoRestSerializer.create()
723                                   .toBody(
724                                       "nodeGroupsSimulateMaintenanceEventRequestResource",
725                                       request
726                                           .getNodeGroupsSimulateMaintenanceEventRequestResource(),
727                                       false))
728                       .build())
729               .setResponseParser(
730                   ProtoMessageResponseParser.<Operation>newBuilder()
731                       .setDefaultInstance(Operation.getDefaultInstance())
732                       .setDefaultTypeRegistry(typeRegistry)
733                       .build())
734               .setOperationSnapshotFactory(
735                   (SimulateMaintenanceEventNodeGroupRequest request, Operation response) -> {
736                     StringBuilder opName = new StringBuilder(response.getName());
737                     opName.append(":").append(request.getProject());
738                     opName.append(":").append(request.getZone());
739                     return HttpJsonOperationSnapshot.newBuilder()
740                         .setName(opName.toString())
741                         .setMetadata(response)
742                         .setDone(Status.DONE.equals(response.getStatus()))
743                         .setResponse(response)
744                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
745                         .build();
746                   })
747               .build();
748 
749   private static final ApiMethodDescriptor<
750           TestIamPermissionsNodeGroupRequest, TestPermissionsResponse>
751       testIamPermissionsMethodDescriptor =
752           ApiMethodDescriptor
753               .<TestIamPermissionsNodeGroupRequest, TestPermissionsResponse>newBuilder()
754               .setFullMethodName("google.cloud.compute.v1.NodeGroups/TestIamPermissions")
755               .setHttpMethod("POST")
756               .setType(ApiMethodDescriptor.MethodType.UNARY)
757               .setRequestFormatter(
758                   ProtoMessageRequestFormatter.<TestIamPermissionsNodeGroupRequest>newBuilder()
759                       .setPath(
760                           "/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{resource}/testIamPermissions",
761                           request -> {
762                             Map<String, String> fields = new HashMap<>();
763                             ProtoRestSerializer<TestIamPermissionsNodeGroupRequest> serializer =
764                                 ProtoRestSerializer.create();
765                             serializer.putPathParam(fields, "project", request.getProject());
766                             serializer.putPathParam(fields, "resource", request.getResource());
767                             serializer.putPathParam(fields, "zone", request.getZone());
768                             return fields;
769                           })
770                       .setQueryParamsExtractor(
771                           request -> {
772                             Map<String, List<String>> fields = new HashMap<>();
773                             ProtoRestSerializer<TestIamPermissionsNodeGroupRequest> serializer =
774                                 ProtoRestSerializer.create();
775                             return fields;
776                           })
777                       .setRequestBodyExtractor(
778                           request ->
779                               ProtoRestSerializer.create()
780                                   .toBody(
781                                       "testPermissionsRequestResource",
782                                       request.getTestPermissionsRequestResource(),
783                                       false))
784                       .build())
785               .setResponseParser(
786                   ProtoMessageResponseParser.<TestPermissionsResponse>newBuilder()
787                       .setDefaultInstance(TestPermissionsResponse.getDefaultInstance())
788                       .setDefaultTypeRegistry(typeRegistry)
789                       .build())
790               .build();
791 
792   private final UnaryCallable<AddNodesNodeGroupRequest, Operation> addNodesCallable;
793   private final OperationCallable<AddNodesNodeGroupRequest, Operation, Operation>
794       addNodesOperationCallable;
795   private final UnaryCallable<AggregatedListNodeGroupsRequest, NodeGroupAggregatedList>
796       aggregatedListCallable;
797   private final UnaryCallable<AggregatedListNodeGroupsRequest, AggregatedListPagedResponse>
798       aggregatedListPagedCallable;
799   private final UnaryCallable<DeleteNodeGroupRequest, Operation> deleteCallable;
800   private final OperationCallable<DeleteNodeGroupRequest, Operation, Operation>
801       deleteOperationCallable;
802   private final UnaryCallable<DeleteNodesNodeGroupRequest, Operation> deleteNodesCallable;
803   private final OperationCallable<DeleteNodesNodeGroupRequest, Operation, Operation>
804       deleteNodesOperationCallable;
805   private final UnaryCallable<GetNodeGroupRequest, NodeGroup> getCallable;
806   private final UnaryCallable<GetIamPolicyNodeGroupRequest, Policy> getIamPolicyCallable;
807   private final UnaryCallable<InsertNodeGroupRequest, Operation> insertCallable;
808   private final OperationCallable<InsertNodeGroupRequest, Operation, Operation>
809       insertOperationCallable;
810   private final UnaryCallable<ListNodeGroupsRequest, NodeGroupList> listCallable;
811   private final UnaryCallable<ListNodeGroupsRequest, ListPagedResponse> listPagedCallable;
812   private final UnaryCallable<ListNodesNodeGroupsRequest, NodeGroupsListNodes> listNodesCallable;
813   private final UnaryCallable<ListNodesNodeGroupsRequest, ListNodesPagedResponse>
814       listNodesPagedCallable;
815   private final UnaryCallable<PatchNodeGroupRequest, Operation> patchCallable;
816   private final OperationCallable<PatchNodeGroupRequest, Operation, Operation>
817       patchOperationCallable;
818   private final UnaryCallable<SetIamPolicyNodeGroupRequest, Policy> setIamPolicyCallable;
819   private final UnaryCallable<SetNodeTemplateNodeGroupRequest, Operation> setNodeTemplateCallable;
820   private final OperationCallable<SetNodeTemplateNodeGroupRequest, Operation, Operation>
821       setNodeTemplateOperationCallable;
822   private final UnaryCallable<SimulateMaintenanceEventNodeGroupRequest, Operation>
823       simulateMaintenanceEventCallable;
824   private final OperationCallable<SimulateMaintenanceEventNodeGroupRequest, Operation, Operation>
825       simulateMaintenanceEventOperationCallable;
826   private final UnaryCallable<TestIamPermissionsNodeGroupRequest, TestPermissionsResponse>
827       testIamPermissionsCallable;
828 
829   private final BackgroundResource backgroundResources;
830   private final HttpJsonZoneOperationsStub httpJsonOperationsStub;
831   private final HttpJsonStubCallableFactory callableFactory;
832 
create(NodeGroupsStubSettings settings)833   public static final HttpJsonNodeGroupsStub create(NodeGroupsStubSettings settings)
834       throws IOException {
835     return new HttpJsonNodeGroupsStub(settings, ClientContext.create(settings));
836   }
837 
create(ClientContext clientContext)838   public static final HttpJsonNodeGroupsStub create(ClientContext clientContext)
839       throws IOException {
840     return new HttpJsonNodeGroupsStub(NodeGroupsStubSettings.newBuilder().build(), clientContext);
841   }
842 
create( ClientContext clientContext, HttpJsonStubCallableFactory callableFactory)843   public static final HttpJsonNodeGroupsStub create(
844       ClientContext clientContext, HttpJsonStubCallableFactory callableFactory) throws IOException {
845     return new HttpJsonNodeGroupsStub(
846         NodeGroupsStubSettings.newBuilder().build(), clientContext, callableFactory);
847   }
848 
849   /**
850    * Constructs an instance of HttpJsonNodeGroupsStub, using the given settings. This is protected
851    * so that it is easy to make a subclass, but otherwise, the static factory methods should be
852    * preferred.
853    */
HttpJsonNodeGroupsStub(NodeGroupsStubSettings settings, ClientContext clientContext)854   protected HttpJsonNodeGroupsStub(NodeGroupsStubSettings settings, ClientContext clientContext)
855       throws IOException {
856     this(settings, clientContext, new HttpJsonNodeGroupsCallableFactory());
857   }
858 
859   /**
860    * Constructs an instance of HttpJsonNodeGroupsStub, using the given settings. This is protected
861    * so that it is easy to make a subclass, but otherwise, the static factory methods should be
862    * preferred.
863    */
HttpJsonNodeGroupsStub( NodeGroupsStubSettings settings, ClientContext clientContext, HttpJsonStubCallableFactory callableFactory)864   protected HttpJsonNodeGroupsStub(
865       NodeGroupsStubSettings settings,
866       ClientContext clientContext,
867       HttpJsonStubCallableFactory callableFactory)
868       throws IOException {
869     this.callableFactory = callableFactory;
870     this.httpJsonOperationsStub = HttpJsonZoneOperationsStub.create(clientContext, callableFactory);
871 
872     HttpJsonCallSettings<AddNodesNodeGroupRequest, Operation> addNodesTransportSettings =
873         HttpJsonCallSettings.<AddNodesNodeGroupRequest, Operation>newBuilder()
874             .setMethodDescriptor(addNodesMethodDescriptor)
875             .setTypeRegistry(typeRegistry)
876             .build();
877     HttpJsonCallSettings<AggregatedListNodeGroupsRequest, NodeGroupAggregatedList>
878         aggregatedListTransportSettings =
879             HttpJsonCallSettings
880                 .<AggregatedListNodeGroupsRequest, NodeGroupAggregatedList>newBuilder()
881                 .setMethodDescriptor(aggregatedListMethodDescriptor)
882                 .setTypeRegistry(typeRegistry)
883                 .build();
884     HttpJsonCallSettings<DeleteNodeGroupRequest, Operation> deleteTransportSettings =
885         HttpJsonCallSettings.<DeleteNodeGroupRequest, Operation>newBuilder()
886             .setMethodDescriptor(deleteMethodDescriptor)
887             .setTypeRegistry(typeRegistry)
888             .build();
889     HttpJsonCallSettings<DeleteNodesNodeGroupRequest, Operation> deleteNodesTransportSettings =
890         HttpJsonCallSettings.<DeleteNodesNodeGroupRequest, Operation>newBuilder()
891             .setMethodDescriptor(deleteNodesMethodDescriptor)
892             .setTypeRegistry(typeRegistry)
893             .build();
894     HttpJsonCallSettings<GetNodeGroupRequest, NodeGroup> getTransportSettings =
895         HttpJsonCallSettings.<GetNodeGroupRequest, NodeGroup>newBuilder()
896             .setMethodDescriptor(getMethodDescriptor)
897             .setTypeRegistry(typeRegistry)
898             .build();
899     HttpJsonCallSettings<GetIamPolicyNodeGroupRequest, Policy> getIamPolicyTransportSettings =
900         HttpJsonCallSettings.<GetIamPolicyNodeGroupRequest, Policy>newBuilder()
901             .setMethodDescriptor(getIamPolicyMethodDescriptor)
902             .setTypeRegistry(typeRegistry)
903             .build();
904     HttpJsonCallSettings<InsertNodeGroupRequest, Operation> insertTransportSettings =
905         HttpJsonCallSettings.<InsertNodeGroupRequest, Operation>newBuilder()
906             .setMethodDescriptor(insertMethodDescriptor)
907             .setTypeRegistry(typeRegistry)
908             .build();
909     HttpJsonCallSettings<ListNodeGroupsRequest, NodeGroupList> listTransportSettings =
910         HttpJsonCallSettings.<ListNodeGroupsRequest, NodeGroupList>newBuilder()
911             .setMethodDescriptor(listMethodDescriptor)
912             .setTypeRegistry(typeRegistry)
913             .build();
914     HttpJsonCallSettings<ListNodesNodeGroupsRequest, NodeGroupsListNodes>
915         listNodesTransportSettings =
916             HttpJsonCallSettings.<ListNodesNodeGroupsRequest, NodeGroupsListNodes>newBuilder()
917                 .setMethodDescriptor(listNodesMethodDescriptor)
918                 .setTypeRegistry(typeRegistry)
919                 .build();
920     HttpJsonCallSettings<PatchNodeGroupRequest, Operation> patchTransportSettings =
921         HttpJsonCallSettings.<PatchNodeGroupRequest, Operation>newBuilder()
922             .setMethodDescriptor(patchMethodDescriptor)
923             .setTypeRegistry(typeRegistry)
924             .build();
925     HttpJsonCallSettings<SetIamPolicyNodeGroupRequest, Policy> setIamPolicyTransportSettings =
926         HttpJsonCallSettings.<SetIamPolicyNodeGroupRequest, Policy>newBuilder()
927             .setMethodDescriptor(setIamPolicyMethodDescriptor)
928             .setTypeRegistry(typeRegistry)
929             .build();
930     HttpJsonCallSettings<SetNodeTemplateNodeGroupRequest, Operation>
931         setNodeTemplateTransportSettings =
932             HttpJsonCallSettings.<SetNodeTemplateNodeGroupRequest, Operation>newBuilder()
933                 .setMethodDescriptor(setNodeTemplateMethodDescriptor)
934                 .setTypeRegistry(typeRegistry)
935                 .build();
936     HttpJsonCallSettings<SimulateMaintenanceEventNodeGroupRequest, Operation>
937         simulateMaintenanceEventTransportSettings =
938             HttpJsonCallSettings.<SimulateMaintenanceEventNodeGroupRequest, Operation>newBuilder()
939                 .setMethodDescriptor(simulateMaintenanceEventMethodDescriptor)
940                 .setTypeRegistry(typeRegistry)
941                 .build();
942     HttpJsonCallSettings<TestIamPermissionsNodeGroupRequest, TestPermissionsResponse>
943         testIamPermissionsTransportSettings =
944             HttpJsonCallSettings
945                 .<TestIamPermissionsNodeGroupRequest, TestPermissionsResponse>newBuilder()
946                 .setMethodDescriptor(testIamPermissionsMethodDescriptor)
947                 .setTypeRegistry(typeRegistry)
948                 .build();
949 
950     this.addNodesCallable =
951         callableFactory.createUnaryCallable(
952             addNodesTransportSettings, settings.addNodesSettings(), clientContext);
953     this.addNodesOperationCallable =
954         callableFactory.createOperationCallable(
955             addNodesTransportSettings,
956             settings.addNodesOperationSettings(),
957             clientContext,
958             httpJsonOperationsStub);
959     this.aggregatedListCallable =
960         callableFactory.createUnaryCallable(
961             aggregatedListTransportSettings, settings.aggregatedListSettings(), clientContext);
962     this.aggregatedListPagedCallable =
963         callableFactory.createPagedCallable(
964             aggregatedListTransportSettings, settings.aggregatedListSettings(), clientContext);
965     this.deleteCallable =
966         callableFactory.createUnaryCallable(
967             deleteTransportSettings, settings.deleteSettings(), clientContext);
968     this.deleteOperationCallable =
969         callableFactory.createOperationCallable(
970             deleteTransportSettings,
971             settings.deleteOperationSettings(),
972             clientContext,
973             httpJsonOperationsStub);
974     this.deleteNodesCallable =
975         callableFactory.createUnaryCallable(
976             deleteNodesTransportSettings, settings.deleteNodesSettings(), clientContext);
977     this.deleteNodesOperationCallable =
978         callableFactory.createOperationCallable(
979             deleteNodesTransportSettings,
980             settings.deleteNodesOperationSettings(),
981             clientContext,
982             httpJsonOperationsStub);
983     this.getCallable =
984         callableFactory.createUnaryCallable(
985             getTransportSettings, settings.getSettings(), clientContext);
986     this.getIamPolicyCallable =
987         callableFactory.createUnaryCallable(
988             getIamPolicyTransportSettings, settings.getIamPolicySettings(), clientContext);
989     this.insertCallable =
990         callableFactory.createUnaryCallable(
991             insertTransportSettings, settings.insertSettings(), clientContext);
992     this.insertOperationCallable =
993         callableFactory.createOperationCallable(
994             insertTransportSettings,
995             settings.insertOperationSettings(),
996             clientContext,
997             httpJsonOperationsStub);
998     this.listCallable =
999         callableFactory.createUnaryCallable(
1000             listTransportSettings, settings.listSettings(), clientContext);
1001     this.listPagedCallable =
1002         callableFactory.createPagedCallable(
1003             listTransportSettings, settings.listSettings(), clientContext);
1004     this.listNodesCallable =
1005         callableFactory.createUnaryCallable(
1006             listNodesTransportSettings, settings.listNodesSettings(), clientContext);
1007     this.listNodesPagedCallable =
1008         callableFactory.createPagedCallable(
1009             listNodesTransportSettings, settings.listNodesSettings(), clientContext);
1010     this.patchCallable =
1011         callableFactory.createUnaryCallable(
1012             patchTransportSettings, settings.patchSettings(), clientContext);
1013     this.patchOperationCallable =
1014         callableFactory.createOperationCallable(
1015             patchTransportSettings,
1016             settings.patchOperationSettings(),
1017             clientContext,
1018             httpJsonOperationsStub);
1019     this.setIamPolicyCallable =
1020         callableFactory.createUnaryCallable(
1021             setIamPolicyTransportSettings, settings.setIamPolicySettings(), clientContext);
1022     this.setNodeTemplateCallable =
1023         callableFactory.createUnaryCallable(
1024             setNodeTemplateTransportSettings, settings.setNodeTemplateSettings(), clientContext);
1025     this.setNodeTemplateOperationCallable =
1026         callableFactory.createOperationCallable(
1027             setNodeTemplateTransportSettings,
1028             settings.setNodeTemplateOperationSettings(),
1029             clientContext,
1030             httpJsonOperationsStub);
1031     this.simulateMaintenanceEventCallable =
1032         callableFactory.createUnaryCallable(
1033             simulateMaintenanceEventTransportSettings,
1034             settings.simulateMaintenanceEventSettings(),
1035             clientContext);
1036     this.simulateMaintenanceEventOperationCallable =
1037         callableFactory.createOperationCallable(
1038             simulateMaintenanceEventTransportSettings,
1039             settings.simulateMaintenanceEventOperationSettings(),
1040             clientContext,
1041             httpJsonOperationsStub);
1042     this.testIamPermissionsCallable =
1043         callableFactory.createUnaryCallable(
1044             testIamPermissionsTransportSettings,
1045             settings.testIamPermissionsSettings(),
1046             clientContext);
1047 
1048     this.backgroundResources =
1049         new BackgroundResourceAggregation(clientContext.getBackgroundResources());
1050   }
1051 
1052   @InternalApi
getMethodDescriptors()1053   public static List<ApiMethodDescriptor> getMethodDescriptors() {
1054     List<ApiMethodDescriptor> methodDescriptors = new ArrayList<>();
1055     methodDescriptors.add(addNodesMethodDescriptor);
1056     methodDescriptors.add(aggregatedListMethodDescriptor);
1057     methodDescriptors.add(deleteMethodDescriptor);
1058     methodDescriptors.add(deleteNodesMethodDescriptor);
1059     methodDescriptors.add(getMethodDescriptor);
1060     methodDescriptors.add(getIamPolicyMethodDescriptor);
1061     methodDescriptors.add(insertMethodDescriptor);
1062     methodDescriptors.add(listMethodDescriptor);
1063     methodDescriptors.add(listNodesMethodDescriptor);
1064     methodDescriptors.add(patchMethodDescriptor);
1065     methodDescriptors.add(setIamPolicyMethodDescriptor);
1066     methodDescriptors.add(setNodeTemplateMethodDescriptor);
1067     methodDescriptors.add(simulateMaintenanceEventMethodDescriptor);
1068     methodDescriptors.add(testIamPermissionsMethodDescriptor);
1069     return methodDescriptors;
1070   }
1071 
1072   @Override
addNodesCallable()1073   public UnaryCallable<AddNodesNodeGroupRequest, Operation> addNodesCallable() {
1074     return addNodesCallable;
1075   }
1076 
1077   @Override
1078   public OperationCallable<AddNodesNodeGroupRequest, Operation, Operation>
addNodesOperationCallable()1079       addNodesOperationCallable() {
1080     return addNodesOperationCallable;
1081   }
1082 
1083   @Override
1084   public UnaryCallable<AggregatedListNodeGroupsRequest, NodeGroupAggregatedList>
aggregatedListCallable()1085       aggregatedListCallable() {
1086     return aggregatedListCallable;
1087   }
1088 
1089   @Override
1090   public UnaryCallable<AggregatedListNodeGroupsRequest, AggregatedListPagedResponse>
aggregatedListPagedCallable()1091       aggregatedListPagedCallable() {
1092     return aggregatedListPagedCallable;
1093   }
1094 
1095   @Override
deleteCallable()1096   public UnaryCallable<DeleteNodeGroupRequest, Operation> deleteCallable() {
1097     return deleteCallable;
1098   }
1099 
1100   @Override
deleteOperationCallable()1101   public OperationCallable<DeleteNodeGroupRequest, Operation, Operation> deleteOperationCallable() {
1102     return deleteOperationCallable;
1103   }
1104 
1105   @Override
deleteNodesCallable()1106   public UnaryCallable<DeleteNodesNodeGroupRequest, Operation> deleteNodesCallable() {
1107     return deleteNodesCallable;
1108   }
1109 
1110   @Override
1111   public OperationCallable<DeleteNodesNodeGroupRequest, Operation, Operation>
deleteNodesOperationCallable()1112       deleteNodesOperationCallable() {
1113     return deleteNodesOperationCallable;
1114   }
1115 
1116   @Override
getCallable()1117   public UnaryCallable<GetNodeGroupRequest, NodeGroup> getCallable() {
1118     return getCallable;
1119   }
1120 
1121   @Override
getIamPolicyCallable()1122   public UnaryCallable<GetIamPolicyNodeGroupRequest, Policy> getIamPolicyCallable() {
1123     return getIamPolicyCallable;
1124   }
1125 
1126   @Override
insertCallable()1127   public UnaryCallable<InsertNodeGroupRequest, Operation> insertCallable() {
1128     return insertCallable;
1129   }
1130 
1131   @Override
insertOperationCallable()1132   public OperationCallable<InsertNodeGroupRequest, Operation, Operation> insertOperationCallable() {
1133     return insertOperationCallable;
1134   }
1135 
1136   @Override
listCallable()1137   public UnaryCallable<ListNodeGroupsRequest, NodeGroupList> listCallable() {
1138     return listCallable;
1139   }
1140 
1141   @Override
listPagedCallable()1142   public UnaryCallable<ListNodeGroupsRequest, ListPagedResponse> listPagedCallable() {
1143     return listPagedCallable;
1144   }
1145 
1146   @Override
listNodesCallable()1147   public UnaryCallable<ListNodesNodeGroupsRequest, NodeGroupsListNodes> listNodesCallable() {
1148     return listNodesCallable;
1149   }
1150 
1151   @Override
1152   public UnaryCallable<ListNodesNodeGroupsRequest, ListNodesPagedResponse>
listNodesPagedCallable()1153       listNodesPagedCallable() {
1154     return listNodesPagedCallable;
1155   }
1156 
1157   @Override
patchCallable()1158   public UnaryCallable<PatchNodeGroupRequest, Operation> patchCallable() {
1159     return patchCallable;
1160   }
1161 
1162   @Override
patchOperationCallable()1163   public OperationCallable<PatchNodeGroupRequest, Operation, Operation> patchOperationCallable() {
1164     return patchOperationCallable;
1165   }
1166 
1167   @Override
setIamPolicyCallable()1168   public UnaryCallable<SetIamPolicyNodeGroupRequest, Policy> setIamPolicyCallable() {
1169     return setIamPolicyCallable;
1170   }
1171 
1172   @Override
setNodeTemplateCallable()1173   public UnaryCallable<SetNodeTemplateNodeGroupRequest, Operation> setNodeTemplateCallable() {
1174     return setNodeTemplateCallable;
1175   }
1176 
1177   @Override
1178   public OperationCallable<SetNodeTemplateNodeGroupRequest, Operation, Operation>
setNodeTemplateOperationCallable()1179       setNodeTemplateOperationCallable() {
1180     return setNodeTemplateOperationCallable;
1181   }
1182 
1183   @Override
1184   public UnaryCallable<SimulateMaintenanceEventNodeGroupRequest, Operation>
simulateMaintenanceEventCallable()1185       simulateMaintenanceEventCallable() {
1186     return simulateMaintenanceEventCallable;
1187   }
1188 
1189   @Override
1190   public OperationCallable<SimulateMaintenanceEventNodeGroupRequest, Operation, Operation>
simulateMaintenanceEventOperationCallable()1191       simulateMaintenanceEventOperationCallable() {
1192     return simulateMaintenanceEventOperationCallable;
1193   }
1194 
1195   @Override
1196   public UnaryCallable<TestIamPermissionsNodeGroupRequest, TestPermissionsResponse>
testIamPermissionsCallable()1197       testIamPermissionsCallable() {
1198     return testIamPermissionsCallable;
1199   }
1200 
1201   @Override
close()1202   public final void close() {
1203     try {
1204       backgroundResources.close();
1205     } catch (RuntimeException e) {
1206       throw e;
1207     } catch (Exception e) {
1208       throw new IllegalStateException("Failed to close resource", e);
1209     }
1210   }
1211 
1212   @Override
shutdown()1213   public void shutdown() {
1214     backgroundResources.shutdown();
1215   }
1216 
1217   @Override
isShutdown()1218   public boolean isShutdown() {
1219     return backgroundResources.isShutdown();
1220   }
1221 
1222   @Override
isTerminated()1223   public boolean isTerminated() {
1224     return backgroundResources.isTerminated();
1225   }
1226 
1227   @Override
shutdownNow()1228   public void shutdownNow() {
1229     backgroundResources.shutdownNow();
1230   }
1231 
1232   @Override
awaitTermination(long duration, TimeUnit unit)1233   public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException {
1234     return backgroundResources.awaitTermination(duration, unit);
1235   }
1236 }
1237