bug 9941: fixed listVolumes api - use leftouter join with vm_instance table because instance_id is NULL for detached volumes

status 9941: resolved fixed

Conflicts:

	server/src/com/cloud/api/ApiResponseHelper.java
	server/src/com/cloud/server/ManagementServerImpl.java
This commit is contained in:
alena 2011-05-19 18:49:12 -07:00
parent 7bae4e3155
commit 24e86c109e
2 changed files with 7 additions and 4 deletions

View File

@ -798,8 +798,10 @@ public class ApiResponseHelper implements ResponseGenerator {
volResponse.setVirtualMachineId(vm.getId());
volResponse.setVirtualMachineName(vm.getHostName());
UserVm userVm = ApiDBUtils.findUserVmById(vm.getId());
volResponse.setVirtualMachineDisplayName(userVm.getDisplayName());
volResponse.setVirtualMachineState(vm.getState().toString());
if (userVm != null) {
volResponse.setVirtualMachineDisplayName(userVm.getDisplayName());
volResponse.setVirtualMachineState(vm.getState().toString());
}
}
// Show the virtual size of the volume

View File

@ -2342,8 +2342,9 @@ public class ManagementServerImpl implements ManagementServer {
// display user vm volumes only
SearchBuilder<VMInstanceVO> vmSearch = _vmInstanceDao.createSearchBuilder();
vmSearch.and("type", vmSearch.entity().getType(), SearchCriteria.Op.NIN);
sb.join("vmSearch", vmSearch, sb.entity().getInstanceId(), vmSearch.entity().getId(), JoinBuilder.JoinType.INNER);
vmSearch.or("nulltype", vmSearch.entity().getType(), SearchCriteria.Op.NULL);
sb.join("vmSearch", vmSearch, sb.entity().getInstanceId(), vmSearch.entity().getId(), JoinBuilder.JoinType.LEFTOUTER);
// now set the SC criteria...
SearchCriteria<VolumeVO> sc = sb.create();
if (keyword != null) {