95 lines
5.2 KiB
Plaintext
95 lines
5.2 KiB
Plaintext
[% WRAPPER layout.tt title="Machine status" %]
|
|
[% PROCESS common.tt %]
|
|
[% USE format %]
|
|
|
|
<table class="table table-condensed table-striped">
|
|
<thead>
|
|
<tr>
|
|
<th>Job</th>
|
|
<th>Build</th>
|
|
<th>Step</th>
|
|
<th>What</th>
|
|
<th>Status</th>
|
|
<th>Since</th>
|
|
</tr>
|
|
</thead>
|
|
[% FOREACH m IN machines %]
|
|
[% name = m.key ? stripSSHUser(m.key) : "localhost" %]
|
|
<thead>
|
|
<tr>
|
|
<th colspan="7">
|
|
<tt [% IF m.value.disabled %]style="text-decoration: line-through;"[% END %]>[% INCLUDE renderMachineName machine=m.key %]</tt>
|
|
[% IF m.value.primarySystemType %]
|
|
<span class="muted" style="font-weight: normal;">
|
|
(<tt>[% m.value.primarySystemType | html %]</tt>)
|
|
</span>
|
|
|
|
[% WRAPPER makePopover title="Details" classes="btn-secondary btn-sm" %]
|
|
<ul class="list-unstyled mb-0">
|
|
<li><b>System types: </b>[% comma=0; FOREACH system IN m.value.systemTypes %][% IF comma; %], [% ELSE; comma = 1; END %]<tt>[% system | html%]</tt>[% END %]</li>
|
|
<li><b>Supported Features: </b>[% comma=0; FOREACH feat IN m.value.supportedFeatures %][% IF comma; %], [% ELSE; comma = 1; END %]<tt>[% feat| html %]</tt>[% END %]</li>
|
|
<li><b>Mandatory Features: </b>[% comma=0; FOREACH feat IN m.value.mandatoryFeatures %][% IF comma; %], [% ELSE; comma = 1; END %]<tt>[% feat| html %]</tt>[% END %]</li>
|
|
<li><b>Capacity: </b>[% INCLUDE renderYesNo value=m.value.hasCapacity %] <b>Static: </b>[% INCLUDE renderYesNo value=m.value.hasStaticCapacity %] <b>Dynamic: </b>[% INCLUDE renderYesNo value=m.value.hasDynamicCapacity %]</li>
|
|
<li><b>Scheduling Score: </b>[% HTML.escape(m.value.score) %]</li>
|
|
<li><b>Load: </b><tt>[% pretty_load(m.value.stats.load1) | html %]</tt> <tt>[% pretty_load(m.value.stats.load5) | html %]</tt> <tt>[% pretty_load(m.value.stats.load15) | html %]</tt></li>
|
|
<li><b>Memory: </b><tt>[% human_bytes(m.value.stats.memUsage) | html %]</tt> of <tt>[% human_bytes(m.value.memTotal) | html %]</tt> used (<tt>[% human_bytes(m.value.memTotal - m.value.stats.memUsage) | html %]</tt> free)</li>
|
|
[% pressure = m.value.stats.pressure %]
|
|
[% MACRO render_pressure(title, pressure) BLOCK %]
|
|
[% IF pressure %]
|
|
<tr><td><b>[% HTML.escape(title) %]:</b></td><td><tt>[% pretty_percent(pressure.avg10) | html %]%</tt></td><td><td><tt>[% pretty_percent(pressure.avg60) | html %]%</tt></td><td><td><tt>[% pretty_percent(pressure.avg300) | html %]%</tt></td><td>
|
|
[% END %]
|
|
[% END %]
|
|
[% IF pressure %]
|
|
<li><b>Pressure: </b>
|
|
<table class="pressureTable">
|
|
[% render_pressure('Some CPU', pressure.cpuSome) %]
|
|
[% render_pressure('Some IO', pressure.ioSome) %]
|
|
[% render_pressure('Full IO', pressure.ioFull) %]
|
|
[% render_pressure('Full IRQ', pressure.irqFull) %]
|
|
[% render_pressure('Some Memory', pressure.memSome) %]
|
|
[% render_pressure('Full Memory', pressure.memFull) %]
|
|
</table>
|
|
</li>
|
|
[% END %]
|
|
</ul>
|
|
[% END %]
|
|
[% ELSE %]
|
|
[% IF m.value.systemTypes %]
|
|
<span class="muted" style="font-weight: normal;">
|
|
([% comma=0; FOREACH system IN m.value.systemTypes %][% IF comma; %], [% ELSE; comma = 1; END %]<tt>[% system | html %]</tt>[% END %])
|
|
</span>
|
|
[% END %]
|
|
[% END %]
|
|
[% IF m.value.nrStepsDone %]
|
|
<span class="muted" style="font-weight: normal;">
|
|
([% m.value.nrStepsDone %] steps done, [% f = format("%.1f"); f(m.value.avgStepBuildTime) %] s/step)
|
|
</span>
|
|
[% END %]
|
|
</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
[% idle = 1 %]
|
|
[% FOREACH step IN steps %]
|
|
[% name2 = step.machine ? stripSSHUser(step.machine) : "localhost" %]
|
|
[% IF name == name2 %]
|
|
[% idle = 0 %]
|
|
<tr>
|
|
<td><tt>[% INCLUDE renderFullJobName project=step.project jobset=step.jobset job=step.job %]</tt></td>
|
|
<td><a [% HTML.attributes(href => c.uri_for('/build' step.build)) %]>[% HTML.escape(step.build) %]</a></td>
|
|
<td>[% IF step.busy >= 30 %]<a class="row-link" [% HTML.attributes(href => c.uri_for('/build' step.build 'nixlog' step.stepnr 'tail')) %]>[% HTML.escape(step.stepnr) %]</a>[% ELSE; HTML.escape(step.stepnr); END %]</td>
|
|
<td><tt>[% step.drvpath.match('-(.*)').0 | html %]</tt></td>
|
|
<td>[% INCLUDE renderBusyStatus %]</td>
|
|
<td style="width: 10em">[% INCLUDE renderDuration duration = curTime - step.starttime %] </td>
|
|
</tr>
|
|
[% END %]
|
|
[% END %]
|
|
[% IF idle == 1 %]
|
|
<tr><td colspan="6">Idle</td></tr>
|
|
[% END %]
|
|
</tbody>
|
|
[% END %]
|
|
</table>
|
|
|
|
[% END %]
|