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 <[email protected]>
(cherry picked from commit a98eb12549a900c7f88acc68457957a4a955fecd)
Signed-off-by: animesh <[email protected]>
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 <[email protected]>
Authored: Fri Aug 30 14:27:40 2013 -0700
Committer: animesh <[email protected]>
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