(feature) improve snapshot discovery visibility in Django
Add a discovery preflight that reports the configured backup root, host root, and snapshot directory counts before importing anything. Show discovery status on host detail pages so missing mounts or mismatched host directories are visible from the UI. Warn clearly when discovery scans zero snapshots, including whether the host backup directory is missing or simply empty.
This commit is contained in:
@@ -15,7 +15,7 @@ from .backup_runner import queue_backup_run
|
||||
from .forms import CreateHostConfigForm, GlobalConfigForm, HostConfigForm, ManualBackupForm, ScheduleConfigForm
|
||||
from .models import BackupRun, GlobalConfig, HostConfig, ScheduleConfig, SnapshotRecord
|
||||
from .retention import run_sql_retention_plan
|
||||
from .snapshot_discovery import discover_snapshots
|
||||
from .snapshot_discovery import discover_snapshots, inspect_snapshot_discovery
|
||||
|
||||
|
||||
@staff_member_required
|
||||
@@ -93,6 +93,7 @@ def host_detail(request, host: str):
|
||||
context = {
|
||||
"host": host_config,
|
||||
"schedule": _schedule_for_host(host_config),
|
||||
"discovery": inspect_snapshot_discovery(host=host_config),
|
||||
"manual_backup_form": ManualBackupForm(initial=_default_manual_backup_initial(host_config)),
|
||||
"latest_runs": host_config.runs.select_related("snapshot").order_by("-created_at")[:10],
|
||||
"snapshots": host_config.snapshots.select_related("base").order_by("-started_at", "dirname")[:20],
|
||||
@@ -167,13 +168,15 @@ def discover_host_snapshots(request, host: str):
|
||||
except Exception as exc:
|
||||
messages.error(request, f"Snapshot discovery failed for {host_config.host}: {exc}")
|
||||
else:
|
||||
messages.success(
|
||||
request,
|
||||
(
|
||||
f"Snapshot discovery scanned {result['scanned']} items for {host_config.host}: "
|
||||
f"{result['created']} created, {result['updated']} updated."
|
||||
),
|
||||
summary = (
|
||||
f"Snapshot discovery scanned {result['scanned']} items for {host_config.host}: "
|
||||
f"{result['created']} created, {result['updated']} updated."
|
||||
)
|
||||
if result["scanned"]:
|
||||
messages.success(request, summary)
|
||||
else:
|
||||
discovery = inspect_snapshot_discovery(host=host_config)
|
||||
messages.warning(request, f"{summary} {discovery['message']}")
|
||||
return redirect("host_detail", host=host_config.host)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user