From 9486a9652e99a6ac048be69d37698579da91ef33 Mon Sep 17 00:00:00 2001 From: Kishan Kavala Date: Fri, 10 Jan 2014 19:56:50 +0530 Subject: [PATCH] CLOUDSTACK-5852: router search in DomainDouterDao using AllFieldsSearch filters few routers due to router_network_ref join. Created a seperate search to list running routers with filters. Conflicts: engine/schema/src/com/cloud/vm/dao/DomainRouterDao.java --- .../src/com/cloud/vm/dao/DomainRouterDao.java | 10 +++-- .../com/cloud/vm/dao/DomainRouterDaoImpl.java | 38 ++++++++++++++++--- .../VirtualNetworkApplianceManagerImpl.java | 10 ++--- 3 files changed, 45 insertions(+), 13 deletions(-) diff --git a/engine/schema/src/com/cloud/vm/dao/DomainRouterDao.java b/engine/schema/src/com/cloud/vm/dao/DomainRouterDao.java index 02cf68d7b75..e3f75fabd7e 100755 --- a/engine/schema/src/com/cloud/vm/dao/DomainRouterDao.java +++ b/engine/schema/src/com/cloud/vm/dao/DomainRouterDao.java @@ -69,7 +69,7 @@ public interface DomainRouterDao extends GenericDao { * @param podId id of the pod. null if to get all. * @return list of DomainRouterVO */ - public List listByPodId(Long podId); + public List listRunningByPodId(Long podId); /** * list virtual machine routers by pod id. pass in null to get all @@ -94,7 +94,7 @@ public interface DomainRouterDao extends GenericDao { * @param id * @return */ - public List listByDomain(Long id); + public List listRunningByDomain(Long id); List findBy(long accountId, long dcId, Role role); @@ -147,5 +147,9 @@ public interface DomainRouterDao extends GenericDao { */ void removeRouterFromGuestNetwork(long routerId, long guestNetworkId); - List listByClusterId(Long clusterId); + List listRunningByClusterId(Long clusterId); + + List listRunningByAccountId(long accountId); + + List listRunningByDataCenter(long dcId); } diff --git a/engine/schema/src/com/cloud/vm/dao/DomainRouterDaoImpl.java b/engine/schema/src/com/cloud/vm/dao/DomainRouterDaoImpl.java index 6bee6441e49..6b62f568739 100755 --- a/engine/schema/src/com/cloud/vm/dao/DomainRouterDaoImpl.java +++ b/engine/schema/src/com/cloud/vm/dao/DomainRouterDaoImpl.java @@ -54,6 +54,7 @@ import com.cloud.vm.VirtualMachine.State; public class DomainRouterDaoImpl extends GenericDaoBase implements DomainRouterDao { protected SearchBuilder AllFieldsSearch; + protected SearchBuilder RunningSearch; protected SearchBuilder IdNetworkIdStatesSearch; protected SearchBuilder HostUpSearch; protected SearchBuilder StateNetworkTypeSearch; @@ -139,10 +140,19 @@ public class DomainRouterDaoImpl extends GenericDaoBase im OutsidePodSearch.done(); clusterSearch = createSearchBuilder(); + clusterSearch.and("state", clusterSearch.entity().getState(), Op.EQ); SearchBuilder clusterHost = _hostsDao.createSearchBuilder(); clusterHost.and("clusterId", clusterHost.entity().getClusterId(), Op.EQ); clusterSearch.join("host", clusterHost, clusterSearch.entity().getHostId(), clusterHost.entity().getId(), JoinType.INNER); clusterSearch.done(); + + RunningSearch = createSearchBuilder(); + RunningSearch.and("dc", RunningSearch.entity().getDataCenterId(), Op.EQ); + RunningSearch.and("account", RunningSearch.entity().getAccountId(), Op.EQ); + RunningSearch.and("domainId", RunningSearch.entity().getDomainId(), Op.EQ); + RunningSearch.and("state", RunningSearch.entity().getState(), Op.EQ); + RunningSearch.and("podId", RunningSearch.entity().getPodIdToDeployIn(), Op.EQ); + RunningSearch.done(); } @Override @@ -200,15 +210,17 @@ public class DomainRouterDaoImpl extends GenericDaoBase im } @Override - public List listByPodId(Long podId) { - SearchCriteria sc = AllFieldsSearch.create(); + public List listRunningByPodId(Long podId) { + SearchCriteria sc = RunningSearch.create(); + sc.setParameters("state", State.Running); sc.setParameters("podId", podId); return listBy(sc); } @Override - public List listByClusterId(Long clusterId) { + public List listRunningByClusterId(Long clusterId) { SearchCriteria sc = clusterSearch.create(); + sc.setParameters("state", State.Running); sc.setJoinParameters("host", "clusterId", clusterId); return listBy(sc); } @@ -237,8 +249,9 @@ public class DomainRouterDaoImpl extends GenericDaoBase im } @Override - public List listByDomain(Long domainId) { - SearchCriteria sc = AllFieldsSearch.create(); + public List listRunningByDomain(Long domainId) { + SearchCriteria sc = RunningSearch.create(); + sc.setParameters("state", State.Running); sc.setParameters("domainId", domainId); return listBy(sc); } @@ -379,4 +392,19 @@ public class DomainRouterDaoImpl extends GenericDaoBase im return listBy(sc); } + @Override + public List listRunningByAccountId(long accountId) { + SearchCriteria sc = RunningSearch.create(); + sc.setParameters("state", State.Running); + sc.setParameters("account", accountId); + return listBy(sc); + } + + @Override + public List listRunningByDataCenter(long dcId) { + SearchCriteria sc = RunningSearch.create(); + sc.setParameters("state", State.Running); + sc.setParameters("dc", dcId); + return listBy(sc); + } } diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index 5287e6fed89..d5b8c8c9684 100755 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -4116,10 +4116,10 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V if(account == null){ throw new InvalidParameterValueException("Account :"+accountName+" does not exist in domain: "+domainId); } - routers = _routerDao.listBy(account.getId()); + routers = _routerDao.listRunningByAccountId(account.getId()); } else { //List by domainId, account name not specified - routers = _routerDao.listByDomain(domainId); + routers = _routerDao.listRunningByDomain(domainId); } params++; } @@ -4127,19 +4127,19 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V Long clusterId = cmd.getClusterId(); if (clusterId != null) { params++; - routers = _routerDao.listByClusterId(clusterId); + routers = _routerDao.listRunningByClusterId(clusterId); } Long podId = cmd.getPodId(); if (podId != null) { params++; - routers = _routerDao.listByPodId(podId); + routers = _routerDao.listRunningByPodId(podId); } Long zoneId = cmd.getZoneId(); if (zoneId != null) { params++; - routers = _routerDao.listByDataCenter(zoneId); + routers = _routerDao.listRunningByDataCenter(zoneId); } if (params > 1) {