Hi!

I use ryu (especially 'ryu/ryu/app/gui_topology') to visualize switch topology. My use case is to detect failure of a switch and define new bypass-route(flow).

To emulate a switch failure, I use 'switch stop/start' mininet GUI commands and watch topology by 'gui_topology.'
Unfortunately,'gui_topology' often miss-track right dpid.
It seems 'dpid' values do not treat as d3 data primary-key.

Hope this patch helps!

Thank you in advance,
N. Arakawa

>From 123c1d986e0f89475d80d83fabc11c99580e007a Mon Sep 17 00:00:00 2001
From: "N. Arakawa" <n...@u01.gate01.com>
Date: Thu, 15 Aug 2019 09:52:45 +0900
Subject: [PATCH] correct js in gui_topology to track right dpid

Signed-off-by: N. Arakawa <n...@u01.gate01.com>
---
 ryu/app/gui_topology/html/ryu.topology.js | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/ryu/app/gui_topology/html/ryu.topology.js b/ryu/app/gui_topology/html/ryu.topology.js
index c333dce5..dff9a3a3 100644
--- a/ryu/app/gui_topology/html/ryu.topology.js
+++ b/ryu/app/gui_topology/html/ryu.topology.js
@@ -62,6 +62,8 @@ function _dragstart(d) {
     d3.json("/stats/flow/" + dpid, function(e, data) {
         flows = data[dpid];
         console.log(flows);
+        elem.console.selectAll("h1").remove();
+        elem.console.append("h1").text("/stats/flow/dpid:" + dpid.toString(16) + "(" + dpid +  ")" );
         elem.console.selectAll("ul").remove();
         li = elem.console.append("ul")
             .selectAll("li");
@@ -84,7 +86,7 @@ elem.update = function () {
     this.link.enter().append("line")
         .attr("class", "link");
 
-    this.node = this.node.data(topo.nodes);
+    this.node = this.node.data(topo.nodes, function(d) { return d.dpid; })
     this.node.exit().remove();
     var nodeEnter = this.node.enter().append("g")
         .attr("class", "node")
-- 
2.20.1

_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to