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/24 06:15:01 UTC
git commit: CS-15534: Mark VPN connection as Disconnected when
rebootRouter
Updated Branches:
refs/heads/vpc 6cb10ce99 -> 1920c2a73
CS-15534: Mark VPN connection as Disconnected when rebootRouter
Conflicts:
server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/1920c2a7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/1920c2a7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/1920c2a7
Branch: refs/heads/vpc
Commit: 1920c2a735c2c266ba958be7885fe727a7f24d99
Parents: 6cb10ce
Author: Sheng Yang <sh...@citrix.com>
Authored: Mon Jul 23 21:07:49 2012 -0700
Committer: Sheng Yang <sh...@citrix.com>
Committed: Mon Jul 23 21:14:49 2012 -0700
----------------------------------------------------------------------
.../network/element/VpcVirtualRouterElement.java | 7 ----
.../VpcVirtualNetworkApplianceManagerImpl.java | 24 +++++++++++---
.../com/cloud/network/vpn/Site2SiteVpnManager.java | 1 +
.../cloud/network/vpn/Site2SiteVpnManagerImpl.java | 14 ++++++++
4 files changed, 34 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/1920c2a7/server/src/com/cloud/network/element/VpcVirtualRouterElement.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/element/VpcVirtualRouterElement.java b/server/src/com/cloud/network/element/VpcVirtualRouterElement.java
index 38efd77..78d1ff4 100644
--- a/server/src/com/cloud/network/element/VpcVirtualRouterElement.java
+++ b/server/src/com/cloud/network/element/VpcVirtualRouterElement.java
@@ -42,8 +42,6 @@ import com.cloud.network.Site2SiteVpnConnection;
import com.cloud.network.Site2SiteVpnGateway;
import com.cloud.network.VirtualRouterProvider.VirtualRouterProviderType;
import com.cloud.network.dao.IPAddressDao;
-import com.cloud.network.dao.Site2SiteCustomerGatewayDao;
-import com.cloud.network.dao.Site2SiteVpnConnectionDao;
import com.cloud.network.dao.Site2SiteVpnGatewayDao;
import com.cloud.network.router.VirtualRouter;
import com.cloud.network.router.VirtualRouter.Role;
@@ -73,15 +71,10 @@ public class VpcVirtualRouterElement extends VirtualRouterElement implements Vpc
@Inject
VpcVirtualNetworkApplianceManager _vpcRouterMgr;
@Inject
- Site2SiteCustomerGatewayDao _customerGatewayDao;
- @Inject
Site2SiteVpnGatewayDao _vpnGatewayDao;
@Inject
- Site2SiteVpnConnectionDao _vpnConnectionDao;
- @Inject
IPAddressDao _ipAddressDao;
-
private static final Map<Service, Map<Capability, String>> capabilities = setCapabilities();
@Override
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/1920c2a7/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
index 5b14b9b..622eb69 100644
--- a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
+++ b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
@@ -33,6 +33,7 @@ import com.cloud.agent.api.PlugNicAnswer;
import com.cloud.agent.api.PlugNicCommand;
import com.cloud.agent.api.SetupGuestNetworkAnswer;
import com.cloud.agent.api.SetupGuestNetworkCommand;
+import com.cloud.agent.api.StopAnswer;
import com.cloud.agent.api.UnPlugNicAnswer;
import com.cloud.agent.api.UnPlugNicCommand;
import com.cloud.agent.api.routing.IpAssocVpcCommand;
@@ -75,6 +76,7 @@ import com.cloud.network.PhysicalNetworkServiceProvider;
import com.cloud.network.PublicIpAddress;
import com.cloud.network.Site2SiteCustomerGatewayVO;
import com.cloud.network.Site2SiteVpnConnection;
+import com.cloud.network.Site2SiteVpnConnectionVO;
import com.cloud.network.Site2SiteVpnGateway;
import com.cloud.network.Site2SiteVpnGatewayVO;
import com.cloud.network.VirtualRouterProvider;
@@ -84,6 +86,7 @@ import com.cloud.network.addr.PublicIp;
import com.cloud.network.dao.FirewallRulesDao;
import com.cloud.network.dao.IPAddressDao;
import com.cloud.network.dao.PhysicalNetworkDao;
+import com.cloud.network.dao.Site2SiteVpnConnectionDao;
import com.cloud.network.dao.Site2SiteVpnGatewayDao;
import com.cloud.network.rules.FirewallRule;
import com.cloud.network.vpc.NetworkACLManager;
@@ -99,6 +102,7 @@ import com.cloud.network.vpc.Dao.PrivateIpDao;
import com.cloud.network.vpc.Dao.StaticRouteDao;
import com.cloud.network.vpc.Dao.VpcDao;
import com.cloud.network.vpc.Dao.VpcOfferingDao;
+import com.cloud.network.vpn.Site2SiteVpnManager;
import com.cloud.offerings.NetworkOfferingVO;
import com.cloud.user.Account;
import com.cloud.utils.Pair;
@@ -144,7 +148,11 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
@Inject
Site2SiteVpnGatewayDao _vpnGatewayDao;
@Inject
+ Site2SiteVpnConnectionDao _vpnConnectionDao;
+ @Inject
FirewallRulesDao _firewallDao;
+ @Inject
+ Site2SiteVpnManager _s2sVpnMgr;
@Override
public List<DomainRouterVO> deployVirtualRouterInVpc(Vpc vpc, DeployDestination dest, Account owner,
@@ -808,9 +816,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
createStaticRouteCommands(staticRouteProfiles, router, cmds);
}
- //5) REISSUE VPN CONNECTION
-
- //6) REPROGRAM GUEST NETWORK
+ //5) REPROGRAM GUEST NETWORK
boolean reprogramGuestNtwks = true;
if (profile.getParameter(Param.ReProgramGuestNetworks) != null
&& (Boolean) profile.getParameter(Param.ReProgramGuestNetworks) == false) {
@@ -1044,11 +1050,11 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
protected boolean applySite2SiteVpn(boolean isCreate, VirtualRouter router, Site2SiteVpnConnection conn) throws ResourceUnavailableException {
Commands cmds = new Commands(OnError.Continue);
- createApplySite2SiteVpnCommands(conn, isCreate, router, cmds);
+ createSite2SiteVpnCfgCommands(conn, isCreate, router, cmds);
return sendCommandsToRouter(router, cmds);
}
- private void createApplySite2SiteVpnCommands(Site2SiteVpnConnection conn, boolean isCreate, VirtualRouter router, Commands cmds) {
+ private void createSite2SiteVpnCfgCommands(Site2SiteVpnConnection conn, boolean isCreate, VirtualRouter router, Commands cmds) {
Site2SiteCustomerGatewayVO gw = _s2sCustomerGatewayDao.findById(conn.getCustomerGatewayId());
Site2SiteVpnGatewayVO vpnGw = _s2sVpnGatewayDao.findById(conn.getVpnGatewayId());
IpAddress ip = _ipAddressDao.findById(vpnGw.getAddrId());
@@ -1262,4 +1268,12 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
new Pair<Map<String, PublicIpAddress>, Map<String, PublicIpAddress>>(nicsToPlug, nicsToUnplug);
return nicsToChange;
}
+
+ @Override
+ public void finalizeStop(VirtualMachineProfile<DomainRouterVO> profile, StopAnswer answer) {
+ super.finalizeStop(profile, answer);
+ //Mark VPN connections as Disconnected
+ DomainRouterVO router = profile.getVirtualMachine();
+ _s2sVpnMgr.markDisconnectVpnConnByVpc(router.getVpcId());
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/1920c2a7/server/src/com/cloud/network/vpn/Site2SiteVpnManager.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/vpn/Site2SiteVpnManager.java b/server/src/com/cloud/network/vpn/Site2SiteVpnManager.java
index 92820f1..a44c361 100644
--- a/server/src/com/cloud/network/vpn/Site2SiteVpnManager.java
+++ b/server/src/com/cloud/network/vpn/Site2SiteVpnManager.java
@@ -3,4 +3,5 @@ package com.cloud.network.vpn;
public interface Site2SiteVpnManager extends Site2SiteVpnService {
boolean cleanupVpnConnectionByVpc(long vpcId);
boolean cleanupVpnGatewayByVpc(long vpcId);
+ void markDisconnectVpnConnByVpc(long vpcId);
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/1920c2a7/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 aa7d2b3..3ca1a7e 100644
--- a/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java
+++ b/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java
@@ -409,4 +409,18 @@ public class Site2SiteVpnManagerImpl implements Site2SiteVpnManager, Manager {
doDeleteVpnGateway(gw.getId());
return true;
}
+
+ @Override
+ public void markDisconnectVpnConnByVpc(long vpcId) {
+ List<Site2SiteVpnConnectionVO> conns = _vpnConnectionDao.listByVpcId(vpcId);
+ for (Site2SiteVpnConnectionVO conn : conns) {
+ if (conn == null) {
+ continue;
+ }
+ if (conn.getState() == Site2SiteVpnConnection.State.Connected) {
+ conn.setState(Site2SiteVpnConnection.State.Disconnected);
+ _vpnConnectionDao.persist(conn);
+ }
+ }
+ }
}