[libvirt] [PATCH 11/12] migration: refactor: introduce parameter checking function

Jiri Denemark jdenemar at redhat.com
Mon Oct 12 11:32:24 UTC 2015


On Fri, Oct 02, 2015 at 10:52:51 +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.
> 
> It is *not* a pure refactoring patch as it introduces offline check for older
> versions. Looks like it must be done that way and no one will be broken too.
> 
> Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy at virtuozzo.com>
> ---
>  src/libvirt-domain.c |  165 ++++++++++++++++++++-----------------------------
>  1 files changed, 67 insertions(+), 98 deletions(-)
> 
> diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c
> index 2778a15..35dfa3f 100644
> --- a/src/libvirt-domain.c
> +++ b/src/libvirt-domain.c
> @@ -4139,6 +4139,46 @@ virDomainMigrate3(virDomainPtr domain,
>  }
>  
>  
> +static
> +int virDomainMigrateUnmanagedCheckCompat(virDomainPtr domain,
> +                                         unsigned int flags)
> +{
> +    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) {
> +        if (!VIR_DRV_SUPPORTS_FEATURE(domain->conn->driver, domain->conn,
> +                                      VIR_DRV_FEATURE_MIGRATION_P2P)) {
> +            virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
> +                           _("p2p migration is not supported by "
> +                             "the source host"));
> +            return -1;
> +        }
> +    } else {
> +        if (!VIR_DRV_SUPPORTS_FEATURE(domain->conn->driver, domain->conn,
> +                                      VIR_DRV_FEATURE_MIGRATION_DIRECT)) {
> +            virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
> +                           _("direct migration is not supported by "
> +                             "the source host"));
> +            return -1;
> +        }
> +    }
> +
> +

One empty line would be enough :-)

> +    return 0;
> +}

Jirka




More information about the libvir-list mailing list