image-sweeper: raise on job failure

This commit is contained in:
Brad Stein 2026-01-28 13:45:34 -03:00
parent bf4e73cce7
commit c01a0fbfc6
2 changed files with 37 additions and 1 deletions

View File

@ -194,7 +194,15 @@ class ImageSweeperService:
extra={"event": "image_sweeper_trigger", "job": name},
)
if wait:
return self._wait_for_completion(name, settings.image_sweeper_wait_timeout_sec)
result = self._wait_for_completion(name, settings.image_sweeper_wait_timeout_sec)
status = result.get("status")
if status != "ok":
logger.error(
"image sweeper job incomplete",
extra={"event": "image_sweeper_incomplete", "job": name, "status": status},
)
raise RuntimeError(f"image sweeper job {name} {status}")
return result
return {"job": name, "status": "queued"}

View File

@ -46,3 +46,31 @@ def test_image_sweeper_run_wait(monkeypatch) -> None:
svc = ImageSweeperService()
result = svc.run(wait=True)
assert result["status"] == "ok"
def test_image_sweeper_run_error(monkeypatch) -> None:
dummy_settings = types.SimpleNamespace(
image_sweeper_namespace="maintenance",
image_sweeper_service_account="node-image-sweeper",
image_sweeper_job_ttl_sec=3600,
image_sweeper_wait_timeout_sec=30.0,
)
monkeypatch.setattr(sweeper_module, "settings", dummy_settings)
def fake_post(path, payload):
assert path.endswith("/maintenance/jobs")
return {"metadata": {"name": "job-1"}}
def fake_get(_path):
return {"status": {"failed": 1}}
monkeypatch.setattr(sweeper_module, "post_json", fake_post)
monkeypatch.setattr(sweeper_module, "get_json", fake_get)
svc = ImageSweeperService()
try:
svc.run(wait=True)
except RuntimeError as exc:
assert "image sweeper job" in str(exc)
else:
raise AssertionError("expected image sweeper failure to raise")