Topology REST updates and cleanup:
* Added new REST call: /wm/onos/topology/all
It returns the whole topology: switches (and ports), links, devices:
{
"switches": [
...
],
"devices": [
...
],
"links": [
...
]
}
* Modified the path for existing topology REST calls to remove the
trailing "/json":
/wm/onos/topology/devices/json -> /wm/onos/topology/devices
/wm/onos/topology/links/json -> /wm/onos/topology/links
/wm/onos/topology/switches/json -> /wm/onos/topology/switches
* Added new ONOS CLI command "show topology all" to show the whole
topology
* Updated the ONOS CLI with the above REST calls path renaming
* Minor cleanup and bug fixes in the ONOS CLI
Change-Id: I96b85ca7a491671f049f30136618d00086384063
diff --git a/src/main/java/net/onrc/onos/core/topology/web/TopologyAllResource.java b/src/main/java/net/onrc/onos/core/topology/web/TopologyAllResource.java
new file mode 100644
index 0000000..700ca60
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/topology/web/TopologyAllResource.java
@@ -0,0 +1,33 @@
+package net.onrc.onos.core.topology.web;
+
+import net.onrc.onos.core.topology.ITopologyService;
+import net.onrc.onos.core.topology.Topology;
+
+import org.restlet.representation.Representation;
+import org.restlet.resource.Get;
+import org.restlet.resource.ServerResource;
+
+/**
+ * A class to access the network topology information.
+ */
+public class TopologyAllResource extends ServerResource {
+ /**
+ * Gets the network topology information.
+ *
+ * @return a Representation of the network topology.
+ */
+ @Get("json")
+ public Representation retrieve() {
+ ITopologyService topologyService =
+ (ITopologyService) getContext().getAttributes()
+ .get(ITopologyService.class.getCanonicalName());
+
+ Topology topology = topologyService.getTopology();
+ topology.acquireReadLock();
+ try {
+ return toRepresentation(topology, null);
+ } finally {
+ topology.releaseReadLock();
+ }
+ }
+}
diff --git a/src/main/java/net/onrc/onos/core/topology/web/TopologyWebRoutable.java b/src/main/java/net/onrc/onos/core/topology/web/TopologyWebRoutable.java
index cef3ac3..9e5dabe 100644
--- a/src/main/java/net/onrc/onos/core/topology/web/TopologyWebRoutable.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/TopologyWebRoutable.java
@@ -17,9 +17,10 @@
router.attach("/ds/ports/json", DatastorePortsResource.class);
// Topology API
- router.attach("/switches/json", TopologySwitchesResource.class);
- router.attach("/links/json", TopologyLinksResource.class);
- router.attach("/devices/json", TopologyDevicesResource.class);
+ router.attach("/all", TopologyAllResource.class);
+ router.attach("/devices", TopologyDevicesResource.class);
+ router.attach("/links", TopologyLinksResource.class);
+ router.attach("/switches", TopologySwitchesResource.class);
// TODO: Move the Shortest Path REST API to the Intent framework
router.attach("/shortest-path/{src-dpid}/{dst-dpid}/json", TopologyShortestPathResource.class);