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/DistributedInstancePortStore.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/DistributedInstancePortStore.java
index f663980..b313cce 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/DistributedInstancePortStore.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/DistributedInstancePortStore.java
@@ -48,6 +48,7 @@
 import static org.onosproject.openstacknetworking.api.Constants.OPENSTACK_NETWORKING_APP_ID;
 import static org.onosproject.openstacknetworking.api.InstancePort.State.ACTIVE;
 import static org.onosproject.openstacknetworking.api.InstancePort.State.INACTIVE;
+import static org.onosproject.openstacknetworking.api.InstancePort.State.MIGRATED;
 import static org.onosproject.openstacknetworking.api.InstancePort.State.MIGRATING;
 import static org.onosproject.openstacknetworking.api.InstancePortEvent.Type.OPENSTACK_INSTANCE_MIGRATION_ENDED;
 import static org.onosproject.openstacknetworking.api.InstancePortEvent.Type.OPENSTACK_INSTANCE_MIGRATION_STARTED;
@@ -169,12 +170,7 @@
                     break;
                 case UPDATE:
                     log.debug("Instance port updated");
-                    eventExecutor.execute(() -> {
-                            notifyDelegate(new InstancePortEvent(
-                                    OPENSTACK_INSTANCE_PORT_UPDATED,
-                                    event.newValue().value()));
-                            processInstancePortUpdate(event);
-                    });
+                    eventExecutor.execute(() -> processInstancePortUpdate(event));
                     break;
                 case REMOVE:
                     log.debug("Instance port removed");
@@ -198,25 +194,41 @@
                 notifyDelegate(new InstancePortEvent(
                         OPENSTACK_INSTANCE_MIGRATION_STARTED,
                         event.newValue().value()));
+                return;
             }
 
-            if (oldState == MIGRATING && newState == ACTIVE) {
+            if (oldState == MIGRATING && newState == MIGRATED) {
                 notifyDelegate(new InstancePortEvent(
                         OPENSTACK_INSTANCE_MIGRATION_ENDED,
                         event.newValue().value()));
+                updateInstancePort(event.newValue().value().updateState(ACTIVE));
+                return;
             }
 
             if (oldState == ACTIVE && newState == INACTIVE) {
                 notifyDelegate(new InstancePortEvent(
                         OPENSTACK_INSTANCE_TERMINATED,
                         event.newValue().value()));
+                return;
             }
 
             if (oldState == INACTIVE && newState == ACTIVE) {
                 notifyDelegate(new InstancePortEvent(
                         OPENSTACK_INSTANCE_RESTARTED,
                         event.newValue().value()));
+                return;
             }
+
+            // this should be auto-transition
+            if (oldState == MIGRATED && newState == ACTIVE) {
+                return;
+            }
+
+            notifyDelegate(new InstancePortEvent(
+                    OPENSTACK_INSTANCE_PORT_UPDATED,
+                    event.newValue().value()));
+
+            // TODO: need to handle cold migration
         }
     }
 }