On Fri, 27 Jul 2012 08:37:15 -0500 Anthony Liguori <aliguori@xxxxxxxxxx> wrote: > This provides the same output as -M ? but in a structured way. > > Signed-off-by: Anthony Liguori <aliguori@xxxxxxxxxx> > --- > qapi-schema.json | 28 ++++++++++++++++++++++++++++ > qmp-commands.hx | 6 ++++++ > vl.c | 31 +++++++++++++++++++++++++++++++ > 3 files changed, 65 insertions(+), 0 deletions(-) > > diff --git a/qapi-schema.json b/qapi-schema.json > index 28e9914..5b47026 100644 > --- a/qapi-schema.json > +++ b/qapi-schema.json > @@ -2200,3 +2200,31 @@ > # Since: 0.14.0 > ## > { 'command': 'closefd', 'data': {'fdname': 'str'} } > + > +## > +# @MachineInfo: > +# > +# Information describing a machine. > +# > +# @name: the name of the machine > +# > +# @alias: #optional an alias for the machine name > +# > +# @default: #optional whether the machine is default Why is default optional? > +# > +# Since: 1.2.0 > +## > +{ 'type': 'MachineInfo', > + 'data': { 'name': 'str', '*alias': 'str', > + '*is-default': 'bool' } } > + > +## > +# @query-machines: > +# > +# Return a list of supported machines > +# > +# Returns: a list of MachineInfo > +# > +# Since: 1.2.0 > +## > +{ 'command': 'query-machines', 'returns': ['MachineInfo'] } > diff --git a/qmp-commands.hx b/qmp-commands.hx > index 5c55528..a6f82fc 100644 > --- a/qmp-commands.hx > +++ b/qmp-commands.hx > @@ -2222,3 +2222,9 @@ EQMP > .mhandler.cmd_new = qmp_marshal_input_device_list_properties, > }, > > + { > + .name = "query-machines", > + .args_type = "", > + .mhandler.cmd_new = qmp_marshal_input_query_machines, > + }, > + > diff --git a/vl.c b/vl.c > index 8904db1..cd900e0 100644 > --- a/vl.c > +++ b/vl.c > @@ -1209,6 +1209,37 @@ QEMUMachine *find_default_machine(void) > return NULL; > } > > +MachineInfoList *qmp_query_machines(Error **errp) > +{ > + MachineInfoList *mach_list = NULL; > + QEMUMachine *m; > + > + for (m = first_machine; m; m = m->next) { > + MachineInfoList *entry; > + MachineInfo *info; > + > + info = g_malloc0(sizeof(*info)); > + if (m->is_default) { > + info->has_is_default = true; > + info->is_default = true; > + } > + > + if (m->alias) { > + info->has_alias = true; > + info->alias = g_strdup(m->alias); > + } > + > + info->name = g_strdup(m->name); > + > + entry = g_malloc0(sizeof(*entry)); > + entry->value = info; > + entry->next = mach_list; > + mach_list = entry; > + } > + > + return mach_list; > +} > + > /***********************************************************/ > /* main execution loop */ > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list