blob: 1d9001441bd3884cd5b16c08bc6742da2807579b [file] [log] [blame]
Serge Bazanski77628312023-02-15 23:33:22 +01001{{ 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>