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 <rohit.yadav@shapeblue.com>
This commit is contained in:
Rene Moser 2017-01-31 18:15:12 +01:00 committed by Rohit Yadav
parent ba60718585
commit 05f94b8ef7

View File

@ -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<DynamicProperty> 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"));
}
}
}