blob: 06f1697aac91c70f5c0350159ffd26958a8436f1 [file] [log] [blame]
<ol class="breadcrumb">
<li>
<a class="badge badge-type" href="#">Master</a>
</li>
<li>
<a class="badge badge-type" href="#/agents/{{agent_id}}" title="{{agent_id}}">
Agent</a>
</li>
<li class="active">
<span class="badge badge-type">Framework</span>
{{framework.id}}
</li>
</ol>
<div class="alert alert-error hidden" id="alert">
<button class="close" data-dismiss="alert">×</button>
<strong>{{alert_message}}</strong>
</div>
<div class="row" id="agent">
<div class="col-md-3">
<div class="well">
<dl class="inline clearfix">
<dt>Name:</dt><dd>{{framework.name}}</dd>
<dt>Master:</dt><dd>{{state.master_hostname}}</dd>
<!-- TODO(bmahler): Consider having a break between each role
in order to increase readability. Also, this doesn't
display well when there are a lot of roles (e.g. a large
organization with a lot of teams & services, using roles
like /engineering/frontend/webserver, etc). -->
<dt>Roles:</dt><dd>{{framework.roles.toString()}}</dd>
</dl>
<dl class="inline clearfix">
<dt>Active Tasks:</dt>
<dd>{{framework.num_tasks | number}}</dd>
</dl>
<h4>Resources</h4>
<table class="table table-condensed">
<thead>
<tr>
<td></td>
<td class="text-right">Used</td>
<td class="text-right">Allocated</td>
</tr>
</thead>
<tbody>
<tr>
<td>CPUs</td>
<td class="text-right">
{{monitor.frameworks[framework.id].statistics.cpus_total_usage | number}}
</td>
<td class="text-right">{{framework.cpus | number}}</td>
</tr>
<tr>
<td>GPUs</td>
<td class="text-right">
N/A
</td>
<td class="text-right">{{framework.gpus | number}}</td>
</tr>
<tr>
<td>Memory</td>
<td class="text-right">
{{monitor.frameworks[framework.id].statistics.mem_rss_bytes | dataSize}}
</td>
<td class="text-right">
{{framework.mem * (1024 * 1024) | dataSize}}
</td>
</tr>
<tr>
<td>Disk</td>
<td class="text-right">-</td>
<td class="text-right">
{{(framework.disk || 0) * (1024 * 1024) | dataSize}}
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="col-md-9">
<table m-table table-content="framework.executors" title="Executors"
class="table table-striped table-bordered table-condensed">
<thead>
<tr>
<th data-key="id">ID</th>
<th data-key="name">Name</th>
<th data-key="source">Source</th>
<th data-key="role">Role</th>
<th data-key="tasks.length">Active Tasks</th>
<th data-key="queued_tasks.length">Queued Tasks</th>
<th data-key="resources.cpus">CPUs (Used / Allocated)</th>
<th data-key="resources.gpus">GPUs (Used / Allocated)</th>
<th data-key="resources.mem">Mem (Used / Allocated)</th>
<th data-key="resources.disk">Disk (Used / Allocated)</th>
<th></th>
</tr>
</thead>
<tbody>
<tr ng-repeat="executor in $data">
<td>
<a href="{{'#/agents/' + agent_id + '/frameworks/' + framework.id + '/executors/' + executor.id}}">
{{executor.id}}
</a>
</td>
<td>{{executor.name}}</td>
<td>{{executor.source}}</td>
<td>{{executor.role}}</td>
<td>{{executor.tasks.length | number}}</td>
<td>{{executor.queued_tasks.length | number}}</td>
<td>{{monitor.frameworks[framework.id].executors[executor.id].statistics.cpus_total_usage | number}} /
{{executor.resources.cpus | number}}</td>
<!-- TODO(haosdent): We need to show statistics for gpu once it is provided in monitor endpoint. -->
<td>N/A</td>
<td>{{monitor.frameworks[framework.id].executors[executor.id].statistics.mem_rss_bytes | dataSize}} /
{{executor.resources.mem * (1024 * 1024) | dataSize}}</td>
<td>{{monitor.frameworks[framework.id].executors[executor.id].statistics.disk_used_bytes | dataSize}} /
{{executor.resources.disk * (1024 * 1024) | dataSize}}</td>
<td>
<a href="{{'#/agents/' + agent_id + '/browse?path=' +
encodeURIComponent(executor.directory)}}">
Sandbox
</a>
</td>
</tr>
</tbody>
</table>
<table m-table table-content="framework.completed_executors" title="Completed Executors"
class="table table-striped table-bordered table-condensed">
<thead>
<tr>
<th data-key="id">ID</th>
<th data-key="name">Name</th>
<th data-key="source">Source</th>
<th data-key="role">Role</th>
<th data-key="sandbox">Sandbox</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="completed_executor in $data">
<td>
<a href="{{'#/agents/' + agent_id + '/frameworks/' + framework.id + '/executors/' + completed_executor.id}}">
{{completed_executor.id}}
</a>
</td>
<td>{{completed_executor.name}}</td>
<td>{{completed_executor.source}}</td>
<td>{{completed_executor.role}}</td>
<td>
<a href="{{'#/agents/' + agent_id + '/browse?path=' +
encodeURIComponent(completed_executor.directory)}}">
browse
</a>
</td>
</tr>
</tbody>
</table>
</div>
</div>