Commit 74bc9066 authored by Zhangleiqiang's avatar Zhangleiqiang Committed by Luiz Capitulino
Browse files

qmp: fix handling of cmd with Equals in qmp-shell

	qmp: fix handling of cmd with equal mark in qmp-shell

    qmp-shell splits the argument and value of input command
	by equal mark("="). But there are commands whose values
	include equal mark themselves, and the json built by
	qmp-shell will not correct. For example, when using NBD as
	the target of block-backup command, the input
	"block-backup target=nbd+unix:///drive0?socket=/tmp/nbd.sock"
	will fail, because the json built will be as follows:

    {
		"execute":"block-backup",
		"arguments":{"target":"nbd+unix:///drive0?socket"

}
	}

    Fix it by joining the sections split by equal mark excluding the
	first section in __build_cmd function when the length of sections
	is larger than two.

Signed-off-by: default avatarzhangleiqiang <zhangleiqiang@huawei.com>
Signed-off-by: default avatarLuiz Capitulino <lcapitulino@redhat.com>
parent 110db9b4
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -99,6 +99,8 @@ class QMPShell(qmp.QEMUMonitorProtocol):
        for arg in cmdargs[1:]:
            opt = arg.split('=')
            try:
                if(len(opt) > 2):
                    opt[1] = '='.join(opt[1:])
                value = int(opt[1])
            except ValueError:
                if opt[1] == 'true':