[libvirt] [PATCH 0/9] virDomain{Attach,Detach}DeviceFlags patches

Jim Fehlig jfehlig at novell.com
Thu Jan 14 17:42:37 UTC 2010


This set implements two new APIs, virDomainAttachDeviceFlags and
virDomainDetachDeviceFlags as discussed here

https://www.redhat.com/archives/libvir-list/2009-December/msg00124.html

Introduce two new APIs

virDomainAttachDeviceFlags(virDomainPtr dom, const char *xml,
                           unsigned flags)
virDomainDetachDeviceFlags(virDomainPtr dom, const char *xml,
                           unsigned flags)

with flags being one or more from VIR_DOMAIN_DEVICE_MODIFY_CURRENT,
VIR_DOMAIN_DEVICE_MODIFY_LIVE, VIR_DOMAIN_DEVICE_MODIFY_CONFIG.

If caller specifies CURRENT (default), add or remove the device
depending on the current state of domain.  E.g. if domain is active add
or remove the device to/from live domain, if it is inactive change the
persistent config.  If caller specifies LIVE, only change the active
domain.  If caller specifies CONFIG, only change persistent config -
even if the domain is active.  If caller specifies both LIVE and CONFIG,
then change both.

If a driver can not satisfy the exact requested flags it must return
an error.  E.g if user specified LIVE but the driver can only change
live and persisted config, the driver must fail the request.

The existing virDomain{Attach,Detach}Device is now explicitly restricted
to active domains and is equivalent to
virDomain{Attach,Detach}DeviceFlags(LIVE).

Finally, virsh {attach,detach}-{disk,interface,device} has been modified
to add a --persistent flag in order to set the appropriate flags when
calling the new APIs.


Jim Fehlig (9):
  Restrict virDomain{Attach,Detach}Device to active domains
  Public API
  Internal API
  Public API Implementation
  Wire protocol format
  Remote driver
  Server side dispatcher
  domain{Attach,Detach}DeviceFlags handler for drivers
  Modify virsh commands

 daemon/remote.c              |   53 ++++++++++++++++++
 include/libvirt/libvirt.h.in |   13 +++++
 src/driver.h                 |   10 ++++
 src/esx/esx_driver.c         |    2 +
 src/libvirt.c                |  120 ++++++++++++++++++++++++++++++++++++++----
 src/libvirt_public.syms      |    6 ++
 src/lxc/lxc_driver.c         |    2 +
 src/opennebula/one_driver.c  |    2 +
 src/openvz/openvz_driver.c   |    2 +
 src/phyp/phyp_driver.c       |    2 +
 src/qemu/qemu_driver.c       |   26 +++++++++
 src/remote/remote_driver.c   |   54 +++++++++++++++++++
 src/remote/remote_protocol.x |   17 ++++++-
 src/test/test_driver.c       |    2 +
 src/uml/uml_driver.c         |    2 +
 src/vbox/vbox_tmpl.c         |   24 ++++++++
 src/xen/proxy_internal.c     |    4 +-
 src/xen/xen_driver.c         |   42 +++++++++++++--
 src/xen/xen_driver.h         |    4 +-
 src/xen/xen_hypervisor.c     |    4 +-
 src/xen/xen_inotify.c        |    4 +-
 src/xen/xend_internal.c      |   98 ++++++++++++++++++++++++++++------
 src/xen/xm_internal.c        |   30 +++++++----
 src/xen/xs_internal.c        |    4 +-
 tools/virsh.c                |   55 +++++++++++++++++--
 25 files changed, 523 insertions(+), 59 deletions(-)




More information about the libvir-list mailing list