private void handleServletClassicSystemMachines()

in uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java [1974:2161]


	private void handleServletClassicSystemMachines(String target,Request baseRequest,HttpServletRequest request,HttpServletResponse response) 
	throws IOException, ServletException
	{
		String methodName = "handleServletClassicSystemMachines";
		duccLogger.trace(methodName, jobid, messages.fetch("enter"));
		StringBuffer data = new StringBuffer();
		
		if(dh.is_ducc_head_backup()) {
			data.append("<tr>");
			data.append("<td>");
			data.append(messages.fetch("no data - not master"));
			data.append("</td>");
			data.append("</tr>");
		}
		else {
			int counter = 0;
			long sumMemTotal = 0;	// Memory(GB):reported by Agent
			long sumMemFree = 0;	// Memory(GB):free
			long sumMemReserve = 0;	// Memory(GB):usable
			long sumMemAllocated = 0;
			double sumCPU = 0;
			long sumMachines = 0;
			long sumSwapInuse = 0;
			long sumSwapFree = 0;
			long sumAliens = 0;
			String hover;
			StringBuffer row;
			StringBuffer individualMachines = new StringBuffer();
			DuccMachinesData instance = DuccMachinesData.getInstance();
			Map<MachineInfo, NodeId> machines = instance.getMachines();
			if(!machines.isEmpty()) {
				Map<String, Long> allocatedMap = Distiller.getMap();
				for(Entry<MachineInfo, NodeId> entry : machines.entrySet()) {
					MachineInfo machineInfo = entry.getKey();
					SizeBytes sb = new SizeBytes(Type.Bytes, 0);
					if(DuccMachinesDataHelper.isUp(machineInfo)) {
						try {
							sumMemTotal += ConvertSafely.String2Long(machineInfo.getMemTotal());
							// Calculate total for Memory(GB):usable
							sumMemReserve += ConvertSafely.String2Long(machineInfo.getMemReserve());
							sumSwapInuse += ConvertSafely.String2Long(machineInfo.getSwapInuse());
							sumSwapFree += ConvertSafely.String2Long(machineInfo.getSwapFree());
							sumCPU += machineInfo.getCpu();
							sumMachines += 1;
							sumAliens += machineInfo.getAlienPidsCount();
							String machineName = machineInfo.getName();
							long bytes = allocatedMap.get(machineName);
							sumMemAllocated += bytes;
							sb = new SizeBytes(Type.Bytes, bytes);
							String text = "allocated "+machineName+"="+sb.getGBytes();
							duccLogger.trace(methodName, jobid, text);
						}
						catch(Exception e) {
							duccLogger.trace(methodName, jobid, e);
						}
					}
					buildRowForIndividualMachine(individualMachines, counter, machineInfo, sb);
					counter++;
				}
				SizeBytes sbAllocated = new SizeBytes(Type.Bytes, sumMemAllocated);
				sumMemFree = sumMemReserve - sbAllocated.getGBytes();
				//
				row = new StringBuffer();
				row.append("<tr>");
				// Status
				row.append("<td>");
				row.append(""+"Total");
				row.append("</td>");
				// Online
				row.append("<td>");
				row.append("");
				row.append("</td>");
				// Quiesced
				row.append("<td>");
				row.append("");
				row.append("</td>");
				// IP
				row.append("<td>");
				row.append("");
				row.append("</td>");
				// Name
				row.append("<td>");
				row.append("");
				row.append("</td>");
				// Nodepool
				row.append("<td>");
				row.append("");
				row.append("</td>");
				// Memory: usable
				hover = "title=\"total="+sumMemTotal+"\"";
				row.append("<td align=\"right\" "+hover+">");
				row.append(""+sumMemReserve);
				row.append("</td>");
				// Memory: free
				row.append("<td align=\"right\">");
				row.append(""+sumMemFree);
				row.append("</td>");
				// CPU: load average
				row.append("<td align=\"right\">");
				String cpuTotal = formatter1.format(sumCPU/sumMachines);
				row.append(""+cpuTotal);
				row.append("</td>");
				// Swap: inuse
				row.append("<td align=\"right\">");
				row.append(""+sumSwapInuse);
				row.append("</td>");
				// Swap: free
				row.append("<td align=\"right\">");
				row.append(""+sumSwapFree);
				row.append("</td>");
				// C-Groups
				row.append("<td align=\"right\">");
				row.append("");
				row.append("</td>");
				// Alien PIDs
				row.append("<td align=\"right\">");
				row.append(""+sumAliens);
				row.append("</td>");
				// Heartbeat: last
				row.append("<td align=\"right\">");
				row.append("");
				row.append("</td>");
				row.append("</tr>");
				//
				data.append(row);
				data.append(individualMachines);
			}
			else {
				row = new StringBuffer();
				row.append((trGet(counter)));
				// Release
				row.append("<td>");
				row.append("");
				row.append("</td>");
				// Status
				row.append("<td>");
				row.append("");
				row.append("</td>");
				// Online
				row.append("<td>");
				row.append("");
				row.append("</td>");
				// IP
				row.append("<td>");
				row.append("");
				row.append("</td>");
				// Name
				row.append("<td>");
				row.append("");
				row.append("</td>");
				// Reserve
				row.append("<td>");
				row.append("");
				row.append("</td>");
				// Memory: total
				row.append("<td>");
				row.append("");
				row.append("</td>");
				// Swap: inuse
				row.append("<td>");
				row.append("");
				row.append("</td>");
				// Alien PIDs
				row.append("<td>");
				row.append("");
				row.append("</td>");
				// Shares: total
				row.append("<td>");
				row.append("");
				row.append("</td>");
				// Shares:inuse
				row.append("<td>");
				row.append("");
				row.append("</td>");
				// Heartbeat: last
				row.append("<td>");
				row.append("");
				row.append("</td>");
				row.append("</tr>");
				//
				data.append(row);
			}
		}

		duccLogger.debug(methodName, jobid, data);
		response.getWriter().println(data);
		duccLogger.trace(methodName, jobid, messages.fetch("exit"));
	}