mirror of https://github.com/apache/cloudstack.git
fix_filter_and_pagination (#8306)
Co-authored-by: Gabriel <gabriel.fernandes@scclouds.com.br>
This commit is contained in:
parent
f86c62e49a
commit
6f3e4e6302
|
|
@ -449,10 +449,11 @@ public interface ManagementService {
|
|||
* this method removes the child storage pools and adds the corresponding parent datastore cluster for API response listing
|
||||
*
|
||||
* @param Long volumeId
|
||||
* @param String keyword if passed, will only return storage pools that contain this keyword in the name
|
||||
* @return Pair<List<? extends StoragePool>, List<? extends StoragePool>> List of storage pools in cluster and list
|
||||
* of pools with enough capacity.
|
||||
*/
|
||||
Pair<List<? extends StoragePool>, List<? extends StoragePool>> listStoragePoolsForMigrationOfVolume(Long volumeId);
|
||||
Pair<List<? extends StoragePool>, List<? extends StoragePool>> listStoragePoolsForMigrationOfVolume(Long volumeId, String keyword);
|
||||
|
||||
Pair<List<? extends StoragePool>, List<? extends StoragePool>> listStoragePoolsForSystemMigrationOfVolume(Long volumeId, Long newDiskOfferingId, Long newSize, Long newMinIops, Long newMaxIops, boolean keepSourceStoragePool, boolean bypassStorageTypeCheck);
|
||||
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ public class FindStoragePoolsForMigrationCmd extends BaseListCmd {
|
|||
|
||||
@Override
|
||||
public void execute() {
|
||||
Pair<List<? extends StoragePool>, List<? extends StoragePool>> pools = _mgr.listStoragePoolsForMigrationOfVolume(getId());
|
||||
Pair<List<? extends StoragePool>, List<? extends StoragePool>> pools = _mgr.listStoragePoolsForMigrationOfVolume(getId(), getKeyword());
|
||||
ListResponse<StoragePoolResponse> response = new ListResponse<StoragePoolResponse>();
|
||||
List<StoragePoolResponse> poolResponses = new ArrayList<StoragePoolResponse>();
|
||||
|
||||
|
|
@ -87,7 +87,8 @@ public class FindStoragePoolsForMigrationCmd extends BaseListCmd {
|
|||
poolResponses.add(poolResponse);
|
||||
}
|
||||
sortPoolsBySuitabilityAndName(poolResponses);
|
||||
response.setResponses(poolResponses);
|
||||
List<StoragePoolResponse> pagingList = com.cloud.utils.StringUtils.applyPagination(poolResponses, this.getStartIndex(), this.getPageSizeVal());
|
||||
response.setResponses(pagingList, poolResponses.size());
|
||||
response.setResponseName(getCommandName());
|
||||
this.setResponseObject(response);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,9 +52,12 @@ public interface StoragePoolAllocator extends Adapter {
|
|||
* avoid
|
||||
* @param int returnUpTo (use -1 to return all possible pools)
|
||||
* @param boolean bypassStorageTypeCheck allows bypassing useLocalStorage check for provided DiskProfile when true
|
||||
* @param String keyword if passed, will only return storage pools that contain this keyword in the name
|
||||
* @return List<StoragePool> List of storage pools that are suitable for the
|
||||
* VM
|
||||
**/
|
||||
List<StoragePool> allocateToPool(DiskProfile dskCh, VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoid, int returnUpTo, boolean bypassStorageTypeCheck, String keyword);
|
||||
|
||||
List<StoragePool> allocateToPool(DiskProfile dskCh, VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoid, int returnUpTo, boolean bypassStorageTypeCheck);
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -39,6 +39,8 @@ public interface PrimaryDataStoreDao extends GenericDao<StoragePoolVO, Long> {
|
|||
*/
|
||||
List<StoragePoolVO> listBy(long datacenterId, Long podId, Long clusterId, ScopeType scope);
|
||||
|
||||
List<StoragePoolVO> listBy(long datacenterId, Long podId, Long clusterId, ScopeType scope, String keyword);
|
||||
|
||||
/**
|
||||
* Set capacity of storage pool in bytes
|
||||
* @param id pool id.
|
||||
|
|
@ -114,15 +116,19 @@ public interface PrimaryDataStoreDao extends GenericDao<StoragePoolVO, Long> {
|
|||
|
||||
List<StoragePoolVO> findLocalStoragePoolsByTags(long dcId, long podId, Long clusterId, String[] tags, boolean validateTagRule);
|
||||
|
||||
List<StoragePoolVO> findLocalStoragePoolsByTags(long dcId, long podId, Long clusterId, String[] tags, boolean validateTagRule, String keyword);
|
||||
|
||||
List<StoragePoolVO> findZoneWideStoragePoolsByTags(long dcId, String[] tags, boolean validateTagRule);
|
||||
|
||||
List<StoragePoolVO> findZoneWideStoragePoolsByHypervisor(long dataCenterId, HypervisorType hypervisorType);
|
||||
|
||||
List<StoragePoolVO> findZoneWideStoragePoolsByHypervisor(long dataCenterId, HypervisorType hypervisorType, String keyword);
|
||||
|
||||
List<StoragePoolVO> findLocalStoragePoolsByHostAndTags(long hostId, String[] tags);
|
||||
|
||||
List<StoragePoolVO> listLocalStoragePoolByPath(long datacenterId, String path);
|
||||
|
||||
List<StoragePoolVO> findPoolsInClusters(List<Long> clusterIds);
|
||||
List<StoragePoolVO> findPoolsInClusters(List<Long> clusterIds, String keyword);
|
||||
|
||||
void deletePoolTags(long poolId);
|
||||
|
||||
|
|
|
|||
|
|
@ -243,6 +243,11 @@ public class PrimaryDataStoreDaoImpl extends GenericDaoBase<StoragePoolVO, Long>
|
|||
|
||||
@Override
|
||||
public List<StoragePoolVO> listBy(long datacenterId, Long podId, Long clusterId, ScopeType scope) {
|
||||
return listBy(datacenterId, podId, clusterId, scope, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<StoragePoolVO> listBy(long datacenterId, Long podId, Long clusterId, ScopeType scope, String keyword) {
|
||||
SearchCriteria<StoragePoolVO> sc = null;
|
||||
if (clusterId != null) {
|
||||
sc = DcPodSearch.create();
|
||||
|
|
@ -254,6 +259,9 @@ public class PrimaryDataStoreDaoImpl extends GenericDaoBase<StoragePoolVO, Long>
|
|||
sc.setParameters("datacenterId", datacenterId);
|
||||
sc.setParameters("podId", podId);
|
||||
sc.setParameters("status", Status.Up);
|
||||
if (keyword != null) {
|
||||
sc.addAnd("name", Op.LIKE, "%" + keyword + "%");
|
||||
}
|
||||
if (scope != null) {
|
||||
sc.setParameters("scope", scope);
|
||||
}
|
||||
|
|
@ -443,9 +451,14 @@ public class PrimaryDataStoreDaoImpl extends GenericDaoBase<StoragePoolVO, Long>
|
|||
|
||||
@Override
|
||||
public List<StoragePoolVO> findLocalStoragePoolsByTags(long dcId, long podId, Long clusterId, String[] tags, boolean validateTagRule) {
|
||||
return findLocalStoragePoolsByTags(dcId, podId, clusterId, tags, validateTagRule, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<StoragePoolVO> findLocalStoragePoolsByTags(long dcId, long podId, Long clusterId, String[] tags, boolean validateTagRule, String keyword) {
|
||||
List<StoragePoolVO> storagePools = null;
|
||||
if (tags == null || tags.length == 0) {
|
||||
storagePools = listBy(dcId, podId, clusterId, ScopeType.HOST);
|
||||
storagePools = listBy(dcId, podId, clusterId, ScopeType.HOST, keyword);
|
||||
|
||||
if (validateTagRule) {
|
||||
storagePools = getPoolsWithoutTagRule(storagePools);
|
||||
|
|
@ -582,11 +595,19 @@ public class PrimaryDataStoreDaoImpl extends GenericDaoBase<StoragePoolVO, Long>
|
|||
|
||||
@Override
|
||||
public List<StoragePoolVO> findZoneWideStoragePoolsByHypervisor(long dataCenterId, HypervisorType hypervisorType) {
|
||||
return findZoneWideStoragePoolsByHypervisor(dataCenterId, hypervisorType, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<StoragePoolVO> findZoneWideStoragePoolsByHypervisor(long dataCenterId, HypervisorType hypervisorType, String keyword) {
|
||||
QueryBuilder<StoragePoolVO> sc = QueryBuilder.create(StoragePoolVO.class);
|
||||
sc.and(sc.entity().getDataCenterId(), Op.EQ, dataCenterId);
|
||||
sc.and(sc.entity().getStatus(), Op.EQ, Status.Up);
|
||||
sc.and(sc.entity().getScope(), Op.EQ, ScopeType.ZONE);
|
||||
sc.and(sc.entity().getHypervisor(), Op.EQ, hypervisorType);
|
||||
if (keyword != null) {
|
||||
sc.and(sc.entity().getName(), Op.LIKE, "%" + keyword + "%");
|
||||
}
|
||||
return sc.list();
|
||||
}
|
||||
|
||||
|
|
@ -611,10 +632,13 @@ public class PrimaryDataStoreDaoImpl extends GenericDaoBase<StoragePoolVO, Long>
|
|||
}
|
||||
|
||||
@Override
|
||||
public List<StoragePoolVO> findPoolsInClusters(List<Long> clusterIds) {
|
||||
public List<StoragePoolVO> findPoolsInClusters(List<Long> clusterIds, String keyword) {
|
||||
SearchCriteria<StoragePoolVO> sc = ClustersSearch.create();
|
||||
sc.setParameters("clusterIds", clusterIds.toArray());
|
||||
sc.setParameters("status", StoragePoolStatus.Up);
|
||||
if (keyword != null) {
|
||||
sc.addAnd("name", Op.LIKE, "%" + keyword + "%");
|
||||
}
|
||||
return listBy(sc);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -106,16 +106,20 @@ public abstract class AbstractStoragePoolAllocator extends AdapterBase implement
|
|||
return false;
|
||||
}
|
||||
|
||||
protected abstract List<StoragePool> select(DiskProfile dskCh, VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoid, int returnUpTo, boolean bypassStorageTypeCheck);
|
||||
protected abstract List<StoragePool> select(DiskProfile dskCh, VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoid, int returnUpTo, boolean bypassStorageTypeCheck, String keyword);
|
||||
|
||||
@Override
|
||||
public List<StoragePool> allocateToPool(DiskProfile dskCh, VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoid, int returnUpTo) {
|
||||
return allocateToPool(dskCh, vmProfile, plan, avoid, returnUpTo, false);
|
||||
return allocateToPool(dskCh, vmProfile, plan, avoid, returnUpTo, false, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<StoragePool> allocateToPool(DiskProfile dskCh, VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoid, int returnUpTo, boolean bypassStorageTypeCheck) {
|
||||
List<StoragePool> pools = select(dskCh, vmProfile, plan, avoid, returnUpTo, bypassStorageTypeCheck);
|
||||
return allocateToPool(dskCh, vmProfile, plan, avoid, returnUpTo, bypassStorageTypeCheck, null);
|
||||
}
|
||||
|
||||
public List<StoragePool> allocateToPool(DiskProfile dskCh, VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoid, int returnUpTo, boolean bypassStorageTypeCheck, String keyword) {
|
||||
List<StoragePool> pools = select(dskCh, vmProfile, plan, avoid, returnUpTo, bypassStorageTypeCheck, keyword);
|
||||
return reorderPools(pools, vmProfile, plan, dskCh);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ public class ClusterScopeStoragePoolAllocator extends AbstractStoragePoolAllocat
|
|||
DiskOfferingDao _diskOfferingDao;
|
||||
|
||||
@Override
|
||||
protected List<StoragePool> select(DiskProfile dskCh, VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoid, int returnUpTo, boolean bypassStorageTypeCheck) {
|
||||
protected List<StoragePool> select(DiskProfile dskCh, VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoid, int returnUpTo, boolean bypassStorageTypeCheck, String keyword) {
|
||||
logStartOfSearch(dskCh, vmProfile, plan, returnUpTo, bypassStorageTypeCheck);
|
||||
|
||||
if (!bypassStorageTypeCheck && dskCh.useLocalStorage()) {
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ public class GarbageCollectingStoragePoolAllocator extends AbstractStoragePoolAl
|
|||
boolean _storagePoolCleanupEnabled;
|
||||
|
||||
@Override
|
||||
public List<StoragePool> select(DiskProfile dskCh, VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoid, int returnUpTo, boolean bypassStorageTypeCheck) {
|
||||
public List<StoragePool> select(DiskProfile dskCh, VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoid, int returnUpTo, boolean bypassStorageTypeCheck, String keyword) {
|
||||
logStartOfSearch(dskCh, vmProfile, plan, returnUpTo, bypassStorageTypeCheck);
|
||||
if (!_storagePoolCleanupEnabled) {
|
||||
s_logger.debug("Storage pool cleanup is not enabled, so GarbageCollectingStoragePoolAllocator is being skipped.");
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ public class LocalStoragePoolAllocator extends AbstractStoragePoolAllocator {
|
|||
ConfigurationDao _configDao;
|
||||
|
||||
@Override
|
||||
protected List<StoragePool> select(DiskProfile dskCh, VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoid, int returnUpTo, boolean bypassStorageTypeCheck) {
|
||||
protected List<StoragePool> select(DiskProfile dskCh, VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoid, int returnUpTo, boolean bypassStorageTypeCheck, String keyword) {
|
||||
logStartOfSearch(dskCh, vmProfile, plan, returnUpTo, bypassStorageTypeCheck);
|
||||
|
||||
if (!bypassStorageTypeCheck && !dskCh.useLocalStorage()) {
|
||||
|
|
@ -101,7 +101,7 @@ public class LocalStoragePoolAllocator extends AbstractStoragePoolAllocator {
|
|||
return null;
|
||||
}
|
||||
List<StoragePoolVO> availablePools =
|
||||
storagePoolDao.findLocalStoragePoolsByTags(plan.getDataCenterId(), plan.getPodId(), plan.getClusterId(), dskCh.getTags(), true);
|
||||
storagePoolDao.findLocalStoragePoolsByTags(plan.getDataCenterId(), plan.getPodId(), plan.getClusterId(), dskCh.getTags(), true, keyword);
|
||||
availablePools.addAll(storagePoolJoinDao.findStoragePoolByScopeAndRuleTags(plan.getDataCenterId(), plan.getPodId(), plan.getClusterId(), ScopeType.HOST, List.of(dskCh.getTags())));
|
||||
for (StoragePoolVO pool : availablePools) {
|
||||
if (suitablePools.size() == returnUpTo) {
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ public class ZoneWideStoragePoolAllocator extends AbstractStoragePoolAllocator {
|
|||
private CapacityDao capacityDao;
|
||||
|
||||
@Override
|
||||
protected List<StoragePool> select(DiskProfile dskCh, VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoid, int returnUpTo, boolean bypassStorageTypeCheck) {
|
||||
protected List<StoragePool> select(DiskProfile dskCh, VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoid, int returnUpTo, boolean bypassStorageTypeCheck, String keyword) {
|
||||
logStartOfSearch(dskCh, vmProfile, plan, returnUpTo, bypassStorageTypeCheck);
|
||||
|
||||
if (!bypassStorageTypeCheck && dskCh.useLocalStorage()) {
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ public class AbstractStoragePoolAllocatorTest {
|
|||
class MockStorapoolAllocater extends AbstractStoragePoolAllocator {
|
||||
|
||||
@Override
|
||||
protected List<StoragePool> select(DiskProfile dskCh, VirtualMachineProfile vmProfile, DeploymentPlan plan, DeploymentPlanner.ExcludeList avoid, int returnUpTo, boolean bypassStorageTypeCheck) {
|
||||
protected List<StoragePool> select(DiskProfile dskCh, VirtualMachineProfile vmProfile, DeploymentPlan plan, DeploymentPlanner.ExcludeList avoid, int returnUpTo, boolean bypassStorageTypeCheck, String keyword) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ public class RandomStoragePoolAllocator extends AbstractStoragePoolAllocator {
|
|||
private static final Logger s_logger = Logger.getLogger(RandomStoragePoolAllocator.class);
|
||||
|
||||
@Override
|
||||
public List<StoragePool> select(DiskProfile dskCh, VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoid, int returnUpTo, boolean bypassStorageTypeCheck) {
|
||||
public List<StoragePool> select(DiskProfile dskCh, VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoid, int returnUpTo, boolean bypassStorageTypeCheck, String keyword) {
|
||||
logStartOfSearch(dskCh, vmProfile, plan, returnUpTo, bypassStorageTypeCheck);
|
||||
|
||||
List<StoragePool> suitablePools = new ArrayList<StoragePool>();
|
||||
|
|
|
|||
|
|
@ -1630,9 +1630,9 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
|
|||
}
|
||||
|
||||
@Override
|
||||
public Pair<List<? extends StoragePool>, List<? extends StoragePool>> listStoragePoolsForMigrationOfVolume(final Long volumeId) {
|
||||
public Pair<List<? extends StoragePool>, List<? extends StoragePool>> listStoragePoolsForMigrationOfVolume(final Long volumeId, String keyword) {
|
||||
|
||||
Pair<List<? extends StoragePool>, List<? extends StoragePool>> allPoolsAndSuitablePoolsPair = listStoragePoolsForMigrationOfVolumeInternal(volumeId, null, null, null, null, false, true, false);
|
||||
Pair<List<? extends StoragePool>, List<? extends StoragePool>> allPoolsAndSuitablePoolsPair = listStoragePoolsForMigrationOfVolumeInternal(volumeId, null, null, null, null, false, true, false, keyword);
|
||||
List<? extends StoragePool> allPools = allPoolsAndSuitablePoolsPair.first();
|
||||
List<? extends StoragePool> suitablePools = allPoolsAndSuitablePoolsPair.second();
|
||||
List<StoragePool> avoidPools = new ArrayList<>();
|
||||
|
|
@ -1650,10 +1650,10 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
|
|||
|
||||
@Override
|
||||
public Pair<List<? extends StoragePool>, List<? extends StoragePool>> listStoragePoolsForSystemMigrationOfVolume(final Long volumeId, Long newDiskOfferingId, Long newSize, Long newMinIops, Long newMaxIops, boolean keepSourceStoragePool, boolean bypassStorageTypeCheck) {
|
||||
return listStoragePoolsForMigrationOfVolumeInternal(volumeId, newDiskOfferingId, newSize, newMinIops, newMaxIops, keepSourceStoragePool, bypassStorageTypeCheck, true);
|
||||
return listStoragePoolsForMigrationOfVolumeInternal(volumeId, newDiskOfferingId, newSize, newMinIops, newMaxIops, keepSourceStoragePool, bypassStorageTypeCheck, true, null);
|
||||
}
|
||||
|
||||
public Pair<List<? extends StoragePool>, List<? extends StoragePool>> listStoragePoolsForMigrationOfVolumeInternal(final Long volumeId, Long newDiskOfferingId, Long newSize, Long newMinIops, Long newMaxIops, boolean keepSourceStoragePool, boolean bypassStorageTypeCheck, boolean bypassAccountCheck) {
|
||||
public Pair<List<? extends StoragePool>, List<? extends StoragePool>> listStoragePoolsForMigrationOfVolumeInternal(final Long volumeId, Long newDiskOfferingId, Long newSize, Long newMinIops, Long newMaxIops, boolean keepSourceStoragePool, boolean bypassStorageTypeCheck, boolean bypassAccountCheck, String keyword) {
|
||||
if (!bypassAccountCheck) {
|
||||
final Account caller = getCaller();
|
||||
if (!_accountMgr.isRootAdmin(caller.getId())) {
|
||||
|
|
@ -1728,7 +1728,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
|
|||
Pair<Host, List<Cluster>> hostClusterPair = getVolumeVmHostClusters(srcVolumePool, vm, hypervisorType);
|
||||
Host vmHost = hostClusterPair.first();
|
||||
List<Cluster> clusters = hostClusterPair.second();
|
||||
allPools = getAllStoragePoolCompatibleWithVolumeSourceStoragePool(srcVolumePool, hypervisorType, clusters);
|
||||
allPools = getAllStoragePoolCompatibleWithVolumeSourceStoragePool(srcVolumePool, hypervisorType, clusters, keyword);
|
||||
ExcludeList avoid = new ExcludeList();
|
||||
if (!keepSourceStoragePool) {
|
||||
allPools.remove(srcVolumePool);
|
||||
|
|
@ -1736,7 +1736,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
|
|||
}
|
||||
if (vm != null) {
|
||||
suitablePools = findAllSuitableStoragePoolsForVm(volume, diskOfferingId, newSize, newMinIops, newMaxIops, vm, vmHost, avoid,
|
||||
CollectionUtils.isNotEmpty(clusters) ? clusters.get(0) : null, hypervisorType, bypassStorageTypeCheck);
|
||||
CollectionUtils.isNotEmpty(clusters) ? clusters.get(0) : null, hypervisorType, bypassStorageTypeCheck, keyword);
|
||||
} else {
|
||||
suitablePools = findAllSuitableStoragePoolsForDetachedVolume(volume, diskOfferingId, allPools);
|
||||
}
|
||||
|
|
@ -1803,15 +1803,15 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
|
|||
* <li>We also all storage available filtering by data center, pod and cluster as the current storage pool used by the given volume.</li>
|
||||
* </ul>
|
||||
*/
|
||||
private List<? extends StoragePool> getAllStoragePoolCompatibleWithVolumeSourceStoragePool(StoragePool srcVolumePool, HypervisorType hypervisorType, List<Cluster> clusters) {
|
||||
private List<? extends StoragePool> getAllStoragePoolCompatibleWithVolumeSourceStoragePool(StoragePool srcVolumePool, HypervisorType hypervisorType, List<Cluster> clusters, String keyword) {
|
||||
List<StoragePoolVO> storagePools = new ArrayList<>();
|
||||
List<StoragePoolVO> zoneWideStoragePools = _poolDao.findZoneWideStoragePoolsByHypervisor(srcVolumePool.getDataCenterId(), hypervisorType);
|
||||
List<StoragePoolVO> zoneWideStoragePools = _poolDao.findZoneWideStoragePoolsByHypervisor(srcVolumePool.getDataCenterId(), hypervisorType, keyword);
|
||||
if (CollectionUtils.isNotEmpty(zoneWideStoragePools)) {
|
||||
storagePools.addAll(zoneWideStoragePools);
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(clusters)) {
|
||||
List<Long> clusterIds = clusters.stream().map(Cluster::getId).collect(Collectors.toList());
|
||||
List<StoragePoolVO> clusterAndLocalStoragePools = _poolDao.findPoolsInClusters(clusterIds);
|
||||
List<StoragePoolVO> clusterAndLocalStoragePools = _poolDao.findPoolsInClusters(clusterIds, keyword);
|
||||
if (CollectionUtils.isNotEmpty(clusterAndLocalStoragePools)) {
|
||||
storagePools.addAll(clusterAndLocalStoragePools);
|
||||
}
|
||||
|
|
@ -1827,7 +1827,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
|
|||
*
|
||||
* Side note: the idea behind this method is to provide power for administrators of manually overriding deployments defined by CloudStack.
|
||||
*/
|
||||
private List<StoragePool> findAllSuitableStoragePoolsForVm(final VolumeVO volume, Long diskOfferingId, Long newSize, Long newMinIops, Long newMaxIops, VMInstanceVO vm, Host vmHost, ExcludeList avoid, Cluster srcCluster, HypervisorType hypervisorType, boolean bypassStorageTypeCheck) {
|
||||
private List<StoragePool> findAllSuitableStoragePoolsForVm(final VolumeVO volume, Long diskOfferingId, Long newSize, Long newMinIops, Long newMaxIops, VMInstanceVO vm, Host vmHost, ExcludeList avoid, Cluster srcCluster, HypervisorType hypervisorType, boolean bypassStorageTypeCheck, String keyword) {
|
||||
List<StoragePool> suitablePools = new ArrayList<>();
|
||||
Long clusterId = null;
|
||||
Long podId = null;
|
||||
|
|
@ -1849,7 +1849,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
|
|||
}
|
||||
|
||||
for (StoragePoolAllocator allocator : _storagePoolAllocators) {
|
||||
List<StoragePool> pools = allocator.allocateToPool(diskProfile, profile, plan, avoid, StoragePoolAllocator.RETURN_UPTO_ALL, bypassStorageTypeCheck);
|
||||
List<StoragePool> pools = allocator.allocateToPool(diskProfile, profile, plan, avoid, StoragePoolAllocator.RETURN_UPTO_ALL, bypassStorageTypeCheck, keyword);
|
||||
if (CollectionUtils.isEmpty(pools)) {
|
||||
continue;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue