
--- On Wed, 11/10/10, Laine Stump <laine@laine.org> wrote:
From: Laine Stump <laine@laine.org> Subject: Re: [libvirt-users] Updating Multiple VM Guests? To: libvirt-users@redhat.com Date: Wednesday, November 10, 2010, 1:27 PM On 11/10/2010 01:20 PM, Kenneth Stailey wrote:
--- On Wed, 11/10/10, Laine Stump<laine@laine.org>
wrote:
From: Laine Stump<laine@laine.org> Subject: Re: [libvirt-users] Updating Multiple VM
To: libvirt-users@redhat.com Date: Wednesday, November 10, 2010, 12:41 PM On 11/10/2010 11:59 AM, Kenneth Stailey wrote:
Hi,
The libvirt.org FAQ says that "virsh edit" is
Guests? the
recommended way of updating the libvirt xml.
If a change has to be made to many VMs "virsh edit" is tedious, time-consuming and likely to be prone to careless errors. Is there a command line approach to updating multiple VMs?
How about:
for g in guest1 guest2 guest3 guest4; do virsh dumpxml --inactive $g
/tmp/g.xml # do whatever sed/etc commands you want here virsh define /tmp/g.xml done
(or something like that, anyway :-) The "sed, etc." is a mistake since XML does not have guaranteed format.
I suppose XMLStarlet could be used.
Yeah. sed is just my general purpose "replacement for editing by hand" token ;-)
Something that is xml-aware would obviously be a much better choice.
It's too painful to get right anyway. I just used this: #! /bin/bash # hack to fixup qemu version numbers in libvirt xml if [ `id -un` != root ]; then echo this script only works as root exit 1 fi cd /dev/shm for i in `virsh list --all | awk '/running|shut off/ {print $2}'` do virsh dumpxml $i > $i.xml sed -i.bak -e 's/pc-0.11/pc-0.12/' $i.xml virsh define $i.xml done