package org.ovirt.engine.core.bll.host.provider.foreman;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.List;
import javax.inject.Inject;
import org.ovirt.engine.core.bll.host.provider.HostProviderProxy;
import org.ovirt.engine.core.bll.provider.ProviderProxyFactory;
import org.ovirt.engine.core.common.businessentities.Provider;
import org.ovirt.engine.core.common.businessentities.ProviderType;
import org.ovirt.engine.core.dal.dbbroker.DbFacade;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class EngineForemanProviderFinder {
private static Logger log = LoggerFactory.getLogger(EngineForemanProviderFinder.class);
private String engineHostName;
@Inject
private DbFacade dbFacade;
public HostProviderProxy findEngineProvider() {
engineHostName = resolveEngineHostName();
if (engineHostName == null) {
return null;
}
List<Provider<?>> hostProviders = dbFacade.getProviderDao().getAllByTypes(ProviderType.FOREMAN);
HostProviderProxy proxy;
for (Provider<?> provider : hostProviders) {
proxy = ProviderProxyFactory.getInstance().create(provider);
if (proxy.isContentHostExist(engineHostName)) {
return proxy;
}
}
log.error("Failed to find host on any provider by host name '{}' ", engineHostName);
return null;
}
public String getEngineHostName() {
return engineHostName;
}
private String resolveEngineHostName() {
try {
return InetAddress.getLocalHost().getHostName();
} catch (UnknownHostException e) {
log.error("Failed to resolve hostname for the engine server", e);
return null;
}
}
}