[libvirt] [PATCH 8/9] util: storage: Always deflatten JSON pseudo-protocol objects

Peter Krempa pkrempa at redhat.com
Tue Jun 27 12:46:49 UTC 2017


Now that the JSON deflattener is working sanely we can always attempt
the deflattening so that we can then parse the tree as expected.
---
 src/util/virstoragefile.c | 22 ++++++++++------------
 1 file changed, 10 insertions(+), 12 deletions(-)

diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
index d24502fbf..f3dc860ae 100644
--- a/src/util/virstoragefile.c
+++ b/src/util/virstoragefile.c
@@ -3249,24 +3249,22 @@ static int
 virStorageSourceParseBackingJSONInternal(virStorageSourcePtr src,
                                          virJSONValuePtr json)
 {
-    virJSONValuePtr fixedroot = NULL;
+    virJSONValuePtr deflattened = NULL;
     virJSONValuePtr file;
     const char *drvname;
     char *str = NULL;
     size_t i;
     int ret = -1;

-    if (!(file = virJSONValueObjectGetObject(json, "file"))) {
-        if (!(fixedroot = virJSONValueObjectDeflatten(json)))
-            goto cleanup;
+    if (!(deflattened = virJSONValueObjectDeflatten(json)))
+        goto cleanup;

-        if (!(file = virJSONValueObjectGetObject(fixedroot, "file"))) {
-            str = virJSONValueToString(json, false);
-            virReportError(VIR_ERR_INVALID_ARG,
-                _("JSON backing volume defintion '%s' lacks 'file' object"),
-                str);
-            goto cleanup;
-        }
+    if (!(file = virJSONValueObjectGetObject(deflattened, "file"))) {
+        str = virJSONValueToString(json, false);
+        virReportError(VIR_ERR_INVALID_ARG,
+            _("JSON backing volume defintion '%s' lacks 'file' object"),
+            str);
+        goto cleanup;
     }

     if (!(drvname = virJSONValueObjectGetString(file, "driver"))) {
@@ -3290,7 +3288,7 @@ virStorageSourceParseBackingJSONInternal(virStorageSourcePtr src,

  cleanup:
     VIR_FREE(str);
-    virJSONValueFree(fixedroot);
+    virJSONValueFree(deflattened);
     return ret;
 }

-- 
2.12.2




More information about the libvir-list mailing list