From b410cbff5fec2940aa80d68875edaf8cdd9579c7 Mon Sep 17 00:00:00 2001 From: Sheng Yang Date: Fri, 27 Jul 2012 17:40:54 -0700 Subject: [PATCH] CS-15730: Prohibit create VPN connection from different gateway to same customer gateway --- .../com/cloud/network/dao/Site2SiteVpnConnectionDao.java | 1 + .../cloud/network/dao/Site2SiteVpnConnectionDaoImpl.java | 7 +++++++ .../src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java | 6 ++++++ 3 files changed, 14 insertions(+) diff --git a/server/src/com/cloud/network/dao/Site2SiteVpnConnectionDao.java b/server/src/com/cloud/network/dao/Site2SiteVpnConnectionDao.java index 69542877a2e..2239ec7f50e 100644 --- a/server/src/com/cloud/network/dao/Site2SiteVpnConnectionDao.java +++ b/server/src/com/cloud/network/dao/Site2SiteVpnConnectionDao.java @@ -10,4 +10,5 @@ public interface Site2SiteVpnConnectionDao extends GenericDao listByVpnGatewayId(long id); List listByVpcId(long vpcId); Site2SiteVpnConnectionVO findByVpnGatewayIdAndCustomerGatewayId(long vpnId, long customerId); + Site2SiteVpnConnectionVO findByCustomerGatewayId(long customerId); } diff --git a/server/src/com/cloud/network/dao/Site2SiteVpnConnectionDaoImpl.java b/server/src/com/cloud/network/dao/Site2SiteVpnConnectionDaoImpl.java index 8940192d1d0..2d147d22116 100644 --- a/server/src/com/cloud/network/dao/Site2SiteVpnConnectionDaoImpl.java +++ b/server/src/com/cloud/network/dao/Site2SiteVpnConnectionDaoImpl.java @@ -67,4 +67,11 @@ public class Site2SiteVpnConnectionDaoImpl extends GenericDaoBase sc = AllFieldsSearch.create(); + sc.setParameters("customerGatewayId", customerId); + return findOneBy(sc); + } } diff --git a/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java b/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java index 48bb3873980..e64962a4f98 100644 --- a/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java +++ b/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java @@ -205,6 +205,12 @@ public class Site2SiteVpnManagerImpl implements Site2SiteVpnManager, Manager { throw new InvalidParameterValueException("The vpn connection with customer gateway id " + customerGatewayId + " or vpn gateway id " + vpnGatewayId + " already existed!"); } + if (_vpnConnectionDao.findByCustomerGatewayId(customerGatewayId) != null) { + List idList = new ArrayList(); + idList.add(new IdentityProxy(customerGateway, customerGatewayId, "customerGatewayId")); + throw new InvalidParameterValueException("The vpn connection with specified customer gateway id " + + " already exists!", idList); + } Site2SiteVpnConnectionVO conn = new Site2SiteVpnConnectionVO(owner.getAccountId(), owner.getDomainId(), vpnGatewayId, customerGatewayId); conn.setState(State.Pending); _vpnConnectionDao.persist(conn);