Fixes two things in OpenstackNode App. - Add whether ovsdb connection is alive in OpenstackNodeCheckCommand - Support REST API that queries the state of the specific openstack node

Change-Id: I96e7d8ff2ef2a0e03aa62454c0346a3dfa1597d1
diff --git a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeCheckCommand.java b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeCheckCommand.java
index ccaff29..057f29e 100644
--- a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeCheckCommand.java
+++ b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeCheckCommand.java
@@ -86,7 +86,12 @@
         } else {
             print("[Integration Bridge Status]");
             Device device = deviceService.getDevice(osNode.intgBridge());
+            Device ovsdbDevice = deviceService.getDevice(osNode.ovsdb());
             if (device != null) {
+                print("%s OvsdbDeviceId=%s available=%s",
+                        deviceService.isAvailable(ovsdbDevice.id()) ? MSG_OK : MSG_ERROR,
+                        ovsdbDevice.id(),
+                        deviceService.isAvailable(ovsdbDevice.id()));
                 print("%s %s=%s available=%s %s",
                         deviceService.isAvailable(device.id()) ? MSG_OK : MSG_ERROR,
                         INTEGRATION_BRIDGE,
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 c64cab7..673a46e 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
@@ -65,11 +65,13 @@
     private static final String DELETE = "DELETE";
     private static final String QUERY = "QUERY";
     private static final String INIT = "INIT";
+    private static final String NOT_EXIST = "Not exist";
+    private static final String STATE = "State";
 
     private static final String HOST_NAME = "hostname";
     private static final String ERROR_MESSAGE = " cannot be null";
 
-    private final ObjectNode root = mapper().createObjectNode();
+    private final ObjectNode  root = mapper().createObjectNode();
     private final ArrayNode osJsonNodes = root.putArray("nodes");
 
     private final OpenstackNodeAdminService osNodeAdminService =
@@ -184,6 +186,24 @@
     }
 
     /**
+     * Obtains the state of the openstack node.
+     *
+     * @param hostname hostname of the openstack
+     * @return the state of the openstack node in Json
+     */
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
+    @Path("state/{hostname}")
+    public Response stateOfNode(@PathParam("hostname") String hostname) {
+        log.trace(String.format(MESSAGE_NODE, QUERY));
+
+        OpenstackNode osNode = osNodeService.node(hostname);
+        String nodeState = osNode != null ? osNode.state().toString() : NOT_EXIST;
+
+        return ok(mapper().createObjectNode().put(STATE, nodeState)).build();
+    }
+
+    /**
      * Initializes openstack node.
      *
      * @param hostname hostname of openstack node