From d83669920958093e5fa528598cc85a13e0176628 Mon Sep 17 00:00:00 2001 From: Alena Prokharchyk Date: Mon, 5 Dec 2011 17:28:08 -0800 Subject: [PATCH] restartNetwork: don't try to disassoc the sourceNat IP on the domR --- api/src/com/cloud/network/IpAddress.java | 2 ++ server/src/com/cloud/network/addr/PublicIp.java | 5 +++++ .../router/VirtualNetworkApplianceManagerImpl.java | 8 +++----- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/api/src/com/cloud/network/IpAddress.java b/api/src/com/cloud/network/IpAddress.java index acd2a700ff9..e418da53969 100644 --- a/api/src/com/cloud/network/IpAddress.java +++ b/api/src/com/cloud/network/IpAddress.java @@ -75,4 +75,6 @@ public interface IpAddress extends ControlledEntity { * @return database id. */ long getId(); + + void setState(IpAddress.State state); } diff --git a/server/src/com/cloud/network/addr/PublicIp.java b/server/src/com/cloud/network/addr/PublicIp.java index 0765fcbe6d9..ffa1f2b5c04 100644 --- a/server/src/com/cloud/network/addr/PublicIp.java +++ b/server/src/com/cloud/network/addr/PublicIp.java @@ -176,4 +176,9 @@ public class PublicIp implements PublicIpAddress { public Long getPhysicalNetworkId() { return _vlan.getPhysicalNetworkId(); } + + @Override + public void setState(State state) { + _addr.setState(state); + } } diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index 26584fc5ebb..6bf550fe0bc 100755 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -2365,9 +2365,9 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian if (ipList == null) { ipList = new ArrayList(); } - //domR doesn't support release for sourceNat IP address + //domR doesn't support release for sourceNat IP address; so reset the state if (ipAddress.isSourceNat() && ipAddress.getState() == IpAddress.State.Releasing) { - continue; + ipAddress.setState(IpAddress.State.Allocated); } ipList.add(ipAddress); vlanIpMap.put(vlanTag, ipList); @@ -2412,8 +2412,6 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian if (!firstIP || add) { firstIP = false; } - - } IpAssocCommand cmd = new IpAssocCommand(ipsToSend); cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, router.getPrivateIpAddress()); @@ -2689,7 +2687,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian // Have to resend all already associated ip addresses createAssociateIPCommands(router, ipAddress, cmds, 0); - try{ + try{ result = sendCommandsToRouter(router, cmds); connectedRouters.add(router); } catch (AgentUnavailableException e) {