| {{ 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"> |
| <pre>{{ .HumanValue }}</pre> |
| </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> |