{% extends "ui/_layout.html" %} {% block title %}Exports - nbdmux{% endblock %} {% block subnav %} {% endblock %} {% block intro %} {# One-sentence context so an operator landing here knows what nbdmux does without hunting for the README. Same pattern bty uses on /ui/images (intro_box.html). #}
Each row is an nbd-server export the multiplexer serves over TCP. Pre-warmed exports point at an existing file on disk; warm-via-withcache exports go through a fetch + decompress pipeline before landing at ready. Only ready exports are visible to nbd-server on the wire.
{% endblock %} {% block content %}
Exports
{% for e in exports %} {% endfor %} {% if not exports %} {% endif %}
Name Status Progress File Source Format Action
{{ e.name }} {# Status pill colours match the wire states the JSON /exports endpoint documents: green for ready (nbd-server picks up), red for failed (operator retries), blue for the three in-flight intermediates. #} {% if e.status == 'ready' %} ready {% elif e.status == 'failed' %} failed {% else %} {{ e.status }} {% endif %} {% if e.progress is not none %}
{{ e.progress }}% {% elif e.status == 'ready' %} - {% else %} pending {% endif %}
{{ e.file }} {% if e.src_url %} {{ e.src_url }} {% else %} pre-warmed {% endif %} {% if e.format %} {{ e.format }} {% else %} - {% endif %} {# Delete: form-encoded POST so a simple button works without JavaScript. Warm-created rows also unlink the on-disk .img in the handler; pre-warmed rows leave their file alone. #}
No exports registered yet. Operators POST to /exports to register (see the nbdmux.client library) or bty-web's Pre-warm button on Images to warm one for ramboot.
{% endblock %}