Added shortest-path computation tool:
admin@deva-onos1:~/ONOS/web$ ./get_network_graph.py shortest-path 00:00:00:00:00:00:02:01 00:00:00:00:00:00:04:01
[
{
"src-switch": "00:00:00:00:00:00:02:01",
"src-port": 51,
"dst-switch": "00:00:00:00:00:00:01:02",
"dst-port": 4
},
{
"src-switch": "00:00:00:00:00:00:01:02",
"src-port": 3,
"dst-switch": "00:00:00:00:00:00:01:03",
"dst-port": 2
},
{
"src-switch": "00:00:00:00:00:00:01:03",
"src-port": 3,
"dst-switch": "00:00:00:00:00:00:01:04",
"dst-port": 2
},
{
"src-switch": "00:00:00:00:00:00:01:04",
"src-port": 5,
"dst-switch": "00:00:00:00:00:00:04:01",
"dst-port": 26
}
]
Removed extra (empty) new line in the web/get_datagrid_ngevents.py output
Change-Id: I5ac8981447fbe26a26b812e8d811f902665123d7
diff --git a/web/get_datagrid_ngevents.py b/web/get_datagrid_ngevents.py
index 34c3338..f7ef7d4 100755
--- a/web/get_datagrid_ngevents.py
+++ b/web/get_datagrid_ngevents.py
@@ -33,7 +33,7 @@
# Sample output:
def print_datagrid_map(parsedResult):
- print '%s' % (parsedResult)
+ print '%s' % (parsedResult),
def get_datagrid_map():
try:
diff --git a/web/get_network_graph.py b/web/get_network_graph.py
index ed3292b..375e5ff 100755
--- a/web/get_network_graph.py
+++ b/web/get_network_graph.py
@@ -2,7 +2,10 @@
# -*- Mode: python; py-indent-offset: 4; tab-width: 8; indent-tabs-mode: t; -*-
#
-# Get Network Graph Elements
+# Get Network Graph Information:
+# - Switches
+# - Links
+# - Shortest Path
#
import pprint
@@ -10,6 +13,7 @@
import sys
import subprocess
import json
+import collections
import argparse
import io
import time
@@ -35,6 +39,7 @@
# @app.route("/wm/onos/ng/links/json ")
# @app.route("/wm/onos/ng/switches/json ")
+# @app.route("/wm/onos/ng/shortest-path/<src-dpid>/<dst-dpid>/json ")
# Sample output:
def print_parsed_result(parsedResult):
@@ -82,16 +87,39 @@
print_parsed_result(parsedResult)
+def get_network_shortest_path(src_dpid, dst_dpid):
+ try:
+ command = "curl -s \"http://%s:%s/wm/onos/ng/shortest-path/%s/%s/json\"" % (ControllerIP, ControllerPort, src_dpid, dst_dpid)
+ debug("get_network_switches %s" % command)
+
+ result = os.popen(command).read()
+ debug("result %s" % result)
+ if len(result) == 0:
+ print "No Path found"
+ return;
+
+ # parsedResult = result
+ parsedResult = json.loads(result, object_pairs_hook=collections.OrderedDict)
+ parsedResult = json.dumps(parsedResult, indent=4)
+ debug("parsed %s" % parsedResult)
+ except:
+ log_error("Controller IF has issue")
+ exit(1)
+
+ print_parsed_result(parsedResult)
+
if __name__ == "__main__":
usage_msg1 = "Usage:\n"
- usage_msg2 = "%s <elements_name> : Print network elements with name of <elements_name>\n" % (sys.argv[0])
- usage_msg3 = " Valid element names:\n"
- usage_msg4 = " all : Print all network elements\n"
- usage_msg5 = " switches : Print all switches and ports\n"
- usage_msg6 = " links : Print all links\n"
+ usage_msg2 = "%s <arguments> : Print network information\n" % (sys.argv[0])
+ usage_msg3 = " Valid element names:\n"
+ usage_msg4 = " all : Print all network elements\n"
+ usage_msg5 = " switches : Print all switches and ports\n"
+ usage_msg6 = " links : Print all links\n"
+ usage_msg7 = " shortest-path <src-dpid> <dst-dpid> : Print shortest-path\n"
+ usage_msg8 = " (links between <src-dpid> and <dst-dpid>)\n"
usage_msg = usage_msg1 + usage_msg2 + usage_msg3 + usage_msg4 + usage_msg5
- usage_msg = usage_msg + usage_msg6
+ usage_msg = usage_msg + usage_msg6 + usage_msg7 + usage_msg8
# Usage info
if len(sys.argv) > 1 and (sys.argv[1] == "-h" or sys.argv[1] == "--help"):
@@ -103,12 +131,19 @@
log_error(usage_msg)
exit(1)
- if (sys.argv[1] != "all" and sys.argv[1] != "switches" and sys.argv[1] != "links"):
+ if (sys.argv[1] != "all" and sys.argv[1] != "switches" and sys.argv[1] != "links" and sys.argv[1] != "shortest-path"):
log_error(usage_msg)
exit(1)
+ if (sys.argv[1] == "shortest-path"):
+ if len(sys.argv) < 4:
+ log_error(usage_msg)
+ exit(1)
+
# Do the work
if (sys.argv[1] == "all" or sys.argv[1] == "switches"):
get_network_switches()
if (sys.argv[1] == "all" or sys.argv[1] == "links"):
get_network_links()
+ if (sys.argv[1] == "shortest-path"):
+ get_network_shortest_path(sys.argv[2], sys.argv[3])