From bce314b131fff1eb462d37f863879566c0167f51 Mon Sep 17 00:00:00 2001 From: anthony Date: Thu, 9 Sep 2010 15:11:34 -0700 Subject: [PATCH] fixed a bug about snapshot --- .../src/com/cloud/storage/snapshot/SnapshotManager.java | 3 +++ .../com/cloud/storage/snapshot/SnapshotManagerImpl.java | 3 ++- server/src/com/cloud/vm/UserVmManagerImpl.java | 9 ++++++--- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/server/src/com/cloud/storage/snapshot/SnapshotManager.java b/server/src/com/cloud/storage/snapshot/SnapshotManager.java index e445b437d3c..0e342460621 100644 --- a/server/src/com/cloud/storage/snapshot/SnapshotManager.java +++ b/server/src/com/cloud/storage/snapshot/SnapshotManager.java @@ -26,6 +26,7 @@ import com.cloud.storage.SnapshotPolicyVO; import com.cloud.storage.SnapshotScheduleVO; import com.cloud.storage.SnapshotVO; import com.cloud.storage.VolumeVO; +import com.cloud.storage.Storage.ImageFormat; import com.cloud.utils.component.Manager; import com.cloud.utils.db.Filter; @@ -155,4 +156,6 @@ public interface SnapshotManager extends Manager { void validateSnapshot(Long userId, SnapshotVO snapshot); + ImageFormat getImageFormat(Long volumeId); + } diff --git a/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java b/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java index d2cd55e2c68..4918cc346de 100644 --- a/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java +++ b/server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java @@ -201,7 +201,8 @@ public class SnapshotManagerImpl implements SnapshotManager { return runSnap; } - private ImageFormat getImageFormat(Long volumeId) { + @Override + public ImageFormat getImageFormat(Long volumeId) { ImageFormat format = null; VolumeVO volume = _volsDao.findById(volumeId); Long templateId = volume.getTemplateId(); diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index 6e724f2a5b3..4ea3e73e53d 100755 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -151,6 +151,7 @@ import com.cloud.storage.dao.VMTemplateDao; import com.cloud.storage.dao.VMTemplateHostDao; import com.cloud.storage.dao.VolumeDao; import com.cloud.template.VirtualMachineTemplate.BootloaderType; +import com.cloud.storage.snapshot.SnapshotManager; import com.cloud.user.AccountManager; import com.cloud.user.AccountVO; import com.cloud.user.User; @@ -207,6 +208,7 @@ public class UserVmManagerImpl implements UserVmManager { @Inject CapacityDao _capacityDao = null; @Inject NetworkManager _networkMgr = null; @Inject StorageManager _storageMgr = null; + @Inject SnapshotManager _snapshotMgr = null; @Inject AgentManager _agentMgr = null; @Inject AccountDao _accountDao = null; @Inject UserDao _userDao = null; @@ -2483,10 +2485,11 @@ public class UserVmManagerImpl implements UserVmManager { Long accountId = volume.getAccountId(); String origTemplateInstallPath = null; - Long origTemplateId = volume.getTemplateId(); + - if (origTemplateId != null) { - VMTemplateHostVO vmTemplateHostVO = _templateHostDao.findByHostTemplate(secondaryStorageHost.getId(), origTemplateId); + if (ImageFormat.ISO != _snapshotMgr.getImageFormat(volumeId)) { + Long origTemplateId = volume.getTemplateId(); + VMTemplateHostVO vmTemplateHostVO = _templateHostDao.findByHostTemplate(secondaryStorageHost.getId(), origTemplateId); origTemplateInstallPath = vmTemplateHostVO.getInstallPath(); }