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;