[PATCH 3/7] qemu: domain: Add XML namespace code for overriding device config

Daniel P. Berrangé berrange at redhat.com
Mon Mar 21 15:34:46 UTC 2022


On Mon, Mar 21, 2022 at 04:24:36PM +0100, Peter Krempa wrote:
> Implement the XML parser and formatter for overriding of device
> properties such as:
> 
>   <qemu:deviceOverride>

s/deviceOverride/devices/ 

>     <qemu:device alias='ua-disk'>
>       <qemu:property name='prop1' type='string' value='propval1'/>
>       <qemu:property name='prop2' type='signed' value='-321'/>
>       <qemu:property name='prop3' type='unsigned' value='123'/>
>       <qemu:property name='prop4' type='bool' value='true'/>
>       <qemu:property name='prop5' type='bool' value='false'/>
>       <qemu:property name='prop6' type='bool' value='false'/>
>       <qemu:property name='prop6' type='remove'/>
>     </qemu:device>
>   </qemu:deviceOverride>

This all applies to the frontend. Could we make this work
with the backend too ? Obviously there are many different
types of backend, so it is less convenient to implement
that, but would at least be nice to have a thought about
how we could represent it in the XML config.

Some ideas:

 1. Type specific backend at the top level

     <qemu:device alias='ua-disk'>
       <qemu:property name='prop1' type='string' value='propval1'/>
       <qemu:property name='prop2' type='signed' value='-321'/>
     </qemu:device>
     <qemu:blockdev alias='ua-disk'>
       <qemu:property name='prop1' type='string' value='propval1'/>
       <qemu:property name='prop2' type='signed' value='-321'/>
     </qemu:blockdev>


 2. Type specific backend at the inner level

     <qemu:device alias='ua-disk'>
       <qemu:property name='prop1' type='string' value='propval1'/>
       <qemu:property name='prop2' type='signed' value='-321'/>
       
       <qemu:blockdev alias='ua-disk'>
         <qemu:property name='prop1' type='string' value='propval1'/>
         <qemu:property name='prop2' type='signed' value='-321'/>
       </qemu:blockdev>
     </qemu:device>

 3. Inner generic backends/frontends:

     <qemu:device alias='ua-disk'>
       <qemu:frontend>
         <qemu:property name='prop1' type='string' value='propval1'/>
         <qemu:property name='prop2' type='signed' value='-321'/>
       </qemu:frontend>
       <qemu:backend>
         <qemu:property name='prop1' type='string' value='propval1'/>
         <qemu:property name='prop2' type='signed' value='-321'/>
       </qemu:backend>
     </qemu:device>

 4. Inner generic backends:

     <qemu:device alias='ua-disk'>
       <qemu:property name='prop1' type='string' value='propval1'/>
       <qemu:property name='prop2' type='signed' value='-321'/>
       <qemu:backend>
         <qemu:property name='prop1' type='string' value='propval1'/>
         <qemu:property name='prop2' type='signed' value='-321'/>
       </qemu:backend>
     </qemu:device>


I'd probably lean slightly towards options (3)/(4), which happens
to be possible to retrofit with this series as.

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|


More information about the libvir-list mailing list