From eb7cd06e190f9ad7eb74b1f52814a4f90776bcad Mon Sep 17 00:00:00 2001 From: Prachi Damle Date: Fri, 6 Dec 2013 11:12:38 -0800 Subject: [PATCH] CLOUDSTACK-5401: VM migration during host maintenance fails if pool.storage.capacity.disablethreshold is lowered Changes: - During Vm migration while finding a new host within the cluster, we need to set the storagepool Id to the deployment plan too. - This will indicate the planner that the volumes are ready and no need to find new pool - This in turn will prevent the threshold check done during the pool allocation. This step is not needed since there is no need to allocate pools newly. - Thus the migration wont fail because th threshold check fails. --- .../src/com/cloud/vm/VirtualMachineManagerImpl.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java index d4bbbe67eeb..d0d0481a286 100755 --- a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java +++ b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java @@ -2054,8 +2054,16 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac } Host host = _hostDao.findById(hostId); + Long poolId = null; + List vols = _volsDao.findReadyRootVolumesByInstance(vm.getId()); + for (VolumeVO rootVolumeOfVm : vols) { + StoragePoolVO rootDiskPool = _storagePoolDao.findById(rootVolumeOfVm.getPoolId()); + if (rootDiskPool != null) { + poolId = rootDiskPool.getId(); + } + } - DataCenterDeployment plan = new DataCenterDeployment(host.getDataCenterId(), host.getPodId(), host.getClusterId(), null, null, null); + DataCenterDeployment plan = new DataCenterDeployment(host.getDataCenterId(), host.getPodId(), host.getClusterId(), null, poolId, null); ExcludeList excludes = new ExcludeList(); excludes.addHost(hostId);