Add container/VM autodiscovery, optional username in config, and management scripts
All checks were successful
Build-Publish / build (linux/amd64) (push) Successful in 4s
Build-Publish / build (linux/arm64) (push) Successful in 13s
Build-Publish / create-manifest (push) Successful in 1s
Build-Publish / publish-template (push) Successful in 15s

This commit is contained in:
j
2026-03-08 09:57:53 +13:00
parent ce55d6acc7
commit 8747209181
7 changed files with 270 additions and 6 deletions

View File

@@ -234,6 +234,60 @@
{% endif %}
</div>
<!-- Containers / VMs -->
{% set containers = d.get('container', []) if d.get('container') else [] %}
{% if containers %}
<div class="detail-section wide">
<h4>Containers &amp; VMs</h4>
<div class="container-grid">
{% for ct in containers %}
{% set ct_running = ct.get('status', '')|lower in ['running', 'started'] %}
<div class="container-card {% if not ct_running %}offline{% endif %}">
<div class="ct-header">
<span class="status-dot {% if ct_running %}online{% else %}offline{% endif %}"></span>
<span class="ct-name">{{ ct.get('name', ct.get('id', '?')) }}</span>
<span class="ct-type">{{ ct.get('type', '')|upper }}</span>
</div>
{% if ct_running %}
<div class="ct-details">
{% if ct.get('ip') %}
<span class="ct-ip">{{ ct.get('ip') }}</span>
{% endif %}
{% if ct.get('uptime_seconds') %}
<span class="ct-uptime">{{ ct.get('uptime_seconds', '')|format_uptime }}</span>
{% endif %}
</div>
{% if ct.get('mem_percent') %}
<div class="usage-bars">
<div class="usage-row">
<span class="usage-label">RAM</span>
<div class="usage-bar-bg">
<div class="usage-bar-fill" style="width: {{ ct.get('mem_percent', 0) }}%; background: {{ ct.get('mem_percent', '0')|float|usage_color }};"></div>
</div>
<span class="usage-pct">{{ ct.get('mem_percent', '0') }}%</span>
</div>
{% if ct.get('disk_percent') %}
<div class="usage-row">
<span class="usage-label">DISK</span>
<div class="usage-bar-bg">
<div class="usage-bar-fill" style="width: {{ ct.get('disk_percent', 0) }}%; background: {{ ct.get('disk_percent', '0')|float|usage_color }};"></div>
</div>
<span class="usage-pct">{{ ct.get('disk_percent', '0') }}%</span>
</div>
{% endif %}
</div>
{% endif %}
{% else %}
<div class="ct-details">
<span class="ct-status-label">{{ ct.get('status', 'stopped') }}</span>
</div>
{% endif %}
</div>
{% endfor %}
</div>
</div>
{% endif %}
{% if d.get('error') %}
<div class="detail-section wide">
<h4>Error</h4>