Improvement in 'show tunnel' command
diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/ISegmentRoutingService.java b/src/main/java/net/onrc/onos/apps/segmentrouting/ISegmentRoutingService.java
index 9a887ae..add898f 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/ISegmentRoutingService.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/ISegmentRoutingService.java
@@ -66,4 +66,15 @@
      */
 
     public Collection<TunnelInfo> getTunnelTable();
+    /**
+     * Get the first group ID for the tunnel for specific source router
+     * If Segment Stitching was required to create the tunnel, there are
+     * mutiple source routers.
+     *
+     * @param tunnelId ID for the tunnel
+     * @param dpid source router DPID
+     * @return the first group ID of the tunnel and -1 if sw with specifed
+     * dpid is not found
+     */
+    public int getTunnelGroupId(String tunnelId, String dpid);
 }
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 f8bfc11..3ed4bdf 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/SegmentRoutingManager.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/SegmentRoutingManager.java
@@ -215,7 +215,7 @@
         });
 
         testMode = POLICY_ADD1;
-        //testTask.reschedule(20, TimeUnit.SECONDS);
+        testTask.reschedule(20, TimeUnit.SECONDS);
     }
 
     @Override
@@ -949,13 +949,6 @@
         private String tunnelId;
         private int type;
 
-        public PolicyInfo(String pid, PacketMatch match, int priority, String tid) {
-            this.policyId = pid;
-            this.match = match;
-            this.priority = priority;
-            this.tunnelId = tid;
-        }
-
         public PolicyInfo(String pid, int type, PacketMatch match, int priority,
                 String tid) {
             this.policyId = pid;
@@ -964,6 +957,29 @@
             this.tunnelId = tid;
             this.type = type;
         }
+        
+        public PolicyInfo(String pid, PacketMatch match, int priority,
+                String tid) {
+            this.policyId = pid;
+            this.match = match;
+            this.priority = priority;
+            this.tunnelId = tid;
+        }
+        public String getPolicyId(){
+            return this.policyId;
+        }
+        public PacketMatch getMatch(){
+            return this.match;
+        }
+        public int getPriority(){
+            return this.priority;
+        }
+        public String getTunnelId(){
+            return this.tunnelId;
+        }
+        public int getType(){
+            return this.type;
+        }
     }
 
     public class TunnelInfo {
@@ -1211,6 +1227,9 @@
             routeInfo.setSrcDpid(srcSw.getDpid().toString());
             String nodeId = route.get(1);
             List<Dpid> fwdSwDpids = getForwardingSwitchForNodeId(srcSw, nodeId);
+            if (fwdSwDpids == null){
+                return null;
+            }
             for (Dpid dpid: fwdSwDpids) {
                 if (getMplsLabel(dpid.toString()).toString().equals(nodeId)) {
                     List<Dpid> fwdSws = new ArrayList<Dpid>();
@@ -1718,8 +1737,8 @@
                 this.createPolicy("2", null, null, Ethernet.TYPE_IPV4, srcIp,
                         dstIp, IPv4.PROTOCOL_ICMP, (short)-1, (short)-1, 20000,
                         "2");
-                testMode = POLICY_REMOVE2;
-                testTask.reschedule(5, TimeUnit.SECONDS);
+                //testMode = POLICY_REMOVE2;
+                //testTask.reschedule(5, TimeUnit.SECONDS);
             }
             else {
                 log.debug("Retry it");
diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelInfo.java b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelInfo.java
index cd6f9be..4c6457a 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelInfo.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelInfo.java
@@ -1,30 +1,28 @@
 package net.onrc.onos.apps.segmentrouting.web;
 
 import java.util.List;
-
 /**
  * This class contains tunnel info of ONOS Segement Routing App
  * Used for rest API
  */
 public class SegmentRouterTunnelInfo {
     private String tunnelId;
-    // private List<Dpid> nodes;
     private List<List<String>> labelStack;
-
-    public SegmentRouterTunnelInfo(String tId, /*List<Dpid> dpids,*/
-            List<List<String>> tunnelRoutes){
+    private List<String> dpidGroup;
+    
+    public SegmentRouterTunnelInfo (String tId,
+            List<List<String>> tunnelRoutes, List<String> dpidsWithGroup){
         this.tunnelId = tId;
-        // this.nodes = dpids;
         this.labelStack = tunnelRoutes;
+        this.dpidGroup = dpidsWithGroup;
     }
     public String getTunnelId (){
         return this.tunnelId;
     }
-
-    /*public List<Dpid> getnodes (){
-        return this.nodes;
-    }*/
     public List<List<String>> getLabelStack (){
         return this.labelStack;
     }
+    public List<String> getDpidGroup (){
+        return this.dpidGroup;
+    }
 }
diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelResource.java b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelResource.java
index bf3a084..d391082 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelResource.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelResource.java
@@ -73,7 +73,6 @@
 
     @Get("json")
     public Object getTunnel() {
-        System.out.println("Got into getTunnel");
         ISegmentRoutingService segmentRoutingService =
                 (ISegmentRoutingService) getContext().getAttributes().
                         get(ISegmentRoutingService.class.getCanonicalName());
@@ -83,19 +82,19 @@
            TunnelInfo tunnelInfo = ttI.next();
            Iterator<TunnelRouteInfo>trI = tunnelInfo.getRoutes().iterator();
            List<List<String>> labelStack = new ArrayList<List<String>>();
+           List<String> dpidGroup = new ArrayList<String>();
            while(trI.hasNext()){
                TunnelRouteInfo label = trI.next();
                labelStack.add(label.getRoute());
+               Integer gId = segmentRoutingService.getTunnelGroupId(tunnelInfo.getTunnelId(), 
+                       label.getSrcSwDpid());
+               dpidGroup.add(label.getSrcSwDpid() + "/"+ gId);
            }
            SegmentRouterTunnelInfo info = new SegmentRouterTunnelInfo(tunnelInfo.getTunnelId(),
-                    /*tunnelInfo.getDpids(),*/labelStack);
+                    labelStack, dpidGroup);
            infoList.add(info);
-           //TODO Add Group/DPID
-
         }
         log.debug("getTunnel with params");
-        Map <String,List<SegmentRouterTunnelInfo>>result = new HashMap<String,List<SegmentRouterTunnelInfo>>();
-        result.put("tunnels", infoList);
         return infoList;
     }
 }