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(a)redhat.com | libxml GNOME XML XSLT toolkit
http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine
http://rpmfind.net/