[libvirt] [PATCH 05/13] util: qemu: Introduce helper for formatting command line from new object props

Peter Krempa posted 13 patches 6 years, 11 months ago
[libvirt] [PATCH 05/13] util: qemu: Introduce helper for formatting command line from new object props
Posted by Peter Krempa 6 years, 11 months ago
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
---
 src/libvirt_private.syms |  1 +
 src/util/virqemu.c       | 40 ++++++++++++++++++++++++++++++++++++----
 src/util/virqemu.h       |  3 +++
 3 files changed, 40 insertions(+), 4 deletions(-)

diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index e2a9916326..37922f8c84 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -2599,6 +2599,7 @@ virQEMUBuildCommandLineJSON;
 virQEMUBuildCommandLineJSONArrayBitmap;
 virQEMUBuildCommandLineJSONArrayNumbered;
 virQEMUBuildDriveCommandlineFromJSON;
+virQEMUBuildObjectCommandlineFromJSON;
 virQEMUBuildObjectCommandlineFromJSONType;
 virQEMUBuildQemuImgKeySecretOpts;

diff --git a/src/util/virqemu.c b/src/util/virqemu.c
index fc4727e126..1390b68b86 100644
--- a/src/util/virqemu.c
+++ b/src/util/virqemu.c
@@ -241,6 +241,29 @@ virQEMUBuildCommandLineJSON(virJSONValuePtr value,
 }


+static int
+virQEMUBuildObjectCommandlineFromJSONInternal(virBufferPtr buf,
+                                              const char *type,
+                                              const char *alias,
+                                              virJSONValuePtr props)
+{
+    if (!type || !alias) {
+        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+                       _("missing 'type' or 'alias' field of QOM 'object'"));
+        return -1;
+    }
+
+    virBufferAsprintf(buf, "%s,id=%s,", type, alias);
+
+    if (props &&
+        virQEMUBuildCommandLineJSON(props, buf,
+                                    virQEMUBuildCommandLineJSONArrayBitmap) < 0)
+        return -1;
+
+    return 0;
+}
+
+
 char *
 virQEMUBuildObjectCommandlineFromJSONType(const char *type,
                                           const char *alias,
@@ -249,10 +272,7 @@ virQEMUBuildObjectCommandlineFromJSONType(const char *type,
     virBuffer buf = VIR_BUFFER_INITIALIZER;
     char *ret = NULL;

-    virBufferAsprintf(&buf, "%s,id=%s,", type, alias);
-
-    if (virQEMUBuildCommandLineJSON(props, &buf,
-                                    virQEMUBuildCommandLineJSONArrayBitmap) < 0)
+    if (virQEMUBuildObjectCommandlineFromJSONInternal(&buf, type, alias, props) < 0)
         goto cleanup;

     if (virBufferCheckError(&buf) < 0)
@@ -266,6 +286,18 @@ virQEMUBuildObjectCommandlineFromJSONType(const char *type,
 }


+int
+virQEMUBuildObjectCommandlineFromJSON(virBufferPtr buf,
+                                      virJSONValuePtr objprops)
+{
+    const char *type = virJSONValueObjectGetString(objprops, "qom-type");
+    const char *alias = virJSONValueObjectGetString(objprops, "id");
+    virJSONValuePtr props = virJSONValueObjectGetObject(objprops, "props");
+
+    return virQEMUBuildObjectCommandlineFromJSONInternal(buf, type, alias, props);
+}
+
+
 char *
 virQEMUBuildDriveCommandlineFromJSON(virJSONValuePtr srcdef)
 {
diff --git a/src/util/virqemu.h b/src/util/virqemu.h
index 0ef8e8d31d..0a4f4468f2 100644
--- a/src/util/virqemu.h
+++ b/src/util/virqemu.h
@@ -47,6 +47,9 @@ char *virQEMUBuildObjectCommandlineFromJSONType(const char *type,
                                                 const char *alias,
                                                 virJSONValuePtr props);

+int virQEMUBuildObjectCommandlineFromJSON(virBufferPtr buf,
+                                          virJSONValuePtr objprops);
+
 char *virQEMUBuildDriveCommandlineFromJSON(virJSONValuePtr src);

 void virQEMUBuildBufferEscapeComma(virBufferPtr buf, const char *str);
-- 
2.16.2

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH 05/13] util: qemu: Introduce helper for formatting command line from new object props
Posted by Ján Tomko 6 years, 11 months ago
On Wed, May 30, 2018 at 07:06:29PM +0200, Peter Krempa wrote:
>Signed-off-by: Peter Krempa <pkrempa@redhat.com>
>---
> src/libvirt_private.syms |  1 +
> src/util/virqemu.c       | 40 ++++++++++++++++++++++++++++++++++++----
> src/util/virqemu.h       |  3 +++
> 3 files changed, 40 insertions(+), 4 deletions(-)
>

Reviewed-by: Ján Tomko <jtomko@redhat.com>

Jano
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list