From 13d2caa6b5645e35e63a43bcd8062fb3aa57f46d 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 f2a2102177e..164457ae682 100755 --- a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java +++ b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java @@ -2047,8 +2047,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);