package org.ovirt.engine.api.restapi.resource; import java.util.List; import org.ovirt.engine.api.model.Statistic; import org.ovirt.engine.api.model.VM; import org.ovirt.engine.core.common.businessentities.VmStatistics; public class VmStatisticalQuery extends AbstractStatisticalQuery<VM, org.ovirt.engine.core.common.businessentities.VM> { private static final Statistic MEM_CONFIG = create("memory.installed", "Total memory configured", GAUGE, BYTES, INTEGER); private static final Statistic MEM_USED = create("memory.used", "Memory used (agent)", GAUGE, BYTES, INTEGER); private static final Statistic CPU_GUEST = create("cpu.current.guest", "CPU used by guest", GAUGE, PERCENT, DECIMAL); private static final Statistic CPU_OVERHEAD = create("cpu.current.hypervisor", "CPU overhead", GAUGE, PERCENT, DECIMAL); private static final Statistic CPU_TOTAL = create("cpu.current.total", "Total CPU used", GAUGE, PERCENT, DECIMAL); protected VmStatisticalQuery(VM parent) { this(null, parent); } protected VmStatisticalQuery(AbstractBackendResource<VM, org.ovirt.engine.core.common.businessentities.VM>.EntityIdResolver entityResolver, VM parent) { super(VM.class, parent, entityResolver); } public List<Statistic> getStatistics(org.ovirt.engine.core.common.businessentities.VM entity) { VmStatistics s = entity.getStatisticsData(); long mem = entity.getmem_size_mb() * Mb; long memUsedByCent = s.getusage_mem_percent()==null ? 0 : mem * s.getusage_mem_percent(); Double cpuUser = s.getcpu_user()==null ? 0 : s.getcpu_user(); Double cpuSys = s.getcpu_sys()==null ? 0 : s.getcpu_sys(); return asList(setDatum(clone(MEM_CONFIG), mem), setDatum(clone(MEM_USED), (int)(memUsedByCent/100)), setDatum(clone(CPU_GUEST), cpuUser), setDatum(clone(CPU_OVERHEAD), cpuSys), setDatum(clone(CPU_TOTAL), cpuUser + cpuSys)); } public Statistic adopt(Statistic statistic) { statistic.setVm(parent); return statistic; } }