| Serge Bazanski | 7762831 | 2023-02-15 23:33:22 +0100 | [diff] [blame] | 1 | {{ template "base.html" .Base }} | 
 | 2 | <h2>Machine {{ .Machine.ID }}</h2> | 
 | 3 |  | 
 | 4 | {{ $sessions := .Sessions }} | 
 | 5 |  | 
 | 6 | <table> | 
 | 7 |     <tr> | 
 | 8 |         <td><b>Machine ID</b></td> | 
 | 9 |         <td class="mono">{{ .Machine.ID }}</td> | 
 | 10 |     </tr> | 
 | 11 |     <tr> | 
 | 12 |         <td><b>Created</b></td> | 
 | 13 |         <td>{{ .Machine.Created }}</td> | 
 | 14 |     </tr> | 
 | 15 |     <tr> | 
 | 16 |         <td><b>Active Backoffs</b></td> | 
 | 17 |         <td>{{ len .Machine.ActiveBackoffs }}</td> | 
 | 18 |     </tr> | 
 | 19 |     <tr> | 
 | 20 |         <td><b>Active Work</b></td> | 
 | 21 |         <td>{{ len .Machine.Work }}</td> | 
 | 22 |     </tr> | 
 | 23 | </table> | 
 | 24 |  | 
 | 25 | <div class="vsplit"> | 
 | 26 |     <div class="column"> | 
 | 27 |         <h2>Tags</h2> | 
 | 28 |         {{ range $name, $tag := .Machine.Tags }} | 
 | 29 |         <table> | 
 | 30 |             <tr> | 
 | 31 |                 <th colspan="2"> | 
 | 32 |                     {{ template "fragment_tag.html" $tag }} | 
 | 33 |                 </th> | 
 | 34 |             </tr> | 
 | 35 |             {{ range $tag.Fields }} | 
 | 36 |             <tr> | 
 | 37 |                 <td> | 
 | 38 |                     <b>{{ .Type.NativeName }}:</b> | 
 | 39 |                 </td> | 
 | 40 |                 <td class="mono"> | 
 | 41 |                     {{ .HumanValue }} | 
 | 42 |                 </td> | 
 | 43 |             </tr> | 
 | 44 |             {{ end }} | 
 | 45 |         </table> | 
 | 46 |         {{ else }} | 
 | 47 |         <i>No tags.</i> | 
 | 48 |         {{ end }} | 
 | 49 |         <h2>Work</h2> | 
 | 50 |         {{ range $name, $work := .Machine.Work }} | 
 | 51 |         <table> | 
 | 52 |             <tr> | 
 | 53 |                 <th colspan="3"> | 
 | 54 |                     <b>{{ $work.Process }}</b> | 
 | 55 |                 </th> | 
 | 56 |             </tr> | 
 | 57 |             <tr> | 
 | 58 |                 <td><b>Process:</b></td> | 
 | 59 |                 <td class="mono" colspan="2"> | 
 | 60 |                     {{ $work.Process }} | 
 | 61 |                 </td> | 
 | 62 |             </tr> | 
 | 63 |             {{ $sessionOrErr := index $sessions $name }} | 
 | 64 |             {{ if ne $sessionOrErr.Error "" }} | 
 | 65 |             <tr> | 
 | 66 |                 <td colspan="3" class="error"> | 
 | 67 |                     Could not retrieve session information: {{ $sessionOrErr.Error }} | 
 | 68 |                 </td> | 
 | 69 |             </tr> | 
 | 70 |             {{ else }} | 
 | 71 |             {{ $session := $sessionOrErr.Session }} | 
 | 72 |             <tr> | 
 | 73 |                 <td rowspan="5" style="vertical-align: top;"><b>Session</b></td> | 
 | 74 |                 <td><b>ID:</b></td> | 
 | 75 |                 <td class="mono" colspan="2"> | 
 | 76 |                     <a href="/session/{{ $session.SessionID }}">{{ $session.SessionID }}</a> | 
 | 77 |                 </td> | 
 | 78 |             </tr> | 
 | 79 |             <tr> | 
 | 80 |                 <td><b>Component:</b></td> | 
 | 81 |                 <td class="mono">{{ $session.SessionComponentName }}</td> | 
 | 82 |             </tr> | 
 | 83 |             <tr> | 
 | 84 |                 <td><b>Runtime:</b></td> | 
 | 85 |                 <td class="mono">{{ $session.SessionRuntimeInfo }}</td> | 
 | 86 |             </tr> | 
 | 87 |             <tr> | 
 | 88 |                 <td><b>Created At:</b></td> | 
 | 89 |                 <td>{{ $session.SessionCreatedAt }}</td> | 
 | 90 |             </tr> | 
 | 91 |             <tr> | 
 | 92 |                 <td><b>Liveness:</b></td> | 
 | 93 |                 <td>Interval {{ $session.SessionIntervalSeconds }}s, deadline {{ $session.SessionDeadline }}</td> | 
 | 94 |             </tr> | 
 | 95 |             {{ end }} | 
 | 96 |         </table> | 
 | 97 |         {{ else }} | 
 | 98 |         <i>No active work.</i> | 
 | 99 |         {{ end }} | 
 | 100 |         <h2>Backoffs</h2> | 
 | 101 |         <h3>Active</h3> | 
 | 102 |         {{ range $name, $backoff := .Machine.ActiveBackoffs }} | 
 | 103 |         <table> | 
 | 104 |             <tr> | 
 | 105 |                 <th colspan="2"> | 
 | 106 |                     <b>{{ $backoff.Process }}</b> | 
 | 107 |                 </th> | 
 | 108 |             </tr> | 
 | 109 |             <tr> | 
 | 110 |                 <td><b>Process:</b></td> | 
 | 111 |                 <td class="mono">{{ $backoff.Process }}</td> | 
 | 112 |             </tr> | 
 | 113 |             <tr> | 
 | 114 |                 <td><b>Until:</b></td> | 
 | 115 |                 <td class="mono">{{ $backoff.Until }}</td> | 
 | 116 |             </tr> | 
 | 117 |             <tr> | 
 | 118 |                 <td><b>Cause:</b></td> | 
 | 119 |                 <td class="mono">{{ $backoff.Cause }}</td> | 
 | 120 |             </tr> | 
 | 121 |         </table> | 
 | 122 |         {{ else }} | 
 | 123 |         <i>No active backoffs.</i> | 
 | 124 |         {{ end }} | 
 | 125 |         <h3>Expired</h3> | 
 | 126 |         {{ range $name, $backoff := .Machine.ExpiredBackoffs }} | 
 | 127 |         <table style="opacity: 0.4"> | 
 | 128 |             <tr> | 
 | 129 |                 <th colspan="2"> | 
 | 130 |                     <b>{{ $backoff.Process }}</b> | 
 | 131 |                 </th> | 
 | 132 |             </tr> | 
 | 133 |             <tr> | 
 | 134 |                 <td><b>Process:</b></td> | 
 | 135 |                 <td class="mono">{{ $backoff.Process }}</td> | 
 | 136 |             </tr> | 
 | 137 |             <tr> | 
 | 138 |                 <td><b>Until:</b></td> | 
 | 139 |                 <td class="mono">{{ $backoff.Until }}</td> | 
 | 140 |             </tr> | 
 | 141 |             <tr> | 
 | 142 |                 <td><b>Cause:</b></td> | 
 | 143 |                 <td class="mono">{{ $backoff.Cause }}</td> | 
 | 144 |             </tr> | 
 | 145 |         </table> | 
 | 146 |         {{ else }} | 
 | 147 |         <i>No expired backoffs.</i> | 
 | 148 |         {{ end }} | 
 | 149 |     </div> | 
 | 150 |     <div class="column"> | 
 | 151 |         <h2>Work History</h2> | 
 | 152 |         {{ if ne .HistoryError "" }} | 
 | 153 |         <b class="error">Unavailable: {{ .HistoryError }}</b> | 
 | 154 |         {{ else }} | 
 | 155 |         <i>Note: reverse chronological order.</i> | 
 | 156 |         <table> | 
 | 157 |             <tr> | 
 | 158 |                 <th>Time</th> | 
 | 159 |                 <th>Process</th> | 
 | 160 |                 <th>Event</th> | 
 | 161 |             </tr> | 
 | 162 |             {{ range .History }} | 
 | 163 |             <tr class="Event{{.Event}}"> | 
 | 164 |                 <td>{{ .Timestamp }}</td> | 
 | 165 |                 <td><b>{{ .Process }}</b></td> | 
 | 166 |                 {{ if eq .Event "Failed" }} | 
 | 167 |                 <td>{{ .Event }}: <span class="mono">{{ .FailedCause.String }}</span></td> | 
 | 168 |                 {{ else }} | 
 | 169 |                 <td>{{ .Event }}</td> | 
 | 170 |                 {{ end }} | 
 | 171 |             </tr> | 
 | 172 |             {{ end }} | 
 | 173 |         </table> | 
 | 174 |         {{ end }} | 
 | 175 |     </div> | 
 | 176 | </div> |