• 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.redis.v1.stub;
18 
19 import static com.google.cloud.redis.v1.CloudRedisClient.ListInstancesPagedResponse;
20 import static com.google.cloud.redis.v1.CloudRedisClient.ListLocationsPagedResponse;
21 
22 import com.google.api.gax.core.BackgroundResource;
23 import com.google.api.gax.core.BackgroundResourceAggregation;
24 import com.google.api.gax.grpc.GrpcCallSettings;
25 import com.google.api.gax.grpc.GrpcStubCallableFactory;
26 import com.google.api.gax.rpc.ClientContext;
27 import com.google.api.gax.rpc.OperationCallable;
28 import com.google.api.gax.rpc.UnaryCallable;
29 import com.google.cloud.location.GetLocationRequest;
30 import com.google.cloud.location.ListLocationsRequest;
31 import com.google.cloud.location.ListLocationsResponse;
32 import com.google.cloud.location.Location;
33 import com.google.cloud.redis.v1.CreateInstanceRequest;
34 import com.google.cloud.redis.v1.DeleteInstanceRequest;
35 import com.google.cloud.redis.v1.ExportInstanceRequest;
36 import com.google.cloud.redis.v1.FailoverInstanceRequest;
37 import com.google.cloud.redis.v1.GetInstanceAuthStringRequest;
38 import com.google.cloud.redis.v1.GetInstanceRequest;
39 import com.google.cloud.redis.v1.ImportInstanceRequest;
40 import com.google.cloud.redis.v1.Instance;
41 import com.google.cloud.redis.v1.InstanceAuthString;
42 import com.google.cloud.redis.v1.ListInstancesRequest;
43 import com.google.cloud.redis.v1.ListInstancesResponse;
44 import com.google.cloud.redis.v1.OperationMetadata;
45 import com.google.cloud.redis.v1.RescheduleMaintenanceRequest;
46 import com.google.cloud.redis.v1.UpdateInstanceRequest;
47 import com.google.cloud.redis.v1.UpgradeInstanceRequest;
48 import com.google.common.collect.ImmutableMap;
49 import com.google.longrunning.Operation;
50 import com.google.longrunning.stub.GrpcOperationsStub;
51 import com.google.protobuf.Empty;
52 import io.grpc.MethodDescriptor;
53 import io.grpc.protobuf.ProtoUtils;
54 import java.io.IOException;
55 import java.util.concurrent.TimeUnit;
56 import javax.annotation.Generated;
57 
58 // AUTO-GENERATED DOCUMENTATION AND CLASS.
59 /**
60  * gRPC stub implementation for the CloudRedis service API.
61  *
62  * <p>This class is for advanced usage and reflects the underlying API directly.
63  */
64 @Generated("by gapic-generator-java")
65 public class GrpcCloudRedisStub extends CloudRedisStub {
66   private static final MethodDescriptor<ListInstancesRequest, ListInstancesResponse>
67       listInstancesMethodDescriptor =
68           MethodDescriptor.<ListInstancesRequest, ListInstancesResponse>newBuilder()
69               .setType(MethodDescriptor.MethodType.UNARY)
70               .setFullMethodName("google.cloud.redis.v1.CloudRedis/ListInstances")
71               .setRequestMarshaller(
72                   ProtoUtils.marshaller(ListInstancesRequest.getDefaultInstance()))
73               .setResponseMarshaller(
74                   ProtoUtils.marshaller(ListInstancesResponse.getDefaultInstance()))
75               .build();
76 
77   private static final MethodDescriptor<GetInstanceRequest, Instance> getInstanceMethodDescriptor =
78       MethodDescriptor.<GetInstanceRequest, Instance>newBuilder()
79           .setType(MethodDescriptor.MethodType.UNARY)
80           .setFullMethodName("google.cloud.redis.v1.CloudRedis/GetInstance")
81           .setRequestMarshaller(ProtoUtils.marshaller(GetInstanceRequest.getDefaultInstance()))
82           .setResponseMarshaller(ProtoUtils.marshaller(Instance.getDefaultInstance()))
83           .build();
84 
85   private static final MethodDescriptor<GetInstanceAuthStringRequest, InstanceAuthString>
86       getInstanceAuthStringMethodDescriptor =
87           MethodDescriptor.<GetInstanceAuthStringRequest, InstanceAuthString>newBuilder()
88               .setType(MethodDescriptor.MethodType.UNARY)
89               .setFullMethodName("google.cloud.redis.v1.CloudRedis/GetInstanceAuthString")
90               .setRequestMarshaller(
91                   ProtoUtils.marshaller(GetInstanceAuthStringRequest.getDefaultInstance()))
92               .setResponseMarshaller(ProtoUtils.marshaller(InstanceAuthString.getDefaultInstance()))
93               .build();
94 
95   private static final MethodDescriptor<CreateInstanceRequest, Operation>
96       createInstanceMethodDescriptor =
97           MethodDescriptor.<CreateInstanceRequest, Operation>newBuilder()
98               .setType(MethodDescriptor.MethodType.UNARY)
99               .setFullMethodName("google.cloud.redis.v1.CloudRedis/CreateInstance")
100               .setRequestMarshaller(
101                   ProtoUtils.marshaller(CreateInstanceRequest.getDefaultInstance()))
102               .setResponseMarshaller(ProtoUtils.marshaller(Operation.getDefaultInstance()))
103               .build();
104 
105   private static final MethodDescriptor<UpdateInstanceRequest, Operation>
106       updateInstanceMethodDescriptor =
107           MethodDescriptor.<UpdateInstanceRequest, Operation>newBuilder()
108               .setType(MethodDescriptor.MethodType.UNARY)
109               .setFullMethodName("google.cloud.redis.v1.CloudRedis/UpdateInstance")
110               .setRequestMarshaller(
111                   ProtoUtils.marshaller(UpdateInstanceRequest.getDefaultInstance()))
112               .setResponseMarshaller(ProtoUtils.marshaller(Operation.getDefaultInstance()))
113               .build();
114 
115   private static final MethodDescriptor<UpgradeInstanceRequest, Operation>
116       upgradeInstanceMethodDescriptor =
117           MethodDescriptor.<UpgradeInstanceRequest, Operation>newBuilder()
118               .setType(MethodDescriptor.MethodType.UNARY)
119               .setFullMethodName("google.cloud.redis.v1.CloudRedis/UpgradeInstance")
120               .setRequestMarshaller(
121                   ProtoUtils.marshaller(UpgradeInstanceRequest.getDefaultInstance()))
122               .setResponseMarshaller(ProtoUtils.marshaller(Operation.getDefaultInstance()))
123               .build();
124 
125   private static final MethodDescriptor<ImportInstanceRequest, Operation>
126       importInstanceMethodDescriptor =
127           MethodDescriptor.<ImportInstanceRequest, Operation>newBuilder()
128               .setType(MethodDescriptor.MethodType.UNARY)
129               .setFullMethodName("google.cloud.redis.v1.CloudRedis/ImportInstance")
130               .setRequestMarshaller(
131                   ProtoUtils.marshaller(ImportInstanceRequest.getDefaultInstance()))
132               .setResponseMarshaller(ProtoUtils.marshaller(Operation.getDefaultInstance()))
133               .build();
134 
135   private static final MethodDescriptor<ExportInstanceRequest, Operation>
136       exportInstanceMethodDescriptor =
137           MethodDescriptor.<ExportInstanceRequest, Operation>newBuilder()
138               .setType(MethodDescriptor.MethodType.UNARY)
139               .setFullMethodName("google.cloud.redis.v1.CloudRedis/ExportInstance")
140               .setRequestMarshaller(
141                   ProtoUtils.marshaller(ExportInstanceRequest.getDefaultInstance()))
142               .setResponseMarshaller(ProtoUtils.marshaller(Operation.getDefaultInstance()))
143               .build();
144 
145   private static final MethodDescriptor<FailoverInstanceRequest, Operation>
146       failoverInstanceMethodDescriptor =
147           MethodDescriptor.<FailoverInstanceRequest, Operation>newBuilder()
148               .setType(MethodDescriptor.MethodType.UNARY)
149               .setFullMethodName("google.cloud.redis.v1.CloudRedis/FailoverInstance")
150               .setRequestMarshaller(
151                   ProtoUtils.marshaller(FailoverInstanceRequest.getDefaultInstance()))
152               .setResponseMarshaller(ProtoUtils.marshaller(Operation.getDefaultInstance()))
153               .build();
154 
155   private static final MethodDescriptor<DeleteInstanceRequest, Operation>
156       deleteInstanceMethodDescriptor =
157           MethodDescriptor.<DeleteInstanceRequest, Operation>newBuilder()
158               .setType(MethodDescriptor.MethodType.UNARY)
159               .setFullMethodName("google.cloud.redis.v1.CloudRedis/DeleteInstance")
160               .setRequestMarshaller(
161                   ProtoUtils.marshaller(DeleteInstanceRequest.getDefaultInstance()))
162               .setResponseMarshaller(ProtoUtils.marshaller(Operation.getDefaultInstance()))
163               .build();
164 
165   private static final MethodDescriptor<RescheduleMaintenanceRequest, Operation>
166       rescheduleMaintenanceMethodDescriptor =
167           MethodDescriptor.<RescheduleMaintenanceRequest, Operation>newBuilder()
168               .setType(MethodDescriptor.MethodType.UNARY)
169               .setFullMethodName("google.cloud.redis.v1.CloudRedis/RescheduleMaintenance")
170               .setRequestMarshaller(
171                   ProtoUtils.marshaller(RescheduleMaintenanceRequest.getDefaultInstance()))
172               .setResponseMarshaller(ProtoUtils.marshaller(Operation.getDefaultInstance()))
173               .build();
174 
175   private static final MethodDescriptor<ListLocationsRequest, ListLocationsResponse>
176       listLocationsMethodDescriptor =
177           MethodDescriptor.<ListLocationsRequest, ListLocationsResponse>newBuilder()
178               .setType(MethodDescriptor.MethodType.UNARY)
179               .setFullMethodName("google.cloud.location.Locations/ListLocations")
180               .setRequestMarshaller(
181                   ProtoUtils.marshaller(ListLocationsRequest.getDefaultInstance()))
182               .setResponseMarshaller(
183                   ProtoUtils.marshaller(ListLocationsResponse.getDefaultInstance()))
184               .build();
185 
186   private static final MethodDescriptor<GetLocationRequest, Location> getLocationMethodDescriptor =
187       MethodDescriptor.<GetLocationRequest, Location>newBuilder()
188           .setType(MethodDescriptor.MethodType.UNARY)
189           .setFullMethodName("google.cloud.location.Locations/GetLocation")
190           .setRequestMarshaller(ProtoUtils.marshaller(GetLocationRequest.getDefaultInstance()))
191           .setResponseMarshaller(ProtoUtils.marshaller(Location.getDefaultInstance()))
192           .build();
193 
194   private final UnaryCallable<ListInstancesRequest, ListInstancesResponse> listInstancesCallable;
195   private final UnaryCallable<ListInstancesRequest, ListInstancesPagedResponse>
196       listInstancesPagedCallable;
197   private final UnaryCallable<GetInstanceRequest, Instance> getInstanceCallable;
198   private final UnaryCallable<GetInstanceAuthStringRequest, InstanceAuthString>
199       getInstanceAuthStringCallable;
200   private final UnaryCallable<CreateInstanceRequest, Operation> createInstanceCallable;
201   private final OperationCallable<CreateInstanceRequest, Instance, OperationMetadata>
202       createInstanceOperationCallable;
203   private final UnaryCallable<UpdateInstanceRequest, Operation> updateInstanceCallable;
204   private final OperationCallable<UpdateInstanceRequest, Instance, OperationMetadata>
205       updateInstanceOperationCallable;
206   private final UnaryCallable<UpgradeInstanceRequest, Operation> upgradeInstanceCallable;
207   private final OperationCallable<UpgradeInstanceRequest, Instance, OperationMetadata>
208       upgradeInstanceOperationCallable;
209   private final UnaryCallable<ImportInstanceRequest, Operation> importInstanceCallable;
210   private final OperationCallable<ImportInstanceRequest, Instance, OperationMetadata>
211       importInstanceOperationCallable;
212   private final UnaryCallable<ExportInstanceRequest, Operation> exportInstanceCallable;
213   private final OperationCallable<ExportInstanceRequest, Instance, OperationMetadata>
214       exportInstanceOperationCallable;
215   private final UnaryCallable<FailoverInstanceRequest, Operation> failoverInstanceCallable;
216   private final OperationCallable<FailoverInstanceRequest, Instance, OperationMetadata>
217       failoverInstanceOperationCallable;
218   private final UnaryCallable<DeleteInstanceRequest, Operation> deleteInstanceCallable;
219   private final OperationCallable<DeleteInstanceRequest, Empty, OperationMetadata>
220       deleteInstanceOperationCallable;
221   private final UnaryCallable<RescheduleMaintenanceRequest, Operation>
222       rescheduleMaintenanceCallable;
223   private final OperationCallable<RescheduleMaintenanceRequest, Instance, OperationMetadata>
224       rescheduleMaintenanceOperationCallable;
225   private final UnaryCallable<ListLocationsRequest, ListLocationsResponse> listLocationsCallable;
226   private final UnaryCallable<ListLocationsRequest, ListLocationsPagedResponse>
227       listLocationsPagedCallable;
228   private final UnaryCallable<GetLocationRequest, Location> getLocationCallable;
229 
230   private final BackgroundResource backgroundResources;
231   private final GrpcOperationsStub operationsStub;
232   private final GrpcStubCallableFactory callableFactory;
233 
create(CloudRedisStubSettings settings)234   public static final GrpcCloudRedisStub create(CloudRedisStubSettings settings)
235       throws IOException {
236     return new GrpcCloudRedisStub(settings, ClientContext.create(settings));
237   }
238 
create(ClientContext clientContext)239   public static final GrpcCloudRedisStub create(ClientContext clientContext) throws IOException {
240     return new GrpcCloudRedisStub(CloudRedisStubSettings.newBuilder().build(), clientContext);
241   }
242 
create( ClientContext clientContext, GrpcStubCallableFactory callableFactory)243   public static final GrpcCloudRedisStub create(
244       ClientContext clientContext, GrpcStubCallableFactory callableFactory) throws IOException {
245     return new GrpcCloudRedisStub(
246         CloudRedisStubSettings.newBuilder().build(), clientContext, callableFactory);
247   }
248 
249   /**
250    * Constructs an instance of GrpcCloudRedisStub, using the given settings. This is protected so
251    * that it is easy to make a subclass, but otherwise, the static factory methods should be
252    * preferred.
253    */
GrpcCloudRedisStub(CloudRedisStubSettings settings, ClientContext clientContext)254   protected GrpcCloudRedisStub(CloudRedisStubSettings settings, ClientContext clientContext)
255       throws IOException {
256     this(settings, clientContext, new GrpcCloudRedisCallableFactory());
257   }
258 
259   /**
260    * Constructs an instance of GrpcCloudRedisStub, using the given settings. This is protected so
261    * that it is easy to make a subclass, but otherwise, the static factory methods should be
262    * preferred.
263    */
GrpcCloudRedisStub( CloudRedisStubSettings settings, ClientContext clientContext, GrpcStubCallableFactory callableFactory)264   protected GrpcCloudRedisStub(
265       CloudRedisStubSettings settings,
266       ClientContext clientContext,
267       GrpcStubCallableFactory callableFactory)
268       throws IOException {
269     this.callableFactory = callableFactory;
270     this.operationsStub = GrpcOperationsStub.create(clientContext, callableFactory);
271 
272     GrpcCallSettings<ListInstancesRequest, ListInstancesResponse> listInstancesTransportSettings =
273         GrpcCallSettings.<ListInstancesRequest, ListInstancesResponse>newBuilder()
274             .setMethodDescriptor(listInstancesMethodDescriptor)
275             .setParamsExtractor(
276                 request -> {
277                   ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
278                   params.put("parent", String.valueOf(request.getParent()));
279                   return params.build();
280                 })
281             .build();
282     GrpcCallSettings<GetInstanceRequest, Instance> getInstanceTransportSettings =
283         GrpcCallSettings.<GetInstanceRequest, Instance>newBuilder()
284             .setMethodDescriptor(getInstanceMethodDescriptor)
285             .setParamsExtractor(
286                 request -> {
287                   ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
288                   params.put("name", String.valueOf(request.getName()));
289                   return params.build();
290                 })
291             .build();
292     GrpcCallSettings<GetInstanceAuthStringRequest, InstanceAuthString>
293         getInstanceAuthStringTransportSettings =
294             GrpcCallSettings.<GetInstanceAuthStringRequest, InstanceAuthString>newBuilder()
295                 .setMethodDescriptor(getInstanceAuthStringMethodDescriptor)
296                 .setParamsExtractor(
297                     request -> {
298                       ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
299                       params.put("name", String.valueOf(request.getName()));
300                       return params.build();
301                     })
302                 .build();
303     GrpcCallSettings<CreateInstanceRequest, Operation> createInstanceTransportSettings =
304         GrpcCallSettings.<CreateInstanceRequest, Operation>newBuilder()
305             .setMethodDescriptor(createInstanceMethodDescriptor)
306             .setParamsExtractor(
307                 request -> {
308                   ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
309                   params.put("parent", String.valueOf(request.getParent()));
310                   return params.build();
311                 })
312             .build();
313     GrpcCallSettings<UpdateInstanceRequest, Operation> updateInstanceTransportSettings =
314         GrpcCallSettings.<UpdateInstanceRequest, Operation>newBuilder()
315             .setMethodDescriptor(updateInstanceMethodDescriptor)
316             .setParamsExtractor(
317                 request -> {
318                   ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
319                   params.put("instance.name", String.valueOf(request.getInstance().getName()));
320                   return params.build();
321                 })
322             .build();
323     GrpcCallSettings<UpgradeInstanceRequest, Operation> upgradeInstanceTransportSettings =
324         GrpcCallSettings.<UpgradeInstanceRequest, Operation>newBuilder()
325             .setMethodDescriptor(upgradeInstanceMethodDescriptor)
326             .setParamsExtractor(
327                 request -> {
328                   ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
329                   params.put("name", String.valueOf(request.getName()));
330                   return params.build();
331                 })
332             .build();
333     GrpcCallSettings<ImportInstanceRequest, Operation> importInstanceTransportSettings =
334         GrpcCallSettings.<ImportInstanceRequest, Operation>newBuilder()
335             .setMethodDescriptor(importInstanceMethodDescriptor)
336             .setParamsExtractor(
337                 request -> {
338                   ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
339                   params.put("name", String.valueOf(request.getName()));
340                   return params.build();
341                 })
342             .build();
343     GrpcCallSettings<ExportInstanceRequest, Operation> exportInstanceTransportSettings =
344         GrpcCallSettings.<ExportInstanceRequest, Operation>newBuilder()
345             .setMethodDescriptor(exportInstanceMethodDescriptor)
346             .setParamsExtractor(
347                 request -> {
348                   ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
349                   params.put("name", String.valueOf(request.getName()));
350                   return params.build();
351                 })
352             .build();
353     GrpcCallSettings<FailoverInstanceRequest, Operation> failoverInstanceTransportSettings =
354         GrpcCallSettings.<FailoverInstanceRequest, Operation>newBuilder()
355             .setMethodDescriptor(failoverInstanceMethodDescriptor)
356             .setParamsExtractor(
357                 request -> {
358                   ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
359                   params.put("name", String.valueOf(request.getName()));
360                   return params.build();
361                 })
362             .build();
363     GrpcCallSettings<DeleteInstanceRequest, Operation> deleteInstanceTransportSettings =
364         GrpcCallSettings.<DeleteInstanceRequest, Operation>newBuilder()
365             .setMethodDescriptor(deleteInstanceMethodDescriptor)
366             .setParamsExtractor(
367                 request -> {
368                   ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
369                   params.put("name", String.valueOf(request.getName()));
370                   return params.build();
371                 })
372             .build();
373     GrpcCallSettings<RescheduleMaintenanceRequest, Operation>
374         rescheduleMaintenanceTransportSettings =
375             GrpcCallSettings.<RescheduleMaintenanceRequest, Operation>newBuilder()
376                 .setMethodDescriptor(rescheduleMaintenanceMethodDescriptor)
377                 .setParamsExtractor(
378                     request -> {
379                       ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
380                       params.put("name", String.valueOf(request.getName()));
381                       return params.build();
382                     })
383                 .build();
384     GrpcCallSettings<ListLocationsRequest, ListLocationsResponse> listLocationsTransportSettings =
385         GrpcCallSettings.<ListLocationsRequest, ListLocationsResponse>newBuilder()
386             .setMethodDescriptor(listLocationsMethodDescriptor)
387             .setParamsExtractor(
388                 request -> {
389                   ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
390                   params.put("name", String.valueOf(request.getName()));
391                   return params.build();
392                 })
393             .build();
394     GrpcCallSettings<GetLocationRequest, Location> getLocationTransportSettings =
395         GrpcCallSettings.<GetLocationRequest, Location>newBuilder()
396             .setMethodDescriptor(getLocationMethodDescriptor)
397             .setParamsExtractor(
398                 request -> {
399                   ImmutableMap.Builder<String, String> params = ImmutableMap.builder();
400                   params.put("name", String.valueOf(request.getName()));
401                   return params.build();
402                 })
403             .build();
404 
405     this.listInstancesCallable =
406         callableFactory.createUnaryCallable(
407             listInstancesTransportSettings, settings.listInstancesSettings(), clientContext);
408     this.listInstancesPagedCallable =
409         callableFactory.createPagedCallable(
410             listInstancesTransportSettings, settings.listInstancesSettings(), clientContext);
411     this.getInstanceCallable =
412         callableFactory.createUnaryCallable(
413             getInstanceTransportSettings, settings.getInstanceSettings(), clientContext);
414     this.getInstanceAuthStringCallable =
415         callableFactory.createUnaryCallable(
416             getInstanceAuthStringTransportSettings,
417             settings.getInstanceAuthStringSettings(),
418             clientContext);
419     this.createInstanceCallable =
420         callableFactory.createUnaryCallable(
421             createInstanceTransportSettings, settings.createInstanceSettings(), clientContext);
422     this.createInstanceOperationCallable =
423         callableFactory.createOperationCallable(
424             createInstanceTransportSettings,
425             settings.createInstanceOperationSettings(),
426             clientContext,
427             operationsStub);
428     this.updateInstanceCallable =
429         callableFactory.createUnaryCallable(
430             updateInstanceTransportSettings, settings.updateInstanceSettings(), clientContext);
431     this.updateInstanceOperationCallable =
432         callableFactory.createOperationCallable(
433             updateInstanceTransportSettings,
434             settings.updateInstanceOperationSettings(),
435             clientContext,
436             operationsStub);
437     this.upgradeInstanceCallable =
438         callableFactory.createUnaryCallable(
439             upgradeInstanceTransportSettings, settings.upgradeInstanceSettings(), clientContext);
440     this.upgradeInstanceOperationCallable =
441         callableFactory.createOperationCallable(
442             upgradeInstanceTransportSettings,
443             settings.upgradeInstanceOperationSettings(),
444             clientContext,
445             operationsStub);
446     this.importInstanceCallable =
447         callableFactory.createUnaryCallable(
448             importInstanceTransportSettings, settings.importInstanceSettings(), clientContext);
449     this.importInstanceOperationCallable =
450         callableFactory.createOperationCallable(
451             importInstanceTransportSettings,
452             settings.importInstanceOperationSettings(),
453             clientContext,
454             operationsStub);
455     this.exportInstanceCallable =
456         callableFactory.createUnaryCallable(
457             exportInstanceTransportSettings, settings.exportInstanceSettings(), clientContext);
458     this.exportInstanceOperationCallable =
459         callableFactory.createOperationCallable(
460             exportInstanceTransportSettings,
461             settings.exportInstanceOperationSettings(),
462             clientContext,
463             operationsStub);
464     this.failoverInstanceCallable =
465         callableFactory.createUnaryCallable(
466             failoverInstanceTransportSettings, settings.failoverInstanceSettings(), clientContext);
467     this.failoverInstanceOperationCallable =
468         callableFactory.createOperationCallable(
469             failoverInstanceTransportSettings,
470             settings.failoverInstanceOperationSettings(),
471             clientContext,
472             operationsStub);
473     this.deleteInstanceCallable =
474         callableFactory.createUnaryCallable(
475             deleteInstanceTransportSettings, settings.deleteInstanceSettings(), clientContext);
476     this.deleteInstanceOperationCallable =
477         callableFactory.createOperationCallable(
478             deleteInstanceTransportSettings,
479             settings.deleteInstanceOperationSettings(),
480             clientContext,
481             operationsStub);
482     this.rescheduleMaintenanceCallable =
483         callableFactory.createUnaryCallable(
484             rescheduleMaintenanceTransportSettings,
485             settings.rescheduleMaintenanceSettings(),
486             clientContext);
487     this.rescheduleMaintenanceOperationCallable =
488         callableFactory.createOperationCallable(
489             rescheduleMaintenanceTransportSettings,
490             settings.rescheduleMaintenanceOperationSettings(),
491             clientContext,
492             operationsStub);
493     this.listLocationsCallable =
494         callableFactory.createUnaryCallable(
495             listLocationsTransportSettings, settings.listLocationsSettings(), clientContext);
496     this.listLocationsPagedCallable =
497         callableFactory.createPagedCallable(
498             listLocationsTransportSettings, settings.listLocationsSettings(), clientContext);
499     this.getLocationCallable =
500         callableFactory.createUnaryCallable(
501             getLocationTransportSettings, settings.getLocationSettings(), clientContext);
502 
503     this.backgroundResources =
504         new BackgroundResourceAggregation(clientContext.getBackgroundResources());
505   }
506 
getOperationsStub()507   public GrpcOperationsStub getOperationsStub() {
508     return operationsStub;
509   }
510 
511   @Override
listInstancesCallable()512   public UnaryCallable<ListInstancesRequest, ListInstancesResponse> listInstancesCallable() {
513     return listInstancesCallable;
514   }
515 
516   @Override
517   public UnaryCallable<ListInstancesRequest, ListInstancesPagedResponse>
listInstancesPagedCallable()518       listInstancesPagedCallable() {
519     return listInstancesPagedCallable;
520   }
521 
522   @Override
getInstanceCallable()523   public UnaryCallable<GetInstanceRequest, Instance> getInstanceCallable() {
524     return getInstanceCallable;
525   }
526 
527   @Override
528   public UnaryCallable<GetInstanceAuthStringRequest, InstanceAuthString>
getInstanceAuthStringCallable()529       getInstanceAuthStringCallable() {
530     return getInstanceAuthStringCallable;
531   }
532 
533   @Override
createInstanceCallable()534   public UnaryCallable<CreateInstanceRequest, Operation> createInstanceCallable() {
535     return createInstanceCallable;
536   }
537 
538   @Override
539   public OperationCallable<CreateInstanceRequest, Instance, OperationMetadata>
createInstanceOperationCallable()540       createInstanceOperationCallable() {
541     return createInstanceOperationCallable;
542   }
543 
544   @Override
updateInstanceCallable()545   public UnaryCallable<UpdateInstanceRequest, Operation> updateInstanceCallable() {
546     return updateInstanceCallable;
547   }
548 
549   @Override
550   public OperationCallable<UpdateInstanceRequest, Instance, OperationMetadata>
updateInstanceOperationCallable()551       updateInstanceOperationCallable() {
552     return updateInstanceOperationCallable;
553   }
554 
555   @Override
upgradeInstanceCallable()556   public UnaryCallable<UpgradeInstanceRequest, Operation> upgradeInstanceCallable() {
557     return upgradeInstanceCallable;
558   }
559 
560   @Override
561   public OperationCallable<UpgradeInstanceRequest, Instance, OperationMetadata>
upgradeInstanceOperationCallable()562       upgradeInstanceOperationCallable() {
563     return upgradeInstanceOperationCallable;
564   }
565 
566   @Override
importInstanceCallable()567   public UnaryCallable<ImportInstanceRequest, Operation> importInstanceCallable() {
568     return importInstanceCallable;
569   }
570 
571   @Override
572   public OperationCallable<ImportInstanceRequest, Instance, OperationMetadata>
importInstanceOperationCallable()573       importInstanceOperationCallable() {
574     return importInstanceOperationCallable;
575   }
576 
577   @Override
exportInstanceCallable()578   public UnaryCallable<ExportInstanceRequest, Operation> exportInstanceCallable() {
579     return exportInstanceCallable;
580   }
581 
582   @Override
583   public OperationCallable<ExportInstanceRequest, Instance, OperationMetadata>
exportInstanceOperationCallable()584       exportInstanceOperationCallable() {
585     return exportInstanceOperationCallable;
586   }
587 
588   @Override
failoverInstanceCallable()589   public UnaryCallable<FailoverInstanceRequest, Operation> failoverInstanceCallable() {
590     return failoverInstanceCallable;
591   }
592 
593   @Override
594   public OperationCallable<FailoverInstanceRequest, Instance, OperationMetadata>
failoverInstanceOperationCallable()595       failoverInstanceOperationCallable() {
596     return failoverInstanceOperationCallable;
597   }
598 
599   @Override
deleteInstanceCallable()600   public UnaryCallable<DeleteInstanceRequest, Operation> deleteInstanceCallable() {
601     return deleteInstanceCallable;
602   }
603 
604   @Override
605   public OperationCallable<DeleteInstanceRequest, Empty, OperationMetadata>
deleteInstanceOperationCallable()606       deleteInstanceOperationCallable() {
607     return deleteInstanceOperationCallable;
608   }
609 
610   @Override
rescheduleMaintenanceCallable()611   public UnaryCallable<RescheduleMaintenanceRequest, Operation> rescheduleMaintenanceCallable() {
612     return rescheduleMaintenanceCallable;
613   }
614 
615   @Override
616   public OperationCallable<RescheduleMaintenanceRequest, Instance, OperationMetadata>
rescheduleMaintenanceOperationCallable()617       rescheduleMaintenanceOperationCallable() {
618     return rescheduleMaintenanceOperationCallable;
619   }
620 
621   @Override
listLocationsCallable()622   public UnaryCallable<ListLocationsRequest, ListLocationsResponse> listLocationsCallable() {
623     return listLocationsCallable;
624   }
625 
626   @Override
627   public UnaryCallable<ListLocationsRequest, ListLocationsPagedResponse>
listLocationsPagedCallable()628       listLocationsPagedCallable() {
629     return listLocationsPagedCallable;
630   }
631 
632   @Override
getLocationCallable()633   public UnaryCallable<GetLocationRequest, Location> getLocationCallable() {
634     return getLocationCallable;
635   }
636 
637   @Override
close()638   public final void close() {
639     try {
640       backgroundResources.close();
641     } catch (RuntimeException e) {
642       throw e;
643     } catch (Exception e) {
644       throw new IllegalStateException("Failed to close resource", e);
645     }
646   }
647 
648   @Override
shutdown()649   public void shutdown() {
650     backgroundResources.shutdown();
651   }
652 
653   @Override
isShutdown()654   public boolean isShutdown() {
655     return backgroundResources.isShutdown();
656   }
657 
658   @Override
isTerminated()659   public boolean isTerminated() {
660     return backgroundResources.isTerminated();
661   }
662 
663   @Override
shutdownNow()664   public void shutdownNow() {
665     backgroundResources.shutdownNow();
666   }
667 
668   @Override
awaitTermination(long duration, TimeUnit unit)669   public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException {
670     return backgroundResources.awaitTermination(duration, unit);
671   }
672 }
673