Re: [PATCH 16/26] src: add new APIs for marking a domain to autostart once

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Jan 08, 2025 at 19:42:49 +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     |  5 ++
>  tools/virsh-domain.c             | 39 ++++++++++----
>  10 files changed, 187 insertions(+), 12 deletions(-)

Don't forget to bump all the version tags to 11.1.0 ...

> diff --git a/src/libvirt_public.syms b/src/libvirt_public.syms
> index 7a3492d9d7..d01ac418d2 100644
> --- a/src/libvirt_public.syms
> +++ b/src/libvirt_public.syms
> @@ -948,4 +948,10 @@ LIBVIRT_10.2.0 {
>          virDomainGraphicsReload;
>  } LIBVIRT_10.1.0;
>  
> +LIBVIRT_11.0.0 {

Especially this one.

> +    global:
> +        virDomainGetAutostartOnce;
> +        virDomainSetAutostartOnce;
> +} LIBVIRT_10.2.0;
> +
>  # .... define new API here using predicted next version number ....

[...]

> diff --git a/tools/virsh-domain-monitor.c b/tools/virsh-domain-monitor.c
> index 9ee9090c11..fd5cc80ec2 100644
> --- a/tools/virsh-domain-monitor.c
> +++ b/tools/virsh-domain-monitor.c
> @@ -1236,6 +1236,11 @@ cmdDominfo(vshControl *ctl, const vshCmd *cmd)
>          vshPrint(ctl, "%-15s %s\n", _("Autostart:"),
>                   autostart ? _("enable") : _("disable"));
>      }
> +    /* Check and display whether the domain autostarts next boot or not */
> +    if (!virDomainGetAutostartOnce(dom, &autostart)) {
> +        vshPrint(ctl, "%-15s %s\n", _("Autostart Once:"),
> +                 autostart ? _("enable") : _("disable"));
> +    }

I'd also suggest reseting the last stored error as spurious
'unsupported' errors can arise when communincating with old daemon.

>  
>      has_managed_save = virDomainHasManagedSaveImage(dom, 0);
>      if (has_managed_save < 0)




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux