package org.ovirt.engine.core.vdsbroker.vdsbroker; import java.util.Map; import org.ovirt.engine.core.common.businessentities.GlusterDeviceEntity; import org.ovirt.engine.core.common.businessentities.GlusterDeviceEntity.DEVICE_STATUS; import org.ovirt.engine.core.common.businessentities.GlusterDeviceEntity.DEVICE_TYPE; import org.ovirt.engine.core.common.businessentities.GlusterDiskEntity; import org.ovirt.engine.core.common.businessentities.GlusterPartitionEntity; import org.ovirt.engine.core.vdsbroker.irsbroker.StatusReturnForXmlRpc; public class GlusterDiskListReturnForXmlRpc extends StatusReturnForXmlRpc { private static final String GLUSTER_DISKS = "disks"; // We are ignoring missing fields after the status, because on failure it is // not sent. // [XmlRpcMissingMapping(MappingAction.Ignore), XmlRpcMember("disks")] public GlusterDiskEntity[] disks; @SuppressWarnings("unchecked") public GlusterDiskListReturnForXmlRpc(Map<String, Object> innerMap) { super(innerMap); Object[] temp = (Object[]) innerMap.get(GLUSTER_DISKS); if (temp != null) { disks = new GlusterDiskEntity[temp.length]; for (int i = 0; i < temp.length; i++) { disks[i] = prepareDiskEntity((Map<String, Object>)temp[i]); } } } private GlusterDiskEntity prepareDiskEntity(Map<String, Object> map) { GlusterDiskEntity disk = new GlusterDiskEntity(); disk.setDescription(map.get("description").toString()); disk.setDiskInterface(map.get("interface").toString()); disk.setName(map.get("name").toString()); populateDevice(disk, map); Map<String, Object> temp = (Map<String, Object>)map.get("partitions"); for(String partitionName : temp.keySet()) { GlusterPartitionEntity partition = new GlusterPartitionEntity(); partition.setName(partitionName); Map<String, Object> partitionMap = (Map<String, Object>)temp.get(partitionName); populateDevice(partition, partitionMap); } return disk; } private void populateDevice(GlusterDeviceEntity device, Map<String, Object> deviceMap) { device.setFsType(deviceMap.get("fsType").toString()); device.setFsVersion(deviceMap.get("fsVersion").toString()); device.setId(deviceMap.get("uuid").toString()); device.setMountPoint(deviceMap.get("mountPoint").toString()); String diskSize = deviceMap.get("size").toString().trim(); if(!diskSize.isEmpty()) { device.setSpace(Double.valueOf(diskSize)); } String diskSpaceInUse = deviceMap.get("spaceInUse").toString().trim(); if(!diskSpaceInUse.isEmpty()) { device.setSpaceInUse(Double.valueOf(diskSpaceInUse)); } device.setStatus(DEVICE_STATUS.valueOf(deviceMap.get("status").toString())); device.setType(DEVICE_TYPE.valueOf(deviceMap.get("type").toString())); } }