{# CUI // SP-CTI #} {% extends "studio/base_studio.html" %} {% block extra_css %} {{ super() }} {% endblock %} {% block studio_content %} {# CUI // SP-CTI #}
⬡ Studio Simulation Hub
GNS3 topology simulation status across all 12 design canvases — CUI // SP-CTI
{# ── Summary bar ──────────────────────────────────────── #}
{% set pass_count = statuses | selectattr('gate','equalto','PASS') | list | length %} {% set warn_count = statuses | selectattr('gate','equalto','WARN') | list | length %} {% set fail_count = statuses | selectattr('gate','equalto','FAIL') | list | length %} {% set never_count = statuses | selectattr('gate','equalto','NEVER') | list | length %}
 {{ pass_count }} Pass
 {{ warn_count }} Warn
 {{ fail_count }} Fail
 {{ never_count }} Never run
Last refresh: {{ now_ts }}
{# ── Canvas grid ──────────────────────────────────────── #}
{% for s in statuses %} {% set gate_cls = s.gate | lower %}
{{ s.label }}
{{ s.last_run or 'Never run' }}
{% if s.gate == 'PASS' %}✓{% elif s.gate == 'WARN' %}⚠{% elif s.gate == 'FAIL' %}✗{% else %}—{% endif %} {{ s.gate }}
{{ s.nodes_deployed or '—' }}
Nodes
{{ s.links_deployed or '—' }}
Links
{{ s.probes_passed }}/{{ s.probes_total }}
Probes
{{ s.mode[:4] | upper if s.mode else '—' }}
Mode
Traffic flows {{ s.traffic_flows_reachable }}/{{ s.traffic_flows_tested }} {% if s.traffic_flows_tested > 0 %} ({{ (s.traffic_flows_reachable / s.traffic_flows_tested * 100) | round(0) | int }}%) {% endif %} reachable
{% endfor %}
{# ── Run log ──────────────────────────────────────────── #}
{# ── IQE widget ───────────────────────────────────────── #} {% include "includes/iqe_query_widget.html" ignore missing %}
{% endblock %} {# CUI // SP-CTI #}