Hardware-Informationen, Installations-/Aktions-Log, De-/Reprovisionieren, Gerät löschen (Soft Delete, mit Bestätigungsseite) - via Pico-Dropdown, kein zusätzliches JS. Spricht die neuen anode-Endpunkte aus provisioning-server an. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
78 lines
3.4 KiB
HTML
78 lines
3.4 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 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 %}
|