in uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java [1782:1932]
private void buildRowForIndividualMachine(JsonArray data , int counter, MachineInfo machineInfo, SizeBytes allocated) {
JsonArray row = new JsonArray();
StringBuffer sb = new StringBuffer();
// Status
String status = machineInfo.getStatus();
String hover = "title=\""+machineInfo.getMachineStatusReason()+"\"";
if(status.equals("down")) {
sb.append("<span "+hover+" class=\"health_red\""+">");
sb.append(status);
sb.append("</span>");
}
else if(status.equals("up")) {
sb.append("<span "+hover+"class=\"health_green\""+">");
sb.append(status);
sb.append("</span>");
}
else {
sb.append(status);
}
row.add(new JsonPrimitive(sb.toString()));
// Online
row.add(new JsonPrimitive(nodeState.getOnline(machineInfo.getName(), "-")));
// Quiesced
row.add(new JsonPrimitive(nodeState.getQuiesced(machineInfo.getName(), "-")));
// IP
row.add(new JsonPrimitive(machineInfo.getIp()));
// Name
row.add(new JsonPrimitive(machineInfo.getName()));
// Nodepool
String nodepool = DuccSchedulerClasses.getInstance().getNodepool(machineInfo.getName());
row.add(new JsonPrimitive(nodepool));
// Memory: usable
if(status.equals("up")) {
sb = new StringBuffer();
sb.append("total="+machineInfo.getMemTotal());
Integer quantum = machineInfo.getQuantum();
if(quantum != null) {
sb.append(" ");
sb.append("quantum="+quantum);
}
hover = "title=\""+sb.toString()+"\"";
String memReserveWithHover = "<span "+hover+" >"+machineInfo.getMemReserve()+"</span>";
row.add(new JsonPrimitive(memReserveWithHover));
}
else if(status.equals("down")) {
row.add(new JsonPrimitive("0"));
}
else {
row.add(new JsonPrimitive(""));
}
// Memory: free
if(status.equals("up")) {
long memFree = ConvertSafely.String2Long(machineInfo.getMemReserve());
memFree = memFree - allocated.getGBytes();
row.add(new JsonPrimitive(memFree));
}
else if(status.equals("down")) {
row.add(new JsonPrimitive("0"));
}
else {
row.add(new JsonPrimitive(""));
}
// CPU: load average
if(!status.equals("defined")) {
String cpu = formatter1.format(machineInfo.getCpu());
row.add(new JsonPrimitive(cpu));
}
else {
row.add(new JsonPrimitive(""));
}
// Swap: inuse
sb = new StringBuffer();
String swapping = machineInfo.getSwapInuse();
if(swapping.equals("0")) {
sb.append(swapping);
}
else {
sb.append("<span class=\"health_red\">");
sb.append(swapping);
sb.append("</span>");
}
if(!status.equals("defined")) {
row.add(new JsonPrimitive(sb.toString()));
}
else {
row.add(new JsonPrimitive(""));
}
// Swap: free
if(!status.equals("defined")) {
row.add(new JsonPrimitive(machineInfo.getSwapFree()));
}
else {
row.add(new JsonPrimitive(""));
}
// C-Groups
boolean isCgroupsEnabled = machineInfo.getCgroupsEnabled();
boolean isCgroupsCpuReportingEnabled = machineInfo.getCgroupsCpuReportingEnabled();
sb = new StringBuffer();
if(status.equals("up")) {
if(isCgroupsEnabled) {
if(isCgroupsCpuReportingEnabled) {
sb.append("<span title=\""+"control groups active"+"\" class=\"health_black\""+">");
sb.append("on");
sb.append("</span>");
}
else {
sb.append("<span title=\""+"control groups CPU reporting not configured"+"\" class=\"health_red\""+">");
sb.append("noCPU%");
sb.append("</span>");
}
}
else {
sb.append("<span title=\""+"control groups inactive"+"\" class=\"health_red\""+">");
sb.append("off");
sb.append("</span>");
}
}
row.add(new JsonPrimitive(sb.toString()));
// Alien PIDs
sb = new StringBuffer();
long aliens = machineInfo.getAliens().size();
if(aliens == 0) {
sb.append(aliens);
}
else {
StringBuffer title = new StringBuffer();
title.append("title=");
title.append("\"");
for(String pid : machineInfo.getAliens()) {
title.append(pid+" ");
}
title.append("\"");
sb.append("<span class=\"health_red\" "+title+">");
sb.append(aliens);
sb.append("</span>");
}
if(!status.equals("defined")) {
row.add(new JsonPrimitive(sb.toString()));
}
else {
row.add(new JsonPrimitive(""));
}
// Heartbeat: last
if(!status.equals("defined")) {
row.add(new JsonPrimitive(machineInfo.getHeartbeatLast()));
}
else {
row.add(new JsonPrimitive(""));
}
data.add(row);
}