In short, may be factor out common p2p code that now resides in libvirt-domain.c and reuse it for vz? Looks like vz driver is not a good place for such common and kinda complicated code. On 11.09.2015 14:06, Nikolay Shirokovskiy wrote: > > > On 11.09.2015 12:28, Daniel P. Berrange wrote: >> On Fri, Sep 11, 2015 at 12:05:54PM +0300, Nikolay Shirokovskiy wrote: >>> >>>> As mentioned in the previous review, I really want to see VZ >>>> provide the full set of drive callbacks required by the V3 >>>> migration protocol, not just those you happen to need to have >>>> today. ie add Begin, Finish & Confirm. This in turn makes it >>>> quite easy to support non-P2P mode which is desirable because >>>> in P2P mode there is no practical way todo interactive auth >>>> for the destination connection, but in non-P2P mode the client >>>> app opens the destination connection, so can do auth if needed. >>> >>> Ok, I just wanted this to be a matter of a different patchset. >>> >>>> >>>> I believe that the following changes to this patch should do >>>> all that is required. NB, I have only compile tested this, >>>> not actually run it, since I don't have an active VZ install, >>>> only the SDK install. >>> >>> For me the patch you suggested is overkill in part of p2p. >>> vzDomainMigratePerform3P2PParams follows virDomainMigrateVersion3Full too >>> close, while vz p2p migration is much simplier that qemu or some abstract case. >> >> As you can see from the fact that we have many versions of the >> migration protocol, what appears obviously sufficient when first >> implmented, has frequently turned out to be insufficient. So while >> you only need 2 calls today, I would not bet on that always being >> sufficient in the future. Implementing all phases today provides >> better future proofing, should we need to make use of them in the >> future, as it allows the potential to implement fixes / workarounds >> on the dest, without relying on also lock-step upgrading the host >> to add the callers you didn't make to start with. >> >> It would also be desirable in the future, to provide the means to >> share the code impl for P2P migration across all the hypervisor >> drivers. This would again imply supporting all stages of the v3 >> migration protocol. If we don't do this now we will create problems >> in the future if we wish to change to shared code, because any >> shared impl would be calling functions that were not implemented >> on older versions of VZ. > > Well I'm not against implementing the full set of protocol functions. This > will be done anyway as a part of supporting direct managed migrating scheme as > you recommend. So it is not a point of dispute. > > The point of dispute is what p2p migration should look like. Well I understand > the argument of ease of fixes/workaronds. But if there is even a disire in > future share p2p code why not to do it from the start? > > Look vzDomainMigratePerform3P2PParams is identical to > virDomainMigrateVersion3Full except for that last one supports plain version > 3 protocol. Can we reuse virDomainMigrateVersion3Full? Thus at least for vz > p2p and direct managed will be identical from procedural POV, the only > difference is who executes the migration procedure - client or daemon. So the > last statement will be not only a declaration but implemented in code. > >> >>> >>> 1. Confirm phase is noop and this even won't change in future as vz migration >>> is practically unmanaged direct one. So why call it in p2p at all? >>> >>> 2. Finish phase function is to return migrated domain only(in vz case). Thus it >>> have meaning only for direct managed case due its API definition. >>> >>> 3. Calling begin phase in p2p is excessive too. We don't use generated dxml, so >>> this phase is only a stub for direct managed case. >>> >>> Even if we support changing domain xml in future it is more practical >>> to use specific functions and not general API which cases a lot >>> of preparation work and has rather uncomfortable way of passing >>> parameters. >>> >>> I'd better just add a small patch to existent vzDomainMigratePerform3Params which >>> branches on how to get miguri and session_uuid. >>> >>> As to supporting all API versions. I resent a second version of the patch >>> that should cover the case of toURI API so that implementing only >>> version3 params protocol functions would be enough. But the patch >>> does not cover the case of migration{N} API. > > Looks like you misunderstood me. Here i just wanted you to > review https://www.redhat.com/archives/libvir-list/2015-September/msg00397.html patch. > and estimate it as an alternative to helpers methods you suggested > in https://www.redhat.com/archives/libvir-list/2015-September/msg00372.html. > >> >> This patch I have provided covers the normal virDomainMigrate API, in >> addition to the virDomainMigrateToURI method. As I mentioned, supporting >> virDomainMigrate is desirable, because it allows the calling application >> to perform arbitrary authentication with the destination libvirtd, which >> is not possible when using P2P migration. Supporting the non-P2P migration >> mode requires that we provide all the callbacks defined for version 3, >> and once we do this, it is sensible to support all the callbacks in the >> P2P case too, to ensure we have identical functional behaviour in both >> cases. > >> >> So in summary, I want to see the full V3 migration protocol implemented >> in VZ before this is acceptable for merge. This patch I supplied would >> be sufficient to achieve this. >> >> >> Regards, >> Daniel >> -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list