From 24e86c109ed50c645ddc68bd24a93f64c7fce895 Mon Sep 17 00:00:00 2001 From: alena Date: Thu, 19 May 2011 18:49:12 -0700 Subject: [PATCH] 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 --- server/src/com/cloud/api/ApiResponseHelper.java | 6 ++++-- server/src/com/cloud/server/ManagementServerImpl.java | 5 +++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java index 3a6d6199600..b5720e617f5 100755 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@ -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 diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index cf845b6f2e1..e073005d72b 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -2342,8 +2342,9 @@ 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(); if (keyword != null) {