On Thu, Apr 19, 2018 at 04:00:25PM +0200, Michal Privoznik wrote:
Now that we've gotten rid of misleading names we can introduce qemuMonitorGetObjectProps() function which queries -object properties. Again, some parts of code can be reused.
This should be two commits: * split out qemuMonitorJSONParsePropsList * introduce qemuMonitorGetObjectProps
Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> --- src/qemu/qemu_monitor.c | 13 ++++++++++ src/qemu/qemu_monitor.h | 3 +++ src/qemu/qemu_monitor_json.c | 62 ++++++++++++++++++++++++++++++++++---------- src/qemu/qemu_monitor_json.h | 4 +++ 4 files changed, 68 insertions(+), 14 deletions(-) diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index f642d9a51a..a1e2e40d0f 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -3932,6 +3932,19 @@ qemuMonitorGetDeviceProps(qemuMonitorPtr mon, } +int +qemuMonitorGetObjectProps(qemuMonitorPtr mon, + const char *object, + char ***props) +{ + VIR_DEBUG("object=%s props=%p", object, props); + + QEMU_CHECK_MONITOR_JSON(mon); + + return qemuMonitorJSONGetObjectProps(mon, object, props); +} + + char * qemuMonitorGetTargetArch(qemuMonitorPtr mon) { diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index d6b68b44ca..0f648ce27c 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -1048,6 +1048,9 @@ int qemuMonitorGetObjectTypes(qemuMonitorPtr mon, int qemuMonitorGetDeviceProps(qemuMonitorPtr mon, const char *device, char ***props); +int qemuMonitorGetObjectProps(qemuMonitorPtr mon, + const char *object, + char ***props); char *qemuMonitorGetTargetArch(qemuMonitorPtr mon); int qemuMonitorNBDServerStart(qemuMonitorPtr mon, diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 24d37eb41d..bd1729488c 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -6053,29 +6053,23 @@ int qemuMonitorJSONSetObjectProperty(qemuMonitorPtr mon, #undef MAKE_SET_CMD -int qemuMonitorJSONGetDeviceProps(qemuMonitorPtr mon, - const char *device, - char ***props) +static int +qemuMonitorJSONParsePropsList(qemuMonitorPtr mon, + virJSONValuePtr cmd, + char ***props) { - int ret = -1; - virJSONValuePtr cmd; virJSONValuePtr reply = NULL; virJSONValuePtr data; char **proplist = NULL; ssize_t n = 0; size_t i; - - *props = NULL; - - if (!(cmd = qemuMonitorJSONMakeCommand("device-list-properties", - "s:typename", device, - NULL))) - return -1; + int ret = -1; if (qemuMonitorJSONCommand(mon, cmd, &reply) < 0) goto cleanup; - if (qemuMonitorJSONHasError(reply, "DeviceNotFound")) { + if (qemuMonitorJSONHasError(reply, "DeviceNotFound") || + qemuMonitorJSONHasError(reply, "CommandNotFound")) {
One of the errors is appropriate for device-list-properties, the other one for qom-list-properties. Each caller should take care of their error and qemuMonitorJSONParsePropsList would work with virJSON replies data.
ret = 0; goto cleanup; }
Jano
Attachment:
signature.asc
Description: Digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list