mirror of
https://github.com/retspen/webvirtcloud
synced 2026-11-08 11:16:47 +00:00
Reviewing the error handlers outside instances/ turned up three that masked or swallowed the failure they caught: - appsettings/settings.get_settings() runs on every request (middleware) and loads app_settings from the database. Its bare `except: pass` left `entries` unbound on a database error, so the next line raised UnboundLocalError instead; it also caught KeyboardInterrupt/SystemExit. It now catches DatabaseError and returns, keeping the already-loaded values. - vrtManager.network.refresh_dhcp_leases raised a formatted string (`raise f"..."`), which Python rejects with TypeError, hiding the real DHCPLeases failure. It now raises util.OperationError, which the API/HTML error handling already renders as a libvirt error, and clears self.leases. - storages.views.get_volumes caught libvirtError and answered 200 with an empty body, so the caller could not tell a failed pool read from an empty pool. It now returns 400 with the error. The other broad handlers reviewed (appsettings/nwfilters/virtsecrets views, storages/upload cleanup and recovery paths, vrtManager display getters) report the error or are best-effort and were left as they are. Tests: get_settings() survives a database error during the query and during iteration without raising and still loads a real value; refresh_dhcp_leases raises OperationError (keeping the cause) not TypeError; get_volumes returns 400 on a listing failure and the sorted volumes on success. The tests fail on the previous code. |
||
|---|---|---|
| .. | ||
| migrations | ||
| templates | ||
| __init__.py | ||
| apps.py | ||
| context_processors.py | ||
| middleware.py | ||
| models.py | ||
| settings.py | ||
| test_appsettings.py | ||
| test_get_settings.py | ||
| test_theme_name.py | ||
| tests.py | ||
| views.py | ||