{% extends "layout.html" %} {% from "_partials/page_description.html" import page_description %} {% block title %}Dashboard - pixie{% endblock %} {% block subnav %} {% endblock %} {% block content %} {{ page_description('speedometer2', 'Status across pixie, following the model: machines you manage, Catalog sources you can fetch, the Images those sources materialise (with on-disk footprint + how much is reclaimable), the alias-keyed overlay volumes, and events. Output-only - each tile links to its page for actions. Refreshes every 5 s.') }} {# Tiles mirror the storage/lifecycle model + the nav: Machines, Catalog (sources you can fetch), Images (the materialised entities with footprint + reclaimable refcount), Overlays (alias-keyed single-writer volumes), Events. Output-only -- each tile reports and links to its pane; no actions live here. #}

Machines

{{ stats.machines_total }}
Bound
{{ stats.machines_bound }}
Inventoried
{{ stats.machines_with_inventory }}

Catalog

{{ stats.catalog_total }}
Sources
{{ stats.catalog_total }}
Not fetched
{{ stats.catalog_unfetched }}

Images

{{ stats.images_count }}
On disk
{{ stats.images_bytes_display }}
Reclaimable
{{ stats.images_reclaimable }}

Overlays

{{ stats.overlays_count }}
Disk used
{{ stats.overlays_bytes_display }}
Serving
{{ stats.overlays_running }}

Events

{{ stats.events_total }}
Errors
{% if stats.events_error_count > 0 %} {{ stats.events_error_count }} {% else %} 0 {% endif %}
Last
{% if stats.events_last_ts %}{{ stats.events_last_ts | fmt_ts }}{% else %}-{% endif %}
{# Live-env media readiness (OUTPUT ONLY). The dashboard reports whether the pixie-* boot modes have their media; the Fetch action + source / cmdline config live on the dedicated /ui/live-env pane. #} {% set lfs = stats.live_env_fetch_state or {} %}

Live-env media

{% if lfs.state == 'fetching' %} fetching {% elif stats.live_env_ready %} ready {% else %} not staged {% endif %} Manage
{% if stats.live_env_ready %}

Staged at {{ stats.live_env_dir }}; pixie-tui / pixie-inventory / pixie-flash-* can serve the live env.

{% else %}

Live-env media is missing under {{ stats.live_env_dir or '(unset)' }}. Every pixie-* boot_mode falls back to the "unavailable" iPXE plan until it is staged. Fetch it →

{% endif %} {% if lfs.state == 'error' %}

Last fetch failed — see Live env.

{% endif %}
{% for name, size in stats.live_env_files.items() %}
{{ name }}
{% if size is not none %} {{ (size / 1024 / 1024) | round(1) }} MiB {% else %} missing {% endif %}
{% endfor %}
{% if lfs.state == 'fetching' %} {# The fetch runs on the server's thread pool; poll the page so the spinner flips to "ready" (or an error) on its own. A big squashfs download takes a while, so 5 s is frequent enough without hammering. #} {% endif %}

Recent events

All events
{% if events %}
{# ``Related to`` reads as ``: ``: the subject_kind badge is the category, subject_id the specific name / MAC / export name. #} {% for e in events %} {% endfor %}
When Kind Related to Summary
{{ e.ts | fmt_ts }} {{ e.kind }} {% if e.subject_kind %} {{ e.subject_kind }} {{ e.subject_id or '' }} {% else %} - {% endif %} {{ e.summary or "" }}
{% else %}

No events yet.

{% endif %}
{% endblock %}