Re: [Qemu-devel] [PATCH 1/1] Add -version-simple argument, printing only version number.

2010-05-14 Thread Markus Armbruster
Daniel P. Berrange berra...@redhat.com writes:

 On Thu, May 13, 2010 at 10:32:52AM +0200, jes.soren...@redhat.com wrote:
 From: Jes Sorensen jes.soren...@redhat.com
 
 Add -version-simple argument for QEMU, printing just the version
 number, without any supporting text.
 
 This makes it simpler for other apps, such as libvirt, to parse the
 version string from QEMU independant of how the naming string may
 change.
 
 Signed-off-by: Jes Sorensen jes.soren...@redhat.com
 ---
  qemu-options.hx |8 
  vl.c|9 +
  2 files changed, 17 insertions(+), 0 deletions(-)
 
 diff --git a/qemu-options.hx b/qemu-options.hx
 index 12f6b51..e4f3979 100644
 --- a/qemu-options.hx
 +++ b/qemu-options.hx
 @@ -27,6 +27,14 @@ STEXI
  Display version information and exit
  ETEXI
  
 +DEF(version-simple, 0, QEMU_OPTION_version_simple,
 +-version-simple display version information and exit\n, QEMU_ARCH_ALL)
 +STEXI
 +...@item -version-simple
 +...@findex -version-simple
 +Display basic version number information and exit
 +ETEXI
 +
  DEF(M, HAS_ARG, QEMU_OPTION_M,
  -M machine  select emulated machine (-M ? for list)\n, 
 QEMU_ARCH_ALL)
  STEXI
 diff --git a/vl.c b/vl.c
 index 85bcc84..5adca87 100644
 --- a/vl.c
 +++ b/vl.c
 @@ -2015,6 +2015,11 @@ static void version(void)
  printf(QEMU emulator version  QEMU_VERSION QEMU_PKGVERSION , 
 Copyright (c) 2003-2008 Fabrice Bellard\n);
  }
  
 +static void version_simple(void)
 +{
 +printf(QEMU_VERSION QEMU_PKGVERSION \n);
 +}
 +
  static void help(int exitcode)
  {
  const char *options_help =
 @@ -2960,6 +2965,10 @@ int main(int argc, char **argv, char **envp)
  version();
  exit(0);
  break;
 +case QEMU_OPTION_version_simple:
 +version_simple();
 +exit(0);
 +break;
  case QEMU_OPTION_m: {
  uint64_t value;
  char *ptr;

 This omits the KVM version string which is something we also want to see.
 It would also be nice to avoid having to parse the -help output to determine
 ARGV supported too. I wonder if it would be a good idea to just produce a
 well structured equivalent to -help that provides the same data, but in 
 JSON format for sane parsing. That would let peple easily determine the
 supported ARGV as well as version number(s)

I'm all for machine-readable self-documentation.  And the place for that
is QMP.  Humble beginnings are already there:

{ execute: query-version, arguments: { } }
-- {return: {qemu: 0.12.50, package: }}

{ execute: query-commands, arguments: { } }
-- {return: [{name: quit}, {name: eject}, [...]

Any practical problems with use of QMP instead of parsing command line
option output?



Re: [Qemu-devel] [PATCH 1/1] Add -version-simple argument, printing only version number.

2010-05-14 Thread Daniel P. Berrange
On Fri, May 14, 2010 at 11:42:57AM +0200, Markus Armbruster wrote:
 Daniel P. Berrange berra...@redhat.com writes:
 
  On Thu, May 13, 2010 at 10:32:52AM +0200, jes.soren...@redhat.com wrote:
  From: Jes Sorensen jes.soren...@redhat.com
  
  Add -version-simple argument for QEMU, printing just the version
  number, without any supporting text.
  
  This makes it simpler for other apps, such as libvirt, to parse the
  version string from QEMU independant of how the naming string may
  change.
  
  Signed-off-by: Jes Sorensen jes.soren...@redhat.com
  ---
   qemu-options.hx |8 
   vl.c|9 +
   2 files changed, 17 insertions(+), 0 deletions(-)
  
  diff --git a/qemu-options.hx b/qemu-options.hx
  index 12f6b51..e4f3979 100644
  --- a/qemu-options.hx
  +++ b/qemu-options.hx
  @@ -27,6 +27,14 @@ STEXI
   Display version information and exit
   ETEXI
   
  +DEF(version-simple, 0, QEMU_OPTION_version_simple,
  +-version-simple display version information and exit\n, 
  QEMU_ARCH_ALL)
  +STEXI
  +...@item -version-simple
  +...@findex -version-simple
  +Display basic version number information and exit
  +ETEXI
  +
   DEF(M, HAS_ARG, QEMU_OPTION_M,
   -M machine  select emulated machine (-M ? for list)\n, 
  QEMU_ARCH_ALL)
   STEXI
  diff --git a/vl.c b/vl.c
  index 85bcc84..5adca87 100644
  --- a/vl.c
  +++ b/vl.c
  @@ -2015,6 +2015,11 @@ static void version(void)
   printf(QEMU emulator version  QEMU_VERSION QEMU_PKGVERSION , 
  Copyright (c) 2003-2008 Fabrice Bellard\n);
   }
   
  +static void version_simple(void)
  +{
  +printf(QEMU_VERSION QEMU_PKGVERSION \n);
  +}
  +
   static void help(int exitcode)
   {
   const char *options_help =
  @@ -2960,6 +2965,10 @@ int main(int argc, char **argv, char **envp)
   version();
   exit(0);
   break;
  +case QEMU_OPTION_version_simple:
  +version_simple();
  +exit(0);
  +break;
   case QEMU_OPTION_m: {
   uint64_t value;
   char *ptr;
 
  This omits the KVM version string which is something we also want to see.
  It would also be nice to avoid having to parse the -help output to determine
  ARGV supported too. I wonder if it would be a good idea to just produce a
  well structured equivalent to -help that provides the same data, but in 
  JSON format for sane parsing. That would let peple easily determine the
  supported ARGV as well as version number(s)
 
 I'm all for machine-readable self-documentation.  And the place for that
 is QMP.  Humble beginnings are already there:
 
 { execute: query-version, arguments: { } }
 -- {return: {qemu: 0.12.50, package: }}
 
 { execute: query-commands, arguments: { } }
 -- {return: [{name: quit}, {name: eject}, [...]
 
 Any practical problems with use of QMP instead of parsing command line
 option output?

It is unneccessarily complex for such a simple task, requiring you to 
configure  connect to the monitor  do the capabilities negotiaton
and then issue the command. 

To just query the version requires this ridiculous interaction:

  $ qemu -chardev stdio,id=monitor -monitor chardev=monitor,mode=control
  {execute:qmp_capabilities}
  {QMP: {version: {qemu: 0.12.1, package:  (qemu-kvm-0.12.1.2)}, 
capabilities: []}}
  {execute:query-version}
  {return: {qemu: 0.12.50, package: }}
  

I'm suggesting we just allow some simple syntactic sugar on the command 
line for the handful of QMP commands that are just returning static info
about the binary, that are not affected by VM state. 

eg, make this work:

  $ qemu -query-version
  {qemu: 0.12.50, package: }

Daniel
-- 
|: Red Hat, Engineering, London-o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org-o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|



Re: [Qemu-devel] [PATCH 1/1] Add -version-simple argument, printing only version number.

2010-05-14 Thread Markus Armbruster
Daniel P. Berrange berra...@redhat.com writes:

 On Fri, May 14, 2010 at 11:42:57AM +0200, Markus Armbruster wrote:
 Daniel P. Berrange berra...@redhat.com writes:
[...]
  It would also be nice to avoid having to parse the -help output to 
  determine
  ARGV supported too. I wonder if it would be a good idea to just produce a
  well structured equivalent to -help that provides the same data, but in 
  JSON format for sane parsing. That would let peple easily determine the
  supported ARGV as well as version number(s)
 
 I'm all for machine-readable self-documentation.  And the place for that
 is QMP.  Humble beginnings are already there:
 
 { execute: query-version, arguments: { } }
 -- {return: {qemu: 0.12.50, package: }}
 
 { execute: query-commands, arguments: { } }
 -- {return: [{name: quit}, {name: eject}, [...]
 
 Any practical problems with use of QMP instead of parsing command line
 option output?

 It is unneccessarily complex for such a simple task, requiring you to 
 configure  connect to the monitor  do the capabilities negotiaton
 and then issue the command. 

 To just query the version requires this ridiculous interaction:

   $ qemu -chardev stdio,id=monitor -monitor chardev=monitor,mode=control
   {execute:qmp_capabilities}
   {QMP: {version: {qemu: 0.12.1, package:  (qemu-kvm-0.12.1.2)}, 
 capabilities: []}}
   {execute:query-version}
   {return: {qemu: 0.12.50, package: }}

Actually,

$ qemu -nodefaults -nographic -S -chardev stdio,id=qmp -mon 
mode=control,chardev=qmp /dev/null
{QMP: {version: {qemu: 0.12.50, package: }, capabilities: []}}

suffices, with the minor wart that you have to SIGINT out.

 I'm suggesting we just allow some simple syntactic sugar on the command 
 line for the handful of QMP commands that are just returning static info
 about the binary, that are not affected by VM state. 

 eg, make this work:

   $ qemu -query-version
   {qemu: 0.12.50, package: }

I wouldn't mind.



Re: [Qemu-devel] [PATCH 1/1] Add -version-simple argument, printing only version number.

2010-05-14 Thread Anthony Liguori

On 05/13/2010 08:33 AM, Daniel P. Berrange wrote:

On Thu, May 13, 2010 at 10:32:52AM +0200, jes.soren...@redhat.com wrote:
   

From: Jes Sorensenjes.soren...@redhat.com

Add -version-simple argument for QEMU, printing just the version
number, without any supporting text.

This makes it simpler for other apps, such as libvirt, to parse the
version string from QEMU independant of how the naming string may
change.

Signed-off-by: Jes Sorensenjes.soren...@redhat.com
---
  qemu-options.hx |8 
  vl.c|9 +
  2 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/qemu-options.hx b/qemu-options.hx
index 12f6b51..e4f3979 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -27,6 +27,14 @@ STEXI
  Display version information and exit
  ETEXI

+DEF(version-simple, 0, QEMU_OPTION_version_simple,
+-version-simple display version information and exit\n, QEMU_ARCH_ALL)
+STEXI
+...@item -version-simple
+...@findex -version-simple
+Display basic version number information and exit
+ETEXI
+
  DEF(M, HAS_ARG, QEMU_OPTION_M,
  -M machine  select emulated machine (-M ? for list)\n, 
QEMU_ARCH_ALL)
  STEXI
diff --git a/vl.c b/vl.c
index 85bcc84..5adca87 100644
--- a/vl.c
+++ b/vl.c
@@ -2015,6 +2015,11 @@ static void version(void)
  printf(QEMU emulator version  QEMU_VERSION QEMU_PKGVERSION , Copyright (c) 
2003-2008 Fabrice Bellard\n);
  }

+static void version_simple(void)
+{
+printf(QEMU_VERSION QEMU_PKGVERSION \n);
+}
+
  static void help(int exitcode)
  {
  const char *options_help =
@@ -2960,6 +2965,10 @@ int main(int argc, char **argv, char **envp)
  version();
  exit(0);
  break;
+case QEMU_OPTION_version_simple:
+version_simple();
+exit(0);
+break;
  case QEMU_OPTION_m: {
  uint64_t value;
  char *ptr;
 

This omits the KVM version string which is something we also want to see.
It would also be nice to avoid having to parse the -help output to determine
ARGV supported too. I wonder if it would be a good idea to just produce a
well structured equivalent to -help that provides the same data, but in
JSON format for sane parsing. That would let peple easily determine the
supported ARGV as well as version number(s)
   


Can we do this all via the monitor?  IOW, can libvirt invoke qemu 
blindly and strictly interact with the monitor?


Regards,

Anthony Liguori


Regards,
Daniel
   





Re: [Qemu-devel] [PATCH 1/1] Add -version-simple argument, printing only version number.

2010-05-14 Thread Daniel P. Berrange
On Fri, May 14, 2010 at 08:27:54AM -0500, Anthony Liguori wrote:
 On 05/13/2010 08:33 AM, Daniel P. Berrange wrote:
 On Thu, May 13, 2010 at 10:32:52AM +0200, jes.soren...@redhat.com wrote:

 From: Jes Sorensenjes.soren...@redhat.com
 
 Add -version-simple argument for QEMU, printing just the version
 number, without any supporting text.
 
 This makes it simpler for other apps, such as libvirt, to parse the
 version string from QEMU independant of how the naming string may
 change.
 
 Signed-off-by: Jes Sorensenjes.soren...@redhat.com
 ---
   qemu-options.hx |8 
   vl.c|9 +
   2 files changed, 17 insertions(+), 0 deletions(-)
 
 diff --git a/qemu-options.hx b/qemu-options.hx
 index 12f6b51..e4f3979 100644
 --- a/qemu-options.hx
 +++ b/qemu-options.hx
 @@ -27,6 +27,14 @@ STEXI
   Display version information and exit
   ETEXI
 
 +DEF(version-simple, 0, QEMU_OPTION_version_simple,
 +-version-simple display version information and exit\n, 
 QEMU_ARCH_ALL)
 +STEXI
 +...@item -version-simple
 +...@findex -version-simple
 +Display basic version number information and exit
 +ETEXI
 +
   DEF(M, HAS_ARG, QEMU_OPTION_M,
   -M machine  select emulated machine (-M ? for list)\n, 
   QEMU_ARCH_ALL)
   STEXI
 diff --git a/vl.c b/vl.c
 index 85bcc84..5adca87 100644
 --- a/vl.c
 +++ b/vl.c
 @@ -2015,6 +2015,11 @@ static void version(void)
   printf(QEMU emulator version  QEMU_VERSION QEMU_PKGVERSION , 
   Copyright (c) 2003-2008 Fabrice Bellard\n);
   }
 
 +static void version_simple(void)
 +{
 +printf(QEMU_VERSION QEMU_PKGVERSION \n);
 +}
 +
   static void help(int exitcode)
   {
   const char *options_help =
 @@ -2960,6 +2965,10 @@ int main(int argc, char **argv, char **envp)
   version();
   exit(0);
   break;
 +case QEMU_OPTION_version_simple:
 +version_simple();
 +exit(0);
 +break;
   case QEMU_OPTION_m: {
   uint64_t value;
   char *ptr;
  
 This omits the KVM version string which is something we also want to see.
 It would also be nice to avoid having to parse the -help output to 
 determine
 ARGV supported too. I wonder if it would be a good idea to just produce a
 well structured equivalent to -help that provides the same data, but in
 JSON format for sane parsing. That would let peple easily determine the
 supported ARGV as well as version number(s)

 
 Can we do this all via the monitor?  IOW, can libvirt invoke qemu 
 blindly and strictly interact with the monitor?

See my other message in this thread...

Daniel
-- 
|: Red Hat, Engineering, London-o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org-o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|



Re: [Qemu-devel] [PATCH 1/1] Add -version-simple argument, printing only version number.

2010-05-14 Thread Daniel P. Berrange
On Fri, May 14, 2010 at 01:24:44PM +0200, Markus Armbruster wrote:
 Daniel P. Berrange berra...@redhat.com writes:
 
  On Fri, May 14, 2010 at 11:42:57AM +0200, Markus Armbruster wrote:
  Daniel P. Berrange berra...@redhat.com writes:
 [...]
   It would also be nice to avoid having to parse the -help output to 
   determine
   ARGV supported too. I wonder if it would be a good idea to just produce a
   well structured equivalent to -help that provides the same data, but in 
   JSON format for sane parsing. That would let peple easily determine the
   supported ARGV as well as version number(s)
  
  I'm all for machine-readable self-documentation.  And the place for that
  is QMP.  Humble beginnings are already there:
  
  { execute: query-version, arguments: { } }
  -- {return: {qemu: 0.12.50, package: }}
  
  { execute: query-commands, arguments: { } }
  -- {return: [{name: quit}, {name: eject}, [...]
  
  Any practical problems with use of QMP instead of parsing command line
  option output?
 
  It is unneccessarily complex for such a simple task, requiring you to 
  configure  connect to the monitor  do the capabilities negotiaton
  and then issue the command. 
 
  To just query the version requires this ridiculous interaction:
 
$ qemu -chardev stdio,id=monitor -monitor chardev=monitor,mode=control
{execute:qmp_capabilities}
{QMP: {version: {qemu: 0.12.1, package:  
  (qemu-kvm-0.12.1.2)}, capabilities: []}}
{execute:query-version}
{return: {qemu: 0.12.50, package: }}
 
 Actually,
 
 $ qemu -nodefaults -nographic -S -chardev stdio,id=qmp -mon 
 mode=control,chardev=qmp /dev/null
 {QMP: {version: {qemu: 0.12.50, package: }, capabilities: []}}
 
 suffices, with the minor wart that you have to SIGINT out.

Only in this particular example. The same pain I illustrate still exists
for other static query actions such as query-device, or a hypothetical 
query-argv for getting supported command line args. I really think we need
to map these into the more concise  easily accessible style:

  eg, make this work:
 
$ qemu -query-version
{qemu: 0.12.50, package: }
 
 I wouldn't mind.

Regards,
Daniel
-- 
|: Red Hat, Engineering, London-o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org-o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|



Re: [Qemu-devel] [PATCH 1/1] Add -version-simple argument, printing only version number.

2010-05-14 Thread Anthony Liguori

On 05/14/2010 05:06 AM, Daniel P. Berrange wrote:

On Fri, May 14, 2010 at 11:42:57AM +0200, Markus Armbruster wrote:
   

Daniel P. Berrangeberra...@redhat.com  writes:

 

On Thu, May 13, 2010 at 10:32:52AM +0200, jes.soren...@redhat.com wrote:
   

From: Jes Sorensenjes.soren...@redhat.com

Add -version-simple argument for QEMU, printing just the version
number, without any supporting text.

This makes it simpler for other apps, such as libvirt, to parse the
version string from QEMU independant of how the naming string may
change.

Signed-off-by: Jes Sorensenjes.soren...@redhat.com
---
  qemu-options.hx |8 
  vl.c|9 +
  2 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/qemu-options.hx b/qemu-options.hx
index 12f6b51..e4f3979 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -27,6 +27,14 @@ STEXI
  Display version information and exit
  ETEXI

+DEF(version-simple, 0, QEMU_OPTION_version_simple,
+-version-simple display version information and exit\n, QEMU_ARCH_ALL)
+STEXI
+...@item -version-simple
+...@findex -version-simple
+Display basic version number information and exit
+ETEXI
+
  DEF(M, HAS_ARG, QEMU_OPTION_M,
  -M machine  select emulated machine (-M ? for list)\n, 
QEMU_ARCH_ALL)
  STEXI
diff --git a/vl.c b/vl.c
index 85bcc84..5adca87 100644
--- a/vl.c
+++ b/vl.c
@@ -2015,6 +2015,11 @@ static void version(void)
  printf(QEMU emulator version  QEMU_VERSION QEMU_PKGVERSION , Copyright (c) 
2003-2008 Fabrice Bellard\n);
  }

+static void version_simple(void)
+{
+printf(QEMU_VERSION QEMU_PKGVERSION \n);
+}
+
  static void help(int exitcode)
  {
  const char *options_help =
@@ -2960,6 +2965,10 @@ int main(int argc, char **argv, char **envp)
  version();
  exit(0);
  break;
+case QEMU_OPTION_version_simple:
+version_simple();
+exit(0);
+break;
  case QEMU_OPTION_m: {
  uint64_t value;
  char *ptr;
 

This omits the KVM version string which is something we also want to see.
It would also be nice to avoid having to parse the -help output to determine
ARGV supported too. I wonder if it would be a good idea to just produce a
well structured equivalent to -help that provides the same data, but in
JSON format for sane parsing. That would let peple easily determine the
supported ARGV as well as version number(s)
   

I'm all for machine-readable self-documentation.  And the place for that
is QMP.  Humble beginnings are already there:

{ execute: query-version, arguments: { } }
--  {return: {qemu: 0.12.50, package: }}

{ execute: query-commands, arguments: { } }
--  {return: [{name: quit}, {name: eject}, [...]

Any practical problems with use of QMP instead of parsing command line
option output?
 

It is unneccessarily complex for such a simple task, requiring you to
configure  connect to the monitor  do the capabilities negotiaton
and then issue the command.

To just query the version requires this ridiculous interaction:

   $ qemu -chardev stdio,id=monitor -monitor chardev=monitor,mode=control
   {execute:qmp_capabilities}
   {QMP: {version: {qemu: 0.12.1, package:  (qemu-kvm-0.12.1.2)}, 
capabilities: []}}
   {execute:query-version}
   {return: {qemu: 0.12.50, package: }}


I'm suggesting we just allow some simple syntactic sugar on the command
line for the handful of QMP commands that are just returning static info
about the binary, that are not affected by VM state.

eg, make this work:

   $ qemu -query-version
   {qemu: 0.12.50, package: }
   


No need for package.  Vendors can use vendor extensions to add whatever 
info they want.


But we should avoid an encoded string, it would be better as:

{major: 0, minor: 12, release: 50}

And then it could be:

{major: 0, minor: 12, release: 50, __org.linux-kvm.release: 1, 
__com.redhat.RHEL6.release: 13}


We could also just pretty print it:

major: 0
minor: 12
release: 50
__org.linux-kvm.release: 1
__com.redhat.RHEL6.release: 13

Regards,

Anthony Liguori


Daniel
   





Re: [Qemu-devel] [PATCH 1/1] Add -version-simple argument, printing only version number.

2010-05-14 Thread Daniel P. Berrange
On Fri, May 14, 2010 at 08:48:58AM -0500, Anthony Liguori wrote:
 On 05/14/2010 05:06 AM, Daniel P. Berrange wrote:
 On Fri, May 14, 2010 at 11:42:57AM +0200, Markus Armbruster wrote:

 Daniel P. Berrangeberra...@redhat.com  writes:
 
  
 On Thu, May 13, 2010 at 10:32:52AM +0200, jes.soren...@redhat.com wrote:

 From: Jes Sorensenjes.soren...@redhat.com
 
 Add -version-simple argument for QEMU, printing just the version
 number, without any supporting text.
 
 This makes it simpler for other apps, such as libvirt, to parse the
 version string from QEMU independant of how the naming string may
 change.
 
 Signed-off-by: Jes Sorensenjes.soren...@redhat.com
 ---
   qemu-options.hx |8 
   vl.c|9 +
   2 files changed, 17 insertions(+), 0 deletions(-)
 
 diff --git a/qemu-options.hx b/qemu-options.hx
 index 12f6b51..e4f3979 100644
 --- a/qemu-options.hx
 +++ b/qemu-options.hx
 @@ -27,6 +27,14 @@ STEXI
   Display version information and exit
   ETEXI
 
 +DEF(version-simple, 0, QEMU_OPTION_version_simple,
 +-version-simple display version information and exit\n, 
 QEMU_ARCH_ALL)
 +STEXI
 +...@item -version-simple
 +...@findex -version-simple
 +Display basic version number information and exit
 +ETEXI
 +
   DEF(M, HAS_ARG, QEMU_OPTION_M,
   -M machine  select emulated machine (-M ? for list)\n, 
   QEMU_ARCH_ALL)
   STEXI
 diff --git a/vl.c b/vl.c
 index 85bcc84..5adca87 100644
 --- a/vl.c
 +++ b/vl.c
 @@ -2015,6 +2015,11 @@ static void version(void)
   printf(QEMU emulator version  QEMU_VERSION QEMU_PKGVERSION , 
   Copyright (c) 2003-2008 Fabrice Bellard\n);
   }
 
 +static void version_simple(void)
 +{
 +printf(QEMU_VERSION QEMU_PKGVERSION \n);
 +}
 +
   static void help(int exitcode)
   {
   const char *options_help =
 @@ -2960,6 +2965,10 @@ int main(int argc, char **argv, char **envp)
   version();
   exit(0);
   break;
 +case QEMU_OPTION_version_simple:
 +version_simple();
 +exit(0);
 +break;
   case QEMU_OPTION_m: {
   uint64_t value;
   char *ptr;
  
 This omits the KVM version string which is something we also want to see.
 It would also be nice to avoid having to parse the -help output to 
 determine
 ARGV supported too. I wonder if it would be a good idea to just produce a
 well structured equivalent to -help that provides the same data, but in
 JSON format for sane parsing. That would let peple easily determine the
 supported ARGV as well as version number(s)

 I'm all for machine-readable self-documentation.  And the place for that
 is QMP.  Humble beginnings are already there:
 
 { execute: query-version, arguments: { } }
 --  {return: {qemu: 0.12.50, package: }}
 
 { execute: query-commands, arguments: { } }
 --  {return: [{name: quit}, {name: eject}, [...]
 
 Any practical problems with use of QMP instead of parsing command line
 option output?
  
 It is unneccessarily complex for such a simple task, requiring you to
 configure  connect to the monitor  do the capabilities negotiaton
 and then issue the command.
 
 To just query the version requires this ridiculous interaction:
 
$ qemu -chardev stdio,id=monitor -monitor chardev=monitor,mode=control
{execute:qmp_capabilities}
{QMP: {version: {qemu: 0.12.1, package:  
(qemu-kvm-0.12.1.2)}, capabilities: []}}
{execute:query-version}
{return: {qemu: 0.12.50, package: }}
 
 
 I'm suggesting we just allow some simple syntactic sugar on the command
 line for the handful of QMP commands that are just returning static info
 about the binary, that are not affected by VM state.
 
 eg, make this work:
 
$ qemu -query-version
{qemu: 0.12.50, package: }

 
 No need for package.  Vendors can use vendor extensions to add whatever 
 info they want.

Yeah I don't know what 'package' is doing - its jsut what 'query-version'
currently prints in QMP

 But we should avoid an encoded string, it would be better as:
 
 {major: 0, minor: 12, release: 50}
 
 And then it could be:
 
 {major: 0, minor: 12, release: 50, __org.linux-kvm.release: 1, 
 __com.redhat.RHEL6.release: 13}
 
 We could also just pretty print it:
 
 major: 0
 minor: 12
 release: 50
 __org.linux-kvm.release: 1
 __com.redhat.RHEL6.release: 13

Pretty printing re-introduces the problem of reliable parsing. I think we
should allow for a JSON format output since apps already need to have a
good parser for that - no point writing another parser. Perhaps allow
for the arg to take a format value,  '-query-version [pretty|json]'

Regards,
Daniel
-- 
|: Red Hat, Engineering, London-o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org-o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-   F3C9 553F A1DA 4AC2 

Re: [Qemu-devel] [PATCH 1/1] Add -version-simple argument, printing only version number.

2010-05-14 Thread Markus Armbruster
Anthony Liguori aligu...@linux.vnet.ibm.com writes:

 Can we do this all via the monitor?  IOW, can libvirt invoke qemu
 blindly and strictly interact with the monitor?

I think that's exactly where should be heading longer term.  It's not a
practical immediate solution, e.g. because device_add can't cold-plug,
yet.



[Qemu-devel] [PATCH 1/1] Add -version-simple argument, printing only version number.

2010-05-13 Thread Jes . Sorensen
From: Jes Sorensen jes.soren...@redhat.com

Add -version-simple argument for QEMU, printing just the version
number, without any supporting text.

This makes it simpler for other apps, such as libvirt, to parse the
version string from QEMU independant of how the naming string may
change.

Signed-off-by: Jes Sorensen jes.soren...@redhat.com
---
 qemu-options.hx |8 
 vl.c|9 +
 2 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/qemu-options.hx b/qemu-options.hx
index 12f6b51..e4f3979 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -27,6 +27,14 @@ STEXI
 Display version information and exit
 ETEXI
 
+DEF(version-simple, 0, QEMU_OPTION_version_simple,
+-version-simple display version information and exit\n, QEMU_ARCH_ALL)
+STEXI
+...@item -version-simple
+...@findex -version-simple
+Display basic version number information and exit
+ETEXI
+
 DEF(M, HAS_ARG, QEMU_OPTION_M,
 -M machine  select emulated machine (-M ? for list)\n, QEMU_ARCH_ALL)
 STEXI
diff --git a/vl.c b/vl.c
index 85bcc84..5adca87 100644
--- a/vl.c
+++ b/vl.c
@@ -2015,6 +2015,11 @@ static void version(void)
 printf(QEMU emulator version  QEMU_VERSION QEMU_PKGVERSION , Copyright 
(c) 2003-2008 Fabrice Bellard\n);
 }
 
+static void version_simple(void)
+{
+printf(QEMU_VERSION QEMU_PKGVERSION \n);
+}
+
 static void help(int exitcode)
 {
 const char *options_help =
@@ -2960,6 +2965,10 @@ int main(int argc, char **argv, char **envp)
 version();
 exit(0);
 break;
+case QEMU_OPTION_version_simple:
+version_simple();
+exit(0);
+break;
 case QEMU_OPTION_m: {
 uint64_t value;
 char *ptr;
-- 
1.6.6.1




Re: [Qemu-devel] [PATCH 1/1] Add -version-simple argument, printing only version number.

2010-05-13 Thread Daniel P. Berrange
On Thu, May 13, 2010 at 10:32:52AM +0200, jes.soren...@redhat.com wrote:
 From: Jes Sorensen jes.soren...@redhat.com
 
 Add -version-simple argument for QEMU, printing just the version
 number, without any supporting text.
 
 This makes it simpler for other apps, such as libvirt, to parse the
 version string from QEMU independant of how the naming string may
 change.
 
 Signed-off-by: Jes Sorensen jes.soren...@redhat.com
 ---
  qemu-options.hx |8 
  vl.c|9 +
  2 files changed, 17 insertions(+), 0 deletions(-)
 
 diff --git a/qemu-options.hx b/qemu-options.hx
 index 12f6b51..e4f3979 100644
 --- a/qemu-options.hx
 +++ b/qemu-options.hx
 @@ -27,6 +27,14 @@ STEXI
  Display version information and exit
  ETEXI
  
 +DEF(version-simple, 0, QEMU_OPTION_version_simple,
 +-version-simple display version information and exit\n, QEMU_ARCH_ALL)
 +STEXI
 +...@item -version-simple
 +...@findex -version-simple
 +Display basic version number information and exit
 +ETEXI
 +
  DEF(M, HAS_ARG, QEMU_OPTION_M,
  -M machine  select emulated machine (-M ? for list)\n, 
 QEMU_ARCH_ALL)
  STEXI
 diff --git a/vl.c b/vl.c
 index 85bcc84..5adca87 100644
 --- a/vl.c
 +++ b/vl.c
 @@ -2015,6 +2015,11 @@ static void version(void)
  printf(QEMU emulator version  QEMU_VERSION QEMU_PKGVERSION , 
 Copyright (c) 2003-2008 Fabrice Bellard\n);
  }
  
 +static void version_simple(void)
 +{
 +printf(QEMU_VERSION QEMU_PKGVERSION \n);
 +}
 +
  static void help(int exitcode)
  {
  const char *options_help =
 @@ -2960,6 +2965,10 @@ int main(int argc, char **argv, char **envp)
  version();
  exit(0);
  break;
 +case QEMU_OPTION_version_simple:
 +version_simple();
 +exit(0);
 +break;
  case QEMU_OPTION_m: {
  uint64_t value;
  char *ptr;

This omits the KVM version string which is something we also want to see.
It would also be nice to avoid having to parse the -help output to determine
ARGV supported too. I wonder if it would be a good idea to just produce a
well structured equivalent to -help that provides the same data, but in 
JSON format for sane parsing. That would let peple easily determine the
supported ARGV as well as version number(s)

Regards,
Daniel
-- 
|: Red Hat, Engineering, London-o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org-o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|



Re: [Qemu-devel] [PATCH 1/1] Add -version-simple argument, printing only version number.

2010-05-13 Thread Jes Sorensen
On 05/13/10 15:33, Daniel P. Berrange wrote:
 This omits the KVM version string which is something we also want to see.
 It would also be nice to avoid having to parse the -help output to determine
 ARGV supported too. I wonder if it would be a good idea to just produce a
 well structured equivalent to -help that provides the same data, but in 
 JSON format for sane parsing. That would let peple easily determine the
 supported ARGV as well as version number(s)

I just made it print the version numbers that were already part of the
regular string, but I see no problem adding a KVM version number to the
output as well.

As for the JSON stuff, then I'll volunteer you to write the patch for it
:) To be honest, I have no clue what JSON is!

Cheers,
Jes



Re: [Qemu-devel] [PATCH 1/1] Add -version-simple argument, printing only version number.

2010-05-13 Thread Blue Swirl
On 5/13/10, Daniel P. Berrange berra...@redhat.com wrote:
 On Thu, May 13, 2010 at 10:32:52AM +0200, jes.soren...@redhat.com wrote:
   From: Jes Sorensen jes.soren...@redhat.com
  
   Add -version-simple argument for QEMU, printing just the version
   number, without any supporting text.
  
   This makes it simpler for other apps, such as libvirt, to parse the
   version string from QEMU independant of how the naming string may
   change.
  
   Signed-off-by: Jes Sorensen jes.soren...@redhat.com
   ---
qemu-options.hx |8 
vl.c|9 +
2 files changed, 17 insertions(+), 0 deletions(-)
  
   diff --git a/qemu-options.hx b/qemu-options.hx
   index 12f6b51..e4f3979 100644
   --- a/qemu-options.hx
   +++ b/qemu-options.hx
   @@ -27,6 +27,14 @@ STEXI
Display version information and exit
ETEXI
  
   +DEF(version-simple, 0, QEMU_OPTION_version_simple,
   +-version-simple display version information and exit\n, 
 QEMU_ARCH_ALL)
   +STEXI
   +...@item -version-simple
   +...@findex -version-simple
   +Display basic version number information and exit
   +ETEXI
   +
DEF(M, HAS_ARG, QEMU_OPTION_M,
-M machine  select emulated machine (-M ? for list)\n, 
 QEMU_ARCH_ALL)
STEXI
   diff --git a/vl.c b/vl.c
   index 85bcc84..5adca87 100644
   --- a/vl.c
   +++ b/vl.c
   @@ -2015,6 +2015,11 @@ static void version(void)
printf(QEMU emulator version  QEMU_VERSION QEMU_PKGVERSION , 
 Copyright (c) 2003-2008 Fabrice Bellard\n);
}
  
   +static void version_simple(void)
   +{
   +printf(QEMU_VERSION QEMU_PKGVERSION \n);
   +}
   +
static void help(int exitcode)
{
const char *options_help =
   @@ -2960,6 +2965,10 @@ int main(int argc, char **argv, char **envp)
version();
exit(0);
break;
   +case QEMU_OPTION_version_simple:
   +version_simple();
   +exit(0);
   +break;
case QEMU_OPTION_m: {
uint64_t value;
char *ptr;


 This omits the KVM version string which is something we also want to see.
  It would also be nice to avoid having to parse the -help output to determine
  ARGV supported too. I wonder if it would be a good idea to just produce a
  well structured equivalent to -help that provides the same data, but in
  JSON format for sane parsing. That would let peple easily determine the
  supported ARGV as well as version number(s)

Perhaps QMP could be used to dump the same information, something
equivalent to monitor command 'info argv'.

Otherwise, I'd suggest to use a name with 'machine' or 'json' in it,
like -QEMU-machine-protocol-info-argv, or -get-json-info-argv.

Still, -version-simple may be useful for shell scripting etc.