mirror of https://github.com/apache/cloudstack.git
CS-18506: stopped vm cant start after disable threshold has been reached
Changes: - Do not do the stoarge capacity check for a VM having READY Volumes that are already present on the storagepool.
This commit is contained in:
parent
2814d2360e
commit
7ba48e7c65
|
|
@ -310,7 +310,8 @@ public class DeploymentPlanningManagerImpl extends ManagerBase implements Deploy
|
|||
List<Host> suitableHosts = new ArrayList<Host>();
|
||||
suitableHosts.add(host);
|
||||
Pair<Host, Map<Volume, StoragePool>> potentialResources = findPotentialDeploymentResources(
|
||||
suitableHosts, suitableVolumeStoragePools, avoids, getPlannerUsage(planner,vmProfile, plan ,avoids));
|
||||
suitableHosts, suitableVolumeStoragePools, avoids,
|
||||
getPlannerUsage(planner, vmProfile, plan, avoids), readyAndReusedVolumes);
|
||||
if (potentialResources != null) {
|
||||
Pod pod = _podDao.findById(host.getPodId());
|
||||
Cluster cluster = _clusterDao.findById(host.getClusterId());
|
||||
|
|
@ -370,7 +371,8 @@ public class DeploymentPlanningManagerImpl extends ManagerBase implements Deploy
|
|||
List<Host> suitableHosts = new ArrayList<Host>();
|
||||
suitableHosts.add(host);
|
||||
Pair<Host, Map<Volume, StoragePool>> potentialResources = findPotentialDeploymentResources(
|
||||
suitableHosts, suitableVolumeStoragePools, avoids, getPlannerUsage(planner,vmProfile, plan ,avoids));
|
||||
suitableHosts, suitableVolumeStoragePools, avoids,
|
||||
getPlannerUsage(planner, vmProfile, plan, avoids), readyAndReusedVolumes);
|
||||
if (potentialResources != null) {
|
||||
Pod pod = _podDao.findById(host.getPodId());
|
||||
Cluster cluster = _clusterDao.findById(host.getClusterId());
|
||||
|
|
@ -888,7 +890,8 @@ public class DeploymentPlanningManagerImpl extends ManagerBase implements Deploy
|
|||
// choose the potential host and pool for the VM
|
||||
if (!suitableVolumeStoragePools.isEmpty()) {
|
||||
Pair<Host, Map<Volume, StoragePool>> potentialResources = findPotentialDeploymentResources(
|
||||
suitableHosts, suitableVolumeStoragePools, avoid, resourceUsageRequired);
|
||||
suitableHosts, suitableVolumeStoragePools, avoid, resourceUsageRequired,
|
||||
readyAndReusedVolumes);
|
||||
|
||||
if (potentialResources != null) {
|
||||
Pod pod = _podDao.findById(clusterVO.getPodId());
|
||||
|
|
@ -1016,11 +1019,16 @@ public class DeploymentPlanningManagerImpl extends ManagerBase implements Deploy
|
|||
}
|
||||
protected Pair<Host, Map<Volume, StoragePool>> findPotentialDeploymentResources(List<Host> suitableHosts,
|
||||
Map<Volume, List<StoragePool>> suitableVolumeStoragePools, ExcludeList avoid,
|
||||
DeploymentPlanner.PlannerResourceUsage resourceUsageRequired) {
|
||||
DeploymentPlanner.PlannerResourceUsage resourceUsageRequired, List<Volume> readyAndReusedVolumes) {
|
||||
s_logger.debug("Trying to find a potenial host and associated storage pools from the suitable host/pool lists for this VM");
|
||||
|
||||
boolean hostCanAccessPool = false;
|
||||
boolean haveEnoughSpace = false;
|
||||
|
||||
if (readyAndReusedVolumes == null) {
|
||||
readyAndReusedVolumes = new ArrayList<Volume>();
|
||||
}
|
||||
|
||||
Map<Volume, StoragePool> storage = new HashMap<Volume, StoragePool>();
|
||||
TreeSet<Volume> volumesOrderBySizeDesc = new TreeSet<Volume>(new Comparator<Volume>() {
|
||||
@Override
|
||||
|
|
@ -1044,7 +1052,7 @@ public class DeploymentPlanningManagerImpl extends ManagerBase implements Deploy
|
|||
for (StoragePool potentialSPool : volumePoolList) {
|
||||
if (hostCanAccessSPool(potentialHost, potentialSPool)) {
|
||||
hostCanAccessPool = true;
|
||||
if (multipleVolume) {
|
||||
if (multipleVolume && !readyAndReusedVolumes.contains(vol)) {
|
||||
List<Volume> requestVolumes = null;
|
||||
if (volumeAllocationMap.containsKey(potentialSPool))
|
||||
requestVolumes = volumeAllocationMap.get(potentialSPool);
|
||||
|
|
|
|||
Loading…
Reference in New Issue