The xen driver will generate a migration port if only a hostname is passed in the optional migrate URI, so let's do the same in qemu. Signed-off-by: Cole Robinson <crobinso@xxxxxxxxxx> --- src/qemu/qemu_driver.c | 29 +++++++++++++++++++++++------ 1 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index fb952d8..3ef29a6 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -6304,15 +6304,32 @@ qemudDomainMigratePrepare2 (virConnectPtr dconn, /* Get the port number. */ p = strrchr (uri_in, ':'); - p++; /* definitely has a ':' in it, see above */ - this_port = virParseNumber (&p); - if (this_port == -1 || p-uri_in != strlen (uri_in)) { - qemudReportError (dconn, NULL, NULL, VIR_ERR_INVALID_ARG, - "%s", _("URI did not have ':port' at the end")); - goto cleanup; + if (p == strchr(uri_in, ':')) { + /* Generate a port */ + this_port = QEMUD_MIGRATION_FIRST_PORT + port++; + if (port == QEMUD_MIGRATION_NUM_PORTS) + port = 0; + + /* Caller frees */ + if (virAsprintf(uri_out, "%s:%d", uri_in, this_port) < 0) { + virReportOOMError (dconn); + goto cleanup; + } + + } else { + p++; /* definitely has a ':' in it, see above */ + this_port = virParseNumber (&p); + if (this_port == -1 || p-uri_in != strlen (uri_in)) { + qemudReportError (dconn, NULL, NULL, VIR_ERR_INVALID_ARG, + "%s", _("URI ended with incorrect ':port'")); + goto cleanup; + } } } + if (uri_out && *uri_out) + VIR_DEBUG("Generated uri_out=%s", *uri_out); + /* Parse the domain XML. */ if (!(def = virDomainDefParseString(dconn, driver->caps, dom_xml, VIR_DOMAIN_XML_INACTIVE))) { -- 1.6.5.rc2 -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list