From 2229e3e2426a4cd04884ffcf8406080bd6aa8ec0 Mon Sep 17 00:00:00 2001 From: Nitin Mehta Date: Thu, 3 Oct 2013 15:10:55 -0700 Subject: [PATCH] CLOUDSTACK-4803: fix listVirtualMachines to not display vms to the normal users with forDisplay=false. But displayvms to ROOT Admin irrespective of the flag. Signed off by : nitin mehta --- server/src/com/cloud/api/query/QueryManagerImpl.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/server/src/com/cloud/api/query/QueryManagerImpl.java b/server/src/com/cloud/api/query/QueryManagerImpl.java index 5f3cceba95d..0691a2e3872 100644 --- a/server/src/com/cloud/api/query/QueryManagerImpl.java +++ b/server/src/com/cloud/api/query/QueryManagerImpl.java @@ -768,6 +768,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { ListProjectResourcesCriteria listProjectResourcesCriteria, Map tags) { Filter searchFilter = new Filter(UserVmJoinVO.class, c.getOrderBy(), c.getAscending(), c.getOffset(), c.getLimit()); + boolean isRootAdmin = _accountMgr.isRootAdmin(caller.getType()); // first search distinct vm id by using query criteria and pagination SearchBuilder sb = _userVmJoinDao.createSearchBuilder(); @@ -831,6 +832,10 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { sb.and("affinityGroupId", sb.entity().getAffinityGroupId(), SearchCriteria.Op.EQ); } + if(!isRootAdmin){ + sb.and("displayVm", sb.entity().isDisplayVm(), SearchCriteria.Op.EQ); + } + // populate the search criteria with the values passed in SearchCriteria sc = sb.create(); @@ -936,6 +941,9 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { sc.setParameters("affinityGroupId", affinityGroupId); } + if(!isRootAdmin){ + sc.setParameters("displayVm", 1); + } // search vm details by ids Pair, Integer> uniqueVmPair = _userVmJoinDao.searchAndCount(sc, searchFilter); Integer count = uniqueVmPair.second();