Message ID | 1558079119-320634-3-git-send-email-imammedo@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | numa: deprecate '-numa node, mem' and default memory distribution | expand |
Igor Mammedov <imammedo@redhat.com> 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@redhat.com> > --- > 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.
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' } } ## # @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;
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. Signed-off-by: Igor Mammedov <imammedo@redhat.com> --- qapi/misc.json | 5 ++++- qmp.c | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-)