From dfd3e128f59a5a4f86fae0682f6b58dc24e41d9e Mon Sep 17 00:00:00 2001 From: kishan Date: Wed, 15 Jun 2011 14:13:50 +0530 Subject: [PATCH] bug 8879: Send network usage command for domain routers in Running state only status 8879: resolved fixed --- .../VirtualNetworkApplianceManagerImpl.java | 2 +- server/src/com/cloud/vm/dao/DomainRouterDao.java | 8 ++++++++ .../com/cloud/vm/dao/DomainRouterDaoImpl.java | 16 ++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index aaacc4d6632..4e35ccb9072 100755 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -642,7 +642,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian @Override public void run() { - final List routers = _routerDao.listVirtualUpByHostId(null); + final List routers = _routerDao.listByStateAndNetworkType(State.Running, GuestIpType.Virtual); s_logger.debug("Found " + routers.size() + " running routers. "); for (DomainRouterVO router : routers) { diff --git a/server/src/com/cloud/vm/dao/DomainRouterDao.java b/server/src/com/cloud/vm/dao/DomainRouterDao.java index d7d856bf13d..93cf692bd96 100755 --- a/server/src/com/cloud/vm/dao/DomainRouterDao.java +++ b/server/src/com/cloud/vm/dao/DomainRouterDao.java @@ -19,9 +19,11 @@ package com.cloud.vm.dao; import java.util.List; +import com.cloud.network.Network.GuestIpType; import com.cloud.network.router.VirtualRouter.Role; import com.cloud.utils.db.GenericDao; import com.cloud.vm.DomainRouterVO; +import com.cloud.vm.VirtualMachine.State; /** * @@ -83,4 +85,10 @@ public interface DomainRouterDao extends GenericDao { DomainRouterVO findByNetworkAndPod(long networkId, long podId); List listActive(long networkId); + + /** + * List domain routers by state and network type + * @return + */ + List listByStateAndNetworkType(State state, GuestIpType ipType); } diff --git a/server/src/com/cloud/vm/dao/DomainRouterDaoImpl.java b/server/src/com/cloud/vm/dao/DomainRouterDaoImpl.java index 58e97cfd660..353e2c2479f 100755 --- a/server/src/com/cloud/vm/dao/DomainRouterDaoImpl.java +++ b/server/src/com/cloud/vm/dao/DomainRouterDaoImpl.java @@ -45,6 +45,7 @@ public class DomainRouterDaoImpl extends GenericDaoBase im protected final SearchBuilder AllFieldsSearch; protected final SearchBuilder IdNetworkIdStatesSearch; protected final SearchBuilder HostUpSearch; + protected final SearchBuilder StateNetworkTypeSearch; NetworkDaoImpl _networksDao = ComponentLocator.inject(NetworkDaoImpl.class); protected DomainRouterDaoImpl() { @@ -73,6 +74,13 @@ public class DomainRouterDaoImpl extends GenericDaoBase im joinNetwork.and("guestType", joinNetwork.entity().getGuestType(), Op.EQ); HostUpSearch.join("network", joinNetwork, joinNetwork.entity().getId(), HostUpSearch.entity().getNetworkId(), JoinType.INNER); HostUpSearch.done(); + + StateNetworkTypeSearch = createSearchBuilder(); + StateNetworkTypeSearch.and("state", StateNetworkTypeSearch.entity().getState(), Op.EQ); + SearchBuilder joinStateNetwork = _networksDao.createSearchBuilder(); + joinStateNetwork.and("guestType", joinStateNetwork.entity().getGuestType(), Op.EQ); + StateNetworkTypeSearch.join("network", joinStateNetwork, joinStateNetwork.entity().getId(), StateNetworkTypeSearch.entity().getNetworkId(), JoinType.INNER); + StateNetworkTypeSearch.done(); } @@ -178,4 +186,12 @@ public class DomainRouterDaoImpl extends GenericDaoBase im sc.setParameters("states", State.Running, State.Migrating, State.Stopping, State.Starting); return listBy(sc); } + + @Override + public List listByStateAndNetworkType(State state, GuestIpType ipType) { + SearchCriteria sc = StateNetworkTypeSearch.create(); + sc.setParameters("state", state); + sc.setJoinParameters("network", "guestType", ipType); + return listBy(sc); + } }