Add REST API for a device.
In this commit, only added /wm/onos/topology/devices/json to get all device information.
Change-Id: I9a56be1335914ba965f1e921960d3cabf813c61c
diff --git a/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphDevicesResource.java b/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphDevicesResource.java
new file mode 100644
index 0000000..84aaeba
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphDevicesResource.java
@@ -0,0 +1,43 @@
+package net.onrc.onos.core.topology.web;
+
+import java.io.IOException;
+
+import net.onrc.onos.core.topology.INetworkGraphService;
+import net.onrc.onos.core.topology.NetworkGraph;
+import net.onrc.onos.core.topology.serializers.DeviceSerializer;
+
+import org.codehaus.jackson.Version;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.map.module.SimpleModule;
+import org.restlet.resource.Get;
+import org.restlet.resource.ServerResource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class NetworkGraphDevicesResource extends ServerResource {
+ private static final Logger log = LoggerFactory.getLogger(NetworkGraphDevicesResource.class);
+
+ @Get("json")
+ public String retrieve() {
+ INetworkGraphService networkGraphService = (INetworkGraphService) getContext().getAttributes().
+ get(INetworkGraphService.class.getCanonicalName());
+
+ NetworkGraph graph = networkGraphService.getNetworkGraph();
+
+ ObjectMapper mapper = new ObjectMapper();
+ SimpleModule module = new SimpleModule("module", new Version(1, 0, 0, null));
+ module.addSerializer(new DeviceSerializer());
+ mapper.registerModule(module);
+
+ graph.acquireReadLock();
+ try {
+ return mapper.writeValueAsString(graph.getDevices());
+ } catch (IOException e) {
+ log.error("Error writing device list to JSON", e);
+ return "";
+ } finally {
+ graph.releaseReadLock();
+ }
+ }
+
+}
diff --git a/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphWebRoutable.java b/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphWebRoutable.java
index b159fe6..c0cf272 100644
--- a/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphWebRoutable.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphWebRoutable.java
@@ -19,6 +19,7 @@
// Topology API
router.attach("/switches/json", NetworkGraphSwitchesResource.class);
router.attach("/links/json", NetworkGraphLinksResource.class);
+ router.attach("/devices/json", NetworkGraphDevicesResource.class);
// TODO: Move the Shortest Path REST API to the Intent framework
router.attach("/shortest-path/{src-dpid}/{dst-dpid}/json", NetworkGraphShortestPathResource.class);