On Fri, Sep 18, 2015 at 18:05:49 +0300, Nikolay Shirokovskiy wrote: > virDomainMigrateUnmanagedParams is not a good candidate for this functionality > as it is used by migrate family functions too and its have its own checks that > are superset of extracted and we don't need to check twice. > > Actually name of the function is slightly misleading as there is also a check > for consistensy of flags parameter alone. So it could be refactored further and > reused by all migrate functions but for now let it be a matter of a different > patchset. > > Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@xxxxxxxxxxxxx> > --- > src/libvirt-domain.c | 83 +++++++++++++++++++++++++++----------------------- > 1 files changed, 45 insertions(+), 38 deletions(-) > > diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c > index 5c22460..eec45bd 100644 > --- a/src/libvirt-domain.c > +++ b/src/libvirt-domain.c > @@ -4131,6 +4131,39 @@ virDomainMigrate3(virDomainPtr domain, > } > > > +static > +int virDomainMigrateUnmanagedCheckCompat(virDomainPtr domain, > + unsigned int flags) > +{ > + int feat; > + > + VIR_EXCLUSIVE_FLAGS_RET(VIR_MIGRATE_NON_SHARED_DISK, > + VIR_MIGRATE_NON_SHARED_INC, > + -1); > + > + if (flags & VIR_MIGRATE_OFFLINE && > + !VIR_DRV_SUPPORTS_FEATURE(domain->conn->driver, domain->conn, > + VIR_DRV_FEATURE_MIGRATION_OFFLINE)) { > + virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s", > + _("offline migration is not supported by " > + "the source host")); > + return -1; > + } > + > + if (flags & VIR_MIGRATE_PEER2PEER) > + feat = VIR_DRV_FEATURE_MIGRATION_P2P; > + else > + feat = VIR_DRV_FEATURE_MIGRATION_DIRECT; > + > + if (!VIR_DRV_SUPPORTS_FEATURE(domain->conn->driver, domain->conn, feat)) { > + virReportUnsupportedError(); Use virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, ...), virReportUnsupportedError is for unsupported APIs while VIR_ERR_ARGUMENT_UNSUPPORTED says the API is supported but some of its arguments are not. While at it, I think it's better to keep the code a bit verbose and separate checks for p2p and direct migration to be able to provide a usable error message. Jirka -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list