ul. li(). a(_Q).$style(width(Q_MAX_WIDTH)). span().$style(Q_END)._("100% ")._(). span(".q", "default")._()._(); } else { ul. li().$style("margin-bottom: 1em"). span().$style("font-weight: bold")._("Legend:")._(). span().$class("qlegend ui-corner-all").$style(Q_GIVEN). _("Capacity")._(). span().$class("qlegend ui-corner-all").$style(Q_UNDER). _("Used")._(). span().$class("qlegend ui-corner-all").$style(Q_OVER). _("Used (over capacity)")._(). span().$class("qlegend ui-corner-all ui-state-default"). _("Max Capacity")._(). _(); a(_Q).$style(width(Q_MAX_WIDTH)). span().$style(join(width(used), ";left:0%;", used > 1 ? Q_OVER : Q_UNDER))._(".")._(). span(".q", "Queue: root")._(). span().$class("qstats").$style(left(Q_STATS_POS)). _(join(percent(used), " used"))._(). _(QueueBlock.class)._(); } else { for (NodeLabel label : nodeLabelsInfo) {
LI<UL<Hamlet>> li = ul. li(). a(_Q).$style(width(absMaxCap * Q_MAX_WIDTH)). $title(join("Absolute Capacity:", percent(absCap))). span().$style(join(Q_GIVEN, ";font-size:1px;", width(absCap/absMaxCap))). _('.')._(). span(".q", "Queue: " + info.getQueuePath().substring(5))._(). span().$class("qstats").$style(left(Q_STATS_POS)). _(join(percent(used), " used"))._(); li.ul("#lq").li()._(LeafQueueInfoBlock.class)._()._(); li.ul("#lq").li()._(QueueUsersInfoBlock.class)._()._(); } else { li._(QueueBlock.class); li._();
ul. li(). a(_Q).$style(width(Q_MAX_WIDTH)). span().$style(Q_END)._("100% ")._(). span(".q", "default")._()._(); } else { ul. li().$style("margin-bottom: 1em"). span().$style("font-weight: bold")._("Legend:")._(). span().$class("qlegend ui-corner-all").$style(Q_GIVEN). _("Capacity")._(). span().$class("qlegend ui-corner-all").$style(Q_UNDER). _("Used")._(). span().$class("qlegend ui-corner-all").$style(Q_OVER). _("Used (over capacity)")._(). span().$class("qlegend ui-corner-all ui-state-default"). _("Max Capacity")._(). _(); a(_Q).$style(width(Q_MAX_WIDTH)). span().$style(join(width(used), ";left:0%;", used > 1 ? Q_OVER : Q_UNDER))._(".")._(). span(".q", "root")._(). span().$class("qstats").$style(left(Q_STATS_POS)). _(join(percent(used), " used"))._(). _(QueueBlock.class)._(); } else { for (NodeLabel label : nodeLabelsInfo) {
ul. li(). a(_Q).$style(width(Q_MAX_WIDTH)). span().$style(Q_END)._("100% ")._(). span(".q", "default")._()._(); } else { FairSchedulerInfo sinfo = new FairSchedulerInfo(fs); li().$style("margin-bottom: 1em"). span().$style("font-weight: bold")._("Legend:")._(). span().$class("qlegend ui-corner-all").$style(Q_GIVEN). $title("The steady fair shares consider all queues, " + "both active (with running applications) and inactive."). _(STEADY_FAIR_SHARE)._(). span().$class("qlegend ui-corner-all").$style(Q_INSTANTANEOUS_FS). $title("The instantaneous fair shares consider only active " + "queues (with running applications)."). _(INSTANTANEOUS_FAIR_SHARE)._(). span().$class("qlegend ui-corner-all").$style(Q_UNDER). _("Used")._(). span().$class("qlegend ui-corner-all").$style(Q_OVER). _("Used (over fair share)")._(). span().$class("qlegend ui-corner-all ui-state-default"). _("Max Capacity")._(). _(). li(). a(_Q).$style(width(Q_MAX_WIDTH)). span().$style(join(width(used), ";left:0%;", used > 1 ? Q_OVER : Q_UNDER))._(".")._().
h3("Cluster"). ul(). li().a(url(rmweb, "cluster", "cluster"), "About")._(). li().a(url(rmweb, "cluster", "apps"), "Applications")._(). li().a(url(rmweb, "cluster", "scheduler"), "Scheduler")._()._(). h3("Application"). ul(). li().a(url("app/info"), "About")._(). li().a(url("app"), "Jobs")._()._(); if (app.getJob() != null) { String jobid = MRApps.toString(app.getJob().getID()); h3("Job"). ul(). li().a(url("job", jobid), "Overview")._(). li().a(url("jobcounters", jobid), "Counters")._(). li().a(url("conf", jobid), "Configuration")._(). li().a(url("tasks", jobid, "m"), "Map tasks")._(). li().a(url("tasks", jobid, "r"), "Reduce tasks")._(). li().a(".logslink", url(MRWebAppUtil.getYARNWebappScheme(), nodeHttpAddress, "node", "containerlogs", thisAmInfo.getContainerId().toString(), app.getJob().getUserName()), "AM Logs")._()._(); if (app.getTask() != null) { String taskid = MRApps.toString(app.getTask().getID()); h3("Task"). ul().
h3("Cluster"). ul(). li().a(url(rmweb, "cluster", "cluster"), "About")._(). li().a(url(rmweb, "cluster", "apps"), "Applications")._(). li().a(url(rmweb, "cluster", "scheduler"), "Scheduler")._()._(). h3("Application"). ul(). li().a(url("app/info"), "About")._(). li().a(url("app"), "Jobs")._()._(); if (app.getJob() != null) { String jobid = MRApps.toString(app.getJob().getID()); h3("Job"). ul(). li().a(url("job", jobid), "Overview")._(). li().a(url("jobcounters", jobid), "Counters")._(). li().a(url("conf", jobid), "Configuration")._(). li().a(url("tasks", jobid, "m"), "Map tasks")._(). li().a(url("tasks", jobid, "r"), "Reduce tasks")._(). li().a(".logslink", url(MRWebAppUtil.getYARNWebappScheme(), nodeHttpAddress, "node", "containerlogs", thisAmInfo.getContainerId().toString(), app.getJob().getUserName()), "AM Logs")._()._(); if (app.getTask() != null) { String taskid = MRApps.toString(app.getTask().getID()); h3("Task"). ul().
ul. li(). a(_Q).$style(width(Q_MAX_WIDTH)). span().$style(Q_END)._("100% ")._(). span(".q", "default")._()._(); } else { FairSchedulerInfo sinfo = new FairSchedulerInfo(fs); li().$style("margin-bottom: 1em"). span().$style("font-weight: bold")._("Legend:")._(). span().$class("qlegend ui-corner-all").$style(Q_GIVEN). $title("The steady fair shares consider all queues, " + "both active (with running applications) and inactive."). _(STEADY_FAIR_SHARE)._(). span().$class("qlegend ui-corner-all").$style(Q_INSTANTANEOUS_FS). $title("The instantaneous fair shares consider only active " + "queues (with running applications)."). _(INSTANTANEOUS_FAIR_SHARE)._(). span().$class("qlegend ui-corner-all").$style(Q_UNDER). _("Used")._(). span().$class("qlegend ui-corner-all").$style(Q_OVER). _("Used (over fair share)")._(). span().$class("qlegend ui-corner-all ui-state-default"). _("Max Capacity")._(). _(). li(). a(_Q).$style(width(Q_MAX_WIDTH)). span().$style(join(width(used), ";left:0%;", used > 1 ? Q_OVER : Q_UNDER))._(".")._().
ul. li(). a(_Q).$style(width(WIDTH_F)). span().$style(Q_END)._("100% ")._(). span(".q", "default")._()._(); } else { float used = sinfo.getUsedCapacity(); ul. li(). a(_Q).$style(width(WIDTH_F)). $title(join("used:", percent(used))). span().$style(Q_END)._("100%")._(). ';', used > set ? left(set) : left(used)))._(".")._(). span(".q", sinfo.getQueueName())._(). _(QueueInfoBlock.class)._();
h3("Application"). ul(). li().a(url("about"), "About")._(). li().a(url("app"), "Jobs")._()._(); if (app.getJob() != null) { String jobid = MRApps.toString(app.getJob().getID()); h3("Job"). ul(). li().a(url("job", jobid), "Overview")._(). li().a(url("jobcounters", jobid), "Counters")._(). li().a(url("conf", jobid), "Configuration")._(). li().a(url("tasks", jobid, "m"), "Map tasks")._(). li().a(url("tasks", jobid, "r"), "Reduce tasks")._()._(); if (app.getTask() != null) { String taskid = MRApps.toString(app.getTask().getID()); h3("Task"). ul(). li().a(url("task", taskid), "Task Overview")._(). li().a(url("taskcounters", taskid), "Counters")._()._(); h3("Tools"). ul(). li().a("/conf", "Configuration")._(). li().a("/logs", "Local logs")._(). li().a("/stacks", "Server stacks")._(). li().a("/jmx?qry=Hadoop:*", "Server metrics")._()._()._();
h3("Application"). ul(). li().a(url("about"), "About")._(). li().a(url("app"), "Jobs")._()._(); if (app.getJob() != null) { String jobid = MRApps.toString(app.getJob().getID()); h3("Job"). ul(). li().a(url("job", jobid), "Overview")._(). li().a(url("jobcounters", jobid), "Counters")._(). li().a(url("conf", jobid), "Configuration")._(). li().a(url("tasks", jobid, "m"), "Map tasks")._(). li().a(url("tasks", jobid, "r"), "Reduce tasks")._()._(); if (app.getTask() != null) { String taskid = MRApps.toString(app.getTask().getID()); h3("Task"). ul(). li().a(url("task", taskid), "Task Overview")._(). li().a(url("taskcounters", taskid), "Counters")._()._(); h3("Tools"). ul(). li().a("/conf", "Configuration")._(). li().a("/logs", "Local logs")._(). li().a("/stacks", "Server stacks")._(). li().a("/jmx?qry=Hadoop:*", "Server metrics")._()._()._();
.h3()._("ResourceManager")._() .ul() .li().a(RMWebAppURL, "RM Home")._()._() .h3()._("NodeManager")._() // TODO: Problem if no header like this .ul() .li() .a(url("node"), "Node Information")._() .li() .a(url("allApplications"), "List of Applications") ._() .li() .a(url("allContainers"), "List of Containers")._() ._() .h3("Tools") .ul() .li().a("/conf", "Configuration")._() .li().a("/logs", "Local logs")._() .li().a("/stacks", "Server stacks")._() .li().a("/jmx?qry=Hadoop:*", "Server metrics")._(); if (addErrorsAndWarningsLink) { ul.li().a(url("errors-and-warnings"), "Errors/Warnings")._();
LI<UL<Hamlet>> li = ul. li(). a(_Q).$style(width(capacity * Q_MAX_WIDTH)). $title(join(join(STEADY_FAIR_SHARE + ":", percent(steadyFairShare)), join(" " + INSTANTANEOUS_FAIR_SHARE + ":", percent(instantaneousFairShare)))). _('.')._(). span(".q", info.getQueueName())._(). span().$class("qstats").$style(left(Q_STATS_POS)). _(join(percent(used), " used"))._(); li.ul("#lq").li()._(LeafQueueBlock.class)._()._(); } else { li._(QueueBlock.class); li._();
ul. li(). a(_Q).$style(width(WIDTH_F)). span().$style(Q_END)._("100% ")._(). span(".q", "default")._()._(); } else { float used = sinfo.getUsedCapacity(); ul. li(). a(_Q).$style(width(WIDTH_F)). $title(join("used:", percent(used))). span().$style(Q_END)._("100%")._(). ';', used > set ? left(set) : left(used)))._(".")._(). span(".q", sinfo.getQueueName())._(). _(QueueInfoBlock.class)._();
h3("Application"). ul(). li().a(url("about"), "About")._(). li().a(url("app"), "Jobs")._()._(); if (app.getJob() != null) { String jobid = MRApps.toString(app.getJob().getID()); h3("Job"). ul(). li().a(url("job", jobid), "Overview")._(). li().a(url("jobcounters", jobid), "Counters")._(). li().a(url("conf", jobid), "Configuration")._(). li().a(url("tasks", jobid, "m"), "Map tasks")._(). li().a(url("tasks", jobid, "r"), "Reduce tasks")._()._(); if (app.getTask() != null) { String taskid = MRApps.toString(app.getTask().getID()); h3("Task"). ul(). li().a(url("task", taskid), "Task Overview")._(). li().a(url("taskcounters", taskid), "Counters")._()._(); h3("Tools"). ul(). li().a("/conf", "Configuration")._(). li().a("/logs", "Local logs")._(). li().a("/stacks", "Server stacks")._(). li().a("/jmx?qry=Hadoop:*", "Server metrics")._()._()._();
LI<UL<Hamlet>> li = ul. li(). a(_Q).$style(width(absMaxCap * Q_MAX_WIDTH)). $title(join("Absolute Capacity:", percent(absCap))). span().$style(join(Q_GIVEN, ";font-size:1px;", width(absCap/absMaxCap))). _('.')._(). span(".q", "Queue: " + info.getQueuePath().substring(5))._(). span().$class("qstats").$style(left(Q_STATS_POS)). _(join(percent(used), " used"))._(); li.ul("#lq").li()._(LeafQueueInfoBlock.class)._()._(); li.ul("#lq").li()._(QueueUsersInfoBlock.class)._()._(); } else { li._(QueueBlock.class); li._();
LI<UL<Hamlet>> li = ul. li(). a(_Q).$style(width(capacity * Q_MAX_WIDTH)). $title(join(join(STEADY_FAIR_SHARE + ":", percent(steadyFairShare)), join(" " + INSTANTANEOUS_FAIR_SHARE + ":", percent(instantaneousFairShare)))). _('.')._(). span(".q", info.getQueueName())._(). span().$class("qstats").$style(left(Q_STATS_POS)). _(join(percent(used), " used"))._(); li.ul("#lq").li()._(LeafQueueBlock.class)._()._(); } else { li._(QueueBlock.class); li._();
@Override protected void render(Block html) { html. div("#nav"). h3("Slider"). ul(). li().a(this.prefix(), "Overview")._(). li().a(relPath(CONTAINER_STATS), "Statistics")._(). li().a(relPath(CLUSTER_SPEC), "Specification")._(). li().a(rootPath(SYSTEM_METRICS_JSON), "Metrics")._(). li().a(rootPath(SYSTEM_HEALTHCHECK), "Health")._(). li().a(rootPath(SYSTEM_THREADS), "Threads")._(). _() .h3("REST API"). ul(). li().a(apiPath(MODEL_DESIRED), "Specified")._(). li().a(apiPath(MODEL_RESOLVED), "Resolved")._(). li().a(apiPath(LIVE_RESOURCES), "Resources")._(). li().a(apiPath(LIVE_COMPONENTS), "Components")._(). li().a(apiPath(LIVE_CONTAINERS), "Containers")._(). li().a(apiPath(LIVE_NODES), "Nodes")._(). li().a(apiPath(LIVE_STATISTICS), "Statistics")._(). li().a(apiPath(LIVE_LIVENESS), "Liveness")._(). li().a(apiPath(LIVE_DIAGNOSTICS), "Diagnostics")._() ._() ._(); }
@Override protected void render(Block html) { String RMWebAppURL = WebAppUtils.getResolvedRemoteRMWebAppURLWithScheme(this.conf); html .div("#nav") .h3()._("ResourceManager")._() .ul() .li().a(RMWebAppURL, "RM Home")._()._() .h3()._("NodeManager")._() // TODO: Problem if no header like this .ul() .li() .a(url("node"), "Node Information")._() .li() .a(url("allApplications"), "List of Applications") ._() .li() .a(url("allContainers"), "List of Containers")._() ._() .h3("Tools") .ul() .li().a("/conf", "Configuration")._() .li().a("/logs", "Local logs")._() .li().a("/stacks", "Server stacks")._() .li().a("/jmx?qry=Hadoop:*", "Server metrics")._()._()._(); }
@Override protected void render(Block html) { html. div("#nav"). h3("Slider"). ul(). li().a(this.prefix(), "Overview")._(). li().a(relPath(CONTAINER_STATS), "Statistics")._(). li().a(relPath(CLUSTER_SPEC), "Specification")._(). li().a(rootPath(SYSTEM_METRICS_JSON), "Metrics")._(). li().a(rootPath(SYSTEM_HEALTHCHECK), "Health")._(). li().a(rootPath(SYSTEM_THREADS), "Threads")._(). _() .h3("REST API"). ul(). li().a(apiPath(MODEL_DESIRED), "Specified")._(). li().a(apiPath(MODEL_RESOLVED), "Resolved")._(). li().a(apiPath(LIVE_RESOURCES), "Resources")._(). li().a(apiPath(LIVE_COMPONENTS), "Components")._(). li().a(apiPath(LIVE_CONTAINERS), "Containers")._(). li().a(apiPath(LIVE_NODES), "Nodes")._(). li().a(apiPath(LIVE_STATISTICS), "Statistics")._(). li().a(apiPath(LIVE_LIVENESS), "Liveness")._(). li().a(apiPath(LIVE_DIAGNOSTICS), "Diagnostics")._() ._() ._(); }
@Override public void render(Block html) { UL<DIV<Hamlet>> mainList = html. div("#nav"). h3("Cluster"). ul(). li().a(url("cluster"), "About")._(). li().a(url("nodes"), "Nodes")._(). li().a(url("nodelabels"), "Node Labels")._(); UL<LI<UL<DIV<Hamlet>>>> subAppsList = mainList. li().a(url("apps"), "Applications"). ul(); subAppsList.li()._(); for (YarnApplicationState state : YarnApplicationState.values()) { subAppsList. li().a(url("apps", state.toString()), state.toString())._(); } subAppsList._()._(); mainList. li().a(url("scheduler"), "Scheduler")._()._(). h3("Tools"). ul(). li().a("/conf", "Configuration")._(). li().a("/logs", "Local logs")._(). li().a("/stacks", "Server stacks")._(). li().a("/jmx?qry=Hadoop:*", "Server metrics")._()._()._(); } }