Current implementation of 'toURI' migration interfaces does not support all
combinations of interface versions and protocol versions. For example 'toURI2'
with p2p flag will not migrate if driver supports only v3params proto.
This is not convinient as drivers that starts to support migration have to
manually support older versions of protocol. I guess this should be done in
one place, namely here.
Another issue is that there are a lot of code duplication in implementation of
toURI interfaces and it is not obvious from code how are they related.
This implementation uses extensible parameters as intermediate parameters
representation. This is possible as interfaces are done backward compatible in
terms of parameters and later versions supports all parameters of former
versions.
= Changes from version 3
* fix spellings
* make error messages more specific as suggested
* in 'migration: refactor: introduce params version of unmanaged':
fix conversion for null values of explicit string params into virTypedParameterPtr.
* squash 'migration: reuse parameters check in toURI2 and toURI3' into
'migration: introduce parameter checking function'
* 'migration: refactor: one return in forURI family functions' is dropped as
suggested
src/libvirt-domain.c | 509 +++++++++++++++++++++++---------------------------
1 files changed, 237 insertions(+), 272 deletions(-)