On Thu, Feb 18, 2010 at 03:56:08PM +0000, Daniel P. Berrange wrote: > The internal glue layer for the new pubic API > > * src/driver.h: Define internal driver API contract > * src/libvirt.c, src/libvirt_public.syms: Wire up public > API to internal driver API > * src/esx/esx_driver.c, src/lxc/lxc_driver.c, src/opennebula/one_driver.c, > src/openvz/openvz_driver.c, src/phyp/phyp_driver.c, > src/qemu/qemu_driver.c, src/remote/remote_driver.c, > src/test/test_driver.c, src/uml/uml_driver.c, src/vbox/vbox_tmpl.c, > src/xen/xen_driver.c: Stub new entry point > --- > src/driver.h | 5 ++++ > src/esx/esx_driver.c | 1 + > src/libvirt.c | 48 +++++++++++++++++++++++++++++++++++++++++++ > src/libvirt_public.syms | 1 + > src/lxc/lxc_driver.c | 1 + > src/opennebula/one_driver.c | 1 + > src/openvz/openvz_driver.c | 1 + > src/phyp/phyp_driver.c | 1 + > src/qemu/qemu_driver.c | 1 + > src/remote/remote_driver.c | 1 + > src/test/test_driver.c | 1 + > src/uml/uml_driver.c | 1 + > src/vbox/vbox_tmpl.c | 1 + > src/xen/xen_driver.c | 1 + > 14 files changed, 65 insertions(+), 0 deletions(-) > > diff --git a/src/driver.h b/src/driver.h > index fe21ea3..8c5d97d 100644 > --- a/src/driver.h > +++ b/src/driver.h > @@ -373,6 +373,10 @@ typedef char * > unsigned int ncpus, > unsigned int flags); > > +typedef int > + (*virDrvDomainGetJobInfo)(virDomainPtr domain, > + virDomainJobInfoPtr info); > + > /** > * _virDriver: > * > @@ -464,6 +468,7 @@ struct _virDriver { > virDrvDomainIsPersistent domainIsPersistent; > virDrvCPUCompare cpuCompare; > virDrvCPUBaseline cpuBaseline; > + virDrvDomainGetJobInfo domainGetJobInfo; > }; > > typedef int > diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c > index e125a09..226a6a0 100644 > --- a/src/esx/esx_driver.c > +++ b/src/esx/esx_driver.c > @@ -3404,6 +3404,7 @@ static virDriver esxDriver = { > esxDomainIsPersistent, /* domainIsPersistent */ > NULL, /* cpuCompare */ > NULL, /* cpuBaseline */ > + NULL, /* domainGetJobInfo */ > }; > > > diff --git a/src/libvirt.c b/src/libvirt.c > index 0e5f4a2..46e1221 100644 > --- a/src/libvirt.c > +++ b/src/libvirt.c > @@ -11147,3 +11147,51 @@ error: > virDispatchError(conn); > return NULL; > } > + > + > +/** > + * virDomainGetJobInfo: > + * @domain: a domain object > + * @info: pointer to a virDomainJobInfo structure allocated by the user > + * > + * Extract information about progress of a background job on a domain. > + * Will return an error if the domain is not active. > + * > + * Returns 0 in case of success and -1 in case of failure. > + */ > +int > +virDomainGetJobInfo(virDomainPtr domain, virDomainJobInfoPtr info) > +{ > + virConnectPtr conn; > + DEBUG("domain=%p, info=%p", domain, info); > + > + virResetLastError(); > + > + if (!VIR_IS_CONNECTED_DOMAIN(domain)) { > + virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); > + virDispatchError(NULL); > + return (-1); > + } > + if (info == NULL) { > + virLibDomainError(domain, VIR_ERR_INVALID_ARG, __FUNCTION__); > + goto error; > + } > + > + memset(info, 0, sizeof(virDomainJobInfo)); > + > + conn = domain->conn; > + > + if (conn->driver->domainGetJobInfo) { > + int ret; > + ret = conn->driver->domainGetJobInfo (domain, info); > + if (ret < 0) > + goto error; > + return ret; > + } > + > + virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); > + > +error: > + virDispatchError(domain->conn); > + return -1; > +} > diff --git a/src/libvirt_public.syms b/src/libvirt_public.syms > index 152aae4..6997b7b 100644 > --- a/src/libvirt_public.syms > +++ b/src/libvirt_public.syms > @@ -354,6 +354,7 @@ LIBVIRT_0.7.7 { > virDomainAttachDeviceFlags; > virDomainDetachDeviceFlags; > virConnectBaselineCPU; > + virDomainGetJobInfo; > } LIBVIRT_0.7.5; ACK, Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@xxxxxxxxxxxx | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/ -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list