You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by al...@apache.org on 2012/08/13 20:57:51 UTC

git commit: VPC: CS-15968 - don't send ips in Releasing state to the router when the nic is already unplugged for this Vlan

Updated Branches:
  refs/heads/master 55e224f56 -> e74969fde


VPC: CS-15968 - don't send ips in Releasing state to the router when the nic is already unplugged for this Vlan

Conflicts:

	server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java
	server/src/com/cloud/network/rules/RulesManagerImpl.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/e74969fd
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/e74969fd
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/e74969fd

Branch: refs/heads/master
Commit: e74969fdeca58e8e6e5745a93832020b1f67b2b0
Parents: 55e224f
Author: Alena Prokharchyk <al...@citrix.com>
Authored: Mon Aug 13 11:41:55 2012 -0700
Committer: Alena Prokharchyk <al...@citrix.com>
Committed: Mon Aug 13 11:55:34 2012 -0700

----------------------------------------------------------------------
 .../network/firewall/FirewallManagerImpl.java      |    6 ------
 .../network/lb/LoadBalancingRulesManagerImpl.java  |   10 ++++------
 .../VpcVirtualNetworkApplianceManagerImpl.java     |   14 ++++++++------
 .../com/cloud/network/rules/RulesManagerImpl.java  |    5 -----
 4 files changed, 12 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e74969fd/server/src/com/cloud/network/firewall/FirewallManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/firewall/FirewallManagerImpl.java b/server/src/com/cloud/network/firewall/FirewallManagerImpl.java
index 032d878..f112065 100644
--- a/server/src/com/cloud/network/firewall/FirewallManagerImpl.java
+++ b/server/src/com/cloud/network/firewall/FirewallManagerImpl.java
@@ -457,12 +457,6 @@ public class FirewallManagerImpl implements FirewallService, FirewallManager, Ma
 
         //remove the rule
         _firewallDao.remove(rule.getId());
-        
-        if (rule.getSourceIpAddressId() != null) {
-            //if the rule is the last one for the ip address assigned to VPC, unassign it from the network
-            IpAddress ip = _ipAddressDao.findById(rule.getSourceIpAddressId());
-            _vpcMgr.unassignIPFromVpcNetwork(ip.getId(), rule.getNetworkId());
-        }
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e74969fd/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java
index c430c67..ba9923f 100755
--- a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java
+++ b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java
@@ -982,6 +982,9 @@ public class LoadBalancingRulesManagerImpl<Type> implements LoadBalancingRulesMa
                         }
                     }
                 }
+                // if the rule is the last one for the ip address assigned to VPC, unassign it from the network
+                IpAddress ip = _ipAddressDao.findById(lb.getSourceIpAddressId());
+                _vpcMgr.unassignIPFromVpcNetwork(ip.getId(), lb.getNetworkId());
             }
         }
 
@@ -1346,13 +1349,8 @@ public class LoadBalancingRulesManagerImpl<Type> implements LoadBalancingRulesMa
         return _lbDao.findById(lbId);
     }
 
-    protected void removeLBRule(LoadBalancerVO rule) {
-        
+    protected void removeLBRule(LoadBalancerVO rule) { 
         //remove the rule
         _lbDao.remove(rule.getId());
-        
-        //if the rule is the last one for the ip address assigned to VPC, unassign it from the network
-        IpAddress ip = _ipAddressDao.findById(rule.getSourceIpAddressId());
-        _vpcMgr.unassignIPFromVpcNetwork(ip.getId(), rule.getNetworkId());
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e74969fd/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 41bd45c..ce5ba34 100644
--- a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
+++ b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
@@ -602,12 +602,13 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
             }
         }
         
-        //3) apply the rules
+        //3) apply the ips
         boolean result = applyRules(network, routers, "vpc ip association", false, null, false, new RuleApplier() {
             @Override
             public boolean execute(Network network, VirtualRouter router) throws ResourceUnavailableException {
                 Commands cmds = new Commands(OnError.Continue);
                 Map<String, String> vlanMacAddress = new HashMap<String, String>();
+                List<PublicIpAddress> ipsToSend = new ArrayList<PublicIpAddress>();
                 for (PublicIpAddress ipAddr : ipAddress) {
                     
                     String broadcastURI = BroadcastDomainType.Vlan.toUri(ipAddr.getVlanTag()).toString();
@@ -620,14 +621,15 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
                             throw new CloudRuntimeException("Unable to find the nic in network " + ipAddr.getNetworkId() + 
                                     "  to apply the ip address " + ipAddr  + " for");
                         }
-                        macAddress = ipAddr.getMacAddress();
+                        s_logger.debug("Not sending release for ip address " + ipAddr + 
+                                " as its nic is already gone from VPC router " + router);
                     } else {
                         macAddress = nic.getMacAddress();
-                    }
-                    
-                    vlanMacAddress.put(ipAddr.getVlanTag(), macAddress);
+                        vlanMacAddress.put(ipAddr.getVlanTag(), macAddress);
+                        ipsToSend.add(ipAddr);
+                    }   
                 }
-                createVpcAssociatePublicIPCommands(router, ipAddress, cmds, vlanMacAddress);
+                createVpcAssociatePublicIPCommands(router, ipsToSend, cmds, vlanMacAddress);
                 return sendCommandsToRouter(router, cmds);
             }
         });

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e74969fd/server/src/com/cloud/network/rules/RulesManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/rules/RulesManagerImpl.java b/server/src/com/cloud/network/rules/RulesManagerImpl.java
index 73cc6bb..6e57009 100755
--- a/server/src/com/cloud/network/rules/RulesManagerImpl.java
+++ b/server/src/com/cloud/network/rules/RulesManagerImpl.java
@@ -1394,11 +1394,6 @@ public class RulesManagerImpl implements RulesManager, RulesService, Manager {
 
     
     protected void removePFRule(PortForwardingRuleVO rule) {
-        
         _portForwardingDao.remove(rule.getId());
-        
-        //if the rule is the last one for the ip address assigned to VPC, unassign it from the network
-        IpAddress ip = _ipAddressDao.findById(rule.getSourceIpAddressId());
-        _vpcMgr.unassignIPFromVpcNetwork(ip.getId(), rule.getNetworkId());   
     }
 }