Add a simple health check logic for the kubevirt-node app
Change-Id: If87474c40785d4b9284eab8833f7a9c162286c46
diff --git a/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/web/KubevirtNodeWebResource.java b/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/web/KubevirtNodeWebResource.java
index b18f42d..06b06e8 100644
--- a/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/web/KubevirtNodeWebResource.java
+++ b/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/web/KubevirtNodeWebResource.java
@@ -19,6 +19,8 @@
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.common.collect.Sets;
+import org.onosproject.kubevirtnode.api.KubevirtApiConfig;
+import org.onosproject.kubevirtnode.api.KubevirtApiConfigService;
import org.onosproject.kubevirtnode.api.KubevirtNode;
import org.onosproject.kubevirtnode.api.KubevirtNodeAdminService;
import org.onosproject.kubevirtnode.api.KubevirtNodeState;
@@ -68,6 +70,9 @@
private static final String QUERY = "QUERY";
private static final String NOT_EXIST = "Not exist";
private static final String STATE = "State";
+ private static final String API_CONFIG = "apiConfig";
+ private static final String OK = "ok";
+ private static final String ERROR = "error";
private static final String RESULT = "Result";
private static final long SLEEP_MS = 5000; // we wait 5s for init each node
@@ -268,6 +273,25 @@
return ok(mapper().createObjectNode()).build();
}
+ /**
+ * Returns the health check result.
+ *
+ * @return 200 OK with health check result, 404 not found
+ */
+ @GET
+ @Produces(MediaType.APPLICATION_JSON)
+ @Path("healthz")
+ public Response healthz() {
+ KubevirtApiConfigService configService = get(KubevirtApiConfigService.class);
+ KubevirtApiConfig config = configService.apiConfig();
+
+ // TODO: we need to add more health check items
+ ObjectNode jsonResult = mapper().createObjectNode();
+ String result = config != null ? OK : ERROR;
+ jsonResult.put(API_CONFIG, result);
+ return ok(jsonResult).build();
+ }
+
private void syncRulesBase(KubevirtNode node) {
KubevirtNode updated = node.updateState(INIT);
KubevirtNodeAdminService service = get(KubevirtNodeAdminService.class);