Refactor: install rules in a separated thread to avoid thread blocking

Change-Id: I10ff88fb56f9358ec948f01176d6fe20d91e37c0
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingHandler.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingHandler.java
index e63444f..9039ed2 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingHandler.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingHandler.java
@@ -47,7 +47,6 @@
 import org.onosproject.openstacknetworking.api.OpenstackNetworkEvent;
 import org.onosproject.openstacknetworking.api.OpenstackNetworkListener;
 import org.onosproject.openstacknetworking.api.OpenstackNetworkService;
-import org.onosproject.openstacknetworking.api.OpenstackSecurityGroupService;
 import org.onosproject.openstacknode.api.OpenstackNode;
 import org.onosproject.openstacknode.api.OpenstackNodeService;
 import org.openstack4j.model.network.Network;
@@ -129,9 +128,6 @@
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected OpenstackNodeService osNodeService;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    protected OpenstackSecurityGroupService securityGroupService;
-
     private final ExecutorService eventExecutor = newSingleThreadExecutor(
             groupedThreads(this.getClass().getSimpleName(), "event-handler"));
     private final InstancePortListener instancePortListener = new InternalInstancePortListener();
@@ -797,7 +793,7 @@
             boolean isNwAdminStateUp = event.subject().isAdminStateUp();
             boolean isPortAdminStateUp = event.port().isAdminStateUp();
 
-            InstancePort instPort = instancePortService.instancePort(event.port().getId());
+            String portId = event.port().getId();
 
             switch (event.type()) {
                 case OPENSTACK_NETWORK_CREATED:
@@ -812,20 +808,20 @@
                     break;
                 case OPENSTACK_PORT_CREATED:
                 case OPENSTACK_PORT_UPDATED:
-
-                    if (instPort != null) {
-                        eventExecutor.execute(() ->
-                                setPortBlockRules(instPort, !isPortAdminStateUp));
-                    }
-
+                    eventExecutor.execute(() -> {
+                        InstancePort instPort = instancePortService.instancePort(portId);
+                        if (instPort != null) {
+                            setPortBlockRules(instPort, !isPortAdminStateUp);
+                        }
+                    });
                     break;
                 case OPENSTACK_PORT_REMOVED:
-
-                    if (instPort != null) {
-                        eventExecutor.execute(() ->
-                                setPortBlockRules(instPort, false));
-                    }
-
+                    eventExecutor.execute(() -> {
+                        InstancePort instPort = instancePortService.instancePort(portId);
+                        if (instPort != null) {
+                            setPortBlockRules(instPort, false);
+                        }
+                    });
                     break;
                 default:
                     break;