[PATCH 0/3] qemu: support some missing params on live attaching chardev

Specifying chardev logfile and file backend append param is ignored yet. Nikolay Shirokovskiy (3): util: add virJSONValueObjectAppendBooleanTristate qemu: support append param on live attaching file chardev qemu: support logfile on live attaching chardev src/libvirt_private.syms | 1 + src/qemu/qemu_monitor_json.c | 12 ++++++++++++ src/util/virjson.c | 25 +++++++++++++++++++++++++ src/util/virjson.h | 1 + 4 files changed, 39 insertions(+) -- 1.8.3.1

It appends boolean from virTristateBool/virTristateSwitch value. Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com> --- src/libvirt_private.syms | 1 + src/util/virjson.c | 25 +++++++++++++++++++++++++ src/util/virjson.h | 1 + 3 files changed, 27 insertions(+) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 179dcec..f7f133c 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -2386,6 +2386,7 @@ virJSONValueObjectAdd; virJSONValueObjectAddVArgs; virJSONValueObjectAppend; virJSONValueObjectAppendBoolean; +virJSONValueObjectAppendBooleanTristate; virJSONValueObjectAppendNull; virJSONValueObjectAppendNumberDouble; virJSONValueObjectAppendNumberInt; diff --git a/src/util/virjson.c b/src/util/virjson.c index 4f92464..78ddc4b 100644 --- a/src/util/virjson.c +++ b/src/util/virjson.c @@ -767,6 +767,31 @@ virJSONValueObjectAppendBoolean(virJSONValuePtr object, int +virJSONValueObjectAppendBooleanTristate(virJSONValuePtr object, + const char *key, + int value) +{ + g_autoptr(virJSONValue) jvalue = NULL; + int v; + + if (value == VIR_TRISTATE_SWITCH_ABSENT) + return 0; + + if (value == VIR_TRISTATE_SWITCH_OFF) + v = 0; + else + v = 1; + + jvalue = virJSONValueNewBoolean(v); + if (virJSONValueObjectAppend(object, key, jvalue) < 0) + return -1; + jvalue = NULL; + + return 0; +} + + +int virJSONValueObjectAppendNull(virJSONValuePtr object, const char *key) { diff --git a/src/util/virjson.h b/src/util/virjson.h index 4dc7ed1..aa4ae82 100644 --- a/src/util/virjson.h +++ b/src/util/virjson.h @@ -137,6 +137,7 @@ int virJSONValueObjectAppendNumberLong(virJSONValuePtr object, const char *key, int virJSONValueObjectAppendNumberUlong(virJSONValuePtr object, const char *key, unsigned long long number); int virJSONValueObjectAppendNumberDouble(virJSONValuePtr object, const char *key, double number); int virJSONValueObjectAppendBoolean(virJSONValuePtr object, const char *key, int boolean); +int virJSONValueObjectAppendBooleanTristate(virJSONValuePtr object, const char *key, int value); int virJSONValueObjectAppendNull(virJSONValuePtr object, const char *key); int virJSONValueObjectRemoveKey(virJSONValuePtr object, const char *key, -- 1.8.3.1

Currently it is simply ignored. Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com> --- src/qemu/qemu_monitor_json.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 47ee1ff..df95a4a 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -7497,6 +7497,9 @@ qemuMonitorJSONAttachCharDevCommand(const char *chrID, backend_type = "file"; if (virJSONValueObjectAppendString(data, "out", chr->data.file.path) < 0) goto cleanup; + if (virJSONValueObjectAppendBooleanTristate(data, "append", + chr->data.file.append) < 0) + goto cleanup; break; case VIR_DOMAIN_CHR_TYPE_DEV: -- 1.8.3.1

On Wed, Dec 02, 2020 at 14:55:08 +0300, Nikolay Shirokovskiy wrote:
Currently it is simply ignored.
Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com> --- src/qemu/qemu_monitor_json.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 47ee1ff..df95a4a 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -7497,6 +7497,9 @@ qemuMonitorJSONAttachCharDevCommand(const char *chrID, backend_type = "file"; if (virJSONValueObjectAppendString(data, "out", chr->data.file.path) < 0) goto cleanup; + if (virJSONValueObjectAppendBooleanTristate(data, "append", + chr->data.file.append) < 0) + goto cleanup;
You can use: if (virJSONValueObjectAdd(data, "T:append", chr->data.file.append, NULL) < 0) goto cleanup; instead of adding the new function at all.

Currently it is simply ignored. Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com> --- src/qemu/qemu_monitor_json.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index df95a4a..6e96232 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -7610,6 +7610,15 @@ qemuMonitorJSONAttachCharDevCommand(const char *chrID, goto cleanup; } + if (chr->logfile) { + if (virJSONValueObjectAppendString(data, "logfile", + chr->logfile) < 0) + goto cleanup; + if (virJSONValueObjectAppendBooleanTristate(data, "logappend", + chr->logappend) < 0) + goto cleanup; + } + if (virJSONValueObjectAppendString(backend, "type", backend_type) < 0 || virJSONValueObjectAppend(backend, "data", data) < 0) goto cleanup; -- 1.8.3.1
participants (2)
-
Nikolay Shirokovskiy
-
Peter Krempa