From 913655fcc7a796bfebf2a5b7553664fd5bca9cd8 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Sun, 27 Jul 2025 11:04:48 +0530 Subject: [PATCH] server: fix NaN values for external resource metrics CPU and RAM values for external resource metrics was showing NaN values. This fixes the behaviour. Signed-off-by: Abhishek Kumar --- .../main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 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 fd963179aa2e..66472597f972 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 @@ -207,8 +207,7 @@ private void setNewHostResponseBase(HostJoinVO host, EnumSet detail hostResponse.setMemWithOverprovisioning(decimalFormat.format(memWithOverprovisioning)); hostResponse.setMemoryAllocated(mem); hostResponse.setMemoryAllocatedBytes(mem); - String memoryAllocatedPercentage = decimalFormat.format((float) mem / memWithOverprovisioning * 100.0f) +"%"; - hostResponse.setMemoryAllocatedPercentage(memoryAllocatedPercentage); + hostResponse.setMemoryAllocatedPercentage(calculateResourceAllocatedPercentage(mem, memWithOverprovisioning)); String hostTags = host.getTag(); hostResponse.setHostTags(hostTags); @@ -401,6 +400,9 @@ public List findByClusterId(Long clusterId, Host.Type type) { } private String calculateResourceAllocatedPercentage(float resource, float resourceWithOverProvision) { + if (resource == 0 || resourceWithOverProvision == 0) { + return "0.00%"; + } DecimalFormat decimalFormat = new DecimalFormat("#.##"); return decimalFormat.format(((float)resource / resourceWithOverProvision * 100.0f)) + "%"; }