Repository: cloudstack Updated Branches: refs/heads/master 9e3b825f9 -> 3100fc155
CLOUDSTACK-8438: Proper enforcement of hypervisor capability "max. guest limit" VMs in transition states - Starting, Stopping, Migrating - are also taken into account for enforcing "max. guest limit" Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/3100fc15 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/3100fc15 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/3100fc15 Branch: refs/heads/master Commit: 3100fc15544bd5bdbe8d2eb0a0e429355657b910 Parents: 9e3b825 Author: Koushik Das <[email protected]> Authored: Fri May 1 12:46:24 2015 +0530 Committer: Koushik Das <[email protected]> Committed: Fri May 1 12:49:56 2015 +0530 ---------------------------------------------------------------------- .../src/com/cloud/vm/dao/VMInstanceDao.java | 2 +- .../src/com/cloud/vm/dao/VMInstanceDaoImpl.java | 18 +++++++++--------- .../com/cloud/capacity/CapacityManagerImpl.java | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3100fc15/engine/schema/src/com/cloud/vm/dao/VMInstanceDao.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/vm/dao/VMInstanceDao.java b/engine/schema/src/com/cloud/vm/dao/VMInstanceDao.java index 1e4c8b6..1d522dc 100644 --- a/engine/schema/src/com/cloud/vm/dao/VMInstanceDao.java +++ b/engine/schema/src/com/cloud/vm/dao/VMInstanceDao.java @@ -104,7 +104,7 @@ public interface VMInstanceDao extends GenericDao<VMInstanceVO, Long>, StateDao< List<VMInstanceVO> listVmsMigratingFromHost(Long hostId); - public Long countRunningByHostId(long hostId); + public Long countActiveByHostId(long hostId); Pair<List<Long>, Map<Long, Double>> listClusterIdsInZoneByVmCount(long zoneId, long accountId); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3100fc15/engine/schema/src/com/cloud/vm/dao/VMInstanceDaoImpl.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/vm/dao/VMInstanceDaoImpl.java b/engine/schema/src/com/cloud/vm/dao/VMInstanceDaoImpl.java index 3eabbdb..be0e366 100644 --- a/engine/schema/src/com/cloud/vm/dao/VMInstanceDaoImpl.java +++ b/engine/schema/src/com/cloud/vm/dao/VMInstanceDaoImpl.java @@ -87,7 +87,7 @@ public class VMInstanceDaoImpl extends GenericDaoBase<VMInstanceVO, Long> implem protected SearchBuilder<VMInstanceVO> HostNameSearch; protected SearchBuilder<VMInstanceVO> HostNameAndZoneSearch; protected GenericSearchBuilder<VMInstanceVO, Long> FindIdsOfVirtualRoutersByAccount; - protected GenericSearchBuilder<VMInstanceVO, Long> CountRunningByHost; + protected GenericSearchBuilder<VMInstanceVO, Long> CountActiveByHost; protected GenericSearchBuilder<VMInstanceVO, Long> CountRunningByAccount; protected SearchBuilder<VMInstanceVO> NetworkTypeSearch; protected GenericSearchBuilder<VMInstanceVO, String> DistinctHostNameSearch; @@ -231,11 +231,11 @@ public class VMInstanceDaoImpl extends GenericDaoBase<VMInstanceVO, Long> implem FindIdsOfVirtualRoutersByAccount.and("state", FindIdsOfVirtualRoutersByAccount.entity().getState(), SearchCriteria.Op.NIN); FindIdsOfVirtualRoutersByAccount.done(); - CountRunningByHost = createSearchBuilder(Long.class); - CountRunningByHost.select(null, Func.COUNT, null); - CountRunningByHost.and("host", CountRunningByHost.entity().getHostId(), SearchCriteria.Op.EQ); - CountRunningByHost.and("state", CountRunningByHost.entity().getState(), SearchCriteria.Op.EQ); - CountRunningByHost.done(); + CountActiveByHost = createSearchBuilder(Long.class); + CountActiveByHost.select(null, Func.COUNT, null); + CountActiveByHost.and("host", CountActiveByHost.entity().getHostId(), SearchCriteria.Op.EQ); + CountActiveByHost.and("state", CountActiveByHost.entity().getState(), SearchCriteria.Op.IN); + CountActiveByHost.done(); CountRunningByAccount = createSearchBuilder(Long.class); CountRunningByAccount.select(null, Func.COUNT, null); @@ -530,10 +530,10 @@ public class VMInstanceDaoImpl extends GenericDaoBase<VMInstanceVO, Long> implem } @Override - public Long countRunningByHostId(long hostId) { - SearchCriteria<Long> sc = CountRunningByHost.create(); + public Long countActiveByHostId(long hostId) { + SearchCriteria<Long> sc = CountActiveByHost.create(); sc.setParameters("host", hostId); - sc.setParameters("state", State.Running); + sc.setParameters("state", State.Running, State.Starting, State.Stopping, State.Migrating); return customSearch(sc, null).get(0); } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3100fc15/server/src/com/cloud/capacity/CapacityManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/capacity/CapacityManagerImpl.java b/server/src/com/cloud/capacity/CapacityManagerImpl.java index 2eee865..f8a0e70 100644 --- a/server/src/com/cloud/capacity/CapacityManagerImpl.java +++ b/server/src/com/cloud/capacity/CapacityManagerImpl.java @@ -1052,7 +1052,7 @@ public class CapacityManagerImpl extends ManagerBase implements CapacityManager, @Override public boolean checkIfHostReachMaxGuestLimit(Host host) { - Long vmCount = _vmDao.countRunningByHostId(host.getId()); + Long vmCount = _vmDao.countActiveByHostId(host.getId()); HypervisorType hypervisorType = host.getHypervisorType(); String hypervisorVersion = host.getHypervisorVersion(); Long maxGuestLimit = _hypervisorCapabilitiesDao.getMaxGuestsLimit(hypervisorType, hypervisorVersion);
