} else {
totalOverProvCapacity = storagePool.getCapacityBytes();
}
if (capacities.size() == 0) {
CapacityVO capacity = new CapacityVO(storagePool.getId(), storagePool.getDataCenterId(), storagePool.getPodId(),
storagePool.getClusterId(), allocated, totalOverProvCapacity, capacityType);
if (storagePool.getScope() == ScopeType.ZONE) {
DataCenterVO dc = ApiDBUtils.findZoneById(storagePool.getDataCenterId());
AllocationState allocationState = dc.getAllocationState();
CapacityState capacityState = (allocationState == AllocationState.Disabled) ? CapacityState.Disabled
: CapacityState.Enabled;
capacity.setCapacityState(capacityState);
} else {
if (storagePool.getClusterId() != null) {
ClusterVO cluster = ApiDBUtils.findClusterById(storagePool.getClusterId());
if (cluster != null) {
AllocationState allocationState = _configMgr.findClusterAllocationState(cluster);
CapacityState capacityState = (allocationState == AllocationState.Disabled) ? CapacityState.Disabled
: CapacityState.Enabled;
capacity.setCapacityState(capacityState);
}
}
}
_capacityDao.persist(capacity);
} else {
CapacityVO capacity = capacities.get(0);
boolean update = false;
if (capacity.getTotalCapacity() != totalOverProvCapacity) {
capacity.setTotalCapacity(totalOverProvCapacity);
update = true;
}
if (allocated != 0) {
capacity.setUsedCapacity(allocated);
update = true;
}
if (update) {
_capacityDao.update(capacity.getId(), capacity);
}
}
s_logger.debug("Successfully set Capacity - " + totalOverProvCapacity + " for capacity type - " + capacityType + " , DataCenterId - "
+ storagePool.getDataCenterId() + ", HostOrPoolId - " + storagePool.getId() + ", PodId " + storagePool.getPodId());
}