Jim Meyering
2008-Apr-04 12:31 UTC
[Ovirt-devel] [PATCH] ovirt-mod-xml.sh: more robust; update from ovirt-web--devel
I noticed today that ovirt-mod-xml.sh is in ovirt.git. Now that there's an improved version in the web repo (ovirt-web--devel), I've just updated this version to match: ovirt-mod-xml.sh: more robust; update from ovirt-web--devel * wui-appliance/ovirt-mod-xml.sh: Exit nonzero for any failure. Now, running multiple times does not insert multiple <interface> blocks. More reliable clean-up. diff --git a/wui-appliance/ovirt-mod-xml.sh b/wui-appliance/ovirt-mod-xml.sh index 5cd385e..cc8bb82 100755 --- a/wui-appliance/ovirt-mod-xml.sh +++ b/wui-appliance/ovirt-mod-xml.sh @@ -1,14 +1,26 @@ #!/bin/bash -TMPFILE=`mktemp` +# Remove the temporary file on exit or signal. +trap 'st=$?; rm -rf "$tmpfile" && exit $st' 0 +trap 'exit $?' 1 2 13 15 -virsh -c qemu:///system dumpxml developer > $TMPFILE && +tmpfile=`mktemp` || exit 1 -perl -ni -e '$m = m!</interface>!; print; $m and print ' \ - -e 'qq( <interface type="bridge">\n) .' \ - -e 'qq( <mac address="00:16:3e:12:34:56"/>\n) .' \ - -e 'qq( <source bridge="dummybridge"/>\n) .' \ - -e 'qq( </interface>\n)' $TMPFILE && +virsh -c qemu:///system dumpxml developer > "$tmpfile" || exit 1 -virsh -c qemu:///system define $TMPFILE -rm -f $TMPFILE +mac=00:16:3e:12:34:56 + +# If this MAC address is already in the XML, stop now. +grep $mac "$tmpfile" > /dev/null && + { echo 1>&2 "$0: you seem to have already run this script"; exit 1; } + +err=1 +# Add an interface block right after the only existing one. +perl -ni -e '$m = m!</interface>!; print; $m and print ' \ + -e 'qq( <interface type="bridge">\n) .' \ + -e 'qq( <mac address="'$mac'"/>\n) .' \ + -e 'qq( <source bridge="dummybridge"/>\n) .' \ + -e 'qq( </interface>\n)' "$tmpfile" && +virsh -c qemu:///system define "$tmpfile" && err=0 + +exit $err -- 1.5.5.rc3.1.gaece