[libvirt] [PATCH v2 03/10] Add qemuMonitorJSONSetObjectProperty() method for QMP qom-set command

Michal Privoznik mprivozn at redhat.com
Thu Jul 11 14:05:52 UTC 2013


On 08.07.2013 21:20, John Ferlan wrote:
> Add a new qemuMonitorJSONSetObjectProperty() method to support invocation
> of the 'qom-set' JSON monitor command with a provided path, property, and
> expected data type to set.
> 
> The test code uses the same "/machine/i440fx" property as the get test and
> attempts to set the "realized" property to "true" (which it should be set
> at anyway).
> ---
>  src/qemu/qemu_monitor_json.c | 62 ++++++++++++++++++++++++++++++++++++++++++++
>  src/qemu/qemu_monitor_json.h |  6 +++++
>  tests/qemumonitorjsontest.c  | 59 +++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 127 insertions(+)
> 
> diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
> index db107f1..9487955 100644
> --- a/src/qemu/qemu_monitor_json.c
> +++ b/src/qemu/qemu_monitor_json.c
> @@ -4728,6 +4728,68 @@ cleanup:
>  }
>  
>  
> +#define MAKE_SET_CMD(STRING, VALUE)                                   \
> +    cmd = qemuMonitorJSONMakeCommand("qom-set",                       \
> +                                      "s:path", path,                 \
> +                                      "s:property", property,         \
> +                                      STRING, VALUE,                  \
> +                                      NULL)
> +int qemuMonitorJSONSetObjectProperty(qemuMonitorPtr mon,
> +                                     const char *path,
> +                                     const char *property,
> +                                     qemuMonitorJSONObjectPropertyPtr prop)
> +{
> +    int ret = -1;
> +    virJSONValuePtr cmd = NULL;
> +    virJSONValuePtr reply = NULL;
> +
> +    switch (prop->type) {

Again, this should be:


switch ((qemuMonitorJSONObjectPropertyType) prop->type) {

> +    /* Simple cases of boolean, int, long, uint, ulong, double, and string
> +     * will receive return value as part of {"return": xxx} statement
> +     */
> +    case QEMU_MONITOR_OBJECT_PROPERTY_BOOLEAN:
> +        MAKE_SET_CMD("b:value", prop->val.b);
> +        break;
> +    case QEMU_MONITOR_OBJECT_PROPERTY_INT:
> +        MAKE_SET_CMD("i:value", prop->val.i);
> +        break;
> +    case QEMU_MONITOR_OBJECT_PROPERTY_LONG:
> +        MAKE_SET_CMD("I:value", prop->val.l);
> +        break;
> +    case QEMU_MONITOR_OBJECT_PROPERTY_UINT:
> +        MAKE_SET_CMD("u:value", prop->val.ui);
> +        break;
> +    case QEMU_MONITOR_OBJECT_PROPERTY_ULONG:
> +        MAKE_SET_CMD("U:value", prop->val.ul);
> +        break;
> +    case QEMU_MONITOR_OBJECT_PROPERTY_DOUBLE:
> +        MAKE_SET_CMD("d:value", prop->val.d);
> +        break;
> +    case QEMU_MONITOR_OBJECT_PROPERTY_STRING:
> +        MAKE_SET_CMD("s:value", prop->val.str);
> +        break;
> +    case QEMU_MONITOR_OBJECT_PROPERTY_LAST:
> +    default:

With these removed.

> +        virReportError(VIR_ERR_INTERNAL_ERROR,
> +                       _("qom-set invalid object property type %d"),
> +                       prop->type);
> +        goto cleanup;
> +
> +    }
> +    if (!cmd)
> +        return -1;
> +
> +    if ((ret = qemuMonitorJSONCommand(mon, cmd, &reply)) == 0)
> +        ret = qemuMonitorJSONCheckError(cmd, reply);
> +
> +cleanup:
> +    virJSONValueFree(cmd);
> +    virJSONValueFree(reply);
> +
> +    return ret;
> +}
> +
> +
>  int qemuMonitorJSONGetObjectProps(qemuMonitorPtr mon,
>                                    const char *type,
>                                    char ***props)

Michal




More information about the libvir-list mailing list