CS-15503: don't send Ips in Releasing state as a part of VPC VR start

Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/55db1129
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/55db1129
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/55db1129

Branch: refs/heads/vpc
Commit: 55db112990f695800aebec23f5bdfc0fc6e4c162
Parents: 2151907
Author: Alena Prokharchyk <[email protected]>
Authored: Mon Jul 9 15:30:50 2012 -0700
Committer: Alena Prokharchyk <[email protected]>
Committed: Mon Jul 9 18:23:50 2012 -0700

----------------------------------------------------------------------
 .../router/VirtualNetworkApplianceManagerImpl.java |   18 +++++++++++++-
 .../VpcVirtualNetworkApplianceManagerImpl.java     |    5 ++-
 2 files changed, 19 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/55db1129/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 16ef4cc..efbf241 100755
--- 
a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++ 
b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@ -2060,15 +2060,29 @@ public class VirtualNetworkApplianceManagerImpl 
implements VirtualNetworkApplian
         }
     }
 
-    protected ArrayList<? extends PublicIpAddress> 
getPublicIpsToApply(VirtualRouter router, Provider provider, Long 
guestNetworkId) {
+    protected ArrayList<? extends PublicIpAddress> 
getPublicIpsToApply(VirtualRouter router, Provider provider, 
+            Long guestNetworkId, com.cloud.network.IpAddress.State... 
skipInStates) {
         long ownerId = router.getAccountId();
         final List<IPAddressVO> userIps = 
_networkMgr.listPublicIpsAssignedToGuestNtwk(ownerId, guestNetworkId, null);
         List<PublicIp> allPublicIps = new ArrayList<PublicIp>();
         if (userIps != null && !userIps.isEmpty()) {
+            boolean addIp = true;
             for (IPAddressVO userIp : userIps) {
+                if (skipInStates != null) {
+                    for (IpAddress.State stateToSkip : skipInStates) {
+                        if (userIp.getState() == stateToSkip) {
+                            s_logger.debug("Skipping ip address " + userIp + " 
in state " + userIp.getState());
+                            addIp = false;
+                            break;
+                        }
+                    }
+                }
+                
+                if (addIp) {
                     PublicIp publicIp = new PublicIp(userIp, 
_vlanDao.findById(userIp.getVlanId()), 
                             
NetUtils.createSequenceBasedMacAddress(userIp.getMacAddress()));
-                allPublicIps.add(publicIp);
+                    allPublicIps.add(publicIp);
+                }
             }
         }
         

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/55db1129/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 887f284..2e7bd25 100644
--- 
a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
+++ 
b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
@@ -18,6 +18,7 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import javax.ejb.Local;
 
@@ -1030,13 +1031,12 @@ public class VpcVirtualNetworkApplianceManagerImpl 
extends VirtualNetworkApplian
     protected void finalizeIpAssocForNetwork(Commands cmds, VirtualRouter 
router, Provider provider, 
             Long guestNetworkId) {
         
-        ArrayList<? extends PublicIpAddress> publicIps = 
getPublicIpsToApply(router, provider, guestNetworkId);
+        ArrayList<? extends PublicIpAddress> publicIps = 
getPublicIpsToApply(router, provider, guestNetworkId, 
IpAddress.State.Releasing);
         
         if (publicIps != null && !publicIps.isEmpty()) {
             s_logger.debug("Found " + publicIps.size() + " ip(s) to apply as a 
part of domR " + router + " start.");
             // Re-apply public ip addresses - should come before PF/LB/VPN
             createVpcAssociatePublicIPCommands(router, publicIps, cmds);
-            
         }
     }
 
@@ -1209,4 +1209,5 @@ public class VpcVirtualNetworkApplianceManagerImpl 
extends VirtualNetworkApplian
         privateNic.setMacAddress(ip.getMacAddress());
         return privateNic;
     }
+   
 }

Reply via email to