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.
