diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/FairSchedulerPage.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/FairSchedulerPage.java index 5ff9422..ccc5179 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/FairSchedulerPage.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/FairSchedulerPage.java @@ -88,6 +88,33 @@ protected void render(Block html) { } } + static class ParentQueueBlock extends HtmlBlock { + final FairSchedulerQueueInfo qinfo; + + @Inject ParentQueueBlock(ViewContext ctx, FSQInfo info) { + super(ctx); + qinfo = (FairSchedulerQueueInfo)info.qinfo; + } + + @Override + protected void render(Block html) { + ResponseInfo ri = info("\'" + qinfo.getQueueName() + "\' Queue Status"). + _("Used Resources:", qinfo.getUsedResources().toString()). + _("Min Resources:", qinfo.getMinResources().toString()). + _("Max Resources:", qinfo.getMaxResources().toString()); + int maxApps = qinfo.getMaxApplications(); + if (maxApps < Integer.MAX_VALUE) { + ri._("Max Running Applications:", qinfo.getMaxApplications()); + } + ri._(STEADY_FAIR_SHARE + ":", qinfo.getSteadyFairShare().toString()); + ri._(INSTANTANEOUS_FAIR_SHARE + ":", qinfo.getFairShare().toString()); + html._(InfoBlock.class); + + // clear the info contents so this queue's info doesn't accumulate into another queue's info + ri.clear(); + } + } + static class QueueBlock extends HtmlBlock { final FSQInfo fsqinfo; @@ -125,6 +152,7 @@ public void render(Block html) { if (info instanceof FairSchedulerLeafQueueInfo) { li.ul("#lq").li()._(LeafQueueBlock.class)._()._(); } else { + li.ul("#lq").li()._(ParentQueueBlock.class)._()._(); li._(QueueBlock.class); } li._();