Simplified the port handling logic for VM live migration case
Change-Id: Ib28978bb2ee62c4719261c38eebb72a006f81f19
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingArpHandler.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingArpHandler.java
index fa72289..3131263 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingArpHandler.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingArpHandler.java
@@ -86,6 +86,7 @@
import static org.onosproject.openstacknetworking.api.Constants.PRIORITY_ARP_REQUEST_RULE;
import static org.onosproject.openstacknetworking.api.Constants.PRIORITY_ARP_SUBNET_RULE;
import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.getPropertyValue;
+import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.swapStaleLocation;
import static org.onosproject.openstacknetworking.util.RulePopulatorUtil.buildExtension;
import static org.onosproject.openstacknode.api.OpenstackNode.NodeType.COMPUTE;
@@ -749,8 +750,8 @@
@Override
public void event(InstancePortEvent event) {
switch (event.type()) {
- case OPENSTACK_INSTANCE_PORT_UPDATED:
case OPENSTACK_INSTANCE_PORT_DETECTED:
+ case OPENSTACK_INSTANCE_PORT_UPDATED:
setArpRequestRule(event.subject(), true);
setArpReplyRule(event.subject(), true);
break;
@@ -758,8 +759,13 @@
setArpRequestRule(event.subject(), false);
setArpReplyRule(event.subject(), false);
break;
+ case OPENSTACK_INSTANCE_MIGRATION_STARTED:
+ setArpRequestRule(event.subject(), true);
+ setArpReplyRule(event.subject(), true);
+ break;
case OPENSTACK_INSTANCE_MIGRATION_ENDED:
- setArpRequestRule(event.subject(), false);
+ InstancePort revisedInstPort = swapStaleLocation(event.subject());
+ setArpRequestRule(revisedInstPort, false);
break;
default:
break;