mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
bug 10848: ListCapacity - Full rework. This fixes the pagination logic and the capacities are visible till the cluster level.
This commit is contained in:
parent
cfebce78b0
commit
9c20c1b1b6
@ -1,97 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (C) 2010 Cloud.com, Inc. All rights reserved.
|
|
||||||
*
|
|
||||||
* This software is licensed under the GNU General Public License v3 or later.
|
|
||||||
*
|
|
||||||
* It is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or any later version.
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.cloud.api.commands;
|
|
||||||
|
|
||||||
import java.text.DecimalFormat;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
|
||||||
|
|
||||||
import com.cloud.api.ApiConstants;
|
|
||||||
import com.cloud.api.BaseListCmd;
|
|
||||||
import com.cloud.api.Implementation;
|
|
||||||
import com.cloud.api.Parameter;
|
|
||||||
import com.cloud.api.response.CapacityResponse;
|
|
||||||
import com.cloud.api.response.ListResponse;
|
|
||||||
import com.cloud.capacity.Capacity;
|
|
||||||
|
|
||||||
@Implementation(description="Lists capacity By Type.", responseObject=CapacityResponse.class)
|
|
||||||
public class ListCapacityByTypeCmd extends BaseListCmd {
|
|
||||||
|
|
||||||
public static final Logger s_logger = Logger.getLogger(ListCapacityCmd.class.getName());
|
|
||||||
private static final DecimalFormat s_percentFormat = new DecimalFormat("##.##");
|
|
||||||
|
|
||||||
private static final String s_name = "listcapacityresponse";
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////
|
|
||||||
//////////////// API parameters /////////////////////
|
|
||||||
/////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
@Parameter(name=ApiConstants.TYPE, type=CommandType.INTEGER, required=true, description="lists capacity by type")
|
|
||||||
private Integer type;
|
|
||||||
|
|
||||||
@Parameter(name=ApiConstants.CLUSTER_ID, type=CommandType.LONG, description="lists capacity by the Cluster ID")
|
|
||||||
private Long clusterId;
|
|
||||||
|
|
||||||
@Parameter(name=ApiConstants.POD_ID, type=CommandType.LONG, description="lists capacity by the Pod ID")
|
|
||||||
private Long podId;
|
|
||||||
|
|
||||||
@Parameter(name=ApiConstants.ZONE_ID, type=CommandType.LONG, required=true, description="lists capacity by the Zone ID")
|
|
||||||
private Long zoneId;
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////
|
|
||||||
/////////////////// Accessors ///////////////////////
|
|
||||||
/////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
public Integer getType() {
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getClusterId() {
|
|
||||||
return clusterId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getPodId() {
|
|
||||||
return podId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getZoneId() {
|
|
||||||
return zoneId;
|
|
||||||
}
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////
|
|
||||||
/////////////// API Implementation///////////////////
|
|
||||||
/////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getCommandName() {
|
|
||||||
return s_name;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute(){
|
|
||||||
List<? extends Capacity> result = _mgr.listCapacityByType(this);
|
|
||||||
ListResponse<CapacityResponse> response = new ListResponse<CapacityResponse>();
|
|
||||||
List<CapacityResponse> capacityResponses = _responseGenerator.createCapacityResponse(result, s_percentFormat);
|
|
||||||
response.setResponses(capacityResponses);
|
|
||||||
response.setResponseName(getCommandName());
|
|
||||||
this.setResponseObject(response);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -27,6 +27,7 @@ import com.cloud.api.ApiConstants;
|
|||||||
import com.cloud.api.BaseListCmd;
|
import com.cloud.api.BaseListCmd;
|
||||||
import com.cloud.api.Implementation;
|
import com.cloud.api.Implementation;
|
||||||
import com.cloud.api.Parameter;
|
import com.cloud.api.Parameter;
|
||||||
|
import com.cloud.api.BaseCmd.CommandType;
|
||||||
import com.cloud.api.response.CapacityResponse;
|
import com.cloud.api.response.CapacityResponse;
|
||||||
import com.cloud.api.response.ListResponse;
|
import com.cloud.api.response.ListResponse;
|
||||||
import com.cloud.capacity.Capacity;
|
import com.cloud.capacity.Capacity;
|
||||||
@ -43,12 +44,15 @@ public class ListCapacityCmd extends BaseListCmd {
|
|||||||
//////////////// API parameters /////////////////////
|
//////////////// API parameters /////////////////////
|
||||||
/////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////
|
||||||
|
|
||||||
@Parameter(name=ApiConstants.HOST_ID, type=CommandType.LONG, description="lists capacity by the Host ID")
|
@Parameter(name=ApiConstants.ZONE_ID, type=CommandType.LONG, required=true, description="lists capacity by the Zone ID")
|
||||||
private Long hostId;
|
private Long zoneId;
|
||||||
|
|
||||||
@Parameter(name=ApiConstants.POD_ID, type=CommandType.LONG, description="lists capacity by the Pod ID")
|
@Parameter(name=ApiConstants.POD_ID, type=CommandType.LONG, description="lists capacity by the Pod ID")
|
||||||
private Long podId;
|
private Long podId;
|
||||||
|
|
||||||
|
@Parameter(name=ApiConstants.CLUSTER_ID, type=CommandType.LONG, description="lists capacity by the Cluster ID")
|
||||||
|
private Long clusterId;
|
||||||
|
|
||||||
@Parameter(name=ApiConstants.TYPE, type=CommandType.INTEGER, description="lists capacity by type" +
|
@Parameter(name=ApiConstants.TYPE, type=CommandType.INTEGER, description="lists capacity by type" +
|
||||||
"* CAPACITY_TYPE_MEMORY = 0" +
|
"* CAPACITY_TYPE_MEMORY = 0" +
|
||||||
"* CAPACITY_TYPE_CPU = 1" +
|
"* CAPACITY_TYPE_CPU = 1" +
|
||||||
@ -60,29 +64,26 @@ public class ListCapacityCmd extends BaseListCmd {
|
|||||||
|
|
||||||
private Integer type;
|
private Integer type;
|
||||||
|
|
||||||
@Parameter(name=ApiConstants.ZONE_ID, type=CommandType.LONG, description="lists capacity by the Zone ID")
|
|
||||||
private Long zoneId;
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////
|
||||||
/////////////////// Accessors ///////////////////////
|
/////////////////// Accessors ///////////////////////
|
||||||
/////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////
|
||||||
|
|
||||||
public Long getHostId() {
|
public Long getZoneId() {
|
||||||
return hostId;
|
return zoneId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Long getPodId() {
|
public Long getPodId() {
|
||||||
return podId;
|
return podId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Long getClusterId() {
|
||||||
|
return clusterId;
|
||||||
|
}
|
||||||
|
|
||||||
public Integer getType() {
|
public Integer getType() {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Long getZoneId() {
|
|
||||||
return zoneId;
|
|
||||||
}
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////
|
||||||
/////////////// API Implementation///////////////////
|
/////////////// API Implementation///////////////////
|
||||||
|
|||||||
@ -34,7 +34,6 @@ import com.cloud.api.commands.ListAccountsCmd;
|
|||||||
import com.cloud.api.commands.ListAlertsCmd;
|
import com.cloud.api.commands.ListAlertsCmd;
|
||||||
import com.cloud.api.commands.ListAsyncJobsCmd;
|
import com.cloud.api.commands.ListAsyncJobsCmd;
|
||||||
import com.cloud.api.commands.ListCapabilitiesCmd;
|
import com.cloud.api.commands.ListCapabilitiesCmd;
|
||||||
import com.cloud.api.commands.ListCapacityByTypeCmd;
|
|
||||||
import com.cloud.api.commands.ListCapacityCmd;
|
import com.cloud.api.commands.ListCapacityCmd;
|
||||||
import com.cloud.api.commands.ListCfgsByCmd;
|
import com.cloud.api.commands.ListCfgsByCmd;
|
||||||
import com.cloud.api.commands.ListClustersCmd;
|
import com.cloud.api.commands.ListClustersCmd;
|
||||||
@ -278,14 +277,6 @@ public interface ManagementService {
|
|||||||
*/
|
*/
|
||||||
List<? extends Capacity> listCapacities(ListCapacityCmd cmd);
|
List<? extends Capacity> listCapacities(ListCapacityCmd cmd);
|
||||||
|
|
||||||
/**
|
|
||||||
* lists the capacity rows in capacity operations table
|
|
||||||
*
|
|
||||||
* @param cmd
|
|
||||||
* @return List of capacities
|
|
||||||
*/
|
|
||||||
List<? extends Capacity> listCapacityByType(ListCapacityByTypeCmd cmd);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List the permissions on a template. This will return a list of account names that have been granted permission to launch
|
* List the permissions on a template. This will return a list of account names that have been granted permission to launch
|
||||||
* instances from the template.
|
* instances from the template.
|
||||||
|
|||||||
@ -242,7 +242,7 @@ public class AlertManagerImpl implements AlertManager {
|
|||||||
s_logger.trace("recalculating system capacity");
|
s_logger.trace("recalculating system capacity");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calculate CPU and RAM capacitites
|
// Calculate CPU and RAM capacities
|
||||||
// get all hosts...even if they are not in 'UP' state
|
// get all hosts...even if they are not in 'UP' state
|
||||||
List<HostVO> hosts = _hostDao.listByType(Host.Type.Routing);
|
List<HostVO> hosts = _hostDao.listByType(Host.Type.Routing);
|
||||||
for (HostVO host : hosts) {
|
for (HostVO host : hosts) {
|
||||||
@ -460,6 +460,11 @@ public class AlertManagerImpl implements AlertManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void newAlertSystem(){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
class EmailAlert {
|
class EmailAlert {
|
||||||
private Session _smtpSession;
|
private Session _smtpSession;
|
||||||
private InternetAddress[] _recipientList;
|
private InternetAddress[] _recipientList;
|
||||||
|
|||||||
@ -1869,8 +1869,8 @@ public class ApiResponseHelper implements ResponseGenerator {
|
|||||||
@Override
|
@Override
|
||||||
public List<CapacityResponse> createCapacityResponse(List<? extends Capacity> result, DecimalFormat format) {
|
public List<CapacityResponse> createCapacityResponse(List<? extends Capacity> result, DecimalFormat format) {
|
||||||
List<CapacityResponse> capacityResponses = new ArrayList<CapacityResponse>();
|
List<CapacityResponse> capacityResponses = new ArrayList<CapacityResponse>();
|
||||||
List<CapacityVO> summedCapacities = sumCapacities(result);
|
//List<CapacityVO> summedCapacities = sumCapacities(result);
|
||||||
for (CapacityVO summedCapacity : summedCapacities) {
|
for (Capacity summedCapacity : result) {
|
||||||
CapacityResponse capacityResponse = new CapacityResponse();
|
CapacityResponse capacityResponse = new CapacityResponse();
|
||||||
capacityResponse.setCapacityTotal(summedCapacity.getTotalCapacity());
|
capacityResponse.setCapacityTotal(summedCapacity.getTotalCapacity());
|
||||||
capacityResponse.setCapacityType(summedCapacity.getCapacityType());
|
capacityResponse.setCapacityType(summedCapacity.getCapacityType());
|
||||||
|
|||||||
@ -28,10 +28,9 @@ public interface CapacityDao extends GenericDao<CapacityVO, Long> {
|
|||||||
CapacityVO findByHostIdType(Long hostId, short capacityType);
|
CapacityVO findByHostIdType(Long hostId, short capacityType);
|
||||||
List<Long> listClustersInZoneOrPodByHostCapacities(long id, int requiredCpu, long requiredRam, short capacityTypeForOrdering, boolean isZone, float cpuOverprovisioningFactor);
|
List<Long> listClustersInZoneOrPodByHostCapacities(long id, int requiredCpu, long requiredRam, short capacityTypeForOrdering, boolean isZone, float cpuOverprovisioningFactor);
|
||||||
List<Long> listHostsWithEnoughCapacity(int requiredCpu, long requiredRam, Long clusterId, String hostType, float cpuOverprovisioningFactor);
|
List<Long> listHostsWithEnoughCapacity(int requiredCpu, long requiredRam, Long clusterId, String hostType, float cpuOverprovisioningFactor);
|
||||||
List<SummedCapacity> findCapacityByType(Integer capacityType, Long zoneId, Long podId,
|
|
||||||
Long clusterId, Long startIndex, Long pageSize);
|
|
||||||
boolean removeBy(Short capacityType, Long zoneId, Long podId, Long clusterId);
|
boolean removeBy(Short capacityType, Long zoneId, Long podId, Long clusterId);
|
||||||
List<SummedCapacity> findByClusterPodZone(Long zoneId, Long podId, Long clusterId);
|
List<SummedCapacity> findByClusterPodZone(Long zoneId, Long podId, Long clusterId);
|
||||||
List<SummedCapacity> findNonSharedStorageForClusterPodZone(Long zoneId,Long podId, Long clusterId);
|
List<SummedCapacity> findNonSharedStorageForClusterPodZone(Long zoneId,Long podId, Long clusterId);
|
||||||
List<Long> orderClustersByAggregateCapacity(long id, short capacityType, boolean isZone, float cpuOverprovisioningFactor);
|
List<Long> orderClustersByAggregateCapacity(long id, short capacityType, boolean isZone, float cpuOverprovisioningFactor);
|
||||||
|
List<SummedCapacity> findCapacityBy(Integer capacityType, Long zoneId, Long podId, Long clusterId);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -94,16 +94,16 @@ public class CapacityDaoImpl extends GenericDaoBase<CapacityVO, Long> implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<SummedCapacity> findCapacityByType(Integer capacityType, Long zoneId, Long podId, Long clusterId, Long startIndex, Long pageSize){
|
public List<SummedCapacity> findCapacityBy(Integer capacityType, Long zoneId, Long podId, Long clusterId){
|
||||||
|
|
||||||
SummedCapacitySearch = createSearchBuilder(SummedCapacity.class);
|
SummedCapacitySearch = createSearchBuilder(SummedCapacity.class);
|
||||||
SummedCapacitySearch.select("sumUsed", Func.SUM, SummedCapacitySearch.entity().getUsedCapacity());
|
SummedCapacitySearch.select("sumUsed", Func.SUM, SummedCapacitySearch.entity().getUsedCapacity());
|
||||||
|
SummedCapacitySearch.select("sumReserved", Func.SUM, SummedCapacitySearch.entity().getReservedCapacity());
|
||||||
SummedCapacitySearch.select("sumTotal", Func.SUM, SummedCapacitySearch.entity().getTotalCapacity());
|
SummedCapacitySearch.select("sumTotal", Func.SUM, SummedCapacitySearch.entity().getTotalCapacity());
|
||||||
SummedCapacitySearch.select("clusterId", Func.NATIVE, SummedCapacitySearch.entity().getClusterId());
|
SummedCapacitySearch.select("capacityType", Func.SUM, SummedCapacitySearch.entity().getCapacityType());
|
||||||
SummedCapacitySearch.select("podId", Func.NATIVE, SummedCapacitySearch.entity().getPodId());
|
|
||||||
|
|
||||||
SummedCapacitySearch.and("dcId", SummedCapacitySearch.entity().getDataCenterId(), Op.EQ);
|
SummedCapacitySearch.and("dcId", SummedCapacitySearch.entity().getDataCenterId(), Op.EQ);
|
||||||
SummedCapacitySearch.groupBy(SummedCapacitySearch.entity().getClusterId(), SummedCapacitySearch.entity().getCapacityType());
|
SummedCapacitySearch.groupBy(SummedCapacitySearch.entity().getCapacityType());
|
||||||
|
|
||||||
if (podId != null){
|
if (podId != null){
|
||||||
SummedCapacitySearch.and("podId", SummedCapacitySearch.entity().getPodId(), Op.EQ);
|
SummedCapacitySearch.and("podId", SummedCapacitySearch.entity().getPodId(), Op.EQ);
|
||||||
@ -130,7 +130,7 @@ public class CapacityDaoImpl extends GenericDaoBase<CapacityVO, Long> implements
|
|||||||
sc.setParameters("capacityType", capacityType);
|
sc.setParameters("capacityType", capacityType);
|
||||||
}
|
}
|
||||||
|
|
||||||
Filter filter = new Filter(CapacityVO.class, null, true, startIndex, pageSize);
|
Filter filter = new Filter(CapacityVO.class, null, true, null, null);
|
||||||
List<SummedCapacity> results = customSearchIncludingRemoved(sc, filter);
|
List<SummedCapacity> results = customSearchIncludingRemoved(sc, filter);
|
||||||
return results;
|
return results;
|
||||||
|
|
||||||
@ -242,6 +242,7 @@ public class CapacityDaoImpl extends GenericDaoBase<CapacityVO, Long> implements
|
|||||||
|
|
||||||
public static class SummedCapacity {
|
public static class SummedCapacity {
|
||||||
public long sumUsed;
|
public long sumUsed;
|
||||||
|
public long sumReserved;
|
||||||
public long sumTotal;
|
public long sumTotal;
|
||||||
public short capacityType;
|
public short capacityType;
|
||||||
public long clusterId;
|
public long clusterId;
|
||||||
@ -254,6 +255,9 @@ public class CapacityDaoImpl extends GenericDaoBase<CapacityVO, Long> implements
|
|||||||
public Long getUsedCapacity() {
|
public Long getUsedCapacity() {
|
||||||
return sumUsed;
|
return sumUsed;
|
||||||
}
|
}
|
||||||
|
public long getSumReserved() {
|
||||||
|
return sumReserved;
|
||||||
|
}
|
||||||
public Long getTotalCapacity() {
|
public Long getTotalCapacity() {
|
||||||
return sumTotal;
|
return sumTotal;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -67,7 +67,6 @@ import com.cloud.api.commands.ListAccountsCmd;
|
|||||||
import com.cloud.api.commands.ListAlertsCmd;
|
import com.cloud.api.commands.ListAlertsCmd;
|
||||||
import com.cloud.api.commands.ListAsyncJobsCmd;
|
import com.cloud.api.commands.ListAsyncJobsCmd;
|
||||||
import com.cloud.api.commands.ListCapabilitiesCmd;
|
import com.cloud.api.commands.ListCapabilitiesCmd;
|
||||||
import com.cloud.api.commands.ListCapacityByTypeCmd;
|
|
||||||
import com.cloud.api.commands.ListCapacityCmd;
|
import com.cloud.api.commands.ListCapacityCmd;
|
||||||
import com.cloud.api.commands.ListCfgsByCmd;
|
import com.cloud.api.commands.ListCfgsByCmd;
|
||||||
import com.cloud.api.commands.ListClustersCmd;
|
import com.cloud.api.commands.ListClustersCmd;
|
||||||
@ -2462,54 +2461,31 @@ public class ManagementServerImpl implements ManagementServer {
|
|||||||
return _alertDao.search(sc, searchFilter);
|
return _alertDao.search(sc, searchFilter);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<CapacityVO> listCapacityByType(ListCapacityByTypeCmd cmd) {
|
|
||||||
|
|
||||||
List<SummedCapacity> results = _capacityDao.findCapacityByType(cmd.getType(), cmd.getZoneId(), cmd.getPodId(), cmd.getClusterId(), cmd.getStartIndex(), cmd.getPageSizeVal());
|
|
||||||
for (SummedCapacity sum : results){
|
|
||||||
s_logger.info("Total - " +sum.sumTotal+ " Used - " +sum.sumUsed+ " cluster " +sum.clusterId+ " pod " +sum.podId);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<CapacityVO> listCapacities(ListCapacityCmd cmd) {
|
public List<CapacityVO> listCapacities(ListCapacityCmd cmd) {
|
||||||
|
|
||||||
Filter searchFilter = new Filter(CapacityVO.class, "capacityType", true, null, null);
|
Integer capacityType = cmd.getType();
|
||||||
SearchCriteria<CapacityVO> sc = _capacityDao.createSearchCriteria();
|
|
||||||
List<CapacityVO> capacities = new LinkedList<CapacityVO>();
|
|
||||||
|
|
||||||
Integer type = cmd.getType();
|
|
||||||
Long zoneId = cmd.getZoneId();
|
Long zoneId = cmd.getZoneId();
|
||||||
Long podId = cmd.getPodId();
|
Long podId = cmd.getPodId();
|
||||||
Long hostId = cmd.getHostId();
|
Long clusterId = cmd.getClusterId();
|
||||||
|
|
||||||
zoneId = _accountMgr.checkAccessAndSpecifyAuthority(UserContext.current().getCaller(), zoneId);
|
zoneId = _accountMgr.checkAccessAndSpecifyAuthority(UserContext.current().getCaller(), zoneId);
|
||||||
|
List<SummedCapacity> summedCapacities = _capacityDao.findCapacityBy(capacityType, zoneId, podId, clusterId);
|
||||||
|
List<CapacityVO> capacities = new ArrayList<CapacityVO>();
|
||||||
|
|
||||||
if (type != null) {
|
for (SummedCapacity summedCapacity : summedCapacities){
|
||||||
sc.addAnd("capacityType", SearchCriteria.Op.EQ, type);
|
CapacityVO capacity = new CapacityVO(null, zoneId, podId, clusterId,
|
||||||
}
|
summedCapacity.getUsedCapacity(), summedCapacity.getTotalCapacity(), summedCapacity.getCapacityType());
|
||||||
|
|
||||||
if (zoneId != null) {
|
capacities.add(capacity);
|
||||||
sc.addAnd("dataCenterId", SearchCriteria.Op.EQ, zoneId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (podId != null) {
|
|
||||||
sc.addAnd("podId", SearchCriteria.Op.EQ, podId);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hostId != null) {
|
|
||||||
sc.addAnd("hostOrPoolId", SearchCriteria.Op.EQ, hostId);
|
|
||||||
}
|
|
||||||
capacities = _capacityDao.search(sc, searchFilter);
|
|
||||||
|
|
||||||
// op_host_Capacity contains only allocated stats and the real time stats are stored "in memory".
|
// op_host_Capacity contains only allocated stats and the real time stats are stored "in memory".
|
||||||
if (type == null || type == Capacity.CAPACITY_TYPE_SECONDARY_STORAGE) {
|
if (capacityType == null || capacityType == Capacity.CAPACITY_TYPE_SECONDARY_STORAGE) {
|
||||||
capacities.addAll(_storageMgr.getSecondaryStorageUsedStats(hostId, podId, zoneId));
|
capacities.addAll(_storageMgr.getSecondaryStorageUsedStats(null, podId, zoneId));
|
||||||
}
|
}
|
||||||
if (type == null || type == Capacity.CAPACITY_TYPE_STORAGE) {
|
if (capacityType == null || capacityType == Capacity.CAPACITY_TYPE_STORAGE) {
|
||||||
capacities.addAll(_storageMgr.getStoragePoolUsedStats(hostId, podId, zoneId));
|
capacities.addAll(_storageMgr.getStoragePoolUsedStats(null, podId, zoneId));
|
||||||
}
|
}
|
||||||
|
|
||||||
return capacities;
|
return capacities;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user