package org.ovirt.engine.core.bll.hostedengine; import java.util.Arrays; import java.util.List; import javax.annotation.PostConstruct; import javax.inject.Inject; import javax.inject.Singleton; import org.ovirt.engine.core.common.BackendService; import org.ovirt.engine.core.common.businessentities.OriginType; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dao.VmDao; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * It stores information about the host the hosted engine VM was running on prior to engine restart. * It is initialized after Backend but before other services (especially monitoring) so load previous host id from db. * * TODO: Reexamine this class during 4.0 fencing refactoring */ @Singleton public class PreviousHostedEngineHost implements BackendService { private static final Logger log = LoggerFactory.getLogger(PreviousHostedEngineHost.class); private Guid previousHostId; @Inject private VmDao vmDao; @PostConstruct public void create() { List<VM> vms = vmDao.getVmsByOrigins( Arrays.asList( OriginType.HOSTED_ENGINE, OriginType.MANAGED_HOSTED_ENGINE)); if (vms != null && !vms.isEmpty()) { previousHostId = vms.iterator().next().getRunOnVds(); } log.debug("Hosted engine VM was running prior to restart on host '{}'", previousHostId); } public boolean isPreviousHostId(Guid hostId) { return previousHostId != null && previousHostId.equals(hostId); } }