Skip to content

Commit 6122c74

Browse files
author
Pearl Dsilva
committed
generic solution
1 parent a429813 commit 6122c74

3 files changed

Lines changed: 11 additions & 7 deletions

File tree

engine/schema/src/main/java/com/cloud/storage/dao/VolumeDao.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ public interface VolumeDao extends GenericDao<VolumeVO, Long>, StateDao<Volume.S
4444

4545
List<VolumeVO> findByInstance(long id);
4646

47+
List<VolumeVO> findByInstanceAndNotDestroyed(long id);
48+
4749
List<VolumeVO> findByInstanceAndType(long id, Volume.Type vType);
4850

4951
List<VolumeVO> findIncludingRemovedByInstanceAndType(long id, Volume.Type vType);

engine/schema/src/main/java/com/cloud/storage/dao/VolumeDaoImpl.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,14 @@ public List<VolumeVO> findByInstance(long id) {
128128
return listBy(sc);
129129
}
130130

131+
@Override
132+
public List<VolumeVO> findByInstanceAndNotDestroyed(long id) {
133+
SearchCriteria<VolumeVO> sc = AllFieldsSearch.create();
134+
sc.setParameters("instanceId", id);
135+
sc.setParameters("notDestroyed", Volume.State.Destroy, Volume.State.Expunged);
136+
return listBy(sc);
137+
}
138+
131139
@Override
132140
public List<VolumeVO> findByInstanceAndDeviceId(long instanceId, long deviceId) {
133141
SearchCriteria<VolumeVO> sc = AllFieldsSearch.create();

server/src/main/java/com/cloud/vm/UserVmManagerImpl.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7225,7 +7225,7 @@ private void checkDestinationHypervisorType(StoragePool destPool, VMInstanceVO v
72257225
}
72267226

72277227
public boolean isVMUsingLocalStorage(VMInstanceVO vm) {
7228-
List<VolumeVO> volumes = _volsDao.findByInstance(vm.getId());
7228+
List<VolumeVO> volumes = _volsDao.findByInstanceAndNotDestroyed(vm.getId());
72297229
return isAnyVmVolumeUsingLocalStorage(volumes);
72307230
}
72317231

@@ -7660,12 +7660,6 @@ private boolean isImplicitPlannerUsedByOffering(long offeringId) {
76607660

76617661
protected boolean isAnyVmVolumeUsingLocalStorage(final List<VolumeVO> volumes) {
76627662
for (VolumeVO vol : volumes) {
7663-
if (vol == null || vol.getRemoved() != null ||
7664-
Volume.State.Destroy.equals(vol.getState()) ||
7665-
Volume.State.Expunged.equals(vol.getState())) {
7666-
logger.debug("Skipping non-active volume while checking local storage usage: {}", vol);
7667-
continue;
7668-
}
76697663
DiskOfferingVO diskOffering = _diskOfferingDao.findById(vol.getDiskOfferingId());
76707664
if (diskOffering != null && diskOffering.isUseLocalStorage()) {
76717665
return true;

0 commit comments

Comments
 (0)