[Libvir] Re: virsh outputs to stderr(?!) why not stdout

Karel Zak kzak at redhat.com
Thu Apr 6 14:18:40 UTC 2006


On Thu, Apr 06, 2006 at 02:18:10PM +0100, Daniel P. Berrange wrote:
> On Thu, Apr 06, 2006 at 02:44:41PM +0200, Karel Zak wrote:
> > On Thu, Apr 06, 2006 at 08:40:17AM -0400, Daniel Veillard wrote:
> > > On Thu, Apr 06, 2006 at 02:37:37PM +0200, Karel Zak wrote:
> > > > On Thu, Apr 06, 2006 at 11:46:57AM +0200, Jim Meyering wrote:
> > > > > So, now I can use something like this to get a list of domain names:
> > > > > 
> > > > >   virsh list | tail -n +4 | awk '{print $2}'
> > > > > 
> > > > > Is there some easier way?
> > > > 
> > > >  I think we can add some options to the list command:
> > > > 
> > > >     --noheader
> > > >     --nodom0
> > > >     --cols=name,id,state,maxmem,usemem,....
> > > > 
> > > >  without these options it will use default (current) format. I've
> > > >  already thought about this solution for the others commands (e.g.
> > > >  dominfo). I think this is a way how make it useful in scripts.
> 
> This raises the question of what the primary intended use case of virsh 
> is / should be. Currently I see it as being an interactive administrator

 It's already possible use it as interactive tool ("virsh" without
 any option) and non-interactive (e.g "virsh list").

> Now, I don't disagree that there is a need for something that is easy to 
> script in the shell, but if we are going to make virsh easier to script
> we should be careful not to compromise the primary use case of interactive
> administrator control. Conversly we must be careful not be end up with the

 Agree. I think the example above with the list command doesn't discredit
 interactive mode.

> presentation focused output becoming a defacto API, because there is much
> pain & suffering that way - simple changes to improve user experiance would
> end up breaking scripting. Another example - gettext translations of the
> output fields could break scripts which are grokking for English strings.

 This is pretty common for all commands, the solution is use "LANG=C" in
 shell scripts. 

> So, I'd say, rather than add a whole range of extra command line options
> for tweaking the existing administrator presentation-focused output, we 
> should instead add a single '--batch' option. This would activate a completely 
> separate presentation mode tailored explicitly to the needs of scripts. It
> would have a formal structure for outputting data, perhaps a series of rows
> expressed as 'key:value' pairs, or a single line in CSV format, or some other
> easily shell-parsable format.

 Is there any example where any UNIX command use this way? (It doesn't
 mean that I disagree with you, but the virsh shouldn't be like from
 foreign planet:-).

 IMHO it will be better use --fieldsep=<foo> and --recordsep=<bar>
 global options rather than hardcode there CSV or key:value format.

> Finally, while I think it is useful to have the ability to script common
> tasks from the shell, we shouldn't worry about getting every single little
> detail covered. We already have two very simple scripting APIs for interacting
> with libvirt - Python & Perl which will be far more powerful for automation
> that shell+virsh+awk could ever be. 

 Agree.

    Karel

-- 
 Karel Zak  <kzak at redhat.com>




More information about the libvir-list mailing list