package org.ovirt.engine.ui.frontend.server.dashboard.dao;
import javax.sql.DataSource;
import org.ovirt.engine.core.common.businessentities.gluster.GlusterStatus;
import org.ovirt.engine.ui.frontend.server.dashboard.DashboardDataException;
import org.ovirt.engine.ui.frontend.server.dashboard.InventoryStatus;
public class GlusterVolumeEngineDao extends BaseDao {
private static final String STATUS = "status"; //$NON-NLS-1$
private static final String BRICKS_NOT_UP = "bricks_not_up"; //$NON-NLS-1$
private static final String GLUSTER_VOLUME_INVENTORY = "glusterVolume.inventory"; //$NON-NLS-1$
public GlusterVolumeEngineDao(DataSource engineDataSource) throws DashboardDataException {
super(engineDataSource, "GlusterVolumeEngineDAO.properties", GlusterVolumeEngineDao.class); //$NON-NLS-1$
}
public InventoryStatus getVolumeInventoryStatus() throws DashboardDataException {
final InventoryStatus result = new InventoryStatus();
runQuery(GLUSTER_VOLUME_INVENTORY,
rs -> processVolumeStatus(result, rs.getString(STATUS), rs.getInt(BRICKS_NOT_UP)));
return result;
}
private InventoryStatus processVolumeStatus(InventoryStatus summary, String status, int bricksNotUp) {
summary.addCount();
GlusterStatus volumeStatus = GlusterStatus.valueOf(status);
if (GlusterStatus.UP == volumeStatus && bricksNotUp > 0) {
summary.addStatus(GlusterStatus.WARNING.name().toLowerCase());
} else {
summary.addStatus(volumeStatus.name().toLowerCase());
}
return summary;
}
}