diff --git a/engine/orchestration/src/org/apache/cloudstack/engine/cloud/entity/api/VMEntityManagerImpl.java b/engine/orchestration/src/org/apache/cloudstack/engine/cloud/entity/api/VMEntityManagerImpl.java index 0822b924018..6dd5844cbc9 100755 --- a/engine/orchestration/src/org/apache/cloudstack/engine/cloud/entity/api/VMEntityManagerImpl.java +++ b/engine/orchestration/src/org/apache/cloudstack/engine/cloud/entity/api/VMEntityManagerImpl.java @@ -115,6 +115,7 @@ public class VMEntityManagerImpl implements VMEntityManager { @Inject protected AffinityGroupVMMapDao _affinityGroupVMMapDao; + @Override public VMEntityVO loadVirtualMachine(String vmId) { // TODO Auto-generated method stub @@ -197,7 +198,6 @@ public class VMEntityManagerImpl implements VMEntityManager { if (s_logger.isDebugEnabled()) { s_logger.debug("Cannot finalize the VM reservation for this destination found, retrying"); } - exclude.addHost(dest.getHost().getId()); continue; } @@ -228,8 +228,14 @@ public class VMEntityManagerImpl implements VMEntityManager { _accountDao.findById(vm.getAccountId()), reservedPlan); } catch (Exception ex) { // Retry the deployment without using the reservation plan + DataCenterDeployment plan = new DataCenterDeployment(0, null, null, null, null, null); + + if (reservedPlan.getAvoids() != null) { + plan.setAvoids(reservedPlan.getAvoids()); + } + _itMgr.start(vm, params, _userDao.findById(new Long(caller)), _accountDao.findById(vm.getAccountId()), - null); + plan); } } else { // no reservation found. Let VirtualMachineManager retry diff --git a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java index 9962f03a8df..7a4bf50f128 100755 --- a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java +++ b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java @@ -784,10 +784,11 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac HypervisorGuru hvGuru = _hvGuruMgr.getGuru(vm.getHypervisorType()); boolean canRetry = true; + ExcludeList avoids = null; try { Journal journal = start.second().getJournal(); - ExcludeList avoids = null; + if (planToDeploy != null) { avoids = planToDeploy.getAvoids(); } @@ -1025,6 +1026,10 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac } } } + + if (planToDeploy != null) { + planToDeploy.setAvoids(avoids); + } } if (startedVm == null) {