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])
