From 033afe05a9fa7eeb577b9296aa92e1815e21dcad Mon Sep 17 00:00:00 2001 From: Alena Prokharchyk Date: Wed, 7 Dec 2011 12:58:48 -0800 Subject: [PATCH] listRouters: don't list Project routers when projectId is not specified in the call --- .../com/cloud/server/ManagementServerImpl.java | 16 ++++++++++++++++ .../src/com/cloud/user/AccountManagerImpl.java | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index 3f3cbe549f5..9c17d0b031e 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -1574,6 +1574,11 @@ public class ManagementServerImpl implements ManagementServer { Pair, Long> accountDomainPair = _accountMgr.finalizeAccountDomainForList(caller, cmd.getAccountName(), cmd.getDomainId(), cmd.getProjectId()); List permittedAccounts = accountDomainPair.first(); Long domainId = accountDomainPair.second(); + + boolean skipProjectRouters = true; + if (cmd.getProjectId() != null) { + skipProjectRouters = false; + } Filter searchFilter = new Filter(DomainRouterVO.class, "id", true, cmd.getStartIndex(), cmd.getPageSizeVal()); @@ -1601,6 +1606,12 @@ public class ManagementServerImpl implements ManagementServer { domainSearch.and("path", domainSearch.entity().getPath(), SearchCriteria.Op.LIKE); sb.join("domainSearch", domainSearch, sb.entity().getDomainId(), domainSearch.entity().getId(), JoinBuilder.JoinType.INNER); } + + if (skipProjectRouters) { + SearchBuilder accountSearch = _accountDao.createSearchBuilder(); + accountSearch.and("type", accountSearch.entity().getType(), SearchCriteria.Op.NEQ); + sb.join("accountSearch", accountSearch, sb.entity().getAccountId(), accountSearch.entity().getId(), JoinBuilder.JoinType.INNER); + } if (networkId != null) { SearchBuilder nicSearch = _nicDao.createSearchBuilder(); @@ -1614,6 +1625,11 @@ public class ManagementServerImpl implements ManagementServer { } SearchCriteria sc = sb.create(); + + if (skipProjectRouters) { + sc.setJoinParameters("accountSearch", "type", Account.ACCOUNT_TYPE_PROJECT); + } + if (keyword != null) { SearchCriteria ssc = _routerDao.createSearchCriteria(); ssc.addOr("hostName", SearchCriteria.Op.LIKE, "%" + keyword + "%"); diff --git a/server/src/com/cloud/user/AccountManagerImpl.java b/server/src/com/cloud/user/AccountManagerImpl.java index 358b4538ab0..1782c76e39d 100755 --- a/server/src/com/cloud/user/AccountManagerImpl.java +++ b/server/src/com/cloud/user/AccountManagerImpl.java @@ -1386,7 +1386,7 @@ public class AccountManagerImpl implements AccountManager, AccountService, Manag //set project information if (projectId != null) { if (projectId == -1) { - permittedAccounts.addAll(_projectMgr.listPermittedProjectAccounts(caller.getId())); + permittedAccounts.addAll(_projectMgr.listPermittedProjectAccounts(caller.getId())); } else { permittedAccounts.clear(); Project project = _projectMgr.getProject(projectId);