in uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java [1798:1972]
private void buildRowForIndividualMachine(StringBuffer data, int counter, MachineInfo machineInfo, SizeBytes allocated) {
StringBuffer row = new StringBuffer();
row.append((trGet(counter)));
StringBuffer sb = new StringBuffer();
// Status
String status = machineInfo.getStatus();
if(status == null) {
status = "?";
}
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.append("<td>");
row.append(sb);
row.append("</td>");
// Online
row.append("<td>");
row.append(nodeState.getOnline(machineInfo.getName(), "-"));
row.append("</td>");
// Quiesced
row.append("<td>");
row.append(nodeState.getQuiesced(machineInfo.getName(), "-"));
row.append("</td>");
// IP
row.append("<td>");
row.append(machineInfo.getIp());
row.append("</td>");
// Name
row.append("<td>");
row.append(machineInfo.getName());
row.append("</td>");
// Nodepool
row.append("<td>");
String nodepool = DuccSchedulerClasses.getInstance().getNodepool(machineInfo.getName());
row.append(nodepool);
row.append("</td>");
// 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()+"\"";
row.append("<td align=\"right\" "+hover+">");
row.append(machineInfo.getMemReserve());
row.append("</td>");
}
else if(status.equals("down")) {
row.append("<td align=\"right\">");
row.append("0");
row.append("</td>");
}
else {
row.append("<td align=\"right\">");
row.append("</td>");
}
// Memory: free
if(status.equals("up")) {
long memFree = ConvertSafely.String2Long(machineInfo.getMemReserve());
memFree = memFree - allocated.getGBytes();
row.append("<td align=\"right\">");
row.append(memFree);
row.append("</td>");
}
else if(status.equals("down")) {
row.append("<td align=\"right\">");
row.append("0");
row.append("</td>");
}
else {
row.append("<td align=\"right\">");
row.append("</td>");
}
// CPU: load average
row.append("<td align=\"right\">");
if(status.equals("up")) {
String cpu = formatter1.format(machineInfo.getCpu());
row.append(cpu);
}
row.append("</td>");
// 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>");
}
row.append("<td align=\"right\">");
if(!status.equals("defined")) {
row.append(sb);
}
row.append("</td>");
// Swap: free
row.append("<td align=\"right\">");
if(!status.equals("defined")) {
row.append(machineInfo.getSwapFree());
}
row.append("</td>");
// 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>");
}
}
String cgroups = sb.toString();
row.append("<td align=\"right\">");
row.append(""+cgroups);
row.append("</td>");
// 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>");
}
row.append("<td align=\"right\">");
if(!status.equals("defined")) {
row.append(sb);
}
row.append("</td>");
// Heartbeat: last
row.append("<td align=\"right\">");
if(!status.equals("defined")) {
row.append(machineInfo.getHeartbeatLast());
}
row.append("</td>");
row.append("</tr>");
data.append(row);
}