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 {