{% extends 'base/layout.html' %} {% load helpers %} {% block title %}Oxidized Dashboard{% endblock %} {% block content %}

Oxidized Backup Dashboard

Manage Sources
{% if not source %}
No Oxidized source configured. Add one under Sources.
{% else %} {# Health summary #} {% if not has_run_reports %}
Oxidized is not reporting run results to NetBox yet, so health is inferred from the age of the last configuration change. A device that is backed up but never changes shows as Unverified. Configure the Oxidized hook (install guide, “Backup health”) to get real success and failure status.
{% endif %}

{{ ok_count }}

Up to date

{{ failing_count }}

Failing

{{ stale_count }}

Stale (no run for > {{ stale_after_hours }}h)

{{ unverified_count }}

Unverified

{{ missing_count }}

Never backed up
{# Never-backed-up devices (collapsible; only in-scope devices) #} {% if missing %}
{% for row in missing %} {% endfor %}
DeviceRoleExpected filenameLast run reported by Oxidized
{{ row.device.name }} {{ row.device.role|placeholder }} {{ row.filename }} {% if row.status %} {{ row.status.last_status }} {{ row.status.last_run|date:"Y-m-d H:i" }}{% if row.status.last_error %} — {{ row.status.last_error }}{% endif %} {% else %}{% endif %}
{% endif %} {# Indexed devices #}
Mapped Devices
{% for data in devices_data %} {% empty %} {% endfor %}
Device Filename Health Last backup run Last change
{{ data.device.name }} {{ data.filename }} {% if data.health == 'ok' %}Up to date {% elif data.health == 'failing' %}Failing {% elif data.health == 'stale' %}Stale {% else %}Unverified{% endif %} {% if data.status %} {{ data.status.last_run|date:"Y-m-d H:i" }} {{ data.status.last_status }} {% if data.status.last_error %}
{{ data.status.last_error }}{% endif %} {% else %}not reported{% endif %}
{{ data.commit_timestamp|placeholder }}
{{ data.commit_sha|slice:":7" }} {{ data.commit_subject }}
Config History
No indexed devices yet. The index refreshes on a schedule — run manage.py reindex_oxidized to build it now.
{% endif %}
{% endblock content %}