mirror of https://github.com/apache/cloudstack.git
refactor to retrieve host count and cpu sockets in single query
Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
This commit is contained in:
parent
c885464c71
commit
aae3a0a0b8
|
|
@ -27,6 +27,7 @@ import com.cloud.hypervisor.Hypervisor;
|
|||
import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
||||
import com.cloud.info.RunningHostCountInfo;
|
||||
import com.cloud.resource.ResourceState;
|
||||
import com.cloud.utils.Pair;
|
||||
import com.cloud.utils.db.GenericDao;
|
||||
import com.cloud.utils.fsm.StateDao;
|
||||
|
||||
|
|
@ -45,7 +46,7 @@ public interface HostDao extends GenericDao<HostVO, Long>, StateDao<Status, Stat
|
|||
|
||||
Integer countUpAndEnabledHostsInZone(long zoneId);
|
||||
|
||||
Integer countAllCPUSockets();
|
||||
Pair<Integer, Integer> countAllHostsAndCPUSocketsByType(Type type);
|
||||
|
||||
/**
|
||||
* Mark all hosts associated with a certain management server
|
||||
|
|
|
|||
|
|
@ -58,6 +58,7 @@ import com.cloud.org.Grouping;
|
|||
import com.cloud.org.Managed;
|
||||
import com.cloud.resource.ResourceState;
|
||||
import com.cloud.utils.DateUtil;
|
||||
import com.cloud.utils.Pair;
|
||||
import com.cloud.utils.db.Attribute;
|
||||
import com.cloud.utils.db.DB;
|
||||
import com.cloud.utils.db.Filter;
|
||||
|
|
@ -515,13 +516,16 @@ public class HostDaoImpl extends GenericDaoBase<HostVO, Long> implements HostDao
|
|||
}
|
||||
|
||||
@Override
|
||||
public Integer countAllCPUSockets() {
|
||||
GenericSearchBuilder<HostVO, Integer> sb = createSearchBuilder(Integer.class);
|
||||
public Pair<Integer, Integer> countAllHostsAndCPUSocketsByType(Type type) {
|
||||
GenericSearchBuilder<HostVO, SumCount> sb = createSearchBuilder(SumCount.class);
|
||||
sb.select("sum", Func.SUM, sb.entity().getCpuSockets());
|
||||
sb.select("count", Func.COUNT, null);
|
||||
sb.and("type", sb.entity().getType(), SearchCriteria.Op.EQ);
|
||||
sb.select(null, Func.SUM, sb.entity().getCpuSockets());
|
||||
sb.done();
|
||||
SearchCriteria<Integer> sc = sb.create();
|
||||
return customSearch(sc, null).get(0);
|
||||
SearchCriteria<SumCount> sc = sb.create();
|
||||
sc.setParameters("type", type);
|
||||
SumCount result = customSearch(sc, null).get(0);
|
||||
return new Pair<>((int)result.count, (int)result.sum);
|
||||
}
|
||||
|
||||
private List<Long> listIdsForRoutingByZoneIdAndResourceState(long zoneId, ResourceState state) {
|
||||
|
|
|
|||
|
|
@ -554,14 +554,6 @@ public class VolumeDaoImpl extends GenericDaoBase<VolumeVO, Long> implements Vol
|
|||
}
|
||||
}
|
||||
|
||||
public static class SumCount {
|
||||
public long sum;
|
||||
public long count;
|
||||
|
||||
public SumCount() {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<VolumeVO> listVolumesToBeDestroyed() {
|
||||
SearchCriteria<VolumeVO> sc = AllFieldsSearch.create();
|
||||
|
|
|
|||
|
|
@ -2417,4 +2417,11 @@ public abstract class GenericDaoBase<T, ID extends Serializable> extends Compone
|
|||
}
|
||||
}
|
||||
|
||||
public static class SumCount {
|
||||
public long sum;
|
||||
public long count;
|
||||
|
||||
public SumCount() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -555,14 +555,15 @@ public class MetricsServiceImpl extends MutualExclusiveIdsManagerBase implements
|
|||
response.setZones(dataCenterDao.countAll());
|
||||
response.setPods(podDao.countAll());
|
||||
response.setClusters(clusterDao.countAll());
|
||||
response.setHosts(hostDao.countAllByType(Host.Type.Routing));
|
||||
Pair<Integer, Integer> hostCountAndCpuSockets = hostDao.countAllHostsAndCPUSocketsByType(Host.Type.Routing);
|
||||
response.setHosts(hostCountAndCpuSockets.first());
|
||||
response.setStoragePools(storagePoolDao.countAll());
|
||||
response.setImageStores(imageStoreDao.countAllImageStores());
|
||||
response.setSystemvms(vmInstanceDao.countByTypes(VirtualMachine.Type.ConsoleProxy, VirtualMachine.Type.SecondaryStorageVm));
|
||||
response.setRouters(domainRouterDao.countAllByRole(VirtualRouter.Role.VIRTUAL_ROUTER));
|
||||
response.setInternalLbs(domainRouterDao.countAllByRole(VirtualRouter.Role.INTERNAL_LB_VM));
|
||||
response.setAlerts(alertDao.countAll());
|
||||
response.setCpuSockets(hostDao.countAllCPUSockets());
|
||||
response.setCpuSockets(hostCountAndCpuSockets.second());
|
||||
response.setManagementServers(managementServerHostDao.countAll());
|
||||
return response;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -105,7 +105,6 @@ import com.cloud.storage.dao.DiskOfferingDao;
|
|||
import com.cloud.storage.dao.SnapshotDao;
|
||||
import com.cloud.storage.dao.VMTemplateDao;
|
||||
import com.cloud.storage.dao.VolumeDao;
|
||||
import com.cloud.storage.dao.VolumeDaoImpl.SumCount;
|
||||
import com.cloud.template.VirtualMachineTemplate;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.user.AccountManager;
|
||||
|
|
@ -118,6 +117,7 @@ import com.cloud.utils.concurrency.NamedThreadFactory;
|
|||
import com.cloud.utils.db.DB;
|
||||
import com.cloud.utils.db.EntityManager;
|
||||
import com.cloud.utils.db.Filter;
|
||||
import com.cloud.utils.db.GenericDaoBase.SumCount;
|
||||
import com.cloud.utils.db.GenericSearchBuilder;
|
||||
import com.cloud.utils.db.GlobalLock;
|
||||
import com.cloud.utils.db.JoinBuilder;
|
||||
|
|
|
|||
Loading…
Reference in New Issue