[libvirt PATCH 1/3] conf: add support for VNC power control setting
Peter Krempa
pkrempa at redhat.com
Tue Feb 16 14:23:32 UTC 2021
On Tue, Feb 16, 2021 at 14:08:50 +0000, Daniel Berrange wrote:
> The <graphics type="vnc" .... powerControl="on"/> option instructs the
> VNC server to enable an extension that lets the client perform a
> graceful shutdown, reboot and hard reset.
>
> This is enabled by default since it cannot be assumed that the VNC
> client user has administrator rights over the guest OS. In the case
> where the VNC user is a guest administrator though, it is reasonable
> to allow direct power control host side too.
>
> Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>
> ---
> docs/formatdomain.rst | 5 +++++
> docs/schemas/domaincommon.rng | 5 +++++
> src/conf/domain_conf.c | 12 ++++++++++++
> src/conf/domain_conf.h | 1 +
> 4 files changed, 23 insertions(+)
[...]
A XML2XML test case would show that 'no' is useless in this impl, see
below.
> diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
> index 930eed60de..544ec1b2fa 100644
> --- a/src/conf/domain_conf.h
> +++ b/src/conf/domain_conf.h
> @@ -1712,6 +1712,7 @@ struct _virDomainGraphicsDef {
> char *keymap;
> virDomainGraphicsAuthDef auth;
> int sharePolicy;
> + bool powerControl;
This is declared as bool.
> } vnc;
> struct {
> char *display;
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index b731744f04..91933bf292 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
[...]
> @@ -13206,6 +13207,13 @@ virDomainGraphicsDefParseXMLVNC(virDomainGraphicsDefPtr def,
> }
> }
>
> + if (powerControl &&
> + virStringParseYesNo(powerControl, &def->data.vnc.powerControl) < 0) {
> + virReportError(VIR_ERR_INTERNAL_ERROR,
> + _("cannot parse vnc power control '%s'"), powerControl);
> + return -1;
> + }
> +
> def->data.vnc.keymap = virXMLPropString(node, "keymap");
>
> if (virDomainGraphicsAuthDefParseXML(node, &def->data.vnc.auth,
> @@ -27148,6 +27156,10 @@ virDomainGraphicsDefFormat(virBufferPtr buf,
> virDomainGraphicsVNCSharePolicyTypeToString(
> def->data.vnc.sharePolicy));
>
> + if (def->data.vnc.powerControl)
> + virBufferAsprintf(buf, " powerControl='%s'",
> + def->data.vnc.powerControl ? "yes" : "no");
So this doesn't make much sense. You can't use 'no' since it will vanish
from the XML.
Did you want to use a Tristate?
> +
> virDomainGraphicsAuthDefFormatAttr(buf, &def->data.vnc.auth, flags);
> break;
>
> --
> 2.29.2
>
More information about the libvir-list
mailing list