[Libvirt-cim] [PATCH 3 of 3] This patch exposes error messages from libvirt calls in VSMigrationService

Richard Maciel rmaciel at linux.vnet.ibm.com
Wed Feb 18 18:28:31 UTC 2009


# HG changeset patch
# User Richard Maciel <rmaciel at 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 at 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;
         }
 




More information about the Libvirt-cim mailing list