From f865e8b061866bf1f463f06b744cb7eefcacb26c Mon Sep 17 00:00:00 2001 From: anthony Date: Tue, 28 Dec 2010 19:45:27 -0800 Subject: [PATCH] moveVolume is broken due to not setup hypervisortype in dskch fixed --- server/src/com/cloud/storage/StorageManager.java | 2 +- server/src/com/cloud/storage/StorageManagerImpl.java | 3 ++- server/src/com/cloud/vm/UserVmManagerImpl.java | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/server/src/com/cloud/storage/StorageManager.java b/server/src/com/cloud/storage/StorageManager.java index b7475e58b72..336750c1556 100755 --- a/server/src/com/cloud/storage/StorageManager.java +++ b/server/src/com/cloud/storage/StorageManager.java @@ -181,7 +181,7 @@ public interface StorageManager extends Manager { * @param destPoolClusterId * @return VolumeVO */ - VolumeVO moveVolume(VolumeVO volume, long destPoolDcId, Long destPoolPodId, Long destPoolClusterId); + VolumeVO moveVolume(VolumeVO volume, long destPoolDcId, Long destPoolPodId, Long destPoolClusterId, HypervisorType dataDiskHyperType); /** * Create a volume based on the given criteria diff --git a/server/src/com/cloud/storage/StorageManagerImpl.java b/server/src/com/cloud/storage/StorageManagerImpl.java index 5ddcfc452a4..aff8d2da938 100755 --- a/server/src/com/cloud/storage/StorageManagerImpl.java +++ b/server/src/com/cloud/storage/StorageManagerImpl.java @@ -1553,10 +1553,11 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag } @Override - public VolumeVO moveVolume(VolumeVO volume, long destPoolDcId, Long destPoolPodId, Long destPoolClusterId) { + public VolumeVO moveVolume(VolumeVO volume, long destPoolDcId, Long destPoolPodId, Long destPoolClusterId, HypervisorType dataDiskHyperType) { // Find a destination storage pool with the specified criteria DiskOfferingVO diskOffering = _diskOfferingDao.findById(volume.getDiskOfferingId()); DiskProfile dskCh = new DiskProfile(volume.getId(), volume.getVolumeType(), volume.getName(), diskOffering.getId(), diskOffering.getDiskSizeInBytes(), diskOffering.getTagsArray(), diskOffering.getUseLocalStorage(), diskOffering.isRecreatable(), null); + dskCh.setHyperType(dataDiskHyperType); DataCenterVO destPoolDataCenter = _dcDao.findById(destPoolDcId); HostPodVO destPoolPod = _podDao.findById(destPoolPodId); StoragePoolVO destPool = findStoragePool(dskCh, destPoolDataCenter, destPoolPod, destPoolClusterId, null, null, null, new HashSet()); diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index ada12bd912e..66cdc2cada8 100755 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -552,7 +552,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager if (moveVolumeNeeded) { // Move the volume to a storage pool in the VM's zone, pod, or cluster - volume = _storageMgr.moveVolume(volume, vmRootVolumePool.getDataCenterId(), vmRootVolumePool.getPodId(), vmRootVolumePool.getClusterId()); + volume = _storageMgr.moveVolume(volume, vmRootVolumePool.getDataCenterId(), vmRootVolumePool.getPodId(), vmRootVolumePool.getClusterId(), dataDiskHyperType); } AsyncJobExecutor asyncExecutor = BaseAsyncJobExecutor.getCurrentExecutor();