diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index 695d737590a..d4d0f7dd835 100644 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -627,7 +627,10 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian @Override public void run() { - final List routers = _routerDao.listUpByHostId(null); + + + final List routers = _routerDao.listVirtualUpByHostId(null); + 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 b766a082731..352509be6f8 100755 --- a/server/src/com/cloud/vm/dao/DomainRouterDao.java +++ b/server/src/com/cloud/vm/dao/DomainRouterDao.java @@ -67,7 +67,7 @@ public interface DomainRouterDao extends GenericDao { * @param hostId id of the host. null if to get all. * @return list of DomainRouterVO */ - public List listUpByHostId(Long hostId); + public List listVirtualUpByHostId(Long hostId); /** * Find the list of domain routers for a domain diff --git a/server/src/com/cloud/vm/dao/DomainRouterDaoImpl.java b/server/src/com/cloud/vm/dao/DomainRouterDaoImpl.java index 4b22b734793..8d6f311183f 100755 --- a/server/src/com/cloud/vm/dao/DomainRouterDaoImpl.java +++ b/server/src/com/cloud/vm/dao/DomainRouterDaoImpl.java @@ -23,10 +23,15 @@ import javax.ejb.Local; import org.apache.log4j.Logger; +import com.cloud.network.Network.GuestIpType; +import com.cloud.network.NetworkVO; +import com.cloud.network.dao.NetworkDaoImpl; import com.cloud.network.router.VirtualRouter.Role; +import com.cloud.utils.component.ComponentLocator; import com.cloud.utils.db.GenericDaoBase; import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchCriteria; +import com.cloud.utils.db.JoinBuilder.JoinType; import com.cloud.utils.db.SearchCriteria.Op; import com.cloud.utils.db.Transaction; import com.cloud.utils.db.UpdateBuilder; @@ -40,6 +45,7 @@ public class DomainRouterDaoImpl extends GenericDaoBase im protected final SearchBuilder AllFieldsSearch; protected final SearchBuilder IdStatesSearch; protected final SearchBuilder HostUpSearch; + NetworkDaoImpl _networksDao = ComponentLocator.inject(NetworkDaoImpl.class); protected DomainRouterDaoImpl() { AllFieldsSearch = createSearchBuilder(); @@ -62,6 +68,9 @@ public class DomainRouterDaoImpl extends GenericDaoBase im HostUpSearch = createSearchBuilder(); HostUpSearch.and("host", HostUpSearch.entity().getHostId(), Op.EQ); HostUpSearch.and("states", HostUpSearch.entity().getState(), Op.NIN); + SearchBuilder joinNetwork = _networksDao.createSearchBuilder(); + joinNetwork.and("guestType", joinNetwork.entity().getGuestType(), Op.EQ); + HostUpSearch.join("network", joinNetwork, joinNetwork.entity().getId(), HostUpSearch.entity().getNetworkId(), JoinType.INNER); HostUpSearch.done(); } @@ -121,12 +130,13 @@ public class DomainRouterDaoImpl extends GenericDaoBase im } @Override - public List listUpByHostId(Long hostId) { + public List listVirtualUpByHostId(Long hostId) { SearchCriteria sc = HostUpSearch.create(); if(hostId != null){ sc.setParameters("host", hostId); } sc.setParameters("states", State.Destroyed, State.Stopped, State.Expunging); + sc.setJoinParameters("network", "guestType", GuestIpType.Virtual); return listBy(sc); }