Parallelize probing the E-W and N-S VMs reachability
Change-Id: Ib52fc905a0af167dc08aac8672f9e2e527af3055
diff --git a/apps/openstacktroubleshoot/app/src/main/java/org/onosproject/openstacktroubleshoot/cli/OpenstackEastWestProbeCommand.java b/apps/openstacktroubleshoot/app/src/main/java/org/onosproject/openstacktroubleshoot/cli/OpenstackEastWestProbeCommand.java
index 918bff6..53cfb31 100644
--- a/apps/openstacktroubleshoot/app/src/main/java/org/onosproject/openstacktroubleshoot/cli/OpenstackEastWestProbeCommand.java
+++ b/apps/openstacktroubleshoot/app/src/main/java/org/onosproject/openstacktroubleshoot/cli/OpenstackEastWestProbeCommand.java
@@ -33,8 +33,11 @@
import java.util.Optional;
import java.util.Set;
+import java.util.concurrent.ExecutorService;
import java.util.stream.Collectors;
+import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor;
+import static org.onlab.util.Tools.groupedThreads;
import static org.onosproject.openstacknetworking.api.InstancePort.State.ACTIVE;
import static org.onosproject.openstacknode.api.OpenstackNode.NodeType.COMPUTE;
@@ -59,6 +62,9 @@
required = false, multiValued = true)
private String[] vmIps = null;
+ private final ExecutorService probeExecutor = newSingleThreadScheduledExecutor(
+ groupedThreads(this.getClass().getSimpleName(), "probe-handler", log));
+
@Override
protected void execute() {
OpenstackTroubleshootService tsService = get(OpenstackTroubleshootService.class);
@@ -142,7 +148,8 @@
dstIps.stream()
.filter(ip -> instPort(instPortService, ip) != null)
.map(ip -> instPort(instPortService, ip))
- .forEach(port -> printReachability(tsService.probeEastWest(srcPort, port)));
+ .forEach(port -> probeExecutor.execute(() ->
+ printReachability(tsService.probeEastWest(srcPort, port))));
}
}
diff --git a/apps/openstacktroubleshoot/app/src/main/java/org/onosproject/openstacktroubleshoot/cli/OpenstackNorthSouthProbeCommand.java b/apps/openstacktroubleshoot/app/src/main/java/org/onosproject/openstacktroubleshoot/cli/OpenstackNorthSouthProbeCommand.java
index c409641..3088d82 100644
--- a/apps/openstacktroubleshoot/app/src/main/java/org/onosproject/openstacktroubleshoot/cli/OpenstackNorthSouthProbeCommand.java
+++ b/apps/openstacktroubleshoot/app/src/main/java/org/onosproject/openstacktroubleshoot/cli/OpenstackNorthSouthProbeCommand.java
@@ -31,7 +31,10 @@
import org.onosproject.openstacktroubleshoot.api.Reachability;
import java.util.Set;
+import java.util.concurrent.ExecutorService;
+import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor;
+import static org.onlab.util.Tools.groupedThreads;
import static org.onosproject.openstacknetworking.api.InstancePort.State.ACTIVE;
import static org.onosproject.openstacknode.api.OpenstackNode.NodeType.GATEWAY;
@@ -56,6 +59,9 @@
required = false, multiValued = true)
private String[] vmIps = null;
+ private final ExecutorService probeExecutor = newSingleThreadScheduledExecutor(
+ groupedThreads(this.getClass().getSimpleName(), "probe-handler", log));
+
@Override
protected void execute() {
OpenstackTroubleshootService tsService = get(OpenstackTroubleshootService.class);
@@ -106,7 +112,8 @@
}
printHeader();
- ports.forEach(port -> printReachability(tsService.probeNorthSouth(port)));
+ ports.forEach(port -> probeExecutor.execute(() ->
+ printReachability(tsService.probeNorthSouth(port))));
}
}