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<nitin.mehta@citrix.com>
This commit is contained in:
Nitin Mehta 2013-10-03 15:10:55 -07:00
parent 59ad4a9ab5
commit 2229e3e242
1 changed files with 8 additions and 0 deletions

View File

@ -768,6 +768,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService {
ListProjectResourcesCriteria listProjectResourcesCriteria, Map<String, String> 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<UserVmJoinVO> 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<UserVmJoinVO> 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<List<UserVmJoinVO>, Integer> uniqueVmPair = _userVmJoinDao.searchAndCount(sc, searchFilter);
Integer count = uniqueVmPair.second();