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