[libvirt PATCH 3/3] qemu: wire up support for VNC power control options

Peter Krempa pkrempa at redhat.com
Tue Feb 16 14:25:34 UTC 2021


On Tue, Feb 16, 2021 at 14:08:52 +0000, Daniel Berrange wrote:
> This allows the VNC client user to perform a shutdown, reboot and reset
> of the VM from the host side.
> 
> Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>
> ---
>  src/qemu/qemu_command.c                         | 9 +++++++++
>  tests/qemuxml2argvdata/graphics-vnc-policy.args | 2 +-
>  tests/qemuxml2argvdata/graphics-vnc-policy.xml  | 2 +-
>  tests/qemuxml2argvtest.c                        | 2 +-
>  4 files changed, 12 insertions(+), 3 deletions(-)
> 
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index d801018aa2..266cf7332e 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -7700,6 +7700,15 @@ qemuBuildGraphicsVNCCommandLine(virQEMUDriverConfigPtr cfg,
>          /* TODO: Support ACLs later */
>      }
>  
> +    if (graphics->data.vnc.powerControl) {
> +        if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_VNC_POWER_CONTROL)) {
> +            virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> +                           _("VNC power control is not available"));
> +            return -1;
> +        }

Invoking this check from qemuValidateDomainDeviceDefGraphics will give
you define-time check whether the VM supports this rather than
startup-time.

> +        virBufferAddLit(&opt, ",power-control=on");
> +    }

So we don't want to be able to explicitly turn this off?

> +
>      virCommandAddArg(cmd, "-vnc");
>      virCommandAddArgBuffer(cmd, &opt);
>      if (graphics->data.vnc.keymap)

[...]

> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
> index db438c5466..b4df042fea 100644
> --- a/tests/qemuxml2argvtest.c
> +++ b/tests/qemuxml2argvtest.c
> @@ -1364,7 +1364,7 @@ mymain(void)
>              QEMU_CAPS_VNC,
>              QEMU_CAPS_DEVICE_CIRRUS_VGA);
>      DO_TEST("graphics-vnc-policy", QEMU_CAPS_VNC,
> -            QEMU_CAPS_DEVICE_CIRRUS_VGA);
> +            QEMU_CAPS_DEVICE_CIRRUS_VGA, QEMU_CAPS_VNC_POWER_CONTROL);

Rather than adding the capability, either convert the test case to
DO_TEST_CAPS_LATEST or add a separate _LATEST() case for it.

>      DO_TEST("graphics-vnc-no-listen-attr", QEMU_CAPS_VNC,
>              QEMU_CAPS_DEVICE_CIRRUS_VGA);
>      DO_TEST("graphics-vnc-remove-generated-socket", QEMU_CAPS_VNC,
> -- 
> 2.29.2
> 




More information about the libvir-list mailing list