private void buildRowForIndividualMachine()

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);
	}