
On Wed, Nov 15, 2006 at 02:23:23AM +0000, Daniel P. Berrange wrote:
The attached path makes the xen_internal, xend_internall, xs_internal and proxy driver backends ignore all virDomainPtr objects which have an ID number of -1. All operations on such domains need to instead be handled by the new xm_internal.c backend which uses the config files. Without this patch, the existing drivers would all throw bogus errors due to ID of -1.
This patch is slightly simpler than last time, because the code to ignore HTTP 404 errors from XenD was already merged last week.
[...]
*************** *** 716,730 **** int ret;
if (!VIR_IS_CONNECTED_DOMAIN(domain)) { ! if (domain == NULL) ! virProxyError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); ! else ! virProxyError(domain->conn, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); ! return (0); } if (info == NULL) { virProxyError(domain->conn, VIR_ERR_INVALID_ARG, __FUNCTION__); ! return (-1); } memset(&req, 0, sizeof(req)); req.command = VIR_PROXY_DOMAIN_INFO; --- 718,734 ---- int ret;
if (!VIR_IS_CONNECTED_DOMAIN(domain)) { ! if (domain == NULL) ! virProxyError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); ! else ! virProxyError(domain->conn, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); ! return (-1);
Agreed for the Proxy driver you now want to return -1 on Info if it's not a connected domain. We already emitted an error there anyway make sense, but I wonder why it used to return 0 there ... hum....
--- src/xend_internal.c 15 Nov 2006 02:34:04 -0000 *************** *** 1266,1272 **** return node; }
! static int xend_get_config_version(virConnectPtr conn) { struct sexpr *root; const char *value; --- 1266,1272 ---- return node; }
! int xend_get_config_version(virConnectPtr conn) { struct sexpr *root; const char *value;
I assume exporting it is needed for other patches. Just check :-)
*** src/xend_internal.h 12 Sep 2006 01:16:22 -0000 1.26 --- src/xend_internal.h 15 Nov 2006 02:34:05 -0000 *************** *** 613,618 **** --- 613,619 ---- */ int xend_log(virConnectPtr xend, char *buffer, size_t n_buffer);
+ int xend_get_config_version(virConnectPtr conn); char *xend_parse_domain_sexp(virConnectPtr conn, char *root, int xendConfigVersion);
Okidoc, long patch but repetitive changes. The only mistake possible is to forgot some entry points or code paths. There is a few reformatting changes too, but all fine :-) Daniel -- Red Hat Virtualization group http://redhat.com/virtualization/ Daniel Veillard | virtualization library http://libvirt.org/ veillard@redhat.com | libxml GNOME XML XSLT toolkit http://xmlsoft.org/ http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/