added 'show router' command in CLI
diff --git a/cli/cli/c_actions.py b/cli/cli/c_actions.py
index ad709f4..a9ebf0a 100755
--- a/cli/cli/c_actions.py
+++ b/cli/cli/c_actions.py
@@ -1974,10 +1974,26 @@
         print "command_display_rest: result ", result
 
     entries = json.loads(result)
-
+    if 'router' in data  and data['router'] == 'router':
+        combResult = []
+        for entry in entries:
+            attributes = entry.get('stringAttributes')
+            #raise error.ArgumentValidationError('\n\n\n %s' % (attributes))
+            combResult.append({
+                       'dpid'           : entry.get('dpid'),
+                       'routerIP'       : attributes['routerIp'],
+                       'name'           : attributes['name'],
+                       'isEdgeRouter'   : attributes['isEdgeRouter'],
+                       'routerMac'      : attributes['routerMac'],
+                       'nodeSId'        : attributes['nodeSid'],
+                       })
+        entries = combResult
+        #raise error.ArgumentValidationError('\n\n\n %s' % (attributes))
     #if 'realtimestats' in data and data['realtimestats'] == 'group':
 
     entries2 = None
+    
+         
     if 'realtimestats' in data and data['realtimestats'] == 'group':
         url2 = "http://%s/rest/v1/" % sdnsh.controller + ("realtimestats/groupdesc/%(dpid)s/" % data)
         result2 = sdnsh.store.rest_simple_request(url2)
@@ -2024,7 +2040,6 @@
                        'actions'                 : actions,
                     })
         elif data['tabletype'] == 'mpls':
-            import unicodedata
             for ipTableEntry in entries:
                 match = ipTableEntry['match']
                 mplsTc =  '*'
diff --git a/cli/cli/desc/version200/core.py b/cli/cli/desc/version200/core.py
index 0973daf..3c799f7 100755
--- a/cli/cli/desc/version200/core.py
+++ b/cli/cli/desc/version200/core.py
@@ -2494,6 +2494,37 @@
     },
 }
 
