bug 8879: Send network usage command for domain routers in Running state only

status 8879: resolved fixed
This commit is contained in:
kishan 2011-06-15 14:13:50 +05:30
parent 61cdbd0e1f
commit 675ffe23e8
3 changed files with 25 additions and 1 deletions

View File

@ -652,7 +652,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
@Override
public void run() {
final List<DomainRouterVO> routers = _routerDao.listVirtualUpByHostId(null);
final List<DomainRouterVO> routers = _routerDao.listByStateAndNetworkType(State.Running, GuestIpType.Virtual);
s_logger.debug("Found " + routers.size() + " running routers. ");
for (DomainRouterVO router : routers) {

View File

@ -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, Long> {
List<DomainRouterVO> findByNetworkAndPod(long networkId, long podId);
List<DomainRouterVO> listActive(long networkId);
/**
* List domain routers by state and network type
* @return
*/
List<DomainRouterVO> listByStateAndNetworkType(State state, GuestIpType ipType);
}

View File

@ -45,6 +45,7 @@ public class DomainRouterDaoImpl extends GenericDaoBase<DomainRouterVO, Long> im
protected final SearchBuilder<DomainRouterVO> AllFieldsSearch;
protected final SearchBuilder<DomainRouterVO> IdNetworkIdStatesSearch;
protected final SearchBuilder<DomainRouterVO> HostUpSearch;
protected final SearchBuilder<DomainRouterVO> StateNetworkTypeSearch;
NetworkDaoImpl _networksDao = ComponentLocator.inject(NetworkDaoImpl.class);
protected DomainRouterDaoImpl() {
@ -73,6 +74,13 @@ public class DomainRouterDaoImpl extends GenericDaoBase<DomainRouterVO, Long> 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<NetworkVO> 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<DomainRouterVO, Long> im
sc.setParameters("states", State.Running, State.Migrating, State.Stopping, State.Starting);
return listBy(sc);
}
@Override
public List<DomainRouterVO> listByStateAndNetworkType(State state, GuestIpType ipType) {
SearchCriteria<DomainRouterVO> sc = StateNetworkTypeSearch.create();
sc.setParameters("state", state);
sc.setJoinParameters("network", "guestType", ipType);
return listBy(sc);
}
}