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

Peter Krempa pkrempa at redhat.com
Tue Feb 16 19:56:32 UTC 2021


On Tue, Feb 16, 2021 at 18:10:31 +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                       |  6 +++
>  src/qemu/qemu_validate.c                      | 21 ++++++++++
>  .../graphics-vnc-power.x86_64-latest.args     | 40 +++++++++++++++++++
>  tests/qemuxml2argvdata/graphics-vnc-power.xml | 36 +++++++++++++++++
>  tests/qemuxml2argvtest.c                      |  1 +
>  5 files changed, 104 insertions(+)
>  create mode 100644 tests/qemuxml2argvdata/graphics-vnc-power.x86_64-latest.args
>  create mode 100644 tests/qemuxml2argvdata/graphics-vnc-power.xml
> 
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index d801018aa2..7597ffafd1 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -7700,6 +7700,12 @@ qemuBuildGraphicsVNCCommandLine(virQEMUDriverConfigPtr cfg,
>          /* TODO: Support ACLs later */
>      }
>  
> +    if (graphics->data.vnc.powerControl != VIR_TRISTATE_BOOL_ABSENT) {
> +        virBufferAsprintf(&opt, ",power-control=%s",
> +                          graphics->data.vnc.powerControl == VIR_TRISTATE_BOOL_YES ?
> +                          "on" : "off");
> +    }
> +
>      virCommandAddArg(cmd, "-vnc");
>      virCommandAddArgBuffer(cmd, &opt);
>      if (graphics->data.vnc.keymap)
> diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c
> index 2541ae856a..2f98209470 100644
> --- a/src/qemu/qemu_validate.c
> +++ b/src/qemu/qemu_validate.c
> @@ -3939,7 +3939,22 @@ qemuValidateDomainDeviceDefSPICEGraphics(const virDomainGraphicsDef *graphics,
>      return 0;
>  }
>  
> +static int

Two empty lines between functions please.

> +qemuValidateDomainDeviceDefVNCGraphics(const virDomainGraphicsDef *graphics,
> +                                       virQEMUDriverPtr driver,
> +                                       virQEMUCapsPtr qemuCaps)
> +{
> +    g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);

clang says:

../../../libvirt/src/qemu/qemu_validate.c:3947:36: error: unused variable 'cfg' [-Werror,-Wunused-variable]
    g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
                                   ^
1 error generated.


> +
> +    if (graphics->data.vnc.powerControl != VIR_TRISTATE_BOOL_ABSENT &&
> +        !virQEMUCapsGet(qemuCaps, QEMU_CAPS_VNC_POWER_CONTROL)) {
> +        virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> +                       _("VNC power control is not available"));
> +        return -1;
> +    }
>  
> +    return 0;
> +}
>  static int

Here too.

>  qemuValidateDomainDeviceDefGraphics(const virDomainGraphicsDef *graphics,
>                                      const virDomainDef *def,
> @@ -4023,6 +4038,12 @@ qemuValidateDomainDeviceDefGraphics(const virDomainGraphicsDef *graphics,
>          break;
>  
>      case VIR_DOMAIN_GRAPHICS_TYPE_VNC:
> +        if (qemuValidateDomainDeviceDefVNCGraphics(graphics, driver,
> +                                                   qemuCaps) < 0)
> +            return -1;
> +
> +        break;
> +
>      case VIR_DOMAIN_GRAPHICS_TYPE_RDP:
>      case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP:
>      case VIR_DOMAIN_GRAPHICS_TYPE_LAST:




More information about the libvir-list mailing list