Igor Mammedov <imammedo@xxxxxxxxxx> writes: > Add in the command output object's property values right after creation > (i.e. state of the object returned by object_new() or equivalent). > > Follow up patch will add machine property 'numa-mem-supported', which > would allow mgmt to introspect which machine types (versions) still > support legacy "-numa mem=FOO" CLI option and which don't and require > alternative '-numa memdev' option being used. I'll have to study that patch to figure out what exactly the use case is. > Signed-off-by: Igor Mammedov <imammedo@xxxxxxxxxx> > --- > qapi/misc.json | 5 ++++- > qmp.c | 5 +++++ > 2 files changed, 9 insertions(+), 1 deletion(-) > > diff --git a/qapi/misc.json b/qapi/misc.json > index 8b3ca4f..e333285 100644 > --- a/qapi/misc.json > +++ b/qapi/misc.json > @@ -1365,10 +1365,13 @@ > # > # @description: if specified, the description of the property. > # > +# @default: initial property value. > +# > # Since: 1.2 > ## > { 'struct': 'ObjectPropertyInfo', > - 'data': { 'name': 'str', 'type': 'str', '*description': 'str' } } > + 'data': { 'name': 'str', 'type': 'str', '*description': 'str', > + '*default': 'any' } } ObjectPropertyInfo has three users: qom-list, device-list-properties, qom-list-properties. > > ## > # @qom-list: > diff --git a/qmp.c b/qmp.c > index b92d62c..8415541 100644 > --- a/qmp.c > +++ b/qmp.c > @@ -593,6 +593,11 @@ ObjectPropertyInfoList *qmp_qom_list_properties(const char *typename, > info->type = g_strdup(prop->type); > info->has_description = !!prop->description; > info->description = g_strdup(prop->description); > + if (obj) { > + info->q_default = > + object_property_get_qobject(obj, info->name, NULL); > + info->has_q_default = !!info->q_default; > + } > > entry = g_malloc0(sizeof(*entry)); > entry->value = info; You update only qom-list-properties. The other two therefore never return objects with a @default member. But query-qmp-schema can't tell. Awkward. The doc comments don't tell. Doc bug. You could have qom-list-properties return a new type { 'struct': 'ObjectPropertyInfoWithDefault', 'base': 'ObjectPropertyInfo', 'data': { '*default': any } } The default value shown by qom-list-properties is the value found in a fresh object created with object_new(). object_new() runs ->instance_init(), which can do anything. When you call object_new() again, you might find a different value. In other words, the @default returned by qom-list-properties is unreliable. Related to this qom-list-properties caveat: # Note: objects can create properties at runtime, for example to describe # links between different devices and/or objects. These properties # are not included in the output of this command. Please add a similar one for @default. This command fights QOM's basic design premises, and it shows. -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list