From 05f94b8ef76f97f650e5c12f0b7b399ac651a245 Mon Sep 17 00:00:00 2001 From: Rene Moser Date: Tue, 31 Jan 2017 18:15:12 +0100 Subject: [PATCH] Bug fix for CLOUDSTACK-9762 Management Server UI (VM statistics page) CPU Utilized value is incorrect. (cherry picked from commit b676a8a7c3fd554d87afdac6328d9ac5d0265308) Signed-off-by: Rohit Yadav --- .../hypervisor/vmware/resource/VmwareResource.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java index 10f0fd32a8d..0ff50ac2fc4 100644 --- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java +++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java @@ -5073,21 +5073,23 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa final String guestMemUseStr = "summary.quickStats.guestMemoryUsage"; final String memLimitStr = "resourceConfig.memoryAllocation.limit"; final String memMbStr = "config.hardware.memoryMB"; + final String allocatedCpuStr = "summary.runtime.maxCpuUsage"; ObjectContent[] ocs = - hyperHost.getVmPropertiesOnHyperHost(new String[] {"name", numCpuStr, cpuUseStr ,guestMemUseStr ,memLimitStr ,memMbStr, instanceNameCustomField}); + hyperHost.getVmPropertiesOnHyperHost(new String[] {"name", numCpuStr, cpuUseStr ,guestMemUseStr ,memLimitStr ,memMbStr,allocatedCpuStr ,instanceNameCustomField}); if (ocs != null && ocs.length > 0) { for (ObjectContent oc : ocs) { List objProps = oc.getPropSet(); if (objProps != null) { String name = null; String numberCPUs = null; - String maxCpuUsage = null; + double maxCpuUsage = 0; String memlimit = null; String memkb = null; String guestMemusage = null; String vmNameOnVcenter = null; String vmInternalCSName = null; + double allocatedCpu = 0; for (DynamicProperty objProp : objProps) { if (objProp.getName().equals("name")) { vmNameOnVcenter = objProp.getVal().toString(); @@ -5099,13 +5101,17 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa }else if (objProp.getName().equals(numCpuStr)) { numberCPUs = objProp.getVal().toString(); } else if (objProp.getName().equals(cpuUseStr)) { - maxCpuUsage = objProp.getVal().toString(); + maxCpuUsage = NumberUtils.toDouble(objProp.getVal().toString()); } else if (objProp.getName().equals(memLimitStr)) { memlimit = objProp.getVal().toString(); } else if (objProp.getName().equals(memMbStr)) { memkb = objProp.getVal().toString(); + } else if (objProp.getName().equals(allocatedCpuStr)){ + allocatedCpu = NumberUtils.toDouble(objProp.getVal().toString()); } } + + maxCpuUsage = (maxCpuUsage/allocatedCpu)*100; new VirtualMachineMO(hyperHost.getContext(), oc.getObj()); if (vmInternalCSName != null) { name = vmInternalCSName; @@ -5172,7 +5178,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } } } - vmResponseMap.put(name, new VmStatsEntry( NumberUtils.toDouble(memkb)*1024,NumberUtils.toDouble(guestMemusage)*1024,NumberUtils.toDouble(memlimit)*1024, NumberUtils.toDouble(maxCpuUsage), networkReadKBs, networkWriteKBs, NumberUtils.toInt(numberCPUs), "vm")); + vmResponseMap.put(name, new VmStatsEntry( NumberUtils.toDouble(memkb)*1024,NumberUtils.toDouble(guestMemusage)*1024,NumberUtils.toDouble(memlimit)*1024, maxCpuUsage, networkReadKBs, networkWriteKBs, NumberUtils.toInt(numberCPUs), "vm")); } } }