In qemu's new syntax starting from 2.9 it's possible to have nested objects in the json pseudo protocol string specifying a backing store for an image. Libvirt would not be able to handle some of them, since the json deflattener was meant to deflatten only 1 layer. Peter Krempa (9): tests: Rename jsontest to virjsontest util: json: Add virJSONValueIsObject util: Move JSON object deflattening code to json utility file util: json: Don't remove the 'file' subobject when deflattening tests: json: Add test for the deflattening function util: json: Properly implement JSON deflattening util: json: Recursively deflatten objects virJSONValueObjectDeflatten util: storage: Always deflatten JSON pseudo-protocol objects tests: Validate that JSON deflattening fixed nested json pseudo-protocol strings src/libvirt_private.syms | 2 + src/util/virjson.c | 115 +++++++++++++++++++++ src/util/virjson.h | 4 + src/util/virstoragefile.c | 79 ++------------ tests/Makefile.am | 8 +- tests/virjsondata/deflatten-basic-file-in.json | 8 ++ tests/virjsondata/deflatten-basic-file-out.json | 10 ++ tests/virjsondata/deflatten-basic-generic-in.json | 14 +++ tests/virjsondata/deflatten-basic-generic-out.json | 20 ++++ .../deflatten-concat-double-key-in.json | 7 ++ tests/virjsondata/deflatten-concat-in.json | 5 + tests/virjsondata/deflatten-concat-out.json | 8 ++ tests/virjsondata/deflatten-deep-file-in.json | 9 ++ tests/virjsondata/deflatten-deep-file-out.json | 23 +++++ tests/virjsondata/deflatten-deep-generic-in.json | 9 ++ tests/virjsondata/deflatten-deep-generic-out.json | 27 +++++ tests/virjsondata/deflatten-double-key-in.json | 4 + tests/virjsondata/deflatten-nested-in.json | 16 +++ tests/virjsondata/deflatten-nested-out.json | 28 +++++ tests/virjsondata/deflatten-qemu-sheepdog-in.json | 11 ++ tests/virjsondata/deflatten-qemu-sheepdog-out.json | 13 +++ tests/virjsondata/deflatten-unflattened-in.json | 12 +++ tests/virjsondata/deflatten-unflattened-out.json | 14 +++ tests/{jsontest.c => virjsontest.c} | 75 ++++++++++++++ tests/virstoragetest.c | 10 ++ 25 files changed, 458 insertions(+), 73 deletions(-) create mode 100644 tests/virjsondata/deflatten-basic-file-in.json create mode 100644 tests/virjsondata/deflatten-basic-file-out.json create mode 100644 tests/virjsondata/deflatten-basic-generic-in.json create mode 100644 tests/virjsondata/deflatten-basic-generic-out.json create mode 100644 tests/virjsondata/deflatten-concat-double-key-in.json create mode 100644 tests/virjsondata/deflatten-concat-in.json create mode 100644 tests/virjsondata/deflatten-concat-out.json create mode 100644 tests/virjsondata/deflatten-deep-file-in.json create mode 100644 tests/virjsondata/deflatten-deep-file-out.json create mode 100644 tests/virjsondata/deflatten-deep-generic-in.json create mode 100644 tests/virjsondata/deflatten-deep-generic-out.json create mode 100644 tests/virjsondata/deflatten-double-key-in.json create mode 100644 tests/virjsondata/deflatten-nested-in.json create mode 100644 tests/virjsondata/deflatten-nested-out.json create mode 100644 tests/virjsondata/deflatten-qemu-sheepdog-in.json create mode 100644 tests/virjsondata/deflatten-qemu-sheepdog-out.json create mode 100644 tests/virjsondata/deflatten-unflattened-in.json create mode 100644 tests/virjsondata/deflatten-unflattened-out.json rename tests/{jsontest.c => virjsontest.c} (89%) -- 2.12.2 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list