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} };