diff --git a/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java b/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java index 20307290ba2a..fa37d6d2ab4e 100644 --- a/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java +++ b/engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java @@ -1979,6 +1979,39 @@ public void updateCapacityOfHosts() { } } + @Override + public void updateCapacityOfHosts() { + Map> hostsByZone = new HashMap<>(); + boolean allHostMemoryValuesAreValid = true; + + List allHosts = _resourceMgr.listAllHostsInAllZonesByType(Host.Type.Routing); + if (CollectionUtils.isEmpty(allHosts)) { + return; + } + + for (HostVO host : allHosts) { + + boolean updateWasSuccessFull = updateHostMemory(host); + + if (! updateWasSuccessFull){ + allHostMemoryValuesAreValid = false; + continue; + } + + Long zoneId = host.getDataCenterId(); + List hostIds = hostsByZone.getOrDefault(zoneId, new ArrayList<>()); + hostIds.add(host.getId()); + hostsByZone.put(zoneId, hostIds); + } + + if (allHostMemoryValuesAreValid) { + sendCommandToAgents(hostsByZone, + hostId -> Collections.singletonMap( + ConfigurationManagerImpl.HOST_RESERVED_MEM_MB.key(), + ConfigurationManagerImpl.HOST_RESERVED_MEM_MB.valueIn(_hostDao.findById(hostId).getClusterId()).toString())); + } + } + private GlobalLock getHostJoinLock(Long hostId) { return GlobalLock.getInternLock(String.format("%s-%s", "Host-Join", hostId)); }