package org.ovirt.engine.api.restapi.types; import org.apache.commons.lang.StringUtils; import org.ovirt.engine.api.model.GlusterBrick; import org.ovirt.engine.api.model.GlusterBrickMemoryInfo; import org.ovirt.engine.api.model.GlusterClient; import org.ovirt.engine.api.model.GlusterClients; import org.ovirt.engine.api.model.GlusterMemoryPool; import org.ovirt.engine.api.model.GlusterMemoryPools; import org.ovirt.engine.core.common.businessentities.gluster.BrickDetails; import org.ovirt.engine.core.common.businessentities.gluster.BrickProperties; import org.ovirt.engine.core.common.businessentities.gluster.GlusterClientInfo; import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeAdvancedDetails; import org.ovirt.engine.core.common.businessentities.gluster.MemoryStatus; import org.ovirt.engine.core.common.businessentities.gluster.Mempool; public class GlusterBrickDetailMapper { @Mapping (from=GlusterBrick.class, to=GlusterVolumeAdvancedDetails.class) public static GlusterVolumeAdvancedDetails map(GlusterBrick model, GlusterVolumeAdvancedDetails toEntity) { //AdvancedDetails is a read only from server and no support for setting these. //Hence mapping from REST model to Business entity not required. GlusterVolumeAdvancedDetails entity = (toEntity == null) ? new GlusterVolumeAdvancedDetails() : toEntity; return entity; } @Mapping (from=GlusterVolumeAdvancedDetails.class, to=GlusterBrick.class) public static GlusterBrick map(GlusterVolumeAdvancedDetails fromEntity, GlusterBrick toModel) { GlusterBrick model = (toModel == null) ? new GlusterBrick() : toModel; if (fromEntity.getBrickDetails() == null) { return model; } //Since the getDetails call is for a single brick the list size will always be 1 - so get the first element BrickDetails detail = (fromEntity.getBrickDetails().size() > 0) ? fromEntity.getBrickDetails().get(0) : null; if (detail == null) { return model; } model = mapBrickProperties(detail, model); if (detail.getClients()!= null) { model.setGlusterClients(new GlusterClients()); for (GlusterClientInfo clientEntity : detail.getClients()) { model.getGlusterClients().getGlusterClients().add(map(clientEntity)); } } if (detail.getMemoryStatus() != null && detail.getMemoryStatus().getMemPools() != null) { model.setMemoryPools(new GlusterMemoryPools()); for (Mempool pool: detail.getMemoryStatus().getMemPools()) { model.getMemoryPools().getGlusterMemoryPools().add(map(pool)); } } return model; } private static GlusterBrick mapBrickProperties(BrickDetails detail, GlusterBrick model) { if (detail.getBrickProperties() != null) { BrickProperties props = detail.getBrickProperties(); if (StringUtils.isNotEmpty(props.getDevice())) { model.setDevice(props.getDevice()); } if (StringUtils.isNotEmpty(props.getFsName())) { model.setFsName(props.getFsName()); } if (StringUtils.isNotEmpty(props.getMntOptions())) { model.setMntOptions(props.getMntOptions()); } model.setPid(props.getPid()); model.setPort(props.getPort()); } return model; } @Mapping (from=GlusterClientInfo.class, to=GlusterClient.class) public static GlusterClient map(GlusterClientInfo clientEntity) { GlusterClient clientModel = new GlusterClient(); clientModel.setBytesRead(clientEntity.getBytesRead()); clientModel.setBytesWritten(clientEntity.getBytesWritten()); clientModel.setClientPort(clientEntity.getClientPort()); if (StringUtils.isNotEmpty(clientEntity.getHostname())) { clientModel.setHostName(clientEntity.getHostname()); } return clientModel; } @Mapping (from=MemoryStatus.class, to=GlusterBrickMemoryInfo.class) public static GlusterBrickMemoryInfo map(MemoryStatus memoryStatusEntity) { GlusterBrickMemoryInfo memInfo = new GlusterBrickMemoryInfo(); if (memoryStatusEntity == null) { return null; } memInfo.setMemoryPools(new GlusterMemoryPools()); for (Mempool pool:memoryStatusEntity.getMemPools()) { memInfo.getMemoryPools().getGlusterMemoryPools().add(map(pool)); } return memInfo; } @Mapping (from=Mempool.class, to=GlusterMemoryPool.class) public static GlusterMemoryPool map(Mempool poolEntity) { GlusterMemoryPool poolModel = new GlusterMemoryPool(); if (poolEntity == null) { return null; } if (StringUtils.isNotEmpty(poolEntity.getName())) { poolModel.setName(poolEntity.getName()); } poolModel.setAllocCount(poolEntity.getAllocCount()); poolModel.setColdCount(poolEntity.getColdCount()); poolModel.setHotCount(poolEntity.getHotCount()); poolModel.setMaxAlloc(poolEntity.getMaxAlloc()); poolModel.setMaxStdalloc(poolEntity.getMaxStdAlloc()); poolModel.setPaddedSize(poolEntity.getPadddedSize()); poolModel.setPoolMisses(poolEntity.getPoolMisses()); return poolModel; } }