[libvirt] [PATCH v2] Add support for migration URI configuration

chen.fan.fnst at cn.fujitsu.com chen.fan.fnst at cn.fujitsu.com
Tue Apr 22 10:10:39 UTC 2014


Ping...

On Mon, 2014-04-21 at 17:15 +0800, Chen Fan wrote: 
> For now, we set the migration URI from command line '--migrate_uri' or
> construct the URI by looking up the dest host's hostname which could be
> solved by DNS automatically.
> 
> But in cases the dest host have two or more NICs to reach, we may need to
> send the migration data over a specific NIC which is different from the
> automatically resloved one for some reason like performance, security, etc.
> thus we must explicitly specify the migrateuri in command line everytime,
> but it is too troublesome if there are many such hosts(and don't forget
> virt-manager).
> 
> This patch adds a configuration file option on dest host to save the
> default migrate uri which explicitly configure which of this host's
> addresses should be used to transfer, thus user doesn't boring to specify
> it in command line everytime.
> 
> Signed-off-by: Chen Fan <chen.fan.fnst at cn.fujitsu.com>
> ---
>  src/qemu/qemu.conf        | 5 ++++-
>  src/qemu/qemu_conf.c      | 2 ++
>  src/qemu/qemu_conf.h      | 2 ++
>  src/qemu/qemu_migration.c | 5 +++++
>  4 files changed, 13 insertions(+), 1 deletion(-)
> 
> diff --git a/src/qemu/qemu.conf b/src/qemu/qemu.conf
> index f0e802f..2973631 100644
> --- a/src/qemu/qemu.conf
> +++ b/src/qemu/qemu.conf
> @@ -449,7 +449,10 @@
>  #
>  #seccomp_sandbox = 1
>  
> -
> +# Override the URI used for any specific migration URI to be sent.
> +# Defaults to NULL, will be set to as "tcp://hostIP[:port]".
> +#
> +#migrate_uri = "tcp://hostIP:port"
>  
>  # Override the listen address for all incoming migrations. Defaults to
>  # 0.0.0.0, or :: if both host and qemu are capable of IPv6.
> diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
> index 198ee2f..0bd943d 100644
> --- a/src/qemu/qemu_conf.c
> +++ b/src/qemu/qemu_conf.c
> @@ -576,6 +576,8 @@ int virQEMUDriverConfigLoadFile(virQEMUDriverConfigPtr cfg,
>  
>      GET_VALUE_STR("migration_address", cfg->migrationAddress);
>  
> +    GET_VALUE_STR("migrate_uri", cfg->migrateUri);
> +
>      ret = 0;
>  
>   cleanup:
> diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h
> index a36ea63..2e45421 100644
> --- a/src/qemu/qemu_conf.h
> +++ b/src/qemu/qemu_conf.h
> @@ -167,6 +167,8 @@ struct _virQEMUDriverConfig {
>      char *migrationAddress;
>      int migrationPortMin;
>      int migrationPortMax;
> +
> +    char *migrateUri;
>  };
>  
>  /* Main driver state */
> diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
> index 593d2d3..ab64c58 100644
> --- a/src/qemu/qemu_migration.c
> +++ b/src/qemu/qemu_migration.c
> @@ -2639,6 +2639,7 @@ qemuMigrationPrepareDirect(virQEMUDriverPtr driver,
>      int ret = -1;
>      virURIPtr uri = NULL;
>      bool well_formed_uri = true;
> +    virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
>  
>      VIR_DEBUG("driver=%p, dconn=%p, cookiein=%s, cookieinlen=%d, "
>                "cookieout=%p, cookieoutlen=%p, uri_in=%s, uri_out=%p, "
> @@ -2649,6 +2650,10 @@ qemuMigrationPrepareDirect(virQEMUDriverPtr driver,
>  
>      *uri_out = NULL;
>  
> +    if (uri_in == NULL && cfg->migrateUri) {
> +        uri_in = cfg->migrateUri;
> +    }
> +
>      /* The URI passed in may be NULL or a string "tcp://somehostname:port".
>       *
>       * If the URI passed in is NULL then we allocate a port number





More information about the libvir-list mailing list