diff --git a/engine/schema/src/com/cloud/network/vpc/dao/StaticRouteDao.java b/engine/schema/src/com/cloud/network/vpc/dao/StaticRouteDao.java index a8fbc0990a8..041e8b89b99 100644 --- a/engine/schema/src/com/cloud/network/vpc/dao/StaticRouteDao.java +++ b/engine/schema/src/com/cloud/network/vpc/dao/StaticRouteDao.java @@ -26,7 +26,7 @@ public interface StaticRouteDao extends GenericDao{ boolean setStateToAdd(StaticRouteVO rule); - List listByGatewayIdAndNotRevoked(long gatewayId); + List listByVpcIdAndNotRevoked(long vpcId); List listByVpcId(long vpcId); diff --git a/engine/schema/src/com/cloud/network/vpc/dao/StaticRouteDaoImpl.java b/engine/schema/src/com/cloud/network/vpc/dao/StaticRouteDaoImpl.java index fac35a91a53..518237d96b3 100644 --- a/engine/schema/src/com/cloud/network/vpc/dao/StaticRouteDaoImpl.java +++ b/engine/schema/src/com/cloud/network/vpc/dao/StaticRouteDaoImpl.java @@ -58,7 +58,7 @@ public class StaticRouteDaoImpl extends GenericDaoBase impl AllFieldsSearch.done(); NotRevokedSearch = createSearchBuilder(); - NotRevokedSearch.and("gatewayId", NotRevokedSearch.entity().getVpcGatewayId(), Op.EQ); + NotRevokedSearch.and("vpcId", NotRevokedSearch.entity().getVpcId(), Op.EQ); NotRevokedSearch.and("state", NotRevokedSearch.entity().getState(), Op.NEQ); NotRevokedSearch.done(); @@ -82,9 +82,9 @@ public class StaticRouteDaoImpl extends GenericDaoBase impl @Override - public List listByGatewayIdAndNotRevoked(long gatewayId) { + public List listByVpcIdAndNotRevoked(long vpcId) { SearchCriteria sc = NotRevokedSearch.create(); - sc.setParameters("gatewayId", gatewayId); + sc.setParameters("vpcId", vpcId); sc.setParameters("state", StaticRoute.State.Revoke); return listBy(sc); } diff --git a/server/src/com/cloud/network/vpc/VpcManagerImpl.java b/server/src/com/cloud/network/vpc/VpcManagerImpl.java index b2cb333fd96..2555ef61217 100644 --- a/server/src/com/cloud/network/vpc/VpcManagerImpl.java +++ b/server/src/com/cloud/network/vpc/VpcManagerImpl.java @@ -1858,7 +1858,9 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis } protected void detectRoutesConflict(StaticRoute newRoute) throws NetworkRuleConflictException { - List routes = _staticRouteDao.listByGatewayIdAndNotRevoked(newRoute.getVpcGatewayId()); + //Multiple private gateways can exist within Vpc. Check for conflicts for all static routes in Vpc + //and not just the gateway + List routes = _staticRouteDao.listByVpcIdAndNotRevoked(newRoute.getVpcId()); assert (routes.size() >= 1) : "For static routes, we now always first persist the route and then check for " + "network conflicts so we should at least have one rule at this point.";