Repository: cloudstack Updated Branches: refs/heads/4.5 259b2639f -> 04c7cf4e1
CLOUDSTACK-8570:Exception in calculating reserved capacity for dynamic service offering Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/04c7cf4e Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/04c7cf4e Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/04c7cf4e Branch: refs/heads/4.5 Commit: 04c7cf4e15a24f3717223c42a5adafe14404d416 Parents: 259b263 Author: Abhinandan Prateek <abhinandan.prat...@shapeblue.com> Authored: Fri Jun 19 09:24:56 2015 +0530 Committer: Abhinandan Prateek <abhinandan.prat...@shapeblue.com> Committed: Fri Jun 19 09:24:56 2015 +0530 ---------------------------------------------------------------------- .../src/com/cloud/capacity/CapacityManagerImpl.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/04c7cf4e/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 f91a20a..4c715ae 100755 --- a/server/src/com/cloud/capacity/CapacityManagerImpl.java +++ b/server/src/com/cloud/capacity/CapacityManagerImpl.java @@ -645,8 +645,18 @@ public class CapacityManagerImpl extends ManagerBase implements CapacityManager, ramOvercommitRatio = Float.parseFloat(vmDetailRam.getValue()); } ServiceOffering so = offeringsMap.get(vm.getServiceOfferingId()); - reservedMemory += ((so.getRamSize() * 1024L * 1024L) / ramOvercommitRatio) * clusterRamOvercommitRatio; - reservedCpu += (so.getCpu() * so.getSpeed() / cpuOvercommitRatio) * clusterCpuOvercommitRatio; + Map<String, String> vmDetails = _userVmDetailsDao.listDetailsKeyPairs(vm.getId()); + if (so.isDynamic()) { + reservedMemory += + ((Integer.parseInt(vmDetails.get(UsageEventVO.DynamicParameters.memory.name())) * 1024L * 1024L) / ramOvercommitRatio) * + clusterRamOvercommitRatio; + reservedCpu += + ((Integer.parseInt(vmDetails.get(UsageEventVO.DynamicParameters.cpuNumber.name())) * Integer.parseInt(vmDetails.get(UsageEventVO.DynamicParameters.cpuSpeed.name()))) / cpuOvercommitRatio) * + clusterCpuOvercommitRatio; + } else { + reservedMemory += ((so.getRamSize() * 1024L * 1024L) / ramOvercommitRatio) * clusterRamOvercommitRatio; + reservedCpu += (so.getCpu() * so.getSpeed() / cpuOvercommitRatio) * clusterCpuOvercommitRatio; + } } else { // signal if not done already, that the VM has been stopped for skip.counting.hours, // hence capacity will not be reserved anymore.