From b936feb108bd4f91a13f735f8ae2d8f47a926525 Mon Sep 17 00:00:00 2001 From: mrunalinikankariya Date: Thu, 3 Aug 2017 04:09:57 +0530 Subject: [PATCH] CLOUDSTACK-9950:listUsageRecords doesnt return required fields (#2137) There is no cpuspeed, cpunumber or memory details in the listUsageRecords output as documented In DB (cloud_usage table) we have cpu_speed, cpu_cores and ram fileds, but these are not populated for all the VM's. These fields are only populated for the VM's which are deployed with custom service offerings. --- .../src/com/cloud/api/ApiResponseHelper.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java index d9fd01cf5fc..80633e11369 100644 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@ -3249,9 +3249,21 @@ public class ApiResponseHelper implements ResponseGenerator { //Hypervisor Type usageRecResponse.setType(usageRecord.getType()); //Dynamic compute offerings details - usageRecResponse.setCpuNumber(usageRecord.getCpuCores()); - usageRecResponse.setCpuSpeed(usageRecord.getCpuSpeed()); - usageRecResponse.setMemory(usageRecord.getMemory()); + if(usageRecord.getCpuCores() != null) { + usageRecResponse.setCpuNumber(usageRecord.getCpuCores()); + } else if (svcOffering.getCpu() != null){ + usageRecResponse.setCpuNumber(svcOffering.getCpu().longValue()); + } + if(usageRecord.getCpuSpeed() != null) { + usageRecResponse.setCpuSpeed(usageRecord.getCpuSpeed()); + } else if(svcOffering.getSpeed() != null){ + usageRecResponse.setCpuSpeed(svcOffering.getSpeed().longValue()); + } + if(usageRecord.getMemory() != null) { + usageRecResponse.setMemory(usageRecord.getMemory()); + } else if(svcOffering.getRamSize() != null) { + usageRecResponse.setMemory(svcOffering.getRamSize().longValue()); + } } else if (usageRecord.getUsageType() == UsageTypes.IP_ADDRESS) { //isSourceNAT