package org.ovirt.engine.ui.uicommonweb.models.vms; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.help.HelpTag; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; import org.ovirt.engine.ui.uicommonweb.models.GridTimer; import org.ovirt.engine.ui.uicompat.ConstantsManager; import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs; @SuppressWarnings("unused") public class VmMonitorModel extends EntityModel { private UICommand privateRefreshCommand; public UICommand getRefreshCommand() { return privateRefreshCommand; } private void setRefreshCommand(UICommand value) { privateRefreshCommand = value; } private int cpuUsage; public int getCpuUsage() { return cpuUsage; } public void setCpuUsage(int value) { if (cpuUsage != value) { cpuUsage = value; onPropertyChanged(new PropertyChangedEventArgs("CpuUsage")); //$NON-NLS-1$ } } private int memoryUsage; public int getMemoryUsage() { return memoryUsage; } public void setMemoryUsage(int value) { if (memoryUsage != value) { memoryUsage = value; onPropertyChanged(new PropertyChangedEventArgs("MemoryUsage")); //$NON-NLS-1$ } } private int networkUsage; public int getNetworkUsage() { return networkUsage; } public void setNetworkUsage(int value) { if (networkUsage != value) { networkUsage = value; onPropertyChanged(new PropertyChangedEventArgs("NetworkUsage")); //$NON-NLS-1$ } } private GridTimer refreshTimer; private GridTimer getRefreshTimer() { if (refreshTimer == null) { refreshTimer = new GridTimer("VmMonitorModel", getEventBus()) { //$NON-NLS-1$ @Override public void execute() { refresh(); } }; refreshTimer.setRefreshRate(1000); } return refreshTimer; } public VmMonitorModel() { setTitle(ConstantsManager.getInstance().getConstants().monitorTitle()); setHelpTag(HelpTag.monitor); setHashName("monitor"); //$NON-NLS-1$ setRefreshCommand(new UICommand("Refresh", this)); //$NON-NLS-1$ } @Override public void setEntity(Object value) { super.setEntity(value); if (value != null) { getRefreshTimer().start(); } else { getRefreshTimer().stop(); } } @Override public void executeCommand(UICommand command) { super.executeCommand(command); if (command == getRefreshCommand()) { refresh(); } } private void refresh() { if (getEntity() == null) { return; } VM vm = (VM) getEntity(); AsyncDataProvider.getInstance().getVmById(new AsyncQuery<>(vm1 -> { setCpuUsage(vm1.getUsageCpuPercent() == null ? 0 : vm1.getUsageCpuPercent()); setMemoryUsage(vm1.getUsageMemPercent() == null ? 0 : vm1.getUsageMemPercent()); setNetworkUsage(vm1.getUsageNetworkPercent() == null ? 0 : vm1.getUsageNetworkPercent()); }), vm.getId()); } }