Re: [Qemu-devel] [PATCH v4 11/23] monitor: Add completion support for option lists

2010-06-28 Thread Luiz Capitulino
On Wed, 23 Jun 2010 12:28:27 +0200
Jan Kiszka jan.kis...@siemens.com wrote:

 Markus Armbruster wrote:
  Jan Kiszka jan.kis...@web.de writes:
  
  From: Jan Kiszka jan.kis...@siemens.com
 
  This enables command line completion inside option strings. A list of
  expected key names and their completion type can be appended to the 'O'
  inside parentheses ('O(key:type,...)'). The first use case is block
  device completion for the 'drive' option of 'device_add'.
 
  Signed-off-by: Jan Kiszka jan.kis...@siemens.com
  ---
   monitor.c   |   68 
  ++-
   qemu-monitor.hx |2 +-
   2 files changed, 58 insertions(+), 12 deletions(-)
 
  diff --git a/monitor.c b/monitor.c
  index c1006b4..3e0d862 100644
  --- a/monitor.c
  +++ b/monitor.c
  @@ -68,6 +68,9 @@
* 'O'  option string of the form NAME=VALUE,...
*  parsed according to QemuOptsList given by its name
*  Example: 'device:O' uses qemu_device_opts.
  + *  Command completion for specific keys can be requested via
  + *  appending '(NAME:TYPE,...)' with 'F', 'B' as type.
  + *  Example: 'device:O(bus:Q)' to expand 'bus=...' as qtree 
  path.
*  Restriction: only lists with empty desc are supported
*  TODO lift the restriction
* 'i'  32 bit integer
  
  Ugh.
  
  Replacement of args_type by a proper data structure is long overdue.  We
  keep piling features into that poor, hapless string.
  
  Information on how to complete QemuOptsList options arguably belongs
  into the option description, i.e. QemuOptDesc.
 
 For sure, that would be better. I just wonder how much of it should be
 stuffed into this series. I guess I will drop this part for now, just
 focusing on what device_show makes direct use of. Same for separate args
 for HMP and QMP.

IIRC, the separate args idea use case was to allow commands like device_del
to have an ID argument and a path argument, right? If so, I think it doesn't
matter anymore as we have agreed on having a device argument which would
accept both, even under QMP, right Markus?

By the way, if you send patches 09/23, 10/23, 15/23, (maybe) 16/23, 21/23
and 22/23 in a different series, I could try pushing them in my next
pull request.



Re: [Qemu-devel] [PATCH v4 11/23] monitor: Add completion support for option lists

2010-06-28 Thread Jan Kiszka
Luiz Capitulino wrote:
 On Wed, 23 Jun 2010 12:28:27 +0200
 Jan Kiszka jan.kis...@siemens.com wrote:
 
 Markus Armbruster wrote:
 Jan Kiszka jan.kis...@web.de writes:

 From: Jan Kiszka jan.kis...@siemens.com

 This enables command line completion inside option strings. A list of
 expected key names and their completion type can be appended to the 'O'
 inside parentheses ('O(key:type,...)'). The first use case is block
 device completion for the 'drive' option of 'device_add'.

 Signed-off-by: Jan Kiszka jan.kis...@siemens.com
 ---
  monitor.c   |   68 
 ++-
  qemu-monitor.hx |2 +-
  2 files changed, 58 insertions(+), 12 deletions(-)

 diff --git a/monitor.c b/monitor.c
 index c1006b4..3e0d862 100644
 --- a/monitor.c
 +++ b/monitor.c
 @@ -68,6 +68,9 @@
   * 'O'  option string of the form NAME=VALUE,...
   *  parsed according to QemuOptsList given by its name
   *  Example: 'device:O' uses qemu_device_opts.
 + *  Command completion for specific keys can be requested via
 + *  appending '(NAME:TYPE,...)' with 'F', 'B' as type.
 + *  Example: 'device:O(bus:Q)' to expand 'bus=...' as qtree 
 path.
   *  Restriction: only lists with empty desc are supported
   *  TODO lift the restriction
   * 'i'  32 bit integer
 Ugh.

 Replacement of args_type by a proper data structure is long overdue.  We
 keep piling features into that poor, hapless string.

 Information on how to complete QemuOptsList options arguably belongs
 into the option description, i.e. QemuOptDesc.
 For sure, that would be better. I just wonder how much of it should be
 stuffed into this series. I guess I will drop this part for now, just
 focusing on what device_show makes direct use of. Same for separate args
 for HMP and QMP.
 
 IIRC, the separate args idea use case was to allow commands like device_del
 to have an ID argument and a path argument, right? If so, I think it doesn't
 matter anymore as we have agreed on having a device argument which would
 accept both, even under QMP, right Markus?

