From 1efcc19dbd0e609733f93089ce5cb2a5be84209b Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Fri, 9 Oct 2015 13:20:41 +0200 Subject: [PATCH] CLOUDSTACK-8941: fix NPE when migrate vm to other zone-wide pools the second time --- .../src/com/cloud/vm/VirtualMachineManagerImpl.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java index 9dea90a41d1..f972539fc7d 100644 --- a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java +++ b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java @@ -1748,6 +1748,10 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac final HostVO srcHost = _hostDao.findById(srchostId); final Long srcClusterId = srcHost.getClusterId(); + if (destPool == null) { + throw new CloudRuntimeException("Unable to migrate vm: missing destination storage pool"); + } + try { stateTransitTo(vm, VirtualMachine.Event.StorageMigrationRequested, null); } catch (final NoTransitionException e) { @@ -1763,7 +1767,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac if (migrationResult) { //if the vm is migrated to different pod in basic mode, need to reallocate ip - if (!vm.getPodIdToDeployIn().equals(destPool.getPodId())) { + if (destPool.getPodId() != null && !destPool.getPodId().equals(vm.getPodIdToDeployIn())) { final DataCenterDeployment plan = new DataCenterDeployment(vm.getDataCenterId(), destPool.getPodId(), null, null, null, null); final VirtualMachineProfileImpl vmProfile = new VirtualMachineProfileImpl(vm, null, null, null, null); _networkMgr.reallocate(vmProfile, plan);