Add precommit capability to openstack port service to resolve NPE

Change-Id: I91bdc24a3ba2b586b5503d35a8da4c6824c99765
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingArpHandler.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingArpHandler.java
index 39975dc..9e47a0c 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingArpHandler.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingArpHandler.java
@@ -15,7 +15,6 @@
  */
 package org.onosproject.openstacknetworking.impl;
 
-import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Sets;
 import org.apache.felix.scr.annotations.Activate;
@@ -347,14 +346,14 @@
                         finalGws.remove(gateway);
                         osRouterService.floatingIps().forEach(fip -> {
                             if (fip.getPortId() != null) {
-                                setFloatingIpArpRule(fip, finalGws, false);
+                                setFloatingIpArpRule(fip, fip.getPortId(), finalGws, false);
                                 finalGws.add(gateway);
                             }
                         });
                     }
                     osRouterService.floatingIps().forEach(fip -> {
                         if (fip.getPortId() != null) {
-                            setFloatingIpArpRule(fip, finalGws, true);
+                            setFloatingIpArpRule(fip, fip.getPortId(), finalGws, true);
                         }
                     });
                 } else {
@@ -365,14 +364,14 @@
                     finalGws.add(gateway);
                     osRouterService.floatingIps().forEach(fip -> {
                         if (fip.getPortId() != null) {
-                            setFloatingIpArpRule(fip, finalGws, false);
+                            setFloatingIpArpRule(fip, fip.getPortId(), finalGws, false);
                         }
                     });
                     finalGws.remove(gateway);
                     if (completedGws.size() >= 1) {
                         osRouterService.floatingIps().forEach(fip -> {
                             if (fip.getPortId() != null) {
-                                setFloatingIpArpRule(fip, finalGws, true);
+                                setFloatingIpArpRule(fip, fip.getPortId(), finalGws, true);
                             }
                         });
                     }
@@ -417,10 +416,11 @@
      * without the helps from controller.
      *
      * @param fip       floating IP address
+     * @param portId    port identifier
      * @param gateways  a set of gateway nodes
      * @param install   flow rule installation flag
      */
-    private synchronized void setFloatingIpArpRule(NetFloatingIP fip,
+    private synchronized void setFloatingIpArpRule(NetFloatingIP fip, String portId,
                                                    Set<OpenstackNode> gateways,
                                                    boolean install) {
         if (ARP_BROADCAST_MODE.equals(getArpMode())) {
@@ -430,13 +430,7 @@
                 return;
             }
 
-            if (fip.getPortId() == null) {
-                log.trace("Unknown target ARP request for {}, ignore it",
-                                                    fip.getFloatingIpAddress());
-                return;
-            }
-
-            InstancePort instPort = instancePortService.instancePort(fip.getPortId());
+            InstancePort instPort = instancePortService.instancePort(portId);
             MacAddress targetMac = instPort.macAddress();
 
             OpenstackNode gw = getGwByInstancePort(gateways, instPort);
@@ -530,22 +524,16 @@
                     eventExecutor.execute(() -> {
                         NetFloatingIP osFip = event.floatingIp();
 
-                        if (!Strings.isNullOrEmpty(osFip.getPortId()) &&
-                                instancePortService.instancePort(osFip.getPortId()) != null) {
-                            // associate a floating IP with an existing VM
-                            setFloatingIpArpRule(event.floatingIp(), completedGws, true);
-                        }
+                        // associate a floating IP with an existing VM
+                        setFloatingIpArpRule(event.floatingIp(), event.portId(), completedGws, true);
                     });
                     break;
                 case OPENSTACK_FLOATING_IP_DISASSOCIATED:
                     eventExecutor.execute(() -> {
                         NetFloatingIP osFip = event.floatingIp();
 
-                        if (!Strings.isNullOrEmpty(osFip.getPortId()) &&
-                                instancePortService.instancePort(osFip.getPortId()) != null) {
-                            // associate a floating IP with an existing VM
-                            setFloatingIpArpRule(event.floatingIp(), completedGws, false);
-                        }
+                        // associate a floating IP with an existing VM
+                        setFloatingIpArpRule(event.floatingIp(), event.portId(), completedGws, false);
                     });
                     break;
                 case OPENSTACK_FLOATING_IP_CREATED:
@@ -555,10 +543,7 @@
                         // during floating IP creation, if the floating IP is
                         // associated with any port of VM, then we will set
                         // floating IP related ARP rules to gateway node
-                        if (!Strings.isNullOrEmpty(osFip.getPortId()) &&
-                                instancePortService.instancePort(osFip.getPortId()) != null) {
-                            setFloatingIpArpRule(osFip, completedGws, true);
-                        }
+                        setFloatingIpArpRule(osFip, event.portId(), completedGws, true);
                     });
                     break;
                 case OPENSTACK_FLOATING_IP_REMOVED:
@@ -568,10 +553,7 @@
                         // during floating IP deletion, if the floating IP is
                         // still associated with any port of VM, then we will
                         // remove floating IP related ARP rules from gateway node
-                        if (!Strings.isNullOrEmpty(osFip.getPortId()) &&
-                                instancePortService.instancePort(osFip.getPortId()) != null) {
-                            setFloatingIpArpRule(event.floatingIp(), completedGws, false);
-                        }
+                        setFloatingIpArpRule(event.floatingIp(), event.portId(), completedGws, false);
                     });
                     break;
                 default:
@@ -662,7 +644,7 @@
                     osRouterService.floatingIps().stream()
                             .filter(f -> f.getPortId() != null)
                             .filter(f -> f.getPortId().equals(instPort.portId()))
-                            .forEach(f -> setFloatingIpArpRule(f, gateways, true));
+                            .forEach(f -> setFloatingIpArpRule(f, instPort.portId(), gateways, true));
 
                     break;
                 case OPENSTACK_INSTANCE_MIGRATION_STARTED: