private static Page<Disk> listDisks(
final String zone,
final ComputeOptions serviceOptions,
final Map<ComputeRpc.Option, ?> optionsMap) {
try {
Tuple<String, Iterable<com.google.api.services.compute.model.Disk>> result =
runWithRetries(
new Callable<Tuple<String, Iterable<com.google.api.services.compute.model.Disk>>>() {
@Override
public Tuple<String, Iterable<com.google.api.services.compute.model.Disk>> call() {
return serviceOptions.getComputeRpcV1().listDisks(zone, optionsMap);
}
},
serviceOptions.getRetrySettings(),
EXCEPTION_HANDLER,
serviceOptions.getClock());
String cursor = result.x();
Iterable<Disk> disks =
Iterables.transform(
result.y() == null
? ImmutableList.<com.google.api.services.compute.model.Disk>of()
: result.y(),
diskFromPb(serviceOptions));
return new PageImpl<>(
new DiskPageFetcher(zone, serviceOptions, cursor, optionsMap), cursor, disks);
} catch (RetryHelper.RetryHelperException e) {
throw ComputeException.translateAndThrow(e);
}
}