From c9caf53d9b1b3fe7e22b6aabcc8684d8f513b080 Mon Sep 17 00:00:00 2001 From: Zheng Yan Date: Tue, 11 May 2021 22:05:21 +0800 Subject: [PATCH] virsh: Introduce domdisplay-reload command MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Introduce the domdisplay-reload command to make the domain reload its graphics certificates #virsh domdisplay-reload --type Signed-off-by: Zheng Yan Signed-off-by: Ján Tomko Reviewed-by: Michal Privoznik --- docs/manpages/virsh.rst | 15 ++++++++++++++ tools/virsh-domain.c | 45 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst index 8224aec8c3..115b802c45 100644 --- a/docs/manpages/virsh.rst +++ b/docs/manpages/virsh.rst @@ -1783,6 +1783,21 @@ included in the URI. If *--all* is specified, then all show all possible graphical displays, for a VM could have more than one graphical displays. +domdisplay-reload +----------------- + +**Syntax:** + +:: + + domdisplay-reload [[--type] ] + +Reload the domain's graphical display. This reloads its TLS certificates +without restarting the domain. ``type`` can be any constant from the +`virDomainGraphicsReloadType` enum. By default any supported type is reloaded +(so far only VNC). + + domfsfreeze ----------- diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index e69d14a6aa..d3e28f38f4 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -13801,6 +13801,45 @@ cmdDomDirtyRateCalc(vshControl *ctl, const vshCmd *cmd) return true; } +/** + * "domdisplay-reload" command + */ +static const vshCmdInfo info_domdisplay_reload[] = { + {.name = "help", + .data = N_("Reload domain's graphics display certificates") + }, + {.name = "desc", + .data = N_("Reload domain's graphics display certificates") + }, + {.name = NULL} +}; + +static const vshCmdOptDef opts_domdisplay_reload[] = { + VIRSH_COMMON_OPT_DOMAIN_FULL(0), + {.name = "type", + .type = VSH_OT_INT, + .help = N_("graphics display type") + }, + {.name = NULL} +}; + +static bool +cmdDomdisplayReload(vshControl *ctl, const vshCmd *cmd) +{ + g_autoptr(virshDomain) dom = NULL; + unsigned int type = 0; + + if (!(dom = virshCommandOptDomain(ctl, cmd, NULL))) + return false; + + if (vshCommandOptUInt(ctl, cmd, "type", &type) < 0) + return false; + + if (virDomainGraphicsReload(dom, type, 0) < 0) + return false; + + return true; +} const vshCmdDef domManagementCmds[] = { {.name = "attach-device", @@ -14465,5 +14504,11 @@ const vshCmdDef domManagementCmds[] = { .info = info_dom_fd_associate, .flags = 0 }, + {.name = "domdisplay-reload", + .handler = cmdDomdisplayReload, + .opts = opts_domdisplay_reload, + .info = info_domdisplay_reload, + .flags = 0 + }, {.name = NULL} };