diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java index dab997d4681..b648cd33242 100755 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@ -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 diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index 4fe22df3280..5fb26a0d1af 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -2451,7 +2451,8 @@ public class ManagementServerImpl implements ManagementServer { //display user vm volumes only SearchBuilder 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 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);