1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2026-11-08 11:16:47 +00:00
webvirtcloud/vrtManager
catborise f5276655fd perf(instances): the VM page reads each kind of domain XML once
The VM page's getters read the domain XML on their own: one load made
86 libvirt calls for a real VM, 29 of them for the same three XML
documents (live, live with secrets, persistent) and 6 for the host
capabilities. Each call is a round trip to the host.

wvmInstance.cached_reads() is a block in which _XMLDesc (per flags
value) and get_cap_xml are read from libvirt once; it ends with the
block, even on an error, does not nest, and _defineXML drops it.
Outside a block every read goes to libvirt as before. Only the VM page
view, which does not change the VM, uses it, around its rendering.
Views that change the VM keep reading fresh XML: most changes (devices,
QoS, memory) do not go through _defineXML, and several views read,
change and define more than once in one request.

Measured on the test host: 86 -> 55 calls (XMLDesc 29 -> 3,
getCapabilities 6 -> 1) for one VM, 82 -> 54 for another; the page took
0.23-0.25 s before, 0.14-0.15 s after. The HTML of both pages is
identical before and after (CSRF tokens aside). A test renders the page
on libvirt's test driver through the real getters: 25 XML reads before,
one per kind now.
2026-10-05 21:24:07 +03:00
..
__init__.py Initial commit 2015-02-27 10:53:51 +02:00
connection.py fix(vrtManager): the libvirt event loop starts per process, on first use 2026-10-05 14:41:31 +03:00
create.py fix(instances): CD-ROM bus, USB controller and MACs of a new VM 2026-10-04 18:33:28 +03:00
hostdetails.py fix cpu_usage waiting for instance creation. 2023-05-18 14:35:19 +03:00
instance.py perf(instances): the VM page reads each kind of domain XML once 2026-10-05 21:24:07 +03:00
interface.py fix(interfaces): validate IPv6 address and gateway of host interfaces 2026-10-04 17:29:59 +03:00
libvirt-ssh fix(vrtManager): libvirt connections open within a time limit 2026-10-05 09:06:52 +03:00
network.py feat(security): harden storage uploads and vrtManager snapshot XML handling 2026-09-27 13:28:17 +03:00
nwfilters.py format python code with black 2022-11-02 08:54:35 +03:00
rwlock.py fix(vrtManager): modernize rwlock for Python 3.12 compatibility and add tests 2026-09-24 21:49:52 +03:00
storage.py Detect RDB pools too 2025-03-14 10:31:40 +01:00
test_change_network.py chore: drop references to the local roadmap from code and tests 2026-10-04 11:09:25 +03:00
test_connection.py fix(vrtManager): the libvirt event loop starts per process, on first use 2026-10-05 14:41:31 +03:00
test_console_setters.py feat(console): VNC is the only console type 2026-10-04 01:08:11 +03:00
test_iso_media.py chore: drop references to the local roadmap from code and tests 2026-10-04 11:09:25 +03:00
test_live_connection.py fix(vrtManager): libvirt connections open within a time limit 2026-10-05 09:06:52 +03:00
test_network_ip.py test: expand unit test coverage across admin, accounts, vrtManager, logs, appsettings, and datasource 2026-09-25 11:26:53 +03:00
test_persistent_edits.py fix(instances): disk and agent channel changes on paused VMs 2026-10-04 17:10:49 +03:00
test_read_cache.py perf(instances): the VM page reads each kind of domain XML once 2026-10-05 21:24:07 +03:00
test_resize_disk.py fix(instances): domain edits start from the persistent definition 2026-10-04 01:08:11 +03:00
test_rwlock.py ci: replace super-linter with ruff 2026-10-04 01:08:11 +03:00
test_usage.py perf(instances): VM statistics sample all devices in one second 2026-10-05 15:27:55 +03:00
test_util.py fix(instances): CD-ROM bus, USB controller and MACs of a new VM 2026-10-04 18:33:28 +03:00
test_xml_safety.py chore: drop references to the local roadmap from code and tests 2026-10-04 11:09:25 +03:00
util.py fix(instances): CD-ROM bus, USB controller and MACs of a new VM 2026-10-04 18:33:28 +03:00
virtsecrets.py Django 3.2.4 LTS upgrade 2021-06-15 13:28:47 +03:00