• 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.InstancesClient.AggregatedListPagedResponse;
20 import static com.google.cloud.compute.v1.InstancesClient.ListPagedResponse;
21 import static com.google.cloud.compute.v1.InstancesClient.ListReferrersPagedResponse;
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.AddAccessConfigInstanceRequest;
38 import com.google.cloud.compute.v1.AddResourcePoliciesInstanceRequest;
39 import com.google.cloud.compute.v1.AggregatedListInstancesRequest;
40 import com.google.cloud.compute.v1.AttachDiskInstanceRequest;
41 import com.google.cloud.compute.v1.BulkInsertInstanceRequest;
42 import com.google.cloud.compute.v1.DeleteAccessConfigInstanceRequest;
43 import com.google.cloud.compute.v1.DeleteInstanceRequest;
44 import com.google.cloud.compute.v1.DetachDiskInstanceRequest;
45 import com.google.cloud.compute.v1.GetEffectiveFirewallsInstanceRequest;
46 import com.google.cloud.compute.v1.GetGuestAttributesInstanceRequest;
47 import com.google.cloud.compute.v1.GetIamPolicyInstanceRequest;
48 import com.google.cloud.compute.v1.GetInstanceRequest;
49 import com.google.cloud.compute.v1.GetScreenshotInstanceRequest;
50 import com.google.cloud.compute.v1.GetSerialPortOutputInstanceRequest;
51 import com.google.cloud.compute.v1.GetShieldedInstanceIdentityInstanceRequest;
52 import com.google.cloud.compute.v1.GuestAttributes;
53 import com.google.cloud.compute.v1.InsertInstanceRequest;
54 import com.google.cloud.compute.v1.Instance;
55 import com.google.cloud.compute.v1.InstanceAggregatedList;
56 import com.google.cloud.compute.v1.InstanceList;
57 import com.google.cloud.compute.v1.InstanceListReferrers;
58 import com.google.cloud.compute.v1.InstancesGetEffectiveFirewallsResponse;
59 import com.google.cloud.compute.v1.ListInstancesRequest;
60 import com.google.cloud.compute.v1.ListReferrersInstancesRequest;
61 import com.google.cloud.compute.v1.Operation;
62 import com.google.cloud.compute.v1.Operation.Status;
63 import com.google.cloud.compute.v1.Policy;
64 import com.google.cloud.compute.v1.RemoveResourcePoliciesInstanceRequest;
65 import com.google.cloud.compute.v1.ResetInstanceRequest;
66 import com.google.cloud.compute.v1.ResumeInstanceRequest;
67 import com.google.cloud.compute.v1.Screenshot;
68 import com.google.cloud.compute.v1.SendDiagnosticInterruptInstanceRequest;
69 import com.google.cloud.compute.v1.SendDiagnosticInterruptInstanceResponse;
70 import com.google.cloud.compute.v1.SerialPortOutput;
71 import com.google.cloud.compute.v1.SetDeletionProtectionInstanceRequest;
72 import com.google.cloud.compute.v1.SetDiskAutoDeleteInstanceRequest;
73 import com.google.cloud.compute.v1.SetIamPolicyInstanceRequest;
74 import com.google.cloud.compute.v1.SetLabelsInstanceRequest;
75 import com.google.cloud.compute.v1.SetMachineResourcesInstanceRequest;
76 import com.google.cloud.compute.v1.SetMachineTypeInstanceRequest;
77 import com.google.cloud.compute.v1.SetMetadataInstanceRequest;
78 import com.google.cloud.compute.v1.SetMinCpuPlatformInstanceRequest;
79 import com.google.cloud.compute.v1.SetNameInstanceRequest;
80 import com.google.cloud.compute.v1.SetSchedulingInstanceRequest;
81 import com.google.cloud.compute.v1.SetServiceAccountInstanceRequest;
82 import com.google.cloud.compute.v1.SetShieldedInstanceIntegrityPolicyInstanceRequest;
83 import com.google.cloud.compute.v1.SetTagsInstanceRequest;
84 import com.google.cloud.compute.v1.ShieldedInstanceIdentity;
85 import com.google.cloud.compute.v1.SimulateMaintenanceEventInstanceRequest;
86 import com.google.cloud.compute.v1.StartInstanceRequest;
87 import com.google.cloud.compute.v1.StartWithEncryptionKeyInstanceRequest;
88 import com.google.cloud.compute.v1.StopInstanceRequest;
89 import com.google.cloud.compute.v1.SuspendInstanceRequest;
90 import com.google.cloud.compute.v1.TestIamPermissionsInstanceRequest;
91 import com.google.cloud.compute.v1.TestPermissionsResponse;
92 import com.google.cloud.compute.v1.UpdateAccessConfigInstanceRequest;
93 import com.google.cloud.compute.v1.UpdateDisplayDeviceInstanceRequest;
94 import com.google.cloud.compute.v1.UpdateInstanceRequest;
95 import com.google.cloud.compute.v1.UpdateNetworkInterfaceInstanceRequest;
96 import com.google.cloud.compute.v1.UpdateShieldedInstanceConfigInstanceRequest;
97 import com.google.protobuf.TypeRegistry;
98 import java.io.IOException;
99 import java.util.ArrayList;
100 import java.util.HashMap;
101 import java.util.List;
102 import java.util.Map;
103 import java.util.concurrent.TimeUnit;
104 import javax.annotation.Generated;
105 
106 // AUTO-GENERATED DOCUMENTATION AND CLASS.
107 /**
108  * REST stub implementation for the Instances service API.
109  *
110  * <p>This class is for advanced usage and reflects the underlying API directly.
111  */
112 @Generated("by gapic-generator-java")
113 @BetaApi
114 public class HttpJsonInstancesStub extends InstancesStub {
115   private static final TypeRegistry typeRegistry =
116       TypeRegistry.newBuilder().add(Operation.getDescriptor()).build();
117 
118   private static final ApiMethodDescriptor<AddAccessConfigInstanceRequest, Operation>
119       addAccessConfigMethodDescriptor =
120           ApiMethodDescriptor.<AddAccessConfigInstanceRequest, Operation>newBuilder()
121               .setFullMethodName("google.cloud.compute.v1.Instances/AddAccessConfig")
122               .setHttpMethod("POST")
123               .setType(ApiMethodDescriptor.MethodType.UNARY)
124               .setRequestFormatter(
125                   ProtoMessageRequestFormatter.<AddAccessConfigInstanceRequest>newBuilder()
126                       .setPath(
127                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/addAccessConfig",
128                           request -> {
129                             Map<String, String> fields = new HashMap<>();
130                             ProtoRestSerializer<AddAccessConfigInstanceRequest> serializer =
131                                 ProtoRestSerializer.create();
132                             serializer.putPathParam(fields, "instance", request.getInstance());
133                             serializer.putPathParam(fields, "project", request.getProject());
134                             serializer.putPathParam(fields, "zone", request.getZone());
135                             return fields;
136                           })
137                       .setQueryParamsExtractor(
138                           request -> {
139                             Map<String, List<String>> fields = new HashMap<>();
140                             ProtoRestSerializer<AddAccessConfigInstanceRequest> serializer =
141                                 ProtoRestSerializer.create();
142                             serializer.putQueryParam(
143                                 fields, "networkInterface", request.getNetworkInterface());
144                             if (request.hasRequestId()) {
145                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
146                             }
147                             return fields;
148                           })
149                       .setRequestBodyExtractor(
150                           request ->
151                               ProtoRestSerializer.create()
152                                   .toBody(
153                                       "accessConfigResource",
154                                       request.getAccessConfigResource(),
155                                       false))
156                       .build())
157               .setResponseParser(
158                   ProtoMessageResponseParser.<Operation>newBuilder()
159                       .setDefaultInstance(Operation.getDefaultInstance())
160                       .setDefaultTypeRegistry(typeRegistry)
161                       .build())
162               .setOperationSnapshotFactory(
163                   (AddAccessConfigInstanceRequest request, Operation response) -> {
164                     StringBuilder opName = new StringBuilder(response.getName());
165                     opName.append(":").append(request.getProject());
166                     opName.append(":").append(request.getZone());
167                     return HttpJsonOperationSnapshot.newBuilder()
168                         .setName(opName.toString())
169                         .setMetadata(response)
170                         .setDone(Status.DONE.equals(response.getStatus()))
171                         .setResponse(response)
172                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
173                         .build();
174                   })
175               .build();
176 
177   private static final ApiMethodDescriptor<AddResourcePoliciesInstanceRequest, Operation>
178       addResourcePoliciesMethodDescriptor =
179           ApiMethodDescriptor.<AddResourcePoliciesInstanceRequest, Operation>newBuilder()
180               .setFullMethodName("google.cloud.compute.v1.Instances/AddResourcePolicies")
181               .setHttpMethod("POST")
182               .setType(ApiMethodDescriptor.MethodType.UNARY)
183               .setRequestFormatter(
184                   ProtoMessageRequestFormatter.<AddResourcePoliciesInstanceRequest>newBuilder()
185                       .setPath(
186                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/addResourcePolicies",
187                           request -> {
188                             Map<String, String> fields = new HashMap<>();
189                             ProtoRestSerializer<AddResourcePoliciesInstanceRequest> serializer =
190                                 ProtoRestSerializer.create();
191                             serializer.putPathParam(fields, "instance", request.getInstance());
192                             serializer.putPathParam(fields, "project", request.getProject());
193                             serializer.putPathParam(fields, "zone", request.getZone());
194                             return fields;
195                           })
196                       .setQueryParamsExtractor(
197                           request -> {
198                             Map<String, List<String>> fields = new HashMap<>();
199                             ProtoRestSerializer<AddResourcePoliciesInstanceRequest> serializer =
200                                 ProtoRestSerializer.create();
201                             if (request.hasRequestId()) {
202                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
203                             }
204                             return fields;
205                           })
206                       .setRequestBodyExtractor(
207                           request ->
208                               ProtoRestSerializer.create()
209                                   .toBody(
210                                       "instancesAddResourcePoliciesRequestResource",
211                                       request.getInstancesAddResourcePoliciesRequestResource(),
212                                       false))
213                       .build())
214               .setResponseParser(
215                   ProtoMessageResponseParser.<Operation>newBuilder()
216                       .setDefaultInstance(Operation.getDefaultInstance())
217                       .setDefaultTypeRegistry(typeRegistry)
218                       .build())
219               .setOperationSnapshotFactory(
220                   (AddResourcePoliciesInstanceRequest request, Operation response) -> {
221                     StringBuilder opName = new StringBuilder(response.getName());
222                     opName.append(":").append(request.getProject());
223                     opName.append(":").append(request.getZone());
224                     return HttpJsonOperationSnapshot.newBuilder()
225                         .setName(opName.toString())
226                         .setMetadata(response)
227                         .setDone(Status.DONE.equals(response.getStatus()))
228                         .setResponse(response)
229                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
230                         .build();
231                   })
232               .build();
233 
234   private static final ApiMethodDescriptor<AggregatedListInstancesRequest, InstanceAggregatedList>
235       aggregatedListMethodDescriptor =
236           ApiMethodDescriptor.<AggregatedListInstancesRequest, InstanceAggregatedList>newBuilder()
237               .setFullMethodName("google.cloud.compute.v1.Instances/AggregatedList")
238               .setHttpMethod("GET")
239               .setType(ApiMethodDescriptor.MethodType.UNARY)
240               .setRequestFormatter(
241                   ProtoMessageRequestFormatter.<AggregatedListInstancesRequest>newBuilder()
242                       .setPath(
243                           "/compute/v1/projects/{project}/aggregated/instances",
244                           request -> {
245                             Map<String, String> fields = new HashMap<>();
246                             ProtoRestSerializer<AggregatedListInstancesRequest> serializer =
247                                 ProtoRestSerializer.create();
248                             serializer.putPathParam(fields, "project", request.getProject());
249                             return fields;
250                           })
251                       .setQueryParamsExtractor(
252                           request -> {
253                             Map<String, List<String>> fields = new HashMap<>();
254                             ProtoRestSerializer<AggregatedListInstancesRequest> serializer =
255                                 ProtoRestSerializer.create();
256                             if (request.hasFilter()) {
257                               serializer.putQueryParam(fields, "filter", request.getFilter());
258                             }
259                             if (request.hasIncludeAllScopes()) {
260                               serializer.putQueryParam(
261                                   fields, "includeAllScopes", request.getIncludeAllScopes());
262                             }
263                             if (request.hasMaxResults()) {
264                               serializer.putQueryParam(
265                                   fields, "maxResults", request.getMaxResults());
266                             }
267                             if (request.hasOrderBy()) {
268                               serializer.putQueryParam(fields, "orderBy", request.getOrderBy());
269                             }
270                             if (request.hasPageToken()) {
271                               serializer.putQueryParam(fields, "pageToken", request.getPageToken());
272                             }
273                             if (request.hasReturnPartialSuccess()) {
274                               serializer.putQueryParam(
275                                   fields,
276                                   "returnPartialSuccess",
277                                   request.getReturnPartialSuccess());
278                             }
279                             return fields;
280                           })
281                       .setRequestBodyExtractor(request -> null)
282                       .build())
283               .setResponseParser(
284                   ProtoMessageResponseParser.<InstanceAggregatedList>newBuilder()
285                       .setDefaultInstance(InstanceAggregatedList.getDefaultInstance())
286                       .setDefaultTypeRegistry(typeRegistry)
287                       .build())
288               .build();
289 
290   private static final ApiMethodDescriptor<AttachDiskInstanceRequest, Operation>
291       attachDiskMethodDescriptor =
292           ApiMethodDescriptor.<AttachDiskInstanceRequest, Operation>newBuilder()
293               .setFullMethodName("google.cloud.compute.v1.Instances/AttachDisk")
294               .setHttpMethod("POST")
295               .setType(ApiMethodDescriptor.MethodType.UNARY)
296               .setRequestFormatter(
297                   ProtoMessageRequestFormatter.<AttachDiskInstanceRequest>newBuilder()
298                       .setPath(
299                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/attachDisk",
300                           request -> {
301                             Map<String, String> fields = new HashMap<>();
302                             ProtoRestSerializer<AttachDiskInstanceRequest> serializer =
303                                 ProtoRestSerializer.create();
304                             serializer.putPathParam(fields, "instance", request.getInstance());
305                             serializer.putPathParam(fields, "project", request.getProject());
306                             serializer.putPathParam(fields, "zone", request.getZone());
307                             return fields;
308                           })
309                       .setQueryParamsExtractor(
310                           request -> {
311                             Map<String, List<String>> fields = new HashMap<>();
312                             ProtoRestSerializer<AttachDiskInstanceRequest> serializer =
313                                 ProtoRestSerializer.create();
314                             if (request.hasForceAttach()) {
315                               serializer.putQueryParam(
316                                   fields, "forceAttach", request.getForceAttach());
317                             }
318                             if (request.hasRequestId()) {
319                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
320                             }
321                             return fields;
322                           })
323                       .setRequestBodyExtractor(
324                           request ->
325                               ProtoRestSerializer.create()
326                                   .toBody(
327                                       "attachedDiskResource",
328                                       request.getAttachedDiskResource(),
329                                       false))
330                       .build())
331               .setResponseParser(
332                   ProtoMessageResponseParser.<Operation>newBuilder()
333                       .setDefaultInstance(Operation.getDefaultInstance())
334                       .setDefaultTypeRegistry(typeRegistry)
335                       .build())
336               .setOperationSnapshotFactory(
337                   (AttachDiskInstanceRequest request, Operation response) -> {
338                     StringBuilder opName = new StringBuilder(response.getName());
339                     opName.append(":").append(request.getProject());
340                     opName.append(":").append(request.getZone());
341                     return HttpJsonOperationSnapshot.newBuilder()
342                         .setName(opName.toString())
343                         .setMetadata(response)
344                         .setDone(Status.DONE.equals(response.getStatus()))
345                         .setResponse(response)
346                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
347                         .build();
348                   })
349               .build();
350 
351   private static final ApiMethodDescriptor<BulkInsertInstanceRequest, Operation>
352       bulkInsertMethodDescriptor =
353           ApiMethodDescriptor.<BulkInsertInstanceRequest, Operation>newBuilder()
354               .setFullMethodName("google.cloud.compute.v1.Instances/BulkInsert")
355               .setHttpMethod("POST")
356               .setType(ApiMethodDescriptor.MethodType.UNARY)
357               .setRequestFormatter(
358                   ProtoMessageRequestFormatter.<BulkInsertInstanceRequest>newBuilder()
359                       .setPath(
360                           "/compute/v1/projects/{project}/zones/{zone}/instances/bulkInsert",
361                           request -> {
362                             Map<String, String> fields = new HashMap<>();
363                             ProtoRestSerializer<BulkInsertInstanceRequest> serializer =
364                                 ProtoRestSerializer.create();
365                             serializer.putPathParam(fields, "project", request.getProject());
366                             serializer.putPathParam(fields, "zone", request.getZone());
367                             return fields;
368                           })
369                       .setQueryParamsExtractor(
370                           request -> {
371                             Map<String, List<String>> fields = new HashMap<>();
372                             ProtoRestSerializer<BulkInsertInstanceRequest> serializer =
373                                 ProtoRestSerializer.create();
374                             if (request.hasRequestId()) {
375                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
376                             }
377                             return fields;
378                           })
379                       .setRequestBodyExtractor(
380                           request ->
381                               ProtoRestSerializer.create()
382                                   .toBody(
383                                       "bulkInsertInstanceResourceResource",
384                                       request.getBulkInsertInstanceResourceResource(),
385                                       false))
386                       .build())
387               .setResponseParser(
388                   ProtoMessageResponseParser.<Operation>newBuilder()
389                       .setDefaultInstance(Operation.getDefaultInstance())
390                       .setDefaultTypeRegistry(typeRegistry)
391                       .build())
392               .setOperationSnapshotFactory(
393                   (BulkInsertInstanceRequest request, Operation response) -> {
394                     StringBuilder opName = new StringBuilder(response.getName());
395                     opName.append(":").append(request.getProject());
396                     opName.append(":").append(request.getZone());
397                     return HttpJsonOperationSnapshot.newBuilder()
398                         .setName(opName.toString())
399                         .setMetadata(response)
400                         .setDone(Status.DONE.equals(response.getStatus()))
401                         .setResponse(response)
402                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
403                         .build();
404                   })
405               .build();
406 
407   private static final ApiMethodDescriptor<DeleteInstanceRequest, Operation>
408       deleteMethodDescriptor =
409           ApiMethodDescriptor.<DeleteInstanceRequest, Operation>newBuilder()
410               .setFullMethodName("google.cloud.compute.v1.Instances/Delete")
411               .setHttpMethod("DELETE")
412               .setType(ApiMethodDescriptor.MethodType.UNARY)
413               .setRequestFormatter(
414                   ProtoMessageRequestFormatter.<DeleteInstanceRequest>newBuilder()
415                       .setPath(
416                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}",
417                           request -> {
418                             Map<String, String> fields = new HashMap<>();
419                             ProtoRestSerializer<DeleteInstanceRequest> serializer =
420                                 ProtoRestSerializer.create();
421                             serializer.putPathParam(fields, "instance", request.getInstance());
422                             serializer.putPathParam(fields, "project", request.getProject());
423                             serializer.putPathParam(fields, "zone", request.getZone());
424                             return fields;
425                           })
426                       .setQueryParamsExtractor(
427                           request -> {
428                             Map<String, List<String>> fields = new HashMap<>();
429                             ProtoRestSerializer<DeleteInstanceRequest> serializer =
430                                 ProtoRestSerializer.create();
431                             if (request.hasRequestId()) {
432                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
433                             }
434                             return fields;
435                           })
436                       .setRequestBodyExtractor(request -> null)
437                       .build())
438               .setResponseParser(
439                   ProtoMessageResponseParser.<Operation>newBuilder()
440                       .setDefaultInstance(Operation.getDefaultInstance())
441                       .setDefaultTypeRegistry(typeRegistry)
442                       .build())
443               .setOperationSnapshotFactory(
444                   (DeleteInstanceRequest request, Operation response) -> {
445                     StringBuilder opName = new StringBuilder(response.getName());
446                     opName.append(":").append(request.getProject());
447                     opName.append(":").append(request.getZone());
448                     return HttpJsonOperationSnapshot.newBuilder()
449                         .setName(opName.toString())
450                         .setMetadata(response)
451                         .setDone(Status.DONE.equals(response.getStatus()))
452                         .setResponse(response)
453                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
454                         .build();
455                   })
456               .build();
457 
458   private static final ApiMethodDescriptor<DeleteAccessConfigInstanceRequest, Operation>
459       deleteAccessConfigMethodDescriptor =
460           ApiMethodDescriptor.<DeleteAccessConfigInstanceRequest, Operation>newBuilder()
461               .setFullMethodName("google.cloud.compute.v1.Instances/DeleteAccessConfig")
462               .setHttpMethod("POST")
463               .setType(ApiMethodDescriptor.MethodType.UNARY)
464               .setRequestFormatter(
465                   ProtoMessageRequestFormatter.<DeleteAccessConfigInstanceRequest>newBuilder()
466                       .setPath(
467                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/deleteAccessConfig",
468                           request -> {
469                             Map<String, String> fields = new HashMap<>();
470                             ProtoRestSerializer<DeleteAccessConfigInstanceRequest> serializer =
471                                 ProtoRestSerializer.create();
472                             serializer.putPathParam(fields, "instance", request.getInstance());
473                             serializer.putPathParam(fields, "project", request.getProject());
474                             serializer.putPathParam(fields, "zone", request.getZone());
475                             return fields;
476                           })
477                       .setQueryParamsExtractor(
478                           request -> {
479                             Map<String, List<String>> fields = new HashMap<>();
480                             ProtoRestSerializer<DeleteAccessConfigInstanceRequest> serializer =
481                                 ProtoRestSerializer.create();
482                             serializer.putQueryParam(
483                                 fields, "accessConfig", request.getAccessConfig());
484                             serializer.putQueryParam(
485                                 fields, "networkInterface", request.getNetworkInterface());
486                             if (request.hasRequestId()) {
487                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
488                             }
489                             return fields;
490                           })
491                       .setRequestBodyExtractor(request -> null)
492                       .build())
493               .setResponseParser(
494                   ProtoMessageResponseParser.<Operation>newBuilder()
495                       .setDefaultInstance(Operation.getDefaultInstance())
496                       .setDefaultTypeRegistry(typeRegistry)
497                       .build())
498               .setOperationSnapshotFactory(
499                   (DeleteAccessConfigInstanceRequest request, Operation response) -> {
500                     StringBuilder opName = new StringBuilder(response.getName());
501                     opName.append(":").append(request.getProject());
502                     opName.append(":").append(request.getZone());
503                     return HttpJsonOperationSnapshot.newBuilder()
504                         .setName(opName.toString())
505                         .setMetadata(response)
506                         .setDone(Status.DONE.equals(response.getStatus()))
507                         .setResponse(response)
508                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
509                         .build();
510                   })
511               .build();
512 
513   private static final ApiMethodDescriptor<DetachDiskInstanceRequest, Operation>
514       detachDiskMethodDescriptor =
515           ApiMethodDescriptor.<DetachDiskInstanceRequest, Operation>newBuilder()
516               .setFullMethodName("google.cloud.compute.v1.Instances/DetachDisk")
517               .setHttpMethod("POST")
518               .setType(ApiMethodDescriptor.MethodType.UNARY)
519               .setRequestFormatter(
520                   ProtoMessageRequestFormatter.<DetachDiskInstanceRequest>newBuilder()
521                       .setPath(
522                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/detachDisk",
523                           request -> {
524                             Map<String, String> fields = new HashMap<>();
525                             ProtoRestSerializer<DetachDiskInstanceRequest> serializer =
526                                 ProtoRestSerializer.create();
527                             serializer.putPathParam(fields, "instance", request.getInstance());
528                             serializer.putPathParam(fields, "project", request.getProject());
529                             serializer.putPathParam(fields, "zone", request.getZone());
530                             return fields;
531                           })
532                       .setQueryParamsExtractor(
533                           request -> {
534                             Map<String, List<String>> fields = new HashMap<>();
535                             ProtoRestSerializer<DetachDiskInstanceRequest> serializer =
536                                 ProtoRestSerializer.create();
537                             serializer.putQueryParam(fields, "deviceName", request.getDeviceName());
538                             if (request.hasRequestId()) {
539                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
540                             }
541                             return fields;
542                           })
543                       .setRequestBodyExtractor(request -> null)
544                       .build())
545               .setResponseParser(
546                   ProtoMessageResponseParser.<Operation>newBuilder()
547                       .setDefaultInstance(Operation.getDefaultInstance())
548                       .setDefaultTypeRegistry(typeRegistry)
549                       .build())
550               .setOperationSnapshotFactory(
551                   (DetachDiskInstanceRequest request, Operation response) -> {
552                     StringBuilder opName = new StringBuilder(response.getName());
553                     opName.append(":").append(request.getProject());
554                     opName.append(":").append(request.getZone());
555                     return HttpJsonOperationSnapshot.newBuilder()
556                         .setName(opName.toString())
557                         .setMetadata(response)
558                         .setDone(Status.DONE.equals(response.getStatus()))
559                         .setResponse(response)
560                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
561                         .build();
562                   })
563               .build();
564 
565   private static final ApiMethodDescriptor<GetInstanceRequest, Instance> getMethodDescriptor =
566       ApiMethodDescriptor.<GetInstanceRequest, Instance>newBuilder()
567           .setFullMethodName("google.cloud.compute.v1.Instances/Get")
568           .setHttpMethod("GET")
569           .setType(ApiMethodDescriptor.MethodType.UNARY)
570           .setRequestFormatter(
571               ProtoMessageRequestFormatter.<GetInstanceRequest>newBuilder()
572                   .setPath(
573                       "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}",
574                       request -> {
575                         Map<String, String> fields = new HashMap<>();
576                         ProtoRestSerializer<GetInstanceRequest> serializer =
577                             ProtoRestSerializer.create();
578                         serializer.putPathParam(fields, "instance", request.getInstance());
579                         serializer.putPathParam(fields, "project", request.getProject());
580                         serializer.putPathParam(fields, "zone", request.getZone());
581                         return fields;
582                       })
583                   .setQueryParamsExtractor(
584                       request -> {
585                         Map<String, List<String>> fields = new HashMap<>();
586                         ProtoRestSerializer<GetInstanceRequest> serializer =
587                             ProtoRestSerializer.create();
588                         return fields;
589                       })
590                   .setRequestBodyExtractor(request -> null)
591                   .build())
592           .setResponseParser(
593               ProtoMessageResponseParser.<Instance>newBuilder()
594                   .setDefaultInstance(Instance.getDefaultInstance())
595                   .setDefaultTypeRegistry(typeRegistry)
596                   .build())
597           .build();
598 
599   private static final ApiMethodDescriptor<
600           GetEffectiveFirewallsInstanceRequest, InstancesGetEffectiveFirewallsResponse>
601       getEffectiveFirewallsMethodDescriptor =
602           ApiMethodDescriptor
603               .<GetEffectiveFirewallsInstanceRequest, InstancesGetEffectiveFirewallsResponse>
604                   newBuilder()
605               .setFullMethodName("google.cloud.compute.v1.Instances/GetEffectiveFirewalls")
606               .setHttpMethod("GET")
607               .setType(ApiMethodDescriptor.MethodType.UNARY)
608               .setRequestFormatter(
609                   ProtoMessageRequestFormatter.<GetEffectiveFirewallsInstanceRequest>newBuilder()
610                       .setPath(
611                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/getEffectiveFirewalls",
612                           request -> {
613                             Map<String, String> fields = new HashMap<>();
614                             ProtoRestSerializer<GetEffectiveFirewallsInstanceRequest> serializer =
615                                 ProtoRestSerializer.create();
616                             serializer.putPathParam(fields, "instance", request.getInstance());
617                             serializer.putPathParam(fields, "project", request.getProject());
618                             serializer.putPathParam(fields, "zone", request.getZone());
619                             return fields;
620                           })
621                       .setQueryParamsExtractor(
622                           request -> {
623                             Map<String, List<String>> fields = new HashMap<>();
624                             ProtoRestSerializer<GetEffectiveFirewallsInstanceRequest> serializer =
625                                 ProtoRestSerializer.create();
626                             serializer.putQueryParam(
627                                 fields, "networkInterface", request.getNetworkInterface());
628                             return fields;
629                           })
630                       .setRequestBodyExtractor(request -> null)
631                       .build())
632               .setResponseParser(
633                   ProtoMessageResponseParser.<InstancesGetEffectiveFirewallsResponse>newBuilder()
634                       .setDefaultInstance(
635                           InstancesGetEffectiveFirewallsResponse.getDefaultInstance())
636                       .setDefaultTypeRegistry(typeRegistry)
637                       .build())
638               .build();
639 
640   private static final ApiMethodDescriptor<GetGuestAttributesInstanceRequest, GuestAttributes>
641       getGuestAttributesMethodDescriptor =
642           ApiMethodDescriptor.<GetGuestAttributesInstanceRequest, GuestAttributes>newBuilder()
643               .setFullMethodName("google.cloud.compute.v1.Instances/GetGuestAttributes")
644               .setHttpMethod("GET")
645               .setType(ApiMethodDescriptor.MethodType.UNARY)
646               .setRequestFormatter(
647                   ProtoMessageRequestFormatter.<GetGuestAttributesInstanceRequest>newBuilder()
648                       .setPath(
649                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/getGuestAttributes",
650                           request -> {
651                             Map<String, String> fields = new HashMap<>();
652                             ProtoRestSerializer<GetGuestAttributesInstanceRequest> serializer =
653                                 ProtoRestSerializer.create();
654                             serializer.putPathParam(fields, "instance", request.getInstance());
655                             serializer.putPathParam(fields, "project", request.getProject());
656                             serializer.putPathParam(fields, "zone", request.getZone());
657                             return fields;
658                           })
659                       .setQueryParamsExtractor(
660                           request -> {
661                             Map<String, List<String>> fields = new HashMap<>();
662                             ProtoRestSerializer<GetGuestAttributesInstanceRequest> serializer =
663                                 ProtoRestSerializer.create();
664                             if (request.hasQueryPath()) {
665                               serializer.putQueryParam(fields, "queryPath", request.getQueryPath());
666                             }
667                             if (request.hasVariableKey()) {
668                               serializer.putQueryParam(
669                                   fields, "variableKey", request.getVariableKey());
670                             }
671                             return fields;
672                           })
673                       .setRequestBodyExtractor(request -> null)
674                       .build())
675               .setResponseParser(
676                   ProtoMessageResponseParser.<GuestAttributes>newBuilder()
677                       .setDefaultInstance(GuestAttributes.getDefaultInstance())
678                       .setDefaultTypeRegistry(typeRegistry)
679                       .build())
680               .build();
681 
682   private static final ApiMethodDescriptor<GetIamPolicyInstanceRequest, Policy>
683       getIamPolicyMethodDescriptor =
684           ApiMethodDescriptor.<GetIamPolicyInstanceRequest, Policy>newBuilder()
685               .setFullMethodName("google.cloud.compute.v1.Instances/GetIamPolicy")
686               .setHttpMethod("GET")
687               .setType(ApiMethodDescriptor.MethodType.UNARY)
688               .setRequestFormatter(
689                   ProtoMessageRequestFormatter.<GetIamPolicyInstanceRequest>newBuilder()
690                       .setPath(
691                           "/compute/v1/projects/{project}/zones/{zone}/instances/{resource}/getIamPolicy",
692                           request -> {
693                             Map<String, String> fields = new HashMap<>();
694                             ProtoRestSerializer<GetIamPolicyInstanceRequest> serializer =
695                                 ProtoRestSerializer.create();
696                             serializer.putPathParam(fields, "project", request.getProject());
697                             serializer.putPathParam(fields, "resource", request.getResource());
698                             serializer.putPathParam(fields, "zone", request.getZone());
699                             return fields;
700                           })
701                       .setQueryParamsExtractor(
702                           request -> {
703                             Map<String, List<String>> fields = new HashMap<>();
704                             ProtoRestSerializer<GetIamPolicyInstanceRequest> serializer =
705                                 ProtoRestSerializer.create();
706                             if (request.hasOptionsRequestedPolicyVersion()) {
707                               serializer.putQueryParam(
708                                   fields,
709                                   "optionsRequestedPolicyVersion",
710                                   request.getOptionsRequestedPolicyVersion());
711                             }
712                             return fields;
713                           })
714                       .setRequestBodyExtractor(request -> null)
715                       .build())
716               .setResponseParser(
717                   ProtoMessageResponseParser.<Policy>newBuilder()
718                       .setDefaultInstance(Policy.getDefaultInstance())
719                       .setDefaultTypeRegistry(typeRegistry)
720                       .build())
721               .build();
722 
723   private static final ApiMethodDescriptor<GetScreenshotInstanceRequest, Screenshot>
724       getScreenshotMethodDescriptor =
725           ApiMethodDescriptor.<GetScreenshotInstanceRequest, Screenshot>newBuilder()
726               .setFullMethodName("google.cloud.compute.v1.Instances/GetScreenshot")
727               .setHttpMethod("GET")
728               .setType(ApiMethodDescriptor.MethodType.UNARY)
729               .setRequestFormatter(
730                   ProtoMessageRequestFormatter.<GetScreenshotInstanceRequest>newBuilder()
731                       .setPath(
732                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/screenshot",
733                           request -> {
734                             Map<String, String> fields = new HashMap<>();
735                             ProtoRestSerializer<GetScreenshotInstanceRequest> serializer =
736                                 ProtoRestSerializer.create();
737                             serializer.putPathParam(fields, "instance", request.getInstance());
738                             serializer.putPathParam(fields, "project", request.getProject());
739                             serializer.putPathParam(fields, "zone", request.getZone());
740                             return fields;
741                           })
742                       .setQueryParamsExtractor(
743                           request -> {
744                             Map<String, List<String>> fields = new HashMap<>();
745                             ProtoRestSerializer<GetScreenshotInstanceRequest> serializer =
746                                 ProtoRestSerializer.create();
747                             return fields;
748                           })
749                       .setRequestBodyExtractor(request -> null)
750                       .build())
751               .setResponseParser(
752                   ProtoMessageResponseParser.<Screenshot>newBuilder()
753                       .setDefaultInstance(Screenshot.getDefaultInstance())
754                       .setDefaultTypeRegistry(typeRegistry)
755                       .build())
756               .build();
757 
758   private static final ApiMethodDescriptor<GetSerialPortOutputInstanceRequest, SerialPortOutput>
759       getSerialPortOutputMethodDescriptor =
760           ApiMethodDescriptor.<GetSerialPortOutputInstanceRequest, SerialPortOutput>newBuilder()
761               .setFullMethodName("google.cloud.compute.v1.Instances/GetSerialPortOutput")
762               .setHttpMethod("GET")
763               .setType(ApiMethodDescriptor.MethodType.UNARY)
764               .setRequestFormatter(
765                   ProtoMessageRequestFormatter.<GetSerialPortOutputInstanceRequest>newBuilder()
766                       .setPath(
767                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/serialPort",
768                           request -> {
769                             Map<String, String> fields = new HashMap<>();
770                             ProtoRestSerializer<GetSerialPortOutputInstanceRequest> serializer =
771                                 ProtoRestSerializer.create();
772                             serializer.putPathParam(fields, "instance", request.getInstance());
773                             serializer.putPathParam(fields, "project", request.getProject());
774                             serializer.putPathParam(fields, "zone", request.getZone());
775                             return fields;
776                           })
777                       .setQueryParamsExtractor(
778                           request -> {
779                             Map<String, List<String>> fields = new HashMap<>();
780                             ProtoRestSerializer<GetSerialPortOutputInstanceRequest> serializer =
781                                 ProtoRestSerializer.create();
782                             if (request.hasPort()) {
783                               serializer.putQueryParam(fields, "port", request.getPort());
784                             }
785                             if (request.hasStart()) {
786                               serializer.putQueryParam(fields, "start", request.getStart());
787                             }
788                             return fields;
789                           })
790                       .setRequestBodyExtractor(request -> null)
791                       .build())
792               .setResponseParser(
793                   ProtoMessageResponseParser.<SerialPortOutput>newBuilder()
794                       .setDefaultInstance(SerialPortOutput.getDefaultInstance())
795                       .setDefaultTypeRegistry(typeRegistry)
796                       .build())
797               .build();
798 
799   private static final ApiMethodDescriptor<
800           GetShieldedInstanceIdentityInstanceRequest, ShieldedInstanceIdentity>
801       getShieldedInstanceIdentityMethodDescriptor =
802           ApiMethodDescriptor
803               .<GetShieldedInstanceIdentityInstanceRequest, ShieldedInstanceIdentity>newBuilder()
804               .setFullMethodName("google.cloud.compute.v1.Instances/GetShieldedInstanceIdentity")
805               .setHttpMethod("GET")
806               .setType(ApiMethodDescriptor.MethodType.UNARY)
807               .setRequestFormatter(
808                   ProtoMessageRequestFormatter
809                       .<GetShieldedInstanceIdentityInstanceRequest>newBuilder()
810                       .setPath(
811                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/getShieldedInstanceIdentity",
812                           request -> {
813                             Map<String, String> fields = new HashMap<>();
814                             ProtoRestSerializer<GetShieldedInstanceIdentityInstanceRequest>
815                                 serializer = ProtoRestSerializer.create();
816                             serializer.putPathParam(fields, "instance", request.getInstance());
817                             serializer.putPathParam(fields, "project", request.getProject());
818                             serializer.putPathParam(fields, "zone", request.getZone());
819                             return fields;
820                           })
821                       .setQueryParamsExtractor(
822                           request -> {
823                             Map<String, List<String>> fields = new HashMap<>();
824                             ProtoRestSerializer<GetShieldedInstanceIdentityInstanceRequest>
825                                 serializer = ProtoRestSerializer.create();
826                             return fields;
827                           })
828                       .setRequestBodyExtractor(request -> null)
829                       .build())
830               .setResponseParser(
831                   ProtoMessageResponseParser.<ShieldedInstanceIdentity>newBuilder()
832                       .setDefaultInstance(ShieldedInstanceIdentity.getDefaultInstance())
833                       .setDefaultTypeRegistry(typeRegistry)
834                       .build())
835               .build();
836 
837   private static final ApiMethodDescriptor<InsertInstanceRequest, Operation>
838       insertMethodDescriptor =
839           ApiMethodDescriptor.<InsertInstanceRequest, Operation>newBuilder()
840               .setFullMethodName("google.cloud.compute.v1.Instances/Insert")
841               .setHttpMethod("POST")
842               .setType(ApiMethodDescriptor.MethodType.UNARY)
843               .setRequestFormatter(
844                   ProtoMessageRequestFormatter.<InsertInstanceRequest>newBuilder()
845                       .setPath(
846                           "/compute/v1/projects/{project}/zones/{zone}/instances",
847                           request -> {
848                             Map<String, String> fields = new HashMap<>();
849                             ProtoRestSerializer<InsertInstanceRequest> serializer =
850                                 ProtoRestSerializer.create();
851                             serializer.putPathParam(fields, "project", request.getProject());
852                             serializer.putPathParam(fields, "zone", request.getZone());
853                             return fields;
854                           })
855                       .setQueryParamsExtractor(
856                           request -> {
857                             Map<String, List<String>> fields = new HashMap<>();
858                             ProtoRestSerializer<InsertInstanceRequest> serializer =
859                                 ProtoRestSerializer.create();
860                             if (request.hasRequestId()) {
861                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
862                             }
863                             if (request.hasSourceInstanceTemplate()) {
864                               serializer.putQueryParam(
865                                   fields,
866                                   "sourceInstanceTemplate",
867                                   request.getSourceInstanceTemplate());
868                             }
869                             if (request.hasSourceMachineImage()) {
870                               serializer.putQueryParam(
871                                   fields, "sourceMachineImage", request.getSourceMachineImage());
872                             }
873                             return fields;
874                           })
875                       .setRequestBodyExtractor(
876                           request ->
877                               ProtoRestSerializer.create()
878                                   .toBody("instanceResource", request.getInstanceResource(), false))
879                       .build())
880               .setResponseParser(
881                   ProtoMessageResponseParser.<Operation>newBuilder()
882                       .setDefaultInstance(Operation.getDefaultInstance())
883                       .setDefaultTypeRegistry(typeRegistry)
884                       .build())
885               .setOperationSnapshotFactory(
886                   (InsertInstanceRequest request, Operation response) -> {
887                     StringBuilder opName = new StringBuilder(response.getName());
888                     opName.append(":").append(request.getProject());
889                     opName.append(":").append(request.getZone());
890                     return HttpJsonOperationSnapshot.newBuilder()
891                         .setName(opName.toString())
892                         .setMetadata(response)
893                         .setDone(Status.DONE.equals(response.getStatus()))
894                         .setResponse(response)
895                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
896                         .build();
897                   })
898               .build();
899 
900   private static final ApiMethodDescriptor<ListInstancesRequest, InstanceList>
901       listMethodDescriptor =
902           ApiMethodDescriptor.<ListInstancesRequest, InstanceList>newBuilder()
903               .setFullMethodName("google.cloud.compute.v1.Instances/List")
904               .setHttpMethod("GET")
905               .setType(ApiMethodDescriptor.MethodType.UNARY)
906               .setRequestFormatter(
907                   ProtoMessageRequestFormatter.<ListInstancesRequest>newBuilder()
908                       .setPath(
909                           "/compute/v1/projects/{project}/zones/{zone}/instances",
910                           request -> {
911                             Map<String, String> fields = new HashMap<>();
912                             ProtoRestSerializer<ListInstancesRequest> serializer =
913                                 ProtoRestSerializer.create();
914                             serializer.putPathParam(fields, "project", request.getProject());
915                             serializer.putPathParam(fields, "zone", request.getZone());
916                             return fields;
917                           })
918                       .setQueryParamsExtractor(
919                           request -> {
920                             Map<String, List<String>> fields = new HashMap<>();
921                             ProtoRestSerializer<ListInstancesRequest> serializer =
922                                 ProtoRestSerializer.create();
923                             if (request.hasFilter()) {
924                               serializer.putQueryParam(fields, "filter", request.getFilter());
925                             }
926                             if (request.hasMaxResults()) {
927                               serializer.putQueryParam(
928                                   fields, "maxResults", request.getMaxResults());
929                             }
930                             if (request.hasOrderBy()) {
931                               serializer.putQueryParam(fields, "orderBy", request.getOrderBy());
932                             }
933                             if (request.hasPageToken()) {
934                               serializer.putQueryParam(fields, "pageToken", request.getPageToken());
935                             }
936                             if (request.hasReturnPartialSuccess()) {
937                               serializer.putQueryParam(
938                                   fields,
939                                   "returnPartialSuccess",
940                                   request.getReturnPartialSuccess());
941                             }
942                             return fields;
943                           })
944                       .setRequestBodyExtractor(request -> null)
945                       .build())
946               .setResponseParser(
947                   ProtoMessageResponseParser.<InstanceList>newBuilder()
948                       .setDefaultInstance(InstanceList.getDefaultInstance())
949                       .setDefaultTypeRegistry(typeRegistry)
950                       .build())
951               .build();
952 
953   private static final ApiMethodDescriptor<ListReferrersInstancesRequest, InstanceListReferrers>
954       listReferrersMethodDescriptor =
955           ApiMethodDescriptor.<ListReferrersInstancesRequest, InstanceListReferrers>newBuilder()
956               .setFullMethodName("google.cloud.compute.v1.Instances/ListReferrers")
957               .setHttpMethod("GET")
958               .setType(ApiMethodDescriptor.MethodType.UNARY)
959               .setRequestFormatter(
960                   ProtoMessageRequestFormatter.<ListReferrersInstancesRequest>newBuilder()
961                       .setPath(
962                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/referrers",
963                           request -> {
964                             Map<String, String> fields = new HashMap<>();
965                             ProtoRestSerializer<ListReferrersInstancesRequest> serializer =
966                                 ProtoRestSerializer.create();
967                             serializer.putPathParam(fields, "instance", request.getInstance());
968                             serializer.putPathParam(fields, "project", request.getProject());
969                             serializer.putPathParam(fields, "zone", request.getZone());
970                             return fields;
971                           })
972                       .setQueryParamsExtractor(
973                           request -> {
974                             Map<String, List<String>> fields = new HashMap<>();
975                             ProtoRestSerializer<ListReferrersInstancesRequest> serializer =
976                                 ProtoRestSerializer.create();
977                             if (request.hasFilter()) {
978                               serializer.putQueryParam(fields, "filter", request.getFilter());
979                             }
980                             if (request.hasMaxResults()) {
981                               serializer.putQueryParam(
982                                   fields, "maxResults", request.getMaxResults());
983                             }
984                             if (request.hasOrderBy()) {
985                               serializer.putQueryParam(fields, "orderBy", request.getOrderBy());
986                             }
987                             if (request.hasPageToken()) {
988                               serializer.putQueryParam(fields, "pageToken", request.getPageToken());
989                             }
990                             if (request.hasReturnPartialSuccess()) {
991                               serializer.putQueryParam(
992                                   fields,
993                                   "returnPartialSuccess",
994                                   request.getReturnPartialSuccess());
995                             }
996                             return fields;
997                           })
998                       .setRequestBodyExtractor(request -> null)
999                       .build())
1000               .setResponseParser(
1001                   ProtoMessageResponseParser.<InstanceListReferrers>newBuilder()
1002                       .setDefaultInstance(InstanceListReferrers.getDefaultInstance())
1003                       .setDefaultTypeRegistry(typeRegistry)
1004                       .build())
1005               .build();
1006 
1007   private static final ApiMethodDescriptor<RemoveResourcePoliciesInstanceRequest, Operation>
1008       removeResourcePoliciesMethodDescriptor =
1009           ApiMethodDescriptor.<RemoveResourcePoliciesInstanceRequest, Operation>newBuilder()
1010               .setFullMethodName("google.cloud.compute.v1.Instances/RemoveResourcePolicies")
1011               .setHttpMethod("POST")
1012               .setType(ApiMethodDescriptor.MethodType.UNARY)
1013               .setRequestFormatter(
1014                   ProtoMessageRequestFormatter.<RemoveResourcePoliciesInstanceRequest>newBuilder()
1015                       .setPath(
1016                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/removeResourcePolicies",
1017                           request -> {
1018                             Map<String, String> fields = new HashMap<>();
1019                             ProtoRestSerializer<RemoveResourcePoliciesInstanceRequest> serializer =
1020                                 ProtoRestSerializer.create();
1021                             serializer.putPathParam(fields, "instance", request.getInstance());
1022                             serializer.putPathParam(fields, "project", request.getProject());
1023                             serializer.putPathParam(fields, "zone", request.getZone());
1024                             return fields;
1025                           })
1026                       .setQueryParamsExtractor(
1027                           request -> {
1028                             Map<String, List<String>> fields = new HashMap<>();
1029                             ProtoRestSerializer<RemoveResourcePoliciesInstanceRequest> serializer =
1030                                 ProtoRestSerializer.create();
1031                             if (request.hasRequestId()) {
1032                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
1033                             }
1034                             return fields;
1035                           })
1036                       .setRequestBodyExtractor(
1037                           request ->
1038                               ProtoRestSerializer.create()
1039                                   .toBody(
1040                                       "instancesRemoveResourcePoliciesRequestResource",
1041                                       request.getInstancesRemoveResourcePoliciesRequestResource(),
1042                                       false))
1043                       .build())
1044               .setResponseParser(
1045                   ProtoMessageResponseParser.<Operation>newBuilder()
1046                       .setDefaultInstance(Operation.getDefaultInstance())
1047                       .setDefaultTypeRegistry(typeRegistry)
1048                       .build())
1049               .setOperationSnapshotFactory(
1050                   (RemoveResourcePoliciesInstanceRequest request, Operation response) -> {
1051                     StringBuilder opName = new StringBuilder(response.getName());
1052                     opName.append(":").append(request.getProject());
1053                     opName.append(":").append(request.getZone());
1054                     return HttpJsonOperationSnapshot.newBuilder()
1055                         .setName(opName.toString())
1056                         .setMetadata(response)
1057                         .setDone(Status.DONE.equals(response.getStatus()))
1058                         .setResponse(response)
1059                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
1060                         .build();
1061                   })
1062               .build();
1063 
1064   private static final ApiMethodDescriptor<ResetInstanceRequest, Operation> resetMethodDescriptor =
1065       ApiMethodDescriptor.<ResetInstanceRequest, Operation>newBuilder()
1066           .setFullMethodName("google.cloud.compute.v1.Instances/Reset")
1067           .setHttpMethod("POST")
1068           .setType(ApiMethodDescriptor.MethodType.UNARY)
1069           .setRequestFormatter(
1070               ProtoMessageRequestFormatter.<ResetInstanceRequest>newBuilder()
1071                   .setPath(
1072                       "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/reset",
1073                       request -> {
1074                         Map<String, String> fields = new HashMap<>();
1075                         ProtoRestSerializer<ResetInstanceRequest> serializer =
1076                             ProtoRestSerializer.create();
1077                         serializer.putPathParam(fields, "instance", request.getInstance());
1078                         serializer.putPathParam(fields, "project", request.getProject());
1079                         serializer.putPathParam(fields, "zone", request.getZone());
1080                         return fields;
1081                       })
1082                   .setQueryParamsExtractor(
1083                       request -> {
1084                         Map<String, List<String>> fields = new HashMap<>();
1085                         ProtoRestSerializer<ResetInstanceRequest> serializer =
1086                             ProtoRestSerializer.create();
1087                         if (request.hasRequestId()) {
1088                           serializer.putQueryParam(fields, "requestId", request.getRequestId());
1089                         }
1090                         return fields;
1091                       })
1092                   .setRequestBodyExtractor(request -> null)
1093                   .build())
1094           .setResponseParser(
1095               ProtoMessageResponseParser.<Operation>newBuilder()
1096                   .setDefaultInstance(Operation.getDefaultInstance())
1097                   .setDefaultTypeRegistry(typeRegistry)
1098                   .build())
1099           .setOperationSnapshotFactory(
1100               (ResetInstanceRequest request, Operation response) -> {
1101                 StringBuilder opName = new StringBuilder(response.getName());
1102                 opName.append(":").append(request.getProject());
1103                 opName.append(":").append(request.getZone());
1104                 return HttpJsonOperationSnapshot.newBuilder()
1105                     .setName(opName.toString())
1106                     .setMetadata(response)
1107                     .setDone(Status.DONE.equals(response.getStatus()))
1108                     .setResponse(response)
1109                     .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
1110                     .build();
1111               })
1112           .build();
1113 
1114   private static final ApiMethodDescriptor<ResumeInstanceRequest, Operation>
1115       resumeMethodDescriptor =
1116           ApiMethodDescriptor.<ResumeInstanceRequest, Operation>newBuilder()
1117               .setFullMethodName("google.cloud.compute.v1.Instances/Resume")
1118               .setHttpMethod("POST")
1119               .setType(ApiMethodDescriptor.MethodType.UNARY)
1120               .setRequestFormatter(
1121                   ProtoMessageRequestFormatter.<ResumeInstanceRequest>newBuilder()
1122                       .setPath(
1123                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/resume",
1124                           request -> {
1125                             Map<String, String> fields = new HashMap<>();
1126                             ProtoRestSerializer<ResumeInstanceRequest> serializer =
1127                                 ProtoRestSerializer.create();
1128                             serializer.putPathParam(fields, "instance", request.getInstance());
1129                             serializer.putPathParam(fields, "project", request.getProject());
1130                             serializer.putPathParam(fields, "zone", request.getZone());
1131                             return fields;
1132                           })
1133                       .setQueryParamsExtractor(
1134                           request -> {
1135                             Map<String, List<String>> fields = new HashMap<>();
1136                             ProtoRestSerializer<ResumeInstanceRequest> serializer =
1137                                 ProtoRestSerializer.create();
1138                             if (request.hasRequestId()) {
1139                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
1140                             }
1141                             return fields;
1142                           })
1143                       .setRequestBodyExtractor(request -> null)
1144                       .build())
1145               .setResponseParser(
1146                   ProtoMessageResponseParser.<Operation>newBuilder()
1147                       .setDefaultInstance(Operation.getDefaultInstance())
1148                       .setDefaultTypeRegistry(typeRegistry)
1149                       .build())
1150               .setOperationSnapshotFactory(
1151                   (ResumeInstanceRequest request, Operation response) -> {
1152                     StringBuilder opName = new StringBuilder(response.getName());
1153                     opName.append(":").append(request.getProject());
1154                     opName.append(":").append(request.getZone());
1155                     return HttpJsonOperationSnapshot.newBuilder()
1156                         .setName(opName.toString())
1157                         .setMetadata(response)
1158                         .setDone(Status.DONE.equals(response.getStatus()))
1159                         .setResponse(response)
1160                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
1161                         .build();
1162                   })
1163               .build();
1164 
1165   private static final ApiMethodDescriptor<
1166           SendDiagnosticInterruptInstanceRequest, SendDiagnosticInterruptInstanceResponse>
1167       sendDiagnosticInterruptMethodDescriptor =
1168           ApiMethodDescriptor
1169               .<SendDiagnosticInterruptInstanceRequest, SendDiagnosticInterruptInstanceResponse>
1170                   newBuilder()
1171               .setFullMethodName("google.cloud.compute.v1.Instances/SendDiagnosticInterrupt")
1172               .setHttpMethod("POST")
1173               .setType(ApiMethodDescriptor.MethodType.UNARY)
1174               .setRequestFormatter(
1175                   ProtoMessageRequestFormatter.<SendDiagnosticInterruptInstanceRequest>newBuilder()
1176                       .setPath(
1177                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/sendDiagnosticInterrupt",
1178                           request -> {
1179                             Map<String, String> fields = new HashMap<>();
1180                             ProtoRestSerializer<SendDiagnosticInterruptInstanceRequest> serializer =
1181                                 ProtoRestSerializer.create();
1182                             serializer.putPathParam(fields, "instance", request.getInstance());
1183                             serializer.putPathParam(fields, "project", request.getProject());
1184                             serializer.putPathParam(fields, "zone", request.getZone());
1185                             return fields;
1186                           })
1187                       .setQueryParamsExtractor(
1188                           request -> {
1189                             Map<String, List<String>> fields = new HashMap<>();
1190                             ProtoRestSerializer<SendDiagnosticInterruptInstanceRequest> serializer =
1191                                 ProtoRestSerializer.create();
1192                             return fields;
1193                           })
1194                       .setRequestBodyExtractor(request -> null)
1195                       .build())
1196               .setResponseParser(
1197                   ProtoMessageResponseParser.<SendDiagnosticInterruptInstanceResponse>newBuilder()
1198                       .setDefaultInstance(
1199                           SendDiagnosticInterruptInstanceResponse.getDefaultInstance())
1200                       .setDefaultTypeRegistry(typeRegistry)
1201                       .build())
1202               .build();
1203 
1204   private static final ApiMethodDescriptor<SetDeletionProtectionInstanceRequest, Operation>
1205       setDeletionProtectionMethodDescriptor =
1206           ApiMethodDescriptor.<SetDeletionProtectionInstanceRequest, Operation>newBuilder()
1207               .setFullMethodName("google.cloud.compute.v1.Instances/SetDeletionProtection")
1208               .setHttpMethod("POST")
1209               .setType(ApiMethodDescriptor.MethodType.UNARY)
1210               .setRequestFormatter(
1211                   ProtoMessageRequestFormatter.<SetDeletionProtectionInstanceRequest>newBuilder()
1212                       .setPath(
1213                           "/compute/v1/projects/{project}/zones/{zone}/instances/{resource}/setDeletionProtection",
1214                           request -> {
1215                             Map<String, String> fields = new HashMap<>();
1216                             ProtoRestSerializer<SetDeletionProtectionInstanceRequest> serializer =
1217                                 ProtoRestSerializer.create();
1218                             serializer.putPathParam(fields, "project", request.getProject());
1219                             serializer.putPathParam(fields, "resource", request.getResource());
1220                             serializer.putPathParam(fields, "zone", request.getZone());
1221                             return fields;
1222                           })
1223                       .setQueryParamsExtractor(
1224                           request -> {
1225                             Map<String, List<String>> fields = new HashMap<>();
1226                             ProtoRestSerializer<SetDeletionProtectionInstanceRequest> serializer =
1227                                 ProtoRestSerializer.create();
1228                             if (request.hasDeletionProtection()) {
1229                               serializer.putQueryParam(
1230                                   fields, "deletionProtection", request.getDeletionProtection());
1231                             }
1232                             if (request.hasRequestId()) {
1233                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
1234                             }
1235                             return fields;
1236                           })
1237                       .setRequestBodyExtractor(request -> null)
1238                       .build())
1239               .setResponseParser(
1240                   ProtoMessageResponseParser.<Operation>newBuilder()
1241                       .setDefaultInstance(Operation.getDefaultInstance())
1242                       .setDefaultTypeRegistry(typeRegistry)
1243                       .build())
1244               .setOperationSnapshotFactory(
1245                   (SetDeletionProtectionInstanceRequest request, Operation response) -> {
1246                     StringBuilder opName = new StringBuilder(response.getName());
1247                     opName.append(":").append(request.getProject());
1248                     opName.append(":").append(request.getZone());
1249                     return HttpJsonOperationSnapshot.newBuilder()
1250                         .setName(opName.toString())
1251                         .setMetadata(response)
1252                         .setDone(Status.DONE.equals(response.getStatus()))
1253                         .setResponse(response)
1254                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
1255                         .build();
1256                   })
1257               .build();
1258 
1259   private static final ApiMethodDescriptor<SetDiskAutoDeleteInstanceRequest, Operation>
1260       setDiskAutoDeleteMethodDescriptor =
1261           ApiMethodDescriptor.<SetDiskAutoDeleteInstanceRequest, Operation>newBuilder()
1262               .setFullMethodName("google.cloud.compute.v1.Instances/SetDiskAutoDelete")
1263               .setHttpMethod("POST")
1264               .setType(ApiMethodDescriptor.MethodType.UNARY)
1265               .setRequestFormatter(
1266                   ProtoMessageRequestFormatter.<SetDiskAutoDeleteInstanceRequest>newBuilder()
1267                       .setPath(
1268                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setDiskAutoDelete",
1269                           request -> {
1270                             Map<String, String> fields = new HashMap<>();
1271                             ProtoRestSerializer<SetDiskAutoDeleteInstanceRequest> serializer =
1272                                 ProtoRestSerializer.create();
1273                             serializer.putPathParam(fields, "instance", request.getInstance());
1274                             serializer.putPathParam(fields, "project", request.getProject());
1275                             serializer.putPathParam(fields, "zone", request.getZone());
1276                             return fields;
1277                           })
1278                       .setQueryParamsExtractor(
1279                           request -> {
1280                             Map<String, List<String>> fields = new HashMap<>();
1281                             ProtoRestSerializer<SetDiskAutoDeleteInstanceRequest> serializer =
1282                                 ProtoRestSerializer.create();
1283                             serializer.putQueryParam(fields, "autoDelete", request.getAutoDelete());
1284                             serializer.putQueryParam(fields, "deviceName", request.getDeviceName());
1285                             if (request.hasRequestId()) {
1286                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
1287                             }
1288                             return fields;
1289                           })
1290                       .setRequestBodyExtractor(request -> null)
1291                       .build())
1292               .setResponseParser(
1293                   ProtoMessageResponseParser.<Operation>newBuilder()
1294                       .setDefaultInstance(Operation.getDefaultInstance())
1295                       .setDefaultTypeRegistry(typeRegistry)
1296                       .build())
1297               .setOperationSnapshotFactory(
1298                   (SetDiskAutoDeleteInstanceRequest request, Operation response) -> {
1299                     StringBuilder opName = new StringBuilder(response.getName());
1300                     opName.append(":").append(request.getProject());
1301                     opName.append(":").append(request.getZone());
1302                     return HttpJsonOperationSnapshot.newBuilder()
1303                         .setName(opName.toString())
1304                         .setMetadata(response)
1305                         .setDone(Status.DONE.equals(response.getStatus()))
1306                         .setResponse(response)
1307                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
1308                         .build();
1309                   })
1310               .build();
1311 
1312   private static final ApiMethodDescriptor<SetIamPolicyInstanceRequest, Policy>
1313       setIamPolicyMethodDescriptor =
1314           ApiMethodDescriptor.<SetIamPolicyInstanceRequest, Policy>newBuilder()
1315               .setFullMethodName("google.cloud.compute.v1.Instances/SetIamPolicy")
1316               .setHttpMethod("POST")
1317               .setType(ApiMethodDescriptor.MethodType.UNARY)
1318               .setRequestFormatter(
1319                   ProtoMessageRequestFormatter.<SetIamPolicyInstanceRequest>newBuilder()
1320                       .setPath(
1321                           "/compute/v1/projects/{project}/zones/{zone}/instances/{resource}/setIamPolicy",
1322                           request -> {
1323                             Map<String, String> fields = new HashMap<>();
1324                             ProtoRestSerializer<SetIamPolicyInstanceRequest> serializer =
1325                                 ProtoRestSerializer.create();
1326                             serializer.putPathParam(fields, "project", request.getProject());
1327                             serializer.putPathParam(fields, "resource", request.getResource());
1328                             serializer.putPathParam(fields, "zone", request.getZone());
1329                             return fields;
1330                           })
1331                       .setQueryParamsExtractor(
1332                           request -> {
1333                             Map<String, List<String>> fields = new HashMap<>();
1334                             ProtoRestSerializer<SetIamPolicyInstanceRequest> serializer =
1335                                 ProtoRestSerializer.create();
1336                             return fields;
1337                           })
1338                       .setRequestBodyExtractor(
1339                           request ->
1340                               ProtoRestSerializer.create()
1341                                   .toBody(
1342                                       "zoneSetPolicyRequestResource",
1343                                       request.getZoneSetPolicyRequestResource(),
1344                                       false))
1345                       .build())
1346               .setResponseParser(
1347                   ProtoMessageResponseParser.<Policy>newBuilder()
1348                       .setDefaultInstance(Policy.getDefaultInstance())
1349                       .setDefaultTypeRegistry(typeRegistry)
1350                       .build())
1351               .build();
1352 
1353   private static final ApiMethodDescriptor<SetLabelsInstanceRequest, Operation>
1354       setLabelsMethodDescriptor =
1355           ApiMethodDescriptor.<SetLabelsInstanceRequest, Operation>newBuilder()
1356               .setFullMethodName("google.cloud.compute.v1.Instances/SetLabels")
1357               .setHttpMethod("POST")
1358               .setType(ApiMethodDescriptor.MethodType.UNARY)
1359               .setRequestFormatter(
1360                   ProtoMessageRequestFormatter.<SetLabelsInstanceRequest>newBuilder()
1361                       .setPath(
1362                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setLabels",
1363                           request -> {
1364                             Map<String, String> fields = new HashMap<>();
1365                             ProtoRestSerializer<SetLabelsInstanceRequest> serializer =
1366                                 ProtoRestSerializer.create();
1367                             serializer.putPathParam(fields, "instance", request.getInstance());
1368                             serializer.putPathParam(fields, "project", request.getProject());
1369                             serializer.putPathParam(fields, "zone", request.getZone());
1370                             return fields;
1371                           })
1372                       .setQueryParamsExtractor(
1373                           request -> {
1374                             Map<String, List<String>> fields = new HashMap<>();
1375                             ProtoRestSerializer<SetLabelsInstanceRequest> serializer =
1376                                 ProtoRestSerializer.create();
1377                             if (request.hasRequestId()) {
1378                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
1379                             }
1380                             return fields;
1381                           })
1382                       .setRequestBodyExtractor(
1383                           request ->
1384                               ProtoRestSerializer.create()
1385                                   .toBody(
1386                                       "instancesSetLabelsRequestResource",
1387                                       request.getInstancesSetLabelsRequestResource(),
1388                                       false))
1389                       .build())
1390               .setResponseParser(
1391                   ProtoMessageResponseParser.<Operation>newBuilder()
1392                       .setDefaultInstance(Operation.getDefaultInstance())
1393                       .setDefaultTypeRegistry(typeRegistry)
1394                       .build())
1395               .setOperationSnapshotFactory(
1396                   (SetLabelsInstanceRequest request, Operation response) -> {
1397                     StringBuilder opName = new StringBuilder(response.getName());
1398                     opName.append(":").append(request.getProject());
1399                     opName.append(":").append(request.getZone());
1400                     return HttpJsonOperationSnapshot.newBuilder()
1401                         .setName(opName.toString())
1402                         .setMetadata(response)
1403                         .setDone(Status.DONE.equals(response.getStatus()))
1404                         .setResponse(response)
1405                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
1406                         .build();
1407                   })
1408               .build();
1409 
1410   private static final ApiMethodDescriptor<SetMachineResourcesInstanceRequest, Operation>
1411       setMachineResourcesMethodDescriptor =
1412           ApiMethodDescriptor.<SetMachineResourcesInstanceRequest, Operation>newBuilder()
1413               .setFullMethodName("google.cloud.compute.v1.Instances/SetMachineResources")
1414               .setHttpMethod("POST")
1415               .setType(ApiMethodDescriptor.MethodType.UNARY)
1416               .setRequestFormatter(
1417                   ProtoMessageRequestFormatter.<SetMachineResourcesInstanceRequest>newBuilder()
1418                       .setPath(
1419                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setMachineResources",
1420                           request -> {
1421                             Map<String, String> fields = new HashMap<>();
1422                             ProtoRestSerializer<SetMachineResourcesInstanceRequest> serializer =
1423                                 ProtoRestSerializer.create();
1424                             serializer.putPathParam(fields, "instance", request.getInstance());
1425                             serializer.putPathParam(fields, "project", request.getProject());
1426                             serializer.putPathParam(fields, "zone", request.getZone());
1427                             return fields;
1428                           })
1429                       .setQueryParamsExtractor(
1430                           request -> {
1431                             Map<String, List<String>> fields = new HashMap<>();
1432                             ProtoRestSerializer<SetMachineResourcesInstanceRequest> serializer =
1433                                 ProtoRestSerializer.create();
1434                             if (request.hasRequestId()) {
1435                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
1436                             }
1437                             return fields;
1438                           })
1439                       .setRequestBodyExtractor(
1440                           request ->
1441                               ProtoRestSerializer.create()
1442                                   .toBody(
1443                                       "instancesSetMachineResourcesRequestResource",
1444                                       request.getInstancesSetMachineResourcesRequestResource(),
1445                                       false))
1446                       .build())
1447               .setResponseParser(
1448                   ProtoMessageResponseParser.<Operation>newBuilder()
1449                       .setDefaultInstance(Operation.getDefaultInstance())
1450                       .setDefaultTypeRegistry(typeRegistry)
1451                       .build())
1452               .setOperationSnapshotFactory(
1453                   (SetMachineResourcesInstanceRequest request, Operation response) -> {
1454                     StringBuilder opName = new StringBuilder(response.getName());
1455                     opName.append(":").append(request.getProject());
1456                     opName.append(":").append(request.getZone());
1457                     return HttpJsonOperationSnapshot.newBuilder()
1458                         .setName(opName.toString())
1459                         .setMetadata(response)
1460                         .setDone(Status.DONE.equals(response.getStatus()))
1461                         .setResponse(response)
1462                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
1463                         .build();
1464                   })
1465               .build();
1466 
1467   private static final ApiMethodDescriptor<SetMachineTypeInstanceRequest, Operation>
1468       setMachineTypeMethodDescriptor =
1469           ApiMethodDescriptor.<SetMachineTypeInstanceRequest, Operation>newBuilder()
1470               .setFullMethodName("google.cloud.compute.v1.Instances/SetMachineType")
1471               .setHttpMethod("POST")
1472               .setType(ApiMethodDescriptor.MethodType.UNARY)
1473               .setRequestFormatter(
1474                   ProtoMessageRequestFormatter.<SetMachineTypeInstanceRequest>newBuilder()
1475                       .setPath(
1476                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setMachineType",
1477                           request -> {
1478                             Map<String, String> fields = new HashMap<>();
1479                             ProtoRestSerializer<SetMachineTypeInstanceRequest> serializer =
1480                                 ProtoRestSerializer.create();
1481                             serializer.putPathParam(fields, "instance", request.getInstance());
1482                             serializer.putPathParam(fields, "project", request.getProject());
1483                             serializer.putPathParam(fields, "zone", request.getZone());
1484                             return fields;
1485                           })
1486                       .setQueryParamsExtractor(
1487                           request -> {
1488                             Map<String, List<String>> fields = new HashMap<>();
1489                             ProtoRestSerializer<SetMachineTypeInstanceRequest> serializer =
1490                                 ProtoRestSerializer.create();
1491                             if (request.hasRequestId()) {
1492                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
1493                             }
1494                             return fields;
1495                           })
1496                       .setRequestBodyExtractor(
1497                           request ->
1498                               ProtoRestSerializer.create()
1499                                   .toBody(
1500                                       "instancesSetMachineTypeRequestResource",
1501                                       request.getInstancesSetMachineTypeRequestResource(),
1502                                       false))
1503                       .build())
1504               .setResponseParser(
1505                   ProtoMessageResponseParser.<Operation>newBuilder()
1506                       .setDefaultInstance(Operation.getDefaultInstance())
1507                       .setDefaultTypeRegistry(typeRegistry)
1508                       .build())
1509               .setOperationSnapshotFactory(
1510                   (SetMachineTypeInstanceRequest request, Operation response) -> {
1511                     StringBuilder opName = new StringBuilder(response.getName());
1512                     opName.append(":").append(request.getProject());
1513                     opName.append(":").append(request.getZone());
1514                     return HttpJsonOperationSnapshot.newBuilder()
1515                         .setName(opName.toString())
1516                         .setMetadata(response)
1517                         .setDone(Status.DONE.equals(response.getStatus()))
1518                         .setResponse(response)
1519                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
1520                         .build();
1521                   })
1522               .build();
1523 
1524   private static final ApiMethodDescriptor<SetMetadataInstanceRequest, Operation>
1525       setMetadataMethodDescriptor =
1526           ApiMethodDescriptor.<SetMetadataInstanceRequest, Operation>newBuilder()
1527               .setFullMethodName("google.cloud.compute.v1.Instances/SetMetadata")
1528               .setHttpMethod("POST")
1529               .setType(ApiMethodDescriptor.MethodType.UNARY)
1530               .setRequestFormatter(
1531                   ProtoMessageRequestFormatter.<SetMetadataInstanceRequest>newBuilder()
1532                       .setPath(
1533                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setMetadata",
1534                           request -> {
1535                             Map<String, String> fields = new HashMap<>();
1536                             ProtoRestSerializer<SetMetadataInstanceRequest> serializer =
1537                                 ProtoRestSerializer.create();
1538                             serializer.putPathParam(fields, "instance", request.getInstance());
1539                             serializer.putPathParam(fields, "project", request.getProject());
1540                             serializer.putPathParam(fields, "zone", request.getZone());
1541                             return fields;
1542                           })
1543                       .setQueryParamsExtractor(
1544                           request -> {
1545                             Map<String, List<String>> fields = new HashMap<>();
1546                             ProtoRestSerializer<SetMetadataInstanceRequest> serializer =
1547                                 ProtoRestSerializer.create();
1548                             if (request.hasRequestId()) {
1549                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
1550                             }
1551                             return fields;
1552                           })
1553                       .setRequestBodyExtractor(
1554                           request ->
1555                               ProtoRestSerializer.create()
1556                                   .toBody("metadataResource", request.getMetadataResource(), false))
1557                       .build())
1558               .setResponseParser(
1559                   ProtoMessageResponseParser.<Operation>newBuilder()
1560                       .setDefaultInstance(Operation.getDefaultInstance())
1561                       .setDefaultTypeRegistry(typeRegistry)
1562                       .build())
1563               .setOperationSnapshotFactory(
1564                   (SetMetadataInstanceRequest request, Operation response) -> {
1565                     StringBuilder opName = new StringBuilder(response.getName());
1566                     opName.append(":").append(request.getProject());
1567                     opName.append(":").append(request.getZone());
1568                     return HttpJsonOperationSnapshot.newBuilder()
1569                         .setName(opName.toString())
1570                         .setMetadata(response)
1571                         .setDone(Status.DONE.equals(response.getStatus()))
1572                         .setResponse(response)
1573                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
1574                         .build();
1575                   })
1576               .build();
1577 
1578   private static final ApiMethodDescriptor<SetMinCpuPlatformInstanceRequest, Operation>
1579       setMinCpuPlatformMethodDescriptor =
1580           ApiMethodDescriptor.<SetMinCpuPlatformInstanceRequest, Operation>newBuilder()
1581               .setFullMethodName("google.cloud.compute.v1.Instances/SetMinCpuPlatform")
1582               .setHttpMethod("POST")
1583               .setType(ApiMethodDescriptor.MethodType.UNARY)
1584               .setRequestFormatter(
1585                   ProtoMessageRequestFormatter.<SetMinCpuPlatformInstanceRequest>newBuilder()
1586                       .setPath(
1587                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setMinCpuPlatform",
1588                           request -> {
1589                             Map<String, String> fields = new HashMap<>();
1590                             ProtoRestSerializer<SetMinCpuPlatformInstanceRequest> serializer =
1591                                 ProtoRestSerializer.create();
1592                             serializer.putPathParam(fields, "instance", request.getInstance());
1593                             serializer.putPathParam(fields, "project", request.getProject());
1594                             serializer.putPathParam(fields, "zone", request.getZone());
1595                             return fields;
1596                           })
1597                       .setQueryParamsExtractor(
1598                           request -> {
1599                             Map<String, List<String>> fields = new HashMap<>();
1600                             ProtoRestSerializer<SetMinCpuPlatformInstanceRequest> serializer =
1601                                 ProtoRestSerializer.create();
1602                             if (request.hasRequestId()) {
1603                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
1604                             }
1605                             return fields;
1606                           })
1607                       .setRequestBodyExtractor(
1608                           request ->
1609                               ProtoRestSerializer.create()
1610                                   .toBody(
1611                                       "instancesSetMinCpuPlatformRequestResource",
1612                                       request.getInstancesSetMinCpuPlatformRequestResource(),
1613                                       false))
1614                       .build())
1615               .setResponseParser(
1616                   ProtoMessageResponseParser.<Operation>newBuilder()
1617                       .setDefaultInstance(Operation.getDefaultInstance())
1618                       .setDefaultTypeRegistry(typeRegistry)
1619                       .build())
1620               .setOperationSnapshotFactory(
1621                   (SetMinCpuPlatformInstanceRequest request, Operation response) -> {
1622                     StringBuilder opName = new StringBuilder(response.getName());
1623                     opName.append(":").append(request.getProject());
1624                     opName.append(":").append(request.getZone());
1625                     return HttpJsonOperationSnapshot.newBuilder()
1626                         .setName(opName.toString())
1627                         .setMetadata(response)
1628                         .setDone(Status.DONE.equals(response.getStatus()))
1629                         .setResponse(response)
1630                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
1631                         .build();
1632                   })
1633               .build();
1634 
1635   private static final ApiMethodDescriptor<SetNameInstanceRequest, Operation>
1636       setNameMethodDescriptor =
1637           ApiMethodDescriptor.<SetNameInstanceRequest, Operation>newBuilder()
1638               .setFullMethodName("google.cloud.compute.v1.Instances/SetName")
1639               .setHttpMethod("POST")
1640               .setType(ApiMethodDescriptor.MethodType.UNARY)
1641               .setRequestFormatter(
1642                   ProtoMessageRequestFormatter.<SetNameInstanceRequest>newBuilder()
1643                       .setPath(
1644                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setName",
1645                           request -> {
1646                             Map<String, String> fields = new HashMap<>();
1647                             ProtoRestSerializer<SetNameInstanceRequest> serializer =
1648                                 ProtoRestSerializer.create();
1649                             serializer.putPathParam(fields, "instance", request.getInstance());
1650                             serializer.putPathParam(fields, "project", request.getProject());
1651                             serializer.putPathParam(fields, "zone", request.getZone());
1652                             return fields;
1653                           })
1654                       .setQueryParamsExtractor(
1655                           request -> {
1656                             Map<String, List<String>> fields = new HashMap<>();
1657                             ProtoRestSerializer<SetNameInstanceRequest> serializer =
1658                                 ProtoRestSerializer.create();
1659                             if (request.hasRequestId()) {
1660                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
1661                             }
1662                             return fields;
1663                           })
1664                       .setRequestBodyExtractor(
1665                           request ->
1666                               ProtoRestSerializer.create()
1667                                   .toBody(
1668                                       "instancesSetNameRequestResource",
1669                                       request.getInstancesSetNameRequestResource(),
1670                                       false))
1671                       .build())
1672               .setResponseParser(
1673                   ProtoMessageResponseParser.<Operation>newBuilder()
1674                       .setDefaultInstance(Operation.getDefaultInstance())
1675                       .setDefaultTypeRegistry(typeRegistry)
1676                       .build())
1677               .setOperationSnapshotFactory(
1678                   (SetNameInstanceRequest request, Operation response) -> {
1679                     StringBuilder opName = new StringBuilder(response.getName());
1680                     opName.append(":").append(request.getProject());
1681                     opName.append(":").append(request.getZone());
1682                     return HttpJsonOperationSnapshot.newBuilder()
1683                         .setName(opName.toString())
1684                         .setMetadata(response)
1685                         .setDone(Status.DONE.equals(response.getStatus()))
1686                         .setResponse(response)
1687                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
1688                         .build();
1689                   })
1690               .build();
1691 
1692   private static final ApiMethodDescriptor<SetSchedulingInstanceRequest, Operation>
1693       setSchedulingMethodDescriptor =
1694           ApiMethodDescriptor.<SetSchedulingInstanceRequest, Operation>newBuilder()
1695               .setFullMethodName("google.cloud.compute.v1.Instances/SetScheduling")
1696               .setHttpMethod("POST")
1697               .setType(ApiMethodDescriptor.MethodType.UNARY)
1698               .setRequestFormatter(
1699                   ProtoMessageRequestFormatter.<SetSchedulingInstanceRequest>newBuilder()
1700                       .setPath(
1701                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setScheduling",
1702                           request -> {
1703                             Map<String, String> fields = new HashMap<>();
1704                             ProtoRestSerializer<SetSchedulingInstanceRequest> serializer =
1705                                 ProtoRestSerializer.create();
1706                             serializer.putPathParam(fields, "instance", request.getInstance());
1707                             serializer.putPathParam(fields, "project", request.getProject());
1708                             serializer.putPathParam(fields, "zone", request.getZone());
1709                             return fields;
1710                           })
1711                       .setQueryParamsExtractor(
1712                           request -> {
1713                             Map<String, List<String>> fields = new HashMap<>();
1714                             ProtoRestSerializer<SetSchedulingInstanceRequest> serializer =
1715                                 ProtoRestSerializer.create();
1716                             if (request.hasRequestId()) {
1717                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
1718                             }
1719                             return fields;
1720                           })
1721                       .setRequestBodyExtractor(
1722                           request ->
1723                               ProtoRestSerializer.create()
1724                                   .toBody(
1725                                       "schedulingResource", request.getSchedulingResource(), false))
1726                       .build())
1727               .setResponseParser(
1728                   ProtoMessageResponseParser.<Operation>newBuilder()
1729                       .setDefaultInstance(Operation.getDefaultInstance())
1730                       .setDefaultTypeRegistry(typeRegistry)
1731                       .build())
1732               .setOperationSnapshotFactory(
1733                   (SetSchedulingInstanceRequest request, Operation response) -> {
1734                     StringBuilder opName = new StringBuilder(response.getName());
1735                     opName.append(":").append(request.getProject());
1736                     opName.append(":").append(request.getZone());
1737                     return HttpJsonOperationSnapshot.newBuilder()
1738                         .setName(opName.toString())
1739                         .setMetadata(response)
1740                         .setDone(Status.DONE.equals(response.getStatus()))
1741                         .setResponse(response)
1742                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
1743                         .build();
1744                   })
1745               .build();
1746 
1747   private static final ApiMethodDescriptor<SetServiceAccountInstanceRequest, Operation>
1748       setServiceAccountMethodDescriptor =
1749           ApiMethodDescriptor.<SetServiceAccountInstanceRequest, Operation>newBuilder()
1750               .setFullMethodName("google.cloud.compute.v1.Instances/SetServiceAccount")
1751               .setHttpMethod("POST")
1752               .setType(ApiMethodDescriptor.MethodType.UNARY)
1753               .setRequestFormatter(
1754                   ProtoMessageRequestFormatter.<SetServiceAccountInstanceRequest>newBuilder()
1755                       .setPath(
1756                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setServiceAccount",
1757                           request -> {
1758                             Map<String, String> fields = new HashMap<>();
1759                             ProtoRestSerializer<SetServiceAccountInstanceRequest> serializer =
1760                                 ProtoRestSerializer.create();
1761                             serializer.putPathParam(fields, "instance", request.getInstance());
1762                             serializer.putPathParam(fields, "project", request.getProject());
1763                             serializer.putPathParam(fields, "zone", request.getZone());
1764                             return fields;
1765                           })
1766                       .setQueryParamsExtractor(
1767                           request -> {
1768                             Map<String, List<String>> fields = new HashMap<>();
1769                             ProtoRestSerializer<SetServiceAccountInstanceRequest> serializer =
1770                                 ProtoRestSerializer.create();
1771                             if (request.hasRequestId()) {
1772                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
1773                             }
1774                             return fields;
1775                           })
1776                       .setRequestBodyExtractor(
1777                           request ->
1778                               ProtoRestSerializer.create()
1779                                   .toBody(
1780                                       "instancesSetServiceAccountRequestResource",
1781                                       request.getInstancesSetServiceAccountRequestResource(),
1782                                       false))
1783                       .build())
1784               .setResponseParser(
1785                   ProtoMessageResponseParser.<Operation>newBuilder()
1786                       .setDefaultInstance(Operation.getDefaultInstance())
1787                       .setDefaultTypeRegistry(typeRegistry)
1788                       .build())
1789               .setOperationSnapshotFactory(
1790                   (SetServiceAccountInstanceRequest request, Operation response) -> {
1791                     StringBuilder opName = new StringBuilder(response.getName());
1792                     opName.append(":").append(request.getProject());
1793                     opName.append(":").append(request.getZone());
1794                     return HttpJsonOperationSnapshot.newBuilder()
1795                         .setName(opName.toString())
1796                         .setMetadata(response)
1797                         .setDone(Status.DONE.equals(response.getStatus()))
1798                         .setResponse(response)
1799                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
1800                         .build();
1801                   })
1802               .build();
1803 
1804   private static final ApiMethodDescriptor<
1805           SetShieldedInstanceIntegrityPolicyInstanceRequest, Operation>
1806       setShieldedInstanceIntegrityPolicyMethodDescriptor =
1807           ApiMethodDescriptor
1808               .<SetShieldedInstanceIntegrityPolicyInstanceRequest, Operation>newBuilder()
1809               .setFullMethodName(
1810                   "google.cloud.compute.v1.Instances/SetShieldedInstanceIntegrityPolicy")
1811               .setHttpMethod("PATCH")
1812               .setType(ApiMethodDescriptor.MethodType.UNARY)
1813               .setRequestFormatter(
1814                   ProtoMessageRequestFormatter
1815                       .<SetShieldedInstanceIntegrityPolicyInstanceRequest>newBuilder()
1816                       .setPath(
1817                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setShieldedInstanceIntegrityPolicy",
1818                           request -> {
1819                             Map<String, String> fields = new HashMap<>();
1820                             ProtoRestSerializer<SetShieldedInstanceIntegrityPolicyInstanceRequest>
1821                                 serializer = ProtoRestSerializer.create();
1822                             serializer.putPathParam(fields, "instance", request.getInstance());
1823                             serializer.putPathParam(fields, "project", request.getProject());
1824                             serializer.putPathParam(fields, "zone", request.getZone());
1825                             return fields;
1826                           })
1827                       .setQueryParamsExtractor(
1828                           request -> {
1829                             Map<String, List<String>> fields = new HashMap<>();
1830                             ProtoRestSerializer<SetShieldedInstanceIntegrityPolicyInstanceRequest>
1831                                 serializer = ProtoRestSerializer.create();
1832                             if (request.hasRequestId()) {
1833                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
1834                             }
1835                             return fields;
1836                           })
1837                       .setRequestBodyExtractor(
1838                           request ->
1839                               ProtoRestSerializer.create()
1840                                   .toBody(
1841                                       "shieldedInstanceIntegrityPolicyResource",
1842                                       request.getShieldedInstanceIntegrityPolicyResource(),
1843                                       false))
1844                       .build())
1845               .setResponseParser(
1846                   ProtoMessageResponseParser.<Operation>newBuilder()
1847                       .setDefaultInstance(Operation.getDefaultInstance())
1848                       .setDefaultTypeRegistry(typeRegistry)
1849                       .build())
1850               .setOperationSnapshotFactory(
1851                   (SetShieldedInstanceIntegrityPolicyInstanceRequest request,
1852                       Operation response) -> {
1853                     StringBuilder opName = new StringBuilder(response.getName());
1854                     opName.append(":").append(request.getProject());
1855                     opName.append(":").append(request.getZone());
1856                     return HttpJsonOperationSnapshot.newBuilder()
1857                         .setName(opName.toString())
1858                         .setMetadata(response)
1859                         .setDone(Status.DONE.equals(response.getStatus()))
1860                         .setResponse(response)
1861                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
1862                         .build();
1863                   })
1864               .build();
1865 
1866   private static final ApiMethodDescriptor<SetTagsInstanceRequest, Operation>
1867       setTagsMethodDescriptor =
1868           ApiMethodDescriptor.<SetTagsInstanceRequest, Operation>newBuilder()
1869               .setFullMethodName("google.cloud.compute.v1.Instances/SetTags")
1870               .setHttpMethod("POST")
1871               .setType(ApiMethodDescriptor.MethodType.UNARY)
1872               .setRequestFormatter(
1873                   ProtoMessageRequestFormatter.<SetTagsInstanceRequest>newBuilder()
1874                       .setPath(
1875                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setTags",
1876                           request -> {
1877                             Map<String, String> fields = new HashMap<>();
1878                             ProtoRestSerializer<SetTagsInstanceRequest> serializer =
1879                                 ProtoRestSerializer.create();
1880                             serializer.putPathParam(fields, "instance", request.getInstance());
1881                             serializer.putPathParam(fields, "project", request.getProject());
1882                             serializer.putPathParam(fields, "zone", request.getZone());
1883                             return fields;
1884                           })
1885                       .setQueryParamsExtractor(
1886                           request -> {
1887                             Map<String, List<String>> fields = new HashMap<>();
1888                             ProtoRestSerializer<SetTagsInstanceRequest> serializer =
1889                                 ProtoRestSerializer.create();
1890                             if (request.hasRequestId()) {
1891                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
1892                             }
1893                             return fields;
1894                           })
1895                       .setRequestBodyExtractor(
1896                           request ->
1897                               ProtoRestSerializer.create()
1898                                   .toBody("tagsResource", request.getTagsResource(), false))
1899                       .build())
1900               .setResponseParser(
1901                   ProtoMessageResponseParser.<Operation>newBuilder()
1902                       .setDefaultInstance(Operation.getDefaultInstance())
1903                       .setDefaultTypeRegistry(typeRegistry)
1904                       .build())
1905               .setOperationSnapshotFactory(
1906                   (SetTagsInstanceRequest request, Operation response) -> {
1907                     StringBuilder opName = new StringBuilder(response.getName());
1908                     opName.append(":").append(request.getProject());
1909                     opName.append(":").append(request.getZone());
1910                     return HttpJsonOperationSnapshot.newBuilder()
1911                         .setName(opName.toString())
1912                         .setMetadata(response)
1913                         .setDone(Status.DONE.equals(response.getStatus()))
1914                         .setResponse(response)
1915                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
1916                         .build();
1917                   })
1918               .build();
1919 
1920   private static final ApiMethodDescriptor<SimulateMaintenanceEventInstanceRequest, Operation>
1921       simulateMaintenanceEventMethodDescriptor =
1922           ApiMethodDescriptor.<SimulateMaintenanceEventInstanceRequest, Operation>newBuilder()
1923               .setFullMethodName("google.cloud.compute.v1.Instances/SimulateMaintenanceEvent")
1924               .setHttpMethod("POST")
1925               .setType(ApiMethodDescriptor.MethodType.UNARY)
1926               .setRequestFormatter(
1927                   ProtoMessageRequestFormatter.<SimulateMaintenanceEventInstanceRequest>newBuilder()
1928                       .setPath(
1929                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/simulateMaintenanceEvent",
1930                           request -> {
1931                             Map<String, String> fields = new HashMap<>();
1932                             ProtoRestSerializer<SimulateMaintenanceEventInstanceRequest>
1933                                 serializer = ProtoRestSerializer.create();
1934                             serializer.putPathParam(fields, "instance", request.getInstance());
1935                             serializer.putPathParam(fields, "project", request.getProject());
1936                             serializer.putPathParam(fields, "zone", request.getZone());
1937                             return fields;
1938                           })
1939                       .setQueryParamsExtractor(
1940                           request -> {
1941                             Map<String, List<String>> fields = new HashMap<>();
1942                             ProtoRestSerializer<SimulateMaintenanceEventInstanceRequest>
1943                                 serializer = ProtoRestSerializer.create();
1944                             return fields;
1945                           })
1946                       .setRequestBodyExtractor(request -> null)
1947                       .build())
1948               .setResponseParser(
1949                   ProtoMessageResponseParser.<Operation>newBuilder()
1950                       .setDefaultInstance(Operation.getDefaultInstance())
1951                       .setDefaultTypeRegistry(typeRegistry)
1952                       .build())
1953               .setOperationSnapshotFactory(
1954                   (SimulateMaintenanceEventInstanceRequest request, Operation response) -> {
1955                     StringBuilder opName = new StringBuilder(response.getName());
1956                     opName.append(":").append(request.getProject());
1957                     opName.append(":").append(request.getZone());
1958                     return HttpJsonOperationSnapshot.newBuilder()
1959                         .setName(opName.toString())
1960                         .setMetadata(response)
1961                         .setDone(Status.DONE.equals(response.getStatus()))
1962                         .setResponse(response)
1963                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
1964                         .build();
1965                   })
1966               .build();
1967 
1968   private static final ApiMethodDescriptor<StartInstanceRequest, Operation> startMethodDescriptor =
1969       ApiMethodDescriptor.<StartInstanceRequest, Operation>newBuilder()
1970           .setFullMethodName("google.cloud.compute.v1.Instances/Start")
1971           .setHttpMethod("POST")
1972           .setType(ApiMethodDescriptor.MethodType.UNARY)
1973           .setRequestFormatter(
1974               ProtoMessageRequestFormatter.<StartInstanceRequest>newBuilder()
1975                   .setPath(
1976                       "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/start",
1977                       request -> {
1978                         Map<String, String> fields = new HashMap<>();
1979                         ProtoRestSerializer<StartInstanceRequest> serializer =
1980                             ProtoRestSerializer.create();
1981                         serializer.putPathParam(fields, "instance", request.getInstance());
1982                         serializer.putPathParam(fields, "project", request.getProject());
1983                         serializer.putPathParam(fields, "zone", request.getZone());
1984                         return fields;
1985                       })
1986                   .setQueryParamsExtractor(
1987                       request -> {
1988                         Map<String, List<String>> fields = new HashMap<>();
1989                         ProtoRestSerializer<StartInstanceRequest> serializer =
1990                             ProtoRestSerializer.create();
1991                         if (request.hasRequestId()) {
1992                           serializer.putQueryParam(fields, "requestId", request.getRequestId());
1993                         }
1994                         return fields;
1995                       })
1996                   .setRequestBodyExtractor(request -> null)
1997                   .build())
1998           .setResponseParser(
1999               ProtoMessageResponseParser.<Operation>newBuilder()
2000                   .setDefaultInstance(Operation.getDefaultInstance())
2001                   .setDefaultTypeRegistry(typeRegistry)
2002                   .build())
2003           .setOperationSnapshotFactory(
2004               (StartInstanceRequest request, Operation response) -> {
2005                 StringBuilder opName = new StringBuilder(response.getName());
2006                 opName.append(":").append(request.getProject());
2007                 opName.append(":").append(request.getZone());
2008                 return HttpJsonOperationSnapshot.newBuilder()
2009                     .setName(opName.toString())
2010                     .setMetadata(response)
2011                     .setDone(Status.DONE.equals(response.getStatus()))
2012                     .setResponse(response)
2013                     .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
2014                     .build();
2015               })
2016           .build();
2017 
2018   private static final ApiMethodDescriptor<StartWithEncryptionKeyInstanceRequest, Operation>
2019       startWithEncryptionKeyMethodDescriptor =
2020           ApiMethodDescriptor.<StartWithEncryptionKeyInstanceRequest, Operation>newBuilder()
2021               .setFullMethodName("google.cloud.compute.v1.Instances/StartWithEncryptionKey")
2022               .setHttpMethod("POST")
2023               .setType(ApiMethodDescriptor.MethodType.UNARY)
2024               .setRequestFormatter(
2025                   ProtoMessageRequestFormatter.<StartWithEncryptionKeyInstanceRequest>newBuilder()
2026                       .setPath(
2027                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/startWithEncryptionKey",
2028                           request -> {
2029                             Map<String, String> fields = new HashMap<>();
2030                             ProtoRestSerializer<StartWithEncryptionKeyInstanceRequest> serializer =
2031                                 ProtoRestSerializer.create();
2032                             serializer.putPathParam(fields, "instance", request.getInstance());
2033                             serializer.putPathParam(fields, "project", request.getProject());
2034                             serializer.putPathParam(fields, "zone", request.getZone());
2035                             return fields;
2036                           })
2037                       .setQueryParamsExtractor(
2038                           request -> {
2039                             Map<String, List<String>> fields = new HashMap<>();
2040                             ProtoRestSerializer<StartWithEncryptionKeyInstanceRequest> serializer =
2041                                 ProtoRestSerializer.create();
2042                             if (request.hasRequestId()) {
2043                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
2044                             }
2045                             return fields;
2046                           })
2047                       .setRequestBodyExtractor(
2048                           request ->
2049                               ProtoRestSerializer.create()
2050                                   .toBody(
2051                                       "instancesStartWithEncryptionKeyRequestResource",
2052                                       request.getInstancesStartWithEncryptionKeyRequestResource(),
2053                                       false))
2054                       .build())
2055               .setResponseParser(
2056                   ProtoMessageResponseParser.<Operation>newBuilder()
2057                       .setDefaultInstance(Operation.getDefaultInstance())
2058                       .setDefaultTypeRegistry(typeRegistry)
2059                       .build())
2060               .setOperationSnapshotFactory(
2061                   (StartWithEncryptionKeyInstanceRequest request, Operation response) -> {
2062                     StringBuilder opName = new StringBuilder(response.getName());
2063                     opName.append(":").append(request.getProject());
2064                     opName.append(":").append(request.getZone());
2065                     return HttpJsonOperationSnapshot.newBuilder()
2066                         .setName(opName.toString())
2067                         .setMetadata(response)
2068                         .setDone(Status.DONE.equals(response.getStatus()))
2069                         .setResponse(response)
2070                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
2071                         .build();
2072                   })
2073               .build();
2074 
2075   private static final ApiMethodDescriptor<StopInstanceRequest, Operation> stopMethodDescriptor =
2076       ApiMethodDescriptor.<StopInstanceRequest, Operation>newBuilder()
2077           .setFullMethodName("google.cloud.compute.v1.Instances/Stop")
2078           .setHttpMethod("POST")
2079           .setType(ApiMethodDescriptor.MethodType.UNARY)
2080           .setRequestFormatter(
2081               ProtoMessageRequestFormatter.<StopInstanceRequest>newBuilder()
2082                   .setPath(
2083                       "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/stop",
2084                       request -> {
2085                         Map<String, String> fields = new HashMap<>();
2086                         ProtoRestSerializer<StopInstanceRequest> serializer =
2087                             ProtoRestSerializer.create();
2088                         serializer.putPathParam(fields, "instance", request.getInstance());
2089                         serializer.putPathParam(fields, "project", request.getProject());
2090                         serializer.putPathParam(fields, "zone", request.getZone());
2091                         return fields;
2092                       })
2093                   .setQueryParamsExtractor(
2094                       request -> {
2095                         Map<String, List<String>> fields = new HashMap<>();
2096                         ProtoRestSerializer<StopInstanceRequest> serializer =
2097                             ProtoRestSerializer.create();
2098                         if (request.hasDiscardLocalSsd()) {
2099                           serializer.putQueryParam(
2100                               fields, "discardLocalSsd", request.getDiscardLocalSsd());
2101                         }
2102                         if (request.hasRequestId()) {
2103                           serializer.putQueryParam(fields, "requestId", request.getRequestId());
2104                         }
2105                         return fields;
2106                       })
2107                   .setRequestBodyExtractor(request -> null)
2108                   .build())
2109           .setResponseParser(
2110               ProtoMessageResponseParser.<Operation>newBuilder()
2111                   .setDefaultInstance(Operation.getDefaultInstance())
2112                   .setDefaultTypeRegistry(typeRegistry)
2113                   .build())
2114           .setOperationSnapshotFactory(
2115               (StopInstanceRequest request, Operation response) -> {
2116                 StringBuilder opName = new StringBuilder(response.getName());
2117                 opName.append(":").append(request.getProject());
2118                 opName.append(":").append(request.getZone());
2119                 return HttpJsonOperationSnapshot.newBuilder()
2120                     .setName(opName.toString())
2121                     .setMetadata(response)
2122                     .setDone(Status.DONE.equals(response.getStatus()))
2123                     .setResponse(response)
2124                     .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
2125                     .build();
2126               })
2127           .build();
2128 
2129   private static final ApiMethodDescriptor<SuspendInstanceRequest, Operation>
2130       suspendMethodDescriptor =
2131           ApiMethodDescriptor.<SuspendInstanceRequest, Operation>newBuilder()
2132               .setFullMethodName("google.cloud.compute.v1.Instances/Suspend")
2133               .setHttpMethod("POST")
2134               .setType(ApiMethodDescriptor.MethodType.UNARY)
2135               .setRequestFormatter(
2136                   ProtoMessageRequestFormatter.<SuspendInstanceRequest>newBuilder()
2137                       .setPath(
2138                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/suspend",
2139                           request -> {
2140                             Map<String, String> fields = new HashMap<>();
2141                             ProtoRestSerializer<SuspendInstanceRequest> serializer =
2142                                 ProtoRestSerializer.create();
2143                             serializer.putPathParam(fields, "instance", request.getInstance());
2144                             serializer.putPathParam(fields, "project", request.getProject());
2145                             serializer.putPathParam(fields, "zone", request.getZone());
2146                             return fields;
2147                           })
2148                       .setQueryParamsExtractor(
2149                           request -> {
2150                             Map<String, List<String>> fields = new HashMap<>();
2151                             ProtoRestSerializer<SuspendInstanceRequest> serializer =
2152                                 ProtoRestSerializer.create();
2153                             if (request.hasDiscardLocalSsd()) {
2154                               serializer.putQueryParam(
2155                                   fields, "discardLocalSsd", request.getDiscardLocalSsd());
2156                             }
2157                             if (request.hasRequestId()) {
2158                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
2159                             }
2160                             return fields;
2161                           })
2162                       .setRequestBodyExtractor(request -> null)
2163                       .build())
2164               .setResponseParser(
2165                   ProtoMessageResponseParser.<Operation>newBuilder()
2166                       .setDefaultInstance(Operation.getDefaultInstance())
2167                       .setDefaultTypeRegistry(typeRegistry)
2168                       .build())
2169               .setOperationSnapshotFactory(
2170                   (SuspendInstanceRequest request, Operation response) -> {
2171                     StringBuilder opName = new StringBuilder(response.getName());
2172                     opName.append(":").append(request.getProject());
2173                     opName.append(":").append(request.getZone());
2174                     return HttpJsonOperationSnapshot.newBuilder()
2175                         .setName(opName.toString())
2176                         .setMetadata(response)
2177                         .setDone(Status.DONE.equals(response.getStatus()))
2178                         .setResponse(response)
2179                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
2180                         .build();
2181                   })
2182               .build();
2183 
2184   private static final ApiMethodDescriptor<
2185           TestIamPermissionsInstanceRequest, TestPermissionsResponse>
2186       testIamPermissionsMethodDescriptor =
2187           ApiMethodDescriptor
2188               .<TestIamPermissionsInstanceRequest, TestPermissionsResponse>newBuilder()
2189               .setFullMethodName("google.cloud.compute.v1.Instances/TestIamPermissions")
2190               .setHttpMethod("POST")
2191               .setType(ApiMethodDescriptor.MethodType.UNARY)
2192               .setRequestFormatter(
2193                   ProtoMessageRequestFormatter.<TestIamPermissionsInstanceRequest>newBuilder()
2194                       .setPath(
2195                           "/compute/v1/projects/{project}/zones/{zone}/instances/{resource}/testIamPermissions",
2196                           request -> {
2197                             Map<String, String> fields = new HashMap<>();
2198                             ProtoRestSerializer<TestIamPermissionsInstanceRequest> serializer =
2199                                 ProtoRestSerializer.create();
2200                             serializer.putPathParam(fields, "project", request.getProject());
2201                             serializer.putPathParam(fields, "resource", request.getResource());
2202                             serializer.putPathParam(fields, "zone", request.getZone());
2203                             return fields;
2204                           })
2205                       .setQueryParamsExtractor(
2206                           request -> {
2207                             Map<String, List<String>> fields = new HashMap<>();
2208                             ProtoRestSerializer<TestIamPermissionsInstanceRequest> serializer =
2209                                 ProtoRestSerializer.create();
2210                             return fields;
2211                           })
2212                       .setRequestBodyExtractor(
2213                           request ->
2214                               ProtoRestSerializer.create()
2215                                   .toBody(
2216                                       "testPermissionsRequestResource",
2217                                       request.getTestPermissionsRequestResource(),
2218                                       false))
2219                       .build())
2220               .setResponseParser(
2221                   ProtoMessageResponseParser.<TestPermissionsResponse>newBuilder()
2222                       .setDefaultInstance(TestPermissionsResponse.getDefaultInstance())
2223                       .setDefaultTypeRegistry(typeRegistry)
2224                       .build())
2225               .build();
2226 
2227   private static final ApiMethodDescriptor<UpdateInstanceRequest, Operation>
2228       updateMethodDescriptor =
2229           ApiMethodDescriptor.<UpdateInstanceRequest, Operation>newBuilder()
2230               .setFullMethodName("google.cloud.compute.v1.Instances/Update")
2231               .setHttpMethod("PUT")
2232               .setType(ApiMethodDescriptor.MethodType.UNARY)
2233               .setRequestFormatter(
2234                   ProtoMessageRequestFormatter.<UpdateInstanceRequest>newBuilder()
2235                       .setPath(
2236                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}",
2237                           request -> {
2238                             Map<String, String> fields = new HashMap<>();
2239                             ProtoRestSerializer<UpdateInstanceRequest> serializer =
2240                                 ProtoRestSerializer.create();
2241                             serializer.putPathParam(fields, "instance", request.getInstance());
2242                             serializer.putPathParam(fields, "project", request.getProject());
2243                             serializer.putPathParam(fields, "zone", request.getZone());
2244                             return fields;
2245                           })
2246                       .setQueryParamsExtractor(
2247                           request -> {
2248                             Map<String, List<String>> fields = new HashMap<>();
2249                             ProtoRestSerializer<UpdateInstanceRequest> serializer =
2250                                 ProtoRestSerializer.create();
2251                             if (request.hasMinimalAction()) {
2252                               serializer.putQueryParam(
2253                                   fields, "minimalAction", request.getMinimalAction());
2254                             }
2255                             if (request.hasMostDisruptiveAllowedAction()) {
2256                               serializer.putQueryParam(
2257                                   fields,
2258                                   "mostDisruptiveAllowedAction",
2259                                   request.getMostDisruptiveAllowedAction());
2260                             }
2261                             if (request.hasRequestId()) {
2262                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
2263                             }
2264                             return fields;
2265                           })
2266                       .setRequestBodyExtractor(
2267                           request ->
2268                               ProtoRestSerializer.create()
2269                                   .toBody("instanceResource", request.getInstanceResource(), false))
2270                       .build())
2271               .setResponseParser(
2272                   ProtoMessageResponseParser.<Operation>newBuilder()
2273                       .setDefaultInstance(Operation.getDefaultInstance())
2274                       .setDefaultTypeRegistry(typeRegistry)
2275                       .build())
2276               .setOperationSnapshotFactory(
2277                   (UpdateInstanceRequest request, Operation response) -> {
2278                     StringBuilder opName = new StringBuilder(response.getName());
2279                     opName.append(":").append(request.getProject());
2280                     opName.append(":").append(request.getZone());
2281                     return HttpJsonOperationSnapshot.newBuilder()
2282                         .setName(opName.toString())
2283                         .setMetadata(response)
2284                         .setDone(Status.DONE.equals(response.getStatus()))
2285                         .setResponse(response)
2286                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
2287                         .build();
2288                   })
2289               .build();
2290 
2291   private static final ApiMethodDescriptor<UpdateAccessConfigInstanceRequest, Operation>
2292       updateAccessConfigMethodDescriptor =
2293           ApiMethodDescriptor.<UpdateAccessConfigInstanceRequest, Operation>newBuilder()
2294               .setFullMethodName("google.cloud.compute.v1.Instances/UpdateAccessConfig")
2295               .setHttpMethod("POST")
2296               .setType(ApiMethodDescriptor.MethodType.UNARY)
2297               .setRequestFormatter(
2298                   ProtoMessageRequestFormatter.<UpdateAccessConfigInstanceRequest>newBuilder()
2299                       .setPath(
2300                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/updateAccessConfig",
2301                           request -> {
2302                             Map<String, String> fields = new HashMap<>();
2303                             ProtoRestSerializer<UpdateAccessConfigInstanceRequest> serializer =
2304                                 ProtoRestSerializer.create();
2305                             serializer.putPathParam(fields, "instance", request.getInstance());
2306                             serializer.putPathParam(fields, "project", request.getProject());
2307                             serializer.putPathParam(fields, "zone", request.getZone());
2308                             return fields;
2309                           })
2310                       .setQueryParamsExtractor(
2311                           request -> {
2312                             Map<String, List<String>> fields = new HashMap<>();
2313                             ProtoRestSerializer<UpdateAccessConfigInstanceRequest> serializer =
2314                                 ProtoRestSerializer.create();
2315                             serializer.putQueryParam(
2316                                 fields, "networkInterface", request.getNetworkInterface());
2317                             if (request.hasRequestId()) {
2318                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
2319                             }
2320                             return fields;
2321                           })
2322                       .setRequestBodyExtractor(
2323                           request ->
2324                               ProtoRestSerializer.create()
2325                                   .toBody(
2326                                       "accessConfigResource",
2327                                       request.getAccessConfigResource(),
2328                                       false))
2329                       .build())
2330               .setResponseParser(
2331                   ProtoMessageResponseParser.<Operation>newBuilder()
2332                       .setDefaultInstance(Operation.getDefaultInstance())
2333                       .setDefaultTypeRegistry(typeRegistry)
2334                       .build())
2335               .setOperationSnapshotFactory(
2336                   (UpdateAccessConfigInstanceRequest request, Operation response) -> {
2337                     StringBuilder opName = new StringBuilder(response.getName());
2338                     opName.append(":").append(request.getProject());
2339                     opName.append(":").append(request.getZone());
2340                     return HttpJsonOperationSnapshot.newBuilder()
2341                         .setName(opName.toString())
2342                         .setMetadata(response)
2343                         .setDone(Status.DONE.equals(response.getStatus()))
2344                         .setResponse(response)
2345                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
2346                         .build();
2347                   })
2348               .build();
2349 
2350   private static final ApiMethodDescriptor<UpdateDisplayDeviceInstanceRequest, Operation>
2351       updateDisplayDeviceMethodDescriptor =
2352           ApiMethodDescriptor.<UpdateDisplayDeviceInstanceRequest, Operation>newBuilder()
2353               .setFullMethodName("google.cloud.compute.v1.Instances/UpdateDisplayDevice")
2354               .setHttpMethod("PATCH")
2355               .setType(ApiMethodDescriptor.MethodType.UNARY)
2356               .setRequestFormatter(
2357                   ProtoMessageRequestFormatter.<UpdateDisplayDeviceInstanceRequest>newBuilder()
2358                       .setPath(
2359                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/updateDisplayDevice",
2360                           request -> {
2361                             Map<String, String> fields = new HashMap<>();
2362                             ProtoRestSerializer<UpdateDisplayDeviceInstanceRequest> serializer =
2363                                 ProtoRestSerializer.create();
2364                             serializer.putPathParam(fields, "instance", request.getInstance());
2365                             serializer.putPathParam(fields, "project", request.getProject());
2366                             serializer.putPathParam(fields, "zone", request.getZone());
2367                             return fields;
2368                           })
2369                       .setQueryParamsExtractor(
2370                           request -> {
2371                             Map<String, List<String>> fields = new HashMap<>();
2372                             ProtoRestSerializer<UpdateDisplayDeviceInstanceRequest> serializer =
2373                                 ProtoRestSerializer.create();
2374                             if (request.hasRequestId()) {
2375                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
2376                             }
2377                             return fields;
2378                           })
2379                       .setRequestBodyExtractor(
2380                           request ->
2381                               ProtoRestSerializer.create()
2382                                   .toBody(
2383                                       "displayDeviceResource",
2384                                       request.getDisplayDeviceResource(),
2385                                       false))
2386                       .build())
2387               .setResponseParser(
2388                   ProtoMessageResponseParser.<Operation>newBuilder()
2389                       .setDefaultInstance(Operation.getDefaultInstance())
2390                       .setDefaultTypeRegistry(typeRegistry)
2391                       .build())
2392               .setOperationSnapshotFactory(
2393                   (UpdateDisplayDeviceInstanceRequest request, Operation response) -> {
2394                     StringBuilder opName = new StringBuilder(response.getName());
2395                     opName.append(":").append(request.getProject());
2396                     opName.append(":").append(request.getZone());
2397                     return HttpJsonOperationSnapshot.newBuilder()
2398                         .setName(opName.toString())
2399                         .setMetadata(response)
2400                         .setDone(Status.DONE.equals(response.getStatus()))
2401                         .setResponse(response)
2402                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
2403                         .build();
2404                   })
2405               .build();
2406 
2407   private static final ApiMethodDescriptor<UpdateNetworkInterfaceInstanceRequest, Operation>
2408       updateNetworkInterfaceMethodDescriptor =
2409           ApiMethodDescriptor.<UpdateNetworkInterfaceInstanceRequest, Operation>newBuilder()
2410               .setFullMethodName("google.cloud.compute.v1.Instances/UpdateNetworkInterface")
2411               .setHttpMethod("PATCH")
2412               .setType(ApiMethodDescriptor.MethodType.UNARY)
2413               .setRequestFormatter(
2414                   ProtoMessageRequestFormatter.<UpdateNetworkInterfaceInstanceRequest>newBuilder()
2415                       .setPath(
2416                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/updateNetworkInterface",
2417                           request -> {
2418                             Map<String, String> fields = new HashMap<>();
2419                             ProtoRestSerializer<UpdateNetworkInterfaceInstanceRequest> serializer =
2420                                 ProtoRestSerializer.create();
2421                             serializer.putPathParam(fields, "instance", request.getInstance());
2422                             serializer.putPathParam(fields, "project", request.getProject());
2423                             serializer.putPathParam(fields, "zone", request.getZone());
2424                             return fields;
2425                           })
2426                       .setQueryParamsExtractor(
2427                           request -> {
2428                             Map<String, List<String>> fields = new HashMap<>();
2429                             ProtoRestSerializer<UpdateNetworkInterfaceInstanceRequest> serializer =
2430                                 ProtoRestSerializer.create();
2431                             serializer.putQueryParam(
2432                                 fields, "networkInterface", request.getNetworkInterface());
2433                             if (request.hasRequestId()) {
2434                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
2435                             }
2436                             return fields;
2437                           })
2438                       .setRequestBodyExtractor(
2439                           request ->
2440                               ProtoRestSerializer.create()
2441                                   .toBody(
2442                                       "networkInterfaceResource",
2443                                       request.getNetworkInterfaceResource(),
2444                                       false))
2445                       .build())
2446               .setResponseParser(
2447                   ProtoMessageResponseParser.<Operation>newBuilder()
2448                       .setDefaultInstance(Operation.getDefaultInstance())
2449                       .setDefaultTypeRegistry(typeRegistry)
2450                       .build())
2451               .setOperationSnapshotFactory(
2452                   (UpdateNetworkInterfaceInstanceRequest request, Operation response) -> {
2453                     StringBuilder opName = new StringBuilder(response.getName());
2454                     opName.append(":").append(request.getProject());
2455                     opName.append(":").append(request.getZone());
2456                     return HttpJsonOperationSnapshot.newBuilder()
2457                         .setName(opName.toString())
2458                         .setMetadata(response)
2459                         .setDone(Status.DONE.equals(response.getStatus()))
2460                         .setResponse(response)
2461                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
2462                         .build();
2463                   })
2464               .build();
2465 
2466   private static final ApiMethodDescriptor<UpdateShieldedInstanceConfigInstanceRequest, Operation>
2467       updateShieldedInstanceConfigMethodDescriptor =
2468           ApiMethodDescriptor.<UpdateShieldedInstanceConfigInstanceRequest, Operation>newBuilder()
2469               .setFullMethodName("google.cloud.compute.v1.Instances/UpdateShieldedInstanceConfig")
2470               .setHttpMethod("PATCH")
2471               .setType(ApiMethodDescriptor.MethodType.UNARY)
2472               .setRequestFormatter(
2473                   ProtoMessageRequestFormatter
2474                       .<UpdateShieldedInstanceConfigInstanceRequest>newBuilder()
2475                       .setPath(
2476                           "/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/updateShieldedInstanceConfig",
2477                           request -> {
2478                             Map<String, String> fields = new HashMap<>();
2479                             ProtoRestSerializer<UpdateShieldedInstanceConfigInstanceRequest>
2480                                 serializer = ProtoRestSerializer.create();
2481                             serializer.putPathParam(fields, "instance", request.getInstance());
2482                             serializer.putPathParam(fields, "project", request.getProject());
2483                             serializer.putPathParam(fields, "zone", request.getZone());
2484                             return fields;
2485                           })
2486                       .setQueryParamsExtractor(
2487                           request -> {
2488                             Map<String, List<String>> fields = new HashMap<>();
2489                             ProtoRestSerializer<UpdateShieldedInstanceConfigInstanceRequest>
2490                                 serializer = ProtoRestSerializer.create();
2491                             if (request.hasRequestId()) {
2492                               serializer.putQueryParam(fields, "requestId", request.getRequestId());
2493                             }
2494                             return fields;
2495                           })
2496                       .setRequestBodyExtractor(
2497                           request ->
2498                               ProtoRestSerializer.create()
2499                                   .toBody(
2500                                       "shieldedInstanceConfigResource",
2501                                       request.getShieldedInstanceConfigResource(),
2502                                       false))
2503                       .build())
2504               .setResponseParser(
2505                   ProtoMessageResponseParser.<Operation>newBuilder()
2506                       .setDefaultInstance(Operation.getDefaultInstance())
2507                       .setDefaultTypeRegistry(typeRegistry)
2508                       .build())
2509               .setOperationSnapshotFactory(
2510                   (UpdateShieldedInstanceConfigInstanceRequest request, Operation response) -> {
2511                     StringBuilder opName = new StringBuilder(response.getName());
2512                     opName.append(":").append(request.getProject());
2513                     opName.append(":").append(request.getZone());
2514                     return HttpJsonOperationSnapshot.newBuilder()
2515                         .setName(opName.toString())
2516                         .setMetadata(response)
2517                         .setDone(Status.DONE.equals(response.getStatus()))
2518                         .setResponse(response)
2519                         .setError(response.getHttpErrorStatusCode(), response.getHttpErrorMessage())
2520                         .build();
2521                   })
2522               .build();
2523 
2524   private final UnaryCallable<AddAccessConfigInstanceRequest, Operation> addAccessConfigCallable;
2525   private final OperationCallable<AddAccessConfigInstanceRequest, Operation, Operation>
2526       addAccessConfigOperationCallable;
2527   private final UnaryCallable<AddResourcePoliciesInstanceRequest, Operation>
2528       addResourcePoliciesCallable;
2529   private final OperationCallable<AddResourcePoliciesInstanceRequest, Operation, Operation>
2530       addResourcePoliciesOperationCallable;
2531   private final UnaryCallable<AggregatedListInstancesRequest, InstanceAggregatedList>
2532       aggregatedListCallable;
2533   private final UnaryCallable<AggregatedListInstancesRequest, AggregatedListPagedResponse>
2534       aggregatedListPagedCallable;
2535   private final UnaryCallable<AttachDiskInstanceRequest, Operation> attachDiskCallable;
2536   private final OperationCallable<AttachDiskInstanceRequest, Operation, Operation>
2537       attachDiskOperationCallable;
2538   private final UnaryCallable<BulkInsertInstanceRequest, Operation> bulkInsertCallable;
2539   private final OperationCallable<BulkInsertInstanceRequest, Operation, Operation>
2540       bulkInsertOperationCallable;
2541   private final UnaryCallable<DeleteInstanceRequest, Operation> deleteCallable;
2542   private final OperationCallable<DeleteInstanceRequest, Operation, Operation>
2543       deleteOperationCallable;
2544   private final UnaryCallable<DeleteAccessConfigInstanceRequest, Operation>
2545       deleteAccessConfigCallable;
2546   private final OperationCallable<DeleteAccessConfigInstanceRequest, Operation, Operation>
2547       deleteAccessConfigOperationCallable;
2548   private final UnaryCallable<DetachDiskInstanceRequest, Operation> detachDiskCallable;
2549   private final OperationCallable<DetachDiskInstanceRequest, Operation, Operation>
2550       detachDiskOperationCallable;
2551   private final UnaryCallable<GetInstanceRequest, Instance> getCallable;
2552   private final UnaryCallable<
2553           GetEffectiveFirewallsInstanceRequest, InstancesGetEffectiveFirewallsResponse>
2554       getEffectiveFirewallsCallable;
2555   private final UnaryCallable<GetGuestAttributesInstanceRequest, GuestAttributes>
2556       getGuestAttributesCallable;
2557   private final UnaryCallable<GetIamPolicyInstanceRequest, Policy> getIamPolicyCallable;
2558   private final UnaryCallable<GetScreenshotInstanceRequest, Screenshot> getScreenshotCallable;
2559   private final UnaryCallable<GetSerialPortOutputInstanceRequest, SerialPortOutput>
2560       getSerialPortOutputCallable;
2561   private final UnaryCallable<GetShieldedInstanceIdentityInstanceRequest, ShieldedInstanceIdentity>
2562       getShieldedInstanceIdentityCallable;
2563   private final UnaryCallable<InsertInstanceRequest, Operation> insertCallable;
2564   private final OperationCallable<InsertInstanceRequest, Operation, Operation>
2565       insertOperationCallable;
2566   private final UnaryCallable<ListInstancesRequest, InstanceList> listCallable;
2567   private final UnaryCallable<ListInstancesRequest, ListPagedResponse> listPagedCallable;
2568   private final UnaryCallable<ListReferrersInstancesRequest, InstanceListReferrers>
2569       listReferrersCallable;
2570   private final UnaryCallable<ListReferrersInstancesRequest, ListReferrersPagedResponse>
2571       listReferrersPagedCallable;
2572   private final UnaryCallable<RemoveResourcePoliciesInstanceRequest, Operation>
2573       removeResourcePoliciesCallable;
2574   private final OperationCallable<RemoveResourcePoliciesInstanceRequest, Operation, Operation>
2575       removeResourcePoliciesOperationCallable;
2576   private final UnaryCallable<ResetInstanceRequest, Operation> resetCallable;
2577   private final OperationCallable<ResetInstanceRequest, Operation, Operation>
2578       resetOperationCallable;
2579   private final UnaryCallable<ResumeInstanceRequest, Operation> resumeCallable;
2580   private final OperationCallable<ResumeInstanceRequest, Operation, Operation>
2581       resumeOperationCallable;
2582   private final UnaryCallable<
2583           SendDiagnosticInterruptInstanceRequest, SendDiagnosticInterruptInstanceResponse>
2584       sendDiagnosticInterruptCallable;
2585   private final UnaryCallable<SetDeletionProtectionInstanceRequest, Operation>
2586       setDeletionProtectionCallable;
2587   private final OperationCallable<SetDeletionProtectionInstanceRequest, Operation, Operation>
2588       setDeletionProtectionOperationCallable;
2589   private final UnaryCallable<SetDiskAutoDeleteInstanceRequest, Operation>
2590       setDiskAutoDeleteCallable;
2591   private final OperationCallable<SetDiskAutoDeleteInstanceRequest, Operation, Operation>
2592       setDiskAutoDeleteOperationCallable;
2593   private final UnaryCallable<SetIamPolicyInstanceRequest, Policy> setIamPolicyCallable;
2594   private final UnaryCallable<SetLabelsInstanceRequest, Operation> setLabelsCallable;
2595   private final OperationCallable<SetLabelsInstanceRequest, Operation, Operation>
2596       setLabelsOperationCallable;
2597   private final UnaryCallable<SetMachineResourcesInstanceRequest, Operation>
2598       setMachineResourcesCallable;
2599   private final OperationCallable<SetMachineResourcesInstanceRequest, Operation, Operation>
2600       setMachineResourcesOperationCallable;
2601   private final UnaryCallable<SetMachineTypeInstanceRequest, Operation> setMachineTypeCallable;
2602   private final OperationCallable<SetMachineTypeInstanceRequest, Operation, Operation>
2603       setMachineTypeOperationCallable;
2604   private final UnaryCallable<SetMetadataInstanceRequest, Operation> setMetadataCallable;
2605   private final OperationCallable<SetMetadataInstanceRequest, Operation, Operation>
2606       setMetadataOperationCallable;
2607   private final UnaryCallable<SetMinCpuPlatformInstanceRequest, Operation>
2608       setMinCpuPlatformCallable;
2609   private final OperationCallable<SetMinCpuPlatformInstanceRequest, Operation, Operation>
2610       setMinCpuPlatformOperationCallable;
2611   private final UnaryCallable<SetNameInstanceRequest, Operation> setNameCallable;
2612   private final OperationCallable<SetNameInstanceRequest, Operation, Operation>
2613       setNameOperationCallable;
2614   private final UnaryCallable<SetSchedulingInstanceRequest, Operation> setSchedulingCallable;
2615   private final OperationCallable<SetSchedulingInstanceRequest, Operation, Operation>
2616       setSchedulingOperationCallable;
2617   private final UnaryCallable<SetServiceAccountInstanceRequest, Operation>
2618       setServiceAccountCallable;
2619   private final OperationCallable<SetServiceAccountInstanceRequest, Operation, Operation>
2620       setServiceAccountOperationCallable;
2621   private final UnaryCallable<SetShieldedInstanceIntegrityPolicyInstanceRequest, Operation>
2622       setShieldedInstanceIntegrityPolicyCallable;
2623   private final OperationCallable<
2624           SetShieldedInstanceIntegrityPolicyInstanceRequest, Operation, Operation>
2625       setShieldedInstanceIntegrityPolicyOperationCallable;
2626   private final UnaryCallable<SetTagsInstanceRequest, Operation> setTagsCallable;
2627   private final OperationCallable<SetTagsInstanceRequest, Operation, Operation>
2628       setTagsOperationCallable;
2629   private final UnaryCallable<SimulateMaintenanceEventInstanceRequest, Operation>
2630       simulateMaintenanceEventCallable;
2631   private final OperationCallable<SimulateMaintenanceEventInstanceRequest, Operation, Operation>
2632       simulateMaintenanceEventOperationCallable;
2633   private final UnaryCallable<StartInstanceRequest, Operation> startCallable;
2634   private final OperationCallable<StartInstanceRequest, Operation, Operation>
2635       startOperationCallable;
2636   private final UnaryCallable<StartWithEncryptionKeyInstanceRequest, Operation>
2637       startWithEncryptionKeyCallable;
2638   private final OperationCallable<StartWithEncryptionKeyInstanceRequest, Operation, Operation>
2639       startWithEncryptionKeyOperationCallable;
2640   private final UnaryCallable<StopInstanceRequest, Operation> stopCallable;
2641   private final OperationCallable<StopInstanceRequest, Operation, Operation> stopOperationCallable;
2642   private final UnaryCallable<SuspendInstanceRequest, Operation> suspendCallable;
2643   private final OperationCallable<SuspendInstanceRequest, Operation, Operation>
2644       suspendOperationCallable;
2645   private final UnaryCallable<TestIamPermissionsInstanceRequest, TestPermissionsResponse>
2646       testIamPermissionsCallable;
2647   private final UnaryCallable<UpdateInstanceRequest, Operation> updateCallable;
2648   private final OperationCallable<UpdateInstanceRequest, Operation, Operation>
2649       updateOperationCallable;
2650   private final UnaryCallable<UpdateAccessConfigInstanceRequest, Operation>
2651       updateAccessConfigCallable;
2652   private final OperationCallable<UpdateAccessConfigInstanceRequest, Operation, Operation>
2653       updateAccessConfigOperationCallable;
2654   private final UnaryCallable<UpdateDisplayDeviceInstanceRequest, Operation>
2655       updateDisplayDeviceCallable;
2656   private final OperationCallable<UpdateDisplayDeviceInstanceRequest, Operation, Operation>
2657       updateDisplayDeviceOperationCallable;
2658   private final UnaryCallable<UpdateNetworkInterfaceInstanceRequest, Operation>
2659       updateNetworkInterfaceCallable;
2660   private final OperationCallable<UpdateNetworkInterfaceInstanceRequest, Operation, Operation>
2661       updateNetworkInterfaceOperationCallable;
2662   private final UnaryCallable<UpdateShieldedInstanceConfigInstanceRequest, Operation>
2663       updateShieldedInstanceConfigCallable;
2664   private final OperationCallable<UpdateShieldedInstanceConfigInstanceRequest, Operation, Operation>
2665       updateShieldedInstanceConfigOperationCallable;
2666 
2667   private final BackgroundResource backgroundResources;
2668   private final HttpJsonZoneOperationsStub httpJsonOperationsStub;
2669   private final HttpJsonStubCallableFactory callableFactory;
2670 
create(InstancesStubSettings settings)2671   public static final HttpJsonInstancesStub create(InstancesStubSettings settings)
2672       throws IOException {
2673     return new HttpJsonInstancesStub(settings, ClientContext.create(settings));
2674   }
2675 
create(ClientContext clientContext)2676   public static final HttpJsonInstancesStub create(ClientContext clientContext) throws IOException {
2677     return new HttpJsonInstancesStub(InstancesStubSettings.newBuilder().build(), clientContext);
2678   }
2679 
create( ClientContext clientContext, HttpJsonStubCallableFactory callableFactory)2680   public static final HttpJsonInstancesStub create(
2681       ClientContext clientContext, HttpJsonStubCallableFactory callableFactory) throws IOException {
2682     return new HttpJsonInstancesStub(
2683         InstancesStubSettings.newBuilder().build(), clientContext, callableFactory);
2684   }
2685 
2686   /**
2687    * Constructs an instance of HttpJsonInstancesStub, using the given settings. This is protected so
2688    * that it is easy to make a subclass, but otherwise, the static factory methods should be
2689    * preferred.
2690    */
HttpJsonInstancesStub(InstancesStubSettings settings, ClientContext clientContext)2691   protected HttpJsonInstancesStub(InstancesStubSettings settings, ClientContext clientContext)
2692       throws IOException {
2693     this(settings, clientContext, new HttpJsonInstancesCallableFactory());
2694   }
2695 
2696   /**
2697    * Constructs an instance of HttpJsonInstancesStub, using the given settings. This is protected so
2698    * that it is easy to make a subclass, but otherwise, the static factory methods should be
2699    * preferred.
2700    */
HttpJsonInstancesStub( InstancesStubSettings settings, ClientContext clientContext, HttpJsonStubCallableFactory callableFactory)2701   protected HttpJsonInstancesStub(
2702       InstancesStubSettings settings,
2703       ClientContext clientContext,
2704       HttpJsonStubCallableFactory callableFactory)
2705       throws IOException {
2706     this.callableFactory = callableFactory;
2707     this.httpJsonOperationsStub = HttpJsonZoneOperationsStub.create(clientContext, callableFactory);
2708 
2709     HttpJsonCallSettings<AddAccessConfigInstanceRequest, Operation>
2710         addAccessConfigTransportSettings =
2711             HttpJsonCallSettings.<AddAccessConfigInstanceRequest, Operation>newBuilder()
2712                 .setMethodDescriptor(addAccessConfigMethodDescriptor)
2713                 .setTypeRegistry(typeRegistry)
2714                 .build();
2715     HttpJsonCallSettings<AddResourcePoliciesInstanceRequest, Operation>
2716         addResourcePoliciesTransportSettings =
2717             HttpJsonCallSettings.<AddResourcePoliciesInstanceRequest, Operation>newBuilder()
2718                 .setMethodDescriptor(addResourcePoliciesMethodDescriptor)
2719                 .setTypeRegistry(typeRegistry)
2720                 .build();
2721     HttpJsonCallSettings<AggregatedListInstancesRequest, InstanceAggregatedList>
2722         aggregatedListTransportSettings =
2723             HttpJsonCallSettings
2724                 .<AggregatedListInstancesRequest, InstanceAggregatedList>newBuilder()
2725                 .setMethodDescriptor(aggregatedListMethodDescriptor)
2726                 .setTypeRegistry(typeRegistry)
2727                 .build();
2728     HttpJsonCallSettings<AttachDiskInstanceRequest, Operation> attachDiskTransportSettings =
2729         HttpJsonCallSettings.<AttachDiskInstanceRequest, Operation>newBuilder()
2730             .setMethodDescriptor(attachDiskMethodDescriptor)
2731             .setTypeRegistry(typeRegistry)
2732             .build();
2733     HttpJsonCallSettings<BulkInsertInstanceRequest, Operation> bulkInsertTransportSettings =
2734         HttpJsonCallSettings.<BulkInsertInstanceRequest, Operation>newBuilder()
2735             .setMethodDescriptor(bulkInsertMethodDescriptor)
2736             .setTypeRegistry(typeRegistry)
2737             .build();
2738     HttpJsonCallSettings<DeleteInstanceRequest, Operation> deleteTransportSettings =
2739         HttpJsonCallSettings.<DeleteInstanceRequest, Operation>newBuilder()
2740             .setMethodDescriptor(deleteMethodDescriptor)
2741             .setTypeRegistry(typeRegistry)
2742             .build();
2743     HttpJsonCallSettings<DeleteAccessConfigInstanceRequest, Operation>
2744         deleteAccessConfigTransportSettings =
2745             HttpJsonCallSettings.<DeleteAccessConfigInstanceRequest, Operation>newBuilder()
2746                 .setMethodDescriptor(deleteAccessConfigMethodDescriptor)
2747                 .setTypeRegistry(typeRegistry)
2748                 .build();
2749     HttpJsonCallSettings<DetachDiskInstanceRequest, Operation> detachDiskTransportSettings =
2750         HttpJsonCallSettings.<DetachDiskInstanceRequest, Operation>newBuilder()
2751             .setMethodDescriptor(detachDiskMethodDescriptor)
2752             .setTypeRegistry(typeRegistry)
2753             .build();
2754     HttpJsonCallSettings<GetInstanceRequest, Instance> getTransportSettings =
2755         HttpJsonCallSettings.<GetInstanceRequest, Instance>newBuilder()
2756             .setMethodDescriptor(getMethodDescriptor)
2757             .setTypeRegistry(typeRegistry)
2758             .build();
2759     HttpJsonCallSettings<
2760             GetEffectiveFirewallsInstanceRequest, InstancesGetEffectiveFirewallsResponse>
2761         getEffectiveFirewallsTransportSettings =
2762             HttpJsonCallSettings
2763                 .<GetEffectiveFirewallsInstanceRequest, InstancesGetEffectiveFirewallsResponse>
2764                     newBuilder()
2765                 .setMethodDescriptor(getEffectiveFirewallsMethodDescriptor)
2766                 .setTypeRegistry(typeRegistry)
2767                 .build();
2768     HttpJsonCallSettings<GetGuestAttributesInstanceRequest, GuestAttributes>
2769         getGuestAttributesTransportSettings =
2770             HttpJsonCallSettings.<GetGuestAttributesInstanceRequest, GuestAttributes>newBuilder()
2771                 .setMethodDescriptor(getGuestAttributesMethodDescriptor)
2772                 .setTypeRegistry(typeRegistry)
2773                 .build();
2774     HttpJsonCallSettings<GetIamPolicyInstanceRequest, Policy> getIamPolicyTransportSettings =
2775         HttpJsonCallSettings.<GetIamPolicyInstanceRequest, Policy>newBuilder()
2776             .setMethodDescriptor(getIamPolicyMethodDescriptor)
2777             .setTypeRegistry(typeRegistry)
2778             .build();
2779     HttpJsonCallSettings<GetScreenshotInstanceRequest, Screenshot> getScreenshotTransportSettings =
2780         HttpJsonCallSettings.<GetScreenshotInstanceRequest, Screenshot>newBuilder()
2781             .setMethodDescriptor(getScreenshotMethodDescriptor)
2782             .setTypeRegistry(typeRegistry)
2783             .build();
2784     HttpJsonCallSettings<GetSerialPortOutputInstanceRequest, SerialPortOutput>
2785         getSerialPortOutputTransportSettings =
2786             HttpJsonCallSettings.<GetSerialPortOutputInstanceRequest, SerialPortOutput>newBuilder()
2787                 .setMethodDescriptor(getSerialPortOutputMethodDescriptor)
2788                 .setTypeRegistry(typeRegistry)
2789                 .build();
2790     HttpJsonCallSettings<GetShieldedInstanceIdentityInstanceRequest, ShieldedInstanceIdentity>
2791         getShieldedInstanceIdentityTransportSettings =
2792             HttpJsonCallSettings
2793                 .<GetShieldedInstanceIdentityInstanceRequest, ShieldedInstanceIdentity>newBuilder()
2794                 .setMethodDescriptor(getShieldedInstanceIdentityMethodDescriptor)
2795                 .setTypeRegistry(typeRegistry)
2796                 .build();
2797     HttpJsonCallSettings<InsertInstanceRequest, Operation> insertTransportSettings =
2798         HttpJsonCallSettings.<InsertInstanceRequest, Operation>newBuilder()
2799             .setMethodDescriptor(insertMethodDescriptor)
2800             .setTypeRegistry(typeRegistry)
2801             .build();
2802     HttpJsonCallSettings<ListInstancesRequest, InstanceList> listTransportSettings =
2803         HttpJsonCallSettings.<ListInstancesRequest, InstanceList>newBuilder()
2804             .setMethodDescriptor(listMethodDescriptor)
2805             .setTypeRegistry(typeRegistry)
2806             .build();
2807     HttpJsonCallSettings<ListReferrersInstancesRequest, InstanceListReferrers>
2808         listReferrersTransportSettings =
2809             HttpJsonCallSettings.<ListReferrersInstancesRequest, InstanceListReferrers>newBuilder()
2810                 .setMethodDescriptor(listReferrersMethodDescriptor)
2811                 .setTypeRegistry(typeRegistry)
2812                 .build();
2813     HttpJsonCallSettings<RemoveResourcePoliciesInstanceRequest, Operation>
2814         removeResourcePoliciesTransportSettings =
2815             HttpJsonCallSettings.<RemoveResourcePoliciesInstanceRequest, Operation>newBuilder()
2816                 .setMethodDescriptor(removeResourcePoliciesMethodDescriptor)
2817                 .setTypeRegistry(typeRegistry)
2818                 .build();
2819     HttpJsonCallSettings<ResetInstanceRequest, Operation> resetTransportSettings =
2820         HttpJsonCallSettings.<ResetInstanceRequest, Operation>newBuilder()
2821             .setMethodDescriptor(resetMethodDescriptor)
2822             .setTypeRegistry(typeRegistry)
2823             .build();
2824     HttpJsonCallSettings<ResumeInstanceRequest, Operation> resumeTransportSettings =
2825         HttpJsonCallSettings.<ResumeInstanceRequest, Operation>newBuilder()
2826             .setMethodDescriptor(resumeMethodDescriptor)
2827             .setTypeRegistry(typeRegistry)
2828             .build();
2829     HttpJsonCallSettings<
2830             SendDiagnosticInterruptInstanceRequest, SendDiagnosticInterruptInstanceResponse>
2831         sendDiagnosticInterruptTransportSettings =
2832             HttpJsonCallSettings
2833                 .<SendDiagnosticInterruptInstanceRequest, SendDiagnosticInterruptInstanceResponse>
2834                     newBuilder()
2835                 .setMethodDescriptor(sendDiagnosticInterruptMethodDescriptor)
2836                 .setTypeRegistry(typeRegistry)
2837                 .build();
2838     HttpJsonCallSettings<SetDeletionProtectionInstanceRequest, Operation>
2839         setDeletionProtectionTransportSettings =
2840             HttpJsonCallSettings.<SetDeletionProtectionInstanceRequest, Operation>newBuilder()
2841                 .setMethodDescriptor(setDeletionProtectionMethodDescriptor)
2842                 .setTypeRegistry(typeRegistry)
2843                 .build();
2844     HttpJsonCallSettings<SetDiskAutoDeleteInstanceRequest, Operation>
2845         setDiskAutoDeleteTransportSettings =
2846             HttpJsonCallSettings.<SetDiskAutoDeleteInstanceRequest, Operation>newBuilder()
2847                 .setMethodDescriptor(setDiskAutoDeleteMethodDescriptor)
2848                 .setTypeRegistry(typeRegistry)
2849                 .build();
2850     HttpJsonCallSettings<SetIamPolicyInstanceRequest, Policy> setIamPolicyTransportSettings =
2851         HttpJsonCallSettings.<SetIamPolicyInstanceRequest, Policy>newBuilder()
2852             .setMethodDescriptor(setIamPolicyMethodDescriptor)
2853             .setTypeRegistry(typeRegistry)
2854             .build();
2855     HttpJsonCallSettings<SetLabelsInstanceRequest, Operation> setLabelsTransportSettings =
2856         HttpJsonCallSettings.<SetLabelsInstanceRequest, Operation>newBuilder()
2857             .setMethodDescriptor(setLabelsMethodDescriptor)
2858             .setTypeRegistry(typeRegistry)
2859             .build();
2860     HttpJsonCallSettings<SetMachineResourcesInstanceRequest, Operation>
2861         setMachineResourcesTransportSettings =
2862             HttpJsonCallSettings.<SetMachineResourcesInstanceRequest, Operation>newBuilder()
2863                 .setMethodDescriptor(setMachineResourcesMethodDescriptor)
2864                 .setTypeRegistry(typeRegistry)
2865                 .build();
2866     HttpJsonCallSettings<SetMachineTypeInstanceRequest, Operation> setMachineTypeTransportSettings =
2867         HttpJsonCallSettings.<SetMachineTypeInstanceRequest, Operation>newBuilder()
2868             .setMethodDescriptor(setMachineTypeMethodDescriptor)
2869             .setTypeRegistry(typeRegistry)
2870             .build();
2871     HttpJsonCallSettings<SetMetadataInstanceRequest, Operation> setMetadataTransportSettings =
2872         HttpJsonCallSettings.<SetMetadataInstanceRequest, Operation>newBuilder()
2873             .setMethodDescriptor(setMetadataMethodDescriptor)
2874             .setTypeRegistry(typeRegistry)
2875             .build();
2876     HttpJsonCallSettings<SetMinCpuPlatformInstanceRequest, Operation>
2877         setMinCpuPlatformTransportSettings =
2878             HttpJsonCallSettings.<SetMinCpuPlatformInstanceRequest, Operation>newBuilder()
2879                 .setMethodDescriptor(setMinCpuPlatformMethodDescriptor)
2880                 .setTypeRegistry(typeRegistry)
2881                 .build();
2882     HttpJsonCallSettings<SetNameInstanceRequest, Operation> setNameTransportSettings =
2883         HttpJsonCallSettings.<SetNameInstanceRequest, Operation>newBuilder()
2884             .setMethodDescriptor(setNameMethodDescriptor)
2885             .setTypeRegistry(typeRegistry)
2886             .build();
2887     HttpJsonCallSettings<SetSchedulingInstanceRequest, Operation> setSchedulingTransportSettings =
2888         HttpJsonCallSettings.<SetSchedulingInstanceRequest, Operation>newBuilder()
2889             .setMethodDescriptor(setSchedulingMethodDescriptor)
2890             .setTypeRegistry(typeRegistry)
2891             .build();
2892     HttpJsonCallSettings<SetServiceAccountInstanceRequest, Operation>
2893         setServiceAccountTransportSettings =
2894             HttpJsonCallSettings.<SetServiceAccountInstanceRequest, Operation>newBuilder()
2895                 .setMethodDescriptor(setServiceAccountMethodDescriptor)
2896                 .setTypeRegistry(typeRegistry)
2897                 .build();
2898     HttpJsonCallSettings<SetShieldedInstanceIntegrityPolicyInstanceRequest, Operation>
2899         setShieldedInstanceIntegrityPolicyTransportSettings =
2900             HttpJsonCallSettings
2901                 .<SetShieldedInstanceIntegrityPolicyInstanceRequest, Operation>newBuilder()
2902                 .setMethodDescriptor(setShieldedInstanceIntegrityPolicyMethodDescriptor)
2903                 .setTypeRegistry(typeRegistry)
2904                 .build();
2905     HttpJsonCallSettings<SetTagsInstanceRequest, Operation> setTagsTransportSettings =
2906         HttpJsonCallSettings.<SetTagsInstanceRequest, Operation>newBuilder()
2907             .setMethodDescriptor(setTagsMethodDescriptor)
2908             .setTypeRegistry(typeRegistry)
2909             .build();
2910     HttpJsonCallSettings<SimulateMaintenanceEventInstanceRequest, Operation>
2911         simulateMaintenanceEventTransportSettings =
2912             HttpJsonCallSettings.<SimulateMaintenanceEventInstanceRequest, Operation>newBuilder()
2913                 .setMethodDescriptor(simulateMaintenanceEventMethodDescriptor)
2914                 .setTypeRegistry(typeRegistry)
2915                 .build();
2916     HttpJsonCallSettings<StartInstanceRequest, Operation> startTransportSettings =
2917         HttpJsonCallSettings.<StartInstanceRequest, Operation>newBuilder()
2918             .setMethodDescriptor(startMethodDescriptor)
2919             .setTypeRegistry(typeRegistry)
2920             .build();
2921     HttpJsonCallSettings<StartWithEncryptionKeyInstanceRequest, Operation>
2922         startWithEncryptionKeyTransportSettings =
2923             HttpJsonCallSettings.<StartWithEncryptionKeyInstanceRequest, Operation>newBuilder()
2924                 .setMethodDescriptor(startWithEncryptionKeyMethodDescriptor)
2925                 .setTypeRegistry(typeRegistry)
2926                 .build();
2927     HttpJsonCallSettings<StopInstanceRequest, Operation> stopTransportSettings =
2928         HttpJsonCallSettings.<StopInstanceRequest, Operation>newBuilder()
2929             .setMethodDescriptor(stopMethodDescriptor)
2930             .setTypeRegistry(typeRegistry)
2931             .build();
2932     HttpJsonCallSettings<SuspendInstanceRequest, Operation> suspendTransportSettings =
2933         HttpJsonCallSettings.<SuspendInstanceRequest, Operation>newBuilder()
2934             .setMethodDescriptor(suspendMethodDescriptor)
2935             .setTypeRegistry(typeRegistry)
2936             .build();
2937     HttpJsonCallSettings<TestIamPermissionsInstanceRequest, TestPermissionsResponse>
2938         testIamPermissionsTransportSettings =
2939             HttpJsonCallSettings
2940                 .<TestIamPermissionsInstanceRequest, TestPermissionsResponse>newBuilder()
2941                 .setMethodDescriptor(testIamPermissionsMethodDescriptor)
2942                 .setTypeRegistry(typeRegistry)
2943                 .build();
2944     HttpJsonCallSettings<UpdateInstanceRequest, Operation> updateTransportSettings =
2945         HttpJsonCallSettings.<UpdateInstanceRequest, Operation>newBuilder()
2946             .setMethodDescriptor(updateMethodDescriptor)
2947             .setTypeRegistry(typeRegistry)
2948             .build();
2949     HttpJsonCallSettings<UpdateAccessConfigInstanceRequest, Operation>
2950         updateAccessConfigTransportSettings =
2951             HttpJsonCallSettings.<UpdateAccessConfigInstanceRequest, Operation>newBuilder()
2952                 .setMethodDescriptor(updateAccessConfigMethodDescriptor)
2953                 .setTypeRegistry(typeRegistry)
2954                 .build();
2955     HttpJsonCallSettings<UpdateDisplayDeviceInstanceRequest, Operation>
2956         updateDisplayDeviceTransportSettings =
2957             HttpJsonCallSettings.<UpdateDisplayDeviceInstanceRequest, Operation>newBuilder()
2958                 .setMethodDescriptor(updateDisplayDeviceMethodDescriptor)
2959                 .setTypeRegistry(typeRegistry)
2960                 .build();
2961     HttpJsonCallSettings<UpdateNetworkInterfaceInstanceRequest, Operation>
2962         updateNetworkInterfaceTransportSettings =
2963             HttpJsonCallSettings.<UpdateNetworkInterfaceInstanceRequest, Operation>newBuilder()
2964                 .setMethodDescriptor(updateNetworkInterfaceMethodDescriptor)
2965                 .setTypeRegistry(typeRegistry)
2966                 .build();
2967     HttpJsonCallSettings<UpdateShieldedInstanceConfigInstanceRequest, Operation>
2968         updateShieldedInstanceConfigTransportSettings =
2969             HttpJsonCallSettings
2970                 .<UpdateShieldedInstanceConfigInstanceRequest, Operation>newBuilder()
2971                 .setMethodDescriptor(updateShieldedInstanceConfigMethodDescriptor)
2972                 .setTypeRegistry(typeRegistry)
2973                 .build();
2974 
2975     this.addAccessConfigCallable =
2976         callableFactory.createUnaryCallable(
2977             addAccessConfigTransportSettings, settings.addAccessConfigSettings(), clientContext);
2978     this.addAccessConfigOperationCallable =
2979         callableFactory.createOperationCallable(
2980             addAccessConfigTransportSettings,
2981             settings.addAccessConfigOperationSettings(),
2982             clientContext,
2983             httpJsonOperationsStub);
2984     this.addResourcePoliciesCallable =
2985         callableFactory.createUnaryCallable(
2986             addResourcePoliciesTransportSettings,
2987             settings.addResourcePoliciesSettings(),
2988             clientContext);
2989     this.addResourcePoliciesOperationCallable =
2990         callableFactory.createOperationCallable(
2991             addResourcePoliciesTransportSettings,
2992             settings.addResourcePoliciesOperationSettings(),
2993             clientContext,
2994             httpJsonOperationsStub);
2995     this.aggregatedListCallable =
2996         callableFactory.createUnaryCallable(
2997             aggregatedListTransportSettings, settings.aggregatedListSettings(), clientContext);
2998     this.aggregatedListPagedCallable =
2999         callableFactory.createPagedCallable(
3000             aggregatedListTransportSettings, settings.aggregatedListSettings(), clientContext);
3001     this.attachDiskCallable =
3002         callableFactory.createUnaryCallable(
3003             attachDiskTransportSettings, settings.attachDiskSettings(), clientContext);
3004     this.attachDiskOperationCallable =
3005         callableFactory.createOperationCallable(
3006             attachDiskTransportSettings,
3007             settings.attachDiskOperationSettings(),
3008             clientContext,
3009             httpJsonOperationsStub);
3010     this.bulkInsertCallable =
3011         callableFactory.createUnaryCallable(
3012             bulkInsertTransportSettings, settings.bulkInsertSettings(), clientContext);
3013     this.bulkInsertOperationCallable =
3014         callableFactory.createOperationCallable(
3015             bulkInsertTransportSettings,
3016             settings.bulkInsertOperationSettings(),
3017             clientContext,
3018             httpJsonOperationsStub);
3019     this.deleteCallable =
3020         callableFactory.createUnaryCallable(
3021             deleteTransportSettings, settings.deleteSettings(), clientContext);
3022     this.deleteOperationCallable =
3023         callableFactory.createOperationCallable(
3024             deleteTransportSettings,
3025             settings.deleteOperationSettings(),
3026             clientContext,
3027             httpJsonOperationsStub);
3028     this.deleteAccessConfigCallable =
3029         callableFactory.createUnaryCallable(
3030             deleteAccessConfigTransportSettings,
3031             settings.deleteAccessConfigSettings(),
3032             clientContext);
3033     this.deleteAccessConfigOperationCallable =
3034         callableFactory.createOperationCallable(
3035             deleteAccessConfigTransportSettings,
3036             settings.deleteAccessConfigOperationSettings(),
3037             clientContext,
3038             httpJsonOperationsStub);
3039     this.detachDiskCallable =
3040         callableFactory.createUnaryCallable(
3041             detachDiskTransportSettings, settings.detachDiskSettings(), clientContext);
3042     this.detachDiskOperationCallable =
3043         callableFactory.createOperationCallable(
3044             detachDiskTransportSettings,
3045             settings.detachDiskOperationSettings(),
3046             clientContext,
3047             httpJsonOperationsStub);
3048     this.getCallable =
3049         callableFactory.createUnaryCallable(
3050             getTransportSettings, settings.getSettings(), clientContext);
3051     this.getEffectiveFirewallsCallable =
3052         callableFactory.createUnaryCallable(
3053             getEffectiveFirewallsTransportSettings,
3054             settings.getEffectiveFirewallsSettings(),
3055             clientContext);
3056     this.getGuestAttributesCallable =
3057         callableFactory.createUnaryCallable(
3058             getGuestAttributesTransportSettings,
3059             settings.getGuestAttributesSettings(),
3060             clientContext);
3061     this.getIamPolicyCallable =
3062         callableFactory.createUnaryCallable(
3063             getIamPolicyTransportSettings, settings.getIamPolicySettings(), clientContext);
3064     this.getScreenshotCallable =
3065         callableFactory.createUnaryCallable(
3066             getScreenshotTransportSettings, settings.getScreenshotSettings(), clientContext);
3067     this.getSerialPortOutputCallable =
3068         callableFactory.createUnaryCallable(
3069             getSerialPortOutputTransportSettings,
3070             settings.getSerialPortOutputSettings(),
3071             clientContext);
3072     this.getShieldedInstanceIdentityCallable =
3073         callableFactory.createUnaryCallable(
3074             getShieldedInstanceIdentityTransportSettings,
3075             settings.getShieldedInstanceIdentitySettings(),
3076             clientContext);
3077     this.insertCallable =
3078         callableFactory.createUnaryCallable(
3079             insertTransportSettings, settings.insertSettings(), clientContext);
3080     this.insertOperationCallable =
3081         callableFactory.createOperationCallable(
3082             insertTransportSettings,
3083             settings.insertOperationSettings(),
3084             clientContext,
3085             httpJsonOperationsStub);
3086     this.listCallable =
3087         callableFactory.createUnaryCallable(
3088             listTransportSettings, settings.listSettings(), clientContext);
3089     this.listPagedCallable =
3090         callableFactory.createPagedCallable(
3091             listTransportSettings, settings.listSettings(), clientContext);
3092     this.listReferrersCallable =
3093         callableFactory.createUnaryCallable(
3094             listReferrersTransportSettings, settings.listReferrersSettings(), clientContext);
3095     this.listReferrersPagedCallable =
3096         callableFactory.createPagedCallable(
3097             listReferrersTransportSettings, settings.listReferrersSettings(), clientContext);
3098     this.removeResourcePoliciesCallable =
3099         callableFactory.createUnaryCallable(
3100             removeResourcePoliciesTransportSettings,
3101             settings.removeResourcePoliciesSettings(),
3102             clientContext);
3103     this.removeResourcePoliciesOperationCallable =
3104         callableFactory.createOperationCallable(
3105             removeResourcePoliciesTransportSettings,
3106             settings.removeResourcePoliciesOperationSettings(),
3107             clientContext,
3108             httpJsonOperationsStub);
3109     this.resetCallable =
3110         callableFactory.createUnaryCallable(
3111             resetTransportSettings, settings.resetSettings(), clientContext);
3112     this.resetOperationCallable =
3113         callableFactory.createOperationCallable(
3114             resetTransportSettings,
3115             settings.resetOperationSettings(),
3116             clientContext,
3117             httpJsonOperationsStub);
3118     this.resumeCallable =
3119         callableFactory.createUnaryCallable(
3120             resumeTransportSettings, settings.resumeSettings(), clientContext);
3121     this.resumeOperationCallable =
3122         callableFactory.createOperationCallable(
3123             resumeTransportSettings,
3124             settings.resumeOperationSettings(),
3125             clientContext,
3126             httpJsonOperationsStub);
3127     this.sendDiagnosticInterruptCallable =
3128         callableFactory.createUnaryCallable(
3129             sendDiagnosticInterruptTransportSettings,
3130             settings.sendDiagnosticInterruptSettings(),
3131             clientContext);
3132     this.setDeletionProtectionCallable =
3133         callableFactory.createUnaryCallable(
3134             setDeletionProtectionTransportSettings,
3135             settings.setDeletionProtectionSettings(),
3136             clientContext);
3137     this.setDeletionProtectionOperationCallable =
3138         callableFactory.createOperationCallable(
3139             setDeletionProtectionTransportSettings,
3140             settings.setDeletionProtectionOperationSettings(),
3141             clientContext,
3142             httpJsonOperationsStub);
3143     this.setDiskAutoDeleteCallable =
3144         callableFactory.createUnaryCallable(
3145             setDiskAutoDeleteTransportSettings,
3146             settings.setDiskAutoDeleteSettings(),
3147             clientContext);
3148     this.setDiskAutoDeleteOperationCallable =
3149         callableFactory.createOperationCallable(
3150             setDiskAutoDeleteTransportSettings,
3151             settings.setDiskAutoDeleteOperationSettings(),
3152             clientContext,
3153             httpJsonOperationsStub);
3154     this.setIamPolicyCallable =
3155         callableFactory.createUnaryCallable(
3156             setIamPolicyTransportSettings, settings.setIamPolicySettings(), clientContext);
3157     this.setLabelsCallable =
3158         callableFactory.createUnaryCallable(
3159             setLabelsTransportSettings, settings.setLabelsSettings(), clientContext);
3160     this.setLabelsOperationCallable =
3161         callableFactory.createOperationCallable(
3162             setLabelsTransportSettings,
3163             settings.setLabelsOperationSettings(),
3164             clientContext,
3165             httpJsonOperationsStub);
3166     this.setMachineResourcesCallable =
3167         callableFactory.createUnaryCallable(
3168             setMachineResourcesTransportSettings,
3169             settings.setMachineResourcesSettings(),
3170             clientContext);
3171     this.setMachineResourcesOperationCallable =
3172         callableFactory.createOperationCallable(
3173             setMachineResourcesTransportSettings,
3174             settings.setMachineResourcesOperationSettings(),
3175             clientContext,
3176             httpJsonOperationsStub);
3177     this.setMachineTypeCallable =
3178         callableFactory.createUnaryCallable(
3179             setMachineTypeTransportSettings, settings.setMachineTypeSettings(), clientContext);
3180     this.setMachineTypeOperationCallable =
3181         callableFactory.createOperationCallable(
3182             setMachineTypeTransportSettings,
3183             settings.setMachineTypeOperationSettings(),
3184             clientContext,
3185             httpJsonOperationsStub);
3186     this.setMetadataCallable =
3187         callableFactory.createUnaryCallable(
3188             setMetadataTransportSettings, settings.setMetadataSettings(), clientContext);
3189     this.setMetadataOperationCallable =
3190         callableFactory.createOperationCallable(
3191             setMetadataTransportSettings,
3192             settings.setMetadataOperationSettings(),
3193             clientContext,
3194             httpJsonOperationsStub);
3195     this.setMinCpuPlatformCallable =
3196         callableFactory.createUnaryCallable(
3197             setMinCpuPlatformTransportSettings,
3198             settings.setMinCpuPlatformSettings(),
3199             clientContext);
3200     this.setMinCpuPlatformOperationCallable =
3201         callableFactory.createOperationCallable(
3202             setMinCpuPlatformTransportSettings,
3203             settings.setMinCpuPlatformOperationSettings(),
3204             clientContext,
3205             httpJsonOperationsStub);
3206     this.setNameCallable =
3207         callableFactory.createUnaryCallable(
3208             setNameTransportSettings, settings.setNameSettings(), clientContext);
3209     this.setNameOperationCallable =
3210         callableFactory.createOperationCallable(
3211             setNameTransportSettings,
3212             settings.setNameOperationSettings(),
3213             clientContext,
3214             httpJsonOperationsStub);
3215     this.setSchedulingCallable =
3216         callableFactory.createUnaryCallable(
3217             setSchedulingTransportSettings, settings.setSchedulingSettings(), clientContext);
3218     this.setSchedulingOperationCallable =
3219         callableFactory.createOperationCallable(
3220             setSchedulingTransportSettings,
3221             settings.setSchedulingOperationSettings(),
3222             clientContext,
3223             httpJsonOperationsStub);
3224     this.setServiceAccountCallable =
3225         callableFactory.createUnaryCallable(
3226             setServiceAccountTransportSettings,
3227             settings.setServiceAccountSettings(),
3228             clientContext);
3229     this.setServiceAccountOperationCallable =
3230         callableFactory.createOperationCallable(
3231             setServiceAccountTransportSettings,
3232             settings.setServiceAccountOperationSettings(),
3233             clientContext,
3234             httpJsonOperationsStub);
3235     this.setShieldedInstanceIntegrityPolicyCallable =
3236         callableFactory.createUnaryCallable(
3237             setShieldedInstanceIntegrityPolicyTransportSettings,
3238             settings.setShieldedInstanceIntegrityPolicySettings(),
3239             clientContext);
3240     this.setShieldedInstanceIntegrityPolicyOperationCallable =
3241         callableFactory.createOperationCallable(
3242             setShieldedInstanceIntegrityPolicyTransportSettings,
3243             settings.setShieldedInstanceIntegrityPolicyOperationSettings(),
3244             clientContext,
3245             httpJsonOperationsStub);
3246     this.setTagsCallable =
3247         callableFactory.createUnaryCallable(
3248             setTagsTransportSettings, settings.setTagsSettings(), clientContext);
3249     this.setTagsOperationCallable =
3250         callableFactory.createOperationCallable(
3251             setTagsTransportSettings,
3252             settings.setTagsOperationSettings(),
3253             clientContext,
3254             httpJsonOperationsStub);
3255     this.simulateMaintenanceEventCallable =
3256         callableFactory.createUnaryCallable(
3257             simulateMaintenanceEventTransportSettings,
3258             settings.simulateMaintenanceEventSettings(),
3259             clientContext);
3260     this.simulateMaintenanceEventOperationCallable =
3261         callableFactory.createOperationCallable(
3262             simulateMaintenanceEventTransportSettings,
3263             settings.simulateMaintenanceEventOperationSettings(),
3264             clientContext,
3265             httpJsonOperationsStub);
3266     this.startCallable =
3267         callableFactory.createUnaryCallable(
3268             startTransportSettings, settings.startSettings(), clientContext);
3269     this.startOperationCallable =
3270         callableFactory.createOperationCallable(
3271             startTransportSettings,
3272             settings.startOperationSettings(),
3273             clientContext,
3274             httpJsonOperationsStub);
3275     this.startWithEncryptionKeyCallable =
3276         callableFactory.createUnaryCallable(
3277             startWithEncryptionKeyTransportSettings,
3278             settings.startWithEncryptionKeySettings(),
3279             clientContext);
3280     this.startWithEncryptionKeyOperationCallable =
3281         callableFactory.createOperationCallable(
3282             startWithEncryptionKeyTransportSettings,
3283             settings.startWithEncryptionKeyOperationSettings(),
3284             clientContext,
3285             httpJsonOperationsStub);
3286     this.stopCallable =
3287         callableFactory.createUnaryCallable(
3288             stopTransportSettings, settings.stopSettings(), clientContext);
3289     this.stopOperationCallable =
3290         callableFactory.createOperationCallable(
3291             stopTransportSettings,
3292             settings.stopOperationSettings(),
3293             clientContext,
3294             httpJsonOperationsStub);
3295     this.suspendCallable =
3296         callableFactory.createUnaryCallable(
3297             suspendTransportSettings, settings.suspendSettings(), clientContext);
3298     this.suspendOperationCallable =
3299         callableFactory.createOperationCallable(
3300             suspendTransportSettings,
3301             settings.suspendOperationSettings(),
3302             clientContext,
3303             httpJsonOperationsStub);
3304     this.testIamPermissionsCallable =
3305         callableFactory.createUnaryCallable(
3306             testIamPermissionsTransportSettings,
3307             settings.testIamPermissionsSettings(),
3308             clientContext);
3309     this.updateCallable =
3310         callableFactory.createUnaryCallable(
3311             updateTransportSettings, settings.updateSettings(), clientContext);
3312     this.updateOperationCallable =
3313         callableFactory.createOperationCallable(
3314             updateTransportSettings,
3315             settings.updateOperationSettings(),
3316             clientContext,
3317             httpJsonOperationsStub);
3318     this.updateAccessConfigCallable =
3319         callableFactory.createUnaryCallable(
3320             updateAccessConfigTransportSettings,
3321             settings.updateAccessConfigSettings(),
3322             clientContext);
3323     this.updateAccessConfigOperationCallable =
3324         callableFactory.createOperationCallable(
3325             updateAccessConfigTransportSettings,
3326             settings.updateAccessConfigOperationSettings(),
3327             clientContext,
3328             httpJsonOperationsStub);
3329     this.updateDisplayDeviceCallable =
3330         callableFactory.createUnaryCallable(
3331             updateDisplayDeviceTransportSettings,
3332             settings.updateDisplayDeviceSettings(),
3333             clientContext);
3334     this.updateDisplayDeviceOperationCallable =
3335         callableFactory.createOperationCallable(
3336             updateDisplayDeviceTransportSettings,
3337             settings.updateDisplayDeviceOperationSettings(),
3338             clientContext,
3339             httpJsonOperationsStub);
3340     this.updateNetworkInterfaceCallable =
3341         callableFactory.createUnaryCallable(
3342             updateNetworkInterfaceTransportSettings,
3343             settings.updateNetworkInterfaceSettings(),
3344             clientContext);
3345     this.updateNetworkInterfaceOperationCallable =
3346         callableFactory.createOperationCallable(
3347             updateNetworkInterfaceTransportSettings,
3348             settings.updateNetworkInterfaceOperationSettings(),
3349             clientContext,
3350             httpJsonOperationsStub);
3351     this.updateShieldedInstanceConfigCallable =
3352         callableFactory.createUnaryCallable(
3353             updateShieldedInstanceConfigTransportSettings,
3354             settings.updateShieldedInstanceConfigSettings(),
3355             clientContext);
3356     this.updateShieldedInstanceConfigOperationCallable =
3357         callableFactory.createOperationCallable(
3358             updateShieldedInstanceConfigTransportSettings,
3359             settings.updateShieldedInstanceConfigOperationSettings(),
3360             clientContext,
3361             httpJsonOperationsStub);
3362 
3363     this.backgroundResources =
3364         new BackgroundResourceAggregation(clientContext.getBackgroundResources());
3365   }
3366 
3367   @InternalApi
getMethodDescriptors()3368   public static List<ApiMethodDescriptor> getMethodDescriptors() {
3369     List<ApiMethodDescriptor> methodDescriptors = new ArrayList<>();
3370     methodDescriptors.add(addAccessConfigMethodDescriptor);
3371     methodDescriptors.add(addResourcePoliciesMethodDescriptor);
3372     methodDescriptors.add(aggregatedListMethodDescriptor);
3373     methodDescriptors.add(attachDiskMethodDescriptor);
3374     methodDescriptors.add(bulkInsertMethodDescriptor);
3375     methodDescriptors.add(deleteMethodDescriptor);
3376     methodDescriptors.add(deleteAccessConfigMethodDescriptor);
3377     methodDescriptors.add(detachDiskMethodDescriptor);
3378     methodDescriptors.add(getMethodDescriptor);
3379     methodDescriptors.add(getEffectiveFirewallsMethodDescriptor);
3380     methodDescriptors.add(getGuestAttributesMethodDescriptor);
3381     methodDescriptors.add(getIamPolicyMethodDescriptor);
3382     methodDescriptors.add(getScreenshotMethodDescriptor);
3383     methodDescriptors.add(getSerialPortOutputMethodDescriptor);
3384     methodDescriptors.add(getShieldedInstanceIdentityMethodDescriptor);
3385     methodDescriptors.add(insertMethodDescriptor);
3386     methodDescriptors.add(listMethodDescriptor);
3387     methodDescriptors.add(listReferrersMethodDescriptor);
3388     methodDescriptors.add(removeResourcePoliciesMethodDescriptor);
3389     methodDescriptors.add(resetMethodDescriptor);
3390     methodDescriptors.add(resumeMethodDescriptor);
3391     methodDescriptors.add(sendDiagnosticInterruptMethodDescriptor);
3392     methodDescriptors.add(setDeletionProtectionMethodDescriptor);
3393     methodDescriptors.add(setDiskAutoDeleteMethodDescriptor);
3394     methodDescriptors.add(setIamPolicyMethodDescriptor);
3395     methodDescriptors.add(setLabelsMethodDescriptor);
3396     methodDescriptors.add(setMachineResourcesMethodDescriptor);
3397     methodDescriptors.add(setMachineTypeMethodDescriptor);
3398     methodDescriptors.add(setMetadataMethodDescriptor);
3399     methodDescriptors.add(setMinCpuPlatformMethodDescriptor);
3400     methodDescriptors.add(setNameMethodDescriptor);
3401     methodDescriptors.add(setSchedulingMethodDescriptor);
3402     methodDescriptors.add(setServiceAccountMethodDescriptor);
3403     methodDescriptors.add(setShieldedInstanceIntegrityPolicyMethodDescriptor);
3404     methodDescriptors.add(setTagsMethodDescriptor);
3405     methodDescriptors.add(simulateMaintenanceEventMethodDescriptor);
3406     methodDescriptors.add(startMethodDescriptor);
3407     methodDescriptors.add(startWithEncryptionKeyMethodDescriptor);
3408     methodDescriptors.add(stopMethodDescriptor);
3409     methodDescriptors.add(suspendMethodDescriptor);
3410     methodDescriptors.add(testIamPermissionsMethodDescriptor);
3411     methodDescriptors.add(updateMethodDescriptor);
3412     methodDescriptors.add(updateAccessConfigMethodDescriptor);
3413     methodDescriptors.add(updateDisplayDeviceMethodDescriptor);
3414     methodDescriptors.add(updateNetworkInterfaceMethodDescriptor);
3415     methodDescriptors.add(updateShieldedInstanceConfigMethodDescriptor);
3416     return methodDescriptors;
3417   }
3418 
3419   @Override
addAccessConfigCallable()3420   public UnaryCallable<AddAccessConfigInstanceRequest, Operation> addAccessConfigCallable() {
3421     return addAccessConfigCallable;
3422   }
3423 
3424   @Override
3425   public OperationCallable<AddAccessConfigInstanceRequest, Operation, Operation>
addAccessConfigOperationCallable()3426       addAccessConfigOperationCallable() {
3427     return addAccessConfigOperationCallable;
3428   }
3429 
3430   @Override
3431   public UnaryCallable<AddResourcePoliciesInstanceRequest, Operation>
addResourcePoliciesCallable()3432       addResourcePoliciesCallable() {
3433     return addResourcePoliciesCallable;
3434   }
3435 
3436   @Override
3437   public OperationCallable<AddResourcePoliciesInstanceRequest, Operation, Operation>
addResourcePoliciesOperationCallable()3438       addResourcePoliciesOperationCallable() {
3439     return addResourcePoliciesOperationCallable;
3440   }
3441 
3442   @Override
3443   public UnaryCallable<AggregatedListInstancesRequest, InstanceAggregatedList>
aggregatedListCallable()3444       aggregatedListCallable() {
3445     return aggregatedListCallable;
3446   }
3447 
3448   @Override
3449   public UnaryCallable<AggregatedListInstancesRequest, AggregatedListPagedResponse>
aggregatedListPagedCallable()3450       aggregatedListPagedCallable() {
3451     return aggregatedListPagedCallable;
3452   }
3453 
3454   @Override
attachDiskCallable()3455   public UnaryCallable<AttachDiskInstanceRequest, Operation> attachDiskCallable() {
3456     return attachDiskCallable;
3457   }
3458 
3459   @Override
3460   public OperationCallable<AttachDiskInstanceRequest, Operation, Operation>
attachDiskOperationCallable()3461       attachDiskOperationCallable() {
3462     return attachDiskOperationCallable;
3463   }
3464 
3465   @Override
bulkInsertCallable()3466   public UnaryCallable<BulkInsertInstanceRequest, Operation> bulkInsertCallable() {
3467     return bulkInsertCallable;
3468   }
3469 
3470   @Override
3471   public OperationCallable<BulkInsertInstanceRequest, Operation, Operation>
bulkInsertOperationCallable()3472       bulkInsertOperationCallable() {
3473     return bulkInsertOperationCallable;
3474   }
3475 
3476   @Override
deleteCallable()3477   public UnaryCallable<DeleteInstanceRequest, Operation> deleteCallable() {
3478     return deleteCallable;
3479   }
3480 
3481   @Override
deleteOperationCallable()3482   public OperationCallable<DeleteInstanceRequest, Operation, Operation> deleteOperationCallable() {
3483     return deleteOperationCallable;
3484   }
3485 
3486   @Override
deleteAccessConfigCallable()3487   public UnaryCallable<DeleteAccessConfigInstanceRequest, Operation> deleteAccessConfigCallable() {
3488     return deleteAccessConfigCallable;
3489   }
3490 
3491   @Override
3492   public OperationCallable<DeleteAccessConfigInstanceRequest, Operation, Operation>
deleteAccessConfigOperationCallable()3493       deleteAccessConfigOperationCallable() {
3494     return deleteAccessConfigOperationCallable;
3495   }
3496 
3497   @Override
detachDiskCallable()3498   public UnaryCallable<DetachDiskInstanceRequest, Operation> detachDiskCallable() {
3499     return detachDiskCallable;
3500   }
3501 
3502   @Override
3503   public OperationCallable<DetachDiskInstanceRequest, Operation, Operation>
detachDiskOperationCallable()3504       detachDiskOperationCallable() {
3505     return detachDiskOperationCallable;
3506   }
3507 
3508   @Override
getCallable()3509   public UnaryCallable<GetInstanceRequest, Instance> getCallable() {
3510     return getCallable;
3511   }
3512 
3513   @Override
3514   public UnaryCallable<GetEffectiveFirewallsInstanceRequest, InstancesGetEffectiveFirewallsResponse>
getEffectiveFirewallsCallable()3515       getEffectiveFirewallsCallable() {
3516     return getEffectiveFirewallsCallable;
3517   }
3518 
3519   @Override
3520   public UnaryCallable<GetGuestAttributesInstanceRequest, GuestAttributes>
getGuestAttributesCallable()3521       getGuestAttributesCallable() {
3522     return getGuestAttributesCallable;
3523   }
3524 
3525   @Override
getIamPolicyCallable()3526   public UnaryCallable<GetIamPolicyInstanceRequest, Policy> getIamPolicyCallable() {
3527     return getIamPolicyCallable;
3528   }
3529 
3530   @Override
getScreenshotCallable()3531   public UnaryCallable<GetScreenshotInstanceRequest, Screenshot> getScreenshotCallable() {
3532     return getScreenshotCallable;
3533   }
3534 
3535   @Override
3536   public UnaryCallable<GetSerialPortOutputInstanceRequest, SerialPortOutput>
getSerialPortOutputCallable()3537       getSerialPortOutputCallable() {
3538     return getSerialPortOutputCallable;
3539   }
3540 
3541   @Override
3542   public UnaryCallable<GetShieldedInstanceIdentityInstanceRequest, ShieldedInstanceIdentity>
getShieldedInstanceIdentityCallable()3543       getShieldedInstanceIdentityCallable() {
3544     return getShieldedInstanceIdentityCallable;
3545   }
3546 
3547   @Override
insertCallable()3548   public UnaryCallable<InsertInstanceRequest, Operation> insertCallable() {
3549     return insertCallable;
3550   }
3551 
3552   @Override
insertOperationCallable()3553   public OperationCallable<InsertInstanceRequest, Operation, Operation> insertOperationCallable() {
3554     return insertOperationCallable;
3555   }
3556 
3557   @Override
listCallable()3558   public UnaryCallable<ListInstancesRequest, InstanceList> listCallable() {
3559     return listCallable;
3560   }
3561 
3562   @Override
listPagedCallable()3563   public UnaryCallable<ListInstancesRequest, ListPagedResponse> listPagedCallable() {
3564     return listPagedCallable;
3565   }
3566 
3567   @Override
3568   public UnaryCallable<ListReferrersInstancesRequest, InstanceListReferrers>
listReferrersCallable()3569       listReferrersCallable() {
3570     return listReferrersCallable;
3571   }
3572 
3573   @Override
3574   public UnaryCallable<ListReferrersInstancesRequest, ListReferrersPagedResponse>
listReferrersPagedCallable()3575       listReferrersPagedCallable() {
3576     return listReferrersPagedCallable;
3577   }
3578 
3579   @Override
3580   public UnaryCallable<RemoveResourcePoliciesInstanceRequest, Operation>
removeResourcePoliciesCallable()3581       removeResourcePoliciesCallable() {
3582     return removeResourcePoliciesCallable;
3583   }
3584 
3585   @Override
3586   public OperationCallable<RemoveResourcePoliciesInstanceRequest, Operation, Operation>
removeResourcePoliciesOperationCallable()3587       removeResourcePoliciesOperationCallable() {
3588     return removeResourcePoliciesOperationCallable;
3589   }
3590 
3591   @Override
resetCallable()3592   public UnaryCallable<ResetInstanceRequest, Operation> resetCallable() {
3593     return resetCallable;
3594   }
3595 
3596   @Override
resetOperationCallable()3597   public OperationCallable<ResetInstanceRequest, Operation, Operation> resetOperationCallable() {
3598     return resetOperationCallable;
3599   }
3600 
3601   @Override
resumeCallable()3602   public UnaryCallable<ResumeInstanceRequest, Operation> resumeCallable() {
3603     return resumeCallable;
3604   }
3605 
3606   @Override
resumeOperationCallable()3607   public OperationCallable<ResumeInstanceRequest, Operation, Operation> resumeOperationCallable() {
3608     return resumeOperationCallable;
3609   }
3610 
3611   @Override
3612   public UnaryCallable<
3613           SendDiagnosticInterruptInstanceRequest, SendDiagnosticInterruptInstanceResponse>
sendDiagnosticInterruptCallable()3614       sendDiagnosticInterruptCallable() {
3615     return sendDiagnosticInterruptCallable;
3616   }
3617 
3618   @Override
3619   public UnaryCallable<SetDeletionProtectionInstanceRequest, Operation>
setDeletionProtectionCallable()3620       setDeletionProtectionCallable() {
3621     return setDeletionProtectionCallable;
3622   }
3623 
3624   @Override
3625   public OperationCallable<SetDeletionProtectionInstanceRequest, Operation, Operation>
setDeletionProtectionOperationCallable()3626       setDeletionProtectionOperationCallable() {
3627     return setDeletionProtectionOperationCallable;
3628   }
3629 
3630   @Override
setDiskAutoDeleteCallable()3631   public UnaryCallable<SetDiskAutoDeleteInstanceRequest, Operation> setDiskAutoDeleteCallable() {
3632     return setDiskAutoDeleteCallable;
3633   }
3634 
3635   @Override
3636   public OperationCallable<SetDiskAutoDeleteInstanceRequest, Operation, Operation>
setDiskAutoDeleteOperationCallable()3637       setDiskAutoDeleteOperationCallable() {
3638     return setDiskAutoDeleteOperationCallable;
3639   }
3640 
3641   @Override
setIamPolicyCallable()3642   public UnaryCallable<SetIamPolicyInstanceRequest, Policy> setIamPolicyCallable() {
3643     return setIamPolicyCallable;
3644   }
3645 
3646   @Override
setLabelsCallable()3647   public UnaryCallable<SetLabelsInstanceRequest, Operation> setLabelsCallable() {
3648     return setLabelsCallable;
3649   }
3650 
3651   @Override
3652   public OperationCallable<SetLabelsInstanceRequest, Operation, Operation>
setLabelsOperationCallable()3653       setLabelsOperationCallable() {
3654     return setLabelsOperationCallable;
3655   }
3656 
3657   @Override
3658   public UnaryCallable<SetMachineResourcesInstanceRequest, Operation>
setMachineResourcesCallable()3659       setMachineResourcesCallable() {
3660     return setMachineResourcesCallable;
3661   }
3662 
3663   @Override
3664   public OperationCallable<SetMachineResourcesInstanceRequest, Operation, Operation>
setMachineResourcesOperationCallable()3665       setMachineResourcesOperationCallable() {
3666     return setMachineResourcesOperationCallable;
3667   }
3668 
3669   @Override
setMachineTypeCallable()3670   public UnaryCallable<SetMachineTypeInstanceRequest, Operation> setMachineTypeCallable() {
3671     return setMachineTypeCallable;
3672   }
3673 
3674   @Override
3675   public OperationCallable<SetMachineTypeInstanceRequest, Operation, Operation>
setMachineTypeOperationCallable()3676       setMachineTypeOperationCallable() {
3677     return setMachineTypeOperationCallable;
3678   }
3679 
3680   @Override
setMetadataCallable()3681   public UnaryCallable<SetMetadataInstanceRequest, Operation> setMetadataCallable() {
3682     return setMetadataCallable;
3683   }
3684 
3685   @Override
3686   public OperationCallable<SetMetadataInstanceRequest, Operation, Operation>
setMetadataOperationCallable()3687       setMetadataOperationCallable() {
3688     return setMetadataOperationCallable;
3689   }
3690 
3691   @Override
setMinCpuPlatformCallable()3692   public UnaryCallable<SetMinCpuPlatformInstanceRequest, Operation> setMinCpuPlatformCallable() {
3693     return setMinCpuPlatformCallable;
3694   }
3695 
3696   @Override
3697   public OperationCallable<SetMinCpuPlatformInstanceRequest, Operation, Operation>
setMinCpuPlatformOperationCallable()3698       setMinCpuPlatformOperationCallable() {
3699     return setMinCpuPlatformOperationCallable;
3700   }
3701 
3702   @Override
setNameCallable()3703   public UnaryCallable<SetNameInstanceRequest, Operation> setNameCallable() {
3704     return setNameCallable;
3705   }
3706 
3707   @Override
3708   public OperationCallable<SetNameInstanceRequest, Operation, Operation>
setNameOperationCallable()3709       setNameOperationCallable() {
3710     return setNameOperationCallable;
3711   }
3712 
3713   @Override
setSchedulingCallable()3714   public UnaryCallable<SetSchedulingInstanceRequest, Operation> setSchedulingCallable() {
3715     return setSchedulingCallable;
3716   }
3717 
3718   @Override
3719   public OperationCallable<SetSchedulingInstanceRequest, Operation, Operation>
setSchedulingOperationCallable()3720       setSchedulingOperationCallable() {
3721     return setSchedulingOperationCallable;
3722   }
3723 
3724   @Override
setServiceAccountCallable()3725   public UnaryCallable<SetServiceAccountInstanceRequest, Operation> setServiceAccountCallable() {
3726     return setServiceAccountCallable;
3727   }
3728 
3729   @Override
3730   public OperationCallable<SetServiceAccountInstanceRequest, Operation, Operation>
setServiceAccountOperationCallable()3731       setServiceAccountOperationCallable() {
3732     return setServiceAccountOperationCallable;
3733   }
3734 
3735   @Override
3736   public UnaryCallable<SetShieldedInstanceIntegrityPolicyInstanceRequest, Operation>
setShieldedInstanceIntegrityPolicyCallable()3737       setShieldedInstanceIntegrityPolicyCallable() {
3738     return setShieldedInstanceIntegrityPolicyCallable;
3739   }
3740 
3741   @Override
3742   public OperationCallable<SetShieldedInstanceIntegrityPolicyInstanceRequest, Operation, Operation>
setShieldedInstanceIntegrityPolicyOperationCallable()3743       setShieldedInstanceIntegrityPolicyOperationCallable() {
3744     return setShieldedInstanceIntegrityPolicyOperationCallable;
3745   }
3746 
3747   @Override
setTagsCallable()3748   public UnaryCallable<SetTagsInstanceRequest, Operation> setTagsCallable() {
3749     return setTagsCallable;
3750   }
3751 
3752   @Override
3753   public OperationCallable<SetTagsInstanceRequest, Operation, Operation>
setTagsOperationCallable()3754       setTagsOperationCallable() {
3755     return setTagsOperationCallable;
3756   }
3757 
3758   @Override
3759   public UnaryCallable<SimulateMaintenanceEventInstanceRequest, Operation>
simulateMaintenanceEventCallable()3760       simulateMaintenanceEventCallable() {
3761     return simulateMaintenanceEventCallable;
3762   }
3763 
3764   @Override
3765   public OperationCallable<SimulateMaintenanceEventInstanceRequest, Operation, Operation>
simulateMaintenanceEventOperationCallable()3766       simulateMaintenanceEventOperationCallable() {
3767     return simulateMaintenanceEventOperationCallable;
3768   }
3769 
3770   @Override
startCallable()3771   public UnaryCallable<StartInstanceRequest, Operation> startCallable() {
3772     return startCallable;
3773   }
3774 
3775   @Override
startOperationCallable()3776   public OperationCallable<StartInstanceRequest, Operation, Operation> startOperationCallable() {
3777     return startOperationCallable;
3778   }
3779 
3780   @Override
3781   public UnaryCallable<StartWithEncryptionKeyInstanceRequest, Operation>
startWithEncryptionKeyCallable()3782       startWithEncryptionKeyCallable() {
3783     return startWithEncryptionKeyCallable;
3784   }
3785 
3786   @Override
3787   public OperationCallable<StartWithEncryptionKeyInstanceRequest, Operation, Operation>
startWithEncryptionKeyOperationCallable()3788       startWithEncryptionKeyOperationCallable() {
3789     return startWithEncryptionKeyOperationCallable;
3790   }
3791 
3792   @Override
stopCallable()3793   public UnaryCallable<StopInstanceRequest, Operation> stopCallable() {
3794     return stopCallable;
3795   }
3796 
3797   @Override
stopOperationCallable()3798   public OperationCallable<StopInstanceRequest, Operation, Operation> stopOperationCallable() {
3799     return stopOperationCallable;
3800   }
3801 
3802   @Override
suspendCallable()3803   public UnaryCallable<SuspendInstanceRequest, Operation> suspendCallable() {
3804     return suspendCallable;
3805   }
3806 
3807   @Override
3808   public OperationCallable<SuspendInstanceRequest, Operation, Operation>
suspendOperationCallable()3809       suspendOperationCallable() {
3810     return suspendOperationCallable;
3811   }
3812 
3813   @Override
3814   public UnaryCallable<TestIamPermissionsInstanceRequest, TestPermissionsResponse>
testIamPermissionsCallable()3815       testIamPermissionsCallable() {
3816     return testIamPermissionsCallable;
3817   }
3818 
3819   @Override
updateCallable()3820   public UnaryCallable<UpdateInstanceRequest, Operation> updateCallable() {
3821     return updateCallable;
3822   }
3823 
3824   @Override
updateOperationCallable()3825   public OperationCallable<UpdateInstanceRequest, Operation, Operation> updateOperationCallable() {
3826     return updateOperationCallable;
3827   }
3828 
3829   @Override
updateAccessConfigCallable()3830   public UnaryCallable<UpdateAccessConfigInstanceRequest, Operation> updateAccessConfigCallable() {
3831     return updateAccessConfigCallable;
3832   }
3833 
3834   @Override
3835   public OperationCallable<UpdateAccessConfigInstanceRequest, Operation, Operation>
updateAccessConfigOperationCallable()3836       updateAccessConfigOperationCallable() {
3837     return updateAccessConfigOperationCallable;
3838   }
3839 
3840   @Override
3841   public UnaryCallable<UpdateDisplayDeviceInstanceRequest, Operation>
updateDisplayDeviceCallable()3842       updateDisplayDeviceCallable() {
3843     return updateDisplayDeviceCallable;
3844   }
3845 
3846   @Override
3847   public OperationCallable<UpdateDisplayDeviceInstanceRequest, Operation, Operation>
updateDisplayDeviceOperationCallable()3848       updateDisplayDeviceOperationCallable() {
3849     return updateDisplayDeviceOperationCallable;
3850   }
3851 
3852   @Override
3853   public UnaryCallable<UpdateNetworkInterfaceInstanceRequest, Operation>
updateNetworkInterfaceCallable()3854       updateNetworkInterfaceCallable() {
3855     return updateNetworkInterfaceCallable;
3856   }
3857 
3858   @Override
3859   public OperationCallable<UpdateNetworkInterfaceInstanceRequest, Operation, Operation>
updateNetworkInterfaceOperationCallable()3860       updateNetworkInterfaceOperationCallable() {
3861     return updateNetworkInterfaceOperationCallable;
3862   }
3863 
3864   @Override
3865   public UnaryCallable<UpdateShieldedInstanceConfigInstanceRequest, Operation>
updateShieldedInstanceConfigCallable()3866       updateShieldedInstanceConfigCallable() {
3867     return updateShieldedInstanceConfigCallable;
3868   }
3869 
3870   @Override
3871   public OperationCallable<UpdateShieldedInstanceConfigInstanceRequest, Operation, Operation>
updateShieldedInstanceConfigOperationCallable()3872       updateShieldedInstanceConfigOperationCallable() {
3873     return updateShieldedInstanceConfigOperationCallable;
3874   }
3875 
3876   @Override
close()3877   public final void close() {
3878     try {
3879       backgroundResources.close();
3880     } catch (RuntimeException e) {
3881       throw e;
3882     } catch (Exception e) {
3883       throw new IllegalStateException("Failed to close resource", e);
3884     }
3885   }
3886 
3887   @Override
shutdown()3888   public void shutdown() {
3889     backgroundResources.shutdown();
3890   }
3891 
3892   @Override
isShutdown()3893   public boolean isShutdown() {
3894     return backgroundResources.isShutdown();
3895   }
3896 
3897   @Override
isTerminated()3898   public boolean isTerminated() {
3899     return backgroundResources.isTerminated();
3900   }
3901 
3902   @Override
shutdownNow()3903   public void shutdownNow() {
3904     backgroundResources.shutdownNow();
3905   }
3906 
3907   @Override
awaitTermination(long duration, TimeUnit unit)3908   public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException {
3909     return backgroundResources.awaitTermination(duration, unit);
3910   }
3911 }
3912