public List<Statistic> getStatistics(VDS entity) {
VdsStatistics s = entity.getStatisticsData();
long memTotal = entity.getPhysicalMemMb()==null ? 0 : entity.getPhysicalMemMb() * Mb;
long memUsed = (s==null || s.getUsageMemPercent()==null) ? 0 : memTotal * s.getUsageMemPercent() / 100;
List<Statistic> statistics = asList(setDatum(clone(MEM_TOTAL), memTotal),
setDatum(clone(MEM_USED), memUsed),
setDatum(clone(MEM_FREE), memTotal-memUsed),
setDatum(clone(MEM_SHARED), (s==null || s.getMemShared()==null) ? 0 : s.getMemShared()*Mb),
setDatum(clone(MEM_BUFFERS), 0),
setDatum(clone(MEM_CACHED), 0),
setDatum(clone(SWAP_TOTAL), (s==null || s.getSwapTotal()==null) ? 0 : s.getSwapTotal()*Mb),
setDatum(clone(SWAP_FREE), (s==null || s.getSwapFree()==null) ? 0 : s.getSwapFree()*Mb),
setDatum(clone(SWAP_USED), getSwapUsed(s)*Mb),
setDatum(clone(SWAP_CACHED), 0),
setDatum(clone(CPU_KSM), (s==null || s.getKsmCpuPercent()==null) ? 0 : s.getKsmCpuPercent()),
setDatum(clone(CPU_USER), (s==null || s.getCpuUser()==null) ? 0 : s.getCpuUser()),
setDatum(clone(CPU_SYS), (s==null || s.getCpuSys()==null) ? 0 : s.getCpuSys()),
setDatum(clone(CPU_IDLE), (s==null || s.getCpuIdle()==null) ? 0 : s.getCpuIdle()),
setDatum(clone(CPU_LOAD), (s==null || s.getCpuLoad()==null) ? 0 : s.getCpuLoad()/100),
setDatum(clone(BOOT_TIME), (s==null || s.getBootTime()==null) ? 0 : s.getBootTime()));
if (s != null && s.getHugePages() != null) {
s.getHugePages().stream()
.filter(page -> page.getAmount() != null)
.map(this::createHugePagesFree)
.forEach(statistics::add);
}
return statistics;
}