ONOS-248 Added ability to visualize counts of device flows along egress links.
Change-Id: I4587c4a285025fb12e616391cdae91966d976c97
diff --git a/web/gui/src/main/java/org/onlab/onos/gui/TopologyViewWebSocket.java b/web/gui/src/main/java/org/onlab/onos/gui/TopologyViewWebSocket.java
index 99e9aeb..104fa95 100644
--- a/web/gui/src/main/java/org/onlab/onos/gui/TopologyViewWebSocket.java
+++ b/web/gui/src/main/java/org/onlab/onos/gui/TopologyViewWebSocket.java
@@ -42,6 +42,7 @@
import org.onlab.osgi.ServiceDirectory;
import java.io.IOException;
+import java.util.HashSet;
import java.util.Set;
import java.util.Timer;
import java.util.TimerTask;
@@ -167,6 +168,7 @@
processMessage((ObjectNode) mapper.reader().readTree(data));
} catch (Exception e) {
log.warn("Unable to parse GUI request {} due to {}", data, e);
+ log.warn("Boom!!!!", e);
}
}
@@ -183,6 +185,8 @@
requestTraffic(event);
} else if (type.equals("requestAllTraffic")) {
requestAllTraffic(event);
+ } else if (type.equals("requestDeviceLinkFlows")) {
+ requestDeviceLinkFlows(event);
} else if (type.equals("cancelTraffic")) {
cancelTraffic(event);
}
@@ -263,6 +267,26 @@
sendMessage(trafficSummaryMessage(sid));
}
+ private void requestDeviceLinkFlows(ObjectNode event) {
+ ObjectNode payload = payload(event);
+ long sid = number(event, "sid");
+ monitorRequest = event;
+
+ // Get the set of selected hosts and their intents.
+ ArrayNode ids = (ArrayNode) payload.path("ids");
+ Set<Host> hosts = new HashSet<>();
+ Set<Device> devices = getDevices(ids);
+
+ // If there is a hover node, include it in the hosts and find intents.
+ String hover = string(payload, "hover");
+ Set<Intent> hoverIntents;
+ if (!isNullOrEmpty(hover)) {
+ addHover(hosts, devices, hover);
+ }
+ sendMessage(flowSummaryMessage(sid, devices));
+ }
+
+
// Subscribes for host traffic messages.
private synchronized void requestTraffic(ObjectNode event) {
ObjectNode payload = payload(event);
@@ -374,6 +398,8 @@
String type = string(monitorRequest, "event", "unknown");
if (type.equals("requestAllTraffic")) {
requestAllTraffic(monitorRequest);
+ } else if (type.equals("requestDeviceLinkFlows")) {
+ requestDeviceLinkFlows(monitorRequest);
} else {
requestTraffic(monitorRequest);
}