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> (cherry picked from commit a98eb12549a900c7f88acc68457957a4a955fecd) Signed-off-by: animesh <anim...@apache.org> Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/655c3753 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/655c3753 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/655c3753 Branch: refs/heads/4.2 Commit: 655c3753b1f990cac95e86439e7ef276b6c0dc06 Parents: eb85ff6 Author: Chiradeep Vittal <chirad...@apache.org> Authored: Fri Aug 30 14:27:40 2013 -0700 Committer: animesh <anim...@apache.org> Committed: Tue Sep 3 16:28:07 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/655c3753/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