Commit Graph
20 Commits
Author SHA1 Message Date
kyleandClaude Opus 5.5 9ae93cfbc2 Report Veeam backup copy job sessions
VBR 12+ backup copy jobs showed as Unknown. Get-VBRJob returns the copy
(policy) job, but Get-VBRBackupSession only returns sessions of its
hidden worker jobs, whose JobId matches no listed job, so they were
dropped. Confirmed on a VBR 13.0.2 server with the new diagnostics
script.

- File worker sessions under their policy job via
  Session.GetJob().PolicyJobId (looked up once per worker job), and
  record the source job in details.copied_from
- Add Get-VeeamCollectorDiagnostics.ps1, a read-only report of jobs,
  unmatched sessions and their link properties
- Mock: backup copy policy/worker case and a session from a deleted job

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-07 14:01:56 -06:00
kyleandClaude Opus 5.5 728b5771cc Add Veeam Backup & Replication collector
PowerShell script for the VBR server, run as a SYSTEM scheduled task.
Each run reports every Get-VBRJob job's next scheduled run and any
sessions from the lookback window (default 48h) not yet delivered in
their final state; running sessions are resent until they finish.

- Session result maps to success/warning/failed; non-Stopped states
  report as running; message combines the session reason, objects that
  didn't succeed, and warning/error lines from the session log
- Delivered sessions are tracked in a state file; failures are retried
  next run, and a rejected API key stops the run immediately
- Install-VeeamCollector.ps1 writes an ACL-restricted config, copies
  the script to Program Files and registers the task
- tests/MockVeeam.ps1 provides stand-in cmdlets for testing without VBR

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 19:30:48 -06:00
kyleandClaude Opus 5.5 f55a44f2e6 Make manage.py use the service's database
manage.py only found the database via BACKUP_DASH_DB, which is set in
the systemd unit and not in an admin's shell, so it silently created a
new backup-dashboard.db in the current directory. API keys created
there were never seen by the service.

- Settings now come from /etc/backup-dashboard/backup-dashboard.env,
  which both the systemd unit (EnvironmentFile=) and manage.py read;
  real environment variables still take precedence
- manage.py prints the database it uses and refuses to create a new
  one unless --create is passed; --db overrides the path

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 19:30:48 -06:00
kyleandClaude Opus 5.5 bf752a904f Add backend API, running status and 30-day run history
- FastAPI + SQLite backend: tenants, jobs and runs, with an idempotent
  /api/v1/ingest endpoint authenticated by per-collector API keys
- Runs store started_at and finished_at; "Last Run" is the most recent
  finish, and in-progress runs show as Running
- Job modal shows a 30-day daily strip, success rate, and a filterable
  run list with per-run messages
- nginx: HTTPS plus basic auth, ingest endpoint exempt; systemd unit
- manage.py for API keys, job cleanup and demo data; pytest suite

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-04 21:53:24 -06:00
kyle 44e3065efa Delete app/styles.css 2026-10-05 03:22:51 +00:00
kyle f9bc0f6aeb Delete app/server.js 2026-10-05 03:22:46 +00:00
kyle 153f6ab8e7 Delete app/script.js 2026-10-05 03:22:43 +00:00
kyle ee258d1550 Delete app/index.html 2026-10-05 03:22:38 +00:00
kyle 4b4e6b84d0 Delete docker-compose.yml 2026-10-05 03:22:28 +00:00
kyle 889aa4f000 Delete dockerfile 2026-10-05 03:22:23 +00:00
kyle 483cc7d50d Delete LICENSE 2026-10-05 03:22:19 +00:00
kyle 47819e6d46 Update docker-compose.yml 2026-10-04 04:43:12 +00:00
kyle dad4edb858 Update app/styles.css 2026-10-04 04:41:35 +00:00
kyle 224054eeb6 Update app/server.js 2026-10-04 04:41:25 +00:00
kyle 90fa165f5b Update app/script.js 2026-10-04 04:41:12 +00:00
kyle 2d585b4c31 Update app/index.html 2026-10-04 04:40:46 +00:00
kyle 9cf7ad3555 Upload files to "/"
Initial upload
2026-10-04 04:36:10 +00:00
kyle cea65e0faa Add docker-compose.yml
Initial upload
2026-10-04 04:35:08 +00:00
kyle 5582cfce39 Add dockerfile
Initial upload
2026-10-04 04:34:31 +00:00
kyle a8364930fb Initial commit 2026-10-04 04:31:49 +00:00