We have been planning switching from minidom to etree in Vdsm for long
time. There are several good reasons why to make the change:
- We currently use both minidom and etree, we should use a single
library.
- etree has apparently better performance in the sense of CPU time and
RAM usage.
- etree has a simpler and more convenient API (e.g. limited XPath
support).
After various discussions and trying different draft approaches, there
is now available a complete series of patches migrating virt usage of
minidom to etree. It starts with patch
https://gerrit.ovirt.org/55769
and you can follow the whole vm-etree topic from there. Please read the
commit message in the initial patch, it explains the overall approach.
I tried to make the series reviewer friendly, for patch-by-patch review.
It's still draft, not finished, missing many tests, etc., but it already
basically works. If you have any serious problems with the approach to
the conversion or its general directions, tell me before we start
discussing details. Just don't forget we must perform the conversion in
some reasonably safe way and it must be possible to review it.
Please note the series doesn't try to solve all the world/Vdsm problems,
it focuses just on the etree conversion. Further changes may be
implemented in followup patches. I already implemented some
post-refactoring in vm-etree-refact topic starting with
https://gerrit.ovirt.org/60940.
Thanks to Francesco Romani for cooperation and help with the work.