diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java index 9981c87fc90..99199b3969c 100755 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@ -765,11 +765,21 @@ public class ApiResponseHelper implements ResponseGenerator { if (showCapacities != null && showCapacities){ List capacities = ApiDBUtils.getCapacityByClusterPodZone(null,pod.getId(),null); Set capacityResponses = new HashSet(); + float cpuOverprovisioningFactor = ApiDBUtils.getCpuOverprovisioningFactor(); + for (SummedCapacity capacity : capacities){ CapacityResponse capacityResponse = new CapacityResponse(); capacityResponse.setCapacityType(capacity.getCapacityType()); capacityResponse.setCapacityUsed(capacity.getUsedCapacity()); - capacityResponse.setCapacityTotal(capacity.getTotalCapacity()); + if (capacity.getCapacityType() == Capacity.CAPACITY_TYPE_CPU){ + capacityResponse.setCapacityTotal(new Long((long)(capacity.getTotalCapacity()*cpuOverprovisioningFactor))); + }else if(capacity.getCapacityType() == Capacity.CAPACITY_TYPE_STORAGE_ALLOCATED){ + List c = ApiDBUtils.findNonSharedStorageForClusterPodZone(null, pod.getId() ,null); + capacityResponse.setCapacityTotal(capacity.getTotalCapacity() - c.get(0).getTotalCapacity()); + capacityResponse.setCapacityUsed(capacity.getUsedCapacity() - c.get(0).getUsedCapacity()); + }else{ + capacityResponse.setCapacityTotal(capacity.getTotalCapacity()); + } capacityResponses.add(capacityResponse); } podResponse.setCapacitites(new ArrayList(capacityResponses)); @@ -802,11 +812,21 @@ public class ApiResponseHelper implements ResponseGenerator { if (showCapacities != null && showCapacities){ List capacities = ApiDBUtils.getCapacityByClusterPodZone(dataCenter.getId(),null,null); Set capacityResponses = new HashSet(); + float cpuOverprovisioningFactor = ApiDBUtils.getCpuOverprovisioningFactor(); + for (SummedCapacity capacity : capacities){ CapacityResponse capacityResponse = new CapacityResponse(); capacityResponse.setCapacityType(capacity.getCapacityType()); capacityResponse.setCapacityUsed(capacity.getUsedCapacity()); - capacityResponse.setCapacityTotal(capacity.getTotalCapacity()); + if (capacity.getCapacityType() == Capacity.CAPACITY_TYPE_CPU){ + capacityResponse.setCapacityTotal(new Long((long)(capacity.getTotalCapacity()*cpuOverprovisioningFactor))); + }else if(capacity.getCapacityType() == Capacity.CAPACITY_TYPE_STORAGE_ALLOCATED){ + List c = ApiDBUtils.findNonSharedStorageForClusterPodZone(dataCenter.getId(), null ,null); + capacityResponse.setCapacityTotal(capacity.getTotalCapacity() - c.get(0).getTotalCapacity()); + capacityResponse.setCapacityUsed(capacity.getUsedCapacity() - c.get(0).getUsedCapacity()); + }else{ + capacityResponse.setCapacityTotal(capacity.getTotalCapacity()); + } capacityResponses.add(capacityResponse); } zoneResponse.setCapacitites(new ArrayList(capacityResponses));