Allow to query openstack nodes details through REST API

Change-Id: Ic2e1d3684f457d00ebaf971aeb357e4f7e84e74f
diff --git a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/web/OpenstackNodeWebResource.java b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/web/OpenstackNodeWebResource.java
index ae85af0..41d3f33 100644
--- a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/web/OpenstackNodeWebResource.java
+++ b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/web/OpenstackNodeWebResource.java
@@ -28,6 +28,7 @@
 
 import javax.ws.rs.Consumes;
 import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
 import javax.ws.rs.POST;
 import javax.ws.rs.PUT;
 import javax.ws.rs.Path;
@@ -60,10 +61,14 @@
     private static final String UPDATE = "UPDATE";
     private static final String NODE_ID = "NODE_ID";
     private static final String DELETE = "DELETE";
+    private static final String QUERY = "QUERY";
 
     private static final String HOST_NAME = "hostname";
     private static final String ERROR_MESSAGE = " cannot be null";
 
+    private final ObjectNode root = mapper().createObjectNode();
+    private final ArrayNode osJsonNodes = root.putArray("nodes");
+
     private final OpenstackNodeAdminService osNodeAdminService =
                                             get(OpenstackNodeAdminService.class);
     private final OpenstackNodeService osNodeService =
@@ -156,6 +161,25 @@
         return Response.noContent().build();
     }
 
+    /**
+     * Obtains a set of openstack node's.
+     *
+     * @return 200 OK with array of all the openstack nodes stored in the system
+     * @onos.rsModel OpenstackNode
+     */
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
+    public Response nodes() {
+        log.trace(String.format(MESSAGE_NODE, QUERY));
+
+        Set<OpenstackNode> osNodes = osNodeService.nodes();
+
+        for (OpenstackNode osNode : osNodes) {
+            osJsonNodes.add(codec(OpenstackNode.class).encode(osNode, this));
+        }
+        return ok(root).build();
+    }
+
     private Set<OpenstackNode> readNodeConfiguration(InputStream input) {
         Set<OpenstackNode> nodeSet = Sets.newHashSet();
         try {