+
+
+
+ROUTER_FORMAT = {
+    'router'     : {
+        'field-orderings' : {
+            'default' : ['dpid','name', 'routerIP','routerMac','isEdgeRouter','nodeSId'
+                         ],
+            },
+        'fields': {
+            'dpid'               : { 'verbose-name' : 'RouterDPID',
+                                        #'formatter' : fmtcnv.replace_switch_with_alias
+                                        },
+            'name'                 : { 'verbose-name' : 'RouterName',
+                                       #'formatter' : fmtcnv.decode_port_counter
+                                       },
+            'routerIP'                   : { 'verbose-name' : 'RouterIP',
+                                      },
+            'routerMac'                  : { 'verbose-name' : 'RouterMac',
+                                       #'formatter' : fmtcnv.decode_port_counter
+                                     },
+            'isEdgeRouter'                  : { 'verbose-name' : 'isEdgeRouter',
+                                       #'formatter' : fmtcnv.decode_port_counter
+                                     },
+            'nodeSId'                     : { 'verbose-name' : 'nodeSId',
+                                       #'formatter' : fmtcnv.decode_port_counter
+                                     },
+            }
+        },
+}
+
 """
 SWITCH_CLUSTER_FORMAT = {
     'switch-cluster' : {
diff --git a/cli/sdncon/rest/views.py b/cli/sdncon/rest/views.py
index 545fe98..78f88d2 100755
--- a/cli/sdncon/rest/views.py
+++ b/cli/sdncon/rest/views.py
@@ -722,6 +722,16 @@
     return get_sdnplatform_response(url)        
 
 @safe_rest_view
+def do_routers(request):
+    if onos == 0:
+        url = controller_url("core", "controller", "switches", "json")
+    else:
+        url = controller_url("onos","segmentrouting", "routers")
+    if request.META['QUERY_STRING']:
+        url += '?' + request.META['QUERY_STRING']
+    return get_sdnplatform_response(url)        
+
+@safe_rest_view
 def do_mastership(request):
     url = controller_url("onos", "registry", "switches" ,"json")
     #url = "http://127.0.0.1:8080/wm/onos/registry/switches/json"
diff --git a/cli/sdncon/urls.py b/cli/sdncon/urls.py
index 5d522de..a850a10 100755
--- a/cli/sdncon/urls.py
+++ b/cli/sdncon/urls.py
@@ -70,6 +70,7 @@
     # REST API VNS/device information
     (r'^rest/v1/device', 'sdncon.rest.views.do_device'),
     (r'^rest/v1/switches', 'sdncon.rest.views.do_switches'),
+    (r'^rest/v1/routers', 'sdncon.rest.views.do_routers'),
     (r'^rest/v1/links', 'sdncon.rest.views.do_links'),
     (r'^rest/v1/mastership', 'sdncon.rest.views.do_mastership'),
     (r'^rest/v1/vns/device-interface', 'sdncon.rest.views.do_vns_device_interface'),
diff --git a/src/main/java/net/floodlightcontroller/core/web/serializers/OFFlowStatsEntryModSerializer.java b/src/main/java/net/floodlightcontroller/core/web/serializers/OFFlowStatsEntryModSerializer.java
index f413fd2..6080cb4 100644
--- a/src/main/java/net/floodlightcontroller/core/web/serializers/OFFlowStatsEntryModSerializer.java
+++ b/src/main/java/net/floodlightcontroller/core/web/serializers/OFFlowStatsEntryModSerializer.java
@@ -39,7 +39,6 @@
         
         List<OFInstruction> instructions = flowStatsEntry.getInstructions();
         jGen.writeStartObject();
-        //System.out.println("flowstats:\n\n\n"+ flowStatsEntry);
         jGen.writeNumberField("byteCount", flowStatsEntry.getByteCount().getValue());
         jGen.writeNumberField("packetCount", flowStatsEntry.getPacketCount().getValue());
         jGen.writeNumberField("priority", flowStatsEntry.getPriority());
diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/SegmentRoutingManager.java b/src/main/java/net/onrc/onos/apps/segmentrouting/SegmentRoutingManager.java
index 0a90a89..e3d3470 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/SegmentRoutingManager.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/SegmentRoutingManager.java
@@ -27,9 +27,11 @@
 import net.floodlightcontroller.core.module.IFloodlightModule;
 import net.floodlightcontroller.core.module.IFloodlightService;
 import net.floodlightcontroller.core.util.SingletonTask;
+import net.floodlightcontroller.restserver.IRestApiService;
 import net.floodlightcontroller.threadpool.IThreadPoolService;
 import net.onrc.onos.api.packet.IPacketListener;
 import net.onrc.onos.api.packet.IPacketService;
+import net.onrc.onos.apps.segmentrouting.web.SegmentRoutingWebRoutable;
 import net.onrc.onos.core.flowprogrammer.IFlowPusherService;
 import net.onrc.onos.core.intent.Path;
 import net.onrc.onos.core.main.config.IConfigInfoService;
@@ -80,7 +82,8 @@
     private static final Logger log = LoggerFactory
             .getLogger(SegmentRoutingManager.class);
 
-        private ITopologyService topologyService;
+    private ITopologyService topologyService;
+    private IRestApiService restApi;
     private IPacketService packetService;
     private MutableTopology mutableTopology;
     private ConcurrentLinkedQueue<IPv4> ipPacketQueue;
@@ -127,6 +130,7 @@
         l.add(IPacketService.class);
         l.add(IFlowPusherService.class);
         l.add(ITopologyService.class);
+        l.add(IRestApiService.class);
 
         return l;
 
@@ -147,6 +151,8 @@
         graphs = new HashMap<Switch, ECMPShortestPathGraph>();
         linksDown = new HashMap<String, LinkData>();
         linksToAdd = new HashMap<String, LinkData>();
+        //topologyLinks = new HashSet<LinkData>();
+        restApi = context.getServiceImpl(IRestApiService.class);
         topologyEventQueue = new ConcurrentLinkedQueue<TopologyEvents>();
 
         this.packetService = context.getServiceImpl(IPacketService.class);
@@ -158,6 +164,7 @@
     @Override
     public void startUp(FloodlightModuleContext context) throws FloodlightModuleException {
         ScheduledExecutorService ses = threadPool.getScheduledExecutor();
+        restApi.addRestletRoutable(new SegmentRoutingWebRoutable());
 
         discoveryTask = new SingletonTask(ses, new Runnable() {
             @Override
diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/web/RouterStatisticsResource.java b/src/main/java/net/onrc/onos/apps/segmentrouting/web/RouterStatisticsResource.java
new file mode 100644
index 0000000..8e79639
--- /dev/null
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/web/RouterStatisticsResource.java
@@ -0,0 +1,42 @@
+package net.onrc.onos.apps.segmentrouting.web;
+
+import java.util.HashMap;
+
+import net.floodlightcontroller.core.web.ControllerSwitchesResource;
+import net.onrc.onos.core.topology.ITopologyService;
+import net.onrc.onos.core.topology.MutableTopology;
+
+import org.restlet.resource.ResourceException;
+import org.restlet.resource.ServerResource;
+import org.restlet.representation.Representation;
+import org.restlet.resource.Get;
+import static net.onrc.onos.core.topology.web.TopologyResource.eval;
+/**
+ * Base class for return router statistics
+ *
+ */
+public class RouterStatisticsResource extends ServerResource {
+    /**
+     * Gets the switches and ports information from the network topology.
+     *
+     * @return a Representation of a Collection of switches from the network
+     * topology. Each switch contains the switch ports.
+     */
+    @Get("json")
+    public Representation retrieve() {
+        ITopologyService topologyService =
+            (ITopologyService) getContext().getAttributes()
+                .get(ITopologyService.class.getCanonicalName());
+
+        MutableTopology mutableTopology = topologyService.getTopology();
+        mutableTopology.acquireReadLock();
+        try {
+            return eval(toRepresentation(mutableTopology.getSwitches(), null));
+        } finally {
+            mutableTopology.releaseReadLock();
+        }
+    }
+ 
+    
+
+}
diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRoutingWebRoutable.java b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRoutingWebRoutable.java
new file mode 100644
index 0000000..3e121d6
--- /dev/null
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRoutingWebRoutable.java
@@ -0,0 +1,28 @@
+package net.onrc.onos.apps.segmentrouting.web;
+
+import org.restlet.Context;
+import org.restlet.Restlet;
+import org.restlet.routing.Router;
+
+import net.floodlightcontroller.restserver.RestletRoutable;
+import net.onrc.onos.core.topology.web.SwitchesResource;
+/**
+ *  Handle all URI's for SegmentRouter web
+ *
+ */
+
+public class SegmentRoutingWebRoutable implements RestletRoutable {
+
+    @Override
+    public Restlet getRestlet(Context context) {
+        Router router = new Router(context);
+        router.attach("/routers",  SwitchesResource.class);
+        return router;
+    }
+
+    @Override
+    public String basePath() {
+        return "/wm/onos/segmentrouting";
+    }
+
+}