Hi All, 

 

I’m using qmp command via “virsh qemu-monitor-command” to perform block related 
jobs. 

And in my case, I execute block-commit to commit the changes in the top image 
to the base image which is encrypted. 

So in the base parameter, I need a json string which is single quoted to 
support the encryption parameters. 

However, the virsh is failed to parse the whole json qmp command. 

 

Attempt 1: Single quote without backflash, failed 

root@host:~# virsh qemu-monitor-command i-9wdfw2x8  "{\"execute\": 
\"block-commit\", \"arguments\": { \"device\": \"drive-virtio-disk2\", 
\"job-id\": \"job100\", 
\"base\":'json:{\"encrypt.key-secret\":\"vol-38973xjl.secret\",\"driver\":\"qcow2\",\"file\":{\"driver\":\"file\",\"filename\":\"/pitrix/data/container/vol-38973xjl.img\"}}',
 \"top\": \"/pitrix/data/container/vol-38973xjl_ss-2tw7v0mm.img\"}}"

error: internal error: cannot parse json {"execute": "block-commit", 
"arguments": { "device": "drive-virtio-disk2", "job-id": "job100", 
"base":'json:{"encrypt.key-secret":"vol-38973xjl.secret","driver":"qcow2","file":{"driver":"file","filename":"/pitrix/data/container/vol-38973xjl.img"}}',
 "top": "/pitrix/data/container/vol-38973xjl_ss-2tw7v0mm.img"}}: lexical error: 
invalid char in json text.

          , "job-id": "job100", "base":'json:{"encrypt.key-secret":"vo

                     (right here) ------^

 

Attempt 2: Single quote with backflash, failed

root@host:~# virsh qemu-monitor-command i-9wdfw2x8  "{\"execute\": 
\"block-commit\", \"arguments\": { \"device\": \"drive-virtio-disk2\", 
\"job-id\": \"job100\", 
\"base\":\'json:{\"encrypt.key-secret\":\"vol-38973xjl.secret\",\"driver\":\"qcow2\",\"file\":{\"driver\":\"file\",\"filename\":\"/pitrix/data/container/vol-38973xjl.img\"}}\',
 \"top\": \"/pitrix/data/container/vol-38973xjl_ss-2tw7v0mm.img\"}}"

error: internal error: cannot parse json {"execute": "block-commit", 
"arguments": { "device": "drive-virtio-disk2", "job-id": "job100", 
"base":\'json:{"encrypt.key-secret":"vol-38973xjl.secret","driver":"qcow2","file":{"driver":"file","filename":"/pitrix/data/container/vol-38973xjl.img"}}\',
 "top": "/pitrix/data/container/vol-38973xjl_ss-2tw7v0mm.img"}}: lexical error: 
invalid char in json text.

          , "job-id": "job100", "base":\'json:{"encrypt.key-secret":"v

                     (right here) ------^ 

 

 

My libvirt version is 5.7.0, libyajl is 2.1.0.

 

Thanks,

Peter Luo 

Reply via email to