Add parent-child VM nesting support from infrastructure.conf
This commit is contained in:
@@ -100,8 +100,19 @@
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% if containers %}
|
||||
{% set child_vms = children_map.get(server.hostname, []) %}
|
||||
{% if containers or child_vms %}
|
||||
<div class="ct-summary-list">
|
||||
{% for vm in child_vms %}
|
||||
<div class="ct-summary-item">
|
||||
<span class="status-dot-sm {% if vm.is_online %}online{% else %}offline{% endif %}"></span>
|
||||
<span class="ct-summary-name">{{ vm.details.get('system', {}).get('hostname', vm.hostname) if vm.details else vm.hostname }}</span>
|
||||
<span class="ct-summary-type">VM</span>
|
||||
{% set vm_os = vm.details.get('system', {}).get('os_pretty', '') if vm.details else '' %}
|
||||
{% 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>
|
||||
{% endfor %}
|
||||
{% for ct in containers %}
|
||||
{% set ct_up = ct.get('status', '')|lower in ['running', 'started'] %}
|
||||
<div class="ct-summary-item">
|
||||
@@ -341,6 +352,63 @@
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<!-- Child VMs (from config) -->
|
||||
{% if child_vms %}
|
||||
<div class="detail-section wide">
|
||||
<h4>Virtual Machines</h4>
|
||||
<div class="container-grid">
|
||||
{% for vm in child_vms %}
|
||||
{% set vd = vm.details or {} %}
|
||||
{% set vs = vd.get('system', {}) if vd.get('system') else {} %}
|
||||
{% set vc = vd.get('cpu', {}) if vd.get('cpu') else {} %}
|
||||
{% set vmem = vd.get('memory', {}) if vd.get('memory') else {} %}
|
||||
<div class="container-card {% if not vm.is_online %}offline{% endif %}">
|
||||
<div class="ct-header">
|
||||
<span class="status-dot {% if vm.is_online %}online{% else %}offline{% endif %}"></span>
|
||||
<span class="ct-name">{{ vs.get('hostname', vm.hostname) }}</span>
|
||||
<span class="ct-type">VM</span>
|
||||
</div>
|
||||
{% if vs.get('os_pretty') %}
|
||||
<div class="ct-image">{{ vs.get('os_pretty') }}</div>
|
||||
{% endif %}
|
||||
{% if vm.is_online %}
|
||||
<div class="ct-details">
|
||||
<span class="ct-ip">{{ vm.primary_ip or vm.hostname }}</span>
|
||||
{% if vs.get('uptime_seconds') %}
|
||||
<span class="ct-uptime">{{ vs.get('uptime_seconds', '')|format_uptime }}</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% set vm_cpu_pct = vc.get('usage_percent', '0')|float %}
|
||||
{% set vm_mem_pct = vmem.get('usage_percent', '0')|float %}
|
||||
{% if vm_cpu_pct > 0 or vm_mem_pct > 0 %}
|
||||
<div class="usage-bars">
|
||||
<div class="usage-row">
|
||||
<span class="usage-label">CPU</span>
|
||||
<div class="usage-bar-bg">
|
||||
<div class="usage-bar-fill" style="width: {{ vm_cpu_pct }}%; background: {{ vm_cpu_pct|usage_color }};"></div>
|
||||
</div>
|
||||
<span class="usage-pct">{{ '%.0f'|format(vm_cpu_pct) }}%</span>
|
||||
</div>
|
||||
<div class="usage-row">
|
||||
<span class="usage-label">RAM</span>
|
||||
<div class="usage-bar-bg">
|
||||
<div class="usage-bar-fill" style="width: {{ vm_mem_pct }}%; background: {{ vm_mem_pct|usage_color }};"></div>
|
||||
</div>
|
||||
<span class="usage-pct">{{ '%.0f'|format(vm_mem_pct) }}%</span>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<div class="ct-details">
|
||||
<span class="ct-status-label">offline</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if d.get('error') %}
|
||||
<div class="detail-section wide">
|
||||
<h4>Error</h4>
|
||||
|
||||
Reference in New Issue
Block a user