On Mon, Jun 22, 2026 at 18:09:49 +0100, Daniel P. Berrangé wrote:
> On Fri, Jun 19, 2026 at 12:28:13PM +0200, Peter Krempa via Devel wrote:
> > From: Peter Krempa <[email protected]>
> > 
> > Extract information about typed parameters from calls to
> > 'virTypedParamsValidate'/'virTypedParamsValidateTemplate' and expose
> > them in the introspection XML:
> > 
> >     <api name='virDomainMigrate3'>
> >       <flags dec='2097151' hex='0x1fffff'/>
> >       <typed-parameters type='input' name='params'>
> >         <param name='migrate_uri' type='string'/>
> >         <param name='destination_name' type='string'/>
> >         <param name='destination_xml' type='string'/>
> >         <param name='bandwidth' type='ullong'/>
> >         <param name='graphics_uri' type='string'/>
> >         <param name='listen_address' type='string'/>
> >         <param name='migrate_disks' type='string' multiple='yes'/>
> >         <param name='migrate_disks_detect_zeroes' type='string' 
> > multiple='yes'/>
> >         <param name='migrate_disks_target_zero' type='string' 
> > multiple='yes'/>
> >         <param name='disks_port' type='int'/>
> >         <param name='compression' type='string' multiple='yes'/>
> >         <param name='compression.mt.level' type='int'/>
> >         <param name='compression.mt.threads' type='int'/>
> >         <param name='compression.mt.dthreads' type='int'/>
> >         <param name='compression.xbzrle.cache' type='ullong'/>
> >         <param name='persistent_xml' type='string'/>
> >         <param name='auto_converge.initial' type='int'/>
> >         <param name='auto_converge.increment' type='int'/>
> >         <param name='bandwidth.postcopy' type='ullong'/>
> >         <param name='parallel.connections' type='int'/>
> >         <param name='compression.zlib.level' type='int'/>
> >         <param name='compression.zstd.level' type='int'/>
> >         <param name='tls.destination' type='string'/>
> >         <param name='disks_uri' type='string'/>
> >         <param name='bandwidth.avail.switchover' type='ullong'/>
> 
> This is again not especially friendly to non-C languages.
> 
> In both Golang and Rust bindings we don't have any concept of typed
> parameters, and instead just have an extensible struct. So these
> param names don't map to anything meaningful for the developer at the
> Go/Rust level API

As said in previous reply, if a language binding doesn't find this API
useful they shouldn't expose it and rather create their own schema
possibly based on the data from this API.

> 
> Is there an example of where knowing the typed parameters ahead
> of time was needed / important ?

Not currently, but it was a straightforward addition showing the
possibilities.


> 
> 
> >       </typed-parameters>
> >     </api>
> > 
> > Migration APIs once again required special handling as some typed params
> > are supported even if the backing APIs using typed parameters arend
> > supported because they can be converted to legacy parameters for the
> > lesser APIs.

Reply via email to