private void selectHosts(ContainerNetworkProvisionTaskState state,
ContainerNetworkDescription networkDescription, Consumer<List<ComputeState>> callback) {
List<String> providedHostLinks = ContainerNetworkAllocationTaskService
.getProvidedHostIdsAsSelfLinks(state);
if (providedHostLinks != null) {
retrieveContainerHostsByLinks(state, providedHostLinks, (hosts) -> {
List<String> disabledHosts = hosts.stream().filter((host) -> {
return host.powerState != PowerState.ON;
})
.map(host -> host.address).collect(Collectors.toList());
if (disabledHosts.isEmpty()) {
callback.accept(hosts);
} else {
String err = String.format(
"Requested network provisioning for disabled hosts: [%s].",
disabledHosts);
failTask(err, null);
}
});
return;
}
selectHost(state, (host) -> {
callback.accept(Collections.singletonList(host));
});
}