
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@redhat.com>