From 92423042e1c82ac352583f7632295778710d5feb Mon Sep 17 00:00:00 2001 From: alena Date: Tue, 22 Feb 2011 10:58:00 -0800 Subject: [PATCH] bug 5701: listNetworkGroups api - apply page size parameter to the NetworkGroup instead of IngressRule status 5701: resolved fixed --- .../security/dao/NetworkGroupRulesDao.java | 6 ++++++ .../security/dao/NetworkGroupRulesDaoImpl.java | 13 +++++++++++++ .../security/NetworkGroupManagerImpl.java | 18 ++++++++++++++---- 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/core/src/com/cloud/network/security/dao/NetworkGroupRulesDao.java b/core/src/com/cloud/network/security/dao/NetworkGroupRulesDao.java index 2ef4d9fd387..4754205f945 100644 --- a/core/src/com/cloud/network/security/dao/NetworkGroupRulesDao.java +++ b/core/src/com/cloud/network/security/dao/NetworkGroupRulesDao.java @@ -34,4 +34,10 @@ public interface NetworkGroupRulesDao extends GenericDao listNetworkGroupRulesByDomain(long domainId, boolean recursive); + + /** + * List all network rules belonging to the specific group + * @return the network group with associated ingress rules + */ + List listNetworkRulesByGroupId(long groupId); } diff --git a/core/src/com/cloud/network/security/dao/NetworkGroupRulesDaoImpl.java b/core/src/com/cloud/network/security/dao/NetworkGroupRulesDaoImpl.java index 4db0858334e..b9ffff9ef25 100644 --- a/core/src/com/cloud/network/security/dao/NetworkGroupRulesDaoImpl.java +++ b/core/src/com/cloud/network/security/dao/NetworkGroupRulesDaoImpl.java @@ -19,6 +19,7 @@ public class NetworkGroupRulesDaoImpl extends GenericDaoBase AccountGroupNameSearch; private SearchBuilder AccountSearch; private SearchBuilder DomainSearch; + private SearchBuilder GroupSearch; private DomainDao _domainDao = null; @@ -31,6 +32,10 @@ public class NetworkGroupRulesDaoImpl extends GenericDaoBase listNetworkRulesByGroupId(long groupId) { + Filter searchFilter = new Filter(NetworkGroupRulesVO.class, "id", true, null, null); + SearchCriteria sc = GroupSearch.create(); + sc.setParameters("groupId", groupId); + return listBy(sc, searchFilter); + } } diff --git a/server/src/com/cloud/network/security/NetworkGroupManagerImpl.java b/server/src/com/cloud/network/security/NetworkGroupManagerImpl.java index 478e8c8a166..b28d933242d 100644 --- a/server/src/com/cloud/network/security/NetworkGroupManagerImpl.java +++ b/server/src/com/cloud/network/security/NetworkGroupManagerImpl.java @@ -774,7 +774,7 @@ public class NetworkGroupManagerImpl implements NetworkGroupManager { @Override public List searchForNetworkGroupRules(Criteria c) { - Filter searchFilter = new Filter(NetworkGroupRulesVO.class, "id", true, c.getOffset(), c.getLimit()); + Filter searchFilter = new Filter(NetworkGroupVO.class, "id", true, c.getOffset(), c.getLimit()); Object accountId = c.getCriteria(Criteria.ACCOUNTID); Object domainId = c.getCriteria(Criteria.DOMAINID); Object networkGroup = c.getCriteria(Criteria.NETWORKGROUP); @@ -782,7 +782,7 @@ public class NetworkGroupManagerImpl implements NetworkGroupManager { Object recursive = c.getCriteria(Criteria.ISRECURSIVE); Object keyword = c.getCriteria(Criteria.KEYWORD); - SearchBuilder sb = _networkGroupRulesDao.createSearchBuilder(); + SearchBuilder sb = _networkGroupDao.createSearchBuilder(); sb.and("accountId", sb.entity().getAccountId(), SearchCriteria.Op.EQ); sb.and("name", sb.entity().getName(), SearchCriteria.Op.EQ); sb.and("domainId", sb.entity().getDomainId(), SearchCriteria.Op.EQ); @@ -815,8 +815,18 @@ public class NetworkGroupManagerImpl implements NetworkGroupManager { sc.setParameters("domainId", domainId); } } - - return _networkGroupRulesDao.search(sc, searchFilter); + + List networkGroups = _networkGroupDao.search(sc, searchFilter); + List networkRulesList = new ArrayList(); + for (NetworkGroupVO group : networkGroups) { + networkRulesList.addAll(_networkGroupRulesDao.listNetworkRulesByGroupId(group.getId())); + } + + if (instanceId != null) { + return listNetworkGroupRulesByVM((Long)instanceId); + } + + return networkRulesList; } private List listNetworkGroupRulesByVM(long vmId) {