Hi All,

Yesterday we merged the class LibvirtVmXmlBuilder in ovirt-engine.
It does not include the conversion of all the previously supported VM properties (e.g., payload devices, OVS stuff, cinder disks - any help would be appreciated btw) or covers all flows (e.g., run once) yet and there is surely a place for improvement, but in its current state LibvirtVmXmlBuilder is able to generate a libvirt's domxml on the engine side for many typical VMs in our development environment.

If you happen to start working on a change that involves changing something in the domxml, please do it by modifying this class. Our plan is to deprecate the VM info map/dictionary soon.

Let me try to motivate you by example:

Let's say that you want to add support for a property of a disk called 'discard'.
In 4.1:
You had to patch VmInfoBuilderImpl to add another element to the VM info map and then modify VDSM to use it when encoding the Disk device into XML.
Now:
You need to patch LibvirtVmXmlBuilder so the 'discard' property would be set on the disk device element in the generated XML.

In order to test such a change you can:
(1) apply [1] to send the XML generated by the engine to VDSM
(2) apply [2] to send the XML generated by the engine to libvirt

[1] https://gerrit.ovirt.org/#/c/71088/
[2] https://gerrit.ovirt.org/#/c/65182/

Regards,
Arik