mirror of https://github.com/apache/cloudstack.git
bug 7149: merge from master
This commit is contained in:
parent
8d2bee85f2
commit
5958a4469a
|
|
@ -258,12 +258,12 @@ public interface StorageManager extends Manager {
|
|||
StoragePoolVO updateStoragePool(long poolId, String tags) throws IllegalArgumentException;
|
||||
|
||||
/**
|
||||
* Find all of the storage pools needed for this vm.
|
||||
* Find the storage pool, from which MS will choose host.
|
||||
*
|
||||
* @param vmId id of the vm.
|
||||
* @return List of StoragePoolVO
|
||||
* @return StoragePoolVO
|
||||
*/
|
||||
List<StoragePoolVO> getStoragePoolsForVm(long vmId);
|
||||
StoragePoolVO getStoragePoolForVm(long vmId);
|
||||
|
||||
String getPrimaryStorageNameLabel(VolumeVO volume);
|
||||
|
||||
|
|
|
|||
|
|
@ -814,9 +814,8 @@ public class NetworkManagerImpl implements NetworkManager, VirtualMachineManager
|
|||
final HashSet<Host> avoid = new HashSet<Host>();
|
||||
final VMTemplateVO template = _templateDao.findById(router.getTemplateId());
|
||||
final DataCenterVO dc = _dcDao.findById(router.getDataCenterId());
|
||||
List<StoragePoolVO> sps = _storageMgr.getStoragePoolsForVm(router.getId());
|
||||
StoragePoolVO sp = sps.get(0); // FIXME
|
||||
|
||||
StoragePoolVO sp = _storageMgr.getStoragePoolForVm(router.getId());
|
||||
|
||||
HostVO routingHost = (HostVO)_agentMgr.findHost(Host.Type.Routing, dc, pod, sp, _offering, template, router, null, avoid);
|
||||
|
||||
if (routingHost == null) {
|
||||
|
|
@ -2229,8 +2228,7 @@ public class NetworkManagerImpl implements NetworkManager, VirtualMachineManager
|
|||
final boolean mirroredVols = router.isMirroredVols();
|
||||
final DataCenterVO dc = _dcDao.findById(router.getDataCenterId());
|
||||
final HostPodVO pod = _podDao.findById(router.getPodId());
|
||||
List<StoragePoolVO> sps = _storageMgr.getStoragePoolsForVm(router.getId());
|
||||
StoragePoolVO sp = sps.get(0); // FIXME
|
||||
StoragePoolVO sp = _storageMgr.getStoragePoolForVm(router.getId());
|
||||
|
||||
final List<VolumeVO> vols = _volsDao.findCreatedByInstance(routerId);
|
||||
|
||||
|
|
|
|||
|
|
@ -1825,11 +1825,25 @@ public class StorageManagerImpl implements StorageManager {
|
|||
}
|
||||
|
||||
@Override
|
||||
public List<StoragePoolVO> getStoragePoolsForVm(long vmId) {
|
||||
public StoragePoolVO getStoragePoolForVm(long vmId) {
|
||||
SearchCriteria sc = PoolsUsedByVmSearch.create();
|
||||
sc.setJoinParameters("volumes", "vm", vmId);
|
||||
sc.setJoinParameters("volumes", "status", AsyncInstanceCreateStatus.Created.toString());
|
||||
return _storagePoolDao.search(sc, null);
|
||||
List<StoragePoolVO> sps = _storagePoolDao.search(sc, null);
|
||||
if (sps.size() == 0) {
|
||||
throw new RuntimeException("Volume is not created for VM " + vmId);
|
||||
}
|
||||
StoragePoolVO sp = sps.get(0);
|
||||
for (StoragePoolVO tsp : sps) {
|
||||
// use the local storage pool to choose host,
|
||||
// shared storage pool should be in the same cluster as local
|
||||
// storage pool
|
||||
if (tsp.isLocal()) {
|
||||
sp = tsp;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return sp;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -308,8 +308,7 @@ public class SecondaryStorageManagerImpl implements SecondaryStorageVmManager, V
|
|||
|
||||
DataCenterVO dc = _dcDao.findById(secStorageVm.getDataCenterId());
|
||||
HostPodVO pod = _podDao.findById(secStorageVm.getPodId());
|
||||
List<StoragePoolVO> sps = _storageMgr.getStoragePoolsForVm(secStorageVm.getId());
|
||||
StoragePoolVO sp = sps.get(0); // FIXME
|
||||
StoragePoolVO sp = _storageMgr.getStoragePoolForVm(secStorageVm.getId());
|
||||
|
||||
HashSet<Host> avoid = new HashSet<Host>();
|
||||
HostVO routingHost = (HostVO) _agentMgr.findHost(Host.Type.Routing, dc, pod, sp, _serviceOffering, _template, secStorageVm, null, avoid);
|
||||
|
|
@ -1782,8 +1781,7 @@ public class SecondaryStorageManagerImpl implements SecondaryStorageVmManager, V
|
|||
boolean mirroredVols = secStorageVm.isMirroredVols();
|
||||
DataCenterVO dc = _dcDao.findById(secStorageVm.getDataCenterId());
|
||||
HostPodVO pod = _podDao.findById(secStorageVm.getPodId());
|
||||
List<StoragePoolVO> sps = _storageMgr.getStoragePoolsForVm(secStorageVm.getId());
|
||||
StoragePoolVO sp = sps.get(0); // FIXME
|
||||
StoragePoolVO sp = _storageMgr.getStoragePoolForVm(secStorageVm.getId());
|
||||
|
||||
List<VolumeVO> vols = _volsDao.findCreatedByInstance(routerId);
|
||||
|
||||
|
|
|
|||
|
|
@ -626,19 +626,7 @@ public class UserVmManagerImpl implements UserVmManager {
|
|||
DataCenterVO dc = _dcDao.findById(vm.getDataCenterId());
|
||||
HostPodVO pod = _podDao.findById(vm.getPodId());
|
||||
|
||||
List<StoragePoolVO> sps = _storageMgr.getStoragePoolsForVm(vm.getId());
|
||||
if( sps.size() == 0 ) {
|
||||
throw new RuntimeException("Volume is not created for VM " + vm.getName());
|
||||
}
|
||||
StoragePoolVO sp = sps.get(0);
|
||||
for (StoragePoolVO tsp: sps ) {
|
||||
// use the local storage pool to choose host,
|
||||
// shared storage pool should be in the same cluster as local storage pool
|
||||
if( tsp.isLocal()) {
|
||||
sp = tsp;
|
||||
break;
|
||||
}
|
||||
}
|
||||
StoragePoolVO sp = _storageMgr.getStoragePoolForVm(vm.getId());
|
||||
|
||||
VMTemplateVO template = _templateDao.findById(vm.getTemplateId());
|
||||
ServiceOffering offering = _offeringDao.findById(vm.getServiceOfferingId());
|
||||
|
|
@ -1865,9 +1853,7 @@ public class UserVmManagerImpl implements UserVmManager {
|
|||
HostPodVO pod = _podDao.findById(vm.getPodId());
|
||||
ServiceOfferingVO offering = _offeringDao.findById(vm.getServiceOfferingId());
|
||||
VMTemplateVO template = _templateDao.findById(vm.getTemplateId());
|
||||
List<StoragePoolVO> sps = _storageMgr.getStoragePoolsForVm(vm.getId());
|
||||
StoragePoolVO sp = sps.get(0); // FIXME
|
||||
|
||||
StoragePoolVO sp = _storageMgr.getStoragePoolForVm(vm.getId());
|
||||
|
||||
List<VolumeVO> vols = _volsDao.findCreatedByInstance(vmId);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue