Daniel P. Berrange wrote: > On Tue, Jan 19, 2010 at 07:40:14PM +0000, Daniel P. Berrange wrote: > >> On Thu, Jan 14, 2010 at 10:42:41AM -0700, Jim Fehlig wrote: >> >>> Implementation of public API for virDomain{Attach,Detach}DeviceFlags. >>> --- >>> src/libvirt.c | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++---- >>> 1 files changed, 98 insertions(+), 8 deletions(-) >>> >>> diff --git a/src/libvirt.c b/src/libvirt.c >>> index 1145561..77f76bc 100644 >>> --- a/src/libvirt.c >>> +++ b/src/libvirt.c >>> @@ -5129,7 +5129,6 @@ error: >>> int >>> virDomainAttachDevice(virDomainPtr domain, const char *xml) >>> { >>> - virConnectPtr conn; >>> DEBUG("domain=%p, xml=%s", domain, xml); >>> >>> virResetLastError(); >>> @@ -5147,17 +5146,63 @@ virDomainAttachDevice(virDomainPtr domain, const char *xml) >>> virLibDomainError(domain, VIR_ERR_OPERATION_INVALID, __FUNCTION__); >>> goto error; >>> } >>> + >>> + return virDomainAttachDeviceFlags(domain, xml, >>> + VIR_DOMAIN_DEVICE_MODIFY_LIVE); >>> + >>> +error: >>> + virDispatchError(domain->conn); >>> + return -1; >>> +} >>> >> This looks safe, but there's a subtle problem with changing the existing >> virDomainAttachDevice() entry point to call virDomainAttachDeviceFlags(). >> It will break compatability with old libvirtd, even though the old >> libvirtd supports the virDomainAttachDevice() code. Ah, yes - good catch. Thanks. >> So we need to keep >> the distinct paths in the public API & driver definitions. The eventual >> low level hypervisor drivers can of course just turn their existing >> impl into a thin wrapper to the new method.. >> > > There's one other option actually - we could put compatability code in > the remote driver client instead. Either, make it always invoke the old > RPC call if flags == VIR_DOMAIN_DEVICE_MODIFY_LIVE, or have it invoke > the new RPC call & fallback to the old RPC call if it gets an error > indicating the new one doesn't exist. > Do you prefer the latter option? After a quick look, I didn't spot any existing compatibility code in the remote driver client. The first option might be slightly better wrt maintenance. Thanks, Jim -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list