package org.ovirt.engine.core.bll;
import java.util.List;
import org.ovirt.engine.core.common.businessentities.VDS;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dal.dbbroker.DbFacade;
import org.ovirt.engine.core.utils.hostinstall.IVdsInstallCallBack;
import org.ovirt.engine.core.utils.hostinstall.IVdsInstallWrapper;
import org.ovirt.engine.core.utils.hostinstall.VdsInstallerFactory;
import org.ovirt.engine.core.utils.linq.LinqUtils;
import org.ovirt.engine.core.utils.linq.Predicate;
/**
* Class designed to provide connectivity to host and retrieval of its unique-id in order to validate host status before
* starting the installation flow.
*/
public class VdsInstallHelper{
private IVdsInstallWrapper wrapper;
private SimpleCallback callback;
public VdsInstallHelper() {
callback = new SimpleCallback();
wrapper = VdsInstallerFactory.CreateVdsInstallWrapper();
wrapper.InitCallback(callback);
}
public boolean connectToServer(String server, String passwd, long timeout) {
return wrapper.ConnectToServer(server, passwd, timeout);
}
public String getServerUniqueId() {
wrapper.RunSSHCommand(VdsInstaller._getUniqueIdCommand);
return callback.serverUniqueId;
}
public void wrapperShutdown() {
wrapper.wrapperShutdown();
wrapper = null;
callback = null;
}
public static List<VDS> getVdssByUniqueId(final Guid vdsId, String uniqueIdToCheck) {
List<VDS> list = DbFacade.getInstance().getVdsDAO().getAllWithUniqueId(uniqueIdToCheck);
return LinqUtils.filter(list, new Predicate<VDS>() {
@Override
public boolean eval(VDS vds) {
return !vds.getvds_id().equals(vdsId);
}
});
}
public static boolean isVdsUnique(final Guid vdsId, String uniqueIdToCheck) {
return getVdssByUniqueId(vdsId, uniqueIdToCheck).isEmpty();
}
private class SimpleCallback implements IVdsInstallCallBack {
String serverUniqueId;
@Override
public void AddError(String error) {
}
@Override
public void AddMessage(String message) {
serverUniqueId = message;
}
@Override
public void Connected() {
}
@Override
public void EndTransfer() {
}
@Override
public void Failed(String error) {
}
}
}