I guess ultimately what would be nice is the provision to manipulate some the more advanced features if desired via API/CLI/GUI if desired. Correct these things can be manipulated now by custom properties but TBH they are a pain. You need to enter a key in the correct format into the custom properties dialog. Also if the function does not exist already you need to write the python hook to add it even if it is something simple like manipulating a libvirt DOM XML option. Would it not be nicer to the admin were to be able to simply (like is now with VM options) click advanced and they are presented advanced options GUI? The reasoning for this are cases at times to manipulate or want to have access to these options and be given the choice to choose if I want to do so. Pretty much every KVM management solution exposes the below options either by default or by advanced options. I understand the reasoning for wanting to hide or make it difficult to use some of what is in the below examples but the point is that again I should at least have the choice to do so in an easier manner then the hooking/custom props they way they are now.
Example 1:
"Add Disk UI"
What we can do with libvirt:
<disk ...>
<driver io='threads | native' cache='default | none | writeback | writethrough'/>
...
</disk>
So Advanced UI Options for
Disk IO Policy = threads | native
Disk Cache Policy = default | none | writeback | writethrough
Accordingly as well disk format:
raw - preallocated
raw - sparse
qcow2- preallocated
qcow2 - sparse
qcow2 - pre-allocate metadata Yes/No ?
qed - sparse
and so on....
For example now qcow2 is not allowed on NFS storage domains but if I the admin want to allow for this or use it, I should at least be given the choice as there is no reason it does not work.
Example 2
"Add Network UI"
What we can do with libvirt:
<forward mode='route | bridge | private | vepa | passthrough | hostdev'>
<interface dev='bond0'/>
<interface dev='bond1'/>
<interface dev='eth0'/>
<interface dev='eth1'/>
<interface dev='eth2'/>
<interface dev='eth3'/>
</forward>
Right now all we can do is select a mode=bridge.
How about under advanced option for:
Network Mode= route | bridge | private | vepa | passthrough | hostdev
Admin does thowever know that some of the above of course may require some networking prerequisites which must be satisfied first.
Something else I have seen other KVM solutions provide in the case of the above examples is just a direct libvirt domain editor in GUI. One can simply load/preview the generated libivrt domain xml and add/edit options, validate and run with the changes either temporarily or permanently.