mirror of https://github.com/xemu-project/xemu.git
qmp: add new qmp display-reload
This patch provides a new qmp to reload display configuration without restart VM, but only reloading the vnc tls certificates is implemented. Example: {"execute": "display-reload", "arguments":{"type": "vnc", "tls-certs": true}} Signed-off-by: Zihao Chang <changzihao1@huawei.com> Message-Id: <20210316075845.1476-4-changzihao1@huawei.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
1f08e34151
commit
9cc0765165
|
@ -334,3 +334,20 @@ MemoryInfo *qmp_query_memory_size_summary(Error **errp)
|
||||||
|
|
||||||
return mem_info;
|
return mem_info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void qmp_display_reload(DisplayReloadOptions *arg, Error **errp)
|
||||||
|
{
|
||||||
|
switch (arg->type) {
|
||||||
|
case DISPLAY_RELOAD_TYPE_VNC:
|
||||||
|
#ifdef CONFIG_VNC
|
||||||
|
if (arg->u.vnc.has_tls_certs && arg->u.vnc.tls_certs) {
|
||||||
|
vnc_display_reload_certs(NULL, errp);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
error_setg(errp, "vnc is invalid, missing 'CONFIG_VNC'");
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
61
qapi/ui.json
61
qapi/ui.json
|
@ -1168,3 +1168,64 @@
|
||||||
##
|
##
|
||||||
{ 'command': 'query-display-options',
|
{ 'command': 'query-display-options',
|
||||||
'returns': 'DisplayOptions' }
|
'returns': 'DisplayOptions' }
|
||||||
|
|
||||||
|
##
|
||||||
|
# @DisplayReloadType:
|
||||||
|
#
|
||||||
|
# Available DisplayReload types.
|
||||||
|
#
|
||||||
|
# @vnc: VNC display
|
||||||
|
#
|
||||||
|
# Since: 6.0
|
||||||
|
#
|
||||||
|
##
|
||||||
|
{ 'enum': 'DisplayReloadType',
|
||||||
|
'data': ['vnc'] }
|
||||||
|
|
||||||
|
##
|
||||||
|
# @DisplayReloadOptionsVNC:
|
||||||
|
#
|
||||||
|
# Specify the VNC reload options.
|
||||||
|
#
|
||||||
|
# @tls-certs: reload tls certs or not.
|
||||||
|
#
|
||||||
|
# Since: 6.0
|
||||||
|
#
|
||||||
|
##
|
||||||
|
{ 'struct': 'DisplayReloadOptionsVNC',
|
||||||
|
'data': { '*tls-certs': 'bool' } }
|
||||||
|
|
||||||
|
##
|
||||||
|
# @DisplayReloadOptions:
|
||||||
|
#
|
||||||
|
# Options of the display configuration reload.
|
||||||
|
#
|
||||||
|
# @type: Specify the display type.
|
||||||
|
#
|
||||||
|
# Since: 6.0
|
||||||
|
#
|
||||||
|
##
|
||||||
|
{ 'union': 'DisplayReloadOptions',
|
||||||
|
'base': {'type': 'DisplayReloadType'},
|
||||||
|
'discriminator': 'type',
|
||||||
|
'data': { 'vnc': 'DisplayReloadOptionsVNC' } }
|
||||||
|
|
||||||
|
##
|
||||||
|
# @display-reload:
|
||||||
|
#
|
||||||
|
# Reload display configuration.
|
||||||
|
#
|
||||||
|
# Returns: Nothing on success.
|
||||||
|
#
|
||||||
|
# Since: 6.0
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
#
|
||||||
|
# -> { "execute": "display-reload",
|
||||||
|
# "arguments": { "type": "vnc", "tls-certs": true } }
|
||||||
|
# <- { "return": {} }
|
||||||
|
#
|
||||||
|
##
|
||||||
|
{ 'command': 'display-reload',
|
||||||
|
'data': 'DisplayReloadOptions',
|
||||||
|
'boxed' : true }
|
||||||
|
|
Loading…
Reference in New Issue