added 'show router' command in CLI
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";
+ }
+
+}