diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/WebPageUtils.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/WebPageUtils.java index a07baa2..6853758 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/WebPageUtils.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/WebPageUtils.java @@ -95,4 +95,10 @@ private static String getContainersTableColumnDefs() { .append(", 'mRender': parseHadoopID }]").toString(); } + public static String resourceRequestsTableInit() { + return tableInit().append(", 'aaData': requestsTableData") + .append(", bDeferRender: true").append(", bProcessing: true}") + .toString(); + } + } \ No newline at end of file diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/AppAttemptPage.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/AppAttemptPage.java index df5fb9e..200f425 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/AppAttemptPage.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/AppAttemptPage.java @@ -41,8 +41,9 @@ protected void preHead(Page.HTML<_> html) { : join("Application Attempt ", $(YarnWebParams.APPLICATION_ATTEMPT_ID))); - set(DATATABLES_ID, "containers"); + set(DATATABLES_ID, "containers requests"); set(initID(DATATABLES, "containers"), WebPageUtils.containersTableInit()); + set(initID(DATATABLES, "requests"), WebPageUtils.resourceRequestsTableInit()); setTableStyles(html, "containers", ".queue {width:6em}", ".ui {width:8em}"); set(YarnWebParams.WEB_UI_TYPE, YarnWebParams.RM_WEB_UI); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMAppAttemptBlock.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMAppAttemptBlock.java index 668269e..55f72f2 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMAppAttemptBlock.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMAppAttemptBlock.java @@ -26,6 +26,7 @@ import java.util.Collection; import java.util.List; +import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang.StringUtils; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.yarn.api.records.ApplicationAttemptReport; @@ -46,6 +47,7 @@ import org.apache.hadoop.yarn.webapp.hamlet.Hamlet; import org.apache.hadoop.yarn.webapp.hamlet.Hamlet.DIV; import org.apache.hadoop.yarn.webapp.hamlet.Hamlet.TABLE; +import org.apache.hadoop.yarn.webapp.hamlet.Hamlet.TBODY; import org.apache.hadoop.yarn.webapp.util.WebAppUtils; import org.apache.hadoop.yarn.webapp.view.InfoBlock; @@ -75,35 +77,40 @@ private void createResourceRequestsTable(Block html) { } DIV div = html.div(_INFO_WRAP); - TABLE> table = - div.h3("Total Outstanding Resource Requests: " - + getTotalResource(resourceRequests)).table( - "#ResourceRequests"); - - table.tr(). - th(_TH, "Priority"). - th(_TH, "ResourceName"). - th(_TH, "Capability"). - th(_TH, "NumContainers"). - th(_TH, "RelaxLocality"). - th(_TH, "NodeLabelExpression"). - _(); + // Requests Table + TBODY>> tbody = div + .h3("Total Outstanding Resource Requests: " + + getTotalResource(resourceRequests)) + .table("#requests").thead().tr().th(".priority", "Priority") + .th(".resource", "ResourceName").th(".capacity", "Capability") + .th(".containers", "NumContainers") + .th(".relaxlocality", "RelaxLocality") + .th(".labelexpression", "NodeLabelExpression")._()._().tbody(); - boolean odd = false; + StringBuilder requestTableData = new StringBuilder("[\n"); for (ResourceRequest request : resourceRequests) { if (request.getNumContainers() == 0) { continue; } - table.tr((odd = !odd) ? _ODD : _EVEN) - .td(String.valueOf(request.getPriority())) - .td(request.getResourceName()) - .td(String.valueOf(request.getCapability())) - .td(String.valueOf(request.getNumContainers())) - .td(String.valueOf(request.getRelaxLocality())) - .td(request.getNodeLabelExpression() == null ? "N/A" : request - .getNodeLabelExpression())._(); + requestTableData.append("[\"") + .append(String.valueOf(request.getPriority())).append("\",\"") + .append(request.getResourceName()).append("\",\"") + .append(StringEscapeUtils.escapeJavaScript(StringEscapeUtils + .escapeHtml(String.valueOf(request.getCapability())))) + .append("\",\"").append(String.valueOf(request.getNumContainers())) + .append("\",\"").append(String.valueOf(request.getRelaxLocality())) + .append("\",\"").append(request.getNodeLabelExpression() == null + ? "N/A" : request.getNodeLabelExpression()) + .append("\"],\n"); } - table._(); + if (requestTableData.charAt(requestTableData.length() - 2) == ',') { + requestTableData.delete(requestTableData.length() - 2, + requestTableData.length() - 1); + } + requestTableData.append("]"); + html.script().$type("text/javascript") + ._("var requestsTableData=" + requestTableData)._(); + tbody._()._(); div._(); }