diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/AppsBlock.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/AppsBlock.java index 4f644d1..55de511 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/AppsBlock.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/AppsBlock.java @@ -43,8 +43,8 @@ import com.google.inject.Inject; class AppsBlock extends HtmlBlock { - final ConcurrentMap apps; - private final Configuration conf; + final protected ConcurrentMap apps; + final protected Configuration conf; @Inject AppsBlock(RMContext rmContext, ViewContext ctx, Configuration conf) { super(ctx); @@ -52,32 +52,25 @@ this.conf = conf; } - @Override public void render(Block html) { - TBODY> tbody = html. - table("#apps"). + protected TBODY> getTBody(Block html) { + return html.table("#apps"). thead(). - tr(). - th(".id", "ID"). - th(".user", "User"). - th(".name", "Name"). - th(".type", "Application Type"). - th(".queue", "Queue"). - th(".starttime", "StartTime"). - th(".finishtime", "FinishTime"). - th(".state", "State"). - th(".finalstatus", "FinalStatus"). - th(".progress", "Progress"). - th(".ui", "Tracking UI")._()._(). + tr(). + th(".id", "ID"). + th(".user", "User"). + th(".name", "Name"). + th(".type", "Application Type"). + th(".queue", "Queue"). + th(".starttime", "StartTime"). + th(".finishtime", "FinishTime"). + th(".state", "State"). + th(".finalstatus", "FinalStatus"). + th(".progress", "Progress"). + th(".ui", "Tracking UI")._()._(). tbody(); - Collection reqAppStates = null; - String reqStateString = $(APP_STATE); - if (reqStateString != null && !reqStateString.isEmpty()) { - String[] appStateStrings = reqStateString.split(","); - reqAppStates = new HashSet(appStateStrings.length); - for(String stateString : appStateStrings) { - reqAppStates.add(YarnApplicationState.valueOf(stateString)); - } - } + } + + protected String getAppsTableData(Collection reqAppStates) { StringBuilder appsTableData = new StringBuilder("[\n"); for (RMApp app : apps.values()) { if (reqAppStates != null && !reqAppStates.contains(app.createApplicationState())) { @@ -87,39 +80,55 @@ String percent = String.format("%.1f", appInfo.getProgress()); //AppID numerical value parsed by parseHadoopID in yarn.dt.plugins.js appsTableData.append("[\"") - .append(appInfo.getAppId()).append("\",\"") - .append(StringEscapeUtils.escapeJavaScript(StringEscapeUtils.escapeHtml( - appInfo.getUser()))).append("\",\"") - .append(StringEscapeUtils.escapeJavaScript(StringEscapeUtils.escapeHtml( - appInfo.getName()))).append("\",\"") - .append(StringEscapeUtils.escapeJavaScript(StringEscapeUtils.escapeHtml( - appInfo.getApplicationType()))).append("\",\"") - .append(StringEscapeUtils.escapeJavaScript(StringEscapeUtils.escapeHtml( - appInfo.getQueue()))).append("\",\"") - .append(appInfo.getStartTime()).append("\",\"") - .append(appInfo.getFinishTime()).append("\",\"") - .append(appInfo.getState()).append("\",\"") - .append(appInfo.getFinalStatus()).append("\",\"") - // Progress bar - .append("
").append("
") - .append("\",\"") + .append(appInfo.getAppId()).append("\",\"") + .append(StringEscapeUtils.escapeJavaScript(StringEscapeUtils.escapeHtml( + appInfo.getUser()))).append("\",\"") + .append(StringEscapeUtils.escapeJavaScript(StringEscapeUtils.escapeHtml( + appInfo.getName()))).append("\",\"") + .append(StringEscapeUtils.escapeJavaScript(StringEscapeUtils.escapeHtml( + appInfo.getApplicationType()))).append("\",\"") + .append(StringEscapeUtils.escapeJavaScript(StringEscapeUtils.escapeHtml( + appInfo.getQueue()))).append("\",\"") + .append(appInfo.getStartTime()).append("\",\"") + .append(appInfo.getFinishTime()).append("\",\"") + .append(appInfo.getState()).append("\",\"") + .append(appInfo.getFinalStatus()).append("\",\"") + // Progress bar + .append("
").append("
") + .append("\",\"") - .append(appInfo.getTrackingUI()).append("\"],\n"); + .append(appInfo.getTrackingUI()).append("\"],\n"); } if(appsTableData.charAt(appsTableData.length() - 2) == ',') { appsTableData.delete(appsTableData.length()-2, appsTableData.length()-1); } appsTableData.append("]"); + return appsTableData.toString(); + } + + @Override public void render(Block html) { + TBODY> tbody = getTBody(html); + Collection reqAppStates = null; + String reqStateString = $(APP_STATE); + if (reqStateString != null && !reqStateString.isEmpty()) { + String[] appStateStrings = reqStateString.split(","); + reqAppStates = new HashSet(appStateStrings.length); + for(String stateString : appStateStrings) { + reqAppStates.add(YarnApplicationState.valueOf(stateString)); + } + } + String appsTableData = getAppsTableData(reqAppStates); + html.script().$type("text/javascript"). _("var appsTableData=" + appsTableData)._(); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/FairSchedulerAppsBlock.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/FairSchedulerAppsBlock.java index c36e311..9e00155 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/FairSchedulerAppsBlock.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/FairSchedulerAppsBlock.java @@ -50,47 +50,38 @@ * Shows application information specific to the fair * scheduler as part of the fair scheduler page. */ -public class FairSchedulerAppsBlock extends HtmlBlock { - final ConcurrentMap apps; +public class FairSchedulerAppsBlock extends AppsBlock { final FairSchedulerInfo fsinfo; - final Configuration conf; - + @Inject public FairSchedulerAppsBlock(RMContext rmContext, ResourceManager rm, ViewContext ctx, Configuration conf) { - super(ctx); + super(rmContext, ctx, conf); FairScheduler scheduler = (FairScheduler) rm.getResourceScheduler(); fsinfo = new FairSchedulerInfo(scheduler); - apps = rmContext.getRMApps(); - this.conf = conf; } - - @Override public void render(Block html) { - TBODY> tbody = html. - table("#apps"). + + @Override + protected TBODY> getTBody(Block html) { + return html.table("#apps"). thead(). - tr(). - th(".id", "ID"). - th(".user", "User"). - th(".name", "Name"). - th(".type", "Application Type"). - th(".queue", "Queue"). - th(".fairshare", "Fair Share"). - th(".starttime", "StartTime"). - th(".finishtime", "FinishTime"). - th(".state", "State"). - th(".finalstatus", "FinalStatus"). - th(".progress", "Progress"). - th(".ui", "Tracking UI")._()._(). + tr(). + th(".id", "ID"). + th(".user", "User"). + th(".name", "Name"). + th(".type", "Application Type"). + th(".queue", "Queue"). + th(".fairshare", "Fair Share"). + th(".starttime", "StartTime"). + th(".finishtime", "FinishTime"). + th(".state", "State"). + th(".finalstatus", "FinalStatus"). + th(".progress", "Progress"). + th(".ui", "Tracking UI")._()._(). tbody(); - Collection reqAppStates = null; - String reqStateString = $(APP_STATE); - if (reqStateString != null && !reqStateString.isEmpty()) { - String[] appStateStrings = reqStateString.split(","); - reqAppStates = new HashSet(appStateStrings.length); - for(String stateString : appStateStrings) { - reqAppStates.add(YarnApplicationState.valueOf(stateString)); - } - } + } + + @Override + protected String getAppsTableData(Collection reqAppStates) { StringBuilder appsTableData = new StringBuilder("[\n"); for (RMApp app : apps.values()) { if (reqAppStates != null && !reqAppStates.contains(app.createApplicationState())) { @@ -102,43 +93,42 @@ int fairShare = fsinfo.getAppFairShare(attemptId); //AppID numerical value parsed by parseHadoopID in yarn.dt.plugins.js appsTableData.append("[\"") - .append(appInfo.getAppId()).append("\",\"") - .append(StringEscapeUtils.escapeJavaScript(StringEscapeUtils.escapeHtml( - appInfo.getUser()))).append("\",\"") - .append(StringEscapeUtils.escapeJavaScript(StringEscapeUtils.escapeHtml( - appInfo.getName()))).append("\",\"") - .append(StringEscapeUtils.escapeJavaScript(StringEscapeUtils.escapeHtml( - appInfo.getApplicationType()))).append("\",\"") - .append(StringEscapeUtils.escapeJavaScript(StringEscapeUtils.escapeHtml( - appInfo.getQueue()))).append("\",\"") - .append(fairShare).append("\",\"") - .append(appInfo.getStartTime()).append("\",\"") - .append(appInfo.getFinishTime()).append("\",\"") - .append(appInfo.getState()).append("\",\"") - .append(appInfo.getFinalStatus()).append("\",\"") - // Progress bar - .append("
").append("
") - .append("\",\"") + .append(appInfo.getAppId()).append("\",\"") + .append(StringEscapeUtils.escapeJavaScript(StringEscapeUtils.escapeHtml( + appInfo.getUser()))).append("\",\"") + .append(StringEscapeUtils.escapeJavaScript(StringEscapeUtils.escapeHtml( + appInfo.getName()))).append("\",\"") + .append(StringEscapeUtils.escapeJavaScript(StringEscapeUtils.escapeHtml( + appInfo.getApplicationType()))).append("\",\"") + .append(StringEscapeUtils.escapeJavaScript(StringEscapeUtils.escapeHtml( + appInfo.getQueue()))).append("\",\"") + .append(fairShare).append("\",\"") + .append(appInfo.getStartTime()).append("\",\"") + .append(appInfo.getFinishTime()).append("\",\"") + .append(appInfo.getState()).append("\",\"") + .append(appInfo.getFinalStatus()).append("\",\"") + // Progress bar + .append("
").append("
") + .append("\",\"") - .append(appInfo.getTrackingUI()).append("\"],\n"); + .append(appInfo.getTrackingUI()).append("\"],\n"); } if(appsTableData.charAt(appsTableData.length() - 2) == ',') { appsTableData.delete(appsTableData.length()-2, appsTableData.length()-1); } appsTableData.append("]"); - html.script().$type("text/javascript"). - _("var appsTableData=" + appsTableData)._(); - tbody._()._(); + return appsTableData.toString(); } + }