private static Page<Image> listImages(
final String project,
final ComputeOptions serviceOptions,
final Map<ComputeRpc.Option, ?> optionsMap) {
try {
Tuple<String, Iterable<com.google.api.services.compute.model.Image>> result =
runWithRetries(
new Callable<Tuple<String, Iterable<com.google.api.services.compute.model.Image>>>() {
@Override
public Tuple<String, Iterable<com.google.api.services.compute.model.Image>> call() {
return serviceOptions.getComputeRpcV1().listImages(project, optionsMap);
}
},
serviceOptions.getRetrySettings(),
EXCEPTION_HANDLER,
serviceOptions.getClock());
String cursor = result.x();
Iterable<Image> images =
Iterables.transform(
result.y() == null
? ImmutableList.<com.google.api.services.compute.model.Image>of()
: result.y(),
new Function<com.google.api.services.compute.model.Image, Image>() {
@Override
public Image apply(com.google.api.services.compute.model.Image image) {
return Image.fromPb(serviceOptions.getService(), image);
}
});
return new PageImpl<>(
new ImagePageFetcher(project, serviceOptions, cursor, optionsMap), cursor, images);