# HG changeset patch
# User Richard Maciel <rmaciel(a)linux.vnet.ibm.com>
# Date 1234981421 10800
# Node ID 2d7444518de4a50e511a2a854aa80634f3b559bf
# Parent 9ffb5f88de2b5abc58d80bb647c352e5ddf94de4
This patch exposes error messages from libvirt calls in VSMigrationService
Signed-off-by: Richard Maciel <rmaciel(a)linux.vnet.ibm.com>
diff -r 9ffb5f88de2b -r 2d7444518de4 src/Virt_VSMigrationService.c
--- a/src/Virt_VSMigrationService.c Wed Feb 18 15:23:26 2009 -0300
+++ b/src/Virt_VSMigrationService.c Wed Feb 18 15:23:41 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,
+ conn,
+ "Error getting domain info");
goto 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,
+ dconn,
+ "Unable to shutdown guest");
goto out;
}
@@ -1005,10 +1027,21 @@
*xml = virDomainGetXMLDesc(dom, 0);
if (*xml == NULL) {
- cu_statusf(_BROKER, &s,
- CMPI_RC_ERR_FAILED,
- "Unable to retrieve domain XML.");
- goto out;
+
+ virConnectPtr conn = virDomainGetConnect(dom);
+ if (conn == NULL) {
+ cu_statusf(_BROKER, &s,
+ CMPI_RC_ERR_FAILED,
+ "Unable to retrieve domain XML.");
+ goto out;
+ }
+
+ virt_set_status(_BROKER, &s,
+ CMPI_RC_ERR_FAILED,
+ conn,
+ "Unable to retrieve domain XML");
+
+ goto out;
}
out:
@@ -1036,6 +1069,13 @@
virDomainGetName(ldom));
if (dom == NULL) {
CU_DEBUG("Unable to re-lookup domain");
+
+ virt_set_status(_BROKER, &s,
+ CMPI_RC_ERR_NOT_FOUND,
+ rconn,
+ "Domain `%s' not found",
+ virDomainGetName(ldom));
+
ret = -1;
break;
}
@@ -1055,9 +1095,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,
+ rconn,
+ "Failed to define domain");
goto out;
}
@@ -1067,9 +1108,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,
+ rconn,
+ "Failed to start domain on remote \
+ host");
}
}
out:
@@ -1086,9 +1129,20 @@
ret = virDomainGetInfo(dom, &info);
if (ret == -1) {
- cu_statusf(_BROKER, &s,
- CMPI_RC_ERR_FAILED,
- "Error getting domain info");
+ virConnectPtr conn = virDomainGetConnect(dom);
+ if (conn == NULL) {
+ cu_statusf(_BROKER, &s,
+ CMPI_RC_ERR_FAILED,
+ "Error getting domain info");
+
+ goto out;
+ }
+
+ virt_set_status(_BROKER, &s,
+ CMPI_RC_ERR_FAILED,
+ conn,
+ "Error getting domain info");
+
goto out;
}
@@ -1117,9 +1171,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;
}