From 33b35313a3cc5ab8d40065800702a856d7cebf90 Mon Sep 17 00:00:00 2001 From: Cole Robinson Date: Mon, 26 Oct 2009 16:08:23 -0400 Subject: [PATCH] qemu: migrate: Don't require manual URI to specify a port 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. --- src/qemu/qemu_driver.c | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index a3beedb02e..7f61885080 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -6314,15 +6314,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))) { -- GitLab