mirror of https://github.com/apache/cloudstack.git
CS-16043: Using network based router rather than account for RVR detection
This commit is contained in:
parent
ea6f3eb6f9
commit
1cfcefd2fb
|
|
@ -1588,19 +1588,27 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
|
|||
DataCenterDeployment plan = new DataCenterDeployment(0, null, null, null, null, null);
|
||||
DomainRouterVO result = null;
|
||||
assert router.getIsRedundantRouter();
|
||||
List<DomainRouterVO> routerList = _routerDao.findBy(router.getAccountId(), router.getDataCenterIdToDeployIn());
|
||||
List<Long> networkIds = _routerDao.getRouterNetworks(router.getId());
|
||||
//Not support VPC now
|
||||
if (networkIds.size() > 1) {
|
||||
throw new ResourceUnavailableException("Unable to support more than one guest network for redundant router now!",
|
||||
DataCenter.class, router.getDataCenterIdToDeployIn());
|
||||
}
|
||||
DomainRouterVO routerToBeAvoid = null;
|
||||
for (DomainRouterVO rrouter : routerList) {
|
||||
if (rrouter.getHostId() != null && rrouter.getIsRedundantRouter() && rrouter.getState() == State.Running) {
|
||||
if (routerToBeAvoid != null) {
|
||||
throw new ResourceUnavailableException("Try to start router " + router.getInstanceName() + "(" + router.getId() + ")"
|
||||
+ ", but there are already two redundant routers with IP " + router.getPublicIpAddress()
|
||||
+ ", they are " + rrouter.getInstanceName() + "(" + rrouter.getId() + ") and "
|
||||
+ routerToBeAvoid.getInstanceName() + "(" + routerToBeAvoid.getId() + ")",
|
||||
DataCenter.class, rrouter.getDataCenterIdToDeployIn());
|
||||
}
|
||||
routerToBeAvoid = rrouter;
|
||||
}
|
||||
if (networkIds.size() != 0) {
|
||||
List<DomainRouterVO> routerList = _routerDao.findByNetwork(networkIds.get(0));
|
||||
for (DomainRouterVO rrouter : routerList) {
|
||||
if (rrouter.getHostId() != null && rrouter.getIsRedundantRouter() && rrouter.getState() == State.Running) {
|
||||
if (routerToBeAvoid != null) {
|
||||
throw new ResourceUnavailableException("Try to start router " + router.getInstanceName() + "(" + router.getId() + ")"
|
||||
+ ", but there are already two redundant routers with IP " + router.getPublicIpAddress()
|
||||
+ ", they are " + rrouter.getInstanceName() + "(" + rrouter.getId() + ") and "
|
||||
+ routerToBeAvoid.getInstanceName() + "(" + routerToBeAvoid.getId() + ")",
|
||||
DataCenter.class, rrouter.getDataCenterIdToDeployIn());
|
||||
}
|
||||
routerToBeAvoid = rrouter;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (routerToBeAvoid == null) {
|
||||
return this.start(router, user, caller, params, null);
|
||||
|
|
|
|||
Loading…
Reference in New Issue