[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