package org.ovirt.engine.api.restapi.resource; import java.util.List; import org.ovirt.engine.api.model.Host; import org.ovirt.engine.api.model.HostNic; import org.ovirt.engine.api.model.Statistic; import org.ovirt.engine.api.restapi.util.RxTxCalculator; import org.ovirt.engine.core.common.businessentities.network.NetworkStatistics; import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface; import org.ovirt.engine.core.compat.Guid; public class HostNicStatisticalQuery extends AbstractStatisticalQuery<HostNic, VdsNetworkInterface> { private static final Statistic DATA_RX = create("data.current.rx", "Receive data rate", GAUGE, BYTES_PER_SECOND, DECIMAL); private static final Statistic DATA_TX = create("data.current.tx", "Transmit data rate", GAUGE, BYTES_PER_SECOND, DECIMAL); private static final Statistic TOTAL_RX = create("data.total.rx", "Total received data", COUNTER, BYTES, INTEGER); private static final Statistic TOTAL_TX = create("data.total.tx", "Total transmitted data", COUNTER, BYTES, INTEGER); private static final Statistic ERRS_RX = create("errors.total.rx", "Total receive errors", COUNTER, NONE, INTEGER); private static final Statistic ERRS_TX = create("errors.total.tx", "Total transmit errors", COUNTER, NONE, INTEGER); protected HostNicStatisticalQuery(HostNic parent) { this(null, parent); } protected HostNicStatisticalQuery(AbstractBackendResource<HostNic, VdsNetworkInterface>.EntityIdResolver<Guid> entityResolver, HostNic parent) { super(HostNic.class, parent, entityResolver); } @Override public List<Statistic> getStatistics(VdsNetworkInterface iface) { NetworkStatistics s = iface.getStatistics(); return asList(setDatum(clone(DATA_RX), RxTxCalculator.percent2bytes(iface.getSpeed(), s.getReceiveRate())), setDatum(clone(DATA_TX), RxTxCalculator.percent2bytes(iface.getSpeed(), s.getTransmitRate())), setDatum(clone(TOTAL_RX), s.getReceivedBytes()), setDatum(clone(TOTAL_TX), s.getTransmittedBytes()), setDatum(clone(ERRS_RX), s.getReceiveDropRate()), setDatum(clone(ERRS_TX), s.getTransmitDropRate())); } @Override public Statistic adopt(Statistic statistic) { // clone required because LinkHelper unsets the grandparent statistic.setHostNic(clone(parent)); return statistic; } private HostNic clone(HostNic parent) { HostNic nic = new HostNic(); nic.setId(parent.getId()); nic.setHost(new Host()); nic.getHost().setId(parent.getHost().getId()); return nic; } };