diff --git a/server/src/com/cloud/alert/AlertManagerImpl.java b/server/src/com/cloud/alert/AlertManagerImpl.java index 4f58ef415b5..0368e27b709 100755 --- a/server/src/com/cloud/alert/AlertManagerImpl.java +++ b/server/src/com/cloud/alert/AlertManagerImpl.java @@ -289,7 +289,7 @@ public class AlertManagerImpl implements AlertManager { // Calculate CPU and RAM capacities // get all hosts...even if they are not in 'UP' state - List hosts = _resourceMgr.listAllHostsInAllZonesByType(Host.Type.Routing); + List hosts = _resourceMgr.listAllNotInMaintenanceHostsInOneZone(Host.Type.Routing, null); for (HostVO host : hosts) { _capacityMgr.updateCapacityForHost(host); } diff --git a/server/src/com/cloud/capacity/CapacityManagerImpl.java b/server/src/com/cloud/capacity/CapacityManagerImpl.java index 24465df0278..f13503c7ce7 100755 --- a/server/src/com/cloud/capacity/CapacityManagerImpl.java +++ b/server/src/com/cloud/capacity/CapacityManagerImpl.java @@ -17,6 +17,7 @@ */ package com.cloud.capacity; +import java.net.URI; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -44,7 +45,9 @@ import com.cloud.host.HostVO; import com.cloud.host.Status; import com.cloud.host.dao.HostDao; import com.cloud.offering.ServiceOffering; +import com.cloud.resource.ResourceListener; import com.cloud.resource.ResourceManager; +import com.cloud.resource.ServerResource; import com.cloud.service.ServiceOfferingVO; import com.cloud.service.dao.ServiceOfferingDao; import com.cloud.utils.DateUtil; @@ -63,7 +66,7 @@ import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.dao.VMInstanceDao; @Local(value = CapacityManager.class) -public class CapacityManagerImpl implements CapacityManager, StateListener, Listener { +public class CapacityManagerImpl implements CapacityManager, StateListener, Listener, ResourceListener { private static final Logger s_logger = Logger.getLogger(CapacityManagerImpl.class); String _name; @Inject @@ -107,6 +110,8 @@ public class CapacityManagerImpl implements CapacityManager, StateListener> resources) { + // TODO Auto-generated method stub + + } + + @Override + public void processDiscoverEventBefore(Long dcid, Long podId, + Long clusterId, URI uri, String username, String password, + List hostTags) { + // TODO Auto-generated method stub + + } + + @Override + public void processPrepareMaintenaceEventAfter(Long hostId) { + _capacityDao.removeBy(Capacity.CAPACITY_TYPE_MEMORY, null, null, null, hostId); + _capacityDao.removeBy(Capacity.CAPACITY_TYPE_CPU, null, null, null, hostId); + } + + @Override + public void processPrepareMaintenaceEventBefore(Long hostId) { + // TODO Auto-generated method stub + + } + } diff --git a/server/src/com/cloud/resource/ResourceManager.java b/server/src/com/cloud/resource/ResourceManager.java index e9c79f71ad2..f54b5d7c802 100755 --- a/server/src/com/cloud/resource/ResourceManager.java +++ b/server/src/com/cloud/resource/ResourceManager.java @@ -131,4 +131,6 @@ public interface ResourceManager extends ResourceService{ String getHostTags(long hostId); List listByDataCenter(long dcId); + + List listAllNotInMaintenanceHostsInOneZone(Type type, Long dcId); } diff --git a/server/src/com/cloud/resource/ResourceManagerImpl.java b/server/src/com/cloud/resource/ResourceManagerImpl.java index 85928d7c2ff..a4e86c87b02 100755 --- a/server/src/com/cloud/resource/ResourceManagerImpl.java +++ b/server/src/com/cloud/resource/ResourceManagerImpl.java @@ -1100,7 +1100,7 @@ public class ResourceManagerImpl implements ResourceManager, ResourceService, Ma try { processResourceEvent(ResourceListener.EVENT_PREPARE_MAINTENANCE_BEFORE, hostId); if (maintain(hostId)) { - processResourceEvent(ResourceListener.EVENT_CANCEL_MAINTENANCE_AFTER, hostId); + processResourceEvent(ResourceListener.EVENT_PREPARE_MAINTENANCE_AFTER, hostId); return _hostDao.findById(hostId); } else { throw new CloudRuntimeException("Unable to prepare for maintenance host " + hostId); @@ -1926,6 +1926,17 @@ public class ResourceManagerImpl implements ResourceManager, ResourceService, Ma return sc.list(); } + @Override + public List listAllNotInMaintenanceHostsInOneZone(Type type, Long dcId) { + SearchCriteriaService sc = SearchCriteria2.create(HostVO.class); + if (dcId != null){ + sc.addAnd(sc.getEntity().getDataCenterId(), Op.EQ, dcId); + } + sc.addAnd(sc.getEntity().getType(), Op.EQ, type); + sc.addAnd(sc.getEntity().getResourceState(), Op.NIN, ResourceState.Maintenance, ResourceState.ErrorInMaintenance, ResourceState.PrepareForMaintenance, ResourceState.Error); + return sc.list(); + } + @Override public List listAllHostsInOneZoneByType(Type type, long dcId) { SearchCriteriaService sc = SearchCriteria2.create(HostVO.class);