Add support for `writeconfig' command for QMP monitor. This is a simple way to keep track of current state of VM after series of hotplugs and/or hotunplugs of different devices.
Signed-off-by: Vadim Galitsyn <vadim.galit...@profitbricks.com> Signed-off-by: Eduardo Otubo <eduardo.ot...@profitbricks.com> Cc: Markus Armbruster <arm...@redhat.com> Cc: Eric Blake <ebl...@redhat.com> Cc: qemu-devel@nongnu.org --- qapi-schema.json | 18 ++++++++++++++++++ qmp.c | 21 +++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/qapi-schema.json b/qapi-schema.json index a9dd043f65..083f8f3258 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -3200,3 +3200,21 @@ # Since: 2.11 ## { 'command': 'watchdog-set-action', 'data' : {'action': 'WatchdogAction'} } + +## +# @writeconfig: +# +# Dump current configuration into specified file +# +# @file: pathname of a file to store current configuration +# +# Since: 2.11 +# +# Example: +# +# -> { "execute": "writeconfig", +# "arguments": { "file": "/tmp/qemu.conf" } } +# <- { "return": {} } +# +## +{ 'command': 'writeconfig', 'data': {'file': 'str'} } diff --git a/qmp.c b/qmp.c index e8c303116a..fcb911cabb 100644 --- a/qmp.c +++ b/qmp.c @@ -722,3 +722,24 @@ MemoryInfo *qmp_query_memory_size_summary(Error **errp) return mem_info; } + +void qmp_writeconfig(const char *file, Error **errp) +{ + int fd; + FILE *fp; + + fd = qemu_open(file, O_WRONLY | O_CREAT | O_TRUNC, 0600); + if (fd != -1) { + + fp = fdopen(fd, "wb"); + if (fp) { + qemu_config_write(fp); + fclose(fp); + return; + } + + qemu_close(fd); + } + + error_setg(errp, "cannot write configuration file: '%s'", file); +} -- 2.13.1.394.g41dd433