On Wed, Mar 12, 2025 at 17:17:50 +0000, Daniel P. Berrangé wrote: > When a domain is marked for autostart, it will be started on every > subsequent host OS boot. There may be times when it is desirable to > mark a domain to be autostarted, on the next boot only. > > Thus we add virDomainSetAutostartOnce / virDomainGetAutostartOnce. > > An alternative would have been to overload the existing > virDomainSetAutostart method, to accept values '1' or '2' for > the autostart flag. This was not done because it is expected > that language bindings will have mapped the current autostart > flag to a boolean, and thus turning it into an enum would create > a compatibility problem. > > A further alternative would have been to create a new method > virDomainSetAutostartFlags, with a VIR_DOMAIN_AUTOSTART_ONCE > flag defined. This was not done because it is felt desirable > to clearly separate the two flags. Setting the "once" flag > should not interfere with existing autostart setting, whether > it is enabled or disabled currently. > > The 'virsh autostart' command, however, is still overloaded > by just adding a --once flag, while current state is added > to 'virsh dominfo'. > > No ability to filter by 'autostart once' status is added to > the domain list APIs. The most common use of autostart once > will be to automatically set it on host shutdown, and it be > cleared on host startup. Thus there would rarely be scenarios > in which a running app will need to filter on this new flag. > > Signed-off-by: Daniel P. Berrangé <berrange@xxxxxxxxxx> > --- > include/libvirt/libvirt-domain.h | 4 ++ > src/driver-hypervisor.h | 10 ++++ > src/libvirt-domain.c | 87 ++++++++++++++++++++++++++++++++ > src/libvirt_public.syms | 6 +++ > src/remote/remote_driver.c | 2 + > src/remote/remote_protocol.x | 30 ++++++++++- > src/remote_protocol-structs | 12 +++++ > src/rpc/gendispatch.pl | 4 +- > tools/virsh-domain-monitor.c | 7 +++ > tools/virsh-domain.c | 39 ++++++++++---- > 10 files changed, 189 insertions(+), 12 deletions(-) Reviewed-by: Peter Krempa <pkrempa@xxxxxxxxxx>