This series implements the necessary commands to implements danpb's idea to remove -help parsing in libvirt. We would introduce all of these commands in 1.2 and then change the -help output starting in 1.3. Here is Dan's plan from a previous thread: <danpb> Basically I'd sum up my new idea as "just use QMP". * No new command line arguments like -capabilities * libvirt invokes something like $QEMUBINARY -qmp CHARDEV -nodefault -nodefconfig -nographics * libvirt then runs a number of QMP commands to find out what it needs to know. I'd expect the following existing commands would be used - query-version - already supported - query-commands - already supported - query-events - already supported - query-kvm - already supported - qom-{list,list-types,get} - already supported - query-spice/vnc - already supported And add the following new commands - query-devices - new, -device ?, and/or -device NAME,? data in QMP - query-machines - new, -M ? in QMP - query-cpu-types - new, -cpu ? in QMP The above would take care of probably 50% of the current libvirt capabilities probing, including a portion of the -help stuff. Then there is all the rest of the crap we detect from the -help. We could just take the view, that "as of 1.2", we assume everything we previously detected is just available by default, and thus don't need to probe it. For stuff that is QOM based, I expect we'll be able to detect new features in the future using the qom-XXX monitor commands. For stuff that is non-qdev, and non-qom, libvirt can just do a plain version number check, unless we decide there is specific info worth exposing via other new 'query-XXX' monitor commands. Basically I'd sum up my new idea as "just use QMP". * No new command line arguments like -capabilities * libvirt invokes something like $QEMUBINARY -qmp CHARDEV -nodefault -nodefconfig -nographics * libvirt then runs a number of QMP commands to find out what it needs to know. I'd expect the following existing commands would be used - query-version - already supported - query-commands - already supported - query-events - already supported - query-kvm - already supported - qom-{list,list-types,get} - already supported - query-spice/vnc - already supported And add the following new commands - query-devices - new, -device ?, and/or -device NAME,? data in QMP - query-machines - new, -M ? in QMP - query-cpu-types - new, -cpu ? in QMP The above would take care of probably 50% of the current libvirt capabilities probing, including a portion of the -help stuff. Then there is all the rest of the crap we detect from the -help. We could just take the view, that "as of 1.2", we assume everything we previously detected is just available by default, and thus don't need to probe it. For stuff that is QOM based, I expect we'll be able to detect new features in the future using the qom-XXX monitor commands. For stuff that is non-qdev, and non-qom, libvirt can just do a plain version number check, unless we decide there is specific info worth exposing via other new 'query-XXX' monitor commands. </danpb> The one thing to note is that I didn't add a query-devices command because you can already do: qmp query-devices --implements=device --abstract=False To get the equivalent output of -device ?. Instead, I added a command to list specific properties of a device which is the equivalent of -device FOO,? -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list