
# HG changeset patch # User Richard Maciel <rmaciel@linux.vnet.ibm.com> # Date 1235493767 10800 # Node ID 1ff6cf0ca3a1dc8b1d507389cd7e1625c711ce50 # Parent 874a34b43248c303da834aa73333bfe26a53943c This patch exposes error messages from libvirt calls in VSMigrationService #2: Fixed compile error Changed code based on feedback from Kaitlin Rupert Signed-off-by: Richard Maciel <rmaciel@linux.vnet.ibm.com> diff -r 874a34b43248 -r 1ff6cf0ca3a1 src/Virt_VSMigrationService.c --- a/src/Virt_VSMigrationService.c Tue Feb 24 13:42:47 2009 -0300 +++ b/src/Virt_VSMigrationService.c Tue Feb 24 13:42:47 2009 -0300 @@ -259,16 +259,18 @@ unsigned long remote; if (virConnectGetVersion(conn, &local)) { - cu_statusf(_BROKER, &s, - CMPI_RC_ERR_FAILED, - "Unable to get local Hypervisor version"); + virt_set_status(_BROKER, &s, + CMPI_RC_ERR_FAILED, + conn, + "Unable to get local Hypervisor version"); goto out; } if (virConnectGetVersion(dconn, &remote)) { - cu_statusf(_BROKER, &s, - CMPI_RC_ERR_FAILED, - "Unable to get remote hypervisor version"); + virt_set_status(_BROKER, &s, + CMPI_RC_ERR_FAILED, + conn, + "Unable to get remote Hypervisor version"); goto out; } @@ -396,12 +398,28 @@ pid_t pid; int i; int rc = -1; + virConnectPtr conn = virDomainGetConnect(dom); + const char *name = virDomainGetName(dom); + const char *uri = virConnectGetURI(conn); + + if (name == NULL) { + virt_set_status(_BROKER, &s, + CMPI_RC_ERR_FAILED, + conn, + "Failed to get domain name"); + goto out; + } + + if (uri == NULL) { + virt_set_status(_BROKER, &s, + CMPI_RC_ERR_FAILED, + conn, + "Failed to get URI of connection"); + goto out; + } pid = fork(); if (pid == 0) { - virConnectPtr conn = virDomainGetConnect(dom); - const char *name = virDomainGetName(dom); - const char *uri = virConnectGetURI(conn); if (setpgrp() == -1) perror("setpgrp"); @@ -436,6 +454,7 @@ free(name); } + out: return s; } @@ -589,9 +608,10 @@ dom = virDomainLookupByName(conn, domain); if (dom == NULL) { - cu_statusf(_BROKER, &s, - CMPI_RC_ERR_NOT_FOUND, - "No such domain"); + virt_set_status(_BROKER, &s, + CMPI_RC_ERR_NOT_FOUND, + conn, + "No such domain"); goto out; } @@ -930,9 +950,10 @@ ret = virDomainGetInfo(dom, &info); if (ret == -1) { - cu_statusf(_BROKER, &s, - CMPI_RC_ERR_FAILED, - "Error getting domain info"); + virt_set_status(_BROKER, &s, + CMPI_RC_ERR_FAILED, + virDomainGetConnect(dom), + "Error getting domain info"); goto out; } @@ -949,7 +970,7 @@ CU_DEBUG("Migration failed"); virt_set_status(_BROKER, &s, CMPI_RC_ERR_FAILED, - virDomainGetConnect(dom), + dconn, "Migration Failed"); } out: @@ -969,9 +990,10 @@ CU_DEBUG("Shutting down domain for migration"); ret = virDomainShutdown(dom); if (ret != 0) { - cu_statusf(_BROKER, &s, - CMPI_RC_ERR_FAILED, - "Unable to shutdown guest"); + virt_set_status(_BROKER, &s, + CMPI_RC_ERR_FAILED, + virDomainGetConnect(dom), + "Unable to shutdown guest"); goto out; } @@ -1005,9 +1027,14 @@ *xml = virDomainGetXMLDesc(dom, 0); if (*xml == NULL) { - cu_statusf(_BROKER, &s, - CMPI_RC_ERR_FAILED, - "Unable to retrieve domain XML."); + + virConnectPtr conn = virDomainGetConnect(dom); + + virt_set_status(_BROKER, &s, + CMPI_RC_ERR_FAILED, + conn, + "Unable to retrieve domain XML"); + goto out; } @@ -1025,6 +1052,7 @@ virDomainPtr dom; int i; int ret; + virConnectPtr lconn = virDomainGetConnect(ldom); for (i = 0; i < MIGRATE_SHUTDOWN_TIMEOUT; i++) { if ((i % 30) == 0) { @@ -1032,10 +1060,17 @@ virDomainGetName(ldom)); } - dom = virDomainLookupByName(virDomainGetConnect(ldom), + dom = virDomainLookupByName(lconn, virDomainGetName(ldom)); if (dom == NULL) { CU_DEBUG("Unable to re-lookup domain"); + + virt_set_status(_BROKER, &s, + CMPI_RC_ERR_NOT_FOUND, + lconn, + "Domain `%s' not found", + virDomainGetName(ldom)); + ret = -1; break; } @@ -1055,9 +1090,10 @@ newdom = virDomainDefineXML(rconn, xml); if (newdom == NULL) { - cu_statusf(_BROKER, &s, - CMPI_RC_ERR_FAILED, - "Failed to define domain"); + virt_set_status(_BROKER, &s, + CMPI_RC_ERR_FAILED, + lconn, + "Failed to define domain"); goto out; } @@ -1067,9 +1103,11 @@ CU_DEBUG("Restarting domain on remote host"); if (virDomainCreate(newdom) != 0) { CU_DEBUG("Failed to start domain on remote host"); - cu_statusf(_BROKER, &s, - CMPI_RC_ERR_FAILED, - "Failed to start domain on remote host"); + virt_set_status(_BROKER, &s, + CMPI_RC_ERR_FAILED, + lconn, + "Failed to start domain on remote \ + host"); } } out: @@ -1086,9 +1124,13 @@ ret = virDomainGetInfo(dom, &info); if (ret == -1) { - cu_statusf(_BROKER, &s, - CMPI_RC_ERR_FAILED, - "Error getting domain info"); + virConnectPtr conn = virDomainGetConnect(dom); + + virt_set_status(_BROKER, &s, + CMPI_RC_ERR_FAILED, + conn, + "Error getting domain info"); + goto out; } @@ -1117,9 +1159,11 @@ dom = virDomainLookupByName(conn, job->domain); if (dom == NULL) { CU_DEBUG("Failed to lookup `%s'", job->domain); - cu_statusf(_BROKER, &s, - CMPI_RC_ERR_FAILED, - "Failed to lookup domain `%s'", job->domain); + virt_set_status(_BROKER, &s, + CMPI_RC_ERR_FAILED, + conn, + "Failed to lookup domain `%s'", job->domain); + goto out; }