To my understanding: As a leading element in qdev path, at least to
address a device, maybe also to abbreviate only the beginning of a full
path (that's currently to major remaining open issue).

 
 By the way, if you send patches 09/23, 10/23, 15/23, (maybe) 16/23, 21/23
 and 22/23 in a different series, I could try pushing them in my next
 pull request.

Do they need rebasing? If not, feel free to pick them up as you like. My
series requires a v5 round anyway once discussion on path construction
finally came to an end.

Jan

-- 
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux



Re: [Qemu-devel] [PATCH v4 11/23] monitor: Add completion support for option lists

2010-06-28 Thread Luiz Capitulino
On Mon, 28 Jun 2010 16:40:58 +0200
Jan Kiszka jan.kis...@siemens.com wrote:

 Luiz Capitulino wrote:
  On Wed, 23 Jun 2010 12:28:27 +0200
  Jan Kiszka jan.kis...@siemens.com wrote:
  
  Markus Armbruster wrote:
  Jan Kiszka jan.kis...@web.de writes:
 
  From: Jan Kiszka jan.kis...@siemens.com
 
  This enables command line completion inside option strings. A list of
  expected key names and their completion type can be appended to the 'O'
  inside parentheses ('O(key:type,...)'). The first use case is block
  device completion for the 'drive' option of 'device_add'.
 
  Signed-off-by: Jan Kiszka jan.kis...@siemens.com
  ---
   monitor.c   |   68 
  ++-
   qemu-monitor.hx |2 +-
   2 files changed, 58 insertions(+), 12 deletions(-)
 
  diff --git a/monitor.c b/monitor.c
  index c1006b4..3e0d862 100644
  --- a/monitor.c
  +++ b/monitor.c
  @@ -68,6 +68,9 @@
* 'O'  option string of the form NAME=VALUE,...
*  parsed according to QemuOptsList given by its name
*  Example: 'device:O' uses qemu_device_opts.
  + *  Command completion for specific keys can be requested 
  via
  + *  appending '(NAME:TYPE,...)' with 'F', 'B' as type.
  + *  Example: 'device:O(bus:Q)' to expand 'bus=...' as qtree 
  path.
*  Restriction: only lists with empty desc are supported
*  TODO lift the restriction
* 'i'  32 bit integer
  Ugh.
 
  Replacement of args_type by a proper data structure is long overdue.  We
  keep piling features into that poor, hapless string.
 
  Information on how to complete QemuOptsList options arguably belongs
  into the option description, i.e. QemuOptDesc.
  For sure, that would be better. I just wonder how much of it should be
  stuffed into this series. I guess I will drop this part for now, just
  focusing on what device_show makes direct use of. Same for separate args
  for HMP and QMP.
  
  IIRC, the separate args idea use case was to allow commands like device_del
  to have an ID argument and a path argument, right? If so, I think it doesn't
  matter anymore as we have agreed on having a device argument which would
  accept both, even under QMP, right Markus?
 
 To my understanding: As a leading element in qdev path, at least to
 address a device, maybe also to abbreviate only the beginning of a full
 path (that's currently to major remaining open issue).

I'm ok with it if it's unambiguous.

  By the way, if you send patches 09/23, 10/23, 15/23, (maybe) 16/23, 21/23
  and 22/23 in a different series, I could try pushing them in my next
  pull request.
 
 Do they need rebasing? If not, feel free to pick them up as you like. My
 series requires a v5 round anyway once discussion on path construction
 finally came to an end.

Done for them all, except 16/23 which mentions device_show in the changelog.

I should send a pull request until this Wednesday.



Re: [Qemu-devel] [PATCH v4 11/23] monitor: Add completion support for option lists

2010-06-23 Thread Markus Armbruster
Jan Kiszka jan.kis...@web.de writes:

 From: Jan Kiszka jan.kis...@siemens.com

 This enables command line completion inside option strings. A list of
 expected key names and their completion type can be appended to the 'O'
 inside parentheses ('O(key:type,...)'). The first use case is block
 device completion for the 'drive' option of 'device_add'.

 Signed-off-by: Jan Kiszka jan.kis...@siemens.com
 ---
  monitor.c   |   68 
 ++-
  qemu-monitor.hx |2 +-
  2 files changed, 58 insertions(+), 12 deletions(-)

 diff --git a/monitor.c b/monitor.c
 index c1006b4..3e0d862 100644
 --- a/monitor.c
 +++ b/monitor.c
 @@ -68,6 +68,9 @@
   * 'O'  option string of the form NAME=VALUE,...
   *  parsed according to QemuOptsList given by its name
   *  Example: 'device:O' uses qemu_device_opts.
 + *  Command completion for specific keys can be requested via
 + *  appending '(NAME:TYPE,...)' with 'F', 'B' as type.
 + *  Example: 'device:O(bus:Q)' to expand 'bus=...' as qtree path.
   *  Restriction: only lists with empty desc are supported
   *  TODO lift the restriction
   * 'i'  32 bit integer

Ugh.

Replacement of args_type by a proper data structure is long overdue.  We
keep piling features into that poor, hapless string.

Information on how to complete QemuOptsList options arguably belongs
into the option description, i.e. QemuOptDesc.

[...]



Re: [Qemu-devel] [PATCH v4 11/23] monitor: Add completion support for option lists

2010-06-23 Thread Jan Kiszka
Markus Armbruster wrote:
 Jan Kiszka jan.kis...@web.de writes:
 
 From: Jan Kiszka jan.kis...@siemens.com

 This enables command line completion inside option strings. A list of
 expected key names and their completion type can be appended to the 'O'
 inside parentheses ('O(key:type,...)'). The first use case is block
 device completion for the 'drive' option of 'device_add'.

 Signed-off-by: Jan Kiszka jan.kis...@siemens.com
 ---
  monitor.c   |   68 
 ++-
  qemu-monitor.hx |2 +-
  2 files changed, 58 insertions(+), 12 deletions(-)

 diff --git a/monitor.c b/monitor.c
 index c1006b4..3e0d862 100644
 --- a/monitor.c
 +++ b/monitor.c
 @@ -68,6 +68,9 @@
   * 'O'  option string of the form NAME=VALUE,...
   *  parsed according to QemuOptsList given by its name
   *  Example: 'device:O' uses qemu_device_opts.
 + *  Command completion for specific keys can be requested via
 + *  appending '(NAME:TYPE,...)' with 'F', 'B' as type.
 + *  Example: 'device:O(bus:Q)' to expand 'bus=...' as qtree 
 path.
   *  Restriction: only lists with empty desc are supported
   *  TODO lift the restriction
   * 'i'  32 bit integer
 
 Ugh.
 
 Replacement of args_type by a proper data structure is long overdue.  We
 keep piling features into that poor, hapless string.
 
 Information on how to complete QemuOptsList options arguably belongs
 into the option description, i.e. QemuOptDesc.

For sure, that would be better. I just wonder how much of it should be
stuffed into this series. I guess I will drop this part for now, just
focusing on what device_show makes direct use of. Same for separate args
for HMP and QMP.

Jan

-- 
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux



Re: [Qemu-devel] [PATCH v4 11/23] monitor: Add completion support for option lists

2010-06-23 Thread Markus Armbruster
Jan Kiszka jan.kis...@siemens.com writes:

 Markus Armbruster wrote:
 Jan Kiszka jan.kis...@web.de writes:
 
 From: Jan Kiszka jan.kis...@siemens.com

 This enables command line completion inside option strings. A list of
 expected key names and their completion type can be appended to the 'O'
 inside parentheses ('O(key:type,...)'). The first use case is block
 device completion for the 'drive' option of 'device_add'.

 Signed-off-by: Jan Kiszka jan.kis...@siemens.com
 ---
  monitor.c   |   68 
 ++-
  qemu-monitor.hx |2 +-
  2 files changed, 58 insertions(+), 12 deletions(-)

 diff --git a/monitor.c b/monitor.c
 index c1006b4..3e0d862 100644
 --- a/monitor.c
 +++ b/monitor.c
 @@ -68,6 +68,9 @@
   * 'O'  option string of the form NAME=VALUE,...
   *  parsed according to QemuOptsList given by its name
   *  Example: 'device:O' uses qemu_device_opts.
 + *  Command completion for specific keys can be requested via
 + *  appending '(NAME:TYPE,...)' with 'F', 'B' as type.
 + *  Example: 'device:O(bus:Q)' to expand 'bus=...' as qtree 
 path.
   *  Restriction: only lists with empty desc are supported
   *  TODO lift the restriction
   * 'i'  32 bit integer
 
 Ugh.
 
 Replacement of args_type by a proper data structure is long overdue.  We
 keep piling features into that poor, hapless string.
 
 Information on how to complete QemuOptsList options arguably belongs
 into the option description, i.e. QemuOptDesc.

 For sure, that would be better. I just wonder how much of it should be
 stuffed into this series. I guess I will drop this part for now, just
 focusing on what device_show makes direct use of. Same for separate args
 for HMP and QMP.

Sensible.


Speaking of args_type.  We've accumulated too many ways to represent
dynamic data types, and too many ways to describe data types.

The most powerful dynamic data type is QObject.  It comes with a useful
plain-text representation (JSON).  We lack a data type for describing
QObjects.  We use args_type to describe special QObjects, namely monitor
command arguments.  We've clearly stretched that to the limit and then
some.  We could use a general solution.  JSON Schema as its plain-text
representation could be nice.

Then we have QemuOpts.  It's more limited (flat list instead of trees),
but it comes with a real data type to describe it (QemuOptsList).

There's also QEMUOptionParameter.  Serves a similar purpose.  I don't
know why we have both.

Over in qdev-land, we find Property, which can be viewed a data type to
describe (parts of) a struct.

Some unification would be nice.