Skip to content

Commit 3100fc1

Browse files
committed
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"
1 parent 9e3b825 commit 3100fc1

3 files changed

Lines changed: 11 additions & 11 deletions

File tree

engine/schema/src/com/cloud/vm/dao/VMInstanceDao.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ public interface VMInstanceDao extends GenericDao<VMInstanceVO, Long>, StateDao<
104104

105105
List<VMInstanceVO> listVmsMigratingFromHost(Long hostId);
106106

107-
public Long countRunningByHostId(long hostId);
107+
public Long countActiveByHostId(long hostId);
108108

109109
Pair<List<Long>, Map<Long, Double>> listClusterIdsInZoneByVmCount(long zoneId, long accountId);
110110

engine/schema/src/com/cloud/vm/dao/VMInstanceDaoImpl.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public class VMInstanceDaoImpl extends GenericDaoBase<VMInstanceVO, Long> implem
8787
protected SearchBuilder<VMInstanceVO> HostNameSearch;
8888
protected SearchBuilder<VMInstanceVO> HostNameAndZoneSearch;
8989
protected GenericSearchBuilder<VMInstanceVO, Long> FindIdsOfVirtualRoutersByAccount;
90-
protected GenericSearchBuilder<VMInstanceVO, Long> CountRunningByHost;
90+
protected GenericSearchBuilder<VMInstanceVO, Long> CountActiveByHost;
9191
protected GenericSearchBuilder<VMInstanceVO, Long> CountRunningByAccount;
9292
protected SearchBuilder<VMInstanceVO> NetworkTypeSearch;
9393
protected GenericSearchBuilder<VMInstanceVO, String> DistinctHostNameSearch;
@@ -231,11 +231,11 @@ protected void init() {
231231
FindIdsOfVirtualRoutersByAccount.and("state", FindIdsOfVirtualRoutersByAccount.entity().getState(), SearchCriteria.Op.NIN);
232232
FindIdsOfVirtualRoutersByAccount.done();
233233

234-
CountRunningByHost = createSearchBuilder(Long.class);
235-
CountRunningByHost.select(null, Func.COUNT, null);
236-
CountRunningByHost.and("host", CountRunningByHost.entity().getHostId(), SearchCriteria.Op.EQ);
237-
CountRunningByHost.and("state", CountRunningByHost.entity().getState(), SearchCriteria.Op.EQ);
238-
CountRunningByHost.done();
234+
CountActiveByHost = createSearchBuilder(Long.class);
235+
CountActiveByHost.select(null, Func.COUNT, null);
236+
CountActiveByHost.and("host", CountActiveByHost.entity().getHostId(), SearchCriteria.Op.EQ);
237+
CountActiveByHost.and("state", CountActiveByHost.entity().getState(), SearchCriteria.Op.IN);
238+
CountActiveByHost.done();
239239

240240
CountRunningByAccount = createSearchBuilder(Long.class);
241241
CountRunningByAccount.select(null, Func.COUNT, null);
@@ -530,10 +530,10 @@ public List<VMInstanceVO> listVmsMigratingFromHost(Long hostId) {
530530
}
531531

532532
@Override
533-
public Long countRunningByHostId(long hostId) {
534-
SearchCriteria<Long> sc = CountRunningByHost.create();
533+
public Long countActiveByHostId(long hostId) {
534+
SearchCriteria<Long> sc = CountActiveByHost.create();
535535
sc.setParameters("host", hostId);
536-
sc.setParameters("state", State.Running);
536+
sc.setParameters("state", State.Running, State.Starting, State.Stopping, State.Migrating);
537537
return customSearch(sc, null).get(0);
538538
}
539539

server/src/com/cloud/capacity/CapacityManagerImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1052,7 +1052,7 @@ public void processPrepareMaintenaceEventBefore(Long hostId) {
10521052

10531053
@Override
10541054
public boolean checkIfHostReachMaxGuestLimit(Host host) {
1055-
Long vmCount = _vmDao.countRunningByHostId(host.getId());
1055+
Long vmCount = _vmDao.countActiveByHostId(host.getId());
10561056
HypervisorType hypervisorType = host.getHypervisorType();
10571057
String hypervisorVersion = host.getHypervisorVersion();
10581058
Long maxGuestLimit = _hypervisorCapabilitiesDao.getMaxGuestsLimit(hypervisorType, hypervisorVersion);

0 commit comments

Comments
 (0)