Don't let VMsync touch the VM if VM has been scheduled for HA but HA is not yet running.

This commit is contained in:
Kelven Yang 2014-03-21 10:58:14 -07:00
parent e9c81c78b9
commit 66bece5906
3 changed files with 20 additions and 1 deletions

View File

@ -967,7 +967,7 @@ public class HighAvailabilityManagerImpl extends ManagerBase implements HighAvai
@Override
public boolean hasPendingHaWork(long vmId) {
List<HaWorkVO> haWorks = _haDao.listRunningHaWorkForVm(vmId);
List<HaWorkVO> haWorks = _haDao.listPendingHaWorkForVm(vmId);
return haWorks.size() > 0;
}
}

View File

@ -81,4 +81,6 @@ public interface HighAvailabilityDao extends GenericDao<HaWorkVO, Long> {
* @return List of work items
*/
List<HaWorkVO> listRunningHaWorkForVm(long vmId);
List<HaWorkVO> listPendingHaWorkForVm(long vmId);
}

View File

@ -49,6 +49,7 @@ public class HighAvailabilityDaoImpl extends GenericDaoBase<HaWorkVO, Long> impl
private final SearchBuilder<HaWorkVO> ReleaseSearch;
private final SearchBuilder<HaWorkVO> FutureHaWorkSearch;
private final SearchBuilder<HaWorkVO> RunningHaWorkSearch;
private final SearchBuilder<HaWorkVO> PendingHaWorkSearch;
protected HighAvailabilityDaoImpl() {
super();
@ -106,6 +107,22 @@ public class HighAvailabilityDaoImpl extends GenericDaoBase<HaWorkVO, Long> impl
RunningHaWorkSearch.and("taken", RunningHaWorkSearch.entity().getDateTaken(), Op.NNULL);
RunningHaWorkSearch.and("step", RunningHaWorkSearch.entity().getStep(), Op.NIN);
RunningHaWorkSearch.done();
PendingHaWorkSearch = createSearchBuilder();
PendingHaWorkSearch.and("instance", PendingHaWorkSearch.entity().getInstanceId(), Op.EQ);
PendingHaWorkSearch.and("type", PendingHaWorkSearch.entity().getType(), Op.EQ);
PendingHaWorkSearch.and("step", PendingHaWorkSearch.entity().getStep(), Op.NIN);
PendingHaWorkSearch.done();
}
@Override
public List<HaWorkVO> listPendingHaWorkForVm(long vmId) {
SearchCriteria<HaWorkVO> sc = PendingHaWorkSearch.create();
sc.setParameters("instance", vmId);
sc.setParameters("type", WorkType.HA);
sc.setParameters("step", Step.Done, Step.Error, Step.Cancelled);
return search(sc, null);
}
@Override