blob: 1d9001441bd3884cd5b16c08bc6742da2807579b [file] [log] [blame]
{{ template "base.html" .Base }}
<h2>Machine {{ .Machine.ID }}</h2>
{{ $sessions := .Sessions }}
<table>
<tr>
<td><b>Machine ID</b></td>
<td class="mono">{{ .Machine.ID }}</td>
</tr>
<tr>
<td><b>Created</b></td>
<td>{{ .Machine.Created }}</td>
</tr>
<tr>
<td><b>Active Backoffs</b></td>
<td>{{ len .Machine.ActiveBackoffs }}</td>
</tr>
<tr>
<td><b>Active Work</b></td>
<td>{{ len .Machine.Work }}</td>
</tr>
</table>
<div class="vsplit">
<div class="column">
<h2>Tags</h2>
{{ range $name, $tag := .Machine.Tags }}
<table>
<tr>
<th colspan="2">
{{ template "fragment_tag.html" $tag }}
</th>
</tr>
{{ range $tag.Fields }}
<tr>
<td>
<b>{{ .Type.NativeName }}:</b>
</td>
<td class="mono">
{{ .HumanValue }}
</td>
</tr>
{{ end }}
</table>
{{ else }}
<i>No tags.</i>
{{ end }}
<h2>Work</h2>
{{ range $name, $work := .Machine.Work }}
<table>
<tr>
<th colspan="3">
<b>{{ $work.Process }}</b>
</th>
</tr>
<tr>
<td><b>Process:</b></td>
<td class="mono" colspan="2">
{{ $work.Process }}
</td>
</tr>
{{ $sessionOrErr := index $sessions $name }}
{{ if ne $sessionOrErr.Error "" }}
<tr>
<td colspan="3" class="error">
Could not retrieve session information: {{ $sessionOrErr.Error }}
</td>
</tr>
{{ else }}
{{ $session := $sessionOrErr.Session }}
<tr>
<td rowspan="5" style="vertical-align: top;"><b>Session</b></td>
<td><b>ID:</b></td>
<td class="mono" colspan="2">
<a href="/session/{{ $session.SessionID }}">{{ $session.SessionID }}</a>
</td>
</tr>
<tr>
<td><b>Component:</b></td>
<td class="mono">{{ $session.SessionComponentName }}</td>
</tr>
<tr>
<td><b>Runtime:</b></td>
<td class="mono">{{ $session.SessionRuntimeInfo }}</td>
</tr>
<tr>
<td><b>Created At:</b></td>
<td>{{ $session.SessionCreatedAt }}</td>
</tr>
<tr>
<td><b>Liveness:</b></td>
<td>Interval {{ $session.SessionIntervalSeconds }}s, deadline {{ $session.SessionDeadline }}</td>
</tr>
{{ end }}
</table>
{{ else }}
<i>No active work.</i>
{{ end }}
<h2>Backoffs</h2>
<h3>Active</h3>
{{ range $name, $backoff := .Machine.ActiveBackoffs }}
<table>
<tr>
<th colspan="2">
<b>{{ $backoff.Process }}</b>
</th>
</tr>
<tr>
<td><b>Process:</b></td>
<td class="mono">{{ $backoff.Process }}</td>
</tr>
<tr>
<td><b>Until:</b></td>
<td class="mono">{{ $backoff.Until }}</td>
</tr>
<tr>
<td><b>Cause:</b></td>
<td class="mono">{{ $backoff.Cause }}</td>
</tr>
</table>
{{ else }}
<i>No active backoffs.</i>
{{ end }}
<h3>Expired</h3>
{{ range $name, $backoff := .Machine.ExpiredBackoffs }}
<table style="opacity: 0.4">
<tr>
<th colspan="2">
<b>{{ $backoff.Process }}</b>
</th>
</tr>
<tr>
<td><b>Process:</b></td>
<td class="mono">{{ $backoff.Process }}</td>
</tr>
<tr>
<td><b>Until:</b></td>
<td class="mono">{{ $backoff.Until }}</td>
</tr>
<tr>
<td><b>Cause:</b></td>
<td class="mono">{{ $backoff.Cause }}</td>
</tr>
</table>
{{ else }}
<i>No expired backoffs.</i>
{{ end }}
</div>
<div class="column">
<h2>Work History</h2>
{{ if ne .HistoryError "" }}
<b class="error">Unavailable: {{ .HistoryError }}</b>
{{ else }}
<i>Note: reverse chronological order.</i>
<table>
<tr>
<th>Time</th>
<th>Process</th>
<th>Event</th>
</tr>
{{ range .History }}
<tr class="Event{{.Event}}">
<td>{{ .Timestamp }}</td>
<td><b>{{ .Process }}</b></td>
{{ if eq .Event "Failed" }}
<td>{{ .Event }}: <span class="mono">{{ .FailedCause.String }}</span></td>
{{ else }}
<td>{{ .Event }}</td>
{{ end }}
</tr>
{{ end }}
</table>
{{ end }}
</div>
</div>