qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Amos Kong <akong@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: jyang@redhat.com, laine@redhat.com, libvir-list@redhat.com,
	qemu-devel@nongnu.org, rjones@redhat.com, anthony@codemonkey.ws,
	pbonzini@redhat.com, lcapitulino@redhat.com
Subject: Re: [Qemu-devel] [PATCH 5/5] query-command-line-options: return help message for legacy options
Date: Mon, 17 Feb 2014 16:49:42 +0800	[thread overview]
Message-ID: <20140217084942.GC21308@amosk.info> (raw)
In-Reply-To: <87wqh1rge3.fsf@blackfin.pond.sub.org>

On Tue, Feb 11, 2014 at 01:19:16PM +0100, Markus Armbruster wrote:
> [Note cc: Eric]
 
Hi Markus,

> Amos Kong <akong@redhat.com> writes:
> 
> > Some legacy options that have arguments weren't added to
> > vm_config_groups[], so query-command-line-options returns a
> > NULL parameters infolist. This patch try to return help message
> > for this kind of legacy options.
> >
> > Example:
> >  {
> >      "helpmsg": "\"-vnc display    start a VNC server on display\\n\"",
> >      "parameters": [
> >      ],
> >      "option": "vnc"
> >  },
> 
> Do we have prospective users for this feature?

I had posted a RFC mail to discuss about "fix/redo query-command-line-options",
this patch is a solution for legacy options that have not arguments.

Current QEMU returns NULL list for this kind of options, this patch
tries to return option name and help message to the libvirt. (it's
better)

You can find some examples in the end.
 
> > Signed-off-by: Amos Kong <akong@redhat.com>
> > ---
> >  qapi-schema.json   | 5 ++++-
> >  util/qemu-config.c | 3 +++
> >  2 files changed, 7 insertions(+), 1 deletion(-)
> >
> > diff --git a/qapi-schema.json b/qapi-schema.json
> > index 05ced9d..b3e6f46 100644
> > --- a/qapi-schema.json
> > +++ b/qapi-schema.json
> > @@ -3943,13 +3943,16 @@
> >  # Details about a command line option, including its list of parameter details
> >  #
> >  # @option: option name
> > +# @helpmsg: help message for legacy options
> >  #
> >  # @parameters: an array of @CommandLineParameterInfo
> >  #
> >  # Since 1.5
> >  ##
> >  { 'type': 'CommandLineOptionInfo',
> > -  'data': { 'option': 'str', 'parameters': ['CommandLineParameterInfo'] } }
> > +  'data': { 'option': 'str',
> > +            '*parameters': ['CommandLineParameterInfo'],
> > +            '*helpmsg': 'str' } }
> >  
> >  ##
> >  # @query-command-line-options:
> 
> Aha, here's the schema change missing in PATCH 3/5.

Yeah

> The schema needs to cover these kinds of options:
> 
> 1. No argument
> 
>    { 'option': OPT-NAME }
> 
> 2. QemuOpts argument
> 
> 2a. with known parameters (QemuOptsList member desc[] not empty)
> 
>    { 'option': OPT-NAME,
>      'parameters': [ { 'name': PAR-NAME, 'type': PAR-TYPE }, ... ] }
> 
> 2b. with unknown parameters (desc[] empty)
> 
>    { 'option': OPT-NAME, parameters: [] }
> 
> 3. Other argument
> 
>    { 'option': OPT-NAME, ? }
> 
> This patch adds 3.  We need to decide what we want there.
> 
> Any particular reason why we have to invent something new, and can't
> simply fold it into 2b?

I thinks it's ok, it's just the output format, then the 'parameters'
isn't optional.
 
> Note that I completely left out help strings, both on the option and on
> the parameter level.  Both for brevity of presentation, and because I'd
> like to see a use before we add them.

Something was _wrong_ in this patch, I want to additionally output
helpmsg only for this case:
  If option has parameter, and we didn't convert the option to use
  QemuOpts (with good desc table), then help message is helpful.
  This only effects some legacy options.

|-set group.id.arg=value
|                set <arg> parameter for item <id> of type <group>
|                i.e. -set drive.$id.file=/path/to/image
|-qtest-log /dev/null
|-qtest 
|-writeconfig <file>
|              read/write config file
|....
|....

 
> > diff --git a/util/qemu-config.c b/util/qemu-config.c
> > index de233d8..a2def03 100644
> > --- a/util/qemu-config.c
> > +++ b/util/qemu-config.c
> > @@ -176,6 +176,9 @@ CommandLineOptionInfoList *qmp_query_command_line_options(bool has_option,
> >              } else if (idx >= 0) {
> >                  info->parameters =
> >                      get_param_infolist(vm_config_groups[idx]->desc);
> > +            } else if (info->has_parameters) {
> > +                info->has_helpmsg = true;
> > +                info->helpmsg = g_strdup(option_helpmsgs[i]);
> >              }
> >  
> >              entry = g_malloc0(sizeof(*entry));

-- 
			Amos.

  parent reply	other threads:[~2014-02-17  8:50 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-28  3:53 [Qemu-devel] [PATCH 0/5] fix query-command-line-options Amos Kong
2014-01-28  3:53 ` [Qemu-devel] [PATCH 1/5] qmp: rename query_option_descs() to get_param_infolist() Amos Kong
2014-02-12 20:33   ` Eric Blake
2014-01-28  3:53 ` [Qemu-devel] [PATCH 2/5] introduce two marcos to dump the options info Amos Kong
2014-02-11 10:55   ` Markus Armbruster
2014-02-12 20:37   ` Eric Blake
2014-01-28  3:53 ` [Qemu-devel] [PATCH 3/5] query-command-line-options: query all the options in qemu-options.hx Amos Kong
2014-02-11 12:03   ` Markus Armbruster
2014-02-17  8:26     ` Amos Kong
2014-02-12 20:39   ` Eric Blake
2014-01-28  3:53 ` [Qemu-devel] [PATCH 4/5] introduce QEMU_OPTIONS_GENERATE_HELPMSG Amos Kong
2014-02-11 12:03   ` Markus Armbruster
2014-02-12 20:41   ` Eric Blake
2014-01-28  3:53 ` [Qemu-devel] [PATCH 5/5] query-command-line-options: return help message for legacy options Amos Kong
2014-02-11 12:19   ` Markus Armbruster
2014-02-12 20:48     ` Eric Blake
2014-02-17  8:49     ` Amos Kong [this message]
2014-02-12 21:00   ` Eric Blake
2014-02-17  8:56     ` Amos Kong
2014-02-10 20:26 ` [Qemu-devel] [PATCH 0/5] fix query-command-line-options Luiz Capitulino

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140217084942.GC21308@amosk.info \
    --to=akong@redhat.com \
    --cc=anthony@codemonkey.ws \
    --cc=armbru@redhat.com \
    --cc=jyang@redhat.com \
    --cc=laine@redhat.com \
    --cc=lcapitulino@redhat.com \
    --cc=libvir-list@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rjones@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).