fix allocation of vmfs storage pools (#10201)

This commit is contained in:
Bernardo De Marco Gonçalves 2025-01-30 14:44:48 -03:00 committed by GitHub
parent 641a60670e
commit a335feab6a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -126,18 +126,24 @@ public abstract class AbstractStoragePoolAllocator extends AdapterBase implement
protected List<StoragePool> reorderPoolsByCapacity(DeploymentPlan plan, List<StoragePool> pools) { protected List<StoragePool> reorderPoolsByCapacity(DeploymentPlan plan, List<StoragePool> pools) {
Long zoneId = plan.getDataCenterId(); Long zoneId = plan.getDataCenterId();
Long clusterId = plan.getClusterId(); Long clusterId = plan.getClusterId();
short capacityType;
if (CollectionUtils.isEmpty(pools)) { if (CollectionUtils.isEmpty(pools)) {
return null; return null;
} }
if (pools.get(0).getPoolType().isShared()) { short capacityType = Capacity.CAPACITY_TYPE_LOCAL_STORAGE;
String storageType = "local";
StoragePool storagePool = pools.get(0);
if (storagePool.isShared()) {
capacityType = Capacity.CAPACITY_TYPE_STORAGE_ALLOCATED; capacityType = Capacity.CAPACITY_TYPE_STORAGE_ALLOCATED;
} else { storageType = "shared";
capacityType = Capacity.CAPACITY_TYPE_LOCAL_STORAGE;
} }
s_logger.debug(String.format(
"Filtering storage pools by capacity type [%s] as the first storage pool of the list, with name [%s] and ID [%s], is a [%s] storage.",
capacityType, storagePool.getName(), storagePool.getUuid(), storageType
));
List<Long> poolIdsByCapacity = capacityDao.orderHostsByFreeCapacity(zoneId, clusterId, capacityType); List<Long> poolIdsByCapacity = capacityDao.orderHostsByFreeCapacity(zoneId, clusterId, capacityType);
s_logger.debug(String.format("List of pools in descending order of available capacity [%s].", poolIdsByCapacity)); s_logger.debug(String.format("List of pools in descending order of available capacity [%s].", poolIdsByCapacity));
@ -223,6 +229,8 @@ public abstract class AbstractStoragePoolAllocator extends AdapterBase implement
} }
List<StoragePool> reorderStoragePoolsBasedOnAlgorithm(List<StoragePool> pools, DeploymentPlan plan, Account account) { List<StoragePool> reorderStoragePoolsBasedOnAlgorithm(List<StoragePool> pools, DeploymentPlan plan, Account account) {
s_logger.debug(String.format("Using allocation algorithm [%s] to reorder pools.", allocationAlgorithm));
if (allocationAlgorithm.equals("random") || allocationAlgorithm.equals("userconcentratedpod_random") || (account == null)) { if (allocationAlgorithm.equals("random") || allocationAlgorithm.equals("userconcentratedpod_random") || (account == null)) {
reorderRandomPools(pools); reorderRandomPools(pools);
} else if (StringUtils.equalsAny(allocationAlgorithm, "userdispersing", "firstfitleastconsumed")) { } else if (StringUtils.equalsAny(allocationAlgorithm, "userdispersing", "firstfitleastconsumed")) {