diff --git a/server/src/com/cloud/alert/AlertManagerImpl.java b/server/src/com/cloud/alert/AlertManagerImpl.java index d2ad750c247..2bc5b6c8deb 100755 --- a/server/src/com/cloud/alert/AlertManagerImpl.java +++ b/server/src/com/cloud/alert/AlertManagerImpl.java @@ -42,6 +42,7 @@ import javax.naming.ConfigurationException; import org.apache.log4j.Logger; import com.cloud.alert.dao.AlertDao; +import com.cloud.capacity.CapacityManager; import com.cloud.capacity.CapacityVO; import com.cloud.capacity.dao.CapacityDao; import com.cloud.configuration.Config; @@ -51,6 +52,7 @@ import com.cloud.dc.HostPodVO; import com.cloud.dc.dao.DataCenterDao; import com.cloud.dc.dao.DataCenterIpAddressDao; import com.cloud.dc.dao.HostPodDao; +import com.cloud.host.Host; import com.cloud.host.HostVO; import com.cloud.host.Status; import com.cloud.host.dao.HostDao; @@ -85,8 +87,8 @@ public class AlertManagerImpl implements AlertManager { private EmailAlert _emailAlert; @Inject private AlertDao _alertDao; @Inject private HostDao _hostDao; - @Inject protected StorageManager _storageMgr; - @Inject private ServiceOfferingDao _offeringsDao; + @Inject protected StorageManager _storageMgr; + @Inject protected CapacityManager _capacityMgr; @Inject private CapacityDao _capacityDao; @Inject private DataCenterDao _dcDao; @Inject private HostPodDao _podDao; @@ -239,16 +241,12 @@ public class AlertManagerImpl implements AlertManager { if (s_logger.isTraceEnabled()) { s_logger.trace("recalculating system capacity"); } - - // get all hosts.. - SearchCriteria sc = _hostDao.createSearchCriteria(); - sc.addAnd("status", SearchCriteria.Op.EQ, Status.Up.toString()); - - // prep the service offerings - List offerings = _offeringsDao.listAllIncludingRemoved(); - Map offeringsMap = new HashMap(); - for (ServiceOfferingVO offering : offerings) { - offeringsMap.put(offering.getId(), offering); + + // Calculate CPU and RAM capacitites + // get all hosts...even if they are not in 'UP' state + List hosts = _hostDao.listByType(Host.Type.Routing); + for (HostVO host : hosts) { + _capacityMgr.updateCapacityForHost(host); } // Calculate storage pool capacity @@ -274,9 +272,9 @@ public class AlertManagerImpl implements AlertManager { //ideal way would be to remove out the vlan param, and filter only on dcId //implementing the same - s_logger.trace("Executing capacity update"); + s_logger.trace("Executing public ip capacity update"); createOrUpdateIpCapacity(dcId, null, CapacityVO.CAPACITY_TYPE_PUBLIC_IP); - s_logger.trace("Done with capacity update"); + s_logger.trace("Done with public ip capacity update"); } txn.commit(); @@ -288,9 +286,9 @@ public class AlertManagerImpl implements AlertManager { long podId = pod.getId(); long dcId = pod.getDataCenterId(); - s_logger.trace("Executing capacity update"); + s_logger.trace("Executing private ip capacity update"); createOrUpdateIpCapacity(dcId, podId, CapacityVO.CAPACITY_TYPE_PRIVATE_IP); - s_logger.trace("Done with capacity update"); + s_logger.trace("Done with private ip capacity update"); } txn.commit(); diff --git a/server/src/com/cloud/capacity/CapacityManagerImpl.java b/server/src/com/cloud/capacity/CapacityManagerImpl.java index b0587db7520..9fec5776ee5 100755 --- a/server/src/com/cloud/capacity/CapacityManagerImpl.java +++ b/server/src/com/cloud/capacity/CapacityManagerImpl.java @@ -91,8 +91,6 @@ public class CapacityManagerImpl implements CapacityManager, StateListener params) throws ConfigurationException { _name = name; - _hostCapacityCheckerDelay = NumbersUtil.parseInt(_configDao.getValue(Config.HostCapacityCheckerWait.key()), 3600); - _hostCapacityCheckerInterval = NumbersUtil.parseInt(_configDao.getValue(Config.HostCapacityCheckerInterval.key()), 3600); _vmCapacityReleaseInterval = NumbersUtil.parseInt(_configDao.getValue(Config.CapacitySkipcountingHours.key()), 3600); _storageOverProvisioningFactor = NumbersUtil.parseFloat(_configDao.getValue(Config.StorageOverprovisioningFactor.key()), 1.0f); _cpuOverProvisioningFactor = NumbersUtil.parseFloat(_configDao.getValue(Config.CPUOverprovisioningFactor.key()), 1.0f); @@ -110,7 +108,6 @@ public class CapacityManagerImpl implements CapacityManager, StateListener hosts = _hostDao.listByType(Host.Type.Routing); - for (HostVO host : hosts) { - updateCapacityForHost(host); - } - - } - } @Override public void updateCapacityForHost(HostVO host){ diff --git a/server/src/com/cloud/configuration/Config.java b/server/src/com/cloud/configuration/Config.java index 8dde6271683..71e759f4966 100755 --- a/server/src/com/cloud/configuration/Config.java +++ b/server/src/com/cloud/configuration/Config.java @@ -190,9 +190,7 @@ public enum Config { DirectAttachNetworkExternalAPIURL("Advanced", ManagementServer.class, String.class, "direct.attach.network.externalIpAllocator.url", null, "Direct-attach VMs using external DHCP server (API url)", null), CheckPodCIDRs("Advanced", ManagementServer.class, String.class, "check.pod.cidrs", "true", "If true, different pods must belong to different CIDR subnets.", "true,false"), NetworkGcWait("Advanced", ManagementServer.class, Integer.class, "network.gc.wait", "600", "Time (in seconds) to wait before shutting down a network that's not in used", null), - NetworkGcInterval("Advanced", ManagementServer.class, Integer.class, "network.gc.interval", "600", "Seconds to wait before checking for networks to shutdown", null), - HostCapacityCheckerWait("Advanced", ManagementServer.class, Integer.class, "host.capacity.checker.wait", "3600", "Time (in seconds) to wait before starting host capacity background checker", null), - HostCapacityCheckerInterval("Advanced", ManagementServer.class, Integer.class, "host.capacity.checker.interval", "3600", "Time (in seconds) to wait before recalculating host's capacity", null), + NetworkGcInterval("Advanced", ManagementServer.class, Integer.class, "network.gc.interval", "600", "Seconds to wait before checking for networks to shutdown", null), CapacitySkipcountingHours("Advanced", ManagementServer.class, Integer.class, "capacity.skipcounting.hours", "3600", "Time (in seconds) to wait before release VM's cpu and memory when VM in stopped state", null), VmStatsInterval("Advanced", ManagementServer.class, Integer.class, "vm.stats.interval", "60000", "The interval (in milliseconds) when vm stats are retrieved from agents.", null), VmTransitionWaitInterval("Advanced", ManagementServer.class, Integer.class, "vm.tranisition.wait.interval", "3600", "Time (in seconds) to wait before taking over a VM in transition state", null),