package org.cloudfoundry.community.servicebroker.datalifecycle.utils;
import java.io.IOException;
import java.net.Inet4Address;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import org.apache.log4j.Logger;
import org.cloudfoundry.community.servicebroker.exception.ServiceBrokerException;
public class HostUtils {
private Logger logger = Logger.getLogger(HostUtils.class);
public boolean waitForBoot(String ip, int port)
throws ServiceBrokerException {
logger.info("Waiting for " + ip + " to boot.");
for (int i = 8; i > 0; --i) {
try {
try {
Thread.sleep(20000);
} catch (InterruptedException e1) {
throw new ServiceBrokerException(
"Internal Error! Something went wrong sleeping the threads!");
}
logger.info("Attempting to connect to " + ip + " on port "
+ port);
Socket socket = new Socket();
SocketAddress addr = new InetSocketAddress(
Inet4Address.getByName(ip), port);
socket.connect(addr, 10000);
boolean connected = socket.isConnected();
socket.close();
if (connected) {
logger.info(ip + "is responding on " + port);
return true;
}
} catch (IOException e) {
logger.error(ip + " is not responding on " + port + " " + i
+ " retires remaning.");
}
}
return false;
}
}