This new API solves several problems:
- calling virDomainGetInfo for just getting domain status is an overkill since
it may result in sending requests to guest OS
- since virDomainGetInfo can hang when guest OS is not responding and it is
used by virsh list, listing domains can hang
- virDomainGetState provides additional info about what action led to domain's
current state, which can be used instead of listening to domain events
Version 2:
- rebased to current HEAD
- unsigned int flags parameter
- updated version info in public.syms
- noGetState renamed as useGetInfo in virsh.c
- simplified implementation in esx driver per Matthias' suggestion
- call internal xen drivers directly instead of going through xenUnifiedDriver
- fixed || vs && typo in domain_conf.c
- new patch 9/9: qemu: Update domain state when reconnecting monitor
Jiri Denemark (9):
virDomainGetState public API
Internal driver API for virDomainGetState
virDomainGetState public API implementation
Wire protocol format and dispatcher for virDomainGetState
virsh: Prefer virDomainGetState over virDomainGetInfo
remote: Implement virDomainGetState
Implement basic virDomainGetState in all drivers
Implement domain state reason
qemu: Update domain state when reconnecting monitor
daemon/remote.c | 33 +++++++
daemon/remote_generator.pl | 6 +-
include/libvirt/libvirt.h.in | 56 +++++++++++
python/generator.py | 1 +
python/libvirt-override-api.xml | 6 +
python/libvirt-override.c | 30 ++++++
src/conf/domain_conf.c | 163 +++++++++++++++++++++++++++++++-
src/conf/domain_conf.h | 26 +++++-
src/driver.h | 6 +
src/esx/esx_driver.c | 44 +++++++++
src/libvirt.c | 51 ++++++++++
src/libvirt_private.syms | 4 +
src/libvirt_public.syms | 5 +
src/libxl/libxl_driver.c | 80 ++++++++++++----
src/lxc/lxc_driver.c | 81 ++++++++++++----
src/openvz/openvz_conf.c | 16 ++-
src/openvz/openvz_driver.c | 57 +++++++++--
src/phyp/phyp_driver.c | 16 +++
src/qemu/qemu_driver.c | 95 ++++++++++++++-----
src/qemu/qemu_migration.c | 24 +++--
src/qemu/qemu_monitor.c | 20 ++++
src/qemu/qemu_monitor.h | 1 +
src/qemu/qemu_monitor_json.c | 42 +++++++++
src/qemu/qemu_monitor_json.h | 1 +
src/qemu/qemu_monitor_text.c | 30 ++++++
src/qemu/qemu_monitor_text.h | 1 +
src/qemu/qemu_process.c | 99 +++++++++++++++-----
src/qemu/qemu_process.h | 12 ++-
src/remote/remote_driver.c | 34 +++++++
src/remote/remote_protocol.x | 13 +++-
src/remote_protocol-structs | 8 ++
src/test/test_driver.c | 107 +++++++++++++++-------
src/uml/uml_driver.c | 58 ++++++++++--
src/vbox/vbox_tmpl.c | 60 ++++++++++++
src/vmware/vmware_conf.c | 3 +-
src/vmware/vmware_driver.c | 60 ++++++++++---
src/xen/xen_driver.c | 42 +++++++++
src/xen/xen_hypervisor.c | 36 +++++++
src/xen/xen_hypervisor.h | 5 +
src/xen/xend_internal.c | 99 +++++++++++++++-----
src/xen/xend_internal.h | 4 +
src/xen/xm_internal.c | 20 ++++
src/xen/xm_internal.h | 4 +
src/xen/xs_internal.c | 34 +++++++
src/xen/xs_internal.h | 4 +
src/xenapi/xenapi_driver.c | 49 ++++++++++
tools/virsh.c | 195 ++++++++++++++++++++++++++++++++-------
47 files changed, 1603 insertions(+), 238 deletions(-)
--
1.7.5.rc3