
If desired, a later patch can add hooks (either a new XML element, or a new command comparable to autostart that can toggle the state of a hidden field associated with domains) so that virDomainCreate() can also be used to start a paused domain, but that will be more invasive.
IMHO we really need to make this work for both APIs. The fact that VDSM only uses virDomainCreateXML is an application specific use case & not something we should be relying on. Since the virDomainCreate() API lacks a flags parameter, we need to define a new API virDomainCreateFlags() which it adds it. That lets us get parity of functionality between transient and persistent guests.
This series looks ok, but I'd like the other API implemented before we commit this.
Here we go - my first attempt at an API addition patch. More comments in some of the various patches. Also, note that I'm including a 6/5 for any discussion, but which should not be considered part of the series to be pushed. Eric Blake (6): libvirt: introduce domainCreateWithFlags API remote: protocol implementation for virDomainCreateWithFlags drivers: add virDomainCreateWithFlags if virDomainCreate exists qemu: support starting persistent domain paused virsh: add start --paused support [DON'T APPLY] remote: optimize remoteDomainCreate daemon/remote.c | 27 ++++++++++++++++++ daemon/remote_dispatch_args.h | 1 + daemon/remote_dispatch_prototypes.h | 8 +++++ daemon/remote_dispatch_ret.h | 1 + daemon/remote_dispatch_table.h | 5 +++ include/libvirt/libvirt.h.in | 2 + src/driver.h | 6 +++- src/esx/esx_driver.c | 11 ++++++- src/libvirt.c | 45 +++++++++++++++++++++++++++++- src/libvirt_public.syms | 6 ++++ src/lxc/lxc_driver.c | 21 ++++++++++++- src/opennebula/one_driver.c | 10 ++++++- src/openvz/openvz_driver.c | 11 ++++++- src/phyp/phyp_driver.c | 1 + src/qemu/qemu_driver.c | 26 +++++++++++++---- src/remote/remote_driver.c | 53 +++++++++++++++++++++++++++++++++++ src/remote/remote_protocol.c | 20 +++++++++++++ src/remote/remote_protocol.h | 16 ++++++++++ src/remote/remote_protocol.x | 14 ++++++++- src/remote_protocol-structs | 7 ++++ src/test/test_driver.c | 9 +++++- src/uml/uml_driver.c | 8 ++++- src/vbox/vbox_tmpl.c | 9 +++++- src/xen/xen_driver.c | 11 ++++++- src/xenapi/xenapi_driver.c | 20 ++++++++++++- tools/virsh.c | 9 +++++- tools/virsh.pod | 7 +++- 27 files changed, 339 insertions(+), 25 deletions(-)