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

status 9941: resolved fixed
This commit is contained in:
alena 2011-05-19 18:44:18 -07:00
parent b485acf8ee
commit 3fe1ffc8f7
2 changed files with 7 additions and 4 deletions

View File

@ -783,9 +783,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

@ -2451,7 +2451,8 @@ 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();
@ -2498,6 +2499,7 @@ public class ManagementServerImpl implements ManagementServer {
// Don't return DomR and ConsoleProxy volumes
sc.setJoinParameters("vmSearch", "type", VirtualMachine.Type.ConsoleProxy, VirtualMachine.Type.SecondaryStorageVm, VirtualMachine.Type.DomainRouter);
// Only return volumes that are not destroyed
sc.setParameters("state", Volume.State.Destroy);