Merge pull request #830 from sureshanaparti/CLOUDSTACK-8858

CLOUDSTACK-8858: listVolumes API fails for a particular domain with NPE.CLOUDSTACK-8858: listVolumes API fails for a particular domain with NPE.

Summary: listVolumes API fails when volume associated vm instance has NULL or invalid state. Fix the code to guard this situation since this should not block volume listing.

* pr/830:
  CLOUDSTACK-8858: listVolumes API fails for a particular domain with NPE.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
This commit is contained in:
Rohit Yadav 2016-01-27 15:56:06 +01:00
commit f280bbe9e4
1 changed files with 12 additions and 4 deletions

View File

@ -81,14 +81,18 @@ public class VolumeJoinDaoImpl extends GenericDaoBase<VolumeJoinVO, Long> implem
volResponse.setZoneId(volume.getDataCenterUuid());
volResponse.setZoneName(volume.getDataCenterName());
volResponse.setVolumeType(volume.getVolumeType().toString());
if (volume.getVolumeType() != null) {
volResponse.setVolumeType(volume.getVolumeType().toString());
}
volResponse.setDeviceId(volume.getDeviceId());
long instanceId = volume.getVmId();
if (instanceId > 0 && volume.getState() != Volume.State.Destroy) {
volResponse.setVirtualMachineId(volume.getVmUuid());
volResponse.setVirtualMachineName(volume.getVmName());
volResponse.setVirtualMachineState(volume.getVmState().toString());
if (volume.getVmState() != null) {
volResponse.setVirtualMachineState(volume.getVmState().toString());
}
if (volume.getVmDisplayName() != null) {
volResponse.setVirtualMachineDisplayName(volume.getVmDisplayName());
} else {
@ -96,7 +100,9 @@ public class VolumeJoinDaoImpl extends GenericDaoBase<VolumeJoinVO, Long> implem
}
}
volResponse.setProvisioningType(volume.getProvisioningType().toString());
if (volume.getProvisioningType() != null) {
volResponse.setProvisioningType(volume.getProvisioningType().toString());
}
// Show the virtual size of the volume
volResponse.setSize(volume.getSize());
@ -105,7 +111,9 @@ public class VolumeJoinDaoImpl extends GenericDaoBase<VolumeJoinVO, Long> implem
volResponse.setMaxIops(volume.getMaxIops());
volResponse.setCreated(volume.getCreated());
volResponse.setState(volume.getState().toString());
if (volume.getState() != null) {
volResponse.setState(volume.getState().toString());
}
if (volume.getState() == Volume.State.UploadOp) {
// com.cloud.storage.VolumeHostVO volumeHostRef =
// ApiDBUtils.findVolumeHostRef(volume.getId(),