From 65ef8b24c12f43e1e3dac9705287b19a341be644 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 62485661b67..1d2ab5d6bb4 100644 --- a/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java +++ b/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java @@ -211,6 +211,12 @@ public class Site2SiteVpnManagerImpl implements Site2SiteVpnManager, Manager { throw new InvalidParameterValueException("The vpn connection with specified customer gateway id or vpn gateway id " + " already exists!", idList); } + 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);