Skip to content

Commit f280bbe

Browse files
committed
Merge pull request apache#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>
2 parents c07c850 + c377763 commit f280bbe

1 file changed

Lines changed: 12 additions & 4 deletions

File tree

server/src/com/cloud/api/query/dao/VolumeJoinDaoImpl.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,22 +81,28 @@ public VolumeResponse newVolumeResponse(ResponseView view, VolumeJoinVO volume)
8181
volResponse.setZoneId(volume.getDataCenterUuid());
8282
volResponse.setZoneName(volume.getDataCenterName());
8383

84-
volResponse.setVolumeType(volume.getVolumeType().toString());
84+
if (volume.getVolumeType() != null) {
85+
volResponse.setVolumeType(volume.getVolumeType().toString());
86+
}
8587
volResponse.setDeviceId(volume.getDeviceId());
8688

8789
long instanceId = volume.getVmId();
8890
if (instanceId > 0 && volume.getState() != Volume.State.Destroy) {
8991
volResponse.setVirtualMachineId(volume.getVmUuid());
9092
volResponse.setVirtualMachineName(volume.getVmName());
91-
volResponse.setVirtualMachineState(volume.getVmState().toString());
93+
if (volume.getVmState() != null) {
94+
volResponse.setVirtualMachineState(volume.getVmState().toString());
95+
}
9296
if (volume.getVmDisplayName() != null) {
9397
volResponse.setVirtualMachineDisplayName(volume.getVmDisplayName());
9498
} else {
9599
volResponse.setVirtualMachineDisplayName(volume.getVmName());
96100
}
97101
}
98102

99-
volResponse.setProvisioningType(volume.getProvisioningType().toString());
103+
if (volume.getProvisioningType() != null) {
104+
volResponse.setProvisioningType(volume.getProvisioningType().toString());
105+
}
100106

101107
// Show the virtual size of the volume
102108
volResponse.setSize(volume.getSize());
@@ -105,7 +111,9 @@ public VolumeResponse newVolumeResponse(ResponseView view, VolumeJoinVO volume)
105111
volResponse.setMaxIops(volume.getMaxIops());
106112

107113
volResponse.setCreated(volume.getCreated());
108-
volResponse.setState(volume.getState().toString());
114+
if (volume.getState() != null) {
115+
volResponse.setState(volume.getState().toString());
116+
}
109117
if (volume.getState() == Volume.State.UploadOp) {
110118
// com.cloud.storage.VolumeHostVO volumeHostRef =
111119
// ApiDBUtils.findVolumeHostRef(volume.getId(),

0 commit comments

Comments
 (0)