Show nested VM containers and hide duplicate entries in summary
All checks were successful
Build-Publish / build (linux/amd64) (push) Successful in 5s
Build-Publish / build (linux/arm64) (push) Successful in 13s
Build-Publish / create-manifest (push) Successful in 2s
Build-Publish / publish-template (push) Successful in 16s

This commit is contained in:
j
2026-03-09 07:23:07 +13:00
parent 0fec0e1b3b
commit 1d9725d25b
2 changed files with 47 additions and 2 deletions

View File

@@ -73,7 +73,16 @@
</div>
{% endif %}
{% set containers = d.get('container', []) if d.get('container') else [] %}
{% set containers_raw = d.get('container', []) if d.get('container') else [] %}
{% set child_vms = children_map.get(server.hostname, []) %}
{% set child_names = child_vms|map(attribute='hostname')|list %}
{% set containers = [] %}
{% for ct in containers_raw %}
{% set ct_name = ct.get('name', ct.get('id', '')) %}
{% if ct_name not in child_names %}
{% set _ = containers.append(ct) %}
{% endif %}
{% endfor %}
{% if server.is_online %}
<div class="usage-bars">
@@ -108,7 +117,6 @@
</div>
{% endif %}
</div>
{% set child_vms = children_map.get(server.hostname, []) %}
{% if containers or child_vms %}
<div class="ct-summary-list">
{% for vm in child_vms %}
@@ -120,6 +128,15 @@
{% if vm_os %}<span class="ct-summary-os">{{ vm_os }}</span>{% endif %}
<span class="ct-summary-ip">{{ vm.primary_ip or vm.hostname }}</span>
</div>
{% set vm_cts = vm.details.get('container', []) if vm.details and vm.details.get('container') else [] %}
{% for vct in vm_cts %}
{% set vct_up = vct.get('status', '')|lower in ['running', 'started'] %}
<div class="ct-summary-item nested">
<span class="status-dot-sm {% if vct_up %}online{% else %}offline{% endif %}"></span>
<span class="ct-summary-name">{{ vct.get('name', vct.get('id', '?')) }}</span>
{% if vct.get('ip') %}<span class="ct-summary-ip">{{ vct.get('ip') }}</span>{% endif %}
</div>
{% endfor %}
{% endfor %}
{% for ct in containers %}
{% set ct_up = ct.get('status', '')|lower in ['running', 'started'] %}
@@ -419,6 +436,20 @@
</div>
</div>
{% endif %}
{% set vm_containers = vd.get('container', []) if vd.get('container') else [] %}
{% if vm_containers %}
<div class="vm-containers">
{% for vct in vm_containers %}
{% set vct_up = vct.get('status', '')|lower in ['running', 'started'] %}
<div class="ct-summary-item">
<span class="status-dot-sm {% if vct_up %}online{% else %}offline{% endif %}"></span>
<span class="ct-summary-name">{{ vct.get('name', vct.get('id', '?')) }}</span>
{% if vct.get('type') %}<span class="ct-summary-type">{{ vct.get('type')|upper }}</span>{% endif %}
{% if vct.get('ip') %}<span class="ct-summary-ip">{{ vct.get('ip') }}</span>{% endif %}
</div>
{% endfor %}
</div>
{% endif %}
{% else %}
<div class="ct-details">
<span class="ct-status-label">offline</span>