This patch: (1) Adds the VIR_ERR_NO_DOMAIN and VIR_ERR_NO_NETWORK errors (the latter will be used later to make the same change to virNetworkLookup* functions).
(2) Changes the documentation of virDomainLookup* functions to match the new behaviour. (3) Changes qemu & test drivers to have the new behaviour. Rich. -- Emerging Technologies, Red Hat - http://et.redhat.com/~rjones/ Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod Street, Windsor, Berkshire, SL4 1TE, United Kingdom. Registered in England and Wales under Company Registration No. 03798903
? qemud/libvirtd.init
Index: include/libvirt/virterror.h
===================================================================
RCS file: /data/cvs/libvirt/include/libvirt/virterror.h,v
retrieving revision 1.25
diff -u -p -r1.25 virterror.h
--- include/libvirt/virterror.h 20 Jun 2007 17:25:39 -0000 1.25
+++ include/libvirt/virterror.h 3 Jul 2007 14:17:19 -0000
@@ -125,6 +125,8 @@ typedef enum {
VIR_ERR_RPC, /* some sort of RPC error */
VIR_ERR_GNUTLS_ERROR, /* error from a GNUTLS call */
VIR_WAR_NO_NETWORK, /* failed to start network */
+ VIR_ERR_NO_DOMAIN, /* domain not found or unexpectedly disappeared */
+ VIR_ERR_NO_NETWORK, /* network not found */
} virErrorNumber;
/**
Index: src/libvirt.c
===================================================================
RCS file: /data/cvs/libvirt/src/libvirt.c,v
retrieving revision 1.84
diff -u -p -r1.84 libvirt.c
--- src/libvirt.c 29 Jun 2007 13:23:13 -0000 1.84
+++ src/libvirt.c 3 Jul 2007 14:17:20 -0000
@@ -744,7 +744,8 @@ virDomainCreateLinux(virConnectPtr conn,
*
* Try to find a domain based on the hypervisor ID number
*
- * Returns a new domain object or NULL in case of failure
+ * Returns a new domain object or NULL in case of failure. If the
+ * domain cannot be found, then VIR_ERR_NO_DOMAIN error is raised.
*/
virDomainPtr
virDomainLookupByID(virConnectPtr conn, int id)
@@ -772,7 +773,8 @@ virDomainLookupByID(virConnectPtr conn,
*
* Try to lookup a domain on the given hypervisor based on its UUID.
*
- * Returns a new domain object or NULL in case of failure
+ * Returns a new domain object or NULL in case of failure. If the
+ * domain cannot be found, then VIR_ERR_NO_DOMAIN error is raised.
*/
virDomainPtr
virDomainLookupByUUID(virConnectPtr conn, const unsigned char *uuid)
@@ -800,7 +802,8 @@ virDomainLookupByUUID(virConnectPtr conn
*
* Try to lookup a domain on the given hypervisor based on its UUID.
*
- * Returns a new domain object or NULL in case of failure
+ * Returns a new domain object or NULL in case of failure. If the
+ * domain cannot be found, then VIR_ERR_NO_DOMAIN error is raised.
*/
virDomainPtr
virDomainLookupByUUIDString(virConnectPtr conn, const char *uuidstr)
@@ -849,7 +852,8 @@ virDomainLookupByUUIDString(virConnectPt
*
* Try to lookup a domain on the given hypervisor based on its name.
*
- * Returns a new domain object or NULL in case of failure
+ * Returns a new domain object or NULL in case of failure. If the
+ * domain cannot be found, then VIR_ERR_NO_DOMAIN error is raised.
*/
virDomainPtr
virDomainLookupByName(virConnectPtr conn, const char *name)
Index: src/qemu_driver.c
===================================================================
RCS file: /data/cvs/libvirt/src/qemu_driver.c,v
retrieving revision 1.2
diff -u -p -r1.2 qemu_driver.c
--- src/qemu_driver.c 29 Jun 2007 13:23:13 -0000 1.2
+++ src/qemu_driver.c 3 Jul 2007 14:17:22 -0000
@@ -1748,7 +1748,7 @@ static virDomainPtr qemudDomainLookupByI
virDomainPtr dom;
if (!vm) {
- qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR, "no domain with matching id");
+ qemudReportError(conn, NULL, NULL, VIR_ERR_NO_DOMAIN, NULL);
return NULL;
}
@@ -1768,7 +1768,7 @@ static virDomainPtr qemudDomainLookupByU
virDomainPtr dom;
if (!vm) {
- qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR, "no domain with matching uuid");
+ qemudReportError(conn, NULL, NULL, VIR_ERR_NO_DOMAIN, NULL);
return NULL;
}
@@ -1788,7 +1788,7 @@ static virDomainPtr qemudDomainLookupByN
virDomainPtr dom;
if (!vm) {
- qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR, "no domain with matching name");
+ qemudReportError(conn, NULL, NULL, VIR_ERR_NO_DOMAIN, NULL);
return NULL;
}
Index: src/test.c
===================================================================
RCS file: /data/cvs/libvirt/src/test.c,v
retrieving revision 1.38
diff -u -p -r1.38 test.c
--- src/test.c 26 Jun 2007 22:57:41 -0000 1.38
+++ src/test.c 3 Jul 2007 14:17:23 -0000
@@ -983,6 +983,7 @@ virDomainPtr testLookupDomainByID(virCon
}
if (idx < 0) {
+ testError (conn, NULL, VIR_ERR_NO_DOMAIN, NULL);
return(NULL);
}
@@ -1000,8 +1001,9 @@ virDomainPtr testLookupDomainByUUID(virC
{
testPrivatePtr priv = (testPrivatePtr) conn->privateData;
testCon *con = &node->connections[priv->handle];
- virDomainPtr dom = NULL;
+ virDomainPtr dom;
int i, idx = -1;
+
for (i = 0 ; i < MAX_DOMAINS ; i++) {
if (con->domains[i].active &&
memcmp(uuid, con->domains[i].uuid, VIR_UUID_BUFLEN) == 0) {
@@ -1009,15 +1011,20 @@ virDomainPtr testLookupDomainByUUID(virC
break;
}
}
- if (idx >= 0) {
- dom = virGetDomain(conn, con->domains[idx].name, con->domains[idx].uuid);
- if (dom == NULL) {
- testError(conn, NULL, VIR_ERR_NO_MEMORY, _("allocating domain"));
- return(NULL);
- }
- dom->id = con->domains[idx].id;
+
+ if (idx < 0) {
+ testError (conn, NULL, VIR_ERR_NO_DOMAIN, NULL);
+ return NULL;
}
- return (dom);
+
+ dom = virGetDomain(conn, con->domains[idx].name, con->domains[idx].uuid);
+ if (dom == NULL) {
+ testError(conn, NULL, VIR_ERR_NO_MEMORY, _("allocating domain"));
+ return NULL;
+ }
+ dom->id = con->domains[idx].id;
+
+ return dom;
}
virDomainPtr testLookupDomainByName(virConnectPtr conn,
@@ -1025,8 +1032,9 @@ virDomainPtr testLookupDomainByName(virC
{
testPrivatePtr priv = (testPrivatePtr) conn->privateData;
testCon *con = &node->connections[priv->handle];
- virDomainPtr dom = NULL;
+ virDomainPtr dom;
int i, idx = -1;
+
for (i = 0 ; i < MAX_DOMAINS ; i++) {
if (con->domains[i].active &&
strcmp(name, con->domains[i].name) == 0) {
@@ -1034,15 +1042,20 @@ virDomainPtr testLookupDomainByName(virC
break;
}
}
- if (idx >= 0) {
- dom = virGetDomain(conn, con->domains[idx].name, con->domains[idx].uuid);
- if (dom == NULL) {
- testError(conn, NULL, VIR_ERR_NO_MEMORY, _("allocating domain"));
- return(NULL);
- }
- dom->id = con->domains[idx].id;
+
+ if (idx < 0) {
+ testError (conn, NULL, VIR_ERR_NO_DOMAIN, NULL);
+ return NULL;
}
- return (dom);
+
+ dom = virGetDomain(conn, con->domains[idx].name, con->domains[idx].uuid);
+ if (dom == NULL) {
+ testError(conn, NULL, VIR_ERR_NO_MEMORY, _("allocating domain"));
+ return NULL;
+ }
+ dom->id = con->domains[idx].id;
+
+ return dom;
}
int testListDomains (virConnectPtr conn,
Index: src/virterror.c
===================================================================
RCS file: /data/cvs/libvirt/src/virterror.c,v
retrieving revision 1.27
diff -u -p -r1.27 virterror.c
--- src/virterror.c 20 Jun 2007 17:25:39 -0000 1.27
+++ src/virterror.c 3 Jul 2007 14:17:23 -0000
@@ -634,6 +634,18 @@ __virErrorMsg(virErrorNumber error, cons
else
errmsg = _("Failed to find the network: %s");
break;
+ case VIR_ERR_NO_DOMAIN:
+ if (info == NULL)
+ errmsg = _("Domain not found");
+ else
+ errmsg = _("Domain not found: %s");
+ break;
+ case VIR_ERR_NO_NETWORK:
+ if (info == NULL)
+ errmsg = _("Network not found");
+ else
+ errmsg = _("Network not found: %s");
+ break;
}
return (errmsg);
}
smime.p7s
Description: S/MIME Cryptographic Signature
-- Libvir-list mailing list [email protected] https://www.redhat.com/mailman/listinfo/libvir-list
