Updated Branches: refs/heads/4.2-forward 6354604ee -> a98eb1254
CLOUDSTACK-4575: Portable IP: disassociating a transferred public IP fails The code is excessively complicated and convoluted. DisassociateIP -> Revoke Rule -> {FW, PF{incl SNAT}, LB, RA VPN} -> -> Send IpAssoc (false) to VR Send all config to VR again -> Send IpAssoc(false) to VR again <---- fails here since it cannot find the VLAN for the IP since it is already gone -> Mark Ip as released The workaround fix would be to not throw an exception in CitrixResourceBase if it is disassociate and the VLAN does not exist on the XS host. Signed-off-by: Chiradeep Vittal <chirad...@apache.org> Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/a98eb125 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/a98eb125 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/a98eb125 Branch: refs/heads/4.2-forward Commit: a98eb12549a900c7f88acc68457957a4a955fecd Parents: 6354604 Author: Chiradeep Vittal <chirad...@apache.org> Authored: Fri Aug 30 14:27:40 2013 -0700 Committer: Chiradeep Vittal <chirad...@apache.org> Committed: Fri Aug 30 14:30:04 2013 -0700 ---------------------------------------------------------------------- .../src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java | 3 +++ 1 file changed, 3 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a98eb125/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java index 815299b..9f254c3 100644 --- a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java +++ b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java @@ -2299,6 +2299,9 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe if (add && correctVif == null) { addVif = true; } + if (!add && correctVif == null) { + return; // it is a disassociateIp and it has already happened + } if (addVif) { // Add a new VIF to DomR