From eb0fdc2925b09ee521be8aeb7622643e56c968c8 Mon Sep 17 00:00:00 2001 From: frank Date: Thu, 27 Oct 2011 17:46:54 -0700 Subject: [PATCH] allow multiple clusters for baremetal planner fix build --- .../com/cloud/deploy/BareMetalPlanner.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/server/src/com/cloud/deploy/BareMetalPlanner.java b/server/src/com/cloud/deploy/BareMetalPlanner.java index 6d36219e276..02d4b6357d8 100755 --- a/server/src/com/cloud/deploy/BareMetalPlanner.java +++ b/server/src/com/cloud/deploy/BareMetalPlanner.java @@ -36,6 +36,7 @@ import com.cloud.dc.dao.ClusterDao; import com.cloud.dc.dao.DataCenterDao; import com.cloud.dc.dao.HostPodDao; import com.cloud.exception.InsufficientServerCapacityException; +import com.cloud.host.Host; import com.cloud.host.HostVO; import com.cloud.host.Status; import com.cloud.host.dao.HostDao; @@ -87,18 +88,17 @@ public class BareMetalPlanner implements DeploymentPlanner { } } - List clusters = _clusterDao.listByDcHyType(vm.getDataCenterIdToDeployIn(), HypervisorType.BareMetal.toString()); + List clusters = _clusterDao.listByDcHyType(vm.getDataCenterIdToDeployIn(), HypervisorType.BareMetal.toString()); int cpu_requested; long ram_requested; HostVO target = null; - List hosts; + List hosts; for (ClusterVO cluster : clusters) { - hosts = _resourceMgr.listAllHostsInCluster(cluster.getId()); + hosts = _resourceMgr.listAllUpAndEnabledHosts(Host.Type.Routing, cluster.getId(), cluster.getPodId(), cluster.getDataCenterId()); if (hostTag != null) { for (HostVO h : hosts) { _hostDao.loadDetails(h); - if (h.getDetail("hostTag") != null - && h.getDetail("hostTag").equalsIgnoreCase(hostTag)) { + if (h.getDetail("hostTag") != null && h.getDetail("hostTag").equalsIgnoreCase(hostTag)) { target = h; break; } @@ -115,9 +115,10 @@ public class BareMetalPlanner implements DeploymentPlanner { ram_requested = target.getTotalMemory(); } - for (HostVO h : hosts) { - if (h.getStatus() == Status.Up) { - if(_capacityMgr.checkIfHostHasCapacity(h.getId(), cpu_requested, ram_requested, false, cpuOverprovisioningFactor, true)){ + for (ClusterVO cluster : clusters) { + hosts = _resourceMgr.listAllUpAndEnabledHosts(Host.Type.Routing, cluster.getId(), cluster.getPodId(), cluster.getDataCenterId()); + for (HostVO h : hosts) { + if (_capacityMgr.checkIfHostHasCapacity(h.getId(), cpu_requested, ram_requested, false, cpuOverprovisioningFactor, true)) { s_logger.debug("Find host " + h.getId() + " has enough capacity"); DataCenter dc = _dcDao.findById(h.getDataCenterId()); Pod pod = _podDao.findById(h.getPodId()); @@ -125,7 +126,7 @@ public class BareMetalPlanner implements DeploymentPlanner { } } } - + s_logger.warn(String.format("Cannot find enough capacity(requested cpu=%1$s memory=%2$s)", cpu_requested, ram_requested)); return null; }