package org.ovirt.engine.ui.frontend.server.dashboard; import java.util.List; import javax.sql.DataSource; import org.ovirt.engine.ui.frontend.server.dashboard.UtilizedEntity.Trend; import org.ovirt.engine.ui.frontend.server.dashboard.dao.HostDwhDao; import org.ovirt.engine.ui.frontend.server.dashboard.dao.StorageDomainDwhDao; import org.ovirt.engine.ui.frontend.server.dashboard.dao.VmDwhDao; import org.ovirt.engine.ui.frontend.server.dashboard.models.TrendResources; public class UtilizationHelper { public static void populateCpuUtilization(Utilization utilization, DataSource dataSource) throws DashboardDataException { populateCpuUtilizationHosts(utilization, dataSource); populateCpuUtilizationVms(utilization, dataSource); } public static void populateCpuUtilizationHosts(Utilization utilization, DataSource dwhDataSource) throws DashboardDataException { HostDwhDao dao = new HostDwhDao(dwhDataSource); List<TrendResources> resourceUsage = dao.getCpuUtilizationHosts(); for(TrendResources usage : resourceUsage) { UtilizedEntity entity = new UtilizedEntity(); entity.setName(usage.getName()); entity.setUsed(usage.getUsed() * usage.getTotal() / 100); entity.setTotal(usage.getTotal()); entity.setTrend(calculateTrend(usage.getUsed(), usage.getPreviousUsed())); utilization.addResource(entity); } } public static void populateCpuUtilizationVms(Utilization utilization, DataSource dwhDataSource) throws DashboardDataException { VmDwhDao dao = new VmDwhDao(dwhDataSource); List<TrendResources> usageList = dao.getCpuUtilizationVms(); for (TrendResources usage: usageList) { UtilizedEntity entity = new UtilizedEntity(); entity.setName(usage.getName()); entity.setUsed(usage.getUsed()); entity.setTotal(usage.getTotal()); entity.setTrend(calculateTrend(usage.getUsed(), usage.getPreviousUsed())); utilization.addVm(entity); } } public static void populateMemoryUtilization(Utilization utilization, DataSource dataSource) throws DashboardDataException { populateMemoryUtilizationHosts(utilization, dataSource); populateMemoryUtilizationVms(utilization, dataSource); } public static void populateMemoryUtilizationHosts(Utilization utilization, DataSource dwhDataSource) throws DashboardDataException { HostDwhDao dao = new HostDwhDao(dwhDataSource); List<TrendResources> usageList = dao.getMemoryUtilizationHosts(); for (TrendResources usage: usageList) { UtilizedEntity entity = new UtilizedEntity(); entity.setName(usage.getName()); //Transform to GB entity.setUsed(usage.getUsed() / 1024); //Transform to GB entity.setTotal(usage.getTotal() / 1024); entity.setTrend(calculateTrend(usage.getUsed(), usage.getPreviousUsed())); utilization.addResource(entity); } } public static void populateMemoryUtilizationVms(Utilization utilization, DataSource dwhDataSource) throws DashboardDataException { VmDwhDao dao = new VmDwhDao(dwhDataSource); List<TrendResources> usageList = dao.getMemoryUtilizationVms(); for (TrendResources usage: usageList) { UtilizedEntity entity = new UtilizedEntity(); entity.setName(usage.getName()); //Transform to GB entity.setUsed(usage.getUsed() / 1024); //Transform to GB entity.setTotal(usage.getTotal() / 1024); entity.setTrend(calculateTrend(usage.getUsed(), usage.getPreviousUsed())); utilization.addVm(entity); } } public static void populateStorageUtilization(Utilization utilization, DataSource dataSource) throws DashboardDataException { populateStorageUtilizationDomains(utilization, dataSource); populateStorageUtilizationVms(utilization, dataSource); } public static void populateStorageUtilizationDomains(Utilization utilization, DataSource dwhDataSource) throws DashboardDataException { StorageDomainDwhDao dao = new StorageDomainDwhDao(dwhDataSource); List<TrendResources> usageList = dao.getStorageDomainUtilization(); for(TrendResources usage: usageList) { UtilizedEntity entity = new UtilizedEntity(); entity.setName(usage.getName()); //Dividing by 1024 to report TB instead of GB entity.setUsed(usage.getUsed() / 1024); entity.setTotal(usage.getTotal() / 1024); entity.setTrend(calculateTrend(usage.getUsed(), usage.getPreviousUsed())); utilization.addResource(entity); } } public static void populateStorageUtilizationVms(Utilization utilization, DataSource dwhDataSource) throws DashboardDataException { StorageDomainDwhDao dao = new StorageDomainDwhDao(dwhDataSource); List<TrendResources> usageList = dao.getStorageUtilizationVms(); for (TrendResources usage: usageList) { UtilizedEntity entity = new UtilizedEntity(); entity.setName(usage.getName()); //Transform GB to TB entity.setUsed(usage.getUsed() / 1024); entity.setTotal(usage.getTotal() / 1024); entity.setTrend(calculateTrend(usage.getUsed() / usage.getTotal() * 100, usage.getPreviousUsed())); utilization.addVm(entity); } } private static Trend calculateTrend(double current, double previous) { Trend result = Trend.UP; if (Math.abs(current - previous) < 0.001) { //If difference is smaller than delta they are the same. result = Trend.SAME; } else if (current < previous) { result = Trend.DOWN; } return result; } }