From 9fefa33a36ccc8eeb37002135e5ce477858134c4 Mon Sep 17 00:00:00 2001 From: alena Date: Wed, 17 Nov 2010 15:30:16 -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 +++++ .../dao/NetworkGroupRulesDaoImpl.java | 16 +++++++++++++- .../security/NetworkGroupManagerImpl.java | 22 +++++++++++++------ 3 files changed, 36 insertions(+), 8 deletions(-) diff --git a/core/src/com/cloud/network/security/dao/NetworkGroupRulesDao.java b/core/src/com/cloud/network/security/dao/NetworkGroupRulesDao.java index cf632b88bfb..c920c10b773 100644 --- a/core/src/com/cloud/network/security/dao/NetworkGroupRulesDao.java +++ b/core/src/com/cloud/network/security/dao/NetworkGroupRulesDao.java @@ -26,4 +26,10 @@ public interface NetworkGroupRulesDao extends GenericDao listNetworkGroupRules(); + + /** + * 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 87c8ca52664..116d8db0a81 100644 --- a/core/src/com/cloud/network/security/dao/NetworkGroupRulesDaoImpl.java +++ b/core/src/com/cloud/network/security/dao/NetworkGroupRulesDaoImpl.java @@ -14,6 +14,8 @@ import com.cloud.utils.db.SearchCriteria; public class NetworkGroupRulesDaoImpl extends GenericDaoBase implements NetworkGroupRulesDao { private SearchBuilder AccountGroupNameSearch; private SearchBuilder AccountSearch; + private SearchBuilder GroupSearch; + protected NetworkGroupRulesDaoImpl() { AccountGroupNameSearch = createSearchBuilder(); @@ -24,6 +26,11 @@ public class NetworkGroupRulesDaoImpl extends GenericDaoBase sc = AccountSearch.create(); sc.setParameters("accountId", accountId); - + return listBy(sc, searchFilter); + } + + @Override + public List 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 a17612cd612..f09322d125f 100644 --- a/server/src/com/cloud/network/security/NetworkGroupManagerImpl.java +++ b/server/src/com/cloud/network/security/NetworkGroupManagerImpl.java @@ -1251,10 +1251,10 @@ public class NetworkGroupManagerImpl implements NetworkGroupManager { } } - Filter searchFilter = new Filter(NetworkGroupRulesVO.class, "id", true, cmd.getStartIndex(), cmd.getPageSizeVal()); + Filter searchFilter = new Filter(NetworkGroupVO.class, "id", true, cmd.getStartIndex(), cmd.getPageSizeVal()); Object keyword = cmd.getKeyword(); - 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); @@ -1266,7 +1266,7 @@ public class NetworkGroupManagerImpl implements NetworkGroupManager { sb.join("domainSearch", domainSearch, sb.entity().getDomainId(), domainSearch.entity().getId(), JoinBuilder.JoinType.INNER); } - SearchCriteria sc = sb.create(); + SearchCriteria sc = sb.create(); if (accountId != null) { sc.setParameters("accountId", accountId); if (networkGroup != null) { @@ -1277,8 +1277,6 @@ public class NetworkGroupManagerImpl implements NetworkGroupManager { ssc.addOr("description", SearchCriteria.Op.LIKE, "%" + keyword + "%"); sc.addAnd("name", SearchCriteria.Op.SC, ssc); } - } else if (instanceId != null) { - return listNetworkGroupRulesByVM(instanceId.longValue()); } else if (domainId != null) { if (Boolean.TRUE.equals(recursive)) { DomainVO domain = _domainDao.findById(domainId); @@ -1287,8 +1285,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(instanceId.longValue()); + } + + return networkRulesList; } private List listNetworkGroupRulesByVM(long vmId) {