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

Kaitlin Rupert kaitlin at linux.vnet.ibm.com
Tue Feb 24 18:20:35 UTC 2009


>          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,

This needs to be dconn, not conn.

> +                                "Unable to get remote Hypervisor version");
>                  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,

This can just be virDomainGetConnect(dom) instead of conn, since conn 
isn't needed elsewhere in the function.

> +                                "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));
> +

Setting an error here isn't necessary.  We're polling to make sure the 
guest is undefined - we want the guest to disappear from the system.  If 
we can't find the guest before the undefine call, it means the guest is 
already gone - which isn't an error.

>                          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,

You're defining the XML on the remote system - this needs to be rconn, 
not 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,

You're starting the guest on the remote system - this needs to be rconn, 
not 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,

Just use virDomainGetConnect(dom) here - conn isn't used elsewhere in 
the function.

> +                                "Error getting domain info");
> +
>                  goto out;
>          }


-- 
Kaitlin Rupert
IBM Linux Technology Center
kaitlin at linux.vnet.ibm.com




More information about the Libvirt-cim mailing list