]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemuBuildMemballoonCommandLine: Generate via JSON
authorPeter Krempa <pkrempa@redhat.com>
Thu, 30 Sep 2021 15:55:49 +0000 (17:55 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 12 Oct 2021 08:26:03 +0000 (10:26 +0200)
The generated properties have the following types according to QEMU:
  deflate-on-oom=<bool>  - on/off (default: false)
  free-page-reporting=<bool> - on/off (default: false)

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_command.c

index b468297249a31d59fbe467ac32c6f1c008e8b772..d7dcdcf008601d3d062fc6f43a18c618ec572eed 100644 (file)
@@ -4220,36 +4220,35 @@ qemuBuildMemballoonCommandLine(virCommand *cmd,
                                const virDomainDef *def,
                                virQEMUCaps *qemuCaps)
 {
-    g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
+    g_autoptr(virJSONValue) props = NULL;
 
     if (!virDomainDefHasMemballoon(def))
         return 0;
 
-    if (qemuBuildVirtioDevStr(&buf, qemuCaps,
-                              VIR_DOMAIN_DEVICE_MEMBALLOON,
-                              def->memballoon) < 0) {
+    if (!(props = qemuBuildVirtioDevProps(VIR_DOMAIN_DEVICE_MEMBALLOON,
+                                          def->memballoon, qemuCaps)))
         return -1;
-    }
 
-    virBufferAsprintf(&buf, ",id=%s", def->memballoon->info.alias);
-    if (qemuBuildDeviceAddressStr(&buf, def, &def->memballoon->info) < 0)
+    if (virJSONValueObjectAdd(props,
+                              "s:id", def->memballoon->info.alias,
+                              NULL) < 0)
         return -1;
 
-    if (def->memballoon->autodeflate != VIR_TRISTATE_SWITCH_ABSENT) {
-        virBufferAsprintf(&buf, ",deflate-on-oom=%s",
-                          virTristateSwitchTypeToString(def->memballoon->autodeflate));
-    }
+    if (qemuBuildDeviceAddressProps(props, def, &def->memballoon->info) < 0)
+        return -1;
 
-    if (def->memballoon->free_page_reporting != VIR_TRISTATE_SWITCH_ABSENT) {
-        virBufferAsprintf(&buf, ",free-page-reporting=%s",
-                          virTristateSwitchTypeToString(def->memballoon->free_page_reporting));
-    }
+    if (virJSONValueObjectAdd(props,
+                              "T:deflate-on-oom", def->memballoon->autodeflate,
+                              "T:free-page-reporting", def->memballoon->free_page_reporting,
+                              NULL) < 0)
+        return -1;
 
     if (qemuCommandAddExtDevice(cmd, &def->memballoon->info) < 0)
         return -1;
 
-    virCommandAddArg(cmd, "-device");
-    virCommandAddArgBuffer(cmd, &buf);
+    if (qemuBuildDeviceCommandlineFromJSON(cmd, props, qemuCaps) < 0)
+        return -1;
+
     return 0;
 }