Neue Sektion 'Debug-Modus' auf der Auftragskatalog-Seite (Kunden- und Admin-Bereich, gleiches zurueck_url-Praefix-Muster wie die bestehenden select/deselect-Formulare) mit Aktivieren/Beenden-Toggle. Geräteliste zeigt jetzt ein kleines Debug-Badge. Hardware-Seite bekommt eine neue Sektion 'Aktueller Zustand (letzter Checkin)' mit den Health-Metriken, nur sichtbar wenn device.health vorhanden ist. Log-Seite zeigt jetzt 'Zuletzt gemeldet' oberhalb der Ereignistabelle - vorher nur in der Geräteliste sichtbar, nicht in der Detail-Historie. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
95 lines
4.3 KiB
HTML
95 lines
4.3 KiB
HTML
{% extends "base.html" %}
|
|
{% block title %}Hardware {{ device.hostname or device.device_fingerprint }} — Tuxflotte{% endblock %}
|
|
{% block content %}
|
|
<p><a href="/geraete">← Geräteliste</a></p>
|
|
<h2>Hardware-Informationen: {{ device.hostname or device.device_fingerprint }}</h2>
|
|
|
|
{% if device.health %}
|
|
<section>
|
|
<h3>Aktueller Zustand (letzter Checkin)</h3>
|
|
<figure>
|
|
<table>
|
|
<tbody>
|
|
<tr><td>Diskbelegung (/)</td><td>{{ device.health.disk_used_percent ~ "%" if device.health.disk_used_percent is not none else "—" }}</td></tr>
|
|
<tr><td>RAM-Auslastung</td><td>{{ device.health.ram_used_percent ~ "%" if device.health.ram_used_percent is not none else "—" }}</td></tr>
|
|
<tr><td>Uptime</td><td>{{ (device.health.uptime_seconds / 3600) | round(1) ~ " h" if device.health.uptime_seconds is not none else "—" }}</td></tr>
|
|
<tr><td>Load Average (1/5/15 Min)</td><td>{{ device.health.load_1m ~ " / " ~ device.health.load_5m ~ " / " ~ device.health.load_15m if device.health.load_1m is not none else "—" }}</td></tr>
|
|
<tr><td>Stand</td><td>{{ device.health.collected_at }}</td></tr>
|
|
</tbody>
|
|
</table>
|
|
</figure>
|
|
</section>
|
|
{% endif %}
|
|
|
|
{% if fehler %}
|
|
<p><mark>{{ fehler }}</mark></p>
|
|
{% elif not hardware %}
|
|
<p>Für dieses Gerät liegt noch kein Hardware-Snapshot vor (Gerät wurde noch nicht aktiviert).</p>
|
|
{% else %}
|
|
<section>
|
|
<h3>System</h3>
|
|
<figure>
|
|
<table>
|
|
<tbody>
|
|
<tr><td>Hersteller</td><td>{{ hardware.manufacturer or "—" }}</td></tr>
|
|
<tr><td>Produkt</td><td>{{ hardware.product_name or "—" }} {{ hardware.product_version or "" }}</td></tr>
|
|
<tr><td>Architektur</td><td>{{ hardware.architecture }}</td></tr>
|
|
<tr><td>System-UUID</td><td><code>{{ hardware.system_uuid or "—" }}</code></td></tr>
|
|
<tr><td>Seriennummer</td><td><code>{{ hardware.system_serial or "—" }}</code></td></tr>
|
|
<tr><td>CPU</td><td>{{ hardware.cpu_model or "—" }} ({{ hardware.cpu_logical_count or "?" }} Logikkerne)</td></tr>
|
|
<tr><td>Arbeitsspeicher</td><td>{{ (hardware.memory_bytes / (1024**3)) | round(1) if hardware.memory_bytes else "—" }} GB</td></tr>
|
|
<tr><td>Mainboard</td><td>{{ hardware.board_vendor or "—" }} {{ hardware.board_name or "" }}</td></tr>
|
|
<tr><td>BIOS</td><td>{{ hardware.bios_vendor or "—" }} {{ hardware.bios_version or "" }}</td></tr>
|
|
<tr><td>Boot-Modus</td><td>{{ hardware.boot_mode or "—" }}</td></tr>
|
|
<tr><td>Secure Boot</td><td>{{ hardware.secure_boot or "—" }}</td></tr>
|
|
<tr><td>TPM</td><td>{{ hardware.tpm_version or "—" }}</td></tr>
|
|
<tr><td>Erfasst am</td><td>{{ hardware.collected_at }}</td></tr>
|
|
</tbody>
|
|
</table>
|
|
</figure>
|
|
</section>
|
|
|
|
<section>
|
|
<h3>Netzwerk-Interfaces</h3>
|
|
{% if not hardware.network_interfaces %}
|
|
<p>Keine erfasst.</p>
|
|
{% else %}
|
|
<figure>
|
|
<table>
|
|
<thead><tr><th>Name</th><th>Typ</th><th>MAC-Adresse</th></tr></thead>
|
|
<tbody>
|
|
{% for interface in hardware.network_interfaces %}
|
|
<tr><td>{{ interface.name }}</td><td>{{ interface.type }}</td><td><code>{{ interface.mac_address }}</code></td></tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</figure>
|
|
{% endif %}
|
|
</section>
|
|
|
|
<section>
|
|
<h3>Datenträger</h3>
|
|
{% if not hardware.storage_devices %}
|
|
<p>Keine erfasst.</p>
|
|
{% else %}
|
|
<figure>
|
|
<table>
|
|
<thead><tr><th>Name</th><th>Modell</th><th>Seriennummer</th><th>Größe</th><th>Transport</th></tr></thead>
|
|
<tbody>
|
|
{% for storage in hardware.storage_devices %}
|
|
<tr>
|
|
<td>{{ storage.name }}</td>
|
|
<td>{{ storage.model or "—" }}</td>
|
|
<td><code>{{ storage.serial or "—" }}</code></td>
|
|
<td>{{ (storage.size_bytes / (1024**3)) | round(1) }} GB</td>
|
|
<td>{{ storage.transport or "—" }}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</figure>
|
|
{% endif %}
|
|
</section>
|
|
{% endif %}
|
|
{% endblock %}
|