From 28dd8185ddb950e0c216eeef31efde3ce0fc3e56 Mon Sep 17 00:00:00 2001 From: alena Date: Wed, 17 Nov 2010 21:15:04 -0800 Subject: [PATCH] Fixes for listDomains API command: * return all domains in the system when command is executed via 8096 * for domain admin return only his domains and subdomains. --- .../cloud/server/ManagementServerImpl.java | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index c7d94dfcef4..45168c596a7 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -3453,18 +3453,12 @@ public class ManagementServerImpl implements ManagementServer { public List searchForDomains(ListDomainsCmd cmd) throws PermissionDeniedException { Long domainId = cmd.getId(); Account account = UserContext.current().getAccount(); + String path = null; - if(account == null || account.getType() == Account.ACCOUNT_TYPE_ADMIN){ - return _domainDao.listAll(); - } - - if (account != null) { - if (domainId != null) { - if (!_domainDao.isChildDomain(account.getDomainId(), domainId)) { - throw new PermissionDeniedException("Unable to list domains for domain id " + domainId + ", permission denied."); - } - }else { - domainId = account.getDomainId(); + if (account != null && account.getType() == Account.ACCOUNT_TYPE_DOMAIN_ADMIN) { + DomainVO domain = _domainDao.findById(account.getDomainId()); + if (domain != null) { + path = domain.getPath(); } } @@ -3484,7 +3478,6 @@ public class ManagementServerImpl implements ManagementServer { if (keyword != null) { SearchCriteria ssc = _domainDao.createSearchCriteria(); ssc.addOr("name", SearchCriteria.Op.LIKE, "%" + keyword + "%"); - sc.addAnd("name", SearchCriteria.Op.SC, ssc); } @@ -3499,6 +3492,10 @@ public class ManagementServerImpl implements ManagementServer { if (domainId != null) { sc.setParameters("id", domainId); } + + if (path != null) { + sc.setParameters("path", path); + } return _domainDao.search(sc, searchFilter); }