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

Reply via email to