{% extends "ui/_layout.html" %} {% block title %}Boot artifacts - bty-web{% endblock %} {% block content %}

Boot artifacts

{{ boot_root }}
{% with sections=[ {"key": "list", "label": "List", "icon": "list-ul", "href": "/ui/boot"}, {"key": "fetch", "label": "Fetch latest release", "icon": "cloud-download", "href": "/ui/boot?section=fetch"}, ] , active=section %} {% include "ui/_subnav.html" %} {% endwith %} {% if section == "fetch" %}
Fetch from GitHub releases

Pulls vmlinuz + initrd + squashfs + sha256 from {{ release_repo }}, verifies the manifest, and atomically installs into {{ boot_root }}.

latest resolves through GitHub's redirect to the most recent release.
{% else %} {# section == "list" (default): present/missing per-artefact + live fetch table. Operators land on the OBSERVABLE boot state when they click "Boot" in the top nav. The single Fetch flow is one sub-nav click away. #}

The bty live env that PXE clients chain into when their assignment has boot_policy=flash. Until these files are present, machines with boot_policy=flash cannot actually flash. Click Fetch latest release to populate.

{% for a in artifacts %} {% endfor %}
File Status Size Last fetched
{{ a.name }} {% if a.present %} present {% else %} missing {% endif %} {% if a.size is not none %} {{ "{:,}".format(a.size) }} bytes {% else %} - {% endif %} {% if a.mtime %} {{ a.mtime }} {% else %} - {% endif %}
Active + recent fetches refreshing...
Tag Status Progress Started Action
Loading...
{% endif %} {# Recent activity for boot artefacts: release fetches + fetch failures via the per-subject events card. Stays on every section so an operator who clicked Fetch sees the audit log context. #} {% with events=boot_events, title="Recent boot-artefact activity", link_to_full="/ui/events?subject_kind=boot" %} {% include "ui/_events_card.html" %} {% endwith %} {% endblock %}