mirror of https://github.com/apache/cloudstack.git
generic solution
This commit is contained in:
parent
a429813449
commit
6122c7433d
|
|
@ -44,6 +44,8 @@ public interface VolumeDao extends GenericDao<VolumeVO, Long>, StateDao<Volume.S
|
|||
|
||||
List<VolumeVO> findByInstance(long id);
|
||||
|
||||
List<VolumeVO> findByInstanceAndNotDestroyed(long id);
|
||||
|
||||
List<VolumeVO> findByInstanceAndType(long id, Volume.Type vType);
|
||||
|
||||
List<VolumeVO> findIncludingRemovedByInstanceAndType(long id, Volume.Type vType);
|
||||
|
|
|
|||
|
|
@ -128,6 +128,14 @@ public class VolumeDaoImpl extends GenericDaoBase<VolumeVO, Long> implements Vol
|
|||
return listBy(sc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<VolumeVO> findByInstanceAndNotDestroyed(long id) {
|
||||
SearchCriteria<VolumeVO> sc = AllFieldsSearch.create();
|
||||
sc.setParameters("instanceId", id);
|
||||
sc.setParameters("notDestroyed", Volume.State.Destroy, Volume.State.Expunged);
|
||||
return listBy(sc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<VolumeVO> findByInstanceAndDeviceId(long instanceId, long deviceId) {
|
||||
SearchCriteria<VolumeVO> sc = AllFieldsSearch.create();
|
||||
|
|
|
|||
|
|
@ -7225,7 +7225,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
|
|||
}
|
||||
|
||||
public boolean isVMUsingLocalStorage(VMInstanceVO vm) {
|
||||
List<VolumeVO> volumes = _volsDao.findByInstance(vm.getId());
|
||||
List<VolumeVO> volumes = _volsDao.findByInstanceAndNotDestroyed(vm.getId());
|
||||
return isAnyVmVolumeUsingLocalStorage(volumes);
|
||||
}
|
||||
|
||||
|
|
@ -7660,12 +7660,6 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
|
|||
|
||||
protected boolean isAnyVmVolumeUsingLocalStorage(final List<VolumeVO> volumes) {
|
||||
for (VolumeVO vol : volumes) {
|
||||
if (vol == null || vol.getRemoved() != null ||
|
||||
Volume.State.Destroy.equals(vol.getState()) ||
|
||||
Volume.State.Expunged.equals(vol.getState())) {
|
||||
logger.debug("Skipping non-active volume while checking local storage usage: {}", vol);
|
||||
continue;
|
||||
}
|
||||
DiskOfferingVO diskOffering = _diskOfferingDao.findById(vol.getDiskOfferingId());
|
||||
if (diskOffering != null && diskOffering.isUseLocalStorage()) {
|
||||
return true;
|
||||
|
|
|
|||
Loading…
Reference in New Issue