You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ya...@apache.org on 2012/07/03 01:40:17 UTC
[9/13] git commit: CS-6840: Add Site2SiteVpnServiceProvider
CS-6840: Add Site2SiteVpnServiceProvider
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/0ce1e783
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/0ce1e783
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/0ce1e783
Branch: refs/heads/vpc
Commit: 0ce1e78364e1b160c94313e368637af15394dd1a
Parents: 24c480f
Author: Sheng Yang <sh...@citrix.com>
Authored: Wed Jun 27 19:00:55 2012 -0700
Committer: Sheng Yang <sh...@citrix.com>
Committed: Mon Jul 2 16:27:09 2012 -0700
----------------------------------------------------------------------
.../agent/api/routing/Site2SiteVpnCfgCommand.java | 69 +++++++++++++++
api/src/com/cloud/network/Network.java | 1 -
.../element/Site2SiteVpnServiceProvider.java | 13 +++
server/src/com/cloud/network/NetworkManager.java | 3 +
.../src/com/cloud/network/NetworkManagerImpl.java | 16 ++++
.../network/element/VirtualRouterElement.java | 44 +++++++++-
.../router/VirtualNetworkApplianceManager.java | 4 +
.../router/VirtualNetworkApplianceManagerImpl.java | 46 ++++++++++
.../cloud/network/vpn/Site2SiteVpnManagerImpl.java | 48 +++++++++--
9 files changed, 236 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0ce1e783/api/src/com/cloud/agent/api/routing/Site2SiteVpnCfgCommand.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/agent/api/routing/Site2SiteVpnCfgCommand.java b/api/src/com/cloud/agent/api/routing/Site2SiteVpnCfgCommand.java
new file mode 100644
index 0000000..a0d1717
--- /dev/null
+++ b/api/src/com/cloud/agent/api/routing/Site2SiteVpnCfgCommand.java
@@ -0,0 +1,69 @@
+package com.cloud.agent.api.routing;
+
+public class Site2SiteVpnCfgCommand extends NetworkElementCommand {
+
+ private boolean create;
+ private String gatewayIp;
+ private String guestIp;
+ private String guestCidr;
+ private String ipsecPsk;
+
+ @Override
+ public boolean executeInSequence() {
+ return true;
+ }
+
+ public Site2SiteVpnCfgCommand () {
+ this.create = false;
+ }
+
+ public Site2SiteVpnCfgCommand (boolean create, String gatewayIp, String guestIp, String guestCidr, String ipsecPsk) {
+ this.create = create;
+ this.gatewayIp = gatewayIp;
+ this.guestIp = guestIp;
+ this.guestCidr = guestCidr;
+ this.ipsecPsk = ipsecPsk;
+ }
+
+ public boolean isCreate() {
+ return create;
+ }
+
+ public void setCreate(boolean create) {
+ this.create = create;
+ }
+
+ public String getGatewayIp() {
+ return gatewayIp;
+ }
+
+ public void setGatewayIp(String gatewayIp) {
+ this.gatewayIp = gatewayIp;
+ }
+
+ public String getGuestIp() {
+ return guestIp;
+ }
+
+ public void setGuestIp(String guestIp) {
+ this.guestIp = guestIp;
+ }
+
+ public String getGuestCidr() {
+ return guestCidr;
+ }
+
+ public void setGuestCidr(String guestCidr) {
+ this.guestCidr = guestCidr;
+ }
+
+ public String getIpsecPsk() {
+ return ipsecPsk;
+ }
+
+ public void setIpsecPsk(String ipsecPsk) {
+ this.ipsecPsk = ipsecPsk;
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0ce1e783/api/src/com/cloud/network/Network.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/network/Network.java b/api/src/com/cloud/network/Network.java
index 8dd9e13..8cd3bb9 100644
--- a/api/src/com/cloud/network/Network.java
+++ b/api/src/com/cloud/network/Network.java
@@ -166,7 +166,6 @@ public interface Network extends ControlledEntity {
public static final Capability ElasticLb = new Capability("ElasticLb");
public static final Capability FirewallType = new Capability("FirewallType");
-
private String name;
public Capability(String name) {
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0ce1e783/api/src/com/cloud/network/element/Site2SiteVpnServiceProvider.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/network/element/Site2SiteVpnServiceProvider.java b/api/src/com/cloud/network/element/Site2SiteVpnServiceProvider.java
new file mode 100644
index 0000000..8826283
--- /dev/null
+++ b/api/src/com/cloud/network/element/Site2SiteVpnServiceProvider.java
@@ -0,0 +1,13 @@
+package com.cloud.network.element;
+
+import com.cloud.exception.ResourceUnavailableException;
+import com.cloud.network.Network;
+import com.cloud.network.Site2SiteVpnConnection;
+
+public interface Site2SiteVpnServiceProvider extends NetworkElement {
+ boolean startSite2SiteVpn(Network network, Site2SiteVpnConnection conn) throws ResourceUnavailableException;
+
+ boolean stopSite2SiteVpn(Network network, Site2SiteVpnConnection conn) throws ResourceUnavailableException;
+
+ IpDeployer getIpDeployer(Network network);
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0ce1e783/server/src/com/cloud/network/NetworkManager.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkManager.java b/server/src/com/cloud/network/NetworkManager.java
index cbf4cc8..5cc0873 100755
--- a/server/src/com/cloud/network/NetworkManager.java
+++ b/server/src/com/cloud/network/NetworkManager.java
@@ -40,6 +40,7 @@ import com.cloud.network.Networks.TrafficType;
import com.cloud.network.addr.PublicIp;
import com.cloud.network.element.NetworkElement;
import com.cloud.network.element.RemoteAccessVPNServiceProvider;
+import com.cloud.network.element.Site2SiteVpnServiceProvider;
import com.cloud.network.element.UserDataServiceProvider;
import com.cloud.network.guru.NetworkGuru;
import com.cloud.network.rules.FirewallRule;
@@ -138,6 +139,8 @@ public interface NetworkManager extends NetworkService {
public boolean validateRule(FirewallRule rule);
List<? extends RemoteAccessVPNServiceProvider> getRemoteAccessVpnElements();
+
+ List<? extends Site2SiteVpnServiceProvider> getSite2SiteVpnElements();
PublicIpAddress getPublicIpAddress(long ipAddressId);
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0ce1e783/server/src/com/cloud/network/NetworkManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java
index 8cc76da..5796665 100755
--- a/server/src/com/cloud/network/NetworkManagerImpl.java
+++ b/server/src/com/cloud/network/NetworkManagerImpl.java
@@ -130,6 +130,7 @@ import com.cloud.network.element.NetworkACLServiceProvider;
import com.cloud.network.element.NetworkElement;
import com.cloud.network.element.PortForwardingServiceProvider;
import com.cloud.network.element.RemoteAccessVPNServiceProvider;
+import com.cloud.network.element.Site2SiteVpnServiceProvider;
import com.cloud.network.element.SourceNatServiceProvider;
import com.cloud.network.element.StaticNatServiceProvider;
import com.cloud.network.element.UserDataServiceProvider;
@@ -735,9 +736,11 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
}
purposes.add(Purpose.StaticNat);
}
+ //TODO Need to check site 2 site vpn ip assignment
if (purposes == null || purposes.isEmpty()) {
// since no active rules are there check if any rules are applied on the public IP but are in
// revoking state
+
purposes = getPublicIpPurposeInRules(ip, true, includingFirewall);
if (ip.isOneToOneNat()) {
if (purposes == null) {
@@ -2447,6 +2450,19 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
}
@Override
+ public List<? extends Site2SiteVpnServiceProvider> getSite2SiteVpnElements() {
+ List<Site2SiteVpnServiceProvider> elements = new ArrayList<Site2SiteVpnServiceProvider>();
+ for (NetworkElement element : _networkElements) {
+ if (element instanceof Site2SiteVpnServiceProvider) {
+ Site2SiteVpnServiceProvider e = (Site2SiteVpnServiceProvider) element;
+ elements.add(e);
+ }
+ }
+
+ return elements;
+ }
+
+ @Override
public void cleanupNics(VirtualMachineProfile<? extends VMInstanceVO> vm) {
if (s_logger.isDebugEnabled()) {
s_logger.debug("Cleaning network for vm: " + vm.getId());
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0ce1e783/server/src/com/cloud/network/element/VirtualRouterElement.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/element/VirtualRouterElement.java b/server/src/com/cloud/network/element/VirtualRouterElement.java
index d0b9046..efa5cba 100755
--- a/server/src/com/cloud/network/element/VirtualRouterElement.java
+++ b/server/src/com/cloud/network/element/VirtualRouterElement.java
@@ -44,6 +44,7 @@ import com.cloud.network.Networks.TrafficType;
import com.cloud.network.PhysicalNetworkServiceProvider;
import com.cloud.network.PublicIpAddress;
import com.cloud.network.RemoteAccessVpn;
+import com.cloud.network.Site2SiteVpnConnection;
import com.cloud.network.VirtualRouterProvider;
import com.cloud.network.VirtualRouterProvider.VirtualRouterProviderType;
import com.cloud.network.VpnUser;
@@ -87,7 +88,7 @@ import com.google.gson.Gson;
@Local(value = NetworkElement.class)
public class VirtualRouterElement extends AdapterBase implements VirtualRouterElementService, DhcpServiceProvider,
UserDataServiceProvider, SourceNatServiceProvider, StaticNatServiceProvider, FirewallServiceProvider,
- LoadBalancingServiceProvider, PortForwardingServiceProvider, RemoteAccessVPNServiceProvider, IpDeployer {
+ LoadBalancingServiceProvider, PortForwardingServiceProvider, RemoteAccessVPNServiceProvider, Site2SiteVpnServiceProvider, IpDeployer {
private static final Logger s_logger = Logger.getLogger(VirtualRouterElement.class);
protected static final Map<Service, Map<Capability, String>> capabilities = setCapabilities();
@@ -585,6 +586,9 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
capabilities.put(Service.StaticNat, null);
capabilities.put(Service.PortForwarding, null);
+ Map<Capability, String> s2sVpnCapabilities = new HashMap<Capability, String>();
+ s2sVpnCapabilities.put(Capability.SupportedSite2SiteVpnTypes, "ipsec");
+
return capabilities;
}
@@ -880,4 +884,42 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
protected VirtualRouterProviderType getVirtualRouterProvider() {
return VirtualRouterProviderType.VirtualRouter;
}
+
+ @Override
+ public boolean startSite2SiteVpn(Network network, Site2SiteVpnConnection conn) throws ResourceUnavailableException {
+ if (!canHandle(network, Service.Site2SiteVpn)) {
+ return false;
+ }
+
+ List<DomainRouterVO> routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER);
+ if (routers == null || routers.isEmpty()) {
+ s_logger.debug("Virtual router elemnt doesn't need to apply firewall rules on the backend; virtual router doesn't exist in the network " + network.getId());
+ return true;
+ }
+
+ if (!_routerMgr.startSite2SiteVpn(network, conn, routers)) {
+ throw new CloudRuntimeException("Failed to apply firewall rules in network " + network.getId());
+ }
+
+ return true;
+ }
+
+ @Override
+ public boolean stopSite2SiteVpn(Network network, Site2SiteVpnConnection conn) throws ResourceUnavailableException {
+ if (!canHandle(network, Service.Site2SiteVpn)) {
+ return false;
+ }
+
+ List<DomainRouterVO> routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER);
+ if (routers == null || routers.isEmpty()) {
+ s_logger.debug("Virtual router elemnt doesn't need to apply firewall rules on the backend; virtual router doesn't exist in the network " + network.getId());
+ return true;
+ }
+
+ if (!_routerMgr.stopSite2SiteVpn(network, conn, routers)) {
+ throw new CloudRuntimeException("Failed to apply firewall rules in network " + network.getId());
+ }
+
+ return true;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0ce1e783/server/src/com/cloud/network/router/VirtualNetworkApplianceManager.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManager.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManager.java
index 56ceac1..6861bf7 100644
--- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManager.java
+++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManager.java
@@ -22,6 +22,7 @@ import com.cloud.exception.ResourceUnavailableException;
import com.cloud.network.Network;
import com.cloud.network.PublicIpAddress;
import com.cloud.network.RemoteAccessVpn;
+import com.cloud.network.Site2SiteVpnConnection;
import com.cloud.network.VirtualNetworkApplianceService;
import com.cloud.network.VpnUser;
import com.cloud.network.rules.FirewallRule;
@@ -94,4 +95,7 @@ public interface VirtualNetworkApplianceManager extends Manager, VirtualNetworkA
boolean applyUserData(Network config, NicProfile nic, VirtualMachineProfile<UserVm> vm, DeployDestination dest,
List<DomainRouterVO> routers) throws ResourceUnavailableException;
+ boolean startSite2SiteVpn(Network network, Site2SiteVpnConnection conn, List<DomainRouterVO> routers) throws ResourceUnavailableException;
+
+ boolean stopSite2SiteVpn(Network network, Site2SiteVpnConnection conn, List<DomainRouterVO> routers) throws ResourceUnavailableException;
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0ce1e783/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
index 1bccf67..a83a707 100755
--- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@ -63,6 +63,7 @@ import com.cloud.agent.api.routing.SetFirewallRulesCommand;
import com.cloud.agent.api.routing.SetPortForwardingRulesCommand;
import com.cloud.agent.api.routing.SetPortForwardingRulesVpcCommand;
import com.cloud.agent.api.routing.SetStaticNatRulesCommand;
+import com.cloud.agent.api.routing.Site2SiteVpnCfgCommand;
import com.cloud.agent.api.routing.VmDataCommand;
import com.cloud.agent.api.routing.VpnUsersCfgCommand;
import com.cloud.agent.api.to.FirewallRuleTO;
@@ -128,6 +129,9 @@ import com.cloud.network.Networks.TrafficType;
import com.cloud.network.PhysicalNetworkServiceProvider;
import com.cloud.network.PublicIpAddress;
import com.cloud.network.RemoteAccessVpn;
+import com.cloud.network.Site2SiteCustomerGatewayVO;
+import com.cloud.network.Site2SiteVpnConnection;
+import com.cloud.network.Site2SiteVpnGatewayVO;
import com.cloud.network.SshKeysDistriMonitor;
import com.cloud.network.VirtualNetworkApplianceService;
import com.cloud.network.VirtualRouterProvider;
@@ -142,6 +146,9 @@ import com.cloud.network.dao.LoadBalancerVMMapDao;
import com.cloud.network.dao.NetworkDao;
import com.cloud.network.dao.PhysicalNetworkServiceProviderDao;
import com.cloud.network.dao.RemoteAccessVpnDao;
+import com.cloud.network.dao.Site2SiteCustomerGatewayDao;
+import com.cloud.network.dao.Site2SiteVpnConnectionDao;
+import com.cloud.network.dao.Site2SiteVpnGatewayDao;
import com.cloud.network.dao.VirtualRouterProviderDao;
import com.cloud.network.dao.VpnUserDao;
import com.cloud.network.lb.LoadBalancingRule;
@@ -305,6 +312,12 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
VirtualRouterProviderDao _vrProviderDao;
@Inject
ManagementServerHostDao _msHostDao;
+ @Inject
+ Site2SiteCustomerGatewayDao _s2sCustomerGatewayDao;
+ @Inject
+ Site2SiteVpnGatewayDao _s2sVpnGatewayDao;
+ @Inject
+ Site2SiteVpnConnectionDao _s2sVpnConnectionDao;
int _routerRamSize;
int _routerCpuMHz;
@@ -3194,4 +3207,37 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
throw new UnsupportedOperationException("Unplug nic is not supported for vm of type " + vm.getType());
}
+
+ @Override
+ public boolean startSite2SiteVpn(Network network, final Site2SiteVpnConnection conn, List<DomainRouterVO> routers) throws ResourceUnavailableException {
+ return applyRules(network, routers, "site2site vpn", false, null, false, new RuleApplier() {
+ @Override
+ public boolean execute(Network network, VirtualRouter router) throws ResourceUnavailableException {
+ return applySite2SiteVpn(router, conn);
+ }
+ });
+ }
+
+ protected boolean applySite2SiteVpn(VirtualRouter router, Site2SiteVpnConnection conn) throws ResourceUnavailableException {
+ Commands cmds = new Commands(OnError.Continue);
+ createApplySite2SiteVpnCommands(conn, router, cmds);
+ return sendCommandsToRouter(router, cmds);
+ }
+
+ private void createApplySite2SiteVpnCommands(Site2SiteVpnConnection conn, VirtualRouter router, Commands cmds) {
+ Site2SiteCustomerGatewayVO gw = _s2sCustomerGatewayDao.findById(conn.getCustomerGatewayId());
+ String gatewayIp = gw.getGatewayIp();
+ String guestIp = gw.getGuestIp();
+ String guestCidr = gw.getGuestCidr();
+ String ipsecPsk = gw.getIpsecPsk();
+
+ Site2SiteVpnCfgCommand startS2SVpnCmd = new Site2SiteVpnCfgCommand(true, gatewayIp, guestIp, guestCidr, ipsecPsk);
+ startS2SVpnCmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, getRouterControlIp(router.getId()));
+ startS2SVpnCmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, router.getGuestIpAddress());
+ startS2SVpnCmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName());
+ DataCenterVO dcVo = _dcDao.findById(router.getDataCenterIdToDeployIn());
+ startS2SVpnCmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, dcVo.getNetworkType().toString());
+
+ cmds.addCommand("startS2SVpn", startS2SVpnCmd);
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0ce1e783/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java b/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java
index 5bad27c..ef37ad0 100644
--- a/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java
+++ b/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java
@@ -1,5 +1,6 @@
package com.cloud.network.vpn;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -26,6 +27,7 @@ import com.cloud.exception.ResourceUnavailableException;
import com.cloud.network.IpAddress;
import com.cloud.network.Network;
import com.cloud.network.NetworkManager;
+import com.cloud.network.NetworkVO;
import com.cloud.network.Site2SiteCustomerGateway;
import com.cloud.network.Site2SiteCustomerGatewayVO;
import com.cloud.network.Site2SiteVpnConnection;
@@ -38,8 +40,10 @@ import com.cloud.network.dao.NetworkDao;
import com.cloud.network.dao.Site2SiteCustomerGatewayDao;
import com.cloud.network.dao.Site2SiteVpnConnectionDao;
import com.cloud.network.dao.Site2SiteVpnGatewayDao;
+import com.cloud.network.element.Site2SiteVpnServiceProvider;
import com.cloud.utils.component.Inject;
import com.cloud.utils.component.Manager;
+import com.cloud.utils.db.GenericDao;
import com.cloud.utils.net.NetUtils;
@Local(value = Site2SiteVpnService.class)
@@ -133,8 +137,14 @@ public class Site2SiteVpnManagerImpl implements Site2SiteVpnService, Manager {
public Site2SiteVpnConnection createVpnConnection(CreateVpnConnectionCmd cmd) throws NetworkRuleConflictException {
Long customerGatewayId = cmd.getCustomerGatewayId();
Site2SiteCustomerGateway customerGateway = _customerGatewayDao.findById(customerGatewayId);
+ if (customerGateway == null) {
+ throw new InvalidParameterValueException("Unable to found specified Site to Site VPN customer gateway " + customerGatewayId + " !");
+ }
Long vpnGatewayId = cmd.getVpnGatewayId();
Site2SiteVpnGateway vpnGateway = _vpnGatewayDao.findById(vpnGatewayId);
+ if (vpnGateway == null) {
+ throw new InvalidParameterValueException("Unable to found specified Site to Site VPN gateway " + vpnGatewayId + " !");
+ }
if (_vpnConnectionDao.findByCustomerGatewayId(customerGatewayId) != null ||
_vpnConnectionDao.findByVpnGatewayId(vpnGatewayId) != null) {
throw new InvalidParameterValueException("The vpn connection with customer gateway id " + customerGatewayId + " or vpn gateway id "
@@ -151,6 +161,20 @@ public class Site2SiteVpnManagerImpl implements Site2SiteVpnService, Manager {
if (conn.getState() != State.Pending && conn.getState() != State.Disconnected) {
throw new InvalidParameterValueException("Site to site VPN connection " + id + " not in correct state(pending or disconnected) to process!");
}
+
+ Site2SiteVpnGatewayVO vpnGateway = _vpnGatewayDao.findById(conn.getVpnGatewayId());
+ Network network = _networkDao.findById(vpnGateway.getNetworkId());
+ List <? extends Site2SiteVpnServiceProvider> elements = _networkMgr.getSite2SiteVpnElements();
+ boolean result = true;
+ for (Site2SiteVpnServiceProvider element : elements) {
+ result = result & element.startSite2SiteVpn(network, conn);
+ }
+
+ if (result) {
+ conn.setState(State.Connected);
+ _vpnConnectionDao.persist(conn);
+ return conn;
+ }
return null;
}
@@ -249,19 +273,31 @@ public class Site2SiteVpnManagerImpl implements Site2SiteVpnService, Manager {
@Override
public List<Site2SiteCustomerGateway> searchForCustomerGateways(ListVpnCustomerGatewaysCmd cmd) {
- // TODO Auto-generated method stub
- return null;
+ Long id = cmd.getId();
+ List<Site2SiteCustomerGateway> results = new ArrayList<Site2SiteCustomerGateway>();
+ if (id != null) {
+ results.add(_customerGatewayDao.findById(cmd.getId()));
+ }
+ return results;
}
@Override
public List<Site2SiteVpnGateway> searchForVpnGateways(ListVpnGatewaysCmd cmd) {
- // TODO Auto-generated method stub
- return null;
+ Long id = cmd.getId();
+ List<Site2SiteVpnGateway> results = new ArrayList<Site2SiteVpnGateway>();
+ if (id != null) {
+ results.add(_vpnGatewayDao.findById(cmd.getId()));
+ }
+ return results;
}
@Override
public List<Site2SiteVpnConnection> searchForVpnConnections(ListVpnConnectionsCmd cmd) {
- // TODO Auto-generated method stub
- return null;
+ Long id = cmd.getId();
+ List<Site2SiteVpnConnection> results = new ArrayList<Site2SiteVpnConnection>();
+ if (id != null) {
+ results.add(_vpnConnectionDao.findById(cmd.getId()));
+ }
+ return results;
}
}