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);
+            }
+        }
+    }
 }