public List<ZooKeeperServerConfig> getZookeeperServers() throws ExecutionException, InterruptedException {
List<ZooKeeperServerConfig> result = Lists.newArrayList();
if (entity.getParent() instanceof ZooKeeperEnsemble) {
ZooKeeperEnsemble ensemble = (ZooKeeperEnsemble) entity.getParent();
for (Entity member : ensemble.getMembers()) {
Integer memberId = member.config().get(ZooKeeperNode.MY_ID);
if (memberId == null) {
throw new IllegalStateException(member + " has null value for " + ZooKeeperNode.MY_ID);
}
String hostname = Entities.attributeSupplierWhenReady(member, ZooKeeperNode.SUBNET_HOSTNAME).get();
Integer port = Entities.attributeSupplierWhenReady(member, ZooKeeperNode.ZOOKEEPER_PORT).get();
Integer leaderPort = Entities.attributeSupplierWhenReady(member, ZooKeeperNode.ZOOKEEPER_LEADER_PORT).get();
Integer electionPort = Entities.attributeSupplierWhenReady(member, ZooKeeperNode.ZOOKEEPER_ELECTION_PORT).get();
result.add(new ZooKeeperServerConfig(memberId, hostname, port, leaderPort, electionPort));
}
}
return result;
}