(bugfix) Preserve scheduled backup warning status
Update the scheduler to reflect the actual scheduled BackupRun status after a run completes, so prune warnings are shown as schedule warnings instead of being reported as successful schedule executions.
This commit is contained in:
@@ -8,7 +8,7 @@ from zoneinfo import ZoneInfo
|
||||
from django.test import SimpleTestCase, TestCase
|
||||
|
||||
from pobsync_backend.management.commands.run_pobsync_scheduler import Command
|
||||
from pobsync_backend.models import HostConfig, ScheduleConfig
|
||||
from pobsync_backend.models import BackupRun, HostConfig, ScheduleConfig
|
||||
from pobsync_backend.scheduler import due_key, is_due, next_due_after
|
||||
|
||||
|
||||
@@ -64,3 +64,30 @@ class SchedulerCommandTests(TestCase):
|
||||
self.assertEqual(call.call_count, 1)
|
||||
schedule = ScheduleConfig.objects.get(host=host)
|
||||
self.assertEqual(schedule.last_status, "success")
|
||||
|
||||
def test_run_due_records_warning_status_from_scheduled_backup_run(self) -> None:
|
||||
host = HostConfig.objects.create(host="web-01", address="web-01.example.test")
|
||||
ScheduleConfig.objects.create(host=host, cron_expr="* * * * *", prune=True, prune_max_delete=1)
|
||||
|
||||
def create_warning_run(*args, **kwargs) -> None:
|
||||
BackupRun.objects.create(
|
||||
host=host,
|
||||
run_type=BackupRun.RunType.SCHEDULED,
|
||||
status=BackupRun.Status.WARNING,
|
||||
result={
|
||||
"ok": True,
|
||||
"prune": {
|
||||
"ok": False,
|
||||
"type": "ConfigError",
|
||||
"error": "Refusing to delete 2 snapshots (exceeds --max-delete=1)",
|
||||
},
|
||||
},
|
||||
)
|
||||
|
||||
command = Command()
|
||||
with patch("pobsync_backend.management.commands.run_pobsync_scheduler.call_command", side_effect=create_warning_run):
|
||||
count = command._run_due(prefix=Path("/opt/pobsync"), dry_run=False)
|
||||
|
||||
self.assertEqual(count, 1)
|
||||
schedule = ScheduleConfig.objects.get(host=host)
|
||||
self.assertEqual(schedule.last_status, "warning")
|
||||
|
||||
Reference in New Issue
Block a user