|
@@ -16,148 +16,238 @@
|
|
|
* limitations under the License.
|
|
|
}}
|
|
|
|
|
|
-<div class="container-fluid">
|
|
|
- <!-- app table -->
|
|
|
- <div class="row">
|
|
|
- <div class="col-md-12 container-fluid">
|
|
|
- <div class="panel panel-default">
|
|
|
- <div class="panel-heading">
|
|
|
- Application Basic Information
|
|
|
- </div>
|
|
|
- {{app-table table-id="app-table" app=model.app}}
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+<div class="col-md-12 container-fluid">
|
|
|
+ {{em-breadcrumbs items=breadcrumbs}}
|
|
|
+</div>
|
|
|
|
|
|
- <!-- diag info and other infos -->
|
|
|
+{{#if model.app}}
|
|
|
+<div class="col-md-12 container-fluid">
|
|
|
<div class="row">
|
|
|
- <!-- diag info -->
|
|
|
- <div class="col-md-4 container-fluid">
|
|
|
- {{#if model.app.isFailed}}
|
|
|
- <div class="panel panel-danger">
|
|
|
- <div class="panel-heading">
|
|
|
- Diagnostics
|
|
|
- </div>
|
|
|
- <div class="panel-body">{{model.app.diagnostics}}</div>
|
|
|
+
|
|
|
+ <div class="col-md-2 container-fluid">
|
|
|
+ <div class="panel panel-default">
|
|
|
+ <div class="panel-heading">
|
|
|
+ <h4>Application</h4>
|
|
|
</div>
|
|
|
- {{else}}
|
|
|
- <div class="panel panel-default">
|
|
|
- <div class="panel-body">
|
|
|
- Diagnostics
|
|
|
- </div>
|
|
|
- <div class="panel-footer">{{model.app.diagnostics}}</div>
|
|
|
+ <div class="panel-body">
|
|
|
+ <ul class="nav nav-pills nav-stacked" id="stacked-menu">
|
|
|
+ <ul class="nav nav-pills nav-stacked collapse in">
|
|
|
+ {{#link-to 'yarn-app' tagName="li"}}
|
|
|
+ {{#link-to 'yarn-app' model.app.id}}Information
|
|
|
+ {{/link-to}}
|
|
|
+ {{/link-to}}
|
|
|
+ {{#link-to 'yarn-app-attempts' tagName="li"}}
|
|
|
+ {{#link-to 'yarn-app-attempts' model.app.id}}Attempts List
|
|
|
+ {{/link-to}}
|
|
|
+ {{/link-to}}
|
|
|
+ </ul>
|
|
|
+ </ul>
|
|
|
</div>
|
|
|
- {{/if}}
|
|
|
+ </div>
|
|
|
</div>
|
|
|
|
|
|
- <div class="col-md-5 container-fluid">
|
|
|
- <div class="panel panel-default">
|
|
|
- <div class="panel-heading">Scheduling Info</div>
|
|
|
- <table class="table">
|
|
|
- <tbody>
|
|
|
- <tr>
|
|
|
- <td>Allocated Resource</td>
|
|
|
- <td>{{model.app.allocatedResource}}</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>Running Containers</td>
|
|
|
- <td>{{model.app.runningContainersNumber}}</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>Preempted Resource</td>
|
|
|
- <td>{{model.app.preemptedResource}}</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>Num Non-AM container preempted</td>
|
|
|
- <td>{{model.app.numAMContainerPreempted}}</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>Num AM container preempted</td>
|
|
|
- <td>{{model.app.numAMContainerPreempted}}</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>Aggregated Resource Usage</td>
|
|
|
- <td>{{model.app.aggregatedResourceUsage}}</td>
|
|
|
- </tr>
|
|
|
- </tbody>
|
|
|
- </table>
|
|
|
+ <div class="col-md-10 container-fluid">
|
|
|
+ <div class="row">
|
|
|
+ <div class="col-md-12 container-fluid">
|
|
|
+ <div class="panel panel-default">
|
|
|
+ <div class="panel-heading">Basic Info</div>
|
|
|
+ <table class="display table table-striped table-bordered"
|
|
|
+ cellspacing="0" width="100%">
|
|
|
+ <thead>
|
|
|
+ <tr>
|
|
|
+ <th>Application ID</th>
|
|
|
+ <th>Name</th>
|
|
|
+ <th>User</th>
|
|
|
+ <th>Queue</th>
|
|
|
+ <th>State</th>
|
|
|
+ <th>Final Status</th>
|
|
|
+ <th>Start Time</th>
|
|
|
+ <th>Elapsed Time</th>
|
|
|
+ <th>Finished Time</th>
|
|
|
+ <th>Priority</th>
|
|
|
+ <th>Progress</th>
|
|
|
+ <th>Is Unmanaged AM</th>
|
|
|
+ </tr>
|
|
|
+ </thead>
|
|
|
+
|
|
|
+ <tbody>
|
|
|
+ <tr>
|
|
|
+ <td>{{model.app.id}}</td>
|
|
|
+ <td>{{model.app.appName}}</td>
|
|
|
+ <td>{{model.app.user}}</td>
|
|
|
+ <td>{{model.app.queue}}</td>
|
|
|
+ <td>{{model.app.state}}</td>
|
|
|
+ <td>
|
|
|
+ <span class={{model.app.finalStatusStyle}}>
|
|
|
+ {{model.app.finalStatus}}
|
|
|
+ </span>
|
|
|
+ </td>
|
|
|
+ <td>{{model.app.startTime}}</td>
|
|
|
+ <td>{{model.app.elapsedTime}}</td>
|
|
|
+ <td>{{model.app.validatedFinishedTs}}</td>
|
|
|
+ <td>{{model.app.priority}}</td>
|
|
|
+ <td>
|
|
|
+ <div class="progress" style="margin-bottom: 0;">
|
|
|
+ <div class="progress-bar" role="progressbar"
|
|
|
+ aria-valuenow="60" aria-valuemin="0"
|
|
|
+ aria-valuemax="100"
|
|
|
+ style={{model.app.progressStyle}}>
|
|
|
+ {{model.app.progress}}%
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </td>
|
|
|
+ <td>{{model.app.unmanagedApplication}}</td>
|
|
|
+ </tr>
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
|
- <!-- other info -->
|
|
|
- <div class="col-md-3 container-fluid">
|
|
|
- <div class="panel panel-default">
|
|
|
- <div class="panel-heading">Other Info</div>
|
|
|
- <table class="table">
|
|
|
- <tbody>
|
|
|
- <tr>
|
|
|
- <td>AM Container Log</td>
|
|
|
- <td><a href={{model.app.amContainerLogs}}>Link</a></td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>AM Host Http Addr</td>
|
|
|
- <td><a href={{model.app.amHostHttpAddress}}>Link</a></td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>Log Aggregation Status</td>
|
|
|
- <td>{{model.app.logAggregationStatus}}</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>Is Unmanaged AM</td>
|
|
|
- <td>{{model.app.unmanagedApplication}}</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>AM Node Label Expression</td>
|
|
|
- <td>{{model.app.amNodeLabelExpression}}</td>
|
|
|
- </tr>
|
|
|
- </tbody>
|
|
|
- </table>
|
|
|
+ <div class="row">
|
|
|
+ {{#if model.app.diagnostics}}
|
|
|
+ <div class="col-md-12 container-fluid">
|
|
|
+ {{#if model.app.isFailed}}
|
|
|
+ <div class="panel panel-danger">
|
|
|
+ <div class="panel-heading">
|
|
|
+ Diagnostics
|
|
|
+ </div>
|
|
|
+ <div class="panel-body">{{model.app.diagnostics}}</div>
|
|
|
+ </div>
|
|
|
+ {{else}}
|
|
|
+ <div class="panel panel-default">
|
|
|
+ <div class="panel-body">
|
|
|
+ Diagnostics
|
|
|
+ </div>
|
|
|
+ <div class="panel-footer">{{model.app.diagnostics}}</div>
|
|
|
+ </div>
|
|
|
+ {{/if}}
|
|
|
+ </div>
|
|
|
+ {{/if}}
|
|
|
</div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
|
|
|
-<!--
|
|
|
- <div class="row">
|
|
|
- <div class="col-md-12 container-fluid">
|
|
|
- <div class="panel panel-default">
|
|
|
- <div class="panel-heading">
|
|
|
- Application Attempts
|
|
|
+ <div class="row">
|
|
|
+ <div class="col-md-8 container-fluid">
|
|
|
+ <div class="panel panel-default">
|
|
|
+ <div class="panel-heading">Scheduling Info</div>
|
|
|
+ <table class="display table table-striped table-bordered"
|
|
|
+ cellspacing="0" width="100%">
|
|
|
+ <thead>
|
|
|
+ <tr>
|
|
|
+ <th>Allocated Resource</th>
|
|
|
+ <th>Running Containers</th>
|
|
|
+ <th>Preempted Resource</th>
|
|
|
+ <th>Num Non-AM container preempted</th>
|
|
|
+ <th>Num AM container preempted</th>
|
|
|
+ <th>Aggregated Resource Usage</th>
|
|
|
+ </tr>
|
|
|
+ </thead>
|
|
|
+
|
|
|
+ <tbody>
|
|
|
+ <tr>
|
|
|
+ <td>{{model.app.allocatedResource}}</td>
|
|
|
+ <td>{{model.app.runningContainersNumber}}</td>
|
|
|
+ <td>{{model.app.preemptedResource}}</td>
|
|
|
+ <td>{{model.app.numAMContainerPreempted}}</td>
|
|
|
+ <td>{{model.app.numAMContainerPreempted}}</td>
|
|
|
+ <td>{{model.app.aggregatedResourceUsage}}</td>
|
|
|
+ </tr>
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
</div>
|
|
|
- <table id="app-attempt-table" class="table table-striped table-bordered" cellspacing="0" width="100%" height="100%">
|
|
|
- <thead>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="col-md-4 container-fluid">
|
|
|
+ <div class="panel panel-default">
|
|
|
+ <div class="panel-heading">App Master Info</div>
|
|
|
+ <table class="display table table-striped table-bordered"
|
|
|
+ cellspacing="0" width="100%">
|
|
|
+ <thead>
|
|
|
<tr>
|
|
|
- <th>Start Time</th>
|
|
|
- <th>Master ContainerId</th>
|
|
|
- <th>Node Http Address</th>
|
|
|
- <th>Node Id</th>
|
|
|
- <th>Logs Link</th>
|
|
|
- </tr>
|
|
|
- </thead>
|
|
|
- <tbody>
|
|
|
- {{#each model.attempts as |attempt|}}
|
|
|
- <tr>
|
|
|
- <td>{{attempt.startTime}}</td>
|
|
|
- <td>{{attempt.containerId}}</td>
|
|
|
- <td><a href={{attempt.nodeHttpAddress}}>{{attempt.nodeHttpAddress}}</a></td>
|
|
|
- <td>{{attempt.nodeId}}</td>
|
|
|
- <td><a href={{attempt.logsLink}}>link</a></td>
|
|
|
- </tr>
|
|
|
- {{/each}}
|
|
|
- </tbody>
|
|
|
- </table>
|
|
|
+ <th>Master Container Log</th>
|
|
|
+ <td>Master Node</td>
|
|
|
+ <td>Master Node Label Expr</td>
|
|
|
+ </tr>
|
|
|
+ </thead>
|
|
|
+
|
|
|
+ <tbody>
|
|
|
+ <tr>
|
|
|
+ <td><a href={{model.app.amContainerLogs}}>Link</a></td>
|
|
|
+ <td><a href={{model.app.amHostHttpAddress}}>Link</a></td>
|
|
|
+ <td>{{model.app.amNodeLabelExpression}}</td>
|
|
|
+ </tr>
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
--->
|
|
|
- <!-- timeline view of children -->
|
|
|
- <div class="row">
|
|
|
- {{timeline-view parent-id="attempt-timeline-div" my-id="timeline-view" height="100%" rmModel=model.attempts label="shortAppAttemptId" attemptModel=true}}
|
|
|
- </div>
|
|
|
-</div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ {{#if model.nodes}}
|
|
|
+ {{#if model.rmContainers}}
|
|
|
+ <div class="row" id="stackd-bar-chart-mem">
|
|
|
+ {{per-app-memusage-by-nodes-stacked-barchart
|
|
|
+ nodes=model.nodes
|
|
|
+ rmContainers=model.rmContainers
|
|
|
+ parentId="stackd-bar-chart-mem"
|
|
|
+ title=(concat 'Memory usage by nodes for: [' model.app.id ']')}}
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <hr>
|
|
|
+
|
|
|
+ <div class="row" id="stackd-bar-chart-ncontainer">
|
|
|
+ {{per-app-ncontainers-by-nodes-stacked-barchart
|
|
|
+ nodes=model.nodes
|
|
|
+ rmContainers=model.rmContainers
|
|
|
+ parentId="stackd-bar-chart-ncontainer"
|
|
|
+ title=(concat 'Running #Containers by nodes for: [' model.app.id ']')}}
|
|
|
+ </div>
|
|
|
+ {{/if}}
|
|
|
+ {{/if}}
|
|
|
|
|
|
-<!--
|
|
|
-{{simple-table table-id="app-attempt-table" paging=false bFilter=false}}
|
|
|
--->
|
|
|
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!--
|
|
|
+ <div class="row">
|
|
|
+ <div class="col-md-12 container-fluid">
|
|
|
+ <div class="panel panel-default">
|
|
|
+ <div class="panel-heading">
|
|
|
+ Application Attempts
|
|
|
+ </div>
|
|
|
+ <table id="app-attempt-table" class="table table-striped table-bordered" cellspacing="0" width="100%" height="100%">
|
|
|
+ <thead>
|
|
|
+ <tr>
|
|
|
+ <th>Start Time</th>
|
|
|
+ <th>Master ContainerId</th>
|
|
|
+ <th>Node Http Address</th>
|
|
|
+ <th>Node Id</th>
|
|
|
+ <th>Logs Link</th>
|
|
|
+ </tr>
|
|
|
+ </thead>
|
|
|
+ <tbody>
|
|
|
+ {{#each model.attempts as |attempt|}}
|
|
|
+ <tr>
|
|
|
+ <td>{{attempt.startTime}}</td>
|
|
|
+ <td>{{attempt.containerId}}</td>
|
|
|
+ <td><a href={{attempt.nodeHttpAddress}}>{{attempt.nodeHttpAddress}}</a></td>
|
|
|
+ <td>{{attempt.nodeId}}</td>
|
|
|
+ <td><a href={{attempt.logsLink}}>link</a></td>
|
|
|
+ </tr>
|
|
|
+ {{/each}}
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ -->
|
|
|
|
|
|
+ <!-- timeline view of children -->
|
|
|
+ <!--
|
|
|
+ <div class="row">
|
|
|
+ {{timeline-view parent-id="attempt-timeline-div" my-id="timeline-view" height="100%" rmModel=model.attempts label="shortAppAttemptId" attemptModel=true}}
|
|
|
+ </div>
|
|
|
+ -->
|
|
|
+ </div>
|
|
|
+</div>
|
|
|
+{{/if}}
|
|
|
{{outlet}}
|