From a529470b16642b77a39a42da6bbc827a3bf08951 Mon Sep 17 00:00:00 2001 From: Rakesh Date: Wed, 5 Aug 2020 10:32:09 +0200 Subject: [PATCH] server: Fix cpuallocated value in findHostsForMIgration api (#4220) The findHostsForMigration api displays 0% always for cpuallocated field which is wrong. Fixes #4221 --- .../cloud/api/query/dao/HostJoinDaoImpl.java | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/server/src/main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java index 6f16462f4f3..597cc1ca446 100644 --- a/server/src/main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java +++ b/server/src/main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java @@ -190,10 +190,9 @@ public class HostJoinDaoImpl extends GenericDaoBase implements hostResponse.setHypervisorVersion(host.getHypervisorVersion()); - Float cpuWithOverprovisioning = host.getCpus() * host.getSpeed() * ApiDBUtils.getCpuOverprovisioningFactor(host.getClusterId()); - String cpuAlloc = decimalFormat.format(((float)cpu / cpuWithOverprovisioning * 100f)) + "%"; - hostResponse.setCpuAllocated(cpuAlloc); - hostResponse.setCpuWithOverprovisioning(cpuWithOverprovisioning.toString()); + float cpuWithOverprovisioning = host.getCpus() * host.getSpeed() * ApiDBUtils.getCpuOverprovisioningFactor(host.getClusterId()); + hostResponse.setCpuAllocated(calculateResourceAllocatedPercentage(cpu, cpuWithOverprovisioning)); + hostResponse.setCpuWithOverprovisioning(Float.toString(cpuWithOverprovisioning)); } if (details.contains(HostDetails.all) || details.contains(HostDetails.stats)) { @@ -317,7 +316,7 @@ public class HostJoinDaoImpl extends GenericDaoBase implements if (details.contains(HostDetails.all) || details.contains(HostDetails.capacity)) { // set allocated capacities Long mem = host.getMemReservedCapacity() + host.getMemUsedCapacity(); - Long cpu = host.getCpuReservedCapacity() + host.getCpuReservedCapacity(); + Long cpu = host.getCpuReservedCapacity() + host.getCpuUsedCapacity(); hostResponse.setMemoryTotal(host.getTotalMemory()); Float memWithOverprovisioning = host.getTotalMemory() * ApiDBUtils.getMemOverprovisioningFactor(host.getClusterId()); @@ -340,10 +339,9 @@ public class HostJoinDaoImpl extends GenericDaoBase implements hostResponse.setHypervisorVersion(host.getHypervisorVersion()); - Float cpuWithOverprovisioning = new Float(host.getCpus() * host.getSpeed() * ApiDBUtils.getCpuOverprovisioningFactor(host.getClusterId())); - String cpuAlloc = decimalFormat.format(((float)cpu / cpuWithOverprovisioning * 100f)).toString() + "%"; - hostResponse.setCpuAllocated(cpuAlloc); - hostResponse.setCpuWithOverprovisioning(cpuWithOverprovisioning.toString()); + float cpuWithOverprovisioning = host.getCpus() * host.getSpeed() * ApiDBUtils.getCpuOverprovisioningFactor(host.getClusterId()); + hostResponse.setCpuAllocated(calculateResourceAllocatedPercentage(cpu, cpuWithOverprovisioning)); + hostResponse.setCpuWithOverprovisioning(Float.toString(cpuWithOverprovisioning)); } if (details.contains(HostDetails.all) || details.contains(HostDetails.stats)) { @@ -471,4 +469,9 @@ public class HostJoinDaoImpl extends GenericDaoBase implements return listBy(sc); } + private String calculateResourceAllocatedPercentage(float resource, float resourceWithOverProvision) { + DecimalFormat decimalFormat = new DecimalFormat("#.##"); + return decimalFormat.format(((float)resource / resourceWithOverProvision * 100.0f)) + "%"; + } + }