package com.sequenceiq.it.spark.ambari;
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.sequenceiq.it.spark.ITResponse;
import com.sequenceiq.it.spark.ambari.model.Requests;
import spark.Request;
public class AmbariStatusResponse extends ITResponse {
private AmbariClusterStatus status = AmbariClusterStatus.STOPPED;
@Override
public Object handle(Request request, spark.Response response) throws Exception {
response.type("text/plain");
return ambariStatus();
}
public String ambariStatus() {
ObjectNode rootNode = JsonNodeFactory.instance.objectNode();
Requests requests;
switch (status) {
case STOPPED:
requests = new Requests(1, "STARTED", 0);
status = AmbariClusterStatus.IN_PROGRESS;
break;
case IN_PROGRESS:
requests = new Requests(2, "STARTED", 50);
status = AmbariClusterStatus.STARTED;
break;
default:
requests = new Requests(3, "SUCCESSFUL", 100);
break;
}
return rootNode.set("Requests", getObjectMapper().valueToTree(requests)).toString();
}
private enum AmbariClusterStatus {
STOPPED,
IN_PROGRESS,
STARTED
}